diff --git a/cdist/conf/type/__package_dpkg/gencode-remote b/cdist/conf/type/__package_dpkg/gencode-remote
new file mode 100755
index 00000000..d4186e66
--- /dev/null
+++ b/cdist/conf/type/__package_dpkg/gencode-remote
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# 2013 Tomas Pospisek (tpo_deb sourcepole.ch)
+#
+# This file is based on cdist's __file/gencode-local and 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 .
+#
+#
+# This __package_dpkg type does not check whether a *.deb package is
+# allready installed. It just copies the *.deb package over to the
+# destination and installs it. We could use __package_apt to check
+# whether a *.deb package is allready installed and only install it
+# if we're given a --force argument or similar (would be clever not
+# to conflict with dpkg's --force options). But currently we don't
+# do any checks or --force'ing.
+#
+
+echo "dpkg -i /var/cache/apt/archives/$__object_id"
diff --git a/cdist/conf/type/__package_dpkg/man.rst b/cdist/conf/type/__package_dpkg/man.rst
new file mode 100644
index 00000000..65a695b5
--- /dev/null
+++ b/cdist/conf/type/__package_dpkg/man.rst
@@ -0,0 +1,46 @@
+cdist-type__package_dpkg(7)
+===========================
+
+NAME
+----
+cdist-type__package_dpkg - Manage packages with dpkg
+
+
+DESCRIPTION
+-----------
+__package_dpkg is used on Debian and variants (like Ubuntu) to
+install packages that are provided locally as *.deb files.
+
+The object given to __package_dpkg must be the name of the deb package.
+
+
+REQUIRED PARAMETERS
+-------------------
+source
+ path to the *.deb package
+
+EXAMPLES
+--------
+
+.. code-block:: sh
+
+ # Install foo and bar packages
+ __package_dpkg --source /tmp/foo_0.1_all.deb foo_0.1_all.deb
+ __package_dpkg --source $__type/files/bar_1.4.deb bar_1.4.deb
+
+
+SEE ALSO
+--------
+:strong:`cdist-type__package`\ (7)
+
+AUTHORS
+-------
+Tomas Pospisek
+
+COPYING
+-------
+Copyright \(C) 2013 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.
+This type is based on __package_apt.
diff --git a/cdist/conf/type/__package_dpkg/manifest b/cdist/conf/type/__package_dpkg/manifest
new file mode 100644
index 00000000..ff477c2d
--- /dev/null
+++ b/cdist/conf/type/__package_dpkg/manifest
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# 2013 Tomas Pospisek (tpo_deb sourcepole.ch)
+#
+# 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 .
+#
+#
+# This __package_dpkg type does not check whether a *.deb package is
+# allready installed. It just copies the *.deb package over to the
+# destination and installs it. We could use __package_apt to check
+# whether a *.deb package is allready installed and only install it
+# if we're given a --force argument or similar (would be clever not
+# to conflict with dpkg's --force options). But currently we don't
+# do any checks or --force'ing.
+
+
+package_path=$( cat "$__object/parameter/source" )
+package=$( basename "$__object_id" )
+
+__file "/var/cache/apt/archives/$package" \
+ --source "$package_path" \
+ --state present
+
diff --git a/cdist/conf/type/__package_dpkg/parameter/required b/cdist/conf/type/__package_dpkg/parameter/required
new file mode 100644
index 00000000..5a18cd2f
--- /dev/null
+++ b/cdist/conf/type/__package_dpkg/parameter/required
@@ -0,0 +1 @@
+source