diff --git a/cdist/conf/type/__postgres_extension/gencode-remote b/cdist/conf/type/__postgres_extension/gencode-remote
new file mode 100755
index 00000000..3408df86
--- /dev/null
+++ b/cdist/conf/type/__postgres_extension/gencode-remote
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
+# 2013 Tomas Pospisek (tpo_deb at sourcepole.ch)
+#
+# This type was created by Tomas Pospisek based on the
+#__postgres_role type by Steven Armstrong
+#
+# 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 .
+#
+
+dbname=$( echo "$__object_id" | cut -d":" -f1 )
+extension=$( echo "$__object_id" | cut -d":" -f2 )
+
+state_should=$( cat "$__object/parameter/state" )
+
+case "$state_should" in
+ present)
+ cmd="CREATE EXTENSION IF NOT EXISTS $extension"
+ echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'"
+ ;;
+ absent)
+ cmd="DROP EXTENSION IF EXISTS $extenstion"
+ echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'"
+ ;;
+esac
diff --git a/cdist/conf/type/__postgres_extension/man.text b/cdist/conf/type/__postgres_extension/man.text
new file mode 100644
index 00000000..6d722d68
--- /dev/null
+++ b/cdist/conf/type/__postgres_extension/man.text
@@ -0,0 +1,52 @@
+cdist-type__postgres_extension(7)
+=================================
+Tomas Pospisek
+
+
+NAME
+----
+cdist-type__postgres_extension - manage postgres extensions
+
+
+DESCRIPTION
+-----------
+This cdist type allows you to create or drop postgres extensions.
+
+The object you need to pass to __postgres_extension consists of
+the database name and the extension name joined by a colon in the
+following form:
+
+ dbname:extension
+
+f.ex.
+
+ rails_test:unaccent
+
+
+OPTIONAL PARAMETERS
+-------------------
+state::
+ Either "present" or "absent", defaults to "present"
+
+
+EXAMPLES
+--------
+
+--------------------------------------------------------------------------------
+__postgres_extension rails_test:unaccent
+__postgres_extension --present rails_test:unaccent
+__postgres_extension --absent rails_test:unaccent
+--------------------------------------------------------------------------------
+
+
+SEE ALSO
+--------
+- cdist-type(7)
+- cdist-type__postgres_database(7)
+- http://www.postgresql.org/docs/current/static/sql-createextension.html
+
+
+COPYING
+-------
+Copyright \(C) 2014 Tomas Pospisek. Free use of this software is
+granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/cdist/conf/type/__postgres_extension/parameter/default/state b/cdist/conf/type/__postgres_extension/parameter/default/state
new file mode 100644
index 00000000..e7f6134f
--- /dev/null
+++ b/cdist/conf/type/__postgres_extension/parameter/default/state
@@ -0,0 +1 @@
+present
diff --git a/cdist/conf/type/__postgres_extension/parameter/optional b/cdist/conf/type/__postgres_extension/parameter/optional
new file mode 100644
index 00000000..ff72b5c7
--- /dev/null
+++ b/cdist/conf/type/__postgres_extension/parameter/optional
@@ -0,0 +1 @@
+state