diff --git a/cdist/conf/type/__sysctl/explorer/value b/cdist/conf/type/__sysctl/explorer/value
new file mode 100755
index 00000000..fc85b3d8
--- /dev/null
+++ b/cdist/conf/type/__sysctl/explorer/value
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+# get the current runtime value
+sysctl -n "$__object_id" || true
diff --git a/cdist/conf/type/__sysctl/gencode-remote b/cdist/conf/type/__sysctl/gencode-remote
new file mode 100755
index 00000000..0f3b0b40
--- /dev/null
+++ b/cdist/conf/type/__sysctl/gencode-remote
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+value_should="$(cat "$__object/parameter/value")"
+value_is="$(cat "$__object/explorer/value")"
+
+if [ "$value_should" = "$value_is" ]; then
+ # Nothing to do
+ exit 0
+fi
+
+# set the current runtime value
+printf 'sysctl -w %s="%s"\n' "$__object_id" "$value_should"
diff --git a/cdist/conf/type/__sysctl/man.rst b/cdist/conf/type/__sysctl/man.rst
new file mode 100644
index 00000000..d5c6495c
--- /dev/null
+++ b/cdist/conf/type/__sysctl/man.rst
@@ -0,0 +1,39 @@
+cdist-type__sysctl(7)
+=====================
+
+NAME
+----
+cdist-type__sysctl - manage sysctl settings
+
+
+DESCRIPTION
+-----------
+Manages permanent as well as runtime sysctl settings.
+Permament settings are set by managing entries in /etc/sysctl.conf.
+Runtime settings are set by directly calling the sysctl executable.
+
+
+REQUIRED PARAMETERS
+-------------------
+value::
+ The value to set for the given key (object_id)
+
+
+EXAMPLES
+--------
+
+.. code-block:: sh
+
+ __sysctl net.ipv4.ip_forward --value 1
+
+
+AUTHORS
+-------
+Steven Armstrong
+
+
+COPYING
+-------
+Copyright \(C) 2014 Steven Armstrong. Free use of this software is
+granted under the terms of the GNU General Public License version 3 or
+later (GPLv3+).
diff --git a/cdist/conf/type/__sysctl/manifest b/cdist/conf/type/__sysctl/manifest
new file mode 100755
index 00000000..dd317806
--- /dev/null
+++ b/cdist/conf/type/__sysctl/manifest
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+
+os=$(cat "$__global/explorer/os")
+
+case "$os" in
+ redhat|centos|ubuntu|debian|archlinux)
+ :
+ ;;
+ *)
+ echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
+ echo "Please contribute an implementation for it if you can." >&2
+ exit 1
+ ;;
+esac
+
+__key_value "$__object_name" \
+ --key "$__object_id" \
+ --file /etc/sysctl.conf \
+ --value "$(cat "$__object/parameter/value")" \
+ --delimiter '='
diff --git a/cdist/conf/type/__sysctl/parameter/required b/cdist/conf/type/__sysctl/parameter/required
new file mode 100644
index 00000000..6d4e1507
--- /dev/null
+++ b/cdist/conf/type/__sysctl/parameter/required
@@ -0,0 +1 @@
+value
diff --git a/docs/changelog b/docs/changelog
index 47e6237c..755a5a44 100644
--- a/docs/changelog
+++ b/docs/changelog
@@ -1,8 +1,8 @@
Changelog
---------
-next:
* New type: __locale_system (Steven Armstrong, Carlos Ortigoza, Nico Schottelius)
+ * New type: __sysctl (Steven Armstrong)
4.2.2: 2016-07-26
* Core: Fix ssh ControlPath socket file error (Darko Poljak)