summary refs log tree commit diff
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2012-01-06 21:50:10 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2012-01-06 21:50:10 +0000
commitb9c72433cca69c2afd6296b71a1066af78e941fe (patch)
tree71b17d6b2e068241d5ac0e8da62aebbf8b13eeb0
parent11f55d273ba35301ed25228ec4388a920a35fbd2 (diff)
downloadnixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar.gz
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar.bz2
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar.lz
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar.xz
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.tar.zst
nixlib-b9c72433cca69c2afd6296b71a1066af78e941fe.zip
Copy kde-4.7->kde-4.8
svn path=/nixpkgs/trunk/; revision=31380
-rw-r--r--pkgs/desktops/kde-4.8/default.nix56
-rw-r--r--pkgs/desktops/kde-4.8/files/polkit-install.patch12
-rw-r--r--pkgs/desktops/kde-4.8/kde-baseapps/kate.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kde-baseapps/kde-baseapps.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kde-baseapps/konsole.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kde-package/4.7.4.nix273
-rw-r--r--pkgs/desktops/kde-4.8/kde-package/default.nix127
-rwxr-xr-xpkgs/desktops/kde-4.8/kde-package/kde-manifest.sh145
-rw-r--r--pkgs/desktops/kde-4.8/kde-package/kde-submodules.xslt22
-rw-r--r--pkgs/desktops/kde-4.8/kde-runtime.nix16
-rw-r--r--pkgs/desktops/kde-4.8/kde-wallpapers.nix14
-rw-r--r--pkgs/desktops/kde-4.8/kde-workspace.nix32
-rw-r--r--pkgs/desktops/kde-4.8/kdeaccessibility/jovie.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeaccessibility/kaccessible.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeaccessibility/kmag.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeaccessibility/kmousetool.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeaccessibility/kmouth.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeadmin/kcron.nix5
-rw-r--r--pkgs/desktops/kde-4.8/kdeadmin/ksystemlog.nix5
-rw-r--r--pkgs/desktops/kde-4.8/kdeadmin/kuser.nix5
-rw-r--r--pkgs/desktops/kde-4.8/kdeadmin/system-config-printer-kde.nix33
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/ColorSchemes.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/FindXscreensaver.cmake73
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/HighResolutionWallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/IconThemes.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/WeatherWallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/aurorae.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/desktopthemes.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/emoticons.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/kscreensaver.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/kwin-styles.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/sounds.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/styles.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeartwork/wallpapers.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/perlqt.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/pykde-purity.patch49
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/pykde4.nix30
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/smokegen.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/smokekde.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdebindings/smokeqt.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/FindLibfacile.cmake32
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/blinken.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/cantor.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kalgebra.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kalzium-feature-log.patch15
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kalzium.nix15
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kanagram.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kbruch.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kgeography.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/khangman.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kig.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kiten.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/klettres.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kmplot.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kstars.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/ktouch.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kturtle.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/kwordquiz.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/libkdeedu.nix8
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/marble.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/parley.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/rocs.nix14
-rw-r--r--pkgs/desktops/kde-4.8/kdeedu/step.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdegames.nix18
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/gwenview.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kamera.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kcolorchooser.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-strigi-analyzer.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-thumbnailers.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kgamma.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kolourpaint.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/kruler.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/ksaneplugin.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/ksnapshot.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/libkdcraw.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/libkexiv2.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/libkipi.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/libksane.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/mobipocket.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/okular.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdegraphics/svgpart.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdelibs.nix39
-rw-r--r--pkgs/desktops/kde-4.8/kdemultimedia.nix16
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/FindmsiLBC.cmake19
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/filesharing.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kdenetwork.patch24
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kdnssd.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kfile-plugins.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kget.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kopete.nix21
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/kppp.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/krdc.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/krfb.nix7
-rw-r--r--pkgs/desktops/kde-4.8/kdenetwork/log-feature.diff60
-rw-r--r--pkgs/desktops/kde-4.8/kdepim-runtime.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdepim.nix21
-rw-r--r--pkgs/desktops/kde-4.8/kdepimlibs.nix16
-rw-r--r--pkgs/desktops/kde-4.8/kdeplasma-addons.nix18
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/cervisia.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-git.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-svn.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/find-svn.patch59
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kapptemplate.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kcachegrind.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kdeaccounts-plugin.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kioslave-perldoc.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kioslave-svn.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kmtrace.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kompare.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kpartloader.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kprofilemethod.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kstartperf.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/kuiviewer.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/lokalize.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/okteta.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/optional-docs.diff39
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/poxml.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/scripts.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/strigi-analyzer.nix13
-rw-r--r--pkgs/desktops/kde-4.8/kdesdk/umbrello.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdetoys/amor.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdetoys/kteatime.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdetoys/ktux.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/ark.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/filelight.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kcalc.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kcharselect.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kdf.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kfloppy.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kgpg.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kremotecontrol.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/ktimer.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/kwallet.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/printer-applet.nix28
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/superkaramba.nix11
-rw-r--r--pkgs/desktops/kde-4.8/kdeutils/sweeper.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kdewebdev/kfilereplace.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdewebdev/kimagemapeditor.nix10
-rw-r--r--pkgs/desktops/kde-4.8/kdewebdev/klinkstatus.nix12
-rw-r--r--pkgs/desktops/kde-4.8/kdewebdev/kommander.nix9
-rw-r--r--pkgs/desktops/kde-4.8/kipi-plugins.nix29
-rw-r--r--pkgs/desktops/kde-4.8/l10n/default.nix44
-rwxr-xr-xpkgs/desktops/kde-4.8/l10n/l10n-manifest.sh32
-rw-r--r--pkgs/desktops/kde-4.8/l10n/manifest-4.7.4.nix267
-rw-r--r--pkgs/desktops/kde-4.8/oxygen-icons.nix15
-rw-r--r--pkgs/desktops/kde-4.8/support/akonadi/default.nix24
146 files changed, 2806 insertions, 0 deletions
diff --git a/pkgs/desktops/kde-4.8/default.nix b/pkgs/desktops/kde-4.8/default.nix
new file mode 100644
index 000000000000..3bdf825410cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/default.nix
@@ -0,0 +1,56 @@
+{ callPackage, callPackageOrig, stdenv, qt47 }:
+
+let
+  release = "4.7.4";
+
+  # Need callPackageOrig to avoid infinite cycle
+  kde = callPackageOrig ./kde-package {
+    inherit release ignoreList extraSubpkgs callPackage;
+  };
+
+  # The list of igored individual modules
+  ignoreList = {
+    # kdeadmin/strigi-analyzer has no real code
+    kdeadmin = [ "strigi-analyzer" ];
+    # kdesdk/kioslave is splitted into kioslave-svn and kioslave-git
+    kdesdk = [ "kioslave" ];
+    # Most of kdebindings do not compile due to a bug in the buildsystem
+    kdebindings = [ "kimono" "korundum" "kross-interpreters" "perlkde" "perlqt"
+      "qtruby" "qyoto" "smokekde" ];
+  };
+
+  # Extra subpackages in the manifest format
+  extraSubpkgs = {
+    kdesdk =
+      [
+      {
+        name = "kioslave-svn";
+        sane = "kioslave_svn";
+        subdir = "kioslave";
+      }
+      {
+        name = "kioslave-perldoc";
+        sane = "kioslave_perldoc";
+        subdir = "kioslave";
+      }
+      ];
+  };
+
+in
+
+kde.modules // kde.individual //
+{
+  inherit (kde) manifest modules individual splittedModuleList;
+
+  akonadi = callPackage ./support/akonadi { };
+
+  qt4 = qt47;
+
+  kdebase_workspace = kde.modules.kde_workspace;
+
+  inherit release;
+
+  full = stdenv.lib.attrValues kde.modules;
+
+  l10n = callPackage ./l10n { inherit release; };
+}
diff --git a/pkgs/desktops/kde-4.8/files/polkit-install.patch b/pkgs/desktops/kde-4.8/files/polkit-install.patch
new file mode 100644
index 000000000000..d2ecac663ec5
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kde-baseapps/kate.nix b/pkgs/desktops/kde-4.8/kde-baseapps/kate.nix
new file mode 100644
index 000000000000..1ffbcf9ebf98
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-baseapps/kate.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Kate, the KDE Advanced Text Editor, as well as KWrite";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kde-baseapps/kde-baseapps.nix b/pkgs/desktops/kde-4.8/kde-baseapps/kde-baseapps.nix
new file mode 100644
index 000000000000..45192e0c4600
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-baseapps/kde-baseapps.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, shared_desktop_ontologies, glib, htmlTidy }:
+
+kde {
+  buildInputs = [ kdelibs shared_desktop_ontologies glib htmlTidy ];
+
+  meta = {
+    description = "Base KDE applications, including the Dolphin file manager and Konqueror web browser";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kde-baseapps/konsole.nix b/pkgs/desktops/kde-4.8/kde-baseapps/konsole.nix
new file mode 100644
index 000000000000..87ac24972bdb
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-baseapps/konsole.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde {
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Konsole, the KDE terminal emulator";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kde-package/4.7.4.nix b/pkgs/desktops/kde-4.8/kde-package/4.7.4.nix
new file mode 100644
index 000000000000..9a816b72cc68
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-package/4.7.4.nix
@@ -0,0 +1,273 @@
+{stable=true;
+hashes=builtins.listToAttrs[
+  {name="blinken";value="16daqg0bbkci305qrcrvpv66cvshjfni5rf5gakblcn8qqlmwsi6";}
+  {name="cantor";value="0wgm0j9bl632bk94fi0hzp5s392xpyz0d524ahhi8q33bqkl06ra";}
+  {name="gwenview";value="1dhpb7q0myr9rl4bjsajq0kslvhxcddv1ddplqad63j619wk8gfj";}
+  {name="kalgebra";value="04g07syrk14kpr15f9kgfkkmkjgdvcwmrykmy56jwm8sfb6ncli9";}
+  {name="kalzium";value="0k25cinwp6yjp8q9irmwcb1ahf98ck3mw706jfpybpa7ds8ym5z1";}
+  {name="kamera";value="0airyhxzpnvpzag4w0q1h0pc1lwwplglki5max1mj5miaxg93r34";}
+  {name="kanagram";value="0271aq39dbs92rhc83m19pmm7rx5c573k27931sf3j3pw3x2q0nm";}
+  {name="kate";value="0pfddi7g99apqipnqv62i86ld11vl4igqv65xprqqf0a5a1413my";}
+  {name="kbruch";value="1dhhk55d3bs474l2w0xma89pq74gklq5faskrvd1lvvl853z3zib";}
+  {name="kcolorchooser";value="1gb861f1fy0fvmkg30l1gza998gyhjwj4gcyyv266wp5v7d01xda";}
+  {name="kdeaccessibility";value="12mvs1hy5ygnbbz14hg2fvs7mpvlamkfbz7g7kcvzp0fkjb524h3";}
+  {name="kdeadmin";value="16y73zpdgh72cf8yz8zn246i4d8nh4k6mbz9cbc4ggjblgjcn3pr";}
+  {name="kdeartwork";value="0vfz9mzpm8yy6fysmhcavd8l1fjcld36p0x9qymi4l072b7dkgyv";}
+  {name="kde-baseapps";value="075m3nn407di2mx8w5lv7va3ij0yd7yb575wmf05vfqr01xyhn8a";}
+  {name="kdegames";value="0c42wyk2mq3hz99zg4f9i2dbc9vyaa5l2301j0859pwvnp9zgafz";}
+  {name="kdegraphics-strigi-analyzer";value="1j7chf76mlwrq7z1dgm525f5srx1h30czm8dnw2f0yxfn18lvnl9";}
+  {name="kdegraphics-thumbnailers";value="1ny51jc8fm4gldrlmrfmslpfpn5pahlyws3jzaj6nkd3hdw3krnr";}
+  {name="kdelibs";value="0fdgl8qvpyb9pmb26b3yjfm9ib75mxayw75qm5kyzncmrvn427gy";}
+  {name="kdemultimedia";value="0a0vp1pq159lzgd0x817p9mf6al99w1dwnlyhs9zfpspgz8nw8y1";}
+  {name="kdenetwork";value="0zwqbyl5vw5nnzlilc4khlisjj1xjpziw9ahgvw8cbszscmv68b5";}
+  {name="kdepim";value="0s38qxks58dmwyi3fnvprpq5q9kr17v31n808j33d50rw62y398p";}
+  {name="kdepimlibs";value="0rpfkc0pxvfkaz8pb3yx21dm3ixw8gfrcdny1aqzbn3f7f8abhip";}
+  {name="kdepim-runtime";value="14p5bxrhqjnmz303hxlrdj4vxlmiv8j04qni33ljbgib0hnllva3";}
+  {name="kdeplasma-addons";value="068m2jpyprrscyk3f4nk9qix5smka5pq59sdwdan9996sh256py5";}
+  {name="kde-runtime";value="06nxv46s7ff5n3kmzq3mdc16b0ck0411lj0gf3scdyd85iqx06wd";}
+  {name="kdesdk";value="0v3gwml9rvqz96q8jk8myqvl6gjw3q37js2jn24yawli3sjjw552";}
+  {name="kdetoys";value="17fk1bmabgj9nz0m4j248f48m2xfscql43wmzkqnr7y6zghqfhfh";}
+  {name="kdeutils";value="0s1whgg59xnc6ny609s3vjzvpxak02f2y6v7zw72i808k03aal5v";}
+  {name="kde-wallpapers";value="133amrhhca4xi0gbmajcc6rw1c1ai5x29265fqp45588kyycbgvz";}
+  {name="kdewebdev";value="1nqp2j09nr3jhmfvjydwp86jz4nn5pxwcfi6ww9krfd1hyg4aqjc";}
+  {name="kde-workspace";value="1dj39nndpws9grinz287ypn5lj3zjh96gl4zhl7kp6z8f9mdqp0p";}
+  {name="kgamma";value="05vk5b40w0i75nx5lqn9qax10m604jkjxyxynm0i0b8gyksv78h9";}
+  {name="kgeography";value="1a49zqz8zb9kn7m4m5fsm5ibvn9m5pzq89isrd1yy9q7zlv3qfqc";}
+  {name="khangman";value="1bmzrc5jzbw9q9gxw9pzad37zj4h89rh3k4smycif6ky2jy72x6d";}
+  {name="kig";value="1s0mwnj2riam811l0nfk08ja43f0nibqaqchy2ff7627w22yr5m0";}
+  {name="kimono";value="1cbbchdj4x5sn6ldkmzrx5alhvgzgbprvyjpg1rcsfnyc6whp2p9";}
+  {name="kiten";value="13bcw1r39h0g75vwbyrsh8sb27vmqsbrmx2ay621ily4iy3jn5az";}
+  {name="klettres";value="1wczh41wq3w5ccy2yi4pqr3zk4v0wiy4slcn54a8bfi1b5s1267j";}
+  {name="kmplot";value="0dx5gnya008q7smf74fvygwfsa0hc2ajiznvdmf4qmm3s5bxpbrr";}
+  {name="kolourpaint";value="14zrh321av5f5i8a4bjj7xb1sqfcphzhc5qyg2w54cywaiswy8nx";}
+  {name="konsole";value="1wq2k8g6in86x72jzhz4ar8ba5lyjp0pia969wxa6b1vsj148ipy";}
+  {name="korundum";value="024daf05c9l83whcy0cfgxb3s24ci038kg1pnxlzz4z9sk39432r";}
+  {name="kross-interpreters";value="1kkg4w3id2g7nr89kjdgyy9hik75dnxlm6jmn3g8ilqdvw5ip1qx";}
+  {name="kruler";value="0wd805w2k1ask9l44z50jcd033zkbaxs3xd3w21qrwdvs52x8m41";}
+  {name="ksaneplugin";value="1rxpl6f5b0ld5ap6aag892rjd7r74szbzd6lqw8q8gzm6jmk34gq";}
+  {name="ksnapshot";value="0dn99b6qr4b4hc3c88m26axmb3jim836ig3mfgqpban9r7k15xci";}
+  {name="kstars";value="0zrw4rlfm5cwfbj884zn50sdp90zjg7inl9k2zj450dpvh7i6q3q";}
+  {name="ktouch";value="0vbzr69jbci058bcphf9i3fh40hwgrmcyj1n4gj90gwr4x2ha5hp";}
+  {name="kturtle";value="0mhg2b1jbywafnj93274yimvnaxivycqj98pvld3hppaq32f7vzp";}
+  {name="kwordquiz";value="0kfa83a91w8z39r55456i1vn85pb4dqrbav40sx5fhjb03iyrsdk";}
+  {name="libkdcraw";value="14y8ni9w441zx1k2fhcbnzpa1vcmpvk58mjdqrqvn8n630cy0hzn";}
+  {name="libkdeedu";value="1ga88g5s8mq1m8xwmhl09ylrnl8sw639cpah6wi8wwnqslj2zj0a";}
+  {name="libkexiv2";value="0w8mpjsiw2sr8ya7ffnvnprbsbi8ngpxrcxylgw617zcxpxky6ha";}
+  {name="libkipi";value="01fivyyg5jhnkn9r7bh96ygxvnh7a99h11wh228wk8nzx3i63lsc";}
+  {name="libksane";value="0bb26ajfmknxf4hdy513zx1q9j0hzrs0dr98vxmrwfxxbza67fbm";}
+  {name="marble";value="02yljp6lmqs753zkqpaz58zlrjjxydx9pizppzwjvjx8xk63b9z6";}
+  {name="mobipocket";value="0m08j4cdj2sr1xw3hi0zy651c2ap0q8y9s913r6ccm0f292n0856";}
+  {name="okular";value="03x1fgdnz0s17wj3pkdp77rqrbbb6ssgq0ly493pbi1x4lx768ib";}
+  {name="oxygen-icons";value="0ayx0y2swdcgz4wd1idkhm3gbixkn4mw89f1hrhrdvc6j7wdn2dj";}
+  {name="parley";value="0wgps4adiwaq3l471ig9j56vm7p2xf37779nlhfzavby622lyv8q";}
+  {name="perlkde";value="1psa8ca2ynmavhmbh5p8bgxiljiqj6figi3cmvkaa7ksnmg2p9a3";}
+  {name="perlqt";value="1v12vx46kmg9cgld7krphcqp97y0py1bc3s2gd6jbz5j48g1wznb";}
+  {name="pykde4";value="07c7rzi0rzafrh92m57ldz3v66v8996zqpgcqn351jfycwccg7pz";}
+  {name="qtruby";value="05j08dfqbqnj92k9n70x8yiiaxyk6p9sk3lwm8w8nhsxdciq8yny";}
+  {name="qyoto";value="1maq0c6qb618jiqrdfp4imq3x7x5rdgf80wbrsf8wmaz3iwg18jz";}
+  {name="rocs";value="0qqzfxas64jz95v8i0birbcp0azk01jx5ic6pny7szngwrms6k34";}
+  {name="smokegen";value="0rdaxss113l80gmzp71ngp1l07nn2ip5nhk0a3mmjkvd08i507i8";}
+  {name="smokekde";value="0cxd5y1i672wc295m2czvp5jry1lmvv88dkipd97368gxsqzd3q8";}
+  {name="smokeqt";value="0ll1q87y1sdmna4iac61cm6sn7imsfvcfq573cj7f5raqn08gbpf";}
+  {name="step";value="000a0hc45znshwrjsydrf05f5rwn7lmaiqbk65py827fgk67qkyb";}
+  {name="svgpart";value="056h2ynbl6ylfpf5a2l0qjasnicwx2yzizgd21pprzl9n7708zcw";}
+];
+modules=[
+{
+  module="kdegraphics";
+  split=true;
+  pkgs=[
+    { name="gwenview";  }
+    { name="kamera";  }
+    { name="kcolorchooser";  }
+    { 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="mobipocket";  }
+    { name="okular";  }
+    { name="svgpart";  }
+  ];
+}
+{
+  module="kdeedu";
+  split=true;
+  pkgs=[
+    { 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="parley";  }
+    { name="rocs";  }
+    { name="step";  }
+  ];
+}
+{
+  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="kde-baseapps";
+sane="kde_baseapps";  split=true;
+  pkgs=[
+    { name="kate";  }
+    { name="kde-baseapps"; sane="kde_baseapps"; }
+    { name="konsole";  }
+  ];
+}
+{ module="kdeaccessibility";  split=false;
+  pkgs=[
+    { name="kaccessible"; }
+    { name="kmag"; }
+    { name="kmouth"; }
+    { name="kmousetool"; }
+    { name="jovie"; }
+  ];
+
+}
+{ module="kdeadmin";  split=false;
+  pkgs=[
+    { name="strigi-analyzer"; sane="strigi_analyzer";}
+    { name="kuser"; }
+    { name="kcron"; }
+    { name="ksystemlog"; }
+    { name="system-config-printer-kde"; sane="system_config_printer_kde";}
+  ];
+
+}
+{ module="kdeartwork";  split=false;
+  pkgs=[
+    { name="ColorSchemes"; }
+    { name="IconThemes"; }
+    { name="emoticons"; }
+    { name="kscreensaver"; }
+    { name="kwin-styles"; sane="kwin_styles";}
+    { name="sounds"; }
+    { name="styles"; }
+    { name="wallpapers"; }
+    { name="HighResolutionWallpapers"; }
+    { name="WeatherWallpapers"; }
+    { name="desktopthemes"; }
+    { name="aurorae"; }
+  ];
+
+}
+{ module="kdegames";  split=false;}
+{ module="kdelibs";  split=false;}
+{ module="kdemultimedia";  split=false;}
+{ module="kdenetwork";  split=false;
+  pkgs=[
+    { name="kfile-plugins"; sane="kfile_plugins";}
+    { name="kget"; }
+    { name="kopete"; }
+    { name="krdc"; }
+    { name="kppp"; }
+    { name="krfb"; }
+    { name="kdnssd"; }
+    { name="filesharing"; }
+  ];
+
+}
+{ 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="kdesdk";  split=false;
+  pkgs=[
+    { name="cervisia"; }
+    { name="lokalize"; }
+    { name="kdeaccounts-plugin"; sane="kdeaccounts_plugin";}
+    { name="dolphin-plugins-svn"; sane="dolphin_plugins_svn";subdir="dolphin-plugins/svn"; }
+    { name="dolphin-plugins-git"; sane="dolphin_plugins_git";subdir="dolphin-plugins/git"; }
+    { name="kcachegrind"; }
+    { name="kapptemplate"; }
+    { name="kpartloader"; }
+    { name="strigi-analyzer"; sane="strigi_analyzer";}
+    { name="kioslave"; }
+    { name="okteta"; }
+    { name="kmtrace"; }
+    { name="kompare"; }
+    { name="kprofilemethod"; }
+    { name="kstartperf"; }
+    { name="kuiviewer"; }
+    { name="poxml"; }
+    { name="scripts"; }
+    { name="umbrello"; }
+  ];
+
+}
+{ module="kdetoys";  split=false;
+  pkgs=[
+    { name="kteatime"; }
+    { name="ktux"; }
+    { name="amor"; }
+  ];
+
+}
+{ module="kdeutils";  split=false;
+  pkgs=[
+    { name="ark"; }
+    { name="kcalc"; }
+    { name="kremotecontrol"; }
+    { name="kdf"; }
+    { name="kfloppy"; }
+    { name="printer-applet"; sane="printer_applet";}
+    { name="filelight"; }
+    { name="kcharselect"; }
+    { name="kgpg"; }
+    { name="ktimer"; }
+    { name="kwallet"; }
+    { name="sweeper"; }
+    { name="superkaramba"; }
+  ];
+
+}
+{ 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.8/kde-package/default.nix b/pkgs/desktops/kde-4.8/kde-package/default.nix
new file mode 100644
index 000000000000..38713de5820a
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-package/default.nix
@@ -0,0 +1,127 @@
+{ callPackage, runCommand, stdenv, fetchurl, qt4, cmake, automoc4
+, release, 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.bz2";
+    sha256 = getAttr name manifest.hashes;
+  };
+
+  # Default meta attribute
+  defMeta = {
+    homepage = http://www.kde.org;
+    inherit (qt4.meta) platforms 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_, ...}:
+    stdenv.mkDerivation ({
+      name = "${name}-${release}";
+      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.bz2
+  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 = 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.8/kde-package/kde-manifest.sh b/pkgs/desktops/kde-4.8/kde-package/kde-manifest.sh
new file mode 100755
index 000000000000..910394fb6a33
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-package/kde-manifest.sh
@@ -0,0 +1,145 @@
+#! /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.bz2 | \
+  sed -e 's/.*kdelibs-//' -e 's/\.tar\.bz2//')
+
+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
+
+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.bz2`; do
+  package=${i%-${release}.tar.bz2}
+  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.bz2" "$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.8/kde-package/kde-submodules.xslt b/pkgs/desktops/kde-4.8/kde-package/kde-submodules.xslt
new file mode 100644
index 000000000000..952a05a9d274
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kde-runtime.nix b/pkgs/desktops/kde-4.8/kde-runtime.nix
new file mode 100644
index 000000000000..96b6c3a1c784
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-runtime.nix
@@ -0,0 +1,16 @@
+{ kde, kdelibs, shared_desktop_ontologies, bzip2, xz, libssh, exiv2, attica
+, libcanberra, virtuoso, samba, ntrack
+}:
+
+kde {
+  buildInputs =
+    [ kdelibs shared_desktop_ontologies bzip2 xz libssh exiv2 attica
+      samba (libcanberra.override { gtk = null; }) ntrack
+    ];
+
+  passthru.propagatedUserEnvPackages = [ virtuoso ];
+
+  meta = {
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kde-wallpapers.nix b/pkgs/desktops/kde-4.8/kde-wallpapers.nix
new file mode 100644
index 000000000000..60298e567fbc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-wallpapers.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs }:
+
+kde {
+
+  buildInputs = [ kdelibs ];
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "29f4e8b24435ee8c64affdc6250f59ed9f78445118fe0a4e216d89969dd2006b";
+
+  meta = {
+    description = "Wallpapers for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kde-workspace.nix b/pkgs/desktops/kde-4.8/kde-workspace.nix
new file mode 100644
index 000000000000..55c243f60dd9
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-workspace.nix
@@ -0,0 +1,32 @@
+{ kde, kdelibs, qimageblitz, libdbusmenu_qt, xorg, shared_desktop_ontologies,
+  lm_sensors, pciutils, libraw1394, libusb, libxklavier, python, libqalculate,
+  consolekit, xkeyboard_config, kdepimlibs, pam, boost, gpsd, prison, akonadi,
+  pykde4
+}:
+
+kde {
+
+  buildInputs =
+    [ kdelibs qimageblitz libdbusmenu_qt pykde4
+      xorg.libxkbfile xorg.libXcomposite xorg.libXScrnSaver xorg.libXtst
+      xorg.libXcomposite xorg.libXdamage xorg.libXau xorg.libXdmcp
+      xorg.libpthreadstubs
+      boost gpsd shared_desktop_ontologies lm_sensors pciutils libraw1394
+      libusb python libqalculate consolekit kdepimlibs pam prison akonadi
+    ];
+
+  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
+   '';
+
+  meta = {
+    description = "KDE workspace components such as Plasma, Kwin and System Settings";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeaccessibility/jovie.nix b/pkgs/desktops/kde-4.8/kdeaccessibility/jovie.nix
new file mode 100644
index 000000000000..d38c80c4c36a
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeaccessibility/kaccessible.nix b/pkgs/desktops/kde-4.8/kdeaccessibility/kaccessible.nix
new file mode 100644
index 000000000000..98fae7c983f8
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeaccessibility/kmag.nix b/pkgs/desktops/kde-4.8/kdeaccessibility/kmag.nix
new file mode 100644
index 000000000000..f3b27dacf672
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeaccessibility/kmag.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Screen magnifier for KDE";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeaccessibility/kmousetool.nix b/pkgs/desktops/kde-4.8/kdeaccessibility/kmousetool.nix
new file mode 100644
index 000000000000..42306049c5d5
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeaccessibility/kmousetool.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libXtst }:
+
+kde {
+  buildInputs = [ kdelibs libXtst ];
+
+  meta = {
+    description = "A program that clicks the mouse for you";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeaccessibility/kmouth.nix b/pkgs/desktops/kde-4.8/kdeaccessibility/kmouth.nix
new file mode 100644
index 000000000000..4159501967cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeadmin/kcron.nix b/pkgs/desktops/kde-4.8/kdeadmin/kcron.nix
new file mode 100644
index 000000000000..bada0c1cb108
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeadmin/kcron.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdeadmin/ksystemlog.nix b/pkgs/desktops/kde-4.8/kdeadmin/ksystemlog.nix
new file mode 100644
index 000000000000..bada0c1cb108
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeadmin/ksystemlog.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdeadmin/kuser.nix b/pkgs/desktops/kde-4.8/kdeadmin/kuser.nix
new file mode 100644
index 000000000000..571674a461ad
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeadmin/kuser.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs, kdepimlibs }:
+
+kde {
+  buildInputs = [ kdelibs kdepimlibs ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdeadmin/system-config-printer-kde.nix b/pkgs/desktops/kde-4.8/kdeadmin/system-config-printer-kde.nix
new file mode 100644
index 000000000000..2c462f67c159
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeadmin/system-config-printer-kde.nix
@@ -0,0 +1,33 @@
+{ kde, pkgconfig, pythonPackages, sip, pycups, pygobject, system_config_printer,
+  kdelibs, kdepimlibs, pykde4, cups, nettools }:
+
+let s_c_p = system_config_printer.override { withGUI = false; }; in
+kde {
+  buildInputs = [ kdelibs kdepimlibs pythonPackages.python pycups pykde4 sip
+    pygobject s_c_p ];
+
+  passthru = { system_config_printer = s_c_p; };
+
+  preConfigure =
+    ''
+      for i in system-config-printer-kde/cmake-modules/FindSystemConfigPrinter.py system-config-printer-kde/system-config-printer-kde.py; do
+        substituteInPlace $i \
+          --replace /usr/share/system-config-printer ${s_c_p}/share/system-config-printer \
+          --replace /usr/bin/cupstestppd ${cups}/bin/cupstestppd \
+          --replace /bin/hostname ${nettools}/bin/hostname
+      done
+    '';
+
+  postInstall =
+    ''
+      # Bake the required Python path into the printer configuration program.
+      res=
+      for i in $(IFS=:; echo $PYTHONPATH); do res="$res''${res:+,} '$i'"; done
+
+      sed -i $out/share/apps/system-config-printer-kde/system-config-printer-kde.py \
+          -e "1 a import sys\nsys.path = [$res] + sys.path"
+
+      mkdir -p $out/nix-support
+      echo ${pykde4} > $out/nix-support/propagated-user-env-packages
+    '';
+}
diff --git a/pkgs/desktops/kde-4.8/kdeartwork/ColorSchemes.nix b/pkgs/desktops/kde-4.8/kdeartwork/ColorSchemes.nix
new file mode 100644
index 000000000000..acccf66976fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/FindXscreensaver.cmake b/pkgs/desktops/kde-4.8/kdeartwork/FindXscreensaver.cmake
new file mode 100644
index 000000000000..499ed75268e9
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/HighResolutionWallpapers.nix b/pkgs/desktops/kde-4.8/kdeartwork/HighResolutionWallpapers.nix
new file mode 100644
index 000000000000..edffca1562e1
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/IconThemes.nix b/pkgs/desktops/kde-4.8/kdeartwork/IconThemes.nix
new file mode 100644
index 000000000000..43071e8bd142
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/WeatherWallpapers.nix b/pkgs/desktops/kde-4.8/kdeartwork/WeatherWallpapers.nix
new file mode 100644
index 000000000000..947e5e17ab0c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/aurorae.nix b/pkgs/desktops/kde-4.8/kdeartwork/aurorae.nix
new file mode 100644
index 000000000000..4bce95217cc6
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeartwork/aurorae.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+  name = "aurorae-themes";
+
+  buildInputs = [ kdelibs ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdeartwork/desktopthemes.nix b/pkgs/desktops/kde-4.8/kdeartwork/desktopthemes.nix
new file mode 100644
index 000000000000..93dd361af738
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/emoticons.nix b/pkgs/desktops/kde-4.8/kdeartwork/emoticons.nix
new file mode 100644
index 000000000000..5ef9f78a7195
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/kscreensaver.nix b/pkgs/desktops/kde-4.8/kdeartwork/kscreensaver.nix
new file mode 100644
index 000000000000..cc195c8de903
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeartwork/kscreensaver.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, xscreensaver, kde_workspace, eigen, libkexiv2 }:
+
+kde {
+  buildInputs = [ kdelibs xscreensaver kde_workspace eigen libkexiv2 ];
+
+  preConfigure = "cp -v ${./FindXscreensaver.cmake} cmake/modules/FindXscreensaver.cmake";
+
+  cmakeFlags = [ "-DBUILD_asciiquarium:BOOL=ON" ];
+
+  meta = {
+    description = "KDE screensavers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeartwork/kwin-styles.nix b/pkgs/desktops/kde-4.8/kdeartwork/kwin-styles.nix
new file mode 100644
index 000000000000..b5d769b216db
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/sounds.nix b/pkgs/desktops/kde-4.8/kdeartwork/sounds.nix
new file mode 100644
index 000000000000..e98705da889e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeartwork/sounds.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kde-sounds";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "New login/logout sounds";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeartwork/styles.nix b/pkgs/desktops/kde-4.8/kdeartwork/styles.nix
new file mode 100644
index 000000000000..6a1306c37100
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeartwork/wallpapers.nix b/pkgs/desktops/kde-4.8/kdeartwork/wallpapers.nix
new file mode 100644
index 000000000000..611c6a70f6bc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeartwork/wallpapers.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs }:
+
+kde rec {
+  name = "kde-wallpapers";
+
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Additional KDE wallpapers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdebindings/perlqt.nix b/pkgs/desktops/kde-4.8/kdebindings/perlqt.nix
new file mode 100644
index 000000000000..13c145f32753
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/perlqt.nix
@@ -0,0 +1,10 @@
+{ kde, cmake, smokeqt, perl }:
+
+kde {
+  buildInputs = [ smokeqt perl ];
+  buildNativeInputs = [ cmake ];
+
+  meta = {
+    description = "Perl bindings for Qt library";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdebindings/pykde-purity.patch b/pkgs/desktops/kde-4.8/kdebindings/pykde-purity.patch
new file mode 100644
index 000000000000..dfc2c886bba3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/pykde-purity.patch
@@ -0,0 +1,49 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c853e38..5df3253 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -73,7 +73,7 @@ INCLUDE_DIRECTORIES(
+     ${QT_QTWEBKIT_INCLUDE_DIR}
+     ${KDE4_INCLUDE_DIR}
+     ${KDE4_INCLUDE_DIR}/solid
+-    ${KDE4_INCLUDE_DIR}/phonon
++	${PHONON_INCLUDE_DIR}/phonon
+     ${KDE4_INCLUDE_DIR}/kio
+     ${KDE4_INCLUDE_DIR}/kdeprint
+     ${KDE4_INCLUDE_DIR}/kdeprint/lpr
+@@ -232,7 +232,7 @@ _pkg_config = {
+     'pykde_kde_sip_flags':  '${_SIP_TAGS} ${_SIP_X} ${SIP_EXTRA_OPTIONS}',
+     'pykde_mod_dir':        '${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4',
+     'pykde_modules':        '${PYKDE_MODULES}',
+-    'pykde_sip_dir':        '${SIP_DEFAULT_SIP_DIR}/PyKDE4',
++    'pykde_sip_dir':        '${CMAKE_INSTALL_PREFIX}/share/sip/PyKDE4',
+     'pykde_version':        kde_version_hex,
+     'pykde_version_str':    '${KDE_VERSION}'
+ }
+@@ -244,7 +244,7 @@ PYTHON_INSTALL(${CMAKE_CURRENT_BINARY_DIR}/pykdeconfig.py ${PYTHON_SITE_PACKAGES
+ 
+ # Install the .sip files for anyone that wants to build bindings on top of PyKDE4.
+ # (Don't forget the / at the end of sip/.)
+-INSTALL(DIRECTORY sip/ DESTINATION ${SIP_DEFAULT_SIP_DIR}/PyKDE4
++INSTALL(DIRECTORY sip/ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/sip/PyKDE4
+     PATTERN "*~" EXCLUDE    # This sucks, why can't I just whitelist what I _do_ want?
+     PATTERN ".svn" EXCLUDE
+     PATTERN "*.in" EXCLUDE)
+diff --git a/kpythonpluginfactory/CMakeLists.txt b/kpythonpluginfactory/CMakeLists.txt
+index 41fa0fe..642d867 100644
+--- a/kpythonpluginfactory/CMakeLists.txt
++++ b/kpythonpluginfactory/CMakeLists.txt
+@@ -3,7 +3,12 @@
+ set(kpythonpluginfactory_SRCS
+     kpythonpluginfactory.cpp)
+ 
+-GET_FILENAME_COMPONENT(LIB_PYTHON ${PYTHON_LIBRARY} NAME)
++option(HARDCODE_LIB_PYTHON_PATH "Whether the path to libpython.so should be hardcoded" OFF)
++if(HARDCODE_LIB_PYTHON_PATH)
++	get_filename_component(LIB_PYTHON ${PYTHON_LIBRARY} REALPATH)
++else(HARDCODE_LIB_PYTHON_PATH)
++    get_filename_component(LIB_PYTHON ${PYTHON_LIBRARY} NAME)
++endif(HARDCODE_LIB_PYTHON_PATH)
+ ADD_DEFINITIONS(-DLIB_PYTHON=\\"${LIB_PYTHON}\\")
+ ADD_DEFINITIONS(-DKDE_DEFAULT_DEBUG_AREA=15000)
+ 
diff --git a/pkgs/desktops/kde-4.8/kdebindings/pykde4.nix b/pkgs/desktops/kde-4.8/kdebindings/pykde4.nix
new file mode 100644
index 000000000000..1ca6efe3b920
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/pykde4.nix
@@ -0,0 +1,30 @@
+{ kde, kdelibs, python, sip, pyqt4, kdepimlibs, shared_desktop_ontologies,
+  boost, lndir }:
+
+let pydir = "lib/python${python.majorVersion}"; in
+
+kde {
+  buildInputs = [ python kdepimlibs shared_desktop_ontologies boost ];
+
+  propagatedBuildInputs = [ pyqt4 sip ];
+
+#NIX_CFLAGS_COMPILE = "-I${phonon}/include/phonon";
+
+  patches = [ ./pykde-purity.patch ];
+
+  cmakeFlags = "-DHARDCODE_LIB_PYTHON_PATH=ON";
+
+  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}
+    '';
+
+  meta = {
+    description = "Python bindings for KDE";
+    kde.name = "pykde4";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdebindings/smokegen.nix b/pkgs/desktops/kde-4.8/kdebindings/smokegen.nix
new file mode 100644
index 000000000000..df26eb2717eb
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/smokegen.nix
@@ -0,0 +1,13 @@
+{ kde, qt4, cmake }:
+
+kde {
+  buildInputs = [ qt4 ];
+  buildNativeInputs = [ cmake ];
+
+  patchPhase = "sed -e /RPATH/d -i CMakeLists.txt";
+
+  meta = {
+    description = "C++ parser used to generate language bindings for Qt/KDE";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdebindings/smokekde.nix b/pkgs/desktops/kde-4.8/kdebindings/smokekde.nix
new file mode 100644
index 000000000000..c49a77a48ed6
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/smokekde.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, smokeqt }:
+
+kde {
+  propagatedBuildInputs = [ kdelibs smokeqt ];
+
+  meta = {
+    description = "C++ parser used to generate language bindings for Qt/KDE";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdebindings/smokeqt.nix b/pkgs/desktops/kde-4.8/kdebindings/smokeqt.nix
new file mode 100644
index 000000000000..0d0aa816a941
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdebindings/smokeqt.nix
@@ -0,0 +1,12 @@
+{ kde, qt4, cmake, phonon, qimageblitz, smokegen }:
+
+kde {
+  propagatedBuildInputs = [ qt4 phonon qimageblitz ];
+  buildNativeInputs = [ cmake ];
+  propagatedBuildNativeInputs = [ smokegen ];
+
+  meta = {
+    description = "C++ parser used to generate language bindings for Qt/KDE";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/FindLibfacile.cmake b/pkgs/desktops/kde-4.8/kdeedu/FindLibfacile.cmake
new file mode 100644
index 000000000000..617eb4b24676
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/FindLibfacile.cmake
@@ -0,0 +1,32 @@
+# - Try to find Libfacile
+# Once done this will define
+#
+#  LIBFACILE_FOUND - system has Libfacile
+#  LIBFACILE_INCLUDE_DIR - the Libfacile include directory
+#  LIBFACILE_LIBRARIES - Link these to use Libfacile
+#
+# Copyright (c) 2006, Carsten Niehaus, <cniehaus@gmx.de>
+# Copyright (c) 2006, Montel Laurent, <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.
+
+
+find_package(OCaml)
+
+if( OCAML_FOUND )
+   find_library(LIBFACILE_LIBRARIES NAMES facile.a
+       HINTS ${OCAMLC_DIR}
+       PATH_SUFFIXES facile ocaml/facile
+   )
+   find_path(LIBFACILE_INCLUDE_DIR NAMES facile.cmi
+       HINTS ${OCAMLC_DIR}
+       PATH_SUFFIXES facile lib/ocaml/facile
+   )
+endif(OCAML_FOUND)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Libfacile DEFAULT_MSG LIBFACILE_INCLUDE_DIR
+	LIBFACILE_LIBRARIES OCAML_FOUND)
+
+# show the LIBFACILE_INCLUDE_DIR and LIBFACILE_LIBRARIES variables only in the advanced view
+mark_as_advanced(LIBFACILE_INCLUDE_DIR LIBFACILE_LIBRARIES )
diff --git a/pkgs/desktops/kde-4.8/kdeedu/blinken.nix b/pkgs/desktops/kde-4.8/kdeedu/blinken.nix
new file mode 100644
index 000000000000..cdf9728833c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/blinken.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Memory Enhancement Game";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/cantor.nix b/pkgs/desktops/kde-4.8/kdeedu/cantor.nix
new file mode 100644
index 000000000000..8b8bbc210c75
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/cantor.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libspectre }:
+kde {
+  buildInputs = [ kdelibs libspectre ];
+
+  meta = {
+    description = "KDE Frontend to Mathematical Software";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kalgebra.nix b/pkgs/desktops/kde-4.8/kdeedu/kalgebra.nix
new file mode 100644
index 000000000000..f1a190332cdc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kalgebra.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdeedu, readline }:
+kde {
+  buildInputs = [ kdelibs libkdeedu readline ];
+
+  meta = {
+    description = "2D and 3D Graph Calculator";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kalzium-feature-log.patch b/pkgs/desktops/kde-4.8/kdeedu/kalzium-feature-log.patch
new file mode 100644
index 000000000000..3c054e8d60ab
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kalzium-feature-log.patch
@@ -0,0 +1,15 @@
+commit d96c6e70400dcd4e3514065e607388b80f96d6a1
+Author: Yury G. Kudryashov <urkud.urkud@gmail.com>
+Date:   Mon Aug 15 00:53:16 2011 +0400
+
+    Display feature log
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 132934c..eec6942 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -47,3 +47,4 @@ add_subdirectory(src)
+ add_subdirectory(data)
+ add_subdirectory(plasmoid)
+ add_subdirectory(libscience)
++macro_display_feature_log()
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kalzium.nix b/pkgs/desktops/kde-4.8/kdeedu/kalzium.nix
new file mode 100644
index 000000000000..d7d9b403b1a4
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kalzium.nix
@@ -0,0 +1,15 @@
+{ kde, kdelibs, facile, ocaml, eigen, openbabel, avogadro }:
+kde {
+  buildInputs = [ kdelibs facile ocaml eigen openbabel avogadro ];
+
+  prePatch = ''
+    cp -v ${./FindLibfacile.cmake} cmake/modules/FindLibfacile.cmake
+    sed -e 's/\+facile/''${LIBFACILE_INCLUDE_DIR}/' -i src/CMakeOCamlInstructions.cmake
+    '';
+
+  patches = [ ./kalzium-feature-log.patch ];
+
+  meta = {
+    description = "Periodic Table of Elements";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kanagram.nix b/pkgs/desktops/kde-4.8/kdeedu/kanagram.nix
new file mode 100644
index 000000000000..8759c96d78c4
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/kbruch.nix b/pkgs/desktops/kde-4.8/kdeedu/kbruch.nix
new file mode 100644
index 000000000000..dc50f1e85a37
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kbruch.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Practice Fractions";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kgeography.nix b/pkgs/desktops/kde-4.8/kdeedu/kgeography.nix
new file mode 100644
index 000000000000..bd8d27c8d6e2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kgeography.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Geography Trainer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/khangman.nix b/pkgs/desktops/kde-4.8/kdeedu/khangman.nix
new file mode 100644
index 000000000000..997b50e906a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/kig.nix b/pkgs/desktops/kde-4.8/kdeedu/kig.nix
new file mode 100644
index 000000000000..bd5ef67529cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kig.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, boost, python}:
+kde {
+  buildInputs = [ kdelibs boost python ];
+
+  cmakeFlags = ''
+    -DBOOST_PYTHON_INCLUDES:PATH=${boost}/include;${python}/include/${python.libPrefix}
+    -DBOOST_PYTHON_LIBS=boost_python;${python.libPrefix} -DKIG_ENABLE_PYTHON_SCRIPTING=1
+    '';
+  meta = {
+    description = "KDE Interactive Geometry";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kiten.nix b/pkgs/desktops/kde-4.8/kdeedu/kiten.nix
new file mode 100644
index 000000000000..939b7a9f77a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/klettres.nix b/pkgs/desktops/kde-4.8/kdeedu/klettres.nix
new file mode 100644
index 000000000000..7a0fa83078e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/kmplot.nix b/pkgs/desktops/kde-4.8/kdeedu/kmplot.nix
new file mode 100644
index 000000000000..18458cf6f0bf
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kmplot.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A KDE mathematical function plotter";
+    kde = {
+      name = "kmplot";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kstars.nix b/pkgs/desktops/kde-4.8/kdeedu/kstars.nix
new file mode 100644
index 000000000000..5b5a2d621de7
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kstars.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, eigen, xplanet, indilib }:
+
+kde {
+  buildInputs = [ kdelibs eigen xplanet indilib ];
+
+  meta = {
+    description = "A KDE graphical desktop planetarium";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/ktouch.nix b/pkgs/desktops/kde-4.8/kdeedu/ktouch.nix
new file mode 100644
index 000000000000..768be6f4367c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/ktouch.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Touch Typing Tutor";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kturtle.nix b/pkgs/desktops/kde-4.8/kdeedu/kturtle.nix
new file mode 100644
index 000000000000..1e1922b1410d
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kturtle.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Educational Programming Environment";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/kwordquiz.nix b/pkgs/desktops/kde-4.8/kdeedu/kwordquiz.nix
new file mode 100644
index 000000000000..1b33ba2e469f
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/libkdeedu.nix b/pkgs/desktops/kde-4.8/kdeedu/libkdeedu.nix
new file mode 100644
index 000000000000..def6c85fefe2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeedu/marble.nix b/pkgs/desktops/kde-4.8/kdeedu/marble.nix
new file mode 100644
index 000000000000..8bd86c91094e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/marble.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, gpsd }:
+
+kde {
+  buildInputs = [ kdelibs gpsd ];
+
+  meta = {
+    description = "Marble Virtual Globe";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/parley.nix b/pkgs/desktops/kde-4.8/kdeedu/parley.nix
new file mode 100644
index 000000000000..eccd40a598f0
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/parley.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libkdeedu, libxml2, attica }:
+
+kde {
+  buildInputs = [ kdelibs libkdeedu libxml2 attica ];
+
+  meta = {
+    description = "Vocabulary Trainer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/rocs.nix b/pkgs/desktops/kde-4.8/kdeedu/rocs.nix
new file mode 100644
index 000000000000..91976b840011
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/rocs.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs, boost }:
+
+kde {
+  buildInputs = [ kdelibs (boost.override { enableExceptions = true; }) ];
+
+  NIX_CFLAGS_COMPILE = "-fexceptions";
+
+  meta = {
+    description = "A KDE graph theory viewer";
+    kde = {
+      name = "rocs";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeedu/step.nix b/pkgs/desktops/kde-4.8/kdeedu/step.nix
new file mode 100644
index 000000000000..fac9974baf18
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/step.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, gsl, libqalculate, eigen }:
+
+kde {
+  buildInputs = [ kdelibs gsl libqalculate eigen ];
+
+  meta = {
+    description = "A KDE interactive physical simulator";
+    kde = {
+      name = "step";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegames.nix b/pkgs/desktops/kde-4.8/kdegames.nix
new file mode 100644
index 000000000000..3378a99d9e79
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegames.nix
@@ -0,0 +1,18 @@
+{ kde, kdelibs, qca2, twisted, pythonPackages, sip, makeWrapper, pykde4,
+  openal, libsndfile, qhull }:
+
+kde rec {
+  buildInputs = [ kdelibs qca2 pythonPackages.python pythonPackages.wrapPython
+    openal libsndfile qhull ] ++ pythonPath;
+
+  pythonPath = [ pythonPackages.twisted pykde4 ];
+
+  # TODO: ggz
+
+  postInstall = "wrapPythonPrograms";
+
+  meta = {
+    description = "KDE Games";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/gwenview.nix b/pkgs/desktops/kde-4.8/kdegraphics/gwenview.nix
new file mode 100644
index 000000000000..efc2707e7d69
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/gwenview.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, exiv2, shared_desktop_ontologies, kde_baseapps, libkipi }:
+
+kde {
+
+  buildInputs =
+    [ kdelibs exiv2 shared_desktop_ontologies kde_baseapps libkipi ];
+
+  meta = {
+    description = "Gwenview, the KDE image viewer";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kamera.nix b/pkgs/desktops/kde-4.8/kdegraphics/kamera.nix
new file mode 100644
index 000000000000..70904b17c232
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kamera.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libgphoto2 }:
+
+kde {
+  buildInputs = [ kdelibs libgphoto2 ];
+
+  meta = {
+    description = "KDE camera interface library";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kcolorchooser.nix b/pkgs/desktops/kde-4.8/kdegraphics/kcolorchooser.nix
new file mode 100644
index 000000000000..58528cb186bb
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kcolorchooser.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A small utility to select a color";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-strigi-analyzer.nix b/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-strigi-analyzer.nix
new file mode 100644
index 000000000000..6001a5f363db
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-strigi-analyzer.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Strigi analyzers for various graphics file formats";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-thumbnailers.nix b/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..55bf8309b2a9
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kdegraphics-thumbnailers.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libkexiv2, libkdcraw }:
+
+kde {
+  buildInputs = [ kdelibs libkexiv2 libkdcraw ];
+
+  meta = {
+    description = "Thumbnailers for various graphics file formats";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kgamma.nix b/pkgs/desktops/kde-4.8/kdegraphics/kgamma.nix
new file mode 100644
index 000000000000..28d9252187e0
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kgamma.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libXxf86vm }:
+
+kde {
+  buildInputs = [ kdelibs libXxf86vm ];
+
+  meta = {
+    description = "KDE monitor calibration tool";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kolourpaint.nix b/pkgs/desktops/kde-4.8/kdegraphics/kolourpaint.nix
new file mode 100644
index 000000000000..5276ec09f462
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kolourpaint.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, qimageblitz }:
+
+kde {
+  buildInputs = [ kdelibs qimageblitz ];
+
+  meta = {
+    description = "KDE paint program";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/kruler.nix b/pkgs/desktops/kde-4.8/kdegraphics/kruler.nix
new file mode 100644
index 000000000000..c5c2c6e05d7c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/kruler.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE screen ruler";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/ksaneplugin.nix b/pkgs/desktops/kde-4.8/kdegraphics/ksaneplugin.nix
new file mode 100644
index 000000000000..1381ed7dd266
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/ksaneplugin.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libksane }:
+
+kde {
+  buildInputs = [ kdelibs libksane ];
+
+  meta = {
+    description = "A KScan plugin that implements the scanning through libksane";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/ksnapshot.nix b/pkgs/desktops/kde-4.8/kdegraphics/ksnapshot.nix
new file mode 100644
index 000000000000..f01a609e20de
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/ksnapshot.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libkipi }:
+
+kde {
+  buildInputs = [ kdelibs libkipi ];
+
+  meta = {
+    description = "KDE screenshot utility";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/libkdcraw.nix b/pkgs/desktops/kde-4.8/kdegraphics/libkdcraw.nix
new file mode 100644
index 000000000000..9d31cc763f21
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/libkdcraw.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Library for decoding RAW images";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/libkexiv2.nix b/pkgs/desktops/kde-4.8/kdegraphics/libkexiv2.nix
new file mode 100644
index 000000000000..096b0a6e957b
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/libkexiv2.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, exiv2 }:
+
+kde {
+  buildInputs = [ kdelibs exiv2 ];
+
+  meta = {
+    description = "Exiv2 support library";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/libkipi.nix b/pkgs/desktops/kde-4.8/kdegraphics/libkipi.nix
new file mode 100644
index 000000000000..6b16265e7a3e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/libkipi.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Interface library to kipi-plugins";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/libksane.nix b/pkgs/desktops/kde-4.8/kdegraphics/libksane.nix
new file mode 100644
index 000000000000..b539eab38992
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/libksane.nix
@@ -0,0 +1,10 @@
+{ 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 = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/mobipocket.nix b/pkgs/desktops/kde-4.8/kdegraphics/mobipocket.nix
new file mode 100644
index 000000000000..2c2ba3796a2c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/mobipocket.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, okular }:
+
+kde {
+  buildInputs = [ kdelibs okular ];
+
+  meta = {
+    description = "A collection of plugins to handle mobipocket files";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/okular.nix b/pkgs/desktops/kde-4.8/kdegraphics/okular.nix
new file mode 100644
index 000000000000..c322767eb433
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/okular.nix
@@ -0,0 +1,12 @@
+{ chmlib, djvulibre, ebook_tools, kde, kdelibs, libspectre, popplerQt4, qca2
+, qimageblitz }:
+
+kde {
+  buildInputs =
+    [ chmlib djvulibre ebook_tools kdelibs libspectre popplerQt4 qca2 qimageblitz ];
+
+  meta = {
+    description = "Okular, the KDE document viewer";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdegraphics/svgpart.nix b/pkgs/desktops/kde-4.8/kdegraphics/svgpart.nix
new file mode 100644
index 000000000000..a344cc4b4b46
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdegraphics/svgpart.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "SVG KPart";
+    license = "GPLv2";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdelibs.nix b/pkgs/desktops/kde-4.8/kdelibs.nix
new file mode 100644
index 000000000000..d4383b3e93a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdelibs.nix
@@ -0,0 +1,39 @@
+{ kde, gcc, cmake, perl
+, qt4, bzip2, pcre, fam, libxml2, libxslt, shared_mime_info, giflib, jasper
+, xz, openexr, avahi, kerberos, acl, attr, shared_desktop_ontologies, libXScrnSaver
+, automoc4, strigi, soprano, qca2, attica, enchant, libdbusmenu_qt
+, docbook_xml_dtd_42, docbook_xsl, polkit_qt_1
+, getopt, udev, herqq, phonon, libjpeg
+}:
+
+kde {
+  buildInputs =
+    [
+      acl attr attica avahi bzip2 enchant fam getopt giflib herqq jasper
+      libdbusmenu_qt libXScrnSaver libxslt pcre polkit_qt_1 qca2
+      shared_desktop_ontologies udev xz libxml2 libjpeg
+    ];
+
+  propagatedBuildInputs = [ qt4 soprano strigi phonon ];
+
+  propagatedBuildNativeInputs = [ automoc4 cmake perl shared_mime_info ];
+
+  # TODO: make sonnet plugins (dictionaries) really work.
+  # There are a few hardcoded paths.
+  # Let kdelibs find openexr
+  # Split plugins from libs?
+
+  patches = [ ./files/polkit-install.patch ];
+
+  # cmake fails to find acl.h because of C++-style comment
+  # TODO: OpenEXR
+  cmakeFlags = [
+    "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
+    "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
+  ];
+
+  meta = {
+    description = "KDE libraries";
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdemultimedia.nix b/pkgs/desktops/kde-4.8/kdemultimedia.nix
new file mode 100644
index 000000000000..b4ca7a8d2da7
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdemultimedia.nix
@@ -0,0 +1,16 @@
+{ kde, alsaLib, libvorbis, taglib, flac, cdparanoia, lame, kdelibs, ffmpeg,
+  libmusicbrainz3, libtunepimp }:
+
+kde {
+
+  buildInputs =
+    # Note: kdemultimedia can use xine-lib, but it doesn't seem useful
+    # without the Phonon Xine backend.
+    [ kdelibs cdparanoia taglib libvorbis libmusicbrainz3 libtunepimp ffmpeg
+    flac lame ];
+
+  meta = {
+    description = "KDE multimedia programs such as a movie player and volume utility";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/FindmsiLBC.cmake b/pkgs/desktops/kde-4.8/kdenetwork/FindmsiLBC.cmake
new file mode 100644
index 000000000000..c40b0bed3105
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/FindmsiLBC.cmake
@@ -0,0 +1,19 @@
+# cmake macro to test msiLBC
+
+# Copyright (c) 2009-2010 Pali Rohár <pali.rohar@gmail.com>
+#
+# MSILBC_FOUND
+# MSILBC_LIBRARY
+
+include ( FindPackageHandleStandardArgs )
+
+if ( MSILBC_LIBRARY )
+	set ( MSILBC_FOUND true )
+	set ( msiLBC_FIND_QUIETLY true )
+else ( MSILBC_LIBRARY )
+	find_library ( MSILBC_LIBRARY NAMES msilbc
+		PATH_SUFFIXES mediastreamer/plugins)
+endif ( MSILBC_LIBRARY )
+
+find_package_handle_standard_args ( msiLBC DEFAULT_MSG MSILBC_LIBRARY )
+mark_as_advanced ( MSILBC_LIBRARY )
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/filesharing.nix b/pkgs/desktops/kde-4.8/kdenetwork/filesharing.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/filesharing.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kdenetwork.patch b/pkgs/desktops/kde-4.8/kdenetwork/kdenetwork.patch
new file mode 100644
index 000000000000..ebadbfad9bac
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kdenetwork.patch
@@ -0,0 +1,24 @@
+diff -r -u kdenetwork-4.7.1.orig/CMakeLists.txt kdenetwork-4.7.1/CMakeLists.txt
+--- kdenetwork-4.7.1.orig/CMakeLists.txt	2011-03-29 15:25:42.174521812 +0400
++++ kdenetwork-4.7.1/CMakeLists.txt	2011-03-29 15:27:43.268140322 +0400
+@@ -28,7 +28,8 @@
+    set(CMAKE_REQUIRED_INCLUDES  ${KDEWIN_INCLUDES} )
+ endif (WIN32)
+ 
+-find_package(KdepimLibs REQUIRED)
++macro_optional_find_package(KdepimLibs)
++macro_log_feature(KDEPIMLIBS_FOUND "KDEPimLibs" "KDE pim-related libraries" "http://pim.kde.org.org/" FALSE "" "Required for Kopete")
+ # find_package(X11VidMode) not used at this time
+ 
+ # NX support is not ready for KDE 4.2; disabled (uwolfer)
+@@ -79,7 +80,9 @@
+ macro_optional_add_subdirectory(kfile-plugins)
+ macro_optional_add_subdirectory(kget)
+ 
+-macro_optional_add_subdirectory(kopete)
++if(KDEPIMLIBS_FOUND)
++  macro_optional_add_subdirectory(kopete)
++endif(KDEPIMLIBS_FOUND)
+ 
+ if(Q_WS_X11)
+   macro_optional_add_subdirectory(krdc)
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kdnssd.nix b/pkgs/desktops/kde-4.8/kdenetwork/kdnssd.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kdnssd.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kfile-plugins.nix b/pkgs/desktops/kde-4.8/kdenetwork/kfile-plugins.nix
new file mode 100644
index 000000000000..f90fd3560796
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kfile-plugins.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, boost }:
+
+kde {
+  name = "strigi-analyzer-torrent";
+
+  buildInputs = [ kdelibs boost ];
+
+  preConfigure = "mv -v strigi-analyzer kfile-plugins";
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kget.nix b/pkgs/desktops/kde-4.8/kdenetwork/kget.nix
new file mode 100644
index 000000000000..33d9ec1ca012
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kget.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, libktorrent, kde_workspace, kdepimlibs,
+  shared_desktop_ontologies, kde_baseapps, gpgme, boost, libmms, qca2 }:
+
+kde {
+  buildInputs =
+    [ kdelibs libktorrent kde_workspace shared_desktop_ontologies kdepimlibs
+      kde_baseapps gpgme boost libmms qca2
+    ];
+
+  KDEDIRS = libktorrent;
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kopete.nix b/pkgs/desktops/kde-4.8/kdenetwork/kopete.nix
new file mode 100644
index 000000000000..a4b01c5f9a63
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kopete.nix
@@ -0,0 +1,21 @@
+{ kde, kdelibs, speex, libmsn, libotr, kdepimlibs, qimageblitz, libktorrent,
+  jasper, libidn, mediastreamer, msilbc, pkgconfig, libxml2, libxslt, giflib,
+  libgadu, boost, qca2, gpgme }:
+
+kde {
+  buildInputs = [ kdelibs speex libmsn libotr kdepimlibs qimageblitz libktorrent
+    jasper libidn mediastreamer msilbc libxml2 libxslt giflib libgadu boost qca2
+    gpgme ];
+
+  buildNativeInputs = [ pkgconfig ];
+
+  KDEDIRS = libktorrent;
+
+  patchPhase = "cp -v ${./FindmsiLBC.cmake} kopete/cmake/modules/FindmsiLBC.cmake";
+
+  cmakeFlags = [ "-DBUILD_skypebuttons=TRUE" ];
+
+  meta = {
+    description = "A KDE multi-protocol IM client";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/kppp.nix b/pkgs/desktops/kde-4.8/kdenetwork/kppp.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/kppp.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/krdc.nix b/pkgs/desktops/kde-4.8/kdenetwork/krdc.nix
new file mode 100644
index 000000000000..664b1bc45a73
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/krdc.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libvncserver }:
+
+kde {
+  buildInputs = [ kdelibs libvncserver ];
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/krfb.nix b/pkgs/desktops/kde-4.8/kdenetwork/krfb.nix
new file mode 100644
index 000000000000..80013f430d3c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/krfb.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libvncserver, libXdamage, libXtst }:
+
+kde {
+  buildInputs = [ kdelibs libvncserver libXdamage libXtst];
+
+  patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.8/kdenetwork/log-feature.diff b/pkgs/desktops/kde-4.8/kdenetwork/log-feature.diff
new file mode 100644
index 000000000000..6770dd399e33
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdenetwork/log-feature.diff
@@ -0,0 +1,60 @@
+--- a/kget/CMakeLists.txt	2010-08-16 19:08:36.000000000 +0400
++++ b/kget/CMakeLists.txt	2010-08-16 22:04:24.000000000 +0400
+@@ -53,21 +53,20 @@
+ add_subdirectory(desktop)
+ add_subdirectory(plasma)
+ 
+-# find kworkspace library to allow the shutdown after downloads completed option
+-find_library(KDE4_KWORKSPACE_LIBRARY NAMES kworkspace PATHS ${KDE4_LIB_INSTALL_DIR} NO_DEFAULT_PATH )
+-if(KDE4_KWORKSPACE_LIBRARY)
+-    set(KDE4_KWORKSPACE_LIBS ${kworkspace_LIB_DEPENDS} ${KDE4_KWORKSPACE_LIBRARY})
++macro_optional_find_package(KDE4Workspace)
++macro_log_feature(KDE4WORKSPACE_FOUND "KDE4Workspace" "KDE4 workspace libraries, part of kdebase-workspace" "http://www.kde.org" FALSE "" "Allows 'shutdown after downloads completed' in kget")
++if(KDE4WORKSPACE_FOUND)
+     add_definitions(-DHAVE_KWORKSPACE)
+-    set(KWORKSPACE_FOUND true)
+-endif(KDE4_KWORKSPACE_LIBRARY)
++	include_directories(${KDE4WORKSPACE_INCLUDE_DIR})
++endif(KDE4WORKSPACE_FOUND)
+ 
+ # find libkonq to allow actions and open with options in the context menu of a transfer
+-find_library(KDE4_KONQUEROR_LIBRARY NAMES konq PATHS ${KDE4_LIB_INSTALL_DIR} NO_DEFAULT_PATH )
+-if(KDE4_KONQUEROR_LIBRARY)
+-    set(KDE4_KONQUEROR_LIBS ${konq_LIB_DEPENDS} ${KDE4_KONQUEROR_LIBRARY})
++macro_optional_find_package(LibKonq)
++macro_log_feature(LIBKONQ_FOUND "libkonq" "KDE4 Konqueror library" "http://www.kde.org" FALSE "" "Needed to build actions and open with options in the context menu of a transfer")
++if(LIBKONQ_FOUND)
+     add_definitions(-DHAVE_KONQUEROR)
+-    set(KONQUEROR_FOUND true)
+-endif(KDE4_KONQUEROR_LIBRARY)
++	include_directories(${LIBKONQ_INCLUDE_DIR})
++endif(LIBKONQ_FOUND)
+ 
+ 
+ include_directories(
+@@ -142,9 +141,9 @@
+ 
+ target_link_libraries(kgetcore ${KDE4_KIO_LIBS})
+ 
+-if (KWORKSPACE_FOUND)
+-    target_link_libraries(kgetcore ${KDE4_KWORKSPACE_LIBS})
+-endif (KWORKSPACE_FOUND)
++if (KDE4WORKSPACE_FOUND)
++    target_link_libraries(kgetcore ${KDE4WORKSPACE_KWORKSPACE_LIBS})
++endif (KDE4WORKSPACE_FOUND)
+ 
+ if (HAVE_NEPOMUK)
+   target_link_libraries(kgetcore ${SOPRANO_LIBRARIES} ${NEPOMUK_LIBRARIES})
+@@ -294,9 +293,9 @@
+   target_link_libraries(kget ${SOPRANO_LIBRARIES} ${NEPOMUK_LIBRARIES})
+ endif (HAVE_NEPOMUK)
+ 
+-if (KONQUEROR_FOUND)
+-  target_link_libraries(kget ${KDE4_KONQUEROR_LIBS})
+-endif (KONQUEROR_FOUND)
++if (LIBKONQ_FOUND)
++  target_link_libraries(kget ${LIBKONQ_LIBRARY})
++endif (LIBKONQ_FOUND)
+ 
+ if (QGPGME_FOUND)
+   target_link_libraries(kget ${QGPGME_LIBRARIES})
diff --git a/pkgs/desktops/kde-4.8/kdepim-runtime.nix b/pkgs/desktops/kde-4.8/kdepim-runtime.nix
new file mode 100644
index 000000000000..ef637f3f075b
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdepim-runtime.nix
@@ -0,0 +1,12 @@
+{ kde, fetchurl, cmake, kdelibs, libxml2, libxslt, boost, kdepimlibs, akonadi
+, shared_desktop_ontologies }:
+
+kde {
+  buildInputs = [ kdepimlibs akonadi boost shared_desktop_ontologies libxml2
+    libxslt ];
+
+  meta = {
+    description = "KDE PIM runtime";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdepim.nix b/pkgs/desktops/kde-4.8/kdepim.nix
new file mode 100644
index 000000000000..9b95d491a447
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdepim.nix
@@ -0,0 +1,21 @@
+{ kde, boost, gpgme, libassuan, libxml2, libxslt, kdepimlibs, kdepim_runtime
+, akonadi, shared_desktop_ontologies, cyrus_sasl, grantlee }:
+
+kde {
+
+  buildInputs =
+    [ kdepimlibs boost akonadi shared_desktop_ontologies libxml2
+      libxslt cyrus_sasl gpgme libassuan grantlee
+    ];
+
+  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.8/kdepimlibs.nix b/pkgs/desktops/kde-4.8/kdepimlibs.nix
new file mode 100644
index 000000000000..736508eaf0f3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdepimlibs.nix
@@ -0,0 +1,16 @@
+{ kde, boost, cyrus_sasl, gpgme, libical, openldap, shared_mime_info
+, kdelibs, akonadi, shared_desktop_ontologies, libxml2, libxslt, prison }:
+
+kde {
+  buildInputs =
+    [ boost gpgme shared_desktop_ontologies libical libxml2 libxslt
+      openldap cyrus_sasl akonadi prison
+    ];
+
+  propagatedBuildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE PIM libraries";
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeplasma-addons.nix b/pkgs/desktops/kde-4.8/kdeplasma-addons.nix
new file mode 100644
index 000000000000..de2cabf20e4f
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeplasma-addons.nix
@@ -0,0 +1,18 @@
+{ kde, kdelibs, marble, shared_desktop_ontologies
+, boost, eigen, kde_workspace, attica, python, qca2, qimageblitz
+, kdepimlibs, libkexiv2, libqalculate, libXtst }:
+# TODO: qwt, scim
+
+kde {
+
+  KDEDIRS=marble;
+
+  buildInputs = [ kdelibs boost eigen kde_workspace
+    attica python qca2 qimageblitz kdepimlibs
+    libqalculate libXtst shared_desktop_ontologies marble libkexiv2];
+
+  meta = {
+    description = "KDE Plasma Addons";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/cervisia.nix b/pkgs/desktops/kde-4.8/kdesdk/cervisia.nix
new file mode 100644
index 000000000000..1dabe46cd429
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdesdk/dolphin-plugins-git.nix b/pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-git.nix
new file mode 100644
index 000000000000..df4a0856c6b0
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-git.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+  # Needs kdebase for libkonq
+  buildInputs = [ kdelibs kde_baseapps ];
+
+  meta = {
+    description = "Git plugin for dolphin";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-svn.nix b/pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-svn.nix
new file mode 100644
index 000000000000..8032b89ff54c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/dolphin-plugins-svn.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+  # Needs kdebase for libkonq
+  buildInputs = [ kdelibs kde_baseapps ];
+
+  meta = {
+    description = "Svn plugin for dolphin";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/find-svn.patch b/pkgs/desktops/kde-4.8/kdesdk/find-svn.patch
new file mode 100644
index 000000000000..61cb49b308f2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/find-svn.patch
@@ -0,0 +1,59 @@
+diff --git a/cmake/modules/FindSVN.cmake b/cmake/modules/FindSVN.cmake
+index 59bcb96..2eac05d 100644
+--- a/cmake/modules/FindSVN.cmake
++++ b/cmake/modules/FindSVN.cmake
+@@ -17,6 +17,9 @@ FIND_PROGRAM(SVNCONFIG_EXECUTABLE NAMES svn-config PATHS
+ FIND_PROGRAM(APRCONFIG_EXECUTABLE NAMES apr-1-config apr-config PATHS
+    /usr/local/apr/bin
+ )
++find_program(APUCONFIG_EXECUTABLE NAMES apu-1-config apu-config PATHS
++   /usr/local/apr/bin
++)
+ 
+ if(SVNCONFIG_EXECUTABLE)
+ 
+@@ -56,15 +59,9 @@ else(SVNCONFIG_EXECUTABLE)
+       set(SVN_INCLUDES ${SVN_INCLUDES} ${_INCLUDES})
+    else(APRCONFIG_EXECUTABLE)
+       FIND_PATH(_INCLUDES apr_pools.h
+-         ${SVN_INCLUDES}/apr-0/
+-         ${SVN_INCLUDES}/apr-1/
+-         ${SVN_INCLUDES}/apr-1.0/
+-         /usr/include/apr-0/
+-         /usr/include/apr-1/
+-         /usr/include/apr-1.0/
+-         /usr/local/include/apr-0/
+-         /usr/local/include/apr-1/
+-         /usr/local/include/apr-1.0/
++         HINTS ${SVN_INCLUDES}
++         PATHS /usr /usr/local
++         SUFFIXES apr-0 apr-1 apr-1.0
+       )
+       if(_INCLUDES)
+          set(SVN_INCLUDES ${SVN_INCLUDES} ${_INCLUDES})
+@@ -72,6 +69,25 @@ else(SVNCONFIG_EXECUTABLE)
+          set(SVN_FOUND FALSE) # no apr == can't compile!
+       endif(_INCLUDES)
+    endif(APRCONFIG_EXECUTABLE)
++
++   # Use apu-config if it exists
++   if(APUCONFIG_EXECUTABLE)
++      EXEC_PROGRAM(${APUCONFIG_EXECUTABLE} ARGS --includes RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _INCLUDES)
++      string(REPLACE "-I" "" _INCLUDES ${_INCLUDES})
++      string(REPLACE " " ";" _INCLUDES ${_INCLUDES})
++      set(SVN_INCLUDES ${SVN_INCLUDES} ${_INCLUDES})
++   else(APUCONFIG_EXECUTABLE)
++      FIND_PATH(_INCLUDES apu.h
++         HINTS ${SVN_INCLUDES}
++         PATHS /usr /usr/local
++         SUFFIXES apr-0 apr-1 apr-1.0
++      )
++      if(_INCLUDES)
++         set(SVN_INCLUDES ${SVN_INCLUDES} ${_INCLUDES})
++      else(_INCLUDES)
++         set(SVN_FOUND FALSE) # no apr == can't compile!
++      endif(_INCLUDES)
++   endif(APUCONFIG_EXECUTABLE)
+    FIND_LIBRARY(SVN_LIBRARIES NAMES svn_client-1)
+    if(SVN_LIBRARIES)
+       FIND_LIBRARY(_LIBRARIES NAMES svn_subr-1)
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kapptemplate.nix b/pkgs/desktops/kde-4.8/kdesdk/kapptemplate.nix
new file mode 100644
index 000000000000..391536248dd3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdesdk/kcachegrind.nix b/pkgs/desktops/kde-4.8/kdesdk/kcachegrind.nix
new file mode 100644
index 000000000000..65d410cca48d
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdesdk/kdeaccounts-plugin.nix b/pkgs/desktops/kde-4.8/kdesdk/kdeaccounts-plugin.nix
new file mode 100644
index 000000000000..7e170ca2a2c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kdeaccounts-plugin.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kdepimlibs }:
+
+kde {
+  buildInputs = [ kdelibs kdepimlibs ];
+
+  meta = {
+    description = "KDE accounts akonadi agent";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kioslave-perldoc.nix b/pkgs/desktops/kde-4.8/kdesdk/kioslave-perldoc.nix
new file mode 100644
index 000000000000..6a10bdf7c4bc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kioslave-perldoc.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, perl }:
+
+kde {
+  buildInputs = [ kdelibs perl ];
+
+  cmakeFlags = [ "-DBUILD_perldoc=ON" ];
+
+  meta = {
+    description = "perldoc: kioslave";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kioslave-svn.nix b/pkgs/desktops/kde-4.8/kdesdk/kioslave-svn.nix
new file mode 100644
index 000000000000..db0bd27094b5
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kioslave-svn.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, subversionClient, apr, aprutil }:
+
+kde {
+  buildInputs = [ kdelibs subversionClient apr aprutil ];
+
+  patches = [ ./find-svn.patch ];
+
+  meta = {
+    description = "Subversion kioslave";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kmtrace.nix b/pkgs/desktops/kde-4.8/kdesdk/kmtrace.nix
new file mode 100644
index 000000000000..d580f7fb6911
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kmtrace.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, gcc }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  preConfigure = "export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${gcc}:${gcc.gcc}";
+
+  meta = {
+    description = "KDE mtrace-based malloc debugger";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kompare.nix b/pkgs/desktops/kde-4.8/kdesdk/kompare.nix
new file mode 100644
index 000000000000..1ddb4b8ea5b9
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kompare.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A program to view the differences between files and optionally generate a diff";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kpartloader.nix b/pkgs/desktops/kde-4.8/kdesdk/kpartloader.nix
new file mode 100644
index 000000000000..e7790d33c90c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kpartloader.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A test application for KParts";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kprofilemethod.nix b/pkgs/desktops/kde-4.8/kdesdk/kprofilemethod.nix
new file mode 100644
index 000000000000..5a6693f2f5d8
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kprofilemethod.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "A macro for profiling using QTime";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kstartperf.nix b/pkgs/desktops/kde-4.8/kdesdk/kstartperf.nix
new file mode 100644
index 000000000000..0c8259cd31f5
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kstartperf.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libtool }:
+
+kde {
+  buildInputs = [ kdelibs libtool ];
+
+  meta = {
+    description = "Measures start up time of a KDE application";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/kuiviewer.nix b/pkgs/desktops/kde-4.8/kdesdk/kuiviewer.nix
new file mode 100644
index 000000000000..7c5089dcd37f
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/kuiviewer.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Displays Qt Designer's UI files";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/lokalize.nix b/pkgs/desktops/kde-4.8/kdesdk/lokalize.nix
new file mode 100644
index 000000000000..1565426eb1fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdesdk/okteta.nix b/pkgs/desktops/kde-4.8/kdesdk/okteta.nix
new file mode 100644
index 000000000000..1b53a0e03dc4
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/okteta.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, qca2 }:
+
+kde {
+  buildInputs = [ kdelibs qca2 ];
+
+# TODO: Look what does -DBUILD_mobile add
+
+  meta = {
+    description = "KDE byte editor";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/optional-docs.diff b/pkgs/desktops/kde-4.8/kdesdk/optional-docs.diff
new file mode 100644
index 000000000000..f67e1f4cdd8e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/optional-docs.diff
@@ -0,0 +1,39 @@
+diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
+index 63cdef8..0c5b50a 100644
+--- a/doc/CMakeLists.txt
++++ b/doc/CMakeLists.txt
+@@ -3,22 +3,30 @@ if( UNIX )
+     add_subdirectory(cervisia)
+   endif()
+ endif( UNIX )
+-add_subdirectory(kapptemplate)
++if(BUILD_kapptemplate)
++  add_subdirectory(kapptemplate)
++endif()
+ if(BUILD_kbugbuster)
+   add_subdirectory(kbugbuster)
+ endif()
+ if(BUILD_kcachegrind)
+   add_subdirectory(kcachegrind)
+ endif()
+-add_subdirectory(kmtrace)
++if(BUILD_kmtrace)
++  add_subdirectory(kmtrace)
++endif()
+ if(BUILD_kompare)
+   add_subdirectory(kompare)
+ endif()
+ if(BUILD_lokalize)
+   add_subdirectory(lokalize)
+ endif()
+-add_subdirectory(poxml)
+-add_subdirectory(scripts)
++if(BUILD_poxml)
++  add_subdirectory(poxml)
++endif()
++if(BUILD_scripts)
++  add_subdirectory(scripts)
++endif()
+ 
+ if(LIBXSLT_FOUND AND LIBXML2_FOUND)
+   if(BUILD_umbrello)
diff --git a/pkgs/desktops/kde-4.8/kdesdk/poxml.nix b/pkgs/desktops/kde-4.8/kdesdk/poxml.nix
new file mode 100644
index 000000000000..1ab9ed49df56
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/poxml.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, antlr }:
+
+kde {
+  buildInputs = [ kdelibs antlr ];
+
+  meta = {
+    description = "Po<->xml tools";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/scripts.nix b/pkgs/desktops/kde-4.8/kdesdk/scripts.nix
new file mode 100644
index 000000000000..df81145e5d60
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/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.8/kdesdk/strigi-analyzer.nix b/pkgs/desktops/kde-4.8/kdesdk/strigi-analyzer.nix
new file mode 100644
index 000000000000..0ad48c8cfdee
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdesdk/strigi-analyzer.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "Strigi analyzers for diff, po and ts";
+    kde = {
+      name = "strigi-analyzer";
+      module = "kdesdk";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdesdk/umbrello.nix b/pkgs/desktops/kde-4.8/kdesdk/umbrello.nix
new file mode 100644
index 000000000000..e83a2d9a901b
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdetoys/amor.nix b/pkgs/desktops/kde-4.8/kdetoys/amor.nix
new file mode 100644
index 000000000000..936d63d544a9
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdetoys/kteatime.nix b/pkgs/desktops/kde-4.8/kdetoys/kteatime.nix
new file mode 100644
index 000000000000..dacf54def4b0
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdetoys/ktux.nix b/pkgs/desktops/kde-4.8/kdetoys/ktux.nix
new file mode 100644
index 000000000000..108f9be7c722
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/ark.nix b/pkgs/desktops/kde-4.8/kdeutils/ark.nix
new file mode 100644
index 000000000000..4449dd8228f2
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/ark.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libarchive, xz, bzip2, kde_baseapps }:
+
+kde {
+  buildInputs = [ kdelibs kde_baseapps libarchive xz bzip2 ];
+
+  meta = {
+    description = "KDE Archiving Tool";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/filelight.nix b/pkgs/desktops/kde-4.8/kdeutils/filelight.nix
new file mode 100644
index 000000000000..25ecabed27ce
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/kcalc.nix b/pkgs/desktops/kde-4.8/kdeutils/kcalc.nix
new file mode 100644
index 000000000000..08b202e8f0e8
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/kcharselect.nix b/pkgs/desktops/kde-4.8/kdeutils/kcharselect.nix
new file mode 100644
index 000000000000..d4c9c06f483d
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/kdf.nix b/pkgs/desktops/kde-4.8/kdeutils/kdf.nix
new file mode 100644
index 000000000000..3f9da58d0a62
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/kfloppy.nix b/pkgs/desktops/kde-4.8/kdeutils/kfloppy.nix
new file mode 100644
index 000000000000..2434a4fa671f
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdeutils/kgpg.nix b/pkgs/desktops/kde-4.8/kdeutils/kgpg.nix
new file mode 100644
index 000000000000..f3b00a5b968c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/kgpg.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kdepimlibs }:
+
+kde {
+  buildInputs = [ kdelibs kdepimlibs ];
+
+  meta = {
+    description = "Simple KDE GUI for GPG";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/kremotecontrol.nix b/pkgs/desktops/kde-4.8/kdeutils/kremotecontrol.nix
new file mode 100644
index 000000000000..fef516e478d3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/kremotecontrol.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kde_workspace, libXtst }:
+
+kde {
+  buildInputs = [ kdelibs kde_workspace libXtst ];
+
+  meta = {
+    description = "KDE remote control";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/ktimer.nix b/pkgs/desktops/kde-4.8/kdeutils/ktimer.nix
new file mode 100644
index 000000000000..5700977349e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/ktimer.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+  buildInputs = [ kdelibs ];
+
+  meta = {
+    description = "KDE Timer";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/kwallet.nix b/pkgs/desktops/kde-4.8/kdeutils/kwallet.nix
new file mode 100644
index 000000000000..9ec0e6c0396c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/kwallet.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.8/kdeutils/printer-applet.nix b/pkgs/desktops/kde-4.8/kdeutils/printer-applet.nix
new file mode 100644
index 000000000000..2d937b3a4db7
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/printer-applet.nix
@@ -0,0 +1,28 @@
+{ kde, kdelibs
+, pythonPackages, sip, pyqt4, pykde4, pycups, rhpl, system_config_printer
+, pythonDBus, makeWrapper }:
+
+let s_c_p = system_config_printer.override { withGUI = false; }; in
+
+kde rec {
+  buildInputs = [ kdelibs pythonPackages.python pythonPackages.wrapPython
+    ] ++ pythonPath;
+
+  pythonPath = [ 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 applet";
+    longDescription = "Applet to view current print jobs and configure new printers";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/superkaramba.nix b/pkgs/desktops/kde-4.8/kdeutils/superkaramba.nix
new file mode 100644
index 000000000000..1475ab041ac3
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeutils/superkaramba.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, qimageblitz }:
+
+kde {
+  buildInputs = [ kdelibs qimageblitz ];
+
+  cmakeFlags = [ "-DBUILD_icons=TRUE" "-DBULD_plasma=TRUE" ];
+
+  meta = {
+    description = "A KDE Eye-candy Application";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdeutils/sweeper.nix b/pkgs/desktops/kde-4.8/kdeutils/sweeper.nix
new file mode 100644
index 000000000000..78d56c7df30e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.8/kdewebdev/kfilereplace.nix b/pkgs/desktops/kde-4.8/kdewebdev/kfilereplace.nix
new file mode 100644
index 000000000000..c3f6129d7e5c
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdewebdev/kfilereplace.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libxml2, libxslt }:
+
+kde {
+  buildInputs = [ kdelibs libxml2 libxslt ];
+
+  meta = {
+    description = "Batch search and replace tool";
+    homepage = http://www.kdewebdev.org;
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdewebdev/kimagemapeditor.nix b/pkgs/desktops/kde-4.8/kdewebdev/kimagemapeditor.nix
new file mode 100644
index 000000000000..bececea7797e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdewebdev/kimagemapeditor.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libxml2, libxslt }:
+
+kde {
+  buildInputs = [ kdelibs libxml2 libxslt ];
+
+  meta = {
+    description = "An HTML imagemap editor";
+    homepage = http://www.nongnu.org/kimagemap/;
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdewebdev/klinkstatus.nix b/pkgs/desktops/kde-4.8/kdewebdev/klinkstatus.nix
new file mode 100644
index 000000000000..94adbb7fd6e0
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdewebdev/klinkstatus.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, libxml2, libxslt, kdepimlibs
+, boost, htmlTidy }:
+
+kde {
+  buildInputs =
+    [ kdelibs libxml2 libxslt kdepimlibs boost htmlTidy ];
+
+  meta = {
+    description = "A KDE link checker";
+    homepage = http://klinkstatus.kdewebdev.org;
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kdewebdev/kommander.nix b/pkgs/desktops/kde-4.8/kdewebdev/kommander.nix
new file mode 100644
index 000000000000..6a870e563033
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdewebdev/kommander.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libxml2, libxslt }:
+
+kde {
+  buildInputs = [ kdelibs libxml2 libxslt ];
+
+  meta = {
+    description = "A graphical editor of scripted dialogs";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/kipi-plugins.nix b/pkgs/desktops/kde-4.8/kipi-plugins.nix
new file mode 100644
index 000000000000..ea237a5d718e
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kipi-plugins.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, kdelibs, qt4, automoc4, phonon, libkexiv2
+, libkdcraw, libkipi, gettext, libxml2, libxslt, qjson, qca2
+, kdepimlibs }:
+
+stdenv.mkDerivation rec {
+  name = "kipi-plugins-1.9.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/kipi/${name}.tar.bz2";
+    sha256 = "0k4k9v1rj7129n0s0i5pvv4rabx0prxqs6sca642fj95cxc6c96m";
+  };
+
+  buildInputs =
+    # Some dependencies are missing because they are very big (OpenCV,
+    # GTK).
+    [ cmake kdelibs qt4 automoc4 phonon libkexiv2 libkdcraw libkipi
+      gettext libxml2 libxslt qjson qca2 kdepimlibs
+    ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Photo Management Program";
+    license = "GPL";
+    homepage = http://www.kipi-plugins.org;
+    inherit (kdelibs.meta) platforms;
+    maintainers = with stdenv.lib.maintainers; [ viric urkud ];
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/l10n/default.nix b/pkgs/desktops/kde-4.8/l10n/default.nix
new file mode 100644
index 000000000000..144968f66727
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/l10n/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, kdelibs, gettext, release }:
+
+let
+
+  inherit (stdenv.lib) attrByPath singleton;
+
+  kdeL10nDerivation =
+    { lang, saneName, sha256 }:
+
+    stdenv.mkDerivation rec {
+      name = "kde-l10n-${saneName}-${release}";
+
+      src = fetchurl {
+        url = "mirror://kde/stable/${release}/src/kde-l10n/kde-l10n-${lang}-${release}.tar.bz2";
+        name = "${name}.tar.bz2";
+        inherit sha256;
+      };
+
+      buildInputs = [ gettext kdelibs ];
+
+      cmakeFlags = "-Wno-dev";
+
+      meta = {
+        description = "KDE translation for ${lang}";
+        license = "GPL";
+        inherit (kdelibs.meta) maintainers platforms 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.8/l10n/l10n-manifest.sh b/pkgs/desktops/kde-4.8/l10n/l10n-manifest.sh
new file mode 100755
index 000000000000..cc0eec20aaaf
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/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.bz2 | \
+	sed -e 's/.*en_GB-//' -e 's/\.tar\.bz2//')
+
+echo "Detected release ${release}" >&2
+
+exec > "manifest-${release}.nix"
+echo "["
+for i in `cd "${dir}"; ls kde-l10n-*-${release}.tar.bz2`; do
+  lang=${i%-${release}.tar.bz2}
+  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.8/l10n/manifest-4.7.4.nix b/pkgs/desktops/kde-4.8/l10n/manifest-4.7.4.nix
new file mode 100644
index 000000000000..a128ff8dc622
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/l10n/manifest-4.7.4.nix
@@ -0,0 +1,267 @@
+[
+{
+  lang = "ar";
+  saneName = "ar";
+  sha256 = "1iw8x8k31jrgqc8nq276iwca1dgicz9vcx58rfbnk924dvqrflpv";
+}
+{
+  lang = "bg";
+  saneName = "bg";
+  sha256 = "07i4s6jkfkw59mr5n4256rzwy64y1c5wy957jbvnidqcrpzh1azf";
+}
+{
+  lang = "bs";
+  saneName = "bs";
+  sha256 = "080svc26zqf45wra6d6ljxzgs8f6gzl567wm73yp5qrgqnvyvxir";
+}
+{
+  lang = "ca";
+  saneName = "ca";
+  sha256 = "04fz56hsrpl6mxsbw5ja7armf8zbib542d7iv4p4c87xncib13qj";
+}
+{
+  lang = "ca@valencia";
+  saneName = "ca_valencia";
+  sha256 = "01mi1d6yz5w122bcjzp3r8g70pzil6216sv2y2dxaqjlxpdllklp";
+}
+{
+  lang = "cs";
+  saneName = "cs";
+  sha256 = "0l1rwx1k0vpkfc52divm5cnwxr05mwcl1sr84mi24s2ygs6rk8ib";
+}
+{
+  lang = "da";
+  saneName = "da";
+  sha256 = "1r2pzkvs1rc8hfzi5q0p6drvkl1ykq89bzi3k73i3fghx42qdxv6";
+}
+{
+  lang = "de";
+  saneName = "de";
+  sha256 = "100589wkw5rdcihk1nwl4i0bc30bq3b289n03q9lgf8zadflrrg9";
+}
+{
+  lang = "el";
+  saneName = "el";
+  sha256 = "0q41lpkf8srjxrrcnw9c7rkc83m4jw3r7z6s8x9rn0d5h2l36gv8";
+}
+{
+  lang = "en_GB";
+  saneName = "en_GB";
+  sha256 = "0mmvr3fh51r958myc18nxvl7d8hsm4wl70vmac3a3w47mr9aayqi";
+}
+{
+  lang = "es";
+  saneName = "es";
+  sha256 = "11k8svvnph9431maxdhzr334h7h11jk681fb2z1hb7i6cprmac9f";
+}
+{
+  lang = "et";
+  saneName = "et";
+  sha256 = "0pvjfkh93avkg9dii5byjh3kiqcgax9dfw97jmy6qccicgq6frvd";
+}
+{
+  lang = "eu";
+  saneName = "eu";
+  sha256 = "0gnnr7nyxjrzf632zs1k3j4bss3gm5qadfm2jki41y9q1f82vy99";
+}
+{
+  lang = "fi";
+  saneName = "fi";
+  sha256 = "0mfrmqn1yiqrgq79bgbb8799myv5h30g1gr83xja9g9y0lb645bs";
+}
+{
+  lang = "fr";
+  saneName = "fr";
+  sha256 = "03d6xbc7h9gslzvx1q7lcb8bfr5w8809jfb6cn4zv36in593wq85";
+}
+{
+  lang = "ga";
+  saneName = "ga";
+  sha256 = "13m7rdz2gd1cag2x6hfzyv8xj5777fly5f9pyhr28hrafyqc44l5";
+}
+{
+  lang = "gl";
+  saneName = "gl";
+  sha256 = "1ryimhlddxwaa40si3j0id37xm845ybsfkck0i7x2kmg87a55wcz";
+}
+{
+  lang = "he";
+  saneName = "he";
+  sha256 = "01v4vkbyhbsv64z7mnj129ss1rnr00n19iiza0ivjzsbzryhh3p2";
+}
+{
+  lang = "hr";
+  saneName = "hr";
+  sha256 = "0s2a4nc3z03xj8za426arwr1cjqqcd6pq82lc9q0kiv2fpxgagxw";
+}
+{
+  lang = "hu";
+  saneName = "hu";
+  sha256 = "0sv4fsnnnnpnf14s7fv83g9kzqq31gl0647cy523xkyxpdwhj9hp";
+}
+{
+  lang = "ia";
+  saneName = "ia";
+  sha256 = "0k9gzxiyplvk78nqk3kmqh74lani6iqciyighii1m0cvylq5sljz";
+}
+{
+  lang = "id";
+  saneName = "id";
+  sha256 = "16l4wif0qsmvpikagkhfyh98wdss4w0imixnzawadx0jq5mac6ga";
+}
+{
+  lang = "is";
+  saneName = "is";
+  sha256 = "1g5pan1iy2mx43z5gxvp07n3a9yrc56y4pya2r9g6wjnzcp0ynbj";
+}
+{
+  lang = "it";
+  saneName = "it";
+  sha256 = "0p0grhjx04khqmih8gmlpgjazr8asv7ql1gj965sjaf8a6z1h5ar";
+}
+{
+  lang = "ja";
+  saneName = "ja";
+  sha256 = "1f6ig8x3siqww4bwldpgncpyhlmkf6hbd6ahlvd5dqn6hqpknygx";
+}
+{
+  lang = "kk";
+  saneName = "kk";
+  sha256 = "0kyhr0b5g842dds59l3rcvyq3n12xx11svcqbqhiqqm3a8qki9vi";
+}
+{
+  lang = "km";
+  saneName = "km";
+  sha256 = "02ss6rxqf71n06a769l0xky30nhyqdhhsad9lmxs0dbbnxdcnixr";
+}
+{
+  lang = "kn";
+  saneName = "kn";
+  sha256 = "0rk193a27hvh63lfb7yy8g0wxb05kymyqnhdxcmai3wk2n53bi9y";
+}
+{
+  lang = "ko";
+  saneName = "ko";
+  sha256 = "0wyplpkkq6mdm5k7jxxppwgrm4rrb5mbhagszg1y460rcx7d5vcm";
+}
+{
+  lang = "lt";
+  saneName = "lt";
+  sha256 = "08767csx7sq02jkkrdl16jj7jprqc3qbsz7vdcwli3274qjkdk9s";
+}
+{
+  lang = "lv";
+  saneName = "lv";
+  sha256 = "0f4mxjsg2ipsj57ki26n870zxnk28z9ayblzgmv821xiawjaa4gc";
+}
+{
+  lang = "nb";
+  saneName = "nb";
+  sha256 = "1myb1b4p849nvb4q2n5hcy5fsfb4zdvhc5vkwa2giiy0pv230cmm";
+}
+{
+  lang = "nds";
+  saneName = "nds";
+  sha256 = "1vm6fjac0aaxls0rlgz4s804kbarj1rzyli50dzfcfqwngzkckxk";
+}
+{
+  lang = "nl";
+  saneName = "nl";
+  sha256 = "02v0cscngl7wfsl7yc2xr1a593qq064spgk1ynzad1rz1g98z212";
+}
+{
+  lang = "nn";
+  saneName = "nn";
+  sha256 = "01s1kfp5x036hcpyl87qzqjlmjwp8hda3qplnj3inihias2cnvb7";
+}
+{
+  lang = "pa";
+  saneName = "pa";
+  sha256 = "0al2lwvj23rp1plg2ykakbgw6qzxkkd5pd2nqdfnaif9xq9fp9db";
+}
+{
+  lang = "pl";
+  saneName = "pl";
+  sha256 = "08fffsaay01dnbs7bg3w325bknjcfbp3f1ryrdy2g7w2achyakls";
+}
+{
+  lang = "pt";
+  saneName = "pt";
+  sha256 = "03klc7q1h0xxc43vqw2m87n4wzxg140ql7mlzrjsrdnqgx2pvch4";
+}
+{
+  lang = "pt_BR";
+  saneName = "pt_BR";
+  sha256 = "1g4nd48fzfxam8zsi0imw57lhjm7i7qifqmy53s7pfr4cmq4fbw5";
+}
+{
+  lang = "ro";
+  saneName = "ro";
+  sha256 = "112pj6bi1bagafh89322mdj8ynmljv0ry7z2zss4ljfhqxxndc6b";
+}
+{
+  lang = "ru";
+  saneName = "ru";
+  sha256 = "1i4fx5mrz9910wkfgi885gjafcspnk8nyx7cimkvnp6y2xwpl733";
+}
+{
+  lang = "si";
+  saneName = "si";
+  sha256 = "0h77cqi9cmzni4mn7k91ar56b9ph8dlyagn29wd958hpkxwbdqiw";
+}
+{
+  lang = "sk";
+  saneName = "sk";
+  sha256 = "1q8bxlaah7afs12ni8xpjj6nlxjmxfpzabavm7ixqwnn4l732vyn";
+}
+{
+  lang = "sl";
+  saneName = "sl";
+  sha256 = "0508w2k4g7f9dm0ds28h5hhxd5qc4w16zxqskygrs6144567hb0c";
+}
+{
+  lang = "sr";
+  saneName = "sr";
+  sha256 = "0bvbzah338bh8vnn2ppakd8zb49vcc7d95ahyahrkqc4ls5z60sv";
+}
+{
+  lang = "sv";
+  saneName = "sv";
+  sha256 = "1glgb7shn3qlszayyc11wjhbc5g29agq2rlwf45drk2b5fi2m8bn";
+}
+{
+  lang = "th";
+  saneName = "th";
+  sha256 = "0g3pgrsb3d33295nw45y0a318yb4bvld46xvjsd3ay8hxpxrf4yy";
+}
+{
+  lang = "tr";
+  saneName = "tr";
+  sha256 = "02k1jakxwj5zp0z7x8yrjrl17syzv6rfyscal6af5bavjsx99kxp";
+}
+{
+  lang = "ug";
+  saneName = "ug";
+  sha256 = "0wq1jlxwz2avqzb9yqnck69qkfy3q7cq76i2jadbfdvwk06w44bi";
+}
+{
+  lang = "uk";
+  saneName = "uk";
+  sha256 = "0813bmgi9k3kx2k8rl8h1l9p6zcnabk36p7nm8v9vb4v7d52cyds";
+}
+{
+  lang = "wa";
+  saneName = "wa";
+  sha256 = "14slp0ybjbsm62misrp9qni5pzw4pzz3zznzc49z0a7yfni9i6av";
+}
+{
+  lang = "zh_CN";
+  saneName = "zh_CN";
+  sha256 = "18jfbz2h8jjby48hwjyrd9yn3k7xbp58g28psmlhsg2m3f8mr669";
+}
+{
+  lang = "zh_TW";
+  saneName = "zh_TW";
+  sha256 = "09mfspiy3ihg0n6paqhp0g1srl60sxrkxgha536624kbrbwp1jpq";
+}
+]
diff --git a/pkgs/desktops/kde-4.8/oxygen-icons.nix b/pkgs/desktops/kde-4.8/oxygen-icons.nix
new file mode 100644
index 000000000000..f2a5e666232d
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/oxygen-icons.nix
@@ -0,0 +1,15 @@
+{ kde, cmake }:
+
+kde {
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0c12c72bcf41cfaf03f85fc1ae27e44d8cecac3deb504ab1de4c30f4fc9e3cd0";
+
+  buildNativeInputs = [ cmake ];
+
+  meta = {
+    description = "KDE Oxygen theme icons";
+    longDescription = "Icons for KDE's default theme";
+    license = "GPL";
+  };
+}
diff --git a/pkgs/desktops/kde-4.8/support/akonadi/default.nix b/pkgs/desktops/kde-4.8/support/akonadi/default.nix
new file mode 100644
index 000000000000..38ec7f859076
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/support/akonadi/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, qt4, shared_mime_info, libxslt, boost, automoc4, soprano }:
+
+stdenv.mkDerivation rec {
+  name = "akonadi-1.6.1";
+  
+  src = fetchurl {
+    url = "mirror://kde/stable/akonadi/src/${name}.tar.bz2";
+    sha256 = "0r8sw7m1pwqc7qkaczm0r8adqi1wvlhdp32gy3q5p5plq50xhgra";
+  };
+
+  buildInputs = [ qt4 soprano libxslt boost ];
+
+  buildNativeInputs = [ 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 ];
+    platforms = platforms.linux;
+  };
+}