diff --git a/cdist/conf/type/__timezone/gencode-remote b/cdist/conf/type/__timezone/gencode-remote
new file mode 100755
index 00000000..b4782d4b
--- /dev/null
+++ b/cdist/conf/type/__timezone/gencode-remote
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# 2012 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 <http://www.gnu.org/licenses/>.
+#
+#
+# This type allows to configure the desired localtime timezone.
+
+timezone="$__object_id"
+os=$(cat "$__global/explorer/os")
+
+case "$os" in
+ ubuntu|debian)
+ echo "echo \"$timezone\" > /etc/timezone"
+ ;;
+esac
diff --git a/cdist/conf/type/__timezone/manifest b/cdist/conf/type/__timezone/manifest
index b0bae209..7583c9c9 100755
--- a/cdist/conf/type/__timezone/manifest
+++ b/cdist/conf/type/__timezone/manifest
@@ -1,6 +1,7 @@
#!/bin/sh
#
# 2011 Ramon Salvadó (rsalvado at gnuine dot com)
+# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
#
# This file is part of cdist.
#
@@ -22,7 +23,25 @@
timezone="$__object_id"
-__package tzdata --state installed
+os=$(cat "$__global/explorer/os")
+
+not_supported() {
+ 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
+}
+
+case "$os" in
+ ubuntu|debian|archlinux)
+ :
+ ;;
+ *)
+ not_supported
+ ;;
+esac
+
+# same for all supported os's
+__package tzdata --state present
require="__package/tzdata" __link /etc/localtime \
--source "/usr/share/zoneinfo/${timezone}" \
--type symbolic