about summary refs log tree commit diff
diff options
context:
space:
mode:
authorambrop7@gmail.com <Ambroz Bizjak>2014-09-20 11:09:11 +0200
committerambrop7@gmail.com <Ambroz Bizjak>2014-09-24 23:48:38 +0200
commit8fef5ed67560fc75b136b8c74899e1b69e9d6c8a (patch)
tree69319b98d1a7a8694ed29fa8aee02dceea62bda9
parent46802fb67d8c0fcc4f33cbb9cf6a37d248a8b403 (diff)
downloadnixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar.gz
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar.bz2
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar.lz
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar.xz
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.tar.zst
nixlib-8fef5ed67560fc75b136b8c74899e1b69e9d6c8a.zip
kde: Copy 4.12 to 4.14 as a base"
-rw-r--r--pkgs/desktops/kde-4.14/applications/kate.nix11
-rw-r--r--pkgs/desktops/kde-4.14/applications/konsole.nix11
-rw-r--r--pkgs/desktops/kde-4.14/default.nix44
-rw-r--r--pkgs/desktops/kde-4.14/files/kde-wallpapers-buildsystem.patch17
-rw-r--r--pkgs/desktops/kde-4.14/files/kdelibs-cve-2014-5033.patch36
-rw-r--r--pkgs/desktops/kde-4.14/files/polkit-install.patch12
-rw-r--r--pkgs/desktops/kde-4.14/kactivities.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kde-base-artwork.nix14
-rw-r--r--pkgs/desktops/kde-4.14/kde-baseapps/kde-baseapps.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kde-package/4.12.4.nix444
-rw-r--r--pkgs/desktops/kde-4.14/kde-package/default.nix129
-rwxr-xr-xpkgs/desktops/kde-4.14/kde-package/kde-manifest.sh146
-rw-r--r--pkgs/desktops/kde-4.14/kde-package/kde-submodules.xslt22
-rw-r--r--pkgs/desktops/kde-4.14/kde-runtime.nix24
-rw-r--r--pkgs/desktops/kde-4.14/kde-wallpapers.nix17
-rw-r--r--pkgs/desktops/kde-4.14/kde-workspace.nix46
-rw-r--r--pkgs/desktops/kde-4.14/kdeaccessibility/jovie.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeaccessibility/kaccessible.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeaccessibility/kmag.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdeaccessibility/kmousetool.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeaccessibility/kmouth.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeadmin/kcron.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeadmin/ksystemlog.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeadmin/kuser.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/ColorSchemes.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/FindXscreensaver.cmake73
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/HighResolutionWallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/IconThemes.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/WeatherWallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/desktopthemes.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/emoticons.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/kscreensaver.nix15
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/kwin-styles.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/styles.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeartwork/wallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/perlqt.nix14
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/pykde4.nix32
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/qtruby-install-prefix.patch15
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/qtruby.nix20
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/smokegen-CMakeLists.txt-nix.patch13
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/smokegen-nix.patch13
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/smokegen.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/smokekde.nix19
-rw-r--r--pkgs/desktops/kde-4.14/kdebindings/smokeqt.nix15
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/analitza.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/blinken.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/cantor.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kalgebra.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kalzium.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kanagram.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kbruch.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kgeography.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/khangman.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kig.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kiten.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/klettres.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kmplot.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kstars.nix14
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/ktouch.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kturtle.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/kwordquiz.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/libkdeedu.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/marble.nix12
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/pairs.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/parley.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/rocs.nix14
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/step.nix12
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/bomber.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/bovo.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/granatier.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kajongg.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kapman.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/katomic.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kblackbox.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kblocks.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kbounce.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kbreakout.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kdiamond.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kfourinline.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kgoldrunner.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kigo.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/killbots.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kiriki.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kjumpingcube.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/klickety.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/klines.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kmahjongg.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kmines.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/knavalbattle.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/knetwalk.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kolf.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kollision.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/konquest.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kpat.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kreversi.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kshisen.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/ksirk.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/ksnakeduel.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kspaceduel.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/ksquares.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/ksudoku.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/ktuberling.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/kubrick.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/libkdegames.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/libkmahjongg.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/lskat.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/palapeli.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdegames/picmi.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/gwenview.nix15
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kamera.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kcolorchooser.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-mobipocket.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-strigi-analyzer.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-thumbnailers.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kgamma.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kolourpaint.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/kruler.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/ksaneplugin.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/ksnapshot.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/libkdcraw.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/libkexiv2.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/libkipi.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/libksane.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/okular.nix17
-rw-r--r--pkgs/desktops/kde-4.14/kdegraphics/svgpart.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdelibs/kdelibs.nix49
-rw-r--r--pkgs/desktops/kde-4.14/kdelibs/nepomuk-core.nix20
-rw-r--r--pkgs/desktops/kde-4.14/kdelibs/nepomuk-widgets.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/audiocd-kio.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/dragon.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/ffmpegthumbs.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/juk.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/kmix.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/kscd.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/libkcddb.nix8
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/libkcompactdisc.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdemultimedia/mplayerthumbs.nix7
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-filesharing.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-strigi-analyzers.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kget.nix20
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kopete.nix26
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kppp.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/krdc.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/krfb.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/zeroconf-ioslave.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdepim-runtime.nix16
-rw-r--r--pkgs/desktops/kde-4.14/kdepim.nix28
-rw-r--r--pkgs/desktops/kde-4.14/kdepimlibs.nix19
-rw-r--r--pkgs/desktops/kde-4.14/kdeplasma-addons.nix23
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/cervisia.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/dolphin-plugins.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kapptemplate.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kcachegrind.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kde-dev-scripts.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kde-dev-utils.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kdesdk-kioslaves.nix12
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kdesdk-strigi-analyzers.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kdesdk-thumbnailers.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/kompare.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/libkomparediff2.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/lokalize.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/okteta.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/poxml.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdesdk/umbrello.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdetoys/amor.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdetoys/kteatime.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdetoys/ktux.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/ark.nix17
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/filelight.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kcalc.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kcharselect.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kdf.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kfloppy.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kgpg.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kremotecontrol.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/ktimer.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/kwalletmanager.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/print-manager.nix27
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/superkaramba.nix11
-rw-r--r--pkgs/desktops/kde-4.14/kdeutils/sweeper.nix9
-rw-r--r--pkgs/desktops/kde-4.14/kdewebdev/kfilereplace.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdewebdev/kimagemapeditor.nix10
-rw-r--r--pkgs/desktops/kde-4.14/kdewebdev/klinkstatus.nix13
-rw-r--r--pkgs/desktops/kde-4.14/kdewebdev/kommander.nix9
-rw-r--r--pkgs/desktops/kde-4.14/l10n/default.nix46
-rwxr-xr-xpkgs/desktops/kde-4.14/l10n/l10n-manifest.sh32
-rw-r--r--pkgs/desktops/kde-4.14/l10n/manifest-4.12.4.nix262
-rw-r--r--pkgs/desktops/kde-4.14/oxygen-icons.nix15
-rw-r--r--pkgs/desktops/kde-4.14/support/akonadi/default.nix24
-rw-r--r--pkgs/top-level/all-packages.nix8
190 files changed, 3201 insertions, 1 deletions
diff --git a/pkgs/desktops/kde-4.14/applications/kate.nix b/pkgs/desktops/kde-4.14/applications/kate.nix
new file mode 100644
index 000000000000..e7a6476dd6df
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/applications/kate.nix
@@ -0,0 +1,11 @@
+{ stdenv, kde, kdelibs, kactivities, qjson, pyqt4, sip, python, pykde4}:
+
+kde {
+
+  buildInputs = [ kdelibs kactivities qjson pyqt4 sip python pykde4 ];
+
+  meta = {
+    description = "Kate, the KDE Advanced Text Editor, as well as KWrite";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/applications/konsole.nix b/pkgs/desktops/kde-4.14/applications/konsole.nix
new file mode 100644
index 000000000000..bd4e9e58cd05
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/applications/konsole.nix
@@ -0,0 +1,11 @@
+{ stdenv, kde, kdelibs, kde_baseapps }:
+
+kde {
+
+  buildInputs = [ kdelibs kde_baseapps ];
+
+  meta = {
+    description = "Konsole, the KDE terminal emulator";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/default.nix b/pkgs/desktops/kde-4.14/default.nix
new file mode 100644
index 000000000000..ffcd3115de71
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/default.nix
@@ -0,0 +1,44 @@
+{ callPackage, callPackageOrig, stdenv, qt48, release ? "4.12.4" }:
+
+let
+  branch = "4.12";
+
+  # Need callPackageOrig to avoid infinite cycle
+  kde = callPackageOrig ./kde-package {
+    inherit release branch ignoreList extraSubpkgs callPackage;
+  };
+
+  # The list of igored individual modules
+  ignoreList = {
+    # Doesn't work yet
+    kdeutils = [ "ksecrets" ];
+    # kdeadmin/strigi-analyzer has no real code
+    kdeadmin = [ "strigi-analyzer" ];
+    # Most of kdebindings do not compile due to a bug in the buildsystem
+    kdebindings = [ "kimono" "korundum" "kross-interpreters" "perlkde" "qyoto" ];
+  };
+
+  # Extra subpackages in the manifest format
+  extraSubpkgs = {};
+
+in
+
+kde.modules // kde.individual //
+{
+  inherit (kde) manifest modules individual splittedModuleList;
+
+  akonadi = callPackage ./support/akonadi { };
+
+  qt4 = qt48;
+
+  kdebase_workspace = kde.modules.kde_workspace;
+
+  inherit release;
+
+  full = stdenv.lib.attrValues kde.modules;
+
+  l10n = callPackage ./l10n {
+    inherit release branch;
+    inherit (kde.manifest) stable;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/files/kde-wallpapers-buildsystem.patch b/pkgs/desktops/kde-4.14/files/kde-wallpapers-buildsystem.patch
new file mode 100644
index 000000000000..378cdb646940
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/files/kde-wallpapers-buildsystem.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3d3e247..f78db67 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,5 +1,10 @@
+-find_package(KDE4 REQUIRED)
+-include(KDE4Defaults)
++project(kde-wallpapers NONE)
++if( WALLPAPER_INSTALL_DIR )
++  message(STATUS "Installing wallpapers to user-supplied directory ${WALLPAPER_INSTALL_DIR}")
++else()
++  find_package(KDE4 REQUIRED)
++  include(KDE4Defaults)
++endif()
+ 
+ install(DIRECTORY Air DESTINATION ${WALLPAPER_INSTALL_DIR} PATTERN .svn EXCLUDE)
+ 
diff --git a/pkgs/desktops/kde-4.14/files/kdelibs-cve-2014-5033.patch b/pkgs/desktops/kde-4.14/files/kdelibs-cve-2014-5033.patch
new file mode 100644
index 000000000000..c85eccd6beb6
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/files/kdelibs-cve-2014-5033.patch
@@ -0,0 +1,36 @@
+--- a/kdecore/auth/backends/polkit-1/Polkit1Backend.cpp
++++ b/kdecore/auth/backends/polkit-1/Polkit1Backend.cpp
+@@ -144,7 +144,7 @@
+ 
+ Action::AuthStatus Polkit1Backend::actionStatus(const QString &action)
+ {
+-    PolkitQt1::UnixProcessSubject subject(QCoreApplication::applicationPid());
++    PolkitQt1::SystemBusNameSubject subject(QString::fromUtf8(callerID()));
+     PolkitQt1::Authority::Result r = PolkitQt1::Authority::instance()->checkAuthorizationSync(action, subject,
+                                                                                               PolkitQt1::Authority::None);
+     switch (r) {
+@@ -160,21 +160,12 @@
+ 
+ QByteArray Polkit1Backend::callerID() const
+ {
+-    QByteArray a;
+-    QDataStream s(&a, QIODevice::WriteOnly);
+-    s << QCoreApplication::applicationPid();
+-
+-    return a;
++    return QDBusConnection::systemBus().baseService().toUtf8();
+ }
+ 
+ bool Polkit1Backend::isCallerAuthorized(const QString &action, QByteArray callerID)
+ {
+-    QDataStream s(&callerID, QIODevice::ReadOnly);
+-    qint64 pid;
+-
+-    s >> pid;
+-
+-    PolkitQt1::UnixProcessSubject subject(pid);
++    PolkitQt1::SystemBusNameSubject subject(QString::fromUtf8(callerID));
+     PolkitQt1::Authority *authority = PolkitQt1::Authority::instance();
+ 
+     PolkitResultEventLoop e;
+
diff --git a/pkgs/desktops/kde-4.14/files/polkit-install.patch b/pkgs/desktops/kde-4.14/files/polkit-install.patch
new file mode 100644
index 000000000000..d2ecac663ec5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/files/polkit-install.patch
@@ -0,0 +1,12 @@
+diff -ru -x '*~' kdelibs-4.6.90-orig/kdecore/auth/ConfigureChecks.cmake kdelibs-4.6.90/kdecore/auth/ConfigureChecks.cmake
+--- kdelibs-4.6.90-orig/kdecore/auth/ConfigureChecks.cmake	2011-05-20 22:24:54.000000000 +0200
++++ kdelibs-4.6.90/kdecore/auth/ConfigureChecks.cmake	2011-07-12 14:03:00.000000000 +0200
+@@ -139,7 +139,7 @@
+         ${CMAKE_INSTALL_PREFIX} _KDE4_AUTH_POLICY_FILES_INSTALL_DIR
+         ${POLKITQT-1_POLICY_FILES_INSTALL_DIR})
+ 
+-    set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR ${_KDE4_AUTH_POLICY_FILES_INSTALL_DIR} CACHE STRING 
++    set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR "\${CMAKE_INSTALL_PREFIX}/share/polkit-1/actions" CACHE STRING 
+         "Where policy files generated by KAuth will be installed" FORCE)
+ elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "FAKE")
+     set (KAUTH_COMPILING_FAKE_BACKEND TRUE)
diff --git a/pkgs/desktops/kde-4.14/kactivities.nix b/pkgs/desktops/kde-4.14/kactivities.nix
new file mode 100644
index 000000000000..06381bb13d7d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kactivities.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, nepomuk_core }:
+
+kde {
+  propagatedBuildInputs = [ kdelibs nepomuk_core ];
+
+  meta = {
+    description = "KDE activities library and daemon";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kde-base-artwork.nix b/pkgs/desktops/kde-4.14/kde-base-artwork.nix
new file mode 100644
index 000000000000..3f416cebddc4
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-base-artwork.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs }:
+
+kde {
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0mrd3w7rhsj0v92c8rh9zjxyifq7wyvwszksf2gyn53dzd06blk8";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE Base artwork";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kde-baseapps/kde-baseapps.nix b/pkgs/desktops/kde-4.14/kde-baseapps/kde-baseapps.nix
new file mode 100644
index 000000000000..a65f33e13de1
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-baseapps/kde-baseapps.nix
@@ -0,0 +1,11 @@
+{ stdenv, kde, kdelibs, htmlTidy, kactivities
+, nepomuk_core, nepomuk_widgets, libXt }:
+
+kde {
+  buildInputs = [ kdelibs nepomuk_core nepomuk_widgets htmlTidy kactivities libXt ];
+
+  meta = {
+    description = "Base KDE applications, including the Dolphin file manager and Konqueror web browser";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kde-package/4.12.4.nix b/pkgs/desktops/kde-4.14/kde-package/4.12.4.nix
new file mode 100644
index 000000000000..9b5a53cee48d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-package/4.12.4.nix
@@ -0,0 +1,444 @@
+{stable=true;
+hashes=builtins.listToAttrs[
+  {name="amor";value="0c8298z7c3a71yj6nik7h8h7rngqzrz6rc95kl990p37jp2ng0d9";}
+  {name="analitza";value="0l122nh81nf7r4bm73gc6dp9k4jh2dxc7majrzjq37hb8pi77njh";}
+  {name="ark";value="155bhqqyw3afm99c47b3pxqf9fiqcz6gqg1pavsx9q4rmk7rp8m6";}
+  {name="audiocd-kio";value="1c5234s1hdh6jc8szyb4nwqr1h8hhwlmin0iyxabsl0c45pss9pa";}
+  {name="blinken";value="0q0y3xfv3pjrw0h8mnbigpywwrqk8wb2lqbjcgk755j6syinhphh";}
+  {name="bomber";value="1f12qmg58n9sj6vjqdj57ch50pq5f0h6anx06x9bhhs502w6aqwy";}
+  {name="bovo";value="10x4qy4vdp76iv3n60iy24lk1wbsjdfr88l1m9xifj4k942wk2ir";}
+  {name="cantor";value="1x5rxshdbgl40cqx6h5r0hx49rrc6gwnabsl8b7kzimh0kbv2ma9";}
+  {name="cervisia";value="0ia78cjkq606232jy14ps7cpm77pq4xdmcfimv4l6p0xjpq8jzsg";}
+  {name="dolphin-plugins";value="08h278jpbll7wc1mhz58cklj1bkrk61dfwjlflag6fnlm6i4xx8k";}
+  {name="dragon";value="16gyr0dl50nl9r3yc2fkwmqlrfgzzyim6bdlb9a76winzbz8mgxr";}
+  {name="ffmpegthumbs";value="01cmwm6w1z2gsllwdmrzsl9882fw5k59lr1k7z114kkrh1l0b2j4";}
+  {name="filelight";value="01rs1r80ixm1dj5d73a22893rdz2srxqp4dv5pysw1fhn02zdkkf";}
+  {name="granatier";value="1ia85yxfbbi8qxdyn0vwgmdjrxwssb6nadbia1yqsjdncfsnhbvs";}
+  {name="gwenview";value="01p5b1z05v3c7f192fxrrfp6x3ss7gx8pxv29czkp641hpmcg3jl";}
+  {name="jovie";value="1hfkj3vlvm63sgb4gx3xl7nksb5cfqnh7shs7wqm3gl6yj2rwhjj";}
+  {name="juk";value="1vxnrxz6gbyk7fd15akhiyczpgq03cym3nldi61m958cx4khd4y7";}
+  {name="kaccessible";value="0a9r2bk8a5h7mpl37li3bqbsz5dfgn8rsxnri93msvc6555pnyzv";}
+  {name="kactivities";value="1fl638cyj3abxfmbqcfqsd3idmdmys1xim4flf1jpbqa29psl75j";}
+  {name="kajongg";value="19awqjqn9hqhprzi7mjb6nkrgvb3mzhignkgalfjd4j5rga7vzz0";}
+  {name="kalgebra";value="1bj88nh7znk86i6a4d3jcjyqp46kzipfc99xvhxvqdsy8drbrwjp";}
+  {name="kalzium";value="00pjpdbd11jgzs443kgh8y6pxf3ff0ypgl5j3zfa6gbj18cnkkq0";}
+  {name="kamera";value="12mcjw8l0nh2jbi04myx1y1irbf92x9bx93gdymw939lawaalqic";}
+  {name="kanagram";value="1yd5agh61nv4ajlrijxg5g3hvw0xjxdvnc6h3lbz5mgvc8smvazk";}
+  {name="kapman";value="1aa78q6y2s9dig2603b9nry5rx5jbbxz2pb3jxr323hmqxp6jy1z";}
+  {name="kapptemplate";value="08j8xh9spk6ymlichl74n1v2zn342d94m6f4jragnx2jvif2163k";}
+  {name="kate";value="1cxc9bgzvfpns7dhmmafzxhnyjqxyq0adr0l1mbwsahxpkblc30r";}
+  {name="katomic";value="01lk7ajlj98rjbs76xd9r3hnd98dy49xv809m2zchm5ria7hdh48";}
+  {name="kblackbox";value="1sgbs0flllmy6d3518wwnzmdr14kqkxsi76h2p4xyk3bq2g9q2xg";}
+  {name="kblocks";value="1zinpxbvri52r26qiiiv4j4r02a22947hcrchf1z3n6lf817vqwv";}
+  {name="kbounce";value="0f9ssdpicvkiv7dxnj75h1cmz24mz2sy2zyp7rw7mvr9ynnl8w21";}
+  {name="kbreakout";value="02ix39kfkagmsqs8icqrqy9cz90lbl2wqajyjzrshw1vi29iahc7";}
+  {name="kbruch";value="0mfqdgwd5d8sy3bdiicpd5927dgg6zhm521f2q853qd2sqjbspgl";}
+  {name="kcachegrind";value="0dydarm1a2i64nazcl59s0a8b8z7znnm20wdmx2gfm5377j98y8x";}
+  {name="kcalc";value="1znrv4fqwaf56djf9qg6fxcp7nfi7fzza2whjlkayvc9kxv3ah9y";}
+  {name="kcharselect";value="0mbl9zvb9hp0xdi58v0vb8z0by71xkz22pr9flnkar5b1klnjpdb";}
+  {name="kcolorchooser";value="1d1cyaqi0rhwfnmjbxpjjavgwjhr3pd2rywlxxb9g4q3rv8k7wg5";}
+  {name="kcron";value="033f0s14crqpsirhgysi309b9pj02vwsd7fr28n6n2sh5imj30a0";}
+  {name="kdeartwork";value="08snjhaqiddiaj5jfd0vx1fjijsyqwngy7p1mkpdfhj7575sbx7c";}
+  {name="kde-baseapps";value="0k0mfbpvmv0n2brrb8hc0rd1wz04m3cyr1byb0z34a7x7kk1h1i4";}
+  {name="kde-base-artwork";value="0vmkbmir7hviqkv7nqrbqd6skj2srp9w4nrs8rkcvq7c8n76rk5w";}
+  {name="kde-dev-scripts";value="0l5frvb1akhy86j3yic3n1jirclj8r1jwjn760fi89vl1xysrarq";}
+  {name="kde-dev-utils";value="0807c8mq8rqqk8vf9r1idqmqrlfv9bsc8rjn8mfv2ch49mzzdrdj";}
+  {name="kdegraphics-mobipocket";value="1m6lnkr460261iq634lz887dbhvmj56p97k4llch3h80ra10mlh8";}
+  {name="kdegraphics-strigi-analyzer";value="1rqb1lzqb39p95xpf8c26pm9rxhcmycd518hxzp8arz6k2chazj8";}
+  {name="kdegraphics-thumbnailers";value="04aaxjznb176ym89f06gp4bycg67zndwc451mkdr33mal58jh0zs";}
+  {name="kdelibs";value="0dn0z1fs4vym7cp2749viw171dhay9ql2dp65a4hphmsdmk9bzv4";}
+  {name="kdenetwork-filesharing";value="1r3a5y9nmcf06nqsdh8k4jny7dmrhya8xi3jwz0d1mfzlfjksyf7";}
+  {name="kdenetwork-strigi-analyzers";value="0gqj5b91q3l5hna6zbgm17wi54g7g058n605adc1mch97yshqyrd";}
+  {name="kdepim";value="00lsyg6762kd2qvhhqq6vrrrl1fbk07yd3ha8w1yyjwiy9cnsy7z";}
+  {name="kdepimlibs";value="1h7k5ravilwz9r5lh7dqjnzh9h8hz43plbdaicjwk2sg4mqwzzhh";}
+  {name="kdepim-runtime";value="1z631kag1gpmk2ljk64vhscr3lad3mj3599phh0i8jqlxvr4007c";}
+  {name="kdeplasma-addons";value="0lfza3454hzbicqpz0ipjys9brjkblmpsngqg5njxd6ph9mzg34a";}
+  {name="kde-runtime";value="05n5cllsjyf03bgisykrbc74i7a3nm5f0k6hnq9sphf8xnxl318x";}
+  {name="kdesdk-kioslaves";value="045kf44s2gg3i2xl6087zn3cz80y7li26fzxdvvv89ywcq0npg59";}
+  {name="kdesdk-strigi-analyzers";value="15xxpgiy5bp6m78crw448mzv3yijjzipsrybadrbwqz6p7dpysbv";}
+  {name="kdesdk-thumbnailers";value="039rgq5p4mkdrilcvkf6k1d9d45swk74hdg3qnsbz3m47vqqf92h";}
+  {name="kde-wallpapers";value="0z7ffz2i410k2xxl1cr8m74mm90c5sizpbhmhyqxwjlsbz1gwfya";}
+  {name="kdewebdev";value="0ljwbzdcshjaz2dv7yp4ckj0c0jxa60ka6vjbhdmc4x7nvwnx737";}
+  {name="kdf";value="0s8ms5h5gdfa3697xg1yzz0h2hijlv68gi2g7n7g3xwpawbqrzv1";}
+  {name="kdiamond";value="10v7zrj4d96ppawjib1jgdz00455h8334w4vb619g448pj5h66sn";}
+  {name="kfloppy";value="1fd7wwbxngaiy0fbxvqp027rp61jg8fwajz70lx7acs20kcs0301";}
+  {name="kfourinline";value="1s2gc7zk932ks89c24pyimcsspnmabbmsdjh520xkzzxrp41gz0b";}
+  {name="kgamma";value="0n19zrarda9fvhimgnm84mdcaqgcqn4qfr0yw6i76la24pjbl46y";}
+  {name="kgeography";value="0w32841fligd3gyjl34q2f31jldw2vl47bi6cljwp7nlkdlp0lkn";}
+  {name="kget";value="1kls245b5s2dlxcrpa4d969zlr2lw797p7p2ilyhb4rbv871c0wd";}
+  {name="kgoldrunner";value="10xq9827gwib6w9h4hhys1v896rxqd50mz66k3frnrqals04zbbk";}
+  {name="kgpg";value="1wa5ymibiqnjxl5ck94y1xh3qk0bx3v7k7n2y3jcvprmhglffx6j";}
+  {name="khangman";value="1jfi30cb17gkn7v3i42wj0pqgaq3mr4fjbwh60ikvhxxd0nf5nny";}
+  {name="kig";value="1z0f50m1hgr5jj79v5v610bdggy4knlqnbxpnwf6ihj60v3cn0x0";}
+  {name="kigo";value="1klcgh3bpl3gqyh5zvij7ah754wjjf409a9l1xqxjigz4samnism";}
+  {name="killbots";value="04vy4zybgqls4whymqnzgkfbmzb17cc1m2xf2hp32bq5fq0r8103";}
+  {name="kimono";value="1bqbgch1z2nm143sp4lwnh3swvmvavhkj4scgx6d17m24jgd69hn";}
+  {name="kiriki";value="04r7p5f9a2iwv7c40pcnbga5ldcfjjig31fx81ww0b6p62dv2vrl";}
+  {name="kiten";value="1fxyy805b1q2sxdkd0hq2fr6plbnawzyascsbwychsqsasw2rmng";}
+  {name="kjumpingcube";value="0q2hn6lvz5grwz10nqq5jkcg3j1lgqsmmmhmx0glr4c732hg1z1d";}
+  {name="klettres";value="1w4340gaaip8imwy5d0058600v6fi7wnifppay2l7kvlp09iwmws";}
+  {name="klickety";value="088xvrb1jn8f3cfh39387pzw9simrjan63c24hn76290fkqjadgq";}
+  {name="klines";value="0n3bsvf5skr4816mjrd7zqjnh8vp5klvgx3h0025hwcbqyfa64bs";}
+  {name="kmag";value="0x91b1fwvwppiwzsnvc0647429ffhn56gndykmmyzr27i45znk3r";}
+  {name="kmahjongg";value="19qz7q5sr5xphzwxjf84h5vg0fll45fvs3pi5q9a5x5g4dy14wsv";}
+  {name="kmines";value="1nm7di7xs727jvfvv2039hpgkxzddgfv6vvrw3jwls975akl1wmb";}
+  {name="kmix";value="19s9z6m1v3wk5prngmm612r34013z7dkira83ap6kn3v32cfciry";}
+  {name="kmousetool";value="1zf7d3k1jf5ydaiw7v7a34hd5w4fmgkd4g9427546x64n27vx0a2";}
+  {name="kmouth";value="12n1x1imy7w3rn8g8zawmfivic0avzgrpmwm71hy7kxw9ya24yjg";}
+  {name="kmplot";value="1zji3lkq332zgvccnlisdavwxh0d1x81131xcy25r36q9c42syj3";}
+  {name="knavalbattle";value="0ibbahwck80z1dhycvm52k4nnj0pifzf9vi7j64kczc54z20b6d2";}
+  {name="knetwalk";value="0j8lyv60rvs5w214vhpmkf0807vi8b2vc8lglmmvz66cpw42c45z";}
+  {name="kolf";value="060dmnpr84g1512l0c0myxf1h1qp4jdsfgnxg5vwpciqk0dc9qhy";}
+  {name="kollision";value="033x8dg57f5amsnignri6ln8adavbaw1l3sydlf0jrw7ww3qvw1h";}
+  {name="kolourpaint";value="0c7i95cplwvxxm6aqgsk70q8ny8yfarcah9113vk6b81llbwn5sc";}
+  {name="kompare";value="0mq2v9nissb5s41lwvjbpba6fznkzwah9a7yisjq1nq47rp4ymqb";}
+  {name="konquest";value="0bsqxr12x9qgk4al21s2hrm48hv15ir98792z8jna3d5w6j0a2zy";}
+  {name="konsole";value="13kv6pmziqfis4qxkfxbmm3yiy2w3fy2l2qi68l0s6yiaqkd9y37";}
+  {name="kopete";value="012zjq0zmqkgahnzzj02xaqhsh800bn1x7sj8vmv1mxqyi66srvy";}
+  {name="korundum";value="1qyk8gvzcjwi5pi7s0a74glyvi1mi7k5z5ilza16y0z5k6ffgvck";}
+  {name="kpat";value="0lmhygv4l1vkmbf7vmrbns6fl1anbcxsnldn0hccdpp73x1py88g";}
+  {name="kppp";value="0nnz137c384xlnrvy625zdjfzzrp6yrcfnn9gw6fs81cq4zwrr64";}
+  {name="krdc";value="0g7p94q0h3i3j9wwcmmiylz0604v4z9f0b2dppfiaq5bnz9m5pdl";}
+  {name="kremotecontrol";value="1hg4fq6ypws4zb07glsrflmr7vq35h7qqmjf5r5b5j53xqmgr6hp";}
+  {name="kreversi";value="059xsi9x6jhsdsgrxrk08haz1v4p4i46l7zkg8id64s9kvywgn5j";}
+  {name="krfb";value="01l8jv5ad3gc5kxjbr7k4ggcipc5903z82pq9616mk0qpd96j6jb";}
+  {name="kross-interpreters";value="0cdb9kaq9fdjaxks83z3gvjwwhz94g4kgjq1rp6wmzwydk28ip6i";}
+  {name="kruler";value="0i9n2znhm6llriipvrrjh8yymj76a17895w7kbcyd41srk0akk5i";}
+  {name="ksaneplugin";value="1fqkbf47ajw7ckzipphdjpnpv4gk426k1rpq3z1qlbag9f9wvxsd";}
+  {name="kscd";value="1f8099bhylrr5m3a5lrmjxz2rz59k3qi1abfjs63hk2z523p99n3";}
+  {name="kshisen";value="1nhq2rxiylzr7klpqqbhl35v7s4prv15wrckgx84mdm5hmyh4nsw";}
+  {name="ksirk";value="0s577h7sswqr44mzmm2a5gi62w8lpzivy9xy5jpib3iw768a9gxy";}
+  {name="ksnakeduel";value="09jp1cd138cqv131h7m3c994zwxbn97yw77fq1yrcfgyspmdx0x9";}
+  {name="ksnapshot";value="1fiqracij106c22b0ws6n047wn4fww5fzli8rqjas5m25931azl4";}
+  {name="kspaceduel";value="1a2n9kyn6y62yps5apclgpmzbchdrfn3lck9fl68alk0bpqdnz1n";}
+  {name="ksquares";value="1bg9na03ph1lignnl6fdxkvcbsq77dskbgn8d7hyq1p800n7jx7q";}
+  {name="kstars";value="1wf13434sxxwikrp29jl5klggmv0ln73a57rs0m4gr4zrjvbrs2s";}
+  {name="ksudoku";value="1nq4nj1q723s7gv1d0l3wafs2d6wz67xhir2sa1wsw12dzh856vf";}
+  {name="ksystemlog";value="0khb92vxr0hfny2yxwnww33ahgm9gmmrf5h7qaj0lqnyrh5fcl6c";}
+  {name="kteatime";value="13jzf4mcq8glkhg5szpawj2k0ss4qfzrjhpmjn3m3grz1zf167sw";}
+  {name="ktimer";value="0y6q9khxlmb7pgds4f9a83aqnbn0gwbi3r15s8vf72qr3qj3f5xc";}
+  {name="ktouch";value="1swdkzvm9q4r8ily7n4cs91y186zlzys7kjs3lf2q46d63l9nfdz";}
+  {name="ktuberling";value="0fzd17hvb2zaqwd0fw6f3rq0mlq8xrmz155dyg916jg2alslicxh";}
+  {name="kturtle";value="1hlfv77g0v48qfqwpqqnw5qf8fcl4v38612v3jy5z038g4sacxkx";}
+  {name="ktux";value="0shib3f2gcdgf88zh2w67kizbmj7gz0vqy8ff5vmr75fp44111b4";}
+  {name="kubrick";value="1dkd7rzkxyk71hd4r9l6nlvcl3zj8vf6i9v1gqi8zjrqwpxvf188";}
+  {name="kuser";value="1qc4wk5q9y7mmkfjqndcby7782z2aaj7x1cc4dcmds01glm2bw6j";}
+  {name="kwalletmanager";value="1f0ncnx3d6z3v373095nhydj844hiva64qh80cc7rmb624vlcsa4";}
+  {name="kwordquiz";value="1m0zi0gldw7shjy4nhiw2azgrfvhcmm5h423gckjczpqd9f17ihd";}
+  {name="libkcddb";value="0k1xr8z3dmfq08qh7fkjhi2v523lhy1inmggnk3gaxzarlvhqxxa";}
+  {name="libkcompactdisc";value="03ch51firb2xcqwy3p6q5j5zr9570nvqa5cgd5yj7pjnzdwcjxv8";}
+  {name="libkdcraw";value="1ypamhdk8y7vb9y250vilmv5dgxf1svvsw329yxc146ii0pb4nwr";}
+  {name="libkdeedu";value="0m20vxa9x2ww7xmq1a7j4pmqsdj5pp05hsg4q64slz69m5npi30r";}
+  {name="libkdegames";value="1hz02x2k7iiw0i78ifa4ji60l87by855v5f6pm3ksw3rdw0ipz9v";}
+  {name="libkexiv2";value="0mz88j3kszqxf518h7n0fjnql2iqwx780hv4jhvrkraclf4czng9";}
+  {name="libkipi";value="0x4d356c20fdjaqadzaqhsf43v9c9bgbwbyy304q2w329m8ab058";}
+  {name="libkmahjongg";value="0911knwvhwa77hr0ncqwjqzfcyvgi806ckyldglrhvm0gw0mgy60";}
+  {name="libkomparediff2";value="0rn5xhbnywjjbk9qx3xw3gss57l105a4a4v05gh9vvl82hc5sfzx";}
+  {name="libksane";value="19zibd1y96sxwnpdxkd752jiky83b8is85qi7six60g5kkzi948m";}
+  {name="lokalize";value="0sl9i146rx0ls3rii6893alkvsjv8ln0d5yabd72f8kagsaw42h7";}
+  {name="lskat";value="1flx7l8svf51fkr3lw0z85d0gkrabjzi73w4qn2wnsaz9wr6kahi";}
+  {name="marble";value="1gvlq0si76bk4yd8dfbixzwxj618ifd2jlr7fq6f9mx498cvifpi";}
+  {name="mplayerthumbs";value="1nw01216mghwxz7zhkf7px5kkb2d4dqdk7par20agvw2raan9axi";}
+  {name="nepomuk-core";value="0gavipa1hn5aw77q3xrdv9464l8qpabq6kawlvjvv90hjvs8clis";}
+  {name="nepomuk-widgets";value="1cr4v4s567vcx1046gj066xfmhrqx4g6lipffr6d3wdq9cgy5y5i";}
+  {name="okteta";value="0maadxyngj8an0hl3kidvmgj538n6vzpz964yilzj6qrry9f46wc";}
+  {name="okular";value="0cmcaqpaxx8910qmsvag6spjbchdbv6j9hgbizw6qq09kz4d9a7k";}
+  {name="oxygen-icons";value="00l7qy95za3c323hkjiihavmq2vjm2yi81yn4cgwpnc5l336pynb";}
+  {name="pairs";value="15kafhp54dsrv2466j9gnn0c8iqbfx4frrql0r6v5qza015vybr9";}
+  {name="palapeli";value="0bx7qqidywxwkj9vdbzpqsy2fvkjgf9vj8nqk5ypx7jm7da87y94";}
+  {name="parley";value="163xnfd9h8r6dp3riqs3s32qaramyf225bhy6y9laknbrr9lxnsm";}
+  {name="perlkde";value="05ybh43ckfq5qh03pklkgiajc2s6b6cmvp5alx0dvq605h5z881f";}
+  {name="perlqt";value="1fn3gxb8b4kx7g24pnrbg42dv17hn2wv70g53yfr6z277ljinxzl";}
+  {name="picmi";value="19gli6mii15qya9hi6qyb52rsk2n2dk6r4kzla99ps3cs8n4h9x8";}
+  {name="poxml";value="11cwhjil8vdwwpmp1l61335b5j9714hbxiyqw0wyxcr6yccasbdf";}
+  {name="print-manager";value="0v940bsksw04ymxq56lgm6sprkdlyzjm5fgsm24yb564nay3x42h";}
+  {name="pykde4";value="00gpjqgsfv83xfk1xmglr8c32ln9cc05m4nf1qbd3gvr5jb6cxmg";}
+  {name="qtruby";value="1312v8vn091q5lh81cm5z5wkgidigdngqkjs3kf7lp9d1k50ai47";}
+  {name="qyoto";value="0sjii1i31x1cxhr5y5ijaain9ql75fbba9ss1cxz9agswp95kpcz";}
+  {name="rocs";value="0h72mrb65gnk36g9d4l55bm7kfldh3v95hbv0wxad0p9v7baxmn2";}
+  {name="smokegen";value="0x4qz1pk8wn4vq0fmy344v9m1gh12dav3n71z6xi4pnpmpmq7kna";}
+  {name="smokekde";value="1wl88jy9yvvrykzknj1vy7rqhfxr52q053y2jmay53hvx1iaqjxm";}
+  {name="smokeqt";value="1lphdjxcvysn1lkq6yj7z5pmhzlwpkj3xx7izfdk1g6a1pkjwr7j";}
+  {name="step";value="0ma7748ixi00zw9hrjjlgbb7d1a4cr124ka3ymn45sa4q4mza3zh";}
+  {name="superkaramba";value="0xbs2k863p2yg2k7wn70gbwvriin4lv2hv78r5m6fwvb4rsjygsb";}
+  {name="svgpart";value="1svwqxcxl2wp4wq9s3q6crys7jmz072wp4qz69fvqcvp1cd92gsp";}
+  {name="sweeper";value="19lsqw192h3863fbd265didviy7m4wk6qwfgnhc7sxaxxccm19y4";}
+  {name="umbrello";value="0lmygjjsqiw0xnv4d3d1yb1b5zlnj18lh01k954ycl8f50cxsv9a";}
+  {name="zeroconf-ioslave";value="1324mx9gsr6ghi7m1qk4kwr91g8wfd3jsw3rzp26nhrlwjsa5j6a";}
+];
+modules=[
+{
+  module="kdemultimedia";
+  split=true;
+  pkgs=[
+    { name="audiocd-kio"; sane="audiocd_kio"; }
+    { name="dragon";  }
+    { name="ffmpegthumbs";  }
+    { name="juk";  }
+    { name="kmix";  }
+    { name="kscd";  }
+    { name="libkcddb";  }
+    { name="libkcompactdisc";  }
+    { name="mplayerthumbs";  }
+  ];
+}
+{
+  module="kdegraphics";
+  split=true;
+  pkgs=[
+    { name="gwenview";  }
+    { name="kamera";  }
+    { name="kcolorchooser";  }
+    { name="kdegraphics-mobipocket"; sane="kdegraphics_mobipocket"; }
+    { name="kdegraphics-strigi-analyzer"; sane="kdegraphics_strigi_analyzer"; }
+    { name="kdegraphics-thumbnailers"; sane="kdegraphics_thumbnailers"; }
+    { name="kgamma";  }
+    { name="kolourpaint";  }
+    { name="kruler";  }
+    { name="ksaneplugin";  }
+    { name="ksnapshot";  }
+    { name="libkdcraw";  }
+    { name="libkexiv2";  }
+    { name="libkipi";  }
+    { name="libksane";  }
+    { name="okular";  }
+    { name="svgpart";  }
+  ];
+}
+{
+  module="kdelibs";
+  split=true;
+  pkgs=[
+    { name="kdelibs";  }
+    { name="nepomuk-core"; sane="nepomuk_core"; }
+    { name="nepomuk-widgets"; sane="nepomuk_widgets"; }
+  ];
+}
+{
+  module="kdenetwork";
+  split=true;
+  pkgs=[
+    { name="kdenetwork-filesharing"; sane="kdenetwork_filesharing"; }
+    { name="kdenetwork-strigi-analyzers"; sane="kdenetwork_strigi_analyzers"; }
+    { name="zeroconf-ioslave";  }
+    { name="kget";  }
+    { name="kopete";  }
+    { name="kppp";  }
+    { name="krdc";  }
+    { name="krfb";  }
+  ];
+}
+{
+  module="kdeutils";
+  split=true;
+  pkgs=[
+    { name="ark";  }
+    { name="filelight";  }
+    { name="kcalc";  }
+    { name="kcharselect";  }
+    { name="kdf";  }
+    { name="kfloppy";  }
+    { name="kgpg";  }
+    { name="kremotecontrol";  }
+    { name="ktimer";  }
+    { name="kwalletmanager";  }
+    { name="print-manager"; sane="print_manager"; }
+    { name="superkaramba";  }
+    { name="sweeper";  }
+  ];
+}
+{
+  module="applications";
+  split=true;
+  pkgs=[
+    { name="kate";  }
+    { name="konsole";  }
+  ];
+}
+{
+  module="kdetoys";
+  split=true;
+  pkgs=[
+    { name="amor";  }
+    { name="kteatime";  }
+    { name="ktux";  }
+  ];
+}
+{
+  module="kdesdk";
+  split=true;
+  pkgs=[
+    { name="cervisia";  }
+    { name="dolphin-plugins"; sane="dolphin_plugins"; }
+    { name="kapptemplate";  }
+    { name="kcachegrind";  }
+    { name="kde-dev-scripts"; sane="kde_dev_scripts"; }
+    { name="kde-dev-utils"; sane="kde_dev_utils"; }
+    { name="kdesdk-kioslaves"; sane="kdesdk_kioslaves"; }
+    { name="kdesdk-strigi-analyzers"; sane="kdesdk_strigi_analyzers"; }
+    { name="kdesdk-thumbnailers"; sane="kdesdk_thumbnailers"; }
+    { name="kompare";  }
+    { name="libkomparediff2";  }
+    { name="lokalize";  }
+    { name="okteta";  }
+    { name="poxml";  }
+    { name="umbrello";  }
+  ];
+}
+{
+  module="kdegames";
+  split=true;
+  pkgs=[
+    { name="bomber";  }
+    { name="bovo";  }
+    { name="granatier";  }
+    { name="kajongg";  }
+    { name="kapman";  }
+    { name="katomic";  }
+    { name="kblackbox";  }
+    { name="kblocks";  }
+    { name="kbounce";  }
+    { name="kbreakout";  }
+    { name="kdiamond";  }
+    { name="kfourinline";  }
+    { name="kgoldrunner";  }
+    { name="kigo";  }
+    { name="killbots";  }
+    { name="kiriki";  }
+    { name="kjumpingcube";  }
+    { name="klickety";  }
+    { name="klines";  }
+    { name="kmahjongg";  }
+    { name="kmines";  }
+    { name="knavalbattle";  }
+    { name="knetwalk";  }
+    { name="kolf";  }
+    { name="kollision";  }
+    { name="konquest";  }
+    { name="kpat";  }
+    { name="kreversi";  }
+    { name="kshisen";  }
+    { name="ksirk";  }
+    { name="ksnakeduel";  }
+    { name="kspaceduel";  }
+    { name="ksquares";  }
+    { name="ksudoku";  }
+    { name="ktuberling";  }
+    { name="kubrick";  }
+    { name="libkdegames";  }
+    { name="libkmahjongg";  }
+    { name="lskat";  }
+    { name="palapeli";  }
+    { name="picmi";  }
+  ];
+}
+{
+  module="kdeedu";
+  split=true;
+  pkgs=[
+    { name="analitza";  }
+    { name="blinken";  }
+    { name="cantor";  }
+    { name="kalgebra";  }
+    { name="kalzium";  }
+    { name="kanagram";  }
+    { name="kbruch";  }
+    { name="kgeography";  }
+    { name="khangman";  }
+    { name="kig";  }
+    { name="kiten";  }
+    { name="klettres";  }
+    { name="kmplot";  }
+    { name="kstars";  }
+    { name="ktouch";  }
+    { name="kturtle";  }
+    { name="kwordquiz";  }
+    { name="libkdeedu";  }
+    { name="marble";  }
+    { name="pairs";  }
+    { name="parley";  }
+    { name="rocs";  }
+    { name="step";  }
+  ];
+}
+{
+  module="kdeadmin";
+  split=true;
+  pkgs=[
+    { name="kcron";  }
+    { name="ksystemlog";  }
+    { name="kuser";  }
+  ];
+}
+{
+  module="kdebindings";
+  split=true;
+  pkgs=[
+    { name="kimono";  }
+    { name="korundum";  }
+    { name="kross-interpreters"; sane="kross_interpreters"; }
+    { name="perlkde";  }
+    { name="perlqt";  }
+    { name="pykde4";  }
+    { name="qtruby";  }
+    { name="qyoto";  }
+    { name="smokegen";  }
+    { name="smokekde";  }
+    { name="smokeqt";  }
+  ];
+}
+{
+  module="kdeaccessibility";
+  split=true;
+  pkgs=[
+    { name="jovie";  }
+    { name="kaccessible";  }
+    { name="kmag";  }
+    { name="kmousetool";  }
+    { name="kmouth";  }
+  ];
+}
+{
+  module="kde-baseapps";
+sane="kde_baseapps";  split=true;
+  pkgs=[
+    { name="kde-baseapps"; sane="kde_baseapps"; }
+  ];
+}
+{ module="kactivities";  split=false;}
+{ module="kdeartwork";  split=false;
+  pkgs=[
+    { name="ColorSchemes"; }
+    { name="IconThemes"; }
+    { name="emoticons"; }
+    { name="kscreensaver"; }
+    { name="kwin-styles"; sane="kwin_styles";}
+    { name="styles"; }
+    { name="wallpapers"; }
+    { name="HighResolutionWallpapers"; }
+    { name="WeatherWallpapers"; }
+    { name="desktopthemes"; }
+  ];
+
+}
+{ module="kde-base-artwork"; sane="kde_base_artwork"; split=false;}
+{ module="kdelibs";  split=false;}
+{ module="kdepim";  split=false;}
+{ module="kdepimlibs";  split=false;}
+{ module="kdepim-runtime"; sane="kdepim_runtime"; split=false;}
+{ module="kdeplasma-addons"; sane="kdeplasma_addons"; split=false;}
+{ module="kde-runtime"; sane="kde_runtime"; split=false;}
+{ module="kde-wallpapers"; sane="kde_wallpapers"; split=false;}
+{ module="kdewebdev";  split=false;
+  pkgs=[
+    { name="klinkstatus"; }
+    { name="kfilereplace"; }
+    { name="kimagemapeditor"; }
+    { name="kommander"; }
+  ];
+
+}
+{ module="kde-workspace"; sane="kde_workspace"; split=false;}
+{ module="oxygen-icons"; sane="oxygen_icons"; split=false;}
+];
+}
diff --git a/pkgs/desktops/kde-4.14/kde-package/default.nix b/pkgs/desktops/kde-4.14/kde-package/default.nix
new file mode 100644
index 000000000000..6b4e1ba0ad87
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-package/default.nix
@@ -0,0 +1,129 @@
+{ callPackage, runCommand, stdenv, fetchurl, qt4, cmake, automoc4
+, release, branch, ignoreList, extraSubpkgs
+}:
+
+let
+  inherit (stdenv.lib) filter fold;
+  inherit (builtins) getAttr hasAttr remoteAttrs listToAttrs tail head;
+in
+rec {
+  manifest = import (./. + "/${release}.nix");
+
+  # src attribute for $name tarball
+  kdesrc = name: fetchurl {
+    url = "mirror://kde/" + (if manifest.stable then "" else "un")
+      + "stable/${release}/src/${name}-${release}.tar.xz";
+    sha256 = getAttr name manifest.hashes;
+  };
+
+  # Default meta attribute
+  defMeta = {
+    homepage = http://www.kde.org;
+    inherit branch;
+    platforms = stdenv.lib.platforms.linux;
+    inherit (qt4.meta) maintainers;
+  };
+
+  # KDE package built from the whole tarball
+  # This function is used both for monolithic modules and modules which are
+  # released as individual tarballs
+  kdeMonoPkg = name: let n_ = name; in a@{meta, name ? n_, version ? release, ...}:
+    stdenv.mkDerivation ({
+      name = "${name}-${version}";
+      src = kdesrc name;
+      meta = defMeta // meta;
+      enableParallelBuilding = true;
+    } // (removeAttrs a [ "meta" "name" ]));
+
+  # kdeMonoPkg wrapper for modules splitted upstream compatible with combinePkgs
+  # API.
+  kdeSplittedPkg = module: {name, sane ? name}: kdeMonoPkg name;
+
+  # Build subdirectory ${subdir} of tarball ${module}-${release}.tar.xz
+  kdeSubdirPkg = module:
+    {name, subdir ? name, sane ? name}:
+    let name_ = name; in
+    a@{cmakeFlags ? [], name ? name_, meta ? {}, ...}:
+    stdenv.mkDerivation ({
+      name = "${name}-${release}";
+      src = kdesrc module;
+      cmakeFlags =
+        [ "-DDISABLE_ALL_OPTIONAL_SUBDIRECTORIES=TRUE"
+          "-DBUILD_doc=TRUE"
+          "-DBUILD_${subdir}=TRUE"
+        ] ++ cmakeFlags;
+      meta = defMeta // meta;
+      enableParallelBuilding = module.enableParallelBuilding or true;
+    } // (removeAttrs a [ "meta" "name" "cmakeFlags" ]));
+
+  # A KDE monolithic module
+  kdeMonoModule = name: path: callPackage path { kde = kdeMonoPkg name; };
+
+  # Combine packages in one module.
+  # Arguments:
+  #  * pkgFun --- a function of the following signature:
+  #               module: manifest_attrs: manual_attrs: derivation;
+  #  * module --- name of the module
+  #  * pkgs --- list of packages in manifest format
+  combinePkgs = pkgFun: module: pkgs:
+    let
+      f = p@{name, ...}:
+        callPackage (./.. + "/${module}/${name}.nix") { kde = pkgFun module p; };
+      list = map f pkgs;
+      attrs = listToAttrs (map
+        ({name, sane ? name, ...}@p: { name = sane; value = f p; })
+        pkgs);
+    in
+      runCommand "${module}-${release}"
+      ({passthru = attrs // {
+         propagatedUserEnvPackages = list;
+         projects = attrs;
+       };})
+        ''
+          mkdir -pv $out/nix-support
+          echo "${toString list}" | tee $out/nix-support/propagated-user-env-packages
+        '';
+
+  # Given manifest module data, return the module
+  kdeModule = { module, sane ? module, split, pkgs ? [] }:
+    let
+      pkgs_ = filterPkgs module pkgs;
+    in
+    # Module is splitted by upstream
+    if split then combinePkgs kdeSplittedPkg module pkgs_
+    # Monolithic module
+    else if pkgs == [] then kdeMonoModule module (./.. + "/${module}.nix")
+    # Module is splitted by us
+    else combinePkgs kdeSubdirPkg module pkgs_;
+
+  # The same, as nameValuePair with sane name
+  kdeModuleNV = a@{ module, sane ? module, ... }:
+    { name = sane; value = kdeModule a; };
+
+  filterPkgs = module: (p:
+      removeNames (stdenv.lib.attrByPath [module] [] ignoreList) p
+      ++ (stdenv.lib.attrByPath [module] [] extraSubpkgs));
+
+  # Remove attrsets with x.name in subst. Optimized for empty subst.
+  removeNames = subst: big:
+    fold (s: out: filter (x: x.name != s) out) big subst;
+
+  modules = listToAttrs (map kdeModuleNV manifest.modules);
+
+  splittedModuleList =
+    let
+      splitted = filter (a: a ? pkgs) manifest.modules;
+      names = map ({module, sane ? module, ...}: sane) splitted;
+    in
+    map (m: m.projects) (stdenv.lib.attrVals names modules);
+
+  individual =
+    stdenv.lib.zipAttrsWith
+    (
+      name: list:
+      if tail list == []
+      then head list
+      else abort "Multiple modules define ${name}"
+    )
+    splittedModuleList;
+}
diff --git a/pkgs/desktops/kde-4.14/kde-package/kde-manifest.sh b/pkgs/desktops/kde-4.14/kde-package/kde-manifest.sh
new file mode 100755
index 000000000000..e964ce3ddc11
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-package/kde-manifest.sh
@@ -0,0 +1,146 @@
+#! /bin/sh
+
+# Usage: download kde release to $dir, then run
+# $0 $dir
+
+dir="$1"
+
+# Detect release number & whether it is a stable release
+if [[ ! -d "${dir}" ]]; then
+  echo "${dir} is not a directory (or doesn't exist)!" >&2
+  exit 1
+fi
+
+release=$(ls "${dir}"/kdelibs-*.tar.xz | \
+  sed -e 's/.*kdelibs-//' -e 's/\.tar\.xz//')
+
+if [[ ${release##*.} -gt 50 ]]; then
+  stable="false"
+else
+  stable="true"
+fi
+
+echo "Detected release ${release}" >&2
+
+declare -A hash
+declare -A modules
+declare -a packages
+declare -a top_level
+
+# xsltproc output declares -A module
+if [[ ! -f kde_projects.xml ]]; then
+  curl -O -J http://projects.kde.org/kde_projects.xml
+fi
+eval `xsltproc kde-submodules.xslt kde_projects.xml`
+
+module[kde-baseapps]=kde-baseapps
+unset module[kactivities]
+
+print_sane() {
+  echo "Called print_sane $1" >&2
+  sane="${1//[^a-z0-9_]/_}"
+  if [[ "$sane" != "$1" ]]; then
+    echo "Sane version is $sane" >&2
+    echo -n "sane=\"$sane\";"
+  fi
+}
+
+for i in `cd "${dir}"; ls *-${release}.tar.xz`; do
+  package=${i%-${release}.tar.xz}
+  packages+=( "$package" )
+  echo -n "${package}.. " >&2
+  hash[$package]=$(nix-hash --type sha256 --flat --base32 "${dir}/${i}")
+  echo -n ${hash[$package]} >&2
+
+  if [ -n "${module[$package]}" ]; then
+    m="${module[$package]}"
+    echo " (${m})" >&2
+    modules[$m]=1
+  else
+    top_level+=( "$package" )
+    echo " (top-level)" >&2
+  fi
+  #nix-store --add-fixed sha256 "${dir}/${i}" >&2
+done
+
+
+print_pkg_hash() {
+  echo "  {name=\"${1}\";value=\"${hash[$1]}\";}"
+}
+
+print_hashes(){
+  echo "hashes=builtins.listToAttrs["
+  for p in "${packages[@]}"; do print_pkg_hash "$p"; done
+  echo "];"
+}
+
+print_split_module(){
+  echo -n "$1:" >&2
+  echo -e "{\n  module=\"$1\";"
+  print_sane "$1"
+  echo "  split=true;"
+  echo "  pkgs=["
+  for p in "${packages[@]}"; do
+    if [[ "${module[$p]}" == "$1" ]]; then
+      echo -n "    { name=\"$p\"; "
+      print_sane "$p"
+      echo " }"
+      echo -n " $p" >&2
+    fi
+  done
+  echo "  ];"
+  echo "}"
+  echo >&2
+}
+
+print_mono_module(){
+  echo -en "{ module=\"$1\"; "
+  print_sane "$1"
+  echo -n "$1 ... " >&2
+  echo -n " split=false;"
+  cml="$1-$release/CMakeLists.txt"
+  tar -xf "${dir}/$1-${release}.tar.xz" "$cml"
+  if grep '^[^#]*add_subdirectory' $cml >/dev/null; then
+    if grep '^[^#]*add_subdirectory' $cml | grep -v macro_optional_add_subdirectory >/dev/null; then
+      echo " is monolithic (has unconditionally added subdirs)" >&2
+    else
+      subdirs=( `grep '^[^#]*add_subdirectory' $cml |
+        sed -e 's/[^#]*add_subdirectory *( *\(.*\) *)/\1/' |
+        grep -v '\(doc\|cmake\)'` )
+      echo " seems splittable, subdirs: ${subdirs[*]}" >&2
+      echo -e "\n  pkgs=["
+      for s in "${subdirs[@]}"; do
+        echo -en "    {"
+		echo -n " name=\"${s//\//-}\"; "
+        print_sane "$s"
+        if [[ $s != "${s//\//-}" ]]; then
+          echo -n "subdir=\"$s\"; "
+        fi
+        echo "}"
+      done
+      echo -e "  ];\n"
+    fi
+  else
+    echo " is monolithic (has no subdirs)" >&2
+  fi
+  rm $cml
+  rmdir $1-$release
+  echo "}"
+}
+
+print_modules(){
+  echo "modules=["
+  echo "Printing modules splitted by upstream" >&2
+  for m in "${!modules[@]}"; do print_split_module "$m"; done
+  echo >&2
+  echo "Printing modules not splitted by upstream (${top_level[*]})" >&2
+  for m in "${top_level[@]}"; do print_mono_module "$m"; done
+  echo "];"
+}
+
+echo "Writing ${release}.nix" >&2
+exec > "${release}.nix"
+echo "{stable=${stable};"
+print_hashes
+print_modules
+echo "}"
diff --git a/pkgs/desktops/kde-4.14/kde-package/kde-submodules.xslt b/pkgs/desktops/kde-4.14/kde-package/kde-submodules.xslt
new file mode 100644
index 000000000000..952a05a9d274
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-package/kde-submodules.xslt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- xslt file for http://projects.kde.org/kde_projects.xml -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+	<xsl:output method="text" />
+	<xsl:template match="/">
+		<xsl:for-each select="kdeprojects/component[@identifier='kde']">
+			<xsl:text>declare -A module
</xsl:text>
+			<xsl:for-each select="module">
+				<xsl:variable name="module" select='@identifier' />
+				<xsl:for-each select=".//project[repo]">
+					<xsl:text>module["</xsl:text>
+					<xsl:value-of select='@identifier' />
+					<xsl:text>"]="</xsl:text>
+					<xsl:value-of select="$module" />
+					<xsl:text>"
</xsl:text>
+				</xsl:for-each>
+			</xsl:for-each>
+		</xsl:for-each>
+	</xsl:template>
+</xsl:stylesheet>
diff --git a/pkgs/desktops/kde-4.14/kde-runtime.nix b/pkgs/desktops/kde-4.14/kde-runtime.nix
new file mode 100644
index 000000000000..1c9706f4f4bf
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-runtime.nix
@@ -0,0 +1,24 @@
+{ kde, kdelibs, bzip2, libssh, exiv2, attica, qca2
+, libcanberra, virtuoso, samba, libjpeg, ntrack, pkgconfig, xz, pulseaudio
+, networkmanager, kactivities, kdepimlibs, openexr, ilmbase, gpgme
+}:
+
+kde {
+  buildInputs = [
+    kdelibs attica xz bzip2 libssh libjpeg exiv2 ntrack
+    qca2 samba libcanberra pulseaudio gpgme
+    networkmanager kactivities kdepimlibs openexr
+#todo: add openslp
+#todo: gpgme can't be found because cmake module is provided by kdepimlibs which are found too late
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
+
+  passthru.propagatedUserEnvPackages = [ virtuoso ];
+
+  meta = {
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kde-wallpapers.nix b/pkgs/desktops/kde-4.14/kde-wallpapers.nix
new file mode 100644
index 000000000000..393d90824ebe
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-wallpapers.nix
@@ -0,0 +1,17 @@
+{ kde, cmake }:
+
+kde {
+  nativeBuildInputs = [ cmake ];
+
+  patches = [ ./files/kde-wallpapers-buildsystem.patch ];
+
+  cmakeFlags = "-DWALLPAPER_INSTALL_DIR=share/wallpapers";
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1yg9c780xdxa60bw832cqj60v87cbvjxp27k6gacj2lwk7rm5hwg";
+
+  meta = {
+    description = "Wallpapers for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kde-workspace.nix b/pkgs/desktops/kde-4.14/kde-workspace.nix
new file mode 100644
index 000000000000..537beaac6ae6
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kde-workspace.nix
@@ -0,0 +1,46 @@
+{ stdenv, kde, kdelibs, qimageblitz, libdbusmenu_qt, xorg, lm_sensors
+, pciutils, libraw1394, libusb1, python, libqalculate, akonadi
+, xkeyboard_config, kdepimlibs, pam, boost, gpsd, prison
+, libjpeg, pkgconfig, kactivities, qjson, udev, fetchurl
+}:
+
+kde {
+
+  version = "4.11.6";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/4.12.2/src/kde-workspace-4.11.6.tar.xz";
+    sha256 = "0lk3k9zl4x4il5dqpw7mf25gv8a3y48fd3jq3jvgmwwlviwcpcz1";
+  };
+
+#todo: wayland, xmms,   libusb isn't found
+  buildInputs =
+    [ kdelibs qimageblitz libdbusmenu_qt xorg.libxcb xorg.xcbutilimage libjpeg
+      xorg.xcbutilrenderutil xorg.xcbutilkeysyms xorg.libpthreadstubs xorg.libXdmcp
+      xorg.libxkbfile xorg.libXcomposite  xorg.libXtst
+      xorg.libXdamage
+
+      python boost qjson lm_sensors gpsd libraw1394 pciutils udev
+      akonadi pam libusb1 libqalculate kdepimlibs  prison
+      kactivities
+    ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  preConfigure =
+   ''
+     # Fix incorrect path to kde4-config.
+     substituteInPlace startkde.cmake --replace '$bindir/kde4-config' ${kdelibs}/bin/kde4-config
+
+     # Fix the path to the keyboard configuration files.
+     substituteInPlace kcontrol/keyboard/xkb_rules.cpp \
+       --replace /usr/share/X11 ${xkeyboard_config}/etc/X11
+   '';
+
+  enableParallelBuilding = false; # frequent problems on Hydra
+
+  meta = {
+    description = "KDE workspace components such as Plasma, Kwin and System Settings";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeaccessibility/jovie.nix b/pkgs/desktops/kde-4.14/kdeaccessibility/jovie.nix
new file mode 100644
index 000000000000..d38c80c4c36a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeaccessibility/jovie.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, speechd }:
+
+kde {
+  buildInputs = [ kdelibs speechd ];
+
+  meta = {
+    description = "Text-to-speech synthesis daemon";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeaccessibility/kaccessible.nix b/pkgs/desktops/kde-4.14/kdeaccessibility/kaccessible.nix
new file mode 100644
index 000000000000..98fae7c983f8
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeaccessibility/kaccessible.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, speechd }:
+
+kde {
+  buildInputs = [ kdelibs speechd ];
+
+  meta = {
+    description = "Bridge that provides accessibility services to applications";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeaccessibility/kmag.nix b/pkgs/desktops/kde-4.14/kdeaccessibility/kmag.nix
new file mode 100644
index 000000000000..606c61cddb63
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeaccessibility/kmag.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+#todo: package qaccessibilityclient
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Screen magnifier for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeaccessibility/kmousetool.nix b/pkgs/desktops/kde-4.14/kdeaccessibility/kmousetool.nix
new file mode 100644
index 000000000000..8e0caa76ed9c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeaccessibility/kmousetool.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libXtst, libXt }:
+
+kde {
+  buildInputs = [ kdelibs libXtst libXt ];
+
+  meta = {
+    description = "A program that clicks the mouse for you";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeaccessibility/kmouth.nix b/pkgs/desktops/kde-4.14/kdeaccessibility/kmouth.nix
new file mode 100644
index 000000000000..4159501967cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeaccessibility/kmouth.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A type-and-say front end for speech synthesizers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeadmin/kcron.nix b/pkgs/desktops/kde-4.14/kdeadmin/kcron.nix
new file mode 100644
index 000000000000..f585461af381
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeadmin/kcron.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Configure and schedule tasks";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeadmin/ksystemlog.nix b/pkgs/desktops/kde-4.14/kdeadmin/ksystemlog.nix
new file mode 100644
index 000000000000..88757a6b91c7
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeadmin/ksystemlog.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "System log viewer tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeadmin/kuser.nix b/pkgs/desktops/kde-4.14/kdeadmin/kuser.nix
new file mode 100644
index 000000000000..6118cf558bbd
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeadmin/kuser.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kdepimlibs }:
+
+kde {
+  buildInputs = [ kdelibs kdepimlibs ];
+
+  meta = {
+    description = "User management tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/ColorSchemes.nix b/pkgs/desktops/kde-4.14/kdeartwork/ColorSchemes.nix
new file mode 100644
index 000000000000..acccf66976fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/ColorSchemes.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde {
+  name = "kde-color-schemes";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE color schemes";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/FindXscreensaver.cmake b/pkgs/desktops/kde-4.14/kdeartwork/FindXscreensaver.cmake
new file mode 100644
index 000000000000..499ed75268e9
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/FindXscreensaver.cmake
@@ -0,0 +1,73 @@
+#Macro to find xscreensaver directory
+
+# Copyright (c) 2006, Laurent Montel, <montel@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if (NOT XSCREENSAVER_FOUND)
+  FIND_PATH(XSCREENSAVER_DIR deco
+    HINTS
+      ${KDE4_INCLUDE_DIR}
+    PATHS
+      /usr
+      /usr/local
+      /opt/local
+      /usr/X11R6
+      /opt/kde
+      /opt/kde3
+      /usr/kde
+      /usr/local/kde
+      /usr/local/xscreensaver
+      /usr/openwin/lib/xscreensaver
+      /etc
+    PATH_SUFFIXES
+      lib${LIB_SUFFIX}/xscreensaver
+      lib${LIB_SUFFIX}/misc/xscreensaver
+      lib/xscreensaver
+      lib64/xscreensaver
+      lib/misc/xscreensaver
+      libexec/xscreensaver
+      bin/xscreensaver-hacks
+      hacks)
+  message(STATUS "XSCREENSAVER_DIR <${XSCREENSAVER_DIR}>")
+
+  FIND_PATH(XSCREENSAVER_CONFIG_DIR deco.xml
+    PATHS
+    ${KDE4_INCLUDE_DIR}
+    /usr/
+    /usr/local/
+    /opt/local/
+    /usr/X11R6/
+    /opt/kde/
+    /opt/kde3/
+    /usr/kde/
+    /usr/local/kde/
+    /usr/openwin/lib/xscreensaver/
+    /etc/
+    PATH_SUFFIXES xscreensaver xscreensaver/config share/xscreensaver/config
+  )
+  MESSAGE(STATUS "XSCREENSAVER_CONFIG_DIR :<${XSCREENSAVER_CONFIG_DIR}>")
+
+endif(NOT XSCREENSAVER_FOUND)
+
+#MESSAGE(STATUS "XSCREENSAVER_CONFIG_DIR :<${XSCREENSAVER_CONFIG_DIR}>")
+#MESSAGE(STATUS "XSCREENSAVER_DIR :<${XSCREENSAVER_DIR}>")
+
+# Need to fix hack
+if(XSCREENSAVER_DIR AND XSCREENSAVER_CONFIG_DIR)
+    set(XSCREENSAVER_FOUND TRUE)
+endif(XSCREENSAVER_DIR AND XSCREENSAVER_CONFIG_DIR)
+
+if (XSCREENSAVER_FOUND)
+  if (NOT Xscreensaver_FIND_QUIETLY)
+    message(STATUS "Found XSCREENSAVER_CONFIG_DIR <${XSCREENSAVER_CONFIG_DIR}>")
+  endif (NOT Xscreensaver_FIND_QUIETLY)
+else (XSCREENSAVER_FOUND)
+  if (Xscreensaver_FIND_REQUIRED)
+    message(FATAL_ERROR "XScreenSaver not found")
+  endif (Xscreensaver_FIND_REQUIRED)
+endif (XSCREENSAVER_FOUND)
+
+
+MARK_AS_ADVANCED(XSCREENSAVER_DIR XSCREENSAVER_CONFIG_DIR)
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/HighResolutionWallpapers.nix b/pkgs/desktops/kde-4.14/kdeartwork/HighResolutionWallpapers.nix
new file mode 100644
index 000000000000..edffca1562e1
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/HighResolutionWallpapers.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kde-wallpapers-high-resolution";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE wallpapers in high resolution";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/IconThemes.nix b/pkgs/desktops/kde-4.14/kdeartwork/IconThemes.nix
new file mode 100644
index 000000000000..43071e8bd142
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/IconThemes.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs }:
+
+kde {
+  name = "kdeartwork-icon-themes";
+
+  # Sources contain primary and kdeclassic as well but they're not installed
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE nuvola and mono icon themes";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/WeatherWallpapers.nix b/pkgs/desktops/kde-4.14/kdeartwork/WeatherWallpapers.nix
new file mode 100644
index 000000000000..947e5e17ab0c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/WeatherWallpapers.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kde-weather-wallpapers";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE wallpapers (weather)";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/desktopthemes.nix b/pkgs/desktops/kde-4.14/kdeartwork/desktopthemes.nix
new file mode 100644
index 000000000000..93dd361af738
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/desktopthemes.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde {
+  name = "kde-desktop-themes";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE desktop themes";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/emoticons.nix b/pkgs/desktops/kde-4.14/kdeartwork/emoticons.nix
new file mode 100644
index 000000000000..5ef9f78a7195
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/emoticons.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde {
+  name = "kde-emotion-icons";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE emotion icons (smiles)";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/kscreensaver.nix b/pkgs/desktops/kde-4.14/kdeartwork/kscreensaver.nix
new file mode 100644
index 000000000000..84cb008056e4
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/kscreensaver.nix
@@ -0,0 +1,15 @@
+{ kde, kdelibs, xscreensaver, kde_workspace, eigen, libkexiv2, libXt, pkgconfig }:
+
+kde {
+  buildInputs = [ kdelibs xscreensaver kde_workspace eigen libkexiv2 libXt ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  prePatch = "cp -v ${./FindXscreensaver.cmake} cmake/modules/FindXscreensaver.cmake";
+
+  cmakeFlags = [ "-DBUILD_asciiquarium:BOOL=ON" ];
+
+  meta = {
+    description = "KDE screensavers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/kwin-styles.nix b/pkgs/desktops/kde-4.14/kdeartwork/kwin-styles.nix
new file mode 100644
index 000000000000..b5d769b216db
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/kwin-styles.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kde_workspace }:
+
+kde {
+  buildInputs = [ kdelibs kde_workspace ];
+
+  meta = {
+    description = "Styles for KWin";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/styles.nix b/pkgs/desktops/kde-4.14/kdeartwork/styles.nix
new file mode 100644
index 000000000000..6a1306c37100
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/styles.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kde-style-phase";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Phase, a widget style for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeartwork/wallpapers.nix b/pkgs/desktops/kde-4.14/kdeartwork/wallpapers.nix
new file mode 100644
index 000000000000..7c9846fbf9e8
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeartwork/wallpapers.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kdeartwork-wallpapers";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE wallpapers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/perlqt.nix b/pkgs/desktops/kde-4.14/kdebindings/perlqt.nix
new file mode 100644
index 000000000000..48eed141ce64
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/perlqt.nix
@@ -0,0 +1,14 @@
+{ kde, cmake, smokeqt, perl }:
+
+kde {
+
+  # TODO: qscintilla2, qwt5
+
+  buildInputs = [ smokeqt perl ];
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = {
+    description = "Perl bindings for Qt library";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/pykde4.nix b/pkgs/desktops/kde-4.14/kdebindings/pykde4.nix
new file mode 100644
index 000000000000..64e196452e31
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/pykde4.nix
@@ -0,0 +1,32 @@
+{ kde, kdelibs, python, sip, pyqt4, kdepimlibs, shared_desktop_ontologies,
+  polkit_qt_1, boost, lndir, pkgconfig }:
+
+let pydir = "lib/python${python.majorVersion}"; in
+
+kde {
+
+  # todo: polkit isn't found by the build system
+
+  buildInputs = [
+    python kdepimlibs shared_desktop_ontologies
+    boost polkit_qt_1
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  propagatedBuildInputs = [ pyqt4 sip ];
+
+  preConfigure =
+    ''
+      # Symlink PyQt into PyKDE.  This is necessary because PyQt looks
+      # in its PyQt4/uic/widget-plugins directory for plugins, and KDE
+      # needs to install a plugin.
+      mkdir -pv $out/${pydir}
+      ${lndir}/bin/lndir ${pyqt4}/${pydir} $out/${pydir}
+      cmakeFlagsArray=( "-DSIP_DEFAULT_SIP_DIR=$prefix/share/sip" )
+    '';
+
+  meta = {
+    description = "Python bindings for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/qtruby-install-prefix.patch b/pkgs/desktops/kde-4.14/kdebindings/qtruby-install-prefix.patch
new file mode 100644
index 000000000000..bd95a0d8bd3d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/qtruby-install-prefix.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 33078b4..30aec0e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -31,8 +31,8 @@ if (NOT COMPILE_RUBY)
+     return()
+ endif (NOT COMPILE_RUBY)
+ 
+-SET(CUSTOM_RUBY_SITE_ARCH_DIR ${RUBY_SITEARCH_DIR} CACHE DIR "custom installation directory for ruby binary extension" )
+-SET(CUSTOM_RUBY_SITE_LIB_DIR ${RUBY_SITELIB_DIR} CACHE DIR "custom installation directory for ruby extension" )
++string(REPLACE "${RUBY_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" CUSTOM_RUBY_SITE_ARCH_DIR ${RUBY_SITEARCH_DIR})
++string(REPLACE "${RUBY_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" CUSTOM_RUBY_SITE_LIB_DIR ${RUBY_SITELIB_DIR})
+ 
+ # compute an overall version number which can be compared at once
+ MATH(EXPR RUBY_VERSION_NUMBER "${RUBY_VERSION_MAJOR}*10000 + ${RUBY_VERSION_MINOR}*100 + ${RUBY_VERSION_PATCH}")
diff --git a/pkgs/desktops/kde-4.14/kdebindings/qtruby.nix b/pkgs/desktops/kde-4.14/kdebindings/qtruby.nix
new file mode 100644
index 000000000000..03e9dc9a007f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/qtruby.nix
@@ -0,0 +1,20 @@
+{ kde, cmake, smokeqt, ruby }:
+
+kde {
+
+ # TODO: scintilla2, qwt5
+
+  buildInputs = [ smokeqt ruby ];
+
+  nativeBuildInputs = [ cmake ];
+
+  # The patch is not ready for upstream submmission.
+  # I should add an option() instead.
+  patches = [ ./qtruby-install-prefix.patch ];
+
+  cmakeFlags="-DRUBY_ROOT_DIR=${ruby}";
+
+  meta = {
+    description = "Ruby bindings for Qt library";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/smokegen-CMakeLists.txt-nix.patch b/pkgs/desktops/kde-4.14/kdebindings/smokegen-CMakeLists.txt-nix.patch
new file mode 100644
index 000000000000..f0811d335a73
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/smokegen-CMakeLists.txt-nix.patch
@@ -0,0 +1,13 @@
+--- smokegen-4.10.5.orig/CMakeLists.txt 2013-06-28 17:14:50.000000000 +0000
++++ smokegen-4.10.5/CMakeLists.txt 2013-07-31 19:15:17.000000000 +0000
+@@ -36,6 +36,10 @@
+ set (CMAKE_SKIP_BUILD_RPATH FALSE)
+ set (CMAKE_SKIP_RPATH FALSE)
+
++# add the automatically determined parts of the RPATH
++# which point to directories outside the build tree to the install RPATH
++SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
++
+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in config.h @ONLY )
+
+ add_executable(smokegen ${generator_SRC})
\ No newline at end of file
diff --git a/pkgs/desktops/kde-4.14/kdebindings/smokegen-nix.patch b/pkgs/desktops/kde-4.14/kdebindings/smokegen-nix.patch
new file mode 100644
index 000000000000..53257e836e04
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/smokegen-nix.patch
@@ -0,0 +1,13 @@
+diff -urN smokegen-4.10.5.orig/cmake/SmokeConfig.cmake.in smokegen-4.10.5/cmake/SmokeConfig.cmake.in
+--- smokegen-4.10.5.orig/cmake/SmokeConfig.cmake.in	2013-06-28 17:14:50.000000000 +0000
++++ smokegen-4.10.5/cmake/SmokeConfig.cmake.in	2013-07-30 21:26:33.000000000 +0000
+@@ -80,8 +80,7 @@
+ set(SMOKE_API_BIN "@SMOKE_API_BIN@")
+ 
+ find_library(SMOKE_BASE_LIBRARY smokebase 
+-              PATHS "@SMOKE_LIBRARY_PREFIX@"
+-              NO_DEFAULT_PATH)
++              PATHS "@SMOKE_LIBRARY_PREFIX@")
+ 
+ if (NOT SMOKE_BASE_LIBRARY)
+     if (Smoke_FIND_REQUIRED)
diff --git a/pkgs/desktops/kde-4.14/kdebindings/smokegen.nix b/pkgs/desktops/kde-4.14/kdebindings/smokegen.nix
new file mode 100644
index 000000000000..5708d0f96eb2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/smokegen.nix
@@ -0,0 +1,13 @@
+{ stdenv, kde, qt4, cmake }:
+
+kde {
+  buildInputs = [ qt4 ];
+  nativeBuildInputs = [ cmake ];
+
+  patches = [ ./smokegen-nix.patch ./smokegen-CMakeLists.txt-nix.patch ];
+
+  meta = {
+    description = "C++ parser used to generate language bindings for Qt/KDE";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/smokekde.nix b/pkgs/desktops/kde-4.14/kdebindings/smokekde.nix
new file mode 100644
index 000000000000..4474c1d9731e
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/smokekde.nix
@@ -0,0 +1,19 @@
+{ kde, cmake, smokeqt, kdelibs, akonadi, kdepimlibs, okular
+, shared_desktop_ontologies, attica, pkgconfig }:
+
+kde {
+
+  # TODO: attica, akonadi and kdepimlibs are disabled due to smokegen crash
+  # okular is disabled because the code generated is broken
+  buildInputs = [
+    smokeqt kdelibs shared_desktop_ontologies
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  LD_LIBRARY_PATH = "${smokeqt}/lib/";
+
+  meta = {
+    description = "SMOKE bindings for kdelibs";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdebindings/smokeqt.nix b/pkgs/desktops/kde-4.14/kdebindings/smokeqt.nix
new file mode 100644
index 000000000000..494bc85e6465
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdebindings/smokeqt.nix
@@ -0,0 +1,15 @@
+{ stdenv, kde, qt4, cmake, phonon, qimageblitz, smokegen }:
+
+kde {
+
+# TODO: Qwt5, QScintilla2
+
+  propagatedBuildInputs = [ qt4 phonon qimageblitz ];
+  nativeBuildInputs = [ cmake ];
+  propagatedNativeBuildInputs = [ smokegen ];
+
+  meta = {
+    description = "C++ parser used to generate language bindings for Qt/KDE";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/analitza.nix b/pkgs/desktops/kde-4.14/kdeedu/analitza.nix
new file mode 100644
index 000000000000..74c3a1ebb200
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/analitza.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, readline }:
+kde {
+  buildInputs = [ kdelibs readline ];
+
+  meta = {
+    description = "Library part of KAlgebra";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/blinken.nix b/pkgs/desktops/kde-4.14/kdeedu/blinken.nix
new file mode 100644
index 000000000000..cdf9728833c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/blinken.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Memory Enhancement Game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/cantor.nix b/pkgs/desktops/kde-4.14/kdeedu/cantor.nix
new file mode 100644
index 000000000000..a8cd2e44957a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/cantor.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, libspectre, analitza, R, pkgconfig, libqalculate, python }:
+kde {
+
+# TODO: R is not found
+
+  buildInputs = [ kdelibs libspectre analitza R libqalculate python ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "KDE Frontend to Mathematical Software";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kalgebra.nix b/pkgs/desktops/kde-4.14/kdeedu/kalgebra.nix
new file mode 100644
index 000000000000..3675c3a225f4
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kalgebra.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdeedu, analitza }:
+kde {
+  buildInputs = [ kdelibs libkdeedu analitza ];
+
+  meta = {
+    description = "2D and 3D Graph Calculator";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kalzium.nix b/pkgs/desktops/kde-4.14/kdeedu/kalzium.nix
new file mode 100644
index 000000000000..09de79ce1c05
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kalzium.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, facile, ocaml, eigen, openbabel, avogadro, pkgconfig }:
+kde {
+
+# TODO: chemical mime data
+
+  buildInputs = [ kdelibs facile ocaml eigen openbabel avogadro ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Periodic Table of Elements";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kanagram.nix b/pkgs/desktops/kde-4.14/kdeedu/kanagram.nix
new file mode 100644
index 000000000000..8759c96d78c4
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kanagram.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdeedu }:
+kde {
+  buildInputs = [ kdelibs libkdeedu ];
+
+  meta = {
+    description = "Letter Order Game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kbruch.nix b/pkgs/desktops/kde-4.14/kdeedu/kbruch.nix
new file mode 100644
index 000000000000..dc50f1e85a37
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kbruch.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Practice Fractions";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kgeography.nix b/pkgs/desktops/kde-4.14/kdeedu/kgeography.nix
new file mode 100644
index 000000000000..bd8d27c8d6e2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kgeography.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Geography Trainer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/khangman.nix b/pkgs/desktops/kde-4.14/kdeedu/khangman.nix
new file mode 100644
index 000000000000..997b50e906a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/khangman.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdeedu }:
+kde {
+  buildInputs = [ kdelibs libkdeedu ];
+
+  meta = {
+    description = "KDE hangman game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kig.nix b/pkgs/desktops/kde-4.14/kdeedu/kig.nix
new file mode 100644
index 000000000000..37906c32bcb2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kig.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, boost, python}:
+kde {
+  buildInputs = [ kdelibs boost python ];
+
+  cmakeFlags = "-DKIG_ENABLE_PYTHON_SCRIPTING=1";
+  meta = {
+    description = "KDE Interactive Geometry";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kiten.nix b/pkgs/desktops/kde-4.14/kdeedu/kiten.nix
new file mode 100644
index 000000000000..939b7a9f77a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kiten.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Japanese Reference/Study Tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/klettres.nix b/pkgs/desktops/kde-4.14/kdeedu/klettres.nix
new file mode 100644
index 000000000000..7a0fa83078e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/klettres.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A KDE alphabet tutorial";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kmplot.nix b/pkgs/desktops/kde-4.14/kdeedu/kmplot.nix
new file mode 100644
index 000000000000..fc7b0578c27b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kmplot.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A KDE mathematical function plotter";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kstars.nix b/pkgs/desktops/kde-4.14/kdeedu/kstars.nix
new file mode 100644
index 000000000000..0832dc2121e2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kstars.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs, eigen, xplanet, indilib, pkgconfig }:
+
+kde {
+
+# TODO: wcslib, astrometry
+
+  buildInputs = [ kdelibs eigen xplanet indilib ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "A KDE graphical desktop planetarium";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/ktouch.nix b/pkgs/desktops/kde-4.14/kdeedu/ktouch.nix
new file mode 100644
index 000000000000..9e606adde336
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/ktouch.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libxkbfile }:
+
+kde {
+  buildInputs = [ kdelibs libxkbfile ];
+
+  meta = {
+    description = "Touch Typing Tutor";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kturtle.nix b/pkgs/desktops/kde-4.14/kdeedu/kturtle.nix
new file mode 100644
index 000000000000..1e1922b1410d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kturtle.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Educational Programming Environment";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/kwordquiz.nix b/pkgs/desktops/kde-4.14/kdeedu/kwordquiz.nix
new file mode 100644
index 000000000000..1b33ba2e469f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/kwordquiz.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libkdeedu }:
+
+kde {
+  buildInputs = [ kdelibs libkdeedu ];
+
+  meta = {
+    description = "Flash Card Trainer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/libkdeedu.nix b/pkgs/desktops/kde-4.14/kdeedu/libkdeedu.nix
new file mode 100644
index 000000000000..def6c85fefe2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/libkdeedu.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Libraries used by KDE Education applications";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/marble.nix b/pkgs/desktops/kde-4.14/kdeedu/marble.nix
new file mode 100644
index 000000000000..2dc07d14a0d9
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/marble.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, gpsd }:
+
+kde {
+
+# TODO: package QextSerialPort, libshp(shapelib), QtMobility, QtLocation, libwlocate, quazip
+
+  buildInputs = [ kdelibs gpsd ];
+
+  meta = {
+    description = "Marble Virtual Globe";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/pairs.nix b/pkgs/desktops/kde-4.14/kdeedu/pairs.nix
new file mode 100644
index 000000000000..36c4aba9604b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/pairs.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A memory and pairs game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/parley.nix b/pkgs/desktops/kde-4.14/kdeedu/parley.nix
new file mode 100644
index 000000000000..f9f86dde150d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/parley.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libkdeedu, attica }:
+
+kde {
+  buildInputs = [ kdelibs libkdeedu attica ];
+
+  meta = {
+    description = "Vocabulary Trainer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/rocs.nix b/pkgs/desktops/kde-4.14/kdeedu/rocs.nix
new file mode 100644
index 000000000000..ce30d11fda31
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/rocs.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs, boost, grantlee }:
+
+kde {
+  buildInputs = [ kdelibs (boost.override { enableExceptions = true; }) grantlee ];
+
+  NIX_CFLAGS_COMPILE = "-fexceptions";
+
+  meta = {
+    description = "A KDE graph theory viewer";
+    kde = {
+      name = "rocs";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeedu/step.nix b/pkgs/desktops/kde-4.14/kdeedu/step.nix
new file mode 100644
index 000000000000..f36ccef9b7cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeedu/step.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, gsl, libqalculate, eigen, pkgconfig }:
+
+kde {
+
+  buildInputs = [ kdelibs gsl libqalculate eigen ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "A KDE interactive physical simulator";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/bomber.nix b/pkgs/desktops/kde-4.14/kdegames/bomber.nix
new file mode 100644
index 000000000000..026227910f21
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/bomber.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a single player arcade game. The player is invading various cities in a plane that is decreasing in height";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/bovo.nix b/pkgs/desktops/kde-4.14/kdegames/bovo.nix
new file mode 100644
index 000000000000..b0e7d99c589f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/bovo.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a Gomoku (from Japanese 五目並べ - lit. \"five points\") like game for two players, where the opponents alternate in placing their respective pictogram on the game board";
+  };
+
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/granatier.nix b/pkgs/desktops/kde-4.14/kdegames/granatier.nix
new file mode 100644
index 000000000000..9f1ab0053099
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/granatier.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a clone of the classic Bomberman game, inspired by the work of the Clanbomber clone";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kajongg.nix b/pkgs/desktops/kde-4.14/kdegames/kajongg.nix
new file mode 100644
index 000000000000..9a6f5e836955
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kajongg.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, libkdegames, pythonPackages, sqlite,  pykde4 }:
+kde rec {
+
+  buildInputs = [ kdelibs libkdegames pythonPackages.python pythonPackages.wrapPython sqlite ] ++ pythonPath;
+
+  pythonPath = [ pythonPackages.twisted pykde4 ];
+
+  postInstall = "wrapPythonPrograms";
+
+  meta = {
+    description = "an ancient Chinese board game for 4 players";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kapman.nix b/pkgs/desktops/kde-4.14/kdegames/kapman.nix
new file mode 100644
index 000000000000..f10e099da3cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kapman.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a clone of the well known game Pac-Man";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/katomic.nix b/pkgs/desktops/kde-4.14/kdegames/katomic.nix
new file mode 100644
index 000000000000..a9936c04f0ea
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/katomic.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a fun and educational puzzle game built around molecular geometry";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kblackbox.nix b/pkgs/desktops/kde-4.14/kdegames/kblackbox.nix
new file mode 100644
index 000000000000..27eeff2f65bb
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kblackbox.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a game of hide and seek played on an grid of boxes, where the player shoots rays into the grid to deduce the positions of hidden objects";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kblocks.nix b/pkgs/desktops/kde-4.14/kdegames/kblocks.nix
new file mode 100644
index 000000000000..98cf068de09a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kblocks.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a classic single player falling blocks puzzle game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kbounce.nix b/pkgs/desktops/kde-4.14/kdegames/kbounce.nix
new file mode 100644
index 000000000000..77fa0db63529
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kbounce.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a single player arcade game with the elements of puzzle";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kbreakout.nix b/pkgs/desktops/kde-4.14/kdegames/kbreakout.nix
new file mode 100644
index 000000000000..3a484d919bbb
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kbreakout.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a Breakout-like game. Its object is to destroy as many bricks as possible without losing the ball";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kdiamond.nix b/pkgs/desktops/kde-4.14/kdegames/kdiamond.nix
new file mode 100644
index 000000000000..06dfcee5ac39
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kdiamond.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a single player puzzle game. The object of the game is to build lines of three similar diamonds";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kfourinline.nix b/pkgs/desktops/kde-4.14/kdegames/kfourinline.nix
new file mode 100644
index 000000000000..11b8838e7082
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kfourinline.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a board game for two players based on the Connect-Four game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kgoldrunner.nix b/pkgs/desktops/kde-4.14/kdegames/kgoldrunner.nix
new file mode 100644
index 000000000000..6217c47a8065
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kgoldrunner.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "an action game where the hero runs through a maze, climbs stairs, dig holes and dodges enemies in order to collect all the gold nuggets and escape to the next level";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kigo.nix b/pkgs/desktops/kde-4.14/kdegames/kigo.nix
new file mode 100644
index 000000000000..32eee67cc1e0
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kigo.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "an open-source implementation of the popular Go game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/killbots.nix b/pkgs/desktops/kde-4.14/kdegames/killbots.nix
new file mode 100644
index 000000000000..d9c1472495e7
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/killbots.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple game of evading killer robots";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kiriki.nix b/pkgs/desktops/kde-4.14/kdegames/kiriki.nix
new file mode 100644
index 000000000000..72f7ab67501b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kiriki.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "an addictive and fun dice game, designed to be played by as many as six players";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kjumpingcube.nix b/pkgs/desktops/kde-4.14/kdegames/kjumpingcube.nix
new file mode 100644
index 000000000000..a6d22cff51c3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kjumpingcube.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple dice driven tactical game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/klickety.nix b/pkgs/desktops/kde-4.14/kdegames/klickety.nix
new file mode 100644
index 000000000000..b592bc40641f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/klickety.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a puzzle game where the player removes groups of colored marbles to clear the board";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/klines.nix b/pkgs/desktops/kde-4.14/kdegames/klines.nix
new file mode 100644
index 000000000000..90952fe91c07
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/klines.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple but highly addictive one player game. The player has to move the colored balls around the game board, gathering them into the lines of the same color by five";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kmahjongg.nix b/pkgs/desktops/kde-4.14/kdegames/kmahjongg.nix
new file mode 100644
index 000000000000..946b531ff127
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kmahjongg.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, libkmahjongg }:
+kde {
+  buildInputs = [ kdelibs libkdegames libkmahjongg ];
+  meta = {
+    description = "the tiles are scrambled and staked on top of each other to resemble a certain shape. The player is then expected to remove all the tiles off the game board by locating each tile's matching pair";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kmines.nix b/pkgs/desktops/kde-4.14/kdegames/kmines.nix
new file mode 100644
index 000000000000..538454e95984
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kmines.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a classic Minesweeper game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/knavalbattle.nix b/pkgs/desktops/kde-4.14/kdegames/knavalbattle.nix
new file mode 100644
index 000000000000..42ffd2fcb4d5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/knavalbattle.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a Battle Ship game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/knetwalk.nix b/pkgs/desktops/kde-4.14/kdegames/knetwalk.nix
new file mode 100644
index 000000000000..a16e578ce848
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/knetwalk.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a small game where you have to build up a computer network by rotating the wires to connect the terminals to the server";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kolf.nix b/pkgs/desktops/kde-4.14/kdegames/kolf.nix
new file mode 100644
index 000000000000..78815ee57996
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kolf.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a miniature golf game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kollision.nix b/pkgs/desktops/kde-4.14/kdegames/kollision.nix
new file mode 100644
index 000000000000..3147c7305ea0
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kollision.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple ball dodging game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/konquest.nix b/pkgs/desktops/kde-4.14/kdegames/konquest.nix
new file mode 100644
index 000000000000..53ddd64928cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/konquest.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "the KDE version of Gnu-Lactic Konquest";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kpat.nix b/pkgs/desktops/kde-4.14/kdegames/kpat.nix
new file mode 100644
index 000000000000..f8d9bad36dc5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kpat.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a relaxing card sorting game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kreversi.nix b/pkgs/desktops/kde-4.14/kdegames/kreversi.nix
new file mode 100644
index 000000000000..2aed981428e1
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kreversi.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple one player strategy game played against the computer. If a player's piece is captured by an opposing player, that piece is turned over to reveal the color of that player";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kshisen.nix b/pkgs/desktops/kde-4.14/kdegames/kshisen.nix
new file mode 100644
index 000000000000..9c8880340388
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kshisen.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, libkmahjongg }:
+kde {
+  buildInputs = [ kdelibs libkdegames libkmahjongg ];
+  meta = {
+    description = "a solitaire-like game played using the standard set of Mahjong tiles";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/ksirk.nix b/pkgs/desktops/kde-4.14/kdegames/ksirk.nix
new file mode 100644
index 000000000000..767eb67971a8
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/ksirk.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, qca2 }:
+kde {
+  buildInputs = [ kdelibs libkdegames qca2 ];
+  meta = {
+    description = "a computerized version of the well known strategic board game Risk";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/ksnakeduel.nix b/pkgs/desktops/kde-4.14/kdegames/ksnakeduel.nix
new file mode 100644
index 000000000000..ccf1fb551e9a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/ksnakeduel.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple Tron-Clone";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kspaceduel.nix b/pkgs/desktops/kde-4.14/kdegames/kspaceduel.nix
new file mode 100644
index 000000000000..5285f7916cad
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kspaceduel.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "each of two possible players control a satellite spaceship orbiting the sun. As the game progresses players have to eliminate the opponent's spacecraft with bullets or mines";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/ksquares.nix b/pkgs/desktops/kde-4.14/kdegames/ksquares.nix
new file mode 100644
index 000000000000..a17be2da6325
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/ksquares.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a game modeled after the well known pen and paper based game of Dots and Boxes";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/ksudoku.nix b/pkgs/desktops/kde-4.14/kdegames/ksudoku.nix
new file mode 100644
index 000000000000..ea4e13a5e4f3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/ksudoku.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a logic-based symbol placement puzzle";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/ktuberling.nix b/pkgs/desktops/kde-4.14/kdegames/ktuberling.nix
new file mode 100644
index 000000000000..1a6ba9d653c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/ktuberling.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a simple constructor game suitable for children and adults alike";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/kubrick.nix b/pkgs/desktops/kde-4.14/kdegames/kubrick.nix
new file mode 100644
index 000000000000..9bdc6879db4b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/kubrick.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a game based on the Rubik's Cube™ puzzle";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/libkdegames.nix b/pkgs/desktops/kde-4.14/kdegames/libkdegames.nix
new file mode 100644
index 000000000000..3819dcdc9ae2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/libkdegames.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, openal, libsndfile }:
+kde {
+  buildInputs = [ kdelibs openal libsndfile ];
+  meta = {
+    description = "KDE games library";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/libkmahjongg.nix b/pkgs/desktops/kde-4.14/kdegames/libkmahjongg.nix
new file mode 100644
index 000000000000..383b347dc330
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/libkmahjongg.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a library for KMahjongg game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/lskat.nix b/pkgs/desktops/kde-4.14/kdegames/lskat.nix
new file mode 100644
index 000000000000..2a5050cd6676
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/lskat.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a fun and engaging card game for two players, where the second player is either live opponent, or a built in artificial intelligence";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/palapeli.nix b/pkgs/desktops/kde-4.14/kdegames/palapeli.nix
new file mode 100644
index 000000000000..010dbd5d6232
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/palapeli.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+
+# TODO: package qvoronoi
+
+  buildInputs = [ kdelibs libkdegames ];
+
+  meta = {
+    description = "a single-player jigsaw puzzle game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegames/picmi.nix b/pkgs/desktops/kde-4.14/kdegames/picmi.nix
new file mode 100644
index 000000000000..165d7422f95b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegames/picmi.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+  buildInputs = [ kdelibs libkdegames ];
+  meta = {
+    description = "a single player logic-based puzzle game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/gwenview.nix b/pkgs/desktops/kde-4.14/kdegraphics/gwenview.nix
new file mode 100644
index 000000000000..3ce9b3dcc78a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/gwenview.nix
@@ -0,0 +1,15 @@
+{ stdenv, kde, kdelibs, exiv2, kde_baseapps, libkipi, nepomuk_core
+, libjpeg, pkgconfig, kactivities, lcms2 }:
+
+kde {
+
+  buildInputs =
+    [ kdelibs exiv2 nepomuk_core kactivities kde_baseapps libkipi libjpeg lcms2 ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Gwenview, the KDE image viewer";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kamera.nix b/pkgs/desktops/kde-4.14/kdegraphics/kamera.nix
new file mode 100644
index 000000000000..d9aa11c54afa
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kamera.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, libgphoto2 }:
+
+kde {
+  buildInputs = [ kdelibs libgphoto2 ];
+
+  meta = {
+    description = "KDE camera interface library";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kcolorchooser.nix b/pkgs/desktops/kde-4.14/kdegraphics/kcolorchooser.nix
new file mode 100644
index 000000000000..e06c1b5d307c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kcolorchooser.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A small utility to select a color";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-mobipocket.nix b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-mobipocket.nix
new file mode 100644
index 000000000000..e834762feb52
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-mobipocket.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, okular }:
+
+kde {
+  buildInputs = [ kdelibs okular ];
+
+  meta = {
+    description = "A collection of plugins to handle mobipocket files";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-strigi-analyzer.nix b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-strigi-analyzer.nix
new file mode 100644
index 000000000000..d9d35808ac50
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-strigi-analyzer.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, libtiff }:
+
+kde {
+  buildInputs = [ kdelibs libtiff ];
+
+  meta = {
+    description = "Strigi analyzers for various graphics file formats";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-thumbnailers.nix b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..d6207689512f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kdegraphics-thumbnailers.nix
@@ -0,0 +1,13 @@
+{ stdenv, kde, kdelibs, libkexiv2, libkdcraw, pkgconfig }:
+
+kde {
+
+  buildInputs = [ kdelibs libkexiv2 libkdcraw ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Thumbnailers for various graphics file formats";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kgamma.nix b/pkgs/desktops/kde-4.14/kdegraphics/kgamma.nix
new file mode 100644
index 000000000000..016312c199e5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kgamma.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, libXxf86vm }:
+
+kde {
+  buildInputs = [ kdelibs libXxf86vm ];
+
+  meta = {
+    description = "KDE monitor calibration tool";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kolourpaint.nix b/pkgs/desktops/kde-4.14/kdegraphics/kolourpaint.nix
new file mode 100644
index 000000000000..ecf34e5ae9e5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kolourpaint.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, qimageblitz }:
+
+kde {
+  buildInputs = [ kdelibs qimageblitz ];
+
+  meta = {
+    description = "KDE paint program";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/kruler.nix b/pkgs/desktops/kde-4.14/kdegraphics/kruler.nix
new file mode 100644
index 000000000000..209331d9e83d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/kruler.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE screen ruler";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/ksaneplugin.nix b/pkgs/desktops/kde-4.14/kdegraphics/ksaneplugin.nix
new file mode 100644
index 000000000000..f541c4bdb4df
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/ksaneplugin.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, libksane }:
+
+kde {
+  buildInputs = [ kdelibs libksane ];
+
+  meta = {
+    description = "A KScan plugin that implements the scanning through libksane";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/ksnapshot.nix b/pkgs/desktops/kde-4.14/kdegraphics/ksnapshot.nix
new file mode 100644
index 000000000000..a9897d270bb6
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/ksnapshot.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, libkipi }:
+
+kde {
+  buildInputs = [ kdelibs libkipi ];
+
+  meta = {
+    description = "KDE screenshot utility";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/libkdcraw.nix b/pkgs/desktops/kde-4.14/kdegraphics/libkdcraw.nix
new file mode 100644
index 000000000000..1d5c6e2fcb4a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/libkdcraw.nix
@@ -0,0 +1,13 @@
+{ stdenv, kde, kdelibs, pkgconfig, libraw, lcms2 }:
+
+kde {
+
+  buildInputs = [ kdelibs libraw lcms2 ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Library for decoding RAW images";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/libkexiv2.nix b/pkgs/desktops/kde-4.14/kdegraphics/libkexiv2.nix
new file mode 100644
index 000000000000..46ec45fad01a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/libkexiv2.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, exiv2 }:
+
+kde {
+  buildInputs = [ kdelibs exiv2 ];
+
+  meta = {
+    description = "Exiv2 support library";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/libkipi.nix b/pkgs/desktops/kde-4.14/kdegraphics/libkipi.nix
new file mode 100644
index 000000000000..65e6c52bd44f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/libkipi.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Interface library to kipi-plugins";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/libksane.nix b/pkgs/desktops/kde-4.14/kdegraphics/libksane.nix
new file mode 100644
index 000000000000..6c3543eef370
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/libksane.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs, saneBackends }:
+
+kde {
+  buildInputs = [ kdelibs saneBackends ];
+
+  meta = {
+    description = "An image scanning library that provides a QWidget that contains all the logic needed to interface a sacanner";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/okular.nix b/pkgs/desktops/kde-4.14/kdegraphics/okular.nix
new file mode 100644
index 000000000000..092833388a78
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/okular.nix
@@ -0,0 +1,17 @@
+{ stdenv, chmlib, djvulibre, ebook_tools, kde, kdelibs, libspectre, popplerQt4, qca2
+, qimageblitz, libtiff, kactivities, pkgconfig, libkexiv2 }:
+
+kde {
+
+# TODO: package activeapp, qmobipocket
+
+  buildInputs = [ kdelibs chmlib djvulibre ebook_tools libspectre popplerQt4
+                  qca2 qimageblitz libtiff kactivities libkexiv2 ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "Okular, the KDE document viewer";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdegraphics/svgpart.nix b/pkgs/desktops/kde-4.14/kdegraphics/svgpart.nix
new file mode 100644
index 000000000000..2fc0e373dbdf
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdegraphics/svgpart.nix
@@ -0,0 +1,10 @@
+{ stdenv, kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "SVG KPart";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdelibs/kdelibs.nix b/pkgs/desktops/kde-4.14/kdelibs/kdelibs.nix
new file mode 100644
index 000000000000..5db693e6ea07
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdelibs/kdelibs.nix
@@ -0,0 +1,49 @@
+{ kde, gcc, cmake, perl
+, qt4, bzip2, fam, shared_mime_info, giflib, jasper, strigi
+, openexr, avahi, kerberos, shared_desktop_ontologies, libXScrnSaver
+, automoc4, soprano, qca2, attica, enchant, libdbusmenu_qt, grantlee
+, docbook_xml_dtd_42, docbook_xsl, polkit_qt_1, acl, attr, libXtst
+, udev, herqq, phonon, libjpeg, xz, ilmbase, libxslt
+, pkgconfig
+}:
+
+kde {
+
+# TODO: media-player-info
+
+  buildInputs =
+    [ pkgconfig attica avahi bzip2 enchant fam giflib grantlee herqq
+      libdbusmenu_qt libXScrnSaver polkit_qt_1 qca2 acl jasper libxslt
+      shared_desktop_ontologies xz udev libjpeg kerberos openexr
+      libXtst attr
+    ];
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
+
+  propagatedBuildInputs = [ qt4 soprano phonon strigi ];
+
+  propagatedNativeBuildInputs = [ automoc4 cmake perl shared_mime_info ];
+
+  # TODO: make sonnet plugins (dictionaries) really work.
+  # There are a few hardcoded paths.
+  # Split plugins from libs?
+
+  patches = [
+    ../files/polkit-install.patch
+    ../files/kdelibs-cve-2014-5033.patch  # Security patch, remove when updating to 4.14.0 or more
+  ];
+
+  cmakeFlags = [
+    "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
+    "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
+    "-DHUPNP_ENABLED=ON"
+    "-DWITH_SOLID_UDISKS2=ON"
+  ];
+
+  passthru.wantsUdisks2 = true;
+
+  meta = {
+    description = "KDE libraries";
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdelibs/nepomuk-core.nix b/pkgs/desktops/kde-4.14/kdelibs/nepomuk-core.nix
new file mode 100644
index 000000000000..d90e1455ce99
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdelibs/nepomuk-core.nix
@@ -0,0 +1,20 @@
+{ stdenv, kde, kdelibs, soprano, shared_desktop_ontologies, exiv2, ffmpeg, taglib, popplerQt4
+, pkgconfig, doxygen, ebook_tools
+}:
+
+kde {
+
+# TODO: qmobipocket
+
+  buildInputs = [
+    kdelibs soprano shared_desktop_ontologies taglib exiv2 ffmpeg
+    popplerQt4 ebook_tools
+  ];
+
+  nativeBuildInputs = [ pkgconfig doxygen ];
+
+  meta = {
+    description = "NEPOMUK core";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdelibs/nepomuk-widgets.nix b/pkgs/desktops/kde-4.14/kdelibs/nepomuk-widgets.nix
new file mode 100644
index 000000000000..b0fc5ad8900d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdelibs/nepomuk-widgets.nix
@@ -0,0 +1,11 @@
+{ stdenv, kde, kdelibs, nepomuk_core }:
+
+kde {
+
+  buildInputs = [ kdelibs nepomuk_core ];
+
+  meta = {
+    description = "NEPOMUK Widgets";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/audiocd-kio.nix b/pkgs/desktops/kde-4.14/kdemultimedia/audiocd-kio.nix
new file mode 100644
index 000000000000..4c56e7529dd7
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/audiocd-kio.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkcompactdisc, cdparanoia, libkcddb, libvorbis, flac, lame }:
+kde {
+  buildInputs = [ kdelibs libkcompactdisc cdparanoia libkcddb libvorbis flac lame ];
+  meta = {
+    description = "transparent audio CD access for applications using the KDE Platform";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/dragon.nix b/pkgs/desktops/kde-4.14/kdemultimedia/dragon.nix
new file mode 100644
index 000000000000..006300742ecd
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/dragon.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+  meta = {
+    description = "a multimedia player with the focus on simplicity";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/ffmpegthumbs.nix b/pkgs/desktops/kde-4.14/kdemultimedia/ffmpegthumbs.nix
new file mode 100644
index 000000000000..45f6c9abcb66
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/ffmpegthumbs.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, ffmpeg }:
+kde {
+  buildInputs = [ kdelibs ffmpeg ];
+  meta = {
+    description = "a video thumbnail generator for KDE file managers like Dolphin and Konqueror";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/juk.nix b/pkgs/desktops/kde-4.14/kdemultimedia/juk.nix
new file mode 100644
index 000000000000..5d7b1db224ea
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/juk.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, taglib, libtunepimp }:
+kde {
+
+# TODO: opusfile
+
+  buildInputs = [ kdelibs taglib libtunepimp ];
+  meta = {
+    description = "an audio jukebox application";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/kmix.nix b/pkgs/desktops/kde-4.14/kdemultimedia/kmix.nix
new file mode 100644
index 000000000000..1dd8108166f2
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/kmix.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libcanberra, pulseaudio }:
+kde {
+  buildInputs = [ kdelibs libcanberra pulseaudio ];
+  meta = {
+    description = "sound mixer, an application to allow you to change the volume of your sound card";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/kscd.nix b/pkgs/desktops/kde-4.14/kdemultimedia/kscd.nix
new file mode 100644
index 000000000000..e99ae53935b9
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/kscd.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libmusicbrainz }:
+kde {
+  buildInputs = [ kdelibs libmusicbrainz ];
+  meta = {
+    description = "KDE CD player";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/libkcddb.nix b/pkgs/desktops/kde-4.14/kdemultimedia/libkcddb.nix
new file mode 100644
index 000000000000..720b01d1861e
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/libkcddb.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+#todo: libmusicbrainz5
+  buildInputs = [ kdelibs ];
+  meta = {
+    description = "a library used to retrieve audio CD meta data from the internet";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/libkcompactdisc.nix b/pkgs/desktops/kde-4.14/kdemultimedia/libkcompactdisc.nix
new file mode 100644
index 000000000000..6ed08af89f33
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/libkcompactdisc.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+  meta = {
+    description = "KDE library for playing & ripping CDs";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdemultimedia/mplayerthumbs.nix b/pkgs/desktops/kde-4.14/kdemultimedia/mplayerthumbs.nix
new file mode 100644
index 000000000000..c88ebcc2a5a3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdemultimedia/mplayerthumbs.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+  meta = {
+    description = "a video thumbnail generator for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-filesharing.nix b/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-filesharing.nix
new file mode 100644
index 000000000000..0330511a258b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-filesharing.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE properties dialog plugin to share a directory with the local network";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-strigi-analyzers.nix b/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-strigi-analyzers.nix
new file mode 100644
index 000000000000..e838d84fc5eb
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kdenetwork-strigi-analyzers.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, boost }:
+
+kde {
+  buildInputs = [ kdelibs boost ];
+
+  meta = {
+    description = "Strigi analyzers for various network protocols";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kget.nix b/pkgs/desktops/kde-4.14/kdenetwork/kget.nix
new file mode 100644
index 000000000000..f986da2de214
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kget.nix
@@ -0,0 +1,20 @@
+{ kde, kdelibs, libktorrent, kde_workspace, sqlite, boost
+, kde_baseapps, libmms, qca2, nepomuk_core, nepomuk_widgets
+, pkgconfig }:
+
+kde {
+
+# TODO: QGpgME
+
+  buildInputs =
+    [ kdelibs libktorrent nepomuk_core nepomuk_widgets sqlite qca2
+      libmms kde_baseapps kde_workspace boost ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  KDEDIRS = libktorrent;
+
+  meta = {
+    description = "KDE download manager";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix b/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix
new file mode 100644
index 000000000000..7d8aec21ce6c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix
@@ -0,0 +1,26 @@
+{ kde, kdelibs, libmsn, libotr, kdepimlibs, qimageblitz, libktorrent,
+  jasper, libidn, mediastreamer, pkgconfig, libxslt, giflib,
+  libgadu, boost, qca2, sqlite, jsoncpp,
+  ortp, srtp, libv4l }:
+
+kde {
+
+# TODO: libmeanwhile, xmms, jsoncpp(not found), kleopatra(from kdepim but doesn't install headers?),
+
+  buildInputs = [
+    kdelibs qca2 mediastreamer libgadu jsoncpp
+    kdepimlibs qimageblitz sqlite jasper libotr libmsn giflib
+    libidn libxslt boost
+    ortp srtp libv4l
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  KDEDIRS = libktorrent;
+
+  cmakeFlags = [ "-DBUILD_skypebuttons=TRUE" ];
+
+  meta = {
+    description = "A KDE multi-protocol IM client";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kppp.nix b/pkgs/desktops/kde-4.14/kdenetwork/kppp.nix
new file mode 100644
index 000000000000..4c6bd65769f7
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kppp.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "PPP(Dial-Up) client tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix b/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix
new file mode 100644
index 000000000000..80557e827fe0
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libvncserver, freerdp, telepathy_qt }:
+
+kde {
+  buildInputs = [ kdelibs libvncserver freerdp telepathy_qt ];
+
+  meta = {
+    description = "KDE remote desktop client";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/krfb.nix b/pkgs/desktops/kde-4.14/kdenetwork/krfb.nix
new file mode 100644
index 000000000000..cb4857965a34
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/krfb.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libvncserver, libXdamage, libXtst, libjpeg, telepathy_qt }:
+
+kde {
+  buildInputs = [ kdelibs libvncserver libXdamage libXtst libjpeg telepathy_qt ];
+
+  meta = {
+    description = "KDE desktop sharing";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/zeroconf-ioslave.nix b/pkgs/desktops/kde-4.14/kdenetwork/zeroconf-ioslave.nix
new file mode 100644
index 000000000000..f65960cc337b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdenetwork/zeroconf-ioslave.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE tool that monitors the network for DNS-SD services";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdepim-runtime.nix b/pkgs/desktops/kde-4.14/kdepim-runtime.nix
new file mode 100644
index 000000000000..d92e22548206
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdepim-runtime.nix
@@ -0,0 +1,16 @@
+{ kde, libxslt, boost, kdepimlibs, akonadi, shared_desktop_ontologies }:
+
+kde {
+
+# TODO: libkgapi(2), LibKFbAPI,libkolab, libkolabxml
+
+  buildInputs = [
+    kdepimlibs akonadi boost shared_desktop_ontologies
+    libxslt
+  ];
+
+  meta = {
+    description = "KDE PIM runtime";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdepim.nix b/pkgs/desktops/kde-4.14/kdepim.nix
new file mode 100644
index 000000000000..4f364648d238
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdepim.nix
@@ -0,0 +1,28 @@
+{ kde, boost, gpgme, libassuan, libxslt, kdepimlibs, kdepim_runtime
+, akonadi, shared_desktop_ontologies, cyrus_sasl, grantlee, prison
+, nepomuk_widgets, kactivities, libXScrnSaver, qjson
+, pkgconfig }:
+
+kde {
+
+# TODO: LinkGrammar
+
+  buildInputs =
+    [ kdepimlibs boost shared_desktop_ontologies akonadi nepomuk_widgets
+      libxslt cyrus_sasl gpgme libassuan grantlee prison kactivities
+      libXScrnSaver qjson
+    ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  passthru.propagatedUserEnvPackages = [ akonadi kdepimlibs kdepim_runtime ];
+
+  meta = {
+    description = "KDE PIM tools";
+    longDescription = ''
+      Contains various personal information management tools for KDE, such as an organizer.
+    '';
+    license = "GPL";
+    homepage = http://pim.kde.org;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdepimlibs.nix b/pkgs/desktops/kde-4.14/kdepimlibs.nix
new file mode 100644
index 000000000000..ca0af9400b11
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdepimlibs.nix
@@ -0,0 +1,19 @@
+{ kde, pkgconfig, boost, cyrus_sasl, gpgme, libical, openldap, prison
+, kdelibs, akonadi, libxslt, nepomuk_core
+, shared_desktop_ontologies, qjson }:
+
+kde {
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs =
+    [ boost gpgme libical libxslt qjson prison
+      openldap cyrus_sasl akonadi shared_desktop_ontologies
+    ];
+
+  propagatedBuildInputs = [ kdelibs nepomuk_core ];
+
+  meta = {
+    description = "KDE PIM libraries";
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeplasma-addons.nix b/pkgs/desktops/kde-4.14/kdeplasma-addons.nix
new file mode 100644
index 000000000000..550099830d91
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeplasma-addons.nix
@@ -0,0 +1,23 @@
+{ kde, kdelibs, marble, shared_desktop_ontologies, pkgconfig
+, boost, eigen, kde_workspace, attica, qca2, qimageblitz
+, kdepimlibs, libkexiv2, libqalculate, libXtst, libdbusmenu_qt
+, qjson, qoauth }:
+
+kde {
+
+# TODO: qwt, scim, ibus
+
+  KDEDIRS=marble;
+
+  buildInputs = [ kdelibs boost kde_workspace kdepimlibs attica qjson qoauth
+                  eigen qca2 libXtst qimageblitz libqalculate 
+                  shared_desktop_ontologies marble libkexiv2 libdbusmenu_qt
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = {
+    description = "KDE Plasma Addons";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/cervisia.nix b/pkgs/desktops/kde-4.14/kdesdk/cervisia.nix
new file mode 100644
index 000000000000..1dabe46cd429
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/cervisia.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A KDE CVS frontend";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/dolphin-plugins.nix b/pkgs/desktops/kde-4.14/kdesdk/dolphin-plugins.nix
new file mode 100644
index 000000000000..ad8132a850e5
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/dolphin-plugins.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+
+  # Needs kdebase for libkonq
+  buildInputs = [ kdelibs kde_baseapps ];
+
+  meta = {
+    description = "Svn, mercurial, git and bazaar plugins for dolphin";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kapptemplate.nix b/pkgs/desktops/kde-4.14/kdesdk/kapptemplate.nix
new file mode 100644
index 000000000000..391536248dd3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kapptemplate.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A KDE 4 project template generator";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kcachegrind.nix b/pkgs/desktops/kde-4.14/kdesdk/kcachegrind.nix
new file mode 100644
index 000000000000..65d410cca48d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kcachegrind.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE Frontend for Callgrind/Cachegrind";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kde-dev-scripts.nix b/pkgs/desktops/kde-4.14/kdesdk/kde-dev-scripts.nix
new file mode 100644
index 000000000000..df81145e5d60
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kde-dev-scripts.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Various scripts to ease KDE development";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kde-dev-utils.nix b/pkgs/desktops/kde-4.14/kdesdk/kde-dev-utils.nix
new file mode 100644
index 000000000000..215c0a3c613a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kde-dev-utils.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, gcc, libtool }:
+
+kde {
+  buildInputs = [ kdelibs libtool ];
+
+  preConfigure = "export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${gcc}:${gcc.gcc}";
+
+  meta = {
+    description = "various KDE development utilities";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kdesdk-kioslaves.nix b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-kioslaves.nix
new file mode 100644
index 000000000000..98bbce35a97c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-kioslaves.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, subversionClient, apr, aprutil,perl }:
+
+kde {
+
+  buildInputs = [ kdelibs subversionClient apr aprutil perl ];
+
+  cmakeFlags = [ "-DBUILD_perldoc=ON" ];
+
+  meta = {
+    description = "Subversion and perldoc kioslaves";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kdesdk-strigi-analyzers.nix b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-strigi-analyzers.nix
new file mode 100644
index 000000000000..4d579b88ba8a
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-strigi-analyzers.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Strigi analyzers for diff, po and ts";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kdesdk-thumbnailers.nix b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-thumbnailers.nix
new file mode 100644
index 000000000000..d707fe9038fe
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kdesdk-thumbnailers.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, gettext }:
+
+kde {
+
+  buildInputs = [ kdelibs gettext ];
+
+  meta = {
+    description = "PO file format thumbnailer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/kompare.nix b/pkgs/desktops/kde-4.14/kdesdk/kompare.nix
new file mode 100644
index 000000000000..644c7c48dc97
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/kompare.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libkomparediff2 }:
+
+kde {
+  buildInputs = [ kdelibs libkomparediff2 ];
+
+  meta = {
+    description = "A program to view the differences between files and optionally generate a diff";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/libkomparediff2.nix b/pkgs/desktops/kde-4.14/kdesdk/libkomparediff2.nix
new file mode 100644
index 000000000000..5933682c70a0
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/libkomparediff2.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A library to compare files and strings";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/lokalize.nix b/pkgs/desktops/kde-4.14/kdesdk/lokalize.nix
new file mode 100644
index 000000000000..1565426eb1fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/lokalize.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, hunspell }:
+
+kde {
+  buildInputs = [ kdelibs hunspell ];
+
+  meta = {
+    description = "KDE 4 Computer-aided translation system";
+    longDescription = ''
+      Computer-aided translation system.
+      Do not translate what had already been translated.
+    '';
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/okteta.nix b/pkgs/desktops/kde-4.14/kdesdk/okteta.nix
new file mode 100644
index 000000000000..058636596ad8
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/okteta.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, qca2 }:
+
+kde {
+  buildInputs = [ kdelibs qca2 ];
+
+# TODO: Look what does -DBUILD_mobile add
+
+  enableParallelBuilding = false;
+
+  meta = {
+    description = "KDE byte editor";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/poxml.nix b/pkgs/desktops/kde-4.14/kdesdk/poxml.nix
new file mode 100644
index 000000000000..6e46c3e3ab4f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/poxml.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, antlr, gettext }:
+
+kde {
+  buildInputs = [ kdelibs antlr gettext ];
+
+  meta = {
+    description = "Po<->xml tools";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdesdk/umbrello.nix b/pkgs/desktops/kde-4.14/kdesdk/umbrello.nix
new file mode 100644
index 000000000000..e83a2d9a901b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdesdk/umbrello.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libxml2, libxslt, boost }:
+
+kde {
+  buildInputs = [ kdelibs libxml2 libxslt boost ];
+
+  meta = {
+    description = "Umbrello UML modeller";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdetoys/amor.nix b/pkgs/desktops/kde-4.14/kdetoys/amor.nix
new file mode 100644
index 000000000000..936d63d544a9
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdetoys/amor.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE creature for your desktop";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdetoys/kteatime.nix b/pkgs/desktops/kde-4.14/kdetoys/kteatime.nix
new file mode 100644
index 000000000000..dacf54def4b0
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdetoys/kteatime.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE utility for making a fine cup of tea";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdetoys/ktux.nix b/pkgs/desktops/kde-4.14/kdetoys/ktux.nix
new file mode 100644
index 000000000000..108f9be7c722
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdetoys/ktux.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kde_workspace }:
+
+kde {
+  buildInputs = [ kdelibs kde_workspace ];
+
+  meta = {
+    description = "Tux Screen Saver";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/ark.nix b/pkgs/desktops/kde-4.14/kdeutils/ark.nix
new file mode 100644
index 000000000000..99844b909fd7
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/ark.nix
@@ -0,0 +1,17 @@
+{ makeWrapper, kde, kdelibs, libarchive, bzip2, kde_baseapps, lzma, qjson
+, unzip }:
+
+kde {
+  buildInputs = [
+    makeWrapper kdelibs kde_baseapps libarchive bzip2 lzma qjson
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/ark \
+      --prefix PATH ":" "${unzip}/bin"
+  '';
+
+  meta = {
+    description = "KDE Archiving Tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/filelight.nix b/pkgs/desktops/kde-4.14/kdeutils/filelight.nix
new file mode 100644
index 000000000000..25ecabed27ce
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/filelight.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Tool to visualise file and directory sizes";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kcalc.nix b/pkgs/desktops/kde-4.14/kdeutils/kcalc.nix
new file mode 100644
index 000000000000..08b202e8f0e8
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kcalc.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, gmp }:
+
+kde {
+  buildInputs = [ kdelibs gmp ];
+
+  meta = {
+    description = "KDE Calculator";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kcharselect.nix b/pkgs/desktops/kde-4.14/kdeutils/kcharselect.nix
new file mode 100644
index 000000000000..d4c9c06f483d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kcharselect.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE character selection utility";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kdf.nix b/pkgs/desktops/kde-4.14/kdeutils/kdf.nix
new file mode 100644
index 000000000000..3f9da58d0a62
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kdf.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE free disk space utility";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kfloppy.nix b/pkgs/desktops/kde-4.14/kdeutils/kfloppy.nix
new file mode 100644
index 000000000000..2434a4fa671f
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kfloppy.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Floppy disk formatting utility";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kgpg.nix b/pkgs/desktops/kde-4.14/kdeutils/kgpg.nix
new file mode 100644
index 000000000000..3ff1a286ae58
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kgpg.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, kdepimlibs, boost }:
+
+kde {
+
+  buildInputs = [ kdelibs kdepimlibs boost ];
+
+  meta = {
+    description = "Simple KDE GUI for GPG";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kremotecontrol.nix b/pkgs/desktops/kde-4.14/kdeutils/kremotecontrol.nix
new file mode 100644
index 000000000000..70311a789f99
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kremotecontrol.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libXtst }:
+
+kde {
+  buildInputs = [ kdelibs libXtst ];
+
+  meta = {
+    description = "KDE remote control";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/ktimer.nix b/pkgs/desktops/kde-4.14/kdeutils/ktimer.nix
new file mode 100644
index 000000000000..5700977349e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/ktimer.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE Timer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/kwalletmanager.nix b/pkgs/desktops/kde-4.14/kdeutils/kwalletmanager.nix
new file mode 100644
index 000000000000..9ec0e6c0396c
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/kwalletmanager.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE Wallet (password storage) management tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/print-manager.nix b/pkgs/desktops/kde-4.14/kdeutils/print-manager.nix
new file mode 100644
index 000000000000..ae72becd1e49
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/print-manager.nix
@@ -0,0 +1,27 @@
+{ kde, kdelibs
+, pythonPackages, cups, pyqt4, pykde4, pycups, system_config_printer }:
+
+let s_c_p = system_config_printer.override { withGUI = false; }; in
+
+kde rec {
+  buildInputs = [ kdelibs pythonPackages.python pythonPackages.wrapPython
+    ] ++ pythonPath;
+
+  pythonPath = [ cups pyqt4 pykde4 pycups s_c_p ];
+
+  passthru.propagatedUserEnvPackages = [ s_c_p ];
+
+  postInstall =
+    ''
+      wrapPythonPrograms
+
+      # "system-config-printer" supplies some D-Bus policy that we need.
+      mkdir -p $out/nix-support
+      echo ${s_c_p} > $out/nix-support/propagated-user-env-packages
+    '';
+
+  meta = {
+    description = "KDE printer manager";
+    longDescription = "Applet to view current print jobs and configure new printers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/superkaramba.nix b/pkgs/desktops/kde-4.14/kdeutils/superkaramba.nix
new file mode 100644
index 000000000000..cbe7a2856062
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/superkaramba.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, qimageblitz, python }:
+
+kde {
+  buildInputs = [ kdelibs qimageblitz python ];
+
+  cmakeFlags = [ "-DBUILD_icons=TRUE" "-DBUILD_plasma=TRUE" ];
+
+  meta = {
+    description = "A KDE Eye-candy Application";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdeutils/sweeper.nix b/pkgs/desktops/kde-4.14/kdeutils/sweeper.nix
new file mode 100644
index 000000000000..78d56c7df30e
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdeutils/sweeper.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Helps clean unwanted traces the user leaves on the system";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdewebdev/kfilereplace.nix b/pkgs/desktops/kde-4.14/kdewebdev/kfilereplace.nix
new file mode 100644
index 000000000000..55e37809e07b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdewebdev/kfilereplace.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Batch search and replace tool";
+    homepage = http://www.kdewebdev.org;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdewebdev/kimagemapeditor.nix b/pkgs/desktops/kde-4.14/kdewebdev/kimagemapeditor.nix
new file mode 100644
index 000000000000..6d22f72461f9
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdewebdev/kimagemapeditor.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "An HTML imagemap editor";
+    homepage = http://www.nongnu.org/kimagemap/;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdewebdev/klinkstatus.nix b/pkgs/desktops/kde-4.14/kdewebdev/klinkstatus.nix
new file mode 100644
index 000000000000..918512e2b2de
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdewebdev/klinkstatus.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, libxml2, libxslt, kdepimlibs, htmlTidy, boost }:
+
+kde {
+
+# todo: ruby19 is not found by the build system. not linking against ruby18 due to it being too old
+
+  buildInputs = [ kdelibs kdepimlibs htmlTidy boost ];
+
+  meta = {
+    description = "A KDE link checker";
+    homepage = http://klinkstatus.kdewebdev.org;
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/kdewebdev/kommander.nix b/pkgs/desktops/kde-4.14/kdewebdev/kommander.nix
new file mode 100644
index 000000000000..d5f4337f714d
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/kdewebdev/kommander.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A graphical editor of scripted dialogs";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/l10n/default.nix b/pkgs/desktops/kde-4.14/l10n/default.nix
new file mode 100644
index 000000000000..fa6406043b1b
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/l10n/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, kdelibs, gettext, release, branch, stable }:
+
+let
+
+  inherit (stdenv.lib) attrByPath singleton;
+
+  kdeL10nDerivation =
+    { lang, saneName, sha256 }:
+
+    stdenv.mkDerivation rec {
+      name = "kde-l10n-${saneName}-${release}";
+
+      src = fetchurl {
+        url = "mirror://kde/${if stable then "" else "un"}stable/${release}/src/kde-l10n/kde-l10n-${lang}-${release}.tar.xz";
+        name = "${name}.tar.xz";
+        inherit sha256;
+      };
+
+      buildInputs = [ gettext kdelibs ];
+
+      cmakeFlags = "-Wno-dev";
+
+      meta = {
+        description = "KDE translation for ${lang}";
+        inherit branch;
+        license = "GPL";
+        platforms = stdenv.lib.platforms.linux;
+        inherit (kdelibs.meta) maintainers homepage;
+      };
+    };
+
+  kdeL10nRelease =
+    builtins.listToAttrs (
+      map ({lang, saneName, sha256}:
+        {
+          name = saneName;
+          value = kdeL10nDerivation { inherit lang saneName sha256; };
+        }
+      ) (import (./manifest + "-${release}.nix"))
+    );
+
+in
+{
+  inherit kdeL10nDerivation;
+  recurseForDerivations = true;
+} // kdeL10nRelease
diff --git a/pkgs/desktops/kde-4.14/l10n/l10n-manifest.sh b/pkgs/desktops/kde-4.14/l10n/l10n-manifest.sh
new file mode 100755
index 000000000000..ec159a1e2047
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/l10n/l10n-manifest.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Usage: download kde-l10n to $dir, then run
+# $0 $dir
+
+dir=$1
+
+if [[ ! -d "${dir}" ]]; then
+  echo "${dir} is not a directory (or doesn't exist)!" >&2
+  exit 1
+fi
+
+release=$(ls "${dir}"/kde-l10n-en_GB-*.tar.xz | \
+	sed -e 's/.*en_GB-//' -e 's/\.tar\.xz//')
+
+echo "Detected release ${release}" >&2
+
+exec > "manifest-${release}.nix"
+echo "["
+for i in `cd "${dir}"; ls kde-l10n-*-${release}.tar.xz`; do
+  lang=${i%-${release}.tar.xz}
+  lang=${lang#kde-l10n-}
+  echo -n "${lang}.. " >&2
+  hash=$(nix-hash --type sha256 --flat --base32 "${dir}/${i}")
+  echo "{"
+  echo "  lang = \"${lang}\";"
+  echo "  saneName = \"$(echo $lang | sed s^@^_^g)\";"
+  echo "  sha256 = \"${hash}\";"
+  echo "}"
+  echo $hash >&2
+done
+echo "]"
diff --git a/pkgs/desktops/kde-4.14/l10n/manifest-4.12.4.nix b/pkgs/desktops/kde-4.14/l10n/manifest-4.12.4.nix
new file mode 100644
index 000000000000..e646e3528877
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/l10n/manifest-4.12.4.nix
@@ -0,0 +1,262 @@
+[
+{
+  lang = "ar";
+  saneName = "ar";
+  sha256 = "1pygy9kckankwhlm4j61fk42zinafw2insc9kkpgmh9mvb8gv0jk";
+}
+{
+  lang = "bg";
+  saneName = "bg";
+  sha256 = "1qqbl7l84j3d5928gmdq7f7s0i31gw0rlf4y74p5zx8m80xbdd6l";
+}
+{
+  lang = "bs";
+  saneName = "bs";
+  sha256 = "0cg143wlalplw0qr10h60i6srn0avsim94m1hjbm8xrlg71iihjj";
+}
+{
+  lang = "ca";
+  saneName = "ca";
+  sha256 = "15s85xmqbnv7bm7ywivkyi62481ip4vy6yyw81m720hza0imbj9z";
+}
+{
+  lang = "ca@valencia";
+  saneName = "ca_valencia";
+  sha256 = "1d0bhndwf8b0pmglf3sx28r6s3li72x7a05kc39n026ha5zyx5f1";
+}
+{
+  lang = "cs";
+  saneName = "cs";
+  sha256 = "1dx5c6fkgn4hglx8qacrdnxn0l9p7dqbaz6cd7h9pa8b9zri5j9w";
+}
+{
+  lang = "da";
+  saneName = "da";
+  sha256 = "1ynh8s17999pa60bzwr2595pcd744h1n8zznyzr5lq302ir8f8qj";
+}
+{
+  lang = "de";
+  saneName = "de";
+  sha256 = "1da01wd1n64g3l57pagvrb8mn2jj50ni1qhicnlwylk8n2krw0pf";
+}
+{
+  lang = "el";
+  saneName = "el";
+  sha256 = "1qf9g5in9zr39gkip06hr80pzc4frchb2x9q76sqs36h58az5yfd";
+}
+{
+  lang = "en_GB";
+  saneName = "en_GB";
+  sha256 = "1lhrbfh74sqglqxl7yh68qkx0gmppg7iir194vxhm2s1j0jxq8r4";
+}
+{
+  lang = "es";
+  saneName = "es";
+  sha256 = "0qz39nxkiivgk720lgdbfgxdp3wn5wrvx2zf0phvb8g6q5rl68kw";
+}
+{
+  lang = "et";
+  saneName = "et";
+  sha256 = "1i9h68pfsnbi4gw5f4mb6q8jq56hdmi1lqxhwzj6vrbqiip7b9gl";
+}
+{
+  lang = "eu";
+  saneName = "eu";
+  sha256 = "020b1p164v82pj6x0jxz6d41w539786ygkfmgrf9dr20zwhchzha";
+}
+{
+  lang = "fi";
+  saneName = "fi";
+  sha256 = "0vs8bqr6if32bmwvjzdmakyqdl5fz13igg31mzwga4aqlzalxa1w";
+}
+{
+  lang = "fr";
+  saneName = "fr";
+  sha256 = "1wcd9gzf754150i62zl3fa24jq8p7vskn6adaa8x5qy208c0d6v1";
+}
+{
+  lang = "ga";
+  saneName = "ga";
+  sha256 = "0fpsc36sk7zh3flxgnvfgxig4cm5hm56sgdgbl01dfg1mac6dckq";
+}
+{
+  lang = "gl";
+  saneName = "gl";
+  sha256 = "1hrbsd595q2w09mym9h56hymikkpxbq0qmdxvphap5wsh0xsfxms";
+}
+{
+  lang = "he";
+  saneName = "he";
+  sha256 = "1q2y9js6j32rbm5jg8yn6s9zw0jh6yq1q4z6hxy9nss1gh6diqda";
+}
+{
+  lang = "hi";
+  saneName = "hi";
+  sha256 = "0zaknfk8kzcid7839wsj61qgn81gjz0hbpis7q2q1syky4nzjwsb";
+}
+{
+  lang = "hr";
+  saneName = "hr";
+  sha256 = "1d14h5kdfz8np5p27darraxq4ps0yhxhczg9yli436kgiflbvp88";
+}
+{
+  lang = "hu";
+  saneName = "hu";
+  sha256 = "0p29dybsalnjk00f7l3gni7pxzv1ig95m100svhhkmcwvh065kjf";
+}
+{
+  lang = "ia";
+  saneName = "ia";
+  sha256 = "1qqbn3v30z058580qr9qyq0sy6g4jw0far8w7ywgnhks4aapy97a";
+}
+{
+  lang = "is";
+  saneName = "is";
+  sha256 = "1gfm0k2j2jvff9lab87yjrywc1j0gayw2fxibzifvpygr9bl60i7";
+}
+{
+  lang = "it";
+  saneName = "it";
+  sha256 = "11zax6c3qfscadqfamls5k78hw36iwadqsgyiphl574ijz9q48ba";
+}
+{
+  lang = "ja";
+  saneName = "ja";
+  sha256 = "1ab658x0a44kydzs05zgzq7nks6dfl0z8m69ank5ngd12qnhb38s";
+}
+{
+  lang = "kk";
+  saneName = "kk";
+  sha256 = "0n26860ah421x8q2jmz8mh3mdzy26s8ckbfpnyph1vc23zqx9vqv";
+}
+{
+  lang = "km";
+  saneName = "km";
+  sha256 = "05ad1d5klc11s138zb5fj4h2kfida83xqr4z1m6nhv0igwzmza0g";
+}
+{
+  lang = "ko";
+  saneName = "ko";
+  sha256 = "14kchh6yixgrkzrrkdz25xaj2q91il6yshz79n4h0yk01lfc3sq5";
+}
+{
+  lang = "lt";
+  saneName = "lt";
+  sha256 = "0aa4spy2nc1hfbx1z2b4k3sahha0pdxih1k3pl6n9223cjgwcbqp";
+}
+{
+  lang = "lv";
+  saneName = "lv";
+  sha256 = "14341a4qr8p7idvsw6zp23kyva5lb4684wjygm24d9wj69nkc2c4";
+}
+{
+  lang = "mr";
+  saneName = "mr";
+  sha256 = "02rq9spp8vzvv8bvzny48qwksimrnqj6y9rpc3xh6bmzfhvr7qsa";
+}
+{
+  lang = "nb";
+  saneName = "nb";
+  sha256 = "1s2gbynxdbpi32rwdgddabsp3n10ngwpnh6za3yjp4is93ici6rm";
+}
+{
+  lang = "nds";
+  saneName = "nds";
+  sha256 = "18nmh605ya47w0x2nkglg8lrfks7l9pxr6mjnw3z3lsazafigvx1";
+}
+{
+  lang = "nl";
+  saneName = "nl";
+  sha256 = "1jxd109m2y7ky0c4im70ipx07rysbr0ndl2fpjb3myxb2nks106h";
+}
+{
+  lang = "nn";
+  saneName = "nn";
+  sha256 = "117zl85myjnnb957c4gx0h65ks842sk3gbw9dfp8hpzdwg8zvsn4";
+}
+{
+  lang = "pa";
+  saneName = "pa";
+  sha256 = "1q5c61a2swxvyhdw5rambibyms40hj34093ihx32ad73kb4mn72w";
+}
+{
+  lang = "pl";
+  saneName = "pl";
+  sha256 = "0wg4nlra1z6pf8mxlz3w0jq68k0qfhxrhsqij35l9zml5y203n4y";
+}
+{
+  lang = "pt";
+  saneName = "pt";
+  sha256 = "0rryyjfgplar77fz332jv2w0lv7d6273gv022pb1m83w945pzkf9";
+}
+{
+  lang = "pt_BR";
+  saneName = "pt_BR";
+  sha256 = "0aglgvj1ljfdf6gjs478l4wisp2z4dzkkbhz1sgry00p4q1417ab";
+}
+{
+  lang = "ro";
+  saneName = "ro";
+  sha256 = "14aqlg64lp287m09zhh9r9l6ywfwzz7f2nz0vr1fg3wqsdrchglw";
+}
+{
+  lang = "ru";
+  saneName = "ru";
+  sha256 = "0cq6xacyrb9wrrwbl8xrb2ah3h7s7a9vr7kz3fy5rf2rgq0phfd7";
+}
+{
+  lang = "sk";
+  saneName = "sk";
+  sha256 = "07i0plzmg0nykfalyjvwnhg5qrcfdf1h6i18b34xyrp3y4gm540a";
+}
+{
+  lang = "sl";
+  saneName = "sl";
+  sha256 = "0gw1iv550nr307ibgb8i48fxcq03liq5r2x7fr9pl0n9xknh3c8a";
+}
+{
+  lang = "sr";
+  saneName = "sr";
+  sha256 = "0489n0l9c9wig5567dfh4apyyy6xws7yxq79r4jl00zxl1j43bla";
+}
+{
+  lang = "sv";
+  saneName = "sv";
+  sha256 = "1n4ckll9ngj8qn976nikxfljf23qsvphblbjnjm0vk4713bnpf9h";
+}
+{
+  lang = "tr";
+  saneName = "tr";
+  sha256 = "0pzjdnanhynalcjlsg94g88i92hwdsqz02x85yxxg87vn74p13ks";
+}
+{
+  lang = "ug";
+  saneName = "ug";
+  sha256 = "1z9mjzh0w6i2a75ys0dx5ksm8fpwyw8wrwdh14bvbnxpnkx0jv8x";
+}
+{
+  lang = "uk";
+  saneName = "uk";
+  sha256 = "032vjcjpl19dyyc36z1nwyc9h696iys8dfyadpw9rhcllpk4ck67";
+}
+{
+  lang = "vi";
+  saneName = "vi";
+  sha256 = "0sd6vzb1qmbbxk6d1vfq21gkq009lp7qxnpdcr7jbykcf0licq7i";
+}
+{
+  lang = "wa";
+  saneName = "wa";
+  sha256 = "1m6fa0adfjzfqakjyrrjwak4p0y5wwdkkq61qx9wvzdb78qm83rw";
+}
+{
+  lang = "zh_CN";
+  saneName = "zh_CN";
+  sha256 = "11is37g7fafxhk7ydydgbxdg0x1s5cxr8v1pjzwqb858n1cq5x1h";
+}
+{
+  lang = "zh_TW";
+  saneName = "zh_TW";
+  sha256 = "1vbr0pjm8d25lxbmhqz8d4x57sjc411a5fkvyxh4rr34fd7xxhwq";
+}
+]
diff --git a/pkgs/desktops/kde-4.14/oxygen-icons.nix b/pkgs/desktops/kde-4.14/oxygen-icons.nix
new file mode 100644
index 000000000000..01020e095f91
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/oxygen-icons.nix
@@ -0,0 +1,15 @@
+{ kde, cmake }:
+
+kde {
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "06qddsbq0sadj9jh2x1qkbm69b7cnd2474b3h0zrzrqgnrsf8jn2";
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = {
+    description = "KDE Oxygen theme icons";
+    longDescription = "Icons for KDE's default theme";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.14/support/akonadi/default.nix b/pkgs/desktops/kde-4.14/support/akonadi/default.nix
new file mode 100644
index 000000000000..d51996e3bc1e
--- /dev/null
+++ b/pkgs/desktops/kde-4.14/support/akonadi/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, qt4, shared_mime_info, libxslt, boost, automoc4, soprano, sqlite }:
+
+stdenv.mkDerivation rec {
+  name = "akonadi-1.11.0";
+  
+  src = fetchurl {
+    url = "mirror://kde/stable/akonadi/src/${name}.tar.bz2";
+    sha256 = "0k96i8xq3xkm5rrxrj3zqgppcmqbzcpc918xnx0p54jkkm85gchc";
+  };
+
+  buildInputs = [ qt4 soprano libxslt boost sqlite ];
+
+  nativeBuildInputs = [ cmake automoc4 shared_mime_info ];
+
+  enableParallelBuilding = true;
+  
+  meta = with stdenv.lib; {
+    description = "KDE PIM Storage Service";
+    license = "LGPL";
+    homepage = http://pim.kde.org/akonadi;
+    maintainers = [ maintainers.sander maintainers.urkud maintainers.phreedom ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 82b06349a8db..6731759930ca 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11101,7 +11101,7 @@ let
 
   kde4 = recurseIntoAttrs pkgs.kde412;
 
-  kde4_next = recurseIntoAttrs( lib.lowPrioSet pkgs.kde412 );
+  kde4_next = recurseIntoAttrs( lib.lowPrioSet pkgs.kde414 );
 
   kde412 = kdePackagesFor (pkgs.kde412 // {
       eigen = eigen2;
@@ -11109,6 +11109,12 @@ let
       libcanberra = libcanberra_kde;
     }) ../desktops/kde-4.12;
 
+  kde414 = kdePackagesFor (pkgs.kde414 // {
+      eigen = eigen2;
+      libusb = libusb1;
+      libcanberra = libcanberra_kde;
+    }) ../desktops/kde-4.14;
+
   kdePackagesFor = self: dir:
     let callPackageOrig = callPackage; in
     let