diff --git a/pkgs/desktops/kde-4.8/default.nix b/pkgs/desktops/kde-4.8/default.nix
new file mode 100644
index 00000000000..3bdf825410c
--- /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 00000000000..d2ecac663ec
--- /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 00000000000..1ffbcf9ebf9
--- /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 00000000000..45192e0c460
--- /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 00000000000..87ac24972bd
--- /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 00000000000..9a816b72cc6
--- /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 00000000000..38713de5820
--- /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 00000000000..910394fb6a3
--- /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 00000000000..952a05a9d27
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kde-package/kde-submodules.xslt
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+ declare -A module
+
+
+
+ module["
+
+ "]="
+
+ "
+
+
+
+
+
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 00000000000..96b6c3a1c78
--- /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 00000000000..60298e567fb
--- /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 00000000000..55c243f60dd
--- /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 00000000000..d38c80c4c36
--- /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 00000000000..98fae7c983f
--- /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 00000000000..f3b27dacf67
--- /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 00000000000..42306049c5d
--- /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 00000000000..4159501967c
--- /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 00000000000..bada0c1cb10
--- /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 00000000000..bada0c1cb10
--- /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 00000000000..571674a461a
--- /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 00000000000..2c462f67c15
--- /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 00000000000..acccf66976f
--- /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 00000000000..499ed75268e
--- /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,
+#
+# 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 00000000000..edffca1562e
--- /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 00000000000..43071e8bd14
--- /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 00000000000..947e5e17ab0
--- /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 00000000000..4bce95217cc
--- /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 00000000000..93dd361af73
--- /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 00000000000..5ef9f78a719
--- /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 00000000000..cc195c8de90
--- /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 00000000000..b5d769b216d
--- /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 00000000000..e98705da889
--- /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 00000000000..6a1306c3710
--- /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 00000000000..611c6a70f6b
--- /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 00000000000..13c145f3275
--- /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 00000000000..dfc2c886bba
--- /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 00000000000..1ca6efe3b92
--- /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 00000000000..df26eb2717e
--- /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 00000000000..c49a77a48ed
--- /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 00000000000..0d0aa816a94
--- /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 00000000000..617eb4b2467
--- /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,
+# Copyright (c) 2006, Montel Laurent,
+# 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 00000000000..cdf9728833c
--- /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 00000000000..8b8bbc210c7
--- /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 00000000000..f1a190332cd
--- /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 00000000000..3c054e8d60a
--- /dev/null
+++ b/pkgs/desktops/kde-4.8/kdeedu/kalzium-feature-log.patch
@@ -0,0 +1,15 @@
+commit d96c6e70400dcd4e3514065e607388b80f96d6a1
+Author: Yury G. Kudryashov
+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 00000000000..d7d9b403b1a
--- /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 00000000000..8759c96d78c
--- /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 00000000000..dc50f1e85a3
--- /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 00000000000..bd8d27c8d6e
--- /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 00000000000..997b50e906a
--- /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 00000000000..bd5ef67529c
--- /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 00000000000..939b7a9f77a
--- /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 00000000000..7a0fa83078e
--- /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 00000000000..18458cf6f0b
--- /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 00000000000..5b5a2d621de
--- /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 00000000000..768be6f4367
--- /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 00000000000..1e1922b1410
--- /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 00000000000..1b33ba2e469
--- /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 00000000000..def6c85fefe
--- /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 00000000000..8bd86c91094
--- /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 00000000000..eccd40a598f
--- /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 00000000000..91976b84001
--- /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 00000000000..fac9974baf1
--- /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 00000000000..3378a99d9e7
--- /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 00000000000..efc2707e7d6
--- /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 00000000000..70904b17c23
--- /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 00000000000..58528cb186b
--- /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 00000000000..6001a5f363d
--- /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 00000000000..55bf8309b2a
--- /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 00000000000..28d9252187e
--- /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 00000000000..5276ec09f46
--- /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 00000000000..c5c2c6e05d7
--- /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 00000000000..1381ed7dd26
--- /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 00000000000..f01a609e20d
--- /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 00000000000..9d31cc763f2
--- /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 00000000000..096b0a6e957
--- /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 00000000000..6b16265e7a3
--- /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 00000000000..b539eab3899
--- /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 00000000000..2c2ba3796a2
--- /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 00000000000..c322767eb43
--- /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 00000000000..a344cc4b4b4
--- /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 00000000000..d4383b3e93a
--- /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 00000000000..b4ca7a8d2da
--- /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 00000000000..c40b0bed310
--- /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
+#
+# 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 00000000000..2f32f4d6b2c
--- /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 00000000000..ebadbfad9ba
--- /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 00000000000..2f32f4d6b2c
--- /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 00000000000..f90fd356079
--- /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 00000000000..33d9ec1ca01
--- /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 00000000000..a4b01c5f9a6
--- /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 00000000000..2f32f4d6b2c
--- /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 00000000000..664b1bc45a7
--- /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 00000000000..80013f430d3
--- /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 00000000000..6770dd399e3
--- /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 00000000000..ef637f3f075
--- /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 00000000000..9b95d491a44
--- /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 00000000000..736508eaf0f
--- /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 00000000000..de2cabf20e4
--- /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 00000000000..1dabe46cd42
--- /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 00000000000..df4a0856c6b
--- /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 00000000000..8032b89ff54
--- /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 00000000000..61cb49b308f
--- /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 00000000000..391536248dd
--- /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 00000000000..65d410cca48
--- /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 00000000000..7e170ca2a2c
--- /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 00000000000..6a10bdf7c4b
--- /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 00000000000..db0bd27094b
--- /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 00000000000..d580f7fb691
--- /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 00000000000..1ddb4b8ea5b
--- /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 00000000000..e7790d33c90
--- /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 00000000000..5a6693f2f5d
--- /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 00000000000..0c8259cd31f
--- /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 00000000000..7c5089dcd37
--- /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 00000000000..1565426eb1f
--- /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 00000000000..1b53a0e03dc
--- /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 00000000000..f67e1f4cdd8
--- /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 00000000000..1ab9ed49df5
--- /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 00000000000..df81145e5d6
--- /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 00000000000..0ad48c8cfde
--- /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 00000000000..e83a2d9a901
--- /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 00000000000..936d63d544a
--- /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 00000000000..dacf54def4b
--- /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 00000000000..108f9be7c72
--- /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 00000000000..4449dd8228f
--- /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 00000000000..25ecabed27c
--- /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 00000000000..08b202e8f0e
--- /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 00000000000..d4c9c06f483
--- /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 00000000000..3f9da58d0a6
--- /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 00000000000..2434a4fa671
--- /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 00000000000..f3b00a5b968
--- /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 00000000000..fef516e478d
--- /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 00000000000..5700977349e
--- /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 00000000000..9ec0e6c0396
--- /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 00000000000..2d937b3a4db
--- /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 00000000000..1475ab041ac
--- /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 00000000000..78d56c7df30
--- /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 00000000000..c3f6129d7e5
--- /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 00000000000..bececea7797
--- /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 00000000000..94adbb7fd6e
--- /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 00000000000..6a870e56303
--- /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 00000000000..ea237a5d718
--- /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 00000000000..144968f6672
--- /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 00000000000..cc0eec20aaa
--- /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 00000000000..a128ff8dc62
--- /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 00000000000..f2a5e666232
--- /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 00000000000..38ec7f85907
--- /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;
+ };
+}