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.rst b/cdist/conf/type/__postgres_extension/man.rst
new file mode 100644
index 00000000..ead51c83
--- /dev/null
+++ b/cdist/conf/type/__postgres_extension/man.rst
@@ -0,0 +1,59 @@
+cdist-type__postgres_extension(7)
+=================================
+
+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:
+
+.. code-block::
+
+ dbname:extension
+
+f.ex.
+
+.. code-block::
+
+ rails_test:unaccent
+
+
+OPTIONAL PARAMETERS
+-------------------
+state
+ either "present" or "absent", defaults to "present"
+
+
+EXAMPLES
+--------
+
+.. code-block:: sh
+
+ __postgres_extension rails_test:unaccent
+ __postgres_extension --present rails_test:unaccent
+ __postgres_extension --absent rails_test:unaccent
+
+
+SEE ALSO
+--------
+:strong:`cdist-type__postgre_database`\ (7)
+
+Postgres "Create Extension" documentation at: .
+
+AUTHOR
+-------
+Tomas Pospisek
+
+COPYING
+-------
+Copyright \(C) 2014 Tomas Pospisek. 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.
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