diff --git a/pkgs/desktops/kde-4.10/applications/kate.nix b/pkgs/desktops/kde-4.10/applications/kate.nix
new file mode 100644
index 000000000000..a0dbf2aaba92
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/applications/kate.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kactivities, qjson, pyqt4, sip }:
+
+kde {
+#todo: PythonLibrary, SIP, PyQt4, PyKDE4
+ buildInputs = [ kdelibs kactivities qjson pyqt4 sip ];
+
+ meta = {
+ description = "Kate, the KDE Advanced Text Editor, as well as KWrite";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/applications/konsole.nix b/pkgs/desktops/kde-4.10/applications/konsole.nix
new file mode 100644
index 000000000000..0db47fb2d7c4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/applications/konsole.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+
+ buildInputs = [ kdelibs kde_baseapps ];
+
+ meta = {
+ description = "Konsole, the KDE terminal emulator";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/default.nix b/pkgs/desktops/kde-4.10/default.nix
new file mode 100644
index 000000000000..9a682d6b93aa
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/default.nix
@@ -0,0 +1,72 @@
+{ callPackage, callPackageOrig, stdenv, qt48 }:
+
+let
+ release = "4.10.2";
+
+ # Need callPackageOrig to avoid infinite cycle
+ kde = callPackageOrig ./kde-package {
+ inherit release ignoreList extraSubpkgs callPackage;
+ };
+
+ # The list of igored individual modules
+ ignoreList = {
+ # Doesn't work yet
+ kdeutils = [ "ksecrets" ];
+ # kdeadmin/strigi-analyzer has no real code
+ kdeadmin = [ "strigi-analyzer" ];
+ # fake package to make things just work
+ kdesdk = [ "fake" ];
+ # Most of kdebindings do not compile due to a bug in the buildsystem
+ kdebindings = [ "kimono" "korundum" "kross-interpreters" "perlkde" "qyoto" ];
+ };
+
+ # Extra subpackages in the manifest format
+ extraSubpkgs = {
+ kdesdk = [
+ { name="cervisia"; }
+ { name="lokalize"; }
+ { name = "kioslave-svn"; sane = "kioslave_svn"; subdir = "kioslave"; }
+ { name = "kioslave-perldoc"; sane = "kioslave_perldoc"; subdir = "kioslave"; }
+ { 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="dolphin-plugins-hg"; sane="dolphin_plugins_hg";subdir="dolphin-plugins/hg"; }
+ { name="dolphin-plugins-bazaar"; sane="dolphin_plugins_bazaar";subdir="dolphin-plugins/bazaar"; }
+ { name="kcachegrind"; }
+ { name="kapptemplate"; }
+ { name="kdesdk-strigi-analyzers"; sane="kdesdk_strigi_analyzers";}
+ { name="kdesdk-thumbnailers"; sane="kdesdk_thumbnailers";}
+ { name="okteta"; }
+ { name="kompare"; }
+ { name="poxml"; }
+ { name="kde-dev-scripts"; sane = "kde_dev_scripts"; }
+ { name="kde-dev-utils"; sane="kde_dev_utils";}
+ #{ name="kprofilemethod"; subdir = "kde-dev-utils/kprofilemethod";}
+ #{ name="kstartperf"; }
+ #{ name="kmtrace"; subdir = "kde-dev-utils/kmtrace"; }
+ #{ name="kpartloader"; }
+ #{ name="kuiviewer"; }
+ { name="umbrello"; }
+ ];
+ };
+
+in
+
+kde.modules // kde.individual //
+{
+ inherit (kde) manifest modules individual splittedModuleList;
+
+ akonadi = callPackage ./support/akonadi { };
+
+ qt4 = qt48;
+
+ kdebase_workspace = kde.modules.kde_workspace;
+
+ inherit release;
+
+ full = stdenv.lib.attrValues kde.modules;
+
+ l10n = callPackage ./l10n {
+ inherit release;
+ inherit (kde.manifest) stable;
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/files/kde-wallpapers-buildsystem.patch b/pkgs/desktops/kde-4.10/files/kde-wallpapers-buildsystem.patch
new file mode 100644
index 000000000000..378cdb646940
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/files/kde-wallpapers-buildsystem.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3d3e247..f78db67 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,5 +1,10 @@
+-find_package(KDE4 REQUIRED)
+-include(KDE4Defaults)
++project(kde-wallpapers NONE)
++if( WALLPAPER_INSTALL_DIR )
++ message(STATUS "Installing wallpapers to user-supplied directory ${WALLPAPER_INSTALL_DIR}")
++else()
++ find_package(KDE4 REQUIRED)
++ include(KDE4Defaults)
++endif()
+
+ install(DIRECTORY Air DESTINATION ${WALLPAPER_INSTALL_DIR} PATTERN .svn EXCLUDE)
+
diff --git a/pkgs/desktops/kde-4.10/files/polkit-install.patch b/pkgs/desktops/kde-4.10/files/polkit-install.patch
new file mode 100644
index 000000000000..d2ecac663ec5
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kactivities.nix b/pkgs/desktops/kde-4.10/kactivities.nix
new file mode 100644
index 000000000000..06381bb13d7d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kactivities.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, nepomuk_core }:
+
+kde {
+ propagatedBuildInputs = [ kdelibs nepomuk_core ];
+
+ meta = {
+ description = "KDE activities library and daemon";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kde-base-artwork.nix b/pkgs/desktops/kde-4.10/kde-base-artwork.nix
new file mode 100644
index 000000000000..3f416cebddc4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-base-artwork.nix
@@ -0,0 +1,14 @@
+{ kde, kdelibs }:
+
+kde {
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "0mrd3w7rhsj0v92c8rh9zjxyifq7wyvwszksf2gyn53dzd06blk8";
+
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "KDE Base artwork";
+ license = "GPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kde-baseapps/kde-baseapps.nix b/pkgs/desktops/kde-4.10/kde-baseapps/kde-baseapps.nix
new file mode 100644
index 000000000000..b564e339eb15
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-baseapps/kde-baseapps.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, shared_desktop_ontologies, glib, htmlTidy, kactivities
+, nepomuk_core, nepomuk_widgets, libXt }:
+
+kde {
+ buildInputs = [ kdelibs nepomuk_core nepomuk_widgets htmlTidy kactivities libXt ];
+
+ meta = {
+ description = "Base KDE applications, including the Dolphin file manager and Konqueror web browser";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kde-package/4.10.2.nix b/pkgs/desktops/kde-4.10/kde-package/4.10.2.nix
new file mode 100644
index 000000000000..64bc7d56e690
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-package/4.10.2.nix
@@ -0,0 +1,399 @@
+{stable=true;
+hashes=builtins.listToAttrs[
+ {name="analitza";value="1k950n7rq081qy2pv7cbwzr81qp6bifll7cddgwgxk9kv16wrmh1";}
+ {name="ark";value="11jfdw4hkma564r6b9mn6vn2h5s6b6mf4imjad6iw7z3lxq6v7w9";}
+ {name="audiocd-kio";value="0zgil29ig2n5km3wzsx0gpwxk7l6zpcnxqgws9mgaqm3vnfqcjh6";}
+ {name="blinken";value="19jxlqalxfbxh1dshgpdyjkb8n7bynfr09p4hy38kv6nfil890y8";}
+ {name="bomber";value="08g82id9sf1m9zg38k47vannqcpm3fmskpgz4j41bcn24yfwynvf";}
+ {name="bovo";value="1zsbly04bcn00gyl751vszw82pvakdlw6l1n67hsgg3h5wa5z1fb";}
+ {name="cantor";value="1f3xwl9da0cz25qrx47p9b1bkcsbdj4i740py6awvhrrq60s0870";}
+ {name="dragon";value="0f9ma8aaglxh91inm711y64xqscxlqfil53gpk8c1bbanb8m99xp";}
+ {name="ffmpegthumbs";value="12fljrxyv8zgr1vl0ki8hxahwm4dn15pqhb1xgkw5pld0lvcq4sy";}
+ {name="filelight";value="0jiahda52k4knka4b0an4g2brbp263b2q8c09ayzmcd4mp9a4cgv";}
+ {name="granatier";value="0npp24j7bxmnfi743qsjn4ymi5b5icli0fb6g4x2f713z7i6raf8";}
+ {name="gwenview";value="1bznjfki05mydgjb3bmj5dymh33rac9lxrzlczqmah87c0f8fbc7";}
+ {name="jovie";value="17fbyja7ffsx0q6wlls9lagfcv8b21cnjnww06k90cyg0vn7sng4";}
+ {name="juk";value="0ni0iqprfrypx1iwgphhxwyw9216nc5s7hb0hv5j3v2kl1v2ir2n";}
+ {name="kaccessible";value="1zqbs26nl6wxnkya6nqzvnjfwmsqciraixi1awra4nzzx7n736rg";}
+ {name="kactivities";value="1d0xalwk2hlz0xxfgkrkfp0kgl347psgfhixsl8axhjgfxxi3bmx";}
+ {name="kajongg";value="1k401zxhkw8nha69kqr5igfwfgzlbmlvsy24fn4m2h2k1sh3vdcj";}
+ {name="kalgebra";value="1dzj9m6rm07xfr7plf9f7qrs44fzs4j9ncj02h9hzjli7zb44c3p";}
+ {name="kalzium";value="03zwwsbnizqm23zrhh5iagayw7jynmx87fwv0piiz65mgn4kxr5p";}
+ {name="kamera";value="1qvq4flqw1hw3513mcqdhsdvvr12sac272lhaf3jzxsm7p1qc3p1";}
+ {name="kanagram";value="0b5h2b8jm9zssn1hcl0wzf3mh11yh5hhaiay1i5db9k9g6y2nbn1";}
+ {name="kapman";value="1ghlfhmjivxnbga255x2lcdi6kxddyb3hnq93n6bzpg30m4j95sx";}
+ {name="kate";value="0cfdpg5j0zfi1zi0cjq8m3lgnbc9pwb2wlr9dvm4m0hy7byp88p3";}
+ {name="katomic";value="1r2nxya5c6dazvi7810hr24ydkyyb11ganbxkc4d1m8735i6fbqw";}
+ {name="kblackbox";value="0hslyixnw5bb2z71jncahjhnnf08baid8vxsp9n6a4ckcvbmldw4";}
+ {name="kblocks";value="1ds06amafp2igkhcjlwmaszbdvx4kfzlqpx57r5r4nlypnqfvv7k";}
+ {name="kbounce";value="0qp5ayyv3vacr2vak797wzxvkl5b9wn3db1rrzldiixb067f8jzy";}
+ {name="kbreakout";value="1ywk8zwpgqichq12idracld1gjv8gzhfyzxfi1n7165jyqqf9ba6";}
+ {name="kbruch";value="0vr1pbh7ds30vys3gd71c056fc96m5jpi7ihdbvm96p0bz94s7s4";}
+ {name="kcalc";value="1wni970xvd0inpxgw6mb85h6j9acp8vv62v7ipxcm4s4ay5jj9n1";}
+ {name="kcharselect";value="1rigpqyykd9s3gsai61y0jm6vbcza9gafwr2a4kgr72w7rn767fk";}
+ {name="kcolorchooser";value="0k60hbx41snpx83ivmnakl0a4li72pdimbgg987pl9ydjb7ja8gy";}
+ {name="kdeadmin";value="1a6412g8083g9b1xf75cwf0x3x3szadcqw3r4415vxww6kmb8br1";}
+ {name="kdeartwork";value="0a12fcmvhbc11vlmgds43mqbc6zf5j00dpsnj27ylz0nckjlajlb";}
+ {name="kde-baseapps";value="1gmyy9lkgcjhhbffzq51rjqr4m59x16qcsplcyywz218zr28gpfs";}
+ {name="kde-base-artwork";value="1vz5y6qb1wy3vcinnbsxydy39gz2ifls56dyg082j2f709hijzy3";}
+ {name="kdegraphics-mobipocket";value="0nf2k94bz8iqrr60zrql5mg14q14przq5lxscm71kk1bhdh711si";}
+ {name="kdegraphics-strigi-analyzer";value="10l1bmnskmfrwln78pzagfhz5kc2nipdm57i1c3fyp15d0msdgjz";}
+ {name="kdegraphics-thumbnailers";value="0p6bmllgzamfc3f9vigdq8knlblsmp4308lhh4f5bw5wkncjglqg";}
+ {name="kdelibs";value="1bylppbp6bzqyhkw5cavccmxh6zixjzc3z4g28d2lqixga1l16qz";}
+ {name="kdenetwork";value="0kjjwj69a79rfx7z3qxp5gjpykqq3nkwr5cm50f0phsfnflzx9l8";}
+ {name="kdepim";value="14q30gf3al23sx7cf8mhp89xa5c5xd1ns7dwq26igzkvji79kwlk";}
+ {name="kdepimlibs";value="1m56ljhssdj581hsb4irkgi6dwx25s5x8axk4fpipzvj6dq6yplz";}
+ {name="kdepim-runtime";value="1c9wv2wr843090jg41dwhqmvvvzqw875asmvydhj6kw625k62hr1";}
+ {name="kdeplasma-addons";value="1n1yar1rqw3swfnjmazqs1qm7yg19pki97204xa8dnlispbqk21s";}
+ {name="kde-runtime";value="0gmirvzs5cvh6rzps59hqkj4zk3nixh7i5hrxmm1ib7g1qnh0kfg";}
+ {name="kdesdk";value="1nyff19fv186n1j14qpvgslnaphl5y4rls8rn0yc0vxh31x769d9";}
+ {name="kdetoys";value="12c4h8vv5fd12k1wkbpmsf95c0gqa8nnwhszri72danal1qak7jj";}
+ {name="kde-wallpapers";value="17kavdzxql2cgpqrw0v9c2aflajv0l1qgllsg0l5qr7w68fqdjn7";}
+ {name="kdewebdev";value="0hv4ly6323f64wiqvizdn1ia0z50chhravm796wczb8xw8mcidh8";}
+ {name="kde-workspace";value="0rv8gdwlkvhajbn5s8mybrqc4ilpq4b0v7r55zp9dcb27c8jkr1n";}
+ {name="kdf";value="1bkj5yr7ds74gqlfsvyxf26kdqsyac8kg04phnc2rkzp31dvgldg";}
+ {name="kdiamond";value="1y1fyv211mvh5sbw55f827b7nx4da3aaly7c1bm2c13nnj7j5r9s";}
+ {name="kfloppy";value="063zzya13jmcdr2y3vig5k54hx1asnzs6lg2r5sckqp5lsmpdaz5";}
+ {name="kfourinline";value="1af58yrhpjhj61ppxfymw5z43ks9j5cz6ldagxiblp67w4bpa468";}
+ {name="kgamma";value="167z8ycnvi59kvmyar856hkcpb4znwhkkxvn4gg4g74byjzwlf3a";}
+ {name="kgeography";value="04p6ypf72gd2k54qaarsgyvji0bvsi0iqbbjr4qdyd9dhxihhzzp";}
+ {name="kgoldrunner";value="13m1j31fjiz6j0wfivkvgcmicz274h0jvdm8mkjzlp10g3691x4p";}
+ {name="kgpg";value="00zs8x2dhli8dlmj0365gq9517pzkpyf31kb4398zfrrcmja2qip";}
+ {name="khangman";value="1wj439z0n6sy1l5vknh9nrq2d1q2bq5sh0963g1zb9hp8l13bf8a";}
+ {name="kig";value="0hhfvl38czabramgyxjlazqp4dlkkc859fs36wq042iip05kyy3q";}
+ {name="kigo";value="0bvcqsq8w983lnrgi85pjajb7phbg826ky50w5wk5vql1afl02c6";}
+ {name="killbots";value="08j9p8wyqpjj78b9sj13f4vhlkcrhc7sgzwakcv4bg2dvmpr95mp";}
+ {name="kimono";value="14z3ca8s7swwxwnm198bq4ndfsl2m0brc9k465k7rj50l15y0rhl";}
+ {name="kiriki";value="13cay0dllcf5618yjjs1hz3392hcig8bj7r09b0hbqhay65z9l5y";}
+ {name="kiten";value="0lrdkha6xmlxfq9f36rb5ysk8hg9m5zmc9x1y206gxk3rf3k1wzj";}
+ {name="kjumpingcube";value="179p3lw1vl9vxvsdwzx8qjfrahii0igakw0qrdpkcmx4yr0a9gfx";}
+ {name="klettres";value="149xgrxqbp2bq8v2abzhmb8w2b2ssd7xmb06j6k1s707wc9kcs5g";}
+ {name="klickety";value="00x4f4nxfi9xasrddnc84vayn36dd0chyl8jxryswg8dabzazb25";}
+ {name="klines";value="0vamlsz3a945zcm34gb3w0iq2rknwkh9cbv1syh3cc2s9dn5sg29";}
+ {name="kmag";value="06jcp2nhgqbw6yrr5xhajsy2lxklk31kjfmq0pphssfs9yhi1pan";}
+ {name="kmahjongg";value="07hj806mix703h9x676rnwmklrfms04hfxidvzl0324idjw6v5m9";}
+ {name="kmines";value="07nrv4qn7wg590id83dgw7l5kyh4prj3nbi9np4x9ik1rr5bq9nm";}
+ {name="kmix";value="1hwmn4rvr7jid4y3gycsvxvvfxmkv128jxsdfjdhzqz8lcp2q87q";}
+ {name="kmousetool";value="1mrhppgrwwr3cyr3fna0hgypclssixhw9yx6wvqgqj3sc5wd6n4f";}
+ {name="kmouth";value="1s7789qsvg18548bdhmmgcs3w9843naxhcwsiqhc8x0dvaxlgd5r";}
+ {name="kmplot";value="0jzrc47c4v6hvrs6p0yhki70diyfgs55vnjac4gfrfn17jgh562w";}
+ {name="knavalbattle";value="1mqvlvhqd7sa4qsz6cf6gffysamgfml3nd4h71x5qzw8qqw778yq";}
+ {name="knetwalk";value="14nizf7nrvsmqg6d5vaazl8wf74q64gwxq6nmj86brinf7d5nn5h";}
+ {name="kolf";value="1qghkmzbpaajb91xcwd22fx87cfpmgmjjwqisdzkjz4qn3z5mpx0";}
+ {name="kollision";value="1z0xg967q3l2gxmnigjbrnqwvw5fm7cpscpfavn31zp4vbmk937m";}
+ {name="kolourpaint";value="135i7h1lf23cggzx7l2p2hsh7s4zrik3298fwwbhly0jl564ribb";}
+ {name="konquest";value="133zjqqpzwrai34f8gb4nk3im50i61c2my8hnqzr61pbbgd61ff3";}
+ {name="konsole";value="1iaih9c6i5ad0bvalwykrdgrwz6wb7k6x808na1df0yynw76r4s7";}
+ {name="korundum";value="1h8rr229hwkckrvpz6zkkxpfkrpg18fvyxsqb01sjaky7c6i4649";}
+ {name="kpat";value="1imr9w6jymx4379ba7drpa9nmaq6z28hrf5jwi06crhp5fyi08dh";}
+ {name="kremotecontrol";value="0zzhjgpy17wrgcrr70z582zh7rj0n4vgbxksz7gl3qm543y15kry";}
+ {name="kreversi";value="0dmfsg38hhav78j4s34arjr09ahfblv4k7s8llpafg7cicm8g0iv";}
+ {name="kross-interpreters";value="043wpb05di9pw3h206lpccgpfghc4v23s0n2bwv30246ig75rmk1";}
+ {name="kruler";value="1g7f810d7940j9lylzj0k7d89mbblz8ai9gs5cc7n0mkrczb9ws9";}
+ {name="ksaneplugin";value="1svsfgsvd21f9fhrsvi2fasffrx0r5rf8a8r4jx19hlzcvha0kza";}
+ {name="kscd";value="1ipl9sq8zikdjs044lbi519jyvdaahi0f8a877zfdp0xspzqi398";}
+ {name="kshisen";value="06qkl8fwh8rql6hdl8fygvfybp7w6c3ys0qsnjpxk5bz4m5xap1d";}
+ {name="ksirk";value="1hqp00dilzkbkada7dc5j56sh2rp19xcirhvj26560whlwdxhcj5";}
+ {name="ksnakeduel";value="0nbn1pn0hzh6wmhxkabrga50y06k4gv4pbb5235jbynjmk539n31";}
+ {name="ksnapshot";value="09na29nydwi0cmgg9g6yqr3wl9npgiqpvdq3wxc5jk1kxadlb0aj";}
+ {name="kspaceduel";value="1xf5qb8a08ar0v0ws1iyiqbax6qc8crbhn59nzy2hrc12451lbkc";}
+ {name="ksquares";value="1iz9r80mnkyq5mx4i95gx5a5qk5y5by8bwq9599ypamrb9fr1zpl";}
+ {name="kstars";value="0p86fpcyb1ipgmi2ypckdb5zzwanky9b3c1n5ddcr25y84b2m7iy";}
+ {name="ksudoku";value="0k5qdy0i20kxcsqdwzxhrw6rn3lzh2mgbw97rlxw5gmr3619irdz";}
+ {name="ktimer";value="149zlkpdz38pfg0yy9mi6xkrc3wcz790kc3026x1c5zyvb2nnwm7";}
+ {name="ktouch";value="109dwxxz1hcwj5506k33a0zy86ky50rp058x6pgqh1m0a6ljvswi";}
+ {name="ktuberling";value="1vsdkx7kz4gz35g3ggn6h5gmk43sww7mawdfl4r11q5rq7r2nlnx";}
+ {name="kturtle";value="1jvj34jlbvzvwmr7q8c12rh9q47d78dl6vx6lhjhvs1b0969zzrq";}
+ {name="kubrick";value="1vqjbf6p6adrmnrl4i4y1jh80rimzlp4fyfmgscpfncdnc5pzgb0";}
+ {name="kwallet";value="0sc6xn1gyl2jvfqqvln2x4cb68b2x5cjmb8gvxhgwizx93jmwkc1";}
+ {name="kwordquiz";value="1i7kdfp8x1r109jmj1a86bmn69cgjc8q9c4n92j1imr17ig063is";}
+ {name="libkcddb";value="1krr3jh46q3q02rps3wawv59bv9jzri7i4gi4qgszk5v8gn67nqb";}
+ {name="libkcompactdisc";value="1y7sznz6sdrgs8jiqxs2y7imqywq91l46w1dv8fkc9mcpx5233zb";}
+ {name="libkdcraw";value="1nhhnj6hir347g6jp20k5jq0faygp8x9k3lic9ixdw2byigy9c3p";}
+ {name="libkdeedu";value="0m0ipprcldg1l2yi0hpq87npvqic9vfh6pn60fg4wvl56syn0sfg";}
+ {name="libkdegames";value="1qs59v68nwli5438ax3am6694r1c04i7crv34bs9hksnmr51l499";}
+ {name="libkexiv2";value="0n93d4s37m2jdg04wgvmljrs7j14967bjjk6mk7fibv0jqmp65i5";}
+ {name="libkipi";value="0kjp9y2rngvhskzk63az6zfzjrysir2qlapy56ynscdgq3yl0ygm";}
+ {name="libkmahjongg";value="0g7fp0wzrhxfyhj46bv0in8z4iwal6ipjjcm38qz1j4ric71l1kf";}
+ {name="libksane";value="0pqgh21ymq0pclbvq411aglclak6afqll5d0y8hz8m6afkmjhqxc";}
+ {name="lskat";value="04gvh3266hllfzl5syai3qw7zvkd7jipqdrwzynqvzpdg725a05g";}
+ {name="marble";value="0v4c1psyl5342f01n0794wk0ckg5chblibvap0vicanlq16pp65f";}
+ {name="mplayerthumbs";value="198b8f3s7zv4sprbj22flzdpxsag91p283iym5q9mkialf51789y";}
+ {name="nepomuk-core";value="15zzraacig4qqmwabw7xy38ddvcxam7djw96yhxc0z8zr3xffysj";}
+ {name="nepomuk-widgets";value="1kjzp7px5l7q9bal0dxpm24wq05s0wbjgqli6bhx7d5hipfr53w2";}
+ {name="okular";value="0zvmfh9ijwx10zy9nq6295x1w9x1xljkdcsz5269m230ff6wwmnh";}
+ {name="oxygen-icons";value="1z46zmazg1hf6yy2krfqpb5i5xmf7kpw9l7wvh3ihfqsdh77qmn8";}
+ {name="pairs";value="0i9wg6a3y71m3bdp5qjk6f9bmmd45r9hi7b8fqxp8srxcqn5hzx1";}
+ {name="palapeli";value="1cq8vggcc1358nf4n15pycmbn7m50lndd1w0541c85qirlnrq7wm";}
+ {name="parley";value="0cqdmjcsjqa8p42p7j8ni9mkf898p5hs3wdb757b4c1vyzkkdlpx";}
+ {name="perlkde";value="0w628fdxqmwv8k0x22307a4cpwlvq3lfsbhl5b3bv7naqjnwf549";}
+ {name="perlqt";value="11g5rh32i2x8klg5y5bapg581k4gm38jdfsmqsrjdcmxfw94bjil";}
+ {name="picmi";value="0y3s3k1x78z2asbcrcl8xkrk7kkz2ci4lbh1jfbnd66bx7lmwv0l";}
+ {name="print-manager";value="0x8lqjndi3ln90n8bgw26k09kz5ghkfm2xgqi4y0295ggbm3cm24";}
+ {name="pykde4";value="02qih6jw13mv9x4wf85ff9m5akdmxrz2jf2nlldyimh879dn0hxr";}
+ {name="qtruby";value="15wv6rh8d1f0d96f42bawyljlkpnamwxqng69jfd3q44j54gjkc5";}
+ {name="qyoto";value="1jpk5vp4ymvy8hhqia7b4mw0pzgdskb3aff30ik154mngzaqbdzc";}
+ {name="rocs";value="131gb6xfcrmwnl7nbxpm1rip9q2r8wzw8pb8f8a47vvswf200n7g";}
+ {name="smokegen";value="1vcc7yz6j7ndk8ppg7zr546cji6x5w38nlfc1lanq1pb3lbsddwn";}
+ {name="smokekde";value="1ib1xj6lkh2z80l9dci6w58f62f2mmpfz6hm81hygxqyxbf8rl64";}
+ {name="smokeqt";value="1fpv9c1qsl08p8s5a86ql0342hbalbh2inxv9a3risqg6qd0is6l";}
+ {name="step";value="1iayd98rqsl5qm1r4jiabnhw68691kakajgp9kpmn302ljn2wx5j";}
+ {name="superkaramba";value="1g86gacs1ss2sa3vdyg1ciwbpcd6d3i8yfb7fjmgvjm4qiyl3npg";}
+ {name="svgpart";value="0iy01cl4p37bfmr5779shbp202w25ik3phsqq6yjzfb7521xbm4r";}
+ {name="sweeper";value="1np09is041rb7bk8q1bhl0wmv3dypmsgyvd5yxg1qlsibn8mwbiw";}
+];
+modules=[
+{
+ module="kdemultimedia";
+ split=true;
+ pkgs=[
+ { name="audiocd-kio"; sane="audiocd_kio"; }
+ { name="dragon"; }
+ { name="ffmpegthumbs"; }
+ { name="juk"; }
+ { name="kmix"; }
+ { name="kscd"; }
+ { name="libkcddb"; }
+ { name="libkcompactdisc"; }
+ { name="mplayerthumbs"; }
+ ];
+}
+{
+ module="kdegraphics";
+ split=true;
+ pkgs=[
+ { name="gwenview"; }
+ { name="kamera"; }
+ { name="kcolorchooser"; }
+ { name="kdegraphics-mobipocket"; sane="kdegraphics_mobipocket"; }
+ { name="kdegraphics-strigi-analyzer"; sane="kdegraphics_strigi_analyzer"; }
+ { name="kdegraphics-thumbnailers"; sane="kdegraphics_thumbnailers"; }
+ { name="kgamma"; }
+ { name="kolourpaint"; }
+ { name="kruler"; }
+ { name="ksaneplugin"; }
+ { name="ksnapshot"; }
+ { name="libkdcraw"; }
+ { name="libkexiv2"; }
+ { name="libkipi"; }
+ { name="libksane"; }
+ { name="okular"; }
+ { name="svgpart"; }
+ ];
+}
+{
+ module="kdelibs";
+ split=true;
+ pkgs=[
+ { name="kdelibs"; }
+ { name="nepomuk-core"; sane="nepomuk_core"; }
+ { name="nepomuk-widgets"; sane="nepomuk_widgets"; }
+ ];
+}
+{
+ module="kdeutils";
+ split=true;
+ pkgs=[
+ { name="ark"; }
+ { name="filelight"; }
+ { name="kcalc"; }
+ { name="kcharselect"; }
+ { name="kdf"; }
+ { name="kfloppy"; }
+ { name="kgpg"; }
+ { name="kremotecontrol"; }
+ { name="ktimer"; }
+ { name="kwallet"; }
+ { name="print-manager"; sane="print_manager"; }
+ { name="superkaramba"; }
+ { name="sweeper"; }
+ ];
+}
+{
+ module="applications";
+ split=true;
+ pkgs=[
+ { name="kate"; }
+ { name="konsole"; }
+ ];
+}
+{
+ module="kdegames";
+ split=true;
+ pkgs=[
+ { name="bomber"; }
+ { name="bovo"; }
+ { name="granatier"; }
+ { name="kajongg"; }
+ { name="kapman"; }
+ { name="katomic"; }
+ { name="kblackbox"; }
+ { name="kblocks"; }
+ { name="kbounce"; }
+ { name="kbreakout"; }
+ { name="kdiamond"; }
+ { name="kfourinline"; }
+ { name="kgoldrunner"; }
+ { name="kigo"; }
+ { name="killbots"; }
+ { name="kiriki"; }
+ { name="kjumpingcube"; }
+ { name="klickety"; }
+ { name="klines"; }
+ { name="kmahjongg"; }
+ { name="kmines"; }
+ { name="knavalbattle"; }
+ { name="knetwalk"; }
+ { name="kolf"; }
+ { name="kollision"; }
+ { name="konquest"; }
+ { name="kpat"; }
+ { name="kreversi"; }
+ { name="kshisen"; }
+ { name="ksirk"; }
+ { name="ksnakeduel"; }
+ { name="kspaceduel"; }
+ { name="ksquares"; }
+ { name="ksudoku"; }
+ { name="ktuberling"; }
+ { name="kubrick"; }
+ { name="libkdegames"; }
+ { name="libkmahjongg"; }
+ { name="lskat"; }
+ { name="palapeli"; }
+ { name="picmi"; }
+ ];
+}
+{
+ module="kdeedu";
+ split=true;
+ pkgs=[
+ { name="analitza"; }
+ { name="blinken"; }
+ { name="cantor"; }
+ { name="kalgebra"; }
+ { name="kalzium"; }
+ { name="kanagram"; }
+ { name="kbruch"; }
+ { name="kgeography"; }
+ { name="khangman"; }
+ { name="kig"; }
+ { name="kiten"; }
+ { name="klettres"; }
+ { name="kmplot"; }
+ { name="kstars"; }
+ { name="ktouch"; }
+ { name="kturtle"; }
+ { name="kwordquiz"; }
+ { name="libkdeedu"; }
+ { name="marble"; }
+ { name="pairs"; }
+ { name="parley"; }
+ { name="rocs"; }
+ { name="step"; }
+ ];
+}
+{
+ module="kdebindings";
+ split=true;
+ pkgs=[
+ { name="kimono"; }
+ { name="korundum"; }
+ { name="kross-interpreters"; sane="kross_interpreters"; }
+ { name="perlkde"; }
+ { name="perlqt"; }
+ { name="pykde4"; }
+ { name="qtruby"; }
+ { name="qyoto"; }
+ { name="smokegen"; }
+ { name="smokekde"; }
+ { name="smokeqt"; }
+ ];
+}
+{
+ module="kdeaccessibility";
+ split=true;
+ pkgs=[
+ { name="jovie"; }
+ { name="kaccessible"; }
+ { name="kmag"; }
+ { name="kmousetool"; }
+ { name="kmouth"; }
+ ];
+}
+{
+ module="kde-baseapps";
+sane="kde_baseapps"; split=true;
+ pkgs=[
+ { name="kde-baseapps"; sane="kde_baseapps"; }
+ ];
+}
+{ module="kactivities"; split=false;}
+{ module="kdeadmin"; split=false;
+ pkgs=[
+ { name="strigi-analyzer"; sane="strigi_analyzer";}
+ { name="kuser"; }
+ { name="kcron"; }
+ { name="ksystemlog"; }
+ ];
+
+}
+{ 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"; }
+ ];
+
+}
+{ module="kde-base-artwork"; sane="kde_base_artwork"; 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;}
+#had to add fake pkgs to kdesdk to get it to be treated like a split module
+{ module="kdesdk"; split=false; pkgs = [{ name="fake"; }]; }
+{ module="kdetoys"; split=false;
+ pkgs=[
+ { name="kteatime"; }
+ { name="ktux"; }
+ { name="amor"; }
+ ];
+
+}
+{ 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.10/kde-package/default.nix b/pkgs/desktops/kde-4.10/kde-package/default.nix
new file mode 100644
index 000000000000..cd2860920d67
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.xz";
+ 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.xz
+ kdeSubdirPkg = module:
+ {name, subdir ? name, sane ? name}:
+ let name_ = name; in
+ a@{cmakeFlags ? [], name ? name_, meta ? {}, ...}:
+ stdenv.mkDerivation ({
+ name = "${name}-${release}";
+ src = kdesrc module;
+ cmakeFlags =
+ [ "-DDISABLE_ALL_OPTIONAL_SUBDIRECTORIES=TRUE"
+ "-DBUILD_doc=TRUE"
+ "-DBUILD_${subdir}=TRUE"
+ ] ++ cmakeFlags;
+ meta = defMeta // meta;
+ enableParallelBuilding = module.enableParallelBuilding or true;
+ } // (removeAttrs a [ "meta" "name" "cmakeFlags" ]));
+
+ # A KDE monolithic module
+ kdeMonoModule = name: path: callPackage path { kde = kdeMonoPkg name; };
+
+ # Combine packages in one module.
+ # Arguments:
+ # * pkgFun --- a function of the following signature:
+ # module: manifest_attrs: manual_attrs: derivation;
+ # * module --- name of the module
+ # * pkgs --- list of packages in manifest format
+ combinePkgs = pkgFun: module: pkgs:
+ let
+ f = p@{name, ...}:
+ callPackage (./.. + "/${module}/${name}.nix") { kde = pkgFun module p; };
+ list = map f pkgs;
+ attrs = listToAttrs (map
+ ({name, sane ? name, ...}@p: { name = sane; value = f p; })
+ pkgs);
+ in
+ runCommand "${module}-${release}"
+ ({passthru = attrs // {
+ propagatedUserEnvPackages = list;
+ projects = attrs;
+ };})
+ ''
+ mkdir -pv $out/nix-support
+ echo "${toString list}" | tee $out/nix-support/propagated-user-env-packages
+ '';
+
+ # Given manifest module data, return the module
+ kdeModule = { module, sane ? module, split, pkgs ? [] }:
+ let
+ pkgs_ = filterPkgs module pkgs;
+ in
+ # Module is splitted by upstream
+ if split then combinePkgs kdeSplittedPkg module pkgs_
+ # Monolithic module
+ else if pkgs == [] then kdeMonoModule module (./.. + "/${module}.nix")
+ # Module is splitted by us
+ else combinePkgs kdeSubdirPkg module pkgs_;
+
+ # The same, as nameValuePair with sane name
+ kdeModuleNV = a@{ module, sane ? module, ... }:
+ { name = sane; value = kdeModule a; };
+
+ filterPkgs = module: (p:
+ removeNames (stdenv.lib.attrByPath [module] [] ignoreList) p
+ ++ (stdenv.lib.attrByPath [module] [] extraSubpkgs));
+
+ # Remove attrsets with x.name in subst. Optimized for empty subst.
+ removeNames = subst: big:
+ fold (s: out: filter (x: x.name != s) out) big subst;
+
+ modules = listToAttrs (map kdeModuleNV manifest.modules);
+
+ splittedModuleList =
+ let
+ splitted = filter (a: a ? pkgs) manifest.modules;
+ names = map ({module, sane ? module, ...}: sane) splitted;
+ in
+ map (m: m.projects) (stdenv.lib.attrVals names modules);
+
+ individual =
+ stdenv.lib.zipAttrsWith
+ (
+ name: list:
+ if tail list == []
+ then head list
+ else abort "Multiple modules define ${name}"
+ )
+ splittedModuleList;
+}
diff --git a/pkgs/desktops/kde-4.10/kde-package/kde-manifest.sh b/pkgs/desktops/kde-4.10/kde-package/kde-manifest.sh
new file mode 100755
index 000000000000..e964ce3ddc11
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-package/kde-manifest.sh
@@ -0,0 +1,146 @@
+#! /bin/sh
+
+# Usage: download kde release to $dir, then run
+# $0 $dir
+
+dir="$1"
+
+# Detect release number & whether it is a stable release
+if [[ ! -d "${dir}" ]]; then
+ echo "${dir} is not a directory (or doesn't exist)!" >&2
+ exit 1
+fi
+
+release=$(ls "${dir}"/kdelibs-*.tar.xz | \
+ sed -e 's/.*kdelibs-//' -e 's/\.tar\.xz//')
+
+if [[ ${release##*.} -gt 50 ]]; then
+ stable="false"
+else
+ stable="true"
+fi
+
+echo "Detected release ${release}" >&2
+
+declare -A hash
+declare -A modules
+declare -a packages
+declare -a top_level
+
+# xsltproc output declares -A module
+if [[ ! -f kde_projects.xml ]]; then
+ curl -O -J http://projects.kde.org/kde_projects.xml
+fi
+eval `xsltproc kde-submodules.xslt kde_projects.xml`
+
+module[kde-baseapps]=kde-baseapps
+unset module[kactivities]
+
+print_sane() {
+ echo "Called print_sane $1" >&2
+ sane="${1//[^a-z0-9_]/_}"
+ if [[ "$sane" != "$1" ]]; then
+ echo "Sane version is $sane" >&2
+ echo -n "sane=\"$sane\";"
+ fi
+}
+
+for i in `cd "${dir}"; ls *-${release}.tar.xz`; do
+ package=${i%-${release}.tar.xz}
+ packages+=( "$package" )
+ echo -n "${package}.. " >&2
+ hash[$package]=$(nix-hash --type sha256 --flat --base32 "${dir}/${i}")
+ echo -n ${hash[$package]} >&2
+
+ if [ -n "${module[$package]}" ]; then
+ m="${module[$package]}"
+ echo " (${m})" >&2
+ modules[$m]=1
+ else
+ top_level+=( "$package" )
+ echo " (top-level)" >&2
+ fi
+ #nix-store --add-fixed sha256 "${dir}/${i}" >&2
+done
+
+
+print_pkg_hash() {
+ echo " {name=\"${1}\";value=\"${hash[$1]}\";}"
+}
+
+print_hashes(){
+ echo "hashes=builtins.listToAttrs["
+ for p in "${packages[@]}"; do print_pkg_hash "$p"; done
+ echo "];"
+}
+
+print_split_module(){
+ echo -n "$1:" >&2
+ echo -e "{\n module=\"$1\";"
+ print_sane "$1"
+ echo " split=true;"
+ echo " pkgs=["
+ for p in "${packages[@]}"; do
+ if [[ "${module[$p]}" == "$1" ]]; then
+ echo -n " { name=\"$p\"; "
+ print_sane "$p"
+ echo " }"
+ echo -n " $p" >&2
+ fi
+ done
+ echo " ];"
+ echo "}"
+ echo >&2
+}
+
+print_mono_module(){
+ echo -en "{ module=\"$1\"; "
+ print_sane "$1"
+ echo -n "$1 ... " >&2
+ echo -n " split=false;"
+ cml="$1-$release/CMakeLists.txt"
+ tar -xf "${dir}/$1-${release}.tar.xz" "$cml"
+ if grep '^[^#]*add_subdirectory' $cml >/dev/null; then
+ if grep '^[^#]*add_subdirectory' $cml | grep -v macro_optional_add_subdirectory >/dev/null; then
+ echo " is monolithic (has unconditionally added subdirs)" >&2
+ else
+ subdirs=( `grep '^[^#]*add_subdirectory' $cml |
+ sed -e 's/[^#]*add_subdirectory *( *\(.*\) *)/\1/' |
+ grep -v '\(doc\|cmake\)'` )
+ echo " seems splittable, subdirs: ${subdirs[*]}" >&2
+ echo -e "\n pkgs=["
+ for s in "${subdirs[@]}"; do
+ echo -en " {"
+ echo -n " name=\"${s//\//-}\"; "
+ print_sane "$s"
+ if [[ $s != "${s//\//-}" ]]; then
+ echo -n "subdir=\"$s\"; "
+ fi
+ echo "}"
+ done
+ echo -e " ];\n"
+ fi
+ else
+ echo " is monolithic (has no subdirs)" >&2
+ fi
+ rm $cml
+ rmdir $1-$release
+ echo "}"
+}
+
+print_modules(){
+ echo "modules=["
+ echo "Printing modules splitted by upstream" >&2
+ for m in "${!modules[@]}"; do print_split_module "$m"; done
+ echo >&2
+ echo "Printing modules not splitted by upstream (${top_level[*]})" >&2
+ for m in "${top_level[@]}"; do print_mono_module "$m"; done
+ echo "];"
+}
+
+echo "Writing ${release}.nix" >&2
+exec > "${release}.nix"
+echo "{stable=${stable};"
+print_hashes
+print_modules
+echo "}"
diff --git a/pkgs/desktops/kde-4.10/kde-package/kde-submodules.xslt b/pkgs/desktops/kde-4.10/kde-package/kde-submodules.xslt
new file mode 100644
index 000000000000..952a05a9d274
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-package/kde-submodules.xslt
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+ declare -A module
+
+
+
+ module["
+
+ "]="
+
+ "
+
+
+
+
+
diff --git a/pkgs/desktops/kde-4.10/kde-runtime.nix b/pkgs/desktops/kde-4.10/kde-runtime.nix
new file mode 100644
index 000000000000..a0e58deb0b28
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-runtime.nix
@@ -0,0 +1,21 @@
+{ kde, kdelibs, shared_desktop_ontologies, bzip2, libssh, exiv2, attica
+, libcanberra, virtuoso, samba, libjpeg, ntrack, pkgconfig, qca2, xz, pulseaudio
+, networkmanager, nepomuk_core, kactivities, kdepimlibs
+}:
+
+kde {
+ buildInputs = [
+ kdelibs attica xz bzip2 nepomuk_core libssh libjpeg exiv2 ntrack
+ qca2 samba (libcanberra.override { gtk = null; }) pulseaudio
+ networkmanager kactivities kdepimlibs
+#todo: add openslp, openexr
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ passthru.propagatedUserEnvPackages = [ virtuoso ];
+
+ meta = {
+ license = "LGPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kde-wallpapers.nix b/pkgs/desktops/kde-4.10/kde-wallpapers.nix
new file mode 100644
index 000000000000..fe463786e4ca
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-wallpapers.nix
@@ -0,0 +1,17 @@
+{ kde, cmake }:
+
+kde {
+ nativeBuildInputs = [ cmake ];
+
+ patches = [ ./files/kde-wallpapers-buildsystem.patch ];
+
+ cmakeFlags = "-DWALLPAPER_INSTALL_DIR=share/wallpapers";
+
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "1qpnv4f8f2aga3i1w9k0f0s6myilnm0f9mja8ikkkgi2qpv1q66f";
+
+ meta = {
+ description = "Wallpapers for KDE";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kde-workspace.nix b/pkgs/desktops/kde-4.10/kde-workspace.nix
new file mode 100644
index 000000000000..a478dc975fe9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kde-workspace.nix
@@ -0,0 +1,38 @@
+{ kde, kdelibs, qimageblitz, libdbusmenu_qt, xorg, shared_desktop_ontologies,
+ lm_sensors, pciutils, libraw1394, libusb, libxklavier, python, libqalculate,
+ xkeyboard_config, kdepimlibs, pam, boost, gpsd, prison, akonadi,
+ libjpeg, pkgconfig, libXft, libXxf86misc, kactivities, qjson, networkmanager
+}:
+
+kde {
+
+#todo: googlegadgets, consolekit, xmms
+ buildInputs =
+ [ kdelibs qimageblitz libdbusmenu_qt libjpeg xorg.libxcb xorg.xcbutilimage
+ xorg.xcbutilrenderutil libXft #libXxf86misc
+ xorg.libxkbfile xorg.libXcomposite xorg.libXtst #xorg.libXScrnSaver
+ xorg.libXdamage xorg.libXau xorg.libXdmcp xorg.libpthreadstubs
+ boost gpsd lm_sensors pciutils libraw1394
+ libusb python libqalculate kdepimlibs pam prison akonadi qjson networkmanager
+ kactivities
+ ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ preConfigure =
+ ''
+ # Fix incorrect path to kde4-config.
+ substituteInPlace startkde.cmake --replace '$bindir/kde4-config' ${kdelibs}/bin/kde4-config
+
+ # Fix the path to the keyboard configuration files.
+ substituteInPlace kcontrol/keyboard/xkb_rules.cpp \
+ --replace /usr/share/X11 ${xkeyboard_config}/etc/X11
+ '';
+
+ enableParallelBuilding = false; # frequent problems on Hydra
+
+ meta = {
+ description = "KDE workspace components such as Plasma, Kwin and System Settings";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeaccessibility/jovie.nix b/pkgs/desktops/kde-4.10/kdeaccessibility/jovie.nix
new file mode 100644
index 000000000000..d38c80c4c36a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeaccessibility/kaccessible.nix b/pkgs/desktops/kde-4.10/kdeaccessibility/kaccessible.nix
new file mode 100644
index 000000000000..98fae7c983f8
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeaccessibility/kmag.nix b/pkgs/desktops/kde-4.10/kdeaccessibility/kmag.nix
new file mode 100644
index 000000000000..606c61cddb63
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeaccessibility/kmag.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+#todo: package qaccessibilityclient
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Screen magnifier for KDE";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeaccessibility/kmousetool.nix b/pkgs/desktops/kde-4.10/kdeaccessibility/kmousetool.nix
new file mode 100644
index 000000000000..8e0caa76ed9c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeaccessibility/kmousetool.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libXtst, libXt }:
+
+kde {
+ buildInputs = [ kdelibs libXtst libXt ];
+
+ meta = {
+ description = "A program that clicks the mouse for you";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeaccessibility/kmouth.nix b/pkgs/desktops/kde-4.10/kdeaccessibility/kmouth.nix
new file mode 100644
index 000000000000..4159501967cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeadmin/kcron.nix b/pkgs/desktops/kde-4.10/kdeadmin/kcron.nix
new file mode 100644
index 000000000000..bada0c1cb108
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeadmin/kcron.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdeadmin/ksystemlog.nix b/pkgs/desktops/kde-4.10/kdeadmin/ksystemlog.nix
new file mode 100644
index 000000000000..bada0c1cb108
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeadmin/ksystemlog.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdeadmin/kuser.nix b/pkgs/desktops/kde-4.10/kdeadmin/kuser.nix
new file mode 100644
index 000000000000..fa140765e7ff
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeadmin/kuser.nix
@@ -0,0 +1,5 @@
+{ kde, kdelibs, kdepimlibs, nepomuk_core }:
+
+kde {
+ buildInputs = [ kdelibs kdepimlibs nepomuk_core];
+}
diff --git a/pkgs/desktops/kde-4.10/kdeartwork/ColorSchemes.nix b/pkgs/desktops/kde-4.10/kdeartwork/ColorSchemes.nix
new file mode 100644
index 000000000000..acccf66976fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/FindXscreensaver.cmake b/pkgs/desktops/kde-4.10/kdeartwork/FindXscreensaver.cmake
new file mode 100644
index 000000000000..499ed75268e9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/HighResolutionWallpapers.nix b/pkgs/desktops/kde-4.10/kdeartwork/HighResolutionWallpapers.nix
new file mode 100644
index 000000000000..edffca1562e1
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/IconThemes.nix b/pkgs/desktops/kde-4.10/kdeartwork/IconThemes.nix
new file mode 100644
index 000000000000..43071e8bd142
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/WeatherWallpapers.nix b/pkgs/desktops/kde-4.10/kdeartwork/WeatherWallpapers.nix
new file mode 100644
index 000000000000..947e5e17ab0c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/desktopthemes.nix b/pkgs/desktops/kde-4.10/kdeartwork/desktopthemes.nix
new file mode 100644
index 000000000000..93dd361af738
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/emoticons.nix b/pkgs/desktops/kde-4.10/kdeartwork/emoticons.nix
new file mode 100644
index 000000000000..5ef9f78a7195
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/kscreensaver.nix b/pkgs/desktops/kde-4.10/kdeartwork/kscreensaver.nix
new file mode 100644
index 000000000000..7028b9db228d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeartwork/kscreensaver.nix
@@ -0,0 +1,15 @@
+{ kde, kdelibs, xscreensaver, kde_workspace, eigen, libkexiv2, libXt, pkgconfig }:
+
+kde {
+ buildInputs = [ kdelibs xscreensaver kde_workspace eigen libkexiv2 libXt ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ 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.10/kdeartwork/kwin-styles.nix b/pkgs/desktops/kde-4.10/kdeartwork/kwin-styles.nix
new file mode 100644
index 000000000000..b5d769b216db
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/sounds.nix b/pkgs/desktops/kde-4.10/kdeartwork/sounds.nix
new file mode 100644
index 000000000000..e98705da889e
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/styles.nix b/pkgs/desktops/kde-4.10/kdeartwork/styles.nix
new file mode 100644
index 000000000000..6a1306c37100
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeartwork/wallpapers.nix b/pkgs/desktops/kde-4.10/kdeartwork/wallpapers.nix
new file mode 100644
index 000000000000..611c6a70f6bc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdebindings/perlqt-include-smokeqt.patch b/pkgs/desktops/kde-4.10/kdebindings/perlqt-include-smokeqt.patch
new file mode 100644
index 000000000000..fd67860283b8
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/perlqt-include-smokeqt.patch
@@ -0,0 +1,19 @@
+commit 48b92b74bc6fd270c33a726257e2879203cf5064
+Author: Yury G. Kudryashov [diff odt]
+Date: Wed Mar 21 00:47:43 2012 +0400
+
+ Include SMOKE_QTCORE_INCLUDE_DIR
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 48020a1..2263a73 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -14,7 +14,7 @@ find_package(Smoke COMPONENTS QtCore QtGui QtNetwork Qt3Support QtDeclarative Qt
+ QtOpenGl QtScript QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns
+ Phonon Qwt QSci QImageBlitz)
+
+-include_directories(${SMOKE_INCLUDE_DIR} ${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/src)
++include_directories(${SMOKE_INCLUDE_DIR} ${SMOKE_QTCORE_INCLUDE_DIR} ${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/src)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${SMOKE_CMAKE_MODULE_DIR})
+ include(MacroOptionalFindPackage)
+ include(MacroOptionalAddBindings)
diff --git a/pkgs/desktops/kde-4.10/kdebindings/perlqt-rewrite-FindPerlMore.patch b/pkgs/desktops/kde-4.10/kdebindings/perlqt-rewrite-FindPerlMore.patch
new file mode 100644
index 000000000000..c7f73815f545
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/perlqt-rewrite-FindPerlMore.patch
@@ -0,0 +1,118 @@
+commit e702abfd16f610e773fb0310d8c6512991794c63
+Author: Yury G. Kudryashov [diff odt]
+Date: Wed Mar 21 00:50:02 2012 +0400
+
+ Rewrite FindPerlMore.cmake
+
+ * Ask perl for expanded paths
+ * Move execute_process to a macro
+ * Add PERL_*_INSTALL_DIR variables that point to CMAKE_INSTALL_PREFIX
+
+ The last change makes it easy to install a file into CMAKE_INSTALL_PREFIX
+ instead of perl install prefix.Add debug message
+
+diff --git a/cmake/FindPerlMore.cmake b/cmake/FindPerlMore.cmake
+index 6412a47..cc8faf8 100644
+--- a/cmake/FindPerlMore.cmake
++++ b/cmake/FindPerlMore.cmake
+@@ -5,54 +5,52 @@
+ #
+ # PERL_INCLUDE_PATH = path to where perl.h can be found
+
+-if(PERL_INCLUDE_PATH)
+- # Already in cache, be silent
+- SET(PERL_HEADERS_FOUND TRUE)
+-endif (PERL_INCLUDE_PATH)
+-
+-IF(PERL_EXECUTABLE)
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{archlib}"
+- OUTPUT_VARIABLE PERL_ARCH_LIB_DIR)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{sitearch}"
+- OUTPUT_VARIABLE PERL_SITE_ARCH_DIR)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{vendorarch}"
+- OUTPUT_VARIABLE PERL_VENDOR_ARCH_DIR)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{sitelib}"
+- OUTPUT_VARIABLE PERL_SITE_LIB_DIR)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{vendorlib}"
+- OUTPUT_VARIABLE PERL_VENDOR_LIB_DIR)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{version}"
+- OUTPUT_VARIABLE PERL_VERSION)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{ccflags}"
+- OUTPUT_VARIABLE PERL_CXX_FLAGS)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{ccdlflags}"
+- OUTPUT_VARIABLE PERL_CCDL_FLAGS)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -MFile::Spec -e "print '-L' . File::Spec->catdir(\$Config{archlibexp}, 'CORE')"
+- OUTPUT_VARIABLE PERL_EXTRA_LIB_PATHS)
+-
+- EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{perllibs}"
+- OUTPUT_VARIABLE PERL_LIBS)
+-
+- FIND_PATH(PERL_INCLUDE_PATH
+- NAMES perl.h
+- PATHS ${PERL_ARCH_LIB_DIR}/CORE
+- )
+-
+- if(PERL_INCLUDE_PATH)
+- SET(PERL_HEADERS_FOUND TRUE)
+- endif (PERL_INCLUDE_PATH)
+-
+- MARK_AS_ADVANCED(
+- PERL_INCLUDE_PATH
+- )
++if(FIND_PERLMORE_REQUIRED)
++ find_package(Perl REQUIRED)
++else()
++ find_package(Perl)
++endif()
++
++macro(_perl_get_config_var name output)
++ execute_process(COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \$Config{${name}}"
++ OUTPUT_VARIABLE PERL_${output})
++endmacro()
++
++macro(_perl_get_config_dir name)
++ string(TOLOWER ${name} _tmp)
++ string(REPLACE "_" "" _tmp ${_tmp})
++ _perl_get_config_var(${_tmp}exp ${name}_DIR)
++ string(REPLACE "${PERL_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" PERL_${name}_INSTALL_DIR "${PERL_${name}_DIR}")
++endmacro()
++
++if(PERL_EXECUTABLE)
++ _perl_get_config_var(prefixexp ROOT_DIR)
++
++ _perl_get_config_dir(ARCH_LIB)
++ _perl_get_config_dir(SITE_ARCH)
++ _perl_get_config_dir(VENDOR_ARCH)
++ _perl_get_config_dir(SITE_LIB)
++ _perl_get_config_dir(VENDOR_LIB)
++
++ _perl_get_config_var(version VERSION)
++ _perl_get_config_var(ccflags CXX_FLAGS)
++ _perl_get_config_var(ccdlflags CCDL_FLAGS)
++
++ EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MConfig -MFile::Spec -e "print '-L' . File::Spec->catdir(\$Config{archlibexp}, 'CORE')"
++ OUTPUT_VARIABLE PERL_EXTRA_LIB_PATHS)
++
++ _perl_get_config_var(perllibs LIBS)
++
++ FIND_PATH(PERL_INCLUDE_PATH
++ NAMES perl.h
++ HINTS ${PERL_ARCH_LIB_DIR}/CORE
++ )
++
++ if(PERL_INCLUDE_PATH)
++ SET(PERL_HEADERS_FOUND TRUE)
++ endif (PERL_INCLUDE_PATH)
++
++ MARK_AS_ADVANCED(PERL_INCLUDE_PATH)
+ ENDIF(PERL_EXECUTABLE)
+
+ IF(PERL_HEADERS_FOUND)
diff --git a/pkgs/desktops/kde-4.10/kdebindings/perlqt-use-site-arch-install-dir.patch b/pkgs/desktops/kde-4.10/kdebindings/perlqt-use-site-arch-install-dir.patch
new file mode 100644
index 000000000000..04f0c5586771
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/perlqt-use-site-arch-install-dir.patch
@@ -0,0 +1,454 @@
+commit c78779fcaff587818ee37bec3ded5e0617625b95
+Author: Yury G. Kudryashov [diff odt]
+Date: Wed Mar 21 01:01:27 2012 +0400
+
+ Install to PERL_SITE_ARCH_INSTALL_DIR
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 48020a1..16188df 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36,7 +36,6 @@ macro_log_feature(Qwt5_Qt4_FOUND "Qwt5 for Qt4" "Qwt5 libraries for Qt4" "http:/
+ add_definitions(-DDEBUG)
+
+ include (FindPerlMore)
+-set(CUSTOM_PERL_SITE_ARCH_DIR ${PERL_SITE_ARCH_DIR} CACHE DIR "Custom installation directory for perl binary extension")
+
+ # the RPATH to be used when installing, but only if it's not a system directory
+ GET_FILENAME_COMPONENT(SMOKE_LIB_DIR ${SMOKE_BASE_LIBRARY} PATH)
+diff --git a/INSTALL b/INSTALL
+index d19f97e..97cc9f1 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -36,7 +36,6 @@ ccmake step.
+ The standard options are:
+ CMAKE_BUILD_TYPE = The type of build ('Debug', 'Release', etc)
+ CMAKE_INSTALL_PREFIX = The location for any executables ( e.g. puic4 )
+- CUSTOM_PERL_SITE_ARCH_DIR = The location for the perl modules themselves.
+ QT_QMAKE_EXECUTABLE = The path to your system's qmake.
+
+ cmake looks in your path for a qmake executable. If it can't find it, it will
+diff --git a/Makefile.PL b/Makefile.PL
+index df9a13c..31dd912 100755
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -3,7 +3,7 @@
+ use strict;
+ use Config;
+
+-my ($prefix, $sitearch, $qmake) = ($Config{prefix}, $Config{sitearch});
++my ($prefix, $qmake) = ($Config{prefix});
+ my @cmakeArgs;
+ foreach my $arg (@ARGV) {
+ my $key = $arg;
+@@ -12,7 +12,6 @@ foreach my $arg (@ARGV) {
+ $value =~ s/^[^=]*=//g;
+ if ($key eq 'PREFIX' or $key eq 'INSTALL_BASE') {
+ $prefix = $value;
+- $sitearch = "$prefix";
+ }
+ elsif ($key eq 'QMAKE') {
+ $qmake = $value;
+@@ -34,7 +33,6 @@ if($^O =~ /win/i){
+ }
+ push @args, "-DCMAKE_INSTALL_PREFIX=$prefix" if $prefix;
+ push @args, "-DQT_QMAKE_EXECUTABLE=$qmake" if $qmake;
+-push @args, "-DCUSTOM_PERL_SITE_ARCH_DIR=$sitearch" if $sitearch;
+ push @args, @cmakeArgs;
+
+ if ( eval "require Alien::SmokeQt" ) {
+diff --git a/phonon/lib/CMakeLists.txt b/phonon/lib/CMakeLists.txt
+index f2857c3..78674ea 100644
+--- a/phonon/lib/CMakeLists.txt
++++ b/phonon/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(phononpm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Phonon.pm ${CMAKE_BINARY_DIR}/blib/lib/Phonon.pm)
+-install(FILES Phonon.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES Phonon.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/phonon/src/CMakeLists.txt b/phonon/src/CMakeLists.txt
+index a04db11..9933dfd 100644
+--- a/phonon/src/CMakeLists.txt
++++ b/phonon/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_phonon
+ set_target_properties(perl_phonon PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_phonon PROPERTIES PREFIX "")
+
+-install(TARGETS perl_phonon DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_phonon DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qimageblitz/lib/CMakeLists.txt b/qimageblitz/lib/CMakeLists.txt
+index 0809ba8..22fc1c0 100644
+--- a/qimageblitz/lib/CMakeLists.txt
++++ b/qimageblitz/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qimageblitzpm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QImageBlitz.pm ${CMAKE_BINARY_DIR}/blib/lib/QImageBlitz.pm)
+-install(FILES QImageBlitz.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QImageBlitz.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qimageblitz/src/CMakeLists.txt b/qimageblitz/src/CMakeLists.txt
+index 02ef494..4f02c1b 100644
+--- a/qimageblitz/src/CMakeLists.txt
++++ b/qimageblitz/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qimageblitz
+ set_target_properties(perl_qimageblitz PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qimageblitz PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qimageblitz DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qimageblitz DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qsci/lib/CMakeLists.txt b/qsci/lib/CMakeLists.txt
+index 63b451f..d22869f 100644
+--- a/qsci/lib/CMakeLists.txt
++++ b/qsci/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qscipm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qsci.pm ${CMAKE_BINARY_DIR}/blib/lib/Qsci.pm)
+-install(FILES Qsci.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES Qsci.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qsci/src/CMakeLists.txt b/qsci/src/CMakeLists.txt
+index 8c1659b..bdcb5a8 100644
+--- a/qsci/src/CMakeLists.txt
++++ b/qsci/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qsci
+ set_target_properties(perl_qsci PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qsci PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qsci DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qsci DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qt3support/lib/CMakeLists.txt b/qt3support/lib/CMakeLists.txt
+index 2f04cfa..dda5afa 100644
+--- a/qt3support/lib/CMakeLists.txt
++++ b/qt3support/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qt3support4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qt3Support4.pm ${CMAKE_BINARY_DIR}/blib/lib/Qt3Support4.pm)
+-install(FILES Qt3Support4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES Qt3Support4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qt3support/src/CMakeLists.txt b/qt3support/src/CMakeLists.txt
+index b24532e..bed99aa 100644
+--- a/qt3support/src/CMakeLists.txt
++++ b/qt3support/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qt3support4
+ set_target_properties(perl_qt3support4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qt3support4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qt3support4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qt3support4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtcore/lib/CMakeLists.txt b/qtcore/lib/CMakeLists.txt
+index ef07d10..1d78196 100644
+--- a/qtcore/lib/CMakeLists.txt
++++ b/qtcore/lib/CMakeLists.txt
+@@ -1,3 +1,3 @@
+ add_subdirectory( QtCore4 )
+ add_custom_target(perlqtcore4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtCore4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtCore4.pm)
+-install( FILES QtCore4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR} )
++install( FILES QtCore4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR} )
+diff --git a/qtcore/lib/QtCore4/CMakeLists.txt b/qtcore/lib/QtCore4/CMakeLists.txt
+index 44c7893..06aef20 100644
+--- a/qtcore/lib/QtCore4/CMakeLists.txt
++++ b/qtcore/lib/QtCore4/CMakeLists.txt
+@@ -1,3 +1,3 @@
+-install( FILES signals.pm slots.pm isa.pm debug.pm classinfo.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/QtCore4 )
++install( FILES signals.pm slots.pm isa.pm debug.pm classinfo.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/QtCore4 )
+ add_custom_target(perlqt4pmlibmkdir ALL ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/blib/lib/QtCore4)
+ add_custom_target(perlqt4pmlibsubdir ALL ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/blib/lib/QtCore4)
+diff --git a/qtcore/src/CMakeLists.txt b/qtcore/src/CMakeLists.txt
+index 3910636..b5e645c 100644
+--- a/qtcore/src/CMakeLists.txt
++++ b/qtcore/src/CMakeLists.txt
+@@ -53,10 +53,10 @@ target_link_libraries(perlqtcore4
+ set_target_properties(perlqtcore4 PROPERTIES
+ OUTPUT_NAME ${libraryName}
+ PREFIX ""
+- INSTALL_NAME_DIR ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/
++ INSTALL_NAME_DIR ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/
+ )
+
+-install(TARGETS perlqtcore4 EXPORT PerlQtExport DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perlqtcore4 EXPORT PerlQtExport DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+ install(FILES binding.h handlers.h listclass_macros.h marshall_basetypes.h marshall_complex.h
+ marshall.h marshall_macros.h marshall_primitives.h marshall_types.h perlqt.h ppport.h
+ QtCore4.h smokehelp.h smokeperl.h util.h
+diff --git a/qtdbus/lib/CMakeLists.txt b/qtdbus/lib/CMakeLists.txt
+index d03a672..a60d603 100644
+--- a/qtdbus/lib/CMakeLists.txt
++++ b/qtdbus/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtdbus4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtDBus4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtDBus4.pm)
+-install(FILES QtDBus4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtDBus4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtdbus/src/CMakeLists.txt b/qtdbus/src/CMakeLists.txt
+index 9aa05a0..5786ea2 100644
+--- a/qtdbus/src/CMakeLists.txt
++++ b/qtdbus/src/CMakeLists.txt
+@@ -31,4 +31,4 @@ target_link_libraries(perl_qtdbus4
+ set_target_properties(perl_qtdbus4 PROPERTIES OUTPUT_NAME "QtDBus4")
+ set_target_properties(perl_qtdbus4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtdbus4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/QtDBus4/)
++install(TARGETS perl_qtdbus4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/QtDBus4/)
+diff --git a/qtdeclarative/lib/CMakeLists.txt b/qtdeclarative/lib/CMakeLists.txt
+index e8d2847..b458858 100644
+--- a/qtdeclarative/lib/CMakeLists.txt
++++ b/qtdeclarative/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtdeclarative4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtDeclarative4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtDeclarative4.pm)
+-install(FILES QtDeclarative4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtDeclarative4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtdeclarative/src/CMakeLists.txt b/qtdeclarative/src/CMakeLists.txt
+index 1662167..ec2a8fc 100644
+--- a/qtdeclarative/src/CMakeLists.txt
++++ b/qtdeclarative/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtdeclarative4
+ set_target_properties(perl_qtdeclarative4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtdeclarative4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtdeclarative4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtdeclarative4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtgui/lib/CMakeLists.txt b/qtgui/lib/CMakeLists.txt
+index 82626c8..e62a4ac 100644
+--- a/qtgui/lib/CMakeLists.txt
++++ b/qtgui/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtgui4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtGui4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtGui4.pm)
+-install(FILES QtGui4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtGui4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtgui/src/CMakeLists.txt b/qtgui/src/CMakeLists.txt
+index 4cc8b36..44041b6 100644
+--- a/qtgui/src/CMakeLists.txt
++++ b/qtgui/src/CMakeLists.txt
+@@ -38,4 +38,4 @@ target_link_libraries(perl_qtgui4
+ set_target_properties(perl_qtgui4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtgui4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtgui4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtgui4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qthelp/lib/CMakeLists.txt b/qthelp/lib/CMakeLists.txt
+index dcf5ebe..da817d4 100644
+--- a/qthelp/lib/CMakeLists.txt
++++ b/qthelp/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qthelp4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtHelp4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtHelp4.pm)
+-install(FILES QtHelp4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtHelp4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qthelp/src/CMakeLists.txt b/qthelp/src/CMakeLists.txt
+index c00359d..689cb29 100644
+--- a/qthelp/src/CMakeLists.txt
++++ b/qthelp/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qthelp4
+ set_target_properties(perl_qthelp4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qthelp4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qthelp4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qthelp4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtmultimedia/lib/CMakeLists.txt b/qtmultimedia/lib/CMakeLists.txt
+index e55f697..5384539 100644
+--- a/qtmultimedia/lib/CMakeLists.txt
++++ b/qtmultimedia/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtmultimedia4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtMultimedia4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtMultimedia4.pm)
+-install(FILES QtMultimedia4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtMultimedia4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtmultimedia/src/CMakeLists.txt b/qtmultimedia/src/CMakeLists.txt
+index 0728aba..df8e552 100644
+--- a/qtmultimedia/src/CMakeLists.txt
++++ b/qtmultimedia/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtmultimedia4
+ set_target_properties(perl_qtmultimedia4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtmultimedia4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtmultimedia4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtmultimedia4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtnetwork/lib/CMakeLists.txt b/qtnetwork/lib/CMakeLists.txt
+index 12cd5dd..d1fb0e6 100644
+--- a/qtnetwork/lib/CMakeLists.txt
++++ b/qtnetwork/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtnetwork4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtNetwork4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtNetwork4.pm)
+-install(FILES QtNetwork4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtNetwork4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtnetwork/src/CMakeLists.txt b/qtnetwork/src/CMakeLists.txt
+index caf8327..0994d57 100644
+--- a/qtnetwork/src/CMakeLists.txt
++++ b/qtnetwork/src/CMakeLists.txt
+@@ -39,4 +39,4 @@ target_link_libraries(perl_qtnetwork4
+ set_target_properties(perl_qtnetwork4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtnetwork4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtnetwork4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtnetwork4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtopengl/lib/CMakeLists.txt b/qtopengl/lib/CMakeLists.txt
+index f3b5640..d8dc9e4 100644
+--- a/qtopengl/lib/CMakeLists.txt
++++ b/qtopengl/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtopengl4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtOpenGL4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtOpenGL4.pm)
+-install(FILES QtOpenGL4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtOpenGL4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtopengl/src/CMakeLists.txt b/qtopengl/src/CMakeLists.txt
+index 20493a9..777af89 100644
+--- a/qtopengl/src/CMakeLists.txt
++++ b/qtopengl/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtopengl4
+ set_target_properties(perl_qtopengl4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtopengl4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtopengl4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtopengl4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtscript/lib/CMakeLists.txt b/qtscript/lib/CMakeLists.txt
+index d21dbe5..320ff93 100644
+--- a/qtscript/lib/CMakeLists.txt
++++ b/qtscript/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtscript4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtScript4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtScript4.pm)
+-install(FILES QtScript4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtScript4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtscript/src/CMakeLists.txt b/qtscript/src/CMakeLists.txt
+index dd395be..6ff47d8 100644
+--- a/qtscript/src/CMakeLists.txt
++++ b/qtscript/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtscript4
+ set_target_properties(perl_qtscript4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtscript4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtscript4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtscript4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtsql/lib/CMakeLists.txt b/qtsql/lib/CMakeLists.txt
+index 59336d3..d9dd4d5 100644
+--- a/qtsql/lib/CMakeLists.txt
++++ b/qtsql/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtsql4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtSql4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtSql4.pm)
+-install(FILES QtSql4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtSql4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtsql/src/CMakeLists.txt b/qtsql/src/CMakeLists.txt
+index 3ec2028..59096ba 100644
+--- a/qtsql/src/CMakeLists.txt
++++ b/qtsql/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtsql4
+ set_target_properties(perl_qtsql4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtsql4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtsql4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtsql4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtsvg/lib/CMakeLists.txt b/qtsvg/lib/CMakeLists.txt
+index 33f6deb..bf1dc1f 100644
+--- a/qtsvg/lib/CMakeLists.txt
++++ b/qtsvg/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtsvg4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtSvg4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtSvg4.pm)
+-install(FILES QtSvg4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtSvg4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtsvg/src/CMakeLists.txt b/qtsvg/src/CMakeLists.txt
+index 11eccd2..449bf0f 100644
+--- a/qtsvg/src/CMakeLists.txt
++++ b/qtsvg/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtsvg4
+ set_target_properties(perl_qtsvg4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtsvg4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtsvg4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtsvg4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qttest/lib/CMakeLists.txt b/qttest/lib/CMakeLists.txt
+index 3bfa78c..5a8d8da 100644
+--- a/qttest/lib/CMakeLists.txt
++++ b/qttest/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qttest4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtTest4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtTest4.pm)
+-install(FILES QtTest4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtTest4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qttest/src/CMakeLists.txt b/qttest/src/CMakeLists.txt
+index 5492e55..d4662b1 100644
+--- a/qttest/src/CMakeLists.txt
++++ b/qttest/src/CMakeLists.txt
+@@ -38,4 +38,4 @@ target_link_libraries(perl_qttest4
+ set_target_properties(perl_qttest4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qttest4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qttest4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qttest4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtuitools/lib/CMakeLists.txt b/qtuitools/lib/CMakeLists.txt
+index 119e40e..3a5f472 100644
+--- a/qtuitools/lib/CMakeLists.txt
++++ b/qtuitools/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtuitools4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtUiTools4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtUiTools4.pm)
+-install(FILES QtUiTools4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtUiTools4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtuitools/src/CMakeLists.txt b/qtuitools/src/CMakeLists.txt
+index a8ae4a2..ecc079f 100644
+--- a/qtuitools/src/CMakeLists.txt
++++ b/qtuitools/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtuitools4
+ set_target_properties(perl_qtuitools4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtuitools4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtuitools4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtuitools4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtwebkit/lib/CMakeLists.txt b/qtwebkit/lib/CMakeLists.txt
+index a02f7ee..3846227 100644
+--- a/qtwebkit/lib/CMakeLists.txt
++++ b/qtwebkit/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtwebkit4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtWebKit4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtWebKit4.pm)
+-install(FILES QtWebKit4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtWebKit4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtwebkit/src/CMakeLists.txt b/qtwebkit/src/CMakeLists.txt
+index a6e00f8..dbebc44 100644
+--- a/qtwebkit/src/CMakeLists.txt
++++ b/qtwebkit/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtwebkit4
+ set_target_properties(perl_qtwebkit4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtwebkit4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtwebkit4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtwebkit4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtxml/lib/CMakeLists.txt b/qtxml/lib/CMakeLists.txt
+index 5505bc4..7db743c 100644
+--- a/qtxml/lib/CMakeLists.txt
++++ b/qtxml/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtxml4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtXml4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtXml4.pm)
+-install(FILES QtXml4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtXml4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtxml/src/CMakeLists.txt b/qtxml/src/CMakeLists.txt
+index 018508c..a351609 100644
+--- a/qtxml/src/CMakeLists.txt
++++ b/qtxml/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtxml4
+ set_target_properties(perl_qtxml4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtxml4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtxml4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtxml4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qtxmlpatterns/lib/CMakeLists.txt b/qtxmlpatterns/lib/CMakeLists.txt
+index a35f3df..3d86103 100644
+--- a/qtxmlpatterns/lib/CMakeLists.txt
++++ b/qtxmlpatterns/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qtxmlpatterns4pm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/QtXmlPatterns4.pm ${CMAKE_BINARY_DIR}/blib/lib/QtXmlPatterns4.pm)
+-install(FILES QtXmlPatterns4.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES QtXmlPatterns4.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qtxmlpatterns/src/CMakeLists.txt b/qtxmlpatterns/src/CMakeLists.txt
+index 9970a98..563e922 100644
+--- a/qtxmlpatterns/src/CMakeLists.txt
++++ b/qtxmlpatterns/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qtxmlpatterns4
+ set_target_properties(perl_qtxmlpatterns4 PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qtxmlpatterns4 PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qtxmlpatterns4 DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qtxmlpatterns4 DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
+diff --git a/qwt/lib/CMakeLists.txt b/qwt/lib/CMakeLists.txt
+index 0013c4d..d67ffbf 100644
+--- a/qwt/lib/CMakeLists.txt
++++ b/qwt/lib/CMakeLists.txt
+@@ -1,2 +1,2 @@
+ add_custom_target(qwtpm ALL ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qwt.pm ${CMAKE_BINARY_DIR}/blib/lib/Qwt.pm)
+-install(FILES Qwt.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/)
++install(FILES Qwt.pm DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/)
+diff --git a/qwt/src/CMakeLists.txt b/qwt/src/CMakeLists.txt
+index 869d818..b644e80 100644
+--- a/qwt/src/CMakeLists.txt
++++ b/qwt/src/CMakeLists.txt
+@@ -37,4 +37,4 @@ target_link_libraries(perl_qwt
+ set_target_properties(perl_qwt PROPERTIES OUTPUT_NAME ${libraryName})
+ set_target_properties(perl_qwt PROPERTIES PREFIX "")
+
+-install(TARGETS perl_qwt DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
++install(TARGETS perl_qwt DESTINATION ${PERL_SITE_ARCH_INSTALL_DIR}/auto/${libraryName}/)
diff --git a/pkgs/desktops/kde-4.10/kdebindings/perlqt.nix b/pkgs/desktops/kde-4.10/kdebindings/perlqt.nix
new file mode 100644
index 000000000000..73d89155e28a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/perlqt.nix
@@ -0,0 +1,17 @@
+{ kde, cmake, smokeqt, perl }:
+
+kde {
+#todo: qscintilla2, qwt5
+ buildInputs = [ smokeqt perl ];
+ nativeBuildInputs = [ cmake ];
+
+ patches =
+ # The order is important
+ [ ./perlqt-include-smokeqt.patch ./perlqt-rewrite-FindPerlMore.patch
+ ./perlqt-use-site-arch-install-dir.patch
+ ];
+
+ meta = {
+ description = "Perl bindings for Qt library";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdebindings/pykde4-hardcode-lib-python.patch b/pkgs/desktops/kde-4.10/kdebindings/pykde4-hardcode-lib-python.patch
new file mode 100644
index 000000000000..e7a7cb4c661c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/pykde4-hardcode-lib-python.patch
@@ -0,0 +1,18 @@
+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.10/kdebindings/pykde4.nix b/pkgs/desktops/kde-4.10/kdebindings/pykde4.nix
new file mode 100644
index 000000000000..baa5e807236c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/pykde4.nix
@@ -0,0 +1,32 @@
+{ kde, kdelibs, python, sip, pyqt4, kdepimlibs, shared_desktop_ontologies,
+ boost, lndir }:
+
+let pydir = "lib/python${python.majorVersion}"; in
+
+kde {
+#todo: doesn't build
+ buildInputs = [ python kdepimlibs
+# shared_desktop_ontologies boost
+];
+
+ propagatedBuildInputs = [ pyqt4 sip ];
+
+# patches = [ ./pykde4-hardcode-lib-python.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}
+ cmakeFlagsArray=( "-DSIP_DEFAULT_SIP_DIR=$prefix/share/sip" )
+ '';
+
+ meta = {
+ description = "Python bindings for KDE";
+ kde.name = "pykde4";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdebindings/qtruby-include-smokeqt.patch b/pkgs/desktops/kde-4.10/kdebindings/qtruby-include-smokeqt.patch
new file mode 100644
index 000000000000..7d20a3c1c0bc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/qtruby-include-smokeqt.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 33078b4..1a6ad2e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,7 +5,7 @@ set(COMPILE_RUBY FALSE CACHE INTERNAL "")
+ find_package(Ruby REQUIRED)
+ find_package(Qt4 REQUIRED)
+ find_package(Smoke COMPONENTS QtCore QtGui QtXml QtOpenGl QtSql QtNetwork QtDbus QtSvg Phonon QSci QtDeclarative QtScript QtWebkit QtUiTools QtTest Qwt)
+-include_directories(${SMOKE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src ${QT_INCLUDES})
++include_directories(${SMOKE_INCLUDE_DIR} ${SMOKE_QTCORE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src ${QT_INCLUDES})
+
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${SMOKE_CMAKE_MODULE_DIR})
+ include(MacroOptionalFindPackage)
diff --git a/pkgs/desktops/kde-4.10/kdebindings/qtruby-install-prefix.patch b/pkgs/desktops/kde-4.10/kdebindings/qtruby-install-prefix.patch
new file mode 100644
index 000000000000..bd95a0d8bd3d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/qtruby-install-prefix.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 33078b4..30aec0e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -31,8 +31,8 @@ if (NOT COMPILE_RUBY)
+ return()
+ endif (NOT COMPILE_RUBY)
+
+-SET(CUSTOM_RUBY_SITE_ARCH_DIR ${RUBY_SITEARCH_DIR} CACHE DIR "custom installation directory for ruby binary extension" )
+-SET(CUSTOM_RUBY_SITE_LIB_DIR ${RUBY_SITELIB_DIR} CACHE DIR "custom installation directory for ruby extension" )
++string(REPLACE "${RUBY_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" CUSTOM_RUBY_SITE_ARCH_DIR ${RUBY_SITEARCH_DIR})
++string(REPLACE "${RUBY_ROOT_DIR}" "${CMAKE_INSTALL_PREFIX}" CUSTOM_RUBY_SITE_LIB_DIR ${RUBY_SITELIB_DIR})
+
+ # compute an overall version number which can be compared at once
+ MATH(EXPR RUBY_VERSION_NUMBER "${RUBY_VERSION_MAJOR}*10000 + ${RUBY_VERSION_MINOR}*100 + ${RUBY_VERSION_PATCH}")
diff --git a/pkgs/desktops/kde-4.10/kdebindings/qtruby.nix b/pkgs/desktops/kde-4.10/kdebindings/qtruby.nix
new file mode 100644
index 000000000000..29faf2af15c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/qtruby.nix
@@ -0,0 +1,17 @@
+{ kde, cmake, smokeqt, ruby }:
+
+kde {
+#todo: scintilla2, qwt5
+ buildInputs = [ smokeqt ruby ];
+ nativeBuildInputs = [ cmake ];
+
+ # The second patch is not ready for upstream submmission. I should add an
+ # option() instead.
+ patches = [ ./qtruby-include-smokeqt.patch ./qtruby-install-prefix.patch ];
+
+ cmakeFlags="-DRUBY_ROOT_DIR=${ruby}";
+
+ meta = {
+ description = "Ruby bindings for Qt library";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdebindings/smokegen-nix.patch b/pkgs/desktops/kde-4.10/kdebindings/smokegen-nix.patch
new file mode 100644
index 000000000000..03df484b63e4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/smokegen-nix.patch
@@ -0,0 +1,46 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 79945c4..a244d0f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -32,10 +32,6 @@ set(generator_SRC
+ type.cpp
+ )
+
+-# force RPATH so that the binary is usable from within the build tree
+-set (CMAKE_SKIP_BUILD_RPATH FALSE)
+-set (CMAKE_SKIP_RPATH FALSE)
+-
+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in config.h @ONLY )
+
+ add_executable(smokegen ${generator_SRC})
+diff --git a/cmake/SmokeConfig.cmake.in b/cmake/SmokeConfig.cmake.in
+index 947315c..de8d66c 100644
+--- a/cmake/SmokeConfig.cmake.in
++++ b/cmake/SmokeConfig.cmake.in
+@@ -44,21 +44,19 @@ macro (find_smoke_component name)
+ set (SMOKE_${uppercase}_FOUND FALSE CACHE INTERNAL "")
+
+ find_path(SMOKE_${uppercase}_INCLUDE_DIR
+- ${lowercase}_smoke.h
+- PATH ${SMOKE_INCLUDE_DIR}
+- NO_DEFAULT_PATH
++ ${lowercase}_smoke.h
++ HINTS ${SMOKE_INCLUDE_DIR}
++ PATH_SUFFIXES smoke
+ )
+ if(WIN32)
+ # DLLs are in the bin directory.
+ find_library(SMOKE_${uppercase}_LIBRARY
+ smoke${lowercase}
+- PATHS "@CMAKE_INSTALL_PREFIX@/bin"
+- NO_DEFAULT_PATH)
++ PATHS "@CMAKE_INSTALL_PREFIX@/bin")
+ else(WIN32)
+ find_library(SMOKE_${uppercase}_LIBRARY
+ smoke${lowercase}
+- PATHS "@SMOKE_LIBRARY_PREFIX@"
+- NO_DEFAULT_PATH)
++ PATHS "@SMOKE_LIBRARY_PREFIX@")
+ endif(WIN32)
+
+ if (NOT SMOKE_${uppercase}_INCLUDE_DIR OR NOT SMOKE_${uppercase}_LIBRARY)
diff --git a/pkgs/desktops/kde-4.10/kdebindings/smokegen.nix b/pkgs/desktops/kde-4.10/kdebindings/smokegen.nix
new file mode 100644
index 000000000000..8b5da2a641dd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/smokegen.nix
@@ -0,0 +1,13 @@
+{ kde, qt4, cmake }:
+
+kde {
+ buildInputs = [ qt4 ];
+ nativeBuildInputs = [ cmake ];
+
+ patches = [ ./smokegen-nix.patch ];
+
+ meta = {
+ description = "C++ parser used to generate language bindings for Qt/KDE";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdebindings/smokekde.nix b/pkgs/desktops/kde-4.10/kdebindings/smokekde.nix
new file mode 100644
index 000000000000..e7e5101c972f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/smokekde.nix
@@ -0,0 +1,16 @@
+{ kde, cmake, smokeqt, kdelibs, akonadi, kdepimlibs, okular
+, shared_desktop_ontologies, attica, nepomuk_core }:
+
+kde {
+ # attica, akonadi and kdepimlibs are disabled due to smokegen crash
+ # okular is disabled because the code generated is broken
+ buildInputs = [
+ smokeqt kdelibs shared_desktop_ontologies
+ ];
+ nativeBuildInputs = [ cmake ];
+
+ cmakeFlags = "-DQTDEFINES_FILE=${smokeqt}/share/smokegen/qtdefines";
+ meta = {
+ description = "SMOKE bindings for kdelibs";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdebindings/smokeqt.nix b/pkgs/desktops/kde-4.10/kdebindings/smokeqt.nix
new file mode 100644
index 000000000000..e95b686aee20
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdebindings/smokeqt.nix
@@ -0,0 +1,13 @@
+{ kde, qt4, cmake, phonon, qimageblitz, smokegen }:
+
+kde {
+#todo: Qwt5, QScintilla2
+ propagatedBuildInputs = [ qt4 phonon qimageblitz ];
+ nativeBuildInputs = [ cmake ];
+ propagatedNativeBuildInputs = [ smokegen ];
+
+ meta = {
+ description = "C++ parser used to generate language bindings for Qt/KDE";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/analitza.nix b/pkgs/desktops/kde-4.10/kdeedu/analitza.nix
new file mode 100644
index 000000000000..74c3a1ebb200
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/analitza.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, readline }:
+kde {
+ buildInputs = [ kdelibs readline ];
+
+ meta = {
+ description = "Library part of KAlgebra";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/blinken.nix b/pkgs/desktops/kde-4.10/kdeedu/blinken.nix
new file mode 100644
index 000000000000..cdf9728833c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/blinken.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Memory Enhancement Game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/cantor.nix b/pkgs/desktops/kde-4.10/kdeedu/cantor.nix
new file mode 100644
index 000000000000..d2a1b095b82f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/cantor.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, libspectre, analitza, rLang, pkgconfig, gfortran, libqalculate }:
+kde {
+
+ buildInputs = [ kdelibs libspectre analitza rLang gfortran libqalculate];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ meta = {
+ description = "KDE Frontend to Mathematical Software";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kalgebra.nix b/pkgs/desktops/kde-4.10/kdeedu/kalgebra.nix
new file mode 100644
index 000000000000..3675c3a225f4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kalgebra.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdeedu, analitza }:
+kde {
+ buildInputs = [ kdelibs libkdeedu analitza ];
+
+ meta = {
+ description = "2D and 3D Graph Calculator";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kalzium.nix b/pkgs/desktops/kde-4.10/kdeedu/kalzium.nix
new file mode 100644
index 000000000000..78fa8119583e
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kalzium.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, facile, ocaml, eigen, openbabel, avogadro, pkgconfig }:
+kde {
+#todo:chemical mime data
+ buildInputs = [ kdelibs facile ocaml eigen openbabel avogadro ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ meta = {
+ description = "Periodic Table of Elements";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kanagram.nix b/pkgs/desktops/kde-4.10/kdeedu/kanagram.nix
new file mode 100644
index 000000000000..8759c96d78c4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/kbruch.nix b/pkgs/desktops/kde-4.10/kdeedu/kbruch.nix
new file mode 100644
index 000000000000..dc50f1e85a37
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kbruch.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Practice Fractions";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kgeography.nix b/pkgs/desktops/kde-4.10/kdeedu/kgeography.nix
new file mode 100644
index 000000000000..bd8d27c8d6e2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kgeography.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Geography Trainer";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/khangman.nix b/pkgs/desktops/kde-4.10/kdeedu/khangman.nix
new file mode 100644
index 000000000000..997b50e906a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/kig.nix b/pkgs/desktops/kde-4.10/kdeedu/kig.nix
new file mode 100644
index 000000000000..bd5ef67529cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/kiten.nix b/pkgs/desktops/kde-4.10/kdeedu/kiten.nix
new file mode 100644
index 000000000000..939b7a9f77a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/klettres.nix b/pkgs/desktops/kde-4.10/kdeedu/klettres.nix
new file mode 100644
index 000000000000..7a0fa83078e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/kmplot.nix b/pkgs/desktops/kde-4.10/kdeedu/kmplot.nix
new file mode 100644
index 000000000000..18458cf6f0bf
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/kstars.nix b/pkgs/desktops/kde-4.10/kdeedu/kstars.nix
new file mode 100644
index 000000000000..0f63afe9e0d7
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kstars.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, eigen, xplanet, indilib }:
+
+kde {
+#todo:wcslib, doesn't build
+ buildInputs = [ kdelibs eigen xplanet indilib ];
+
+ meta = {
+ description = "A KDE graphical desktop planetarium";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/ktouch.nix b/pkgs/desktops/kde-4.10/kdeedu/ktouch.nix
new file mode 100644
index 000000000000..9e606adde336
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/ktouch.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libxkbfile }:
+
+kde {
+ buildInputs = [ kdelibs libxkbfile ];
+
+ meta = {
+ description = "Touch Typing Tutor";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kturtle.nix b/pkgs/desktops/kde-4.10/kdeedu/kturtle.nix
new file mode 100644
index 000000000000..1e1922b1410d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/kturtle.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Educational Programming Environment";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/kwordquiz.nix b/pkgs/desktops/kde-4.10/kdeedu/kwordquiz.nix
new file mode 100644
index 000000000000..1b33ba2e469f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/libkdeedu.nix b/pkgs/desktops/kde-4.10/kdeedu/libkdeedu.nix
new file mode 100644
index 000000000000..def6c85fefe2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/marble.nix b/pkgs/desktops/kde-4.10/kdeedu/marble.nix
new file mode 100644
index 000000000000..4f73472f6314
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/marble.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, gpsd }:
+
+kde {
+#todo: package QextSerialPort, libshp(shapelib), QtMobility, QtLocation, libwlocate
+ buildInputs = [ kdelibs gpsd ];
+
+ meta = {
+ description = "Marble Virtual Globe";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/pairs.nix b/pkgs/desktops/kde-4.10/kdeedu/pairs.nix
new file mode 100644
index 000000000000..36c4aba9604b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/pairs.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "A memory and pairs game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/parley.nix b/pkgs/desktops/kde-4.10/kdeedu/parley.nix
new file mode 100644
index 000000000000..f9f86dde150d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeedu/parley.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libkdeedu, attica }:
+
+kde {
+ buildInputs = [ kdelibs libkdeedu attica ];
+
+ meta = {
+ description = "Vocabulary Trainer";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeedu/rocs.nix b/pkgs/desktops/kde-4.10/kdeedu/rocs.nix
new file mode 100644
index 000000000000..91976b840011
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeedu/step.nix b/pkgs/desktops/kde-4.10/kdeedu/step.nix
new file mode 100644
index 000000000000..fac9974baf18
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegames/bomber.nix b/pkgs/desktops/kde-4.10/kdegames/bomber.nix
new file mode 100644
index 000000000000..026227910f21
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/bomber.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a single player arcade game. The player is invading various cities in a plane that is decreasing in height";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/bovo.nix b/pkgs/desktops/kde-4.10/kdegames/bovo.nix
new file mode 100644
index 000000000000..b0e7d99c589f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/bovo.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a Gomoku (from Japanese 五目並べ - lit. \"five points\") like game for two players, where the opponents alternate in placing their respective pictogram on the game board";
+ };
+
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/granatier.nix b/pkgs/desktops/kde-4.10/kdegames/granatier.nix
new file mode 100644
index 000000000000..9f1ab0053099
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/granatier.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a clone of the classic Bomberman game, inspired by the work of the Clanbomber clone";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kajongg.nix b/pkgs/desktops/kde-4.10/kdegames/kajongg.nix
new file mode 100644
index 000000000000..609850c3abfb
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kajongg.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, libkdegames, pythonPackages, sqlite, pykde4 }:
+kde rec {
+#todo: doesn't build
+ buildInputs = [ kdelibs libkdegames pythonPackages.python pythonPackages.wrapPython sqlite ] ++ pythonPath;
+
+ pythonPath = [ pythonPackages.twisted pykde4 ];
+
+ postInstall = "wrapPythonPrograms";
+
+ meta = {
+ description = "an ancient Chinese board game for 4 players";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kapman.nix b/pkgs/desktops/kde-4.10/kdegames/kapman.nix
new file mode 100644
index 000000000000..f10e099da3cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kapman.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a clone of the well known game Pac-Man";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/katomic.nix b/pkgs/desktops/kde-4.10/kdegames/katomic.nix
new file mode 100644
index 000000000000..a9936c04f0ea
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/katomic.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a fun and educational puzzle game built around molecular geometry";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kblackbox.nix b/pkgs/desktops/kde-4.10/kdegames/kblackbox.nix
new file mode 100644
index 000000000000..27eeff2f65bb
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kblackbox.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a game of hide and seek played on an grid of boxes, where the player shoots rays into the grid to deduce the positions of hidden objects";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kblocks.nix b/pkgs/desktops/kde-4.10/kdegames/kblocks.nix
new file mode 100644
index 000000000000..98cf068de09a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kblocks.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a classic single player falling blocks puzzle game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kbounce.nix b/pkgs/desktops/kde-4.10/kdegames/kbounce.nix
new file mode 100644
index 000000000000..77fa0db63529
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kbounce.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a single player arcade game with the elements of puzzle";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kbreakout.nix b/pkgs/desktops/kde-4.10/kdegames/kbreakout.nix
new file mode 100644
index 000000000000..3a484d919bbb
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kbreakout.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a Breakout-like game. Its object is to destroy as many bricks as possible without losing the ball";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kdiamond.nix b/pkgs/desktops/kde-4.10/kdegames/kdiamond.nix
new file mode 100644
index 000000000000..06dfcee5ac39
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kdiamond.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a single player puzzle game. The object of the game is to build lines of three similar diamonds";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kfourinline.nix b/pkgs/desktops/kde-4.10/kdegames/kfourinline.nix
new file mode 100644
index 000000000000..11b8838e7082
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kfourinline.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a board game for two players based on the Connect-Four game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kgoldrunner.nix b/pkgs/desktops/kde-4.10/kdegames/kgoldrunner.nix
new file mode 100644
index 000000000000..6217c47a8065
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kgoldrunner.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "an action game where the hero runs through a maze, climbs stairs, dig holes and dodges enemies in order to collect all the gold nuggets and escape to the next level";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kigo.nix b/pkgs/desktops/kde-4.10/kdegames/kigo.nix
new file mode 100644
index 000000000000..32eee67cc1e0
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kigo.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "an open-source implementation of the popular Go game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/killbots.nix b/pkgs/desktops/kde-4.10/kdegames/killbots.nix
new file mode 100644
index 000000000000..d9c1472495e7
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/killbots.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple game of evading killer robots";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kiriki.nix b/pkgs/desktops/kde-4.10/kdegames/kiriki.nix
new file mode 100644
index 000000000000..72f7ab67501b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kiriki.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "an addictive and fun dice game, designed to be played by as many as six players";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kjumpingcube.nix b/pkgs/desktops/kde-4.10/kdegames/kjumpingcube.nix
new file mode 100644
index 000000000000..a6d22cff51c3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kjumpingcube.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple dice driven tactical game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/klickety.nix b/pkgs/desktops/kde-4.10/kdegames/klickety.nix
new file mode 100644
index 000000000000..b592bc40641f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/klickety.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a puzzle game where the player removes groups of colored marbles to clear the board";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/klines.nix b/pkgs/desktops/kde-4.10/kdegames/klines.nix
new file mode 100644
index 000000000000..90952fe91c07
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/klines.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple but highly addictive one player game. The player has to move the colored balls around the game board, gathering them into the lines of the same color by five";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kmahjongg.nix b/pkgs/desktops/kde-4.10/kdegames/kmahjongg.nix
new file mode 100644
index 000000000000..946b531ff127
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kmahjongg.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, libkmahjongg }:
+kde {
+ buildInputs = [ kdelibs libkdegames libkmahjongg ];
+ meta = {
+ description = "the tiles are scrambled and staked on top of each other to resemble a certain shape. The player is then expected to remove all the tiles off the game board by locating each tile's matching pair";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kmines.nix b/pkgs/desktops/kde-4.10/kdegames/kmines.nix
new file mode 100644
index 000000000000..538454e95984
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kmines.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a classic Minesweeper game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/knavalbattle.nix b/pkgs/desktops/kde-4.10/kdegames/knavalbattle.nix
new file mode 100644
index 000000000000..42ffd2fcb4d5
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/knavalbattle.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a Battle Ship game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/knetwalk.nix b/pkgs/desktops/kde-4.10/kdegames/knetwalk.nix
new file mode 100644
index 000000000000..a16e578ce848
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/knetwalk.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a small game where you have to build up a computer network by rotating the wires to connect the terminals to the server";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kolf.nix b/pkgs/desktops/kde-4.10/kdegames/kolf.nix
new file mode 100644
index 000000000000..78815ee57996
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kolf.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a miniature golf game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kollision.nix b/pkgs/desktops/kde-4.10/kdegames/kollision.nix
new file mode 100644
index 000000000000..3147c7305ea0
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kollision.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple ball dodging game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/konquest.nix b/pkgs/desktops/kde-4.10/kdegames/konquest.nix
new file mode 100644
index 000000000000..53ddd64928cc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/konquest.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "the KDE version of Gnu-Lactic Konquest";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kpat.nix b/pkgs/desktops/kde-4.10/kdegames/kpat.nix
new file mode 100644
index 000000000000..f8d9bad36dc5
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kpat.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a relaxing card sorting game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kreversi.nix b/pkgs/desktops/kde-4.10/kdegames/kreversi.nix
new file mode 100644
index 000000000000..2aed981428e1
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kreversi.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple one player strategy game played against the computer. If a player's piece is captured by an opposing player, that piece is turned over to reveal the color of that player";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kshisen.nix b/pkgs/desktops/kde-4.10/kdegames/kshisen.nix
new file mode 100644
index 000000000000..9c8880340388
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kshisen.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, libkmahjongg }:
+kde {
+ buildInputs = [ kdelibs libkdegames libkmahjongg ];
+ meta = {
+ description = "a solitaire-like game played using the standard set of Mahjong tiles";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/ksirk.nix b/pkgs/desktops/kde-4.10/kdegames/ksirk.nix
new file mode 100644
index 000000000000..767eb67971a8
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/ksirk.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames, qca2 }:
+kde {
+ buildInputs = [ kdelibs libkdegames qca2 ];
+ meta = {
+ description = "a computerized version of the well known strategic board game Risk";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/ksnakeduel.nix b/pkgs/desktops/kde-4.10/kdegames/ksnakeduel.nix
new file mode 100644
index 000000000000..ccf1fb551e9a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/ksnakeduel.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple Tron-Clone";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kspaceduel.nix b/pkgs/desktops/kde-4.10/kdegames/kspaceduel.nix
new file mode 100644
index 000000000000..5285f7916cad
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kspaceduel.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "each of two possible players control a satellite spaceship orbiting the sun. As the game progresses players have to eliminate the opponent's spacecraft with bullets or mines";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/ksquares.nix b/pkgs/desktops/kde-4.10/kdegames/ksquares.nix
new file mode 100644
index 000000000000..a17be2da6325
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/ksquares.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a game modeled after the well known pen and paper based game of Dots and Boxes";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/ksudoku.nix b/pkgs/desktops/kde-4.10/kdegames/ksudoku.nix
new file mode 100644
index 000000000000..ea4e13a5e4f3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/ksudoku.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a logic-based symbol placement puzzle";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/ktuberling.nix b/pkgs/desktops/kde-4.10/kdegames/ktuberling.nix
new file mode 100644
index 000000000000..1a6ba9d653c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/ktuberling.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a simple constructor game suitable for children and adults alike";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/kubrick.nix b/pkgs/desktops/kde-4.10/kdegames/kubrick.nix
new file mode 100644
index 000000000000..9bdc6879db4b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/kubrick.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a game based on the Rubik's Cube™ puzzle";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/libkdegames.nix b/pkgs/desktops/kde-4.10/kdegames/libkdegames.nix
new file mode 100644
index 000000000000..3819dcdc9ae2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/libkdegames.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, openal, libsndfile }:
+kde {
+ buildInputs = [ kdelibs openal libsndfile ];
+ meta = {
+ description = "KDE games library";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/libkmahjongg.nix b/pkgs/desktops/kde-4.10/kdegames/libkmahjongg.nix
new file mode 100644
index 000000000000..383b347dc330
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/libkmahjongg.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a library for KMahjongg game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/lskat.nix b/pkgs/desktops/kde-4.10/kdegames/lskat.nix
new file mode 100644
index 000000000000..2a5050cd6676
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/lskat.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a fun and engaging card game for two players, where the second player is either live opponent, or a built in artificial intelligence";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/palapeli.nix b/pkgs/desktops/kde-4.10/kdegames/palapeli.nix
new file mode 100644
index 000000000000..555ffe43c451
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/palapeli.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+#todo:package qvoronoi
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a single-player jigsaw puzzle game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegames/picmi.nix b/pkgs/desktops/kde-4.10/kdegames/picmi.nix
new file mode 100644
index 000000000000..165d7422f95b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegames/picmi.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkdegames }:
+kde {
+ buildInputs = [ kdelibs libkdegames ];
+ meta = {
+ description = "a single player logic-based puzzle game";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegraphics/gwenview.nix b/pkgs/desktops/kde-4.10/kdegraphics/gwenview.nix
new file mode 100644
index 000000000000..00910ab9d466
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegraphics/gwenview.nix
@@ -0,0 +1,15 @@
+{ kde, kdelibs, exiv2, shared_desktop_ontologies, kde_baseapps, libkipi
+, libjpeg, libtiff, pkgconfig, kactivities, lcms2 }:
+
+kde {
+
+ buildInputs =
+ [ kdelibs exiv2 shared_desktop_ontologies kactivities kde_baseapps libkipi libjpeg lcms2 ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ meta = {
+ description = "Gwenview, the KDE image viewer";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegraphics/kamera.nix b/pkgs/desktops/kde-4.10/kdegraphics/kamera.nix
new file mode 100644
index 000000000000..70904b17c232
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/kcolorchooser.nix b/pkgs/desktops/kde-4.10/kdegraphics/kcolorchooser.nix
new file mode 100644
index 000000000000..58528cb186bb
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/kdegraphics-mobipocket.nix b/pkgs/desktops/kde-4.10/kdegraphics/kdegraphics-mobipocket.nix
new file mode 100644
index 000000000000..2c2ba3796a2c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegraphics/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.10/kdegraphics/kdegraphics-strigi-analyzer.nix b/pkgs/desktops/kde-4.10/kdegraphics/kdegraphics-strigi-analyzer.nix
new file mode 100644
index 000000000000..35af39aa611d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegraphics/kdegraphics-strigi-analyzer.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libtiff }:
+
+kde {
+ buildInputs = [ kdelibs libtiff ];
+
+ meta = {
+ description = "Strigi analyzers for various graphics file formats";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegraphics/kdegraphics-thumbnailers.nix b/pkgs/desktops/kde-4.10/kdegraphics/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..55bf8309b2a9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/kgamma.nix b/pkgs/desktops/kde-4.10/kdegraphics/kgamma.nix
new file mode 100644
index 000000000000..28d9252187e0
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/kolourpaint.nix b/pkgs/desktops/kde-4.10/kdegraphics/kolourpaint.nix
new file mode 100644
index 000000000000..5276ec09f462
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/kruler.nix b/pkgs/desktops/kde-4.10/kdegraphics/kruler.nix
new file mode 100644
index 000000000000..c5c2c6e05d7c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/ksaneplugin.nix b/pkgs/desktops/kde-4.10/kdegraphics/ksaneplugin.nix
new file mode 100644
index 000000000000..1381ed7dd266
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/ksnapshot.nix b/pkgs/desktops/kde-4.10/kdegraphics/ksnapshot.nix
new file mode 100644
index 000000000000..f01a609e20de
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/libkdcraw.nix b/pkgs/desktops/kde-4.10/kdegraphics/libkdcraw.nix
new file mode 100644
index 000000000000..e8790205caea
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegraphics/libkdcraw.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, libjpeg, lcms1, jasper }:
+
+kde {
+ buildInputs = [ kdelibs libjpeg lcms1 jasper ];
+
+ meta = {
+ description = "Library for decoding RAW images";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegraphics/libkexiv2.nix b/pkgs/desktops/kde-4.10/kdegraphics/libkexiv2.nix
new file mode 100644
index 000000000000..096b0a6e957b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/libkipi.nix b/pkgs/desktops/kde-4.10/kdegraphics/libkipi.nix
new file mode 100644
index 000000000000..6b16265e7a3e
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/libksane.nix b/pkgs/desktops/kde-4.10/kdegraphics/libksane.nix
new file mode 100644
index 000000000000..b539eab38992
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdegraphics/okular.nix b/pkgs/desktops/kde-4.10/kdegraphics/okular.nix
new file mode 100644
index 000000000000..efc1e8f07429
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdegraphics/okular.nix
@@ -0,0 +1,17 @@
+{ chmlib, djvulibre, ebook_tools, kde, kdelibs, libspectre, popplerQt4, qca2
+, qimageblitz, libtiff, kactivities, pkgconfig }:
+
+kde {
+
+ #todo: package activeapp
+
+ buildInputs =
+ [ chmlib djvulibre ebook_tools kdelibs libspectre popplerQt4 qca2 qimageblitz libtiff kactivities ];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ meta = {
+ description = "Okular, the KDE document viewer";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdegraphics/svgpart.nix b/pkgs/desktops/kde-4.10/kdegraphics/svgpart.nix
new file mode 100644
index 000000000000..a344cc4b4b46
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdelibs/kdelibs.nix b/pkgs/desktops/kde-4.10/kdelibs/kdelibs.nix
new file mode 100644
index 000000000000..16e082ac07b3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdelibs/kdelibs.nix
@@ -0,0 +1,64 @@
+{ kde, gcc, cmake, perl
+, qt4, bzip2, pcre, fam, libxml2, libxslt, shared_mime_info, giflib, jasper
+, openexr, avahi, kerberos, attr, shared_desktop_ontologies, libXScrnSaver
+, automoc4, strigi, soprano, qca2, attica, enchant, libdbusmenu_qt, grantlee
+, docbook_xml_dtd_42, docbook_xsl, polkit_qt_1
+, getopt, udev, herqq, phonon, libjpeg, xz
+, pkgconfig
+}:
+
+kde {
+ buildInputs =
+ [ pkgconfig
+# attr
+ attica #todo: update to 4.1
+ avahi
+ bzip2
+ enchant
+ fam
+# getopt
+ giflib
+ grantlee # todo: update to 0.3
+ herqq
+ jasper
+ libdbusmenu_qt #todo: update to 0.9.2
+ libXScrnSaver
+ libxslt
+# pcre
+ polkit_qt_1 qca2
+ shared_desktop_ontologies xz udev
+# libxml2
+ libjpeg
+ kerberos
+
+#openexr # todo: update openexr to 1.7.1. make it compile maybe need ilmbase although it's supposedly propagated
+ ];
+
+ propagatedBuildInputs = [ qt4 soprano
+ strigi # todo: update to 0.7.8
+ phonon ];
+
+ propagatedNativeBuildInputs = [ automoc4 cmake perl
+ shared_mime_info #todo: update to 1.1
+ ];
+
+ # 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"
+ "-DHUPNP_ENABLED=ON"
+ ];
+
+ meta = {
+ description = "KDE libraries";
+ license = "LGPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdelibs/nepomuk-core.nix b/pkgs/desktops/kde-4.10/kdelibs/nepomuk-core.nix
new file mode 100644
index 000000000000..cd6f3a179c22
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdelibs/nepomuk-core.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, soprano, shared_desktop_ontologies, exiv2, ffmpeg, taglib, popplerQt4 }:
+
+kde {
+
+ buildInputs = [ kdelibs soprano shared_desktop_ontologies taglib exiv2 ffmpeg popplerQt4 ];
+
+ meta = {
+ description = "NEPOMUK core";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdelibs/nepomuk-widgets.nix b/pkgs/desktops/kde-4.10/kdelibs/nepomuk-widgets.nix
new file mode 100644
index 000000000000..0d29a4f97de5
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdelibs/nepomuk-widgets.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, nepomuk_core }:
+
+kde {
+
+ buildInputs = [ kdelibs nepomuk_core ];
+
+ meta = {
+ description = "NEPOMUK Widgets";
+ license = "GPLv2";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/audiocd-kio.nix b/pkgs/desktops/kde-4.10/kdemultimedia/audiocd-kio.nix
new file mode 100644
index 000000000000..4c56e7529dd7
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/audiocd-kio.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libkcompactdisc, cdparanoia, libkcddb, libvorbis, flac, lame }:
+kde {
+ buildInputs = [ kdelibs libkcompactdisc cdparanoia libkcddb libvorbis flac lame ];
+ meta = {
+ description = "transparent audio CD access for applications using the KDE Platform";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/dragon.nix b/pkgs/desktops/kde-4.10/kdemultimedia/dragon.nix
new file mode 100644
index 000000000000..006300742ecd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/dragon.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+ meta = {
+ description = "a multimedia player with the focus on simplicity";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/ffmpegthumbs.nix b/pkgs/desktops/kde-4.10/kdemultimedia/ffmpegthumbs.nix
new file mode 100644
index 000000000000..45f6c9abcb66
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/ffmpegthumbs.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, ffmpeg }:
+kde {
+ buildInputs = [ kdelibs ffmpeg ];
+ meta = {
+ description = "a video thumbnail generator for KDE file managers like Dolphin and Konqueror";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/juk.nix b/pkgs/desktops/kde-4.10/kdemultimedia/juk.nix
new file mode 100644
index 000000000000..7a1aab85ed72
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/juk.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, taglib }:
+kde {
+ buildInputs = [ kdelibs taglib ];
+ meta = {
+ description = "an audio jukebox application";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/kmix.nix b/pkgs/desktops/kde-4.10/kdemultimedia/kmix.nix
new file mode 100644
index 000000000000..1dd8108166f2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/kmix.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libcanberra, pulseaudio }:
+kde {
+ buildInputs = [ kdelibs libcanberra pulseaudio ];
+ meta = {
+ description = "sound mixer, an application to allow you to change the volume of your sound card";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/kscd.nix b/pkgs/desktops/kde-4.10/kdemultimedia/kscd.nix
new file mode 100644
index 000000000000..e99ae53935b9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/kscd.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs, libmusicbrainz }:
+kde {
+ buildInputs = [ kdelibs libmusicbrainz ];
+ meta = {
+ description = "KDE CD player";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/libkcddb.nix b/pkgs/desktops/kde-4.10/kdemultimedia/libkcddb.nix
new file mode 100644
index 000000000000..720b01d1861e
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/libkcddb.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs }:
+kde {
+#todo: libmusicbrainz5
+ buildInputs = [ kdelibs ];
+ meta = {
+ description = "a library used to retrieve audio CD meta data from the internet";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/libkcompactdisc.nix b/pkgs/desktops/kde-4.10/kdemultimedia/libkcompactdisc.nix
new file mode 100644
index 000000000000..6ed08af89f33
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/libkcompactdisc.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+ meta = {
+ description = "KDE library for playing & ripping CDs";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdemultimedia/mplayerthumbs.nix b/pkgs/desktops/kde-4.10/kdemultimedia/mplayerthumbs.nix
new file mode 100644
index 000000000000..c88ebcc2a5a3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdemultimedia/mplayerthumbs.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+kde {
+ buildInputs = [ kdelibs ];
+ meta = {
+ description = "a video thumbnail generator for KDE";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/FindmsiLBC.cmake b/pkgs/desktops/kde-4.10/kdenetwork/FindmsiLBC.cmake
new file mode 100644
index 000000000000..c40b0bed3105
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdenetwork/filesharing.nix b/pkgs/desktops/kde-4.10/kdenetwork/filesharing.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/filesharing.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/kdenetwork.patch b/pkgs/desktops/kde-4.10/kdenetwork/kdenetwork.patch
new file mode 100644
index 000000000000..ebadbfad9bac
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdenetwork/kdnssd.nix b/pkgs/desktops/kde-4.10/kdenetwork/kdnssd.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/kdnssd.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/kfile-plugins.nix b/pkgs/desktops/kde-4.10/kdenetwork/kfile-plugins.nix
new file mode 100644
index 000000000000..f90fd3560796
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdenetwork/kget.nix b/pkgs/desktops/kde-4.10/kdenetwork/kget.nix
new file mode 100644
index 000000000000..25028ef974ef
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/kget.nix
@@ -0,0 +1,17 @@
+{ kde, kdelibs, libktorrent, kde_workspace, kdepimlibs, sqlite
+, 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 sqlite
+ ];
+
+ KDEDIRS = libktorrent;
+
+ patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/kopete.nix b/pkgs/desktops/kde-4.10/kdenetwork/kopete.nix
new file mode 100644
index 000000000000..1d401aca021a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/kopete.nix
@@ -0,0 +1,28 @@
+{ kde, kdelibs, speex, libmsn, libotr, kdepimlibs, qimageblitz, libktorrent,
+ jasper, libidn, mediastreamer, msilbc, pkgconfig, libxslt, giflib,
+ libgadu, boost, qca2, gpgme, sqlite, telepathy_qt, shared_desktop_ontologies,
+ libjpeg, nepomuk_core, libmms }:
+
+kde {
+#todo: libmeanwhile, xmms
+ buildInputs = [
+ kdelibs telepathy_qt shared_desktop_ontologies qca2 gpgme libgadu mediastreamer
+ kdepimlibs qimageblitz libktorrent libjpeg sqlite jasper giflib libmsn libotr
+ libxslt libidn speex nepomuk_core boost libmms msilbc
+];
+
+ nativeBuildInputs = [ 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.10/kdenetwork/kppp.nix b/pkgs/desktops/kde-4.10/kdenetwork/kppp.nix
new file mode 100644
index 000000000000..2f32f4d6b2cd
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/kppp.nix
@@ -0,0 +1,7 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/krdc.nix b/pkgs/desktops/kde-4.10/kdenetwork/krdc.nix
new file mode 100644
index 000000000000..2932fecb1912
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdenetwork/krdc.nix
@@ -0,0 +1,8 @@
+{ kde, kdelibs, libvncserver, libjpeg }:
+
+kde {
+#todo: doesn't build
+ buildInputs = [ kdelibs libvncserver libjpeg ];
+
+ patches = [ ./kdenetwork.patch ];
+}
diff --git a/pkgs/desktops/kde-4.10/kdenetwork/krfb.nix b/pkgs/desktops/kde-4.10/kdenetwork/krfb.nix
new file mode 100644
index 000000000000..80013f430d3c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdepim-runtime.nix b/pkgs/desktops/kde-4.10/kdepim-runtime.nix
new file mode 100644
index 000000000000..191ce1080b8b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdepim-runtime.nix
@@ -0,0 +1,14 @@
+{ kde, fetchurl, cmake, kdelibs, libxslt, boost, kdepimlibs, akonadi
+, shared_desktop_ontologies, nepomuk_core }:
+
+kde {
+ buildInputs = [
+ kdepimlibs akonadi boost shared_desktop_ontologies
+ libxslt nepomuk_core
+ ];
+#todo: libkgapi, libkolab, libkolabxml
+ meta = {
+ description = "KDE PIM runtime";
+ license = "GPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdepim.nix b/pkgs/desktops/kde-4.10/kdepim.nix
new file mode 100644
index 000000000000..56d18eab1857
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdepim.nix
@@ -0,0 +1,22 @@
+{ kde, boost, gpgme, libassuan, libxslt, kdepimlibs, kdepim_runtime
+, akonadi, shared_desktop_ontologies, cyrus_sasl, grantlee, prison
+, nepomuk_core, nepomuk_widgets, dblatex }:
+
+kde {
+#todo: update grantlee to 0.3
+ buildInputs =
+ [ kdepimlibs boost akonadi shared_desktop_ontologies nepomuk_core nepomuk_widgets
+ libxslt cyrus_sasl gpgme libassuan grantlee prison dblatex
+ ];
+
+ 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.10/kdepimlibs.nix b/pkgs/desktops/kde-4.10/kdepimlibs.nix
new file mode 100644
index 000000000000..27ec1de5a611
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdepimlibs.nix
@@ -0,0 +1,17 @@
+{ kde, boost, cyrus_sasl, gpgme, libical, openldap, shared_mime_info
+, kdelibs, akonadi, libxslt, prison, nepomuk_core
+, shared_desktop_ontologies, qjson }:
+
+kde {
+ buildInputs =
+ [ boost gpgme libical libxslt nepomuk_core qjson
+ openldap cyrus_sasl akonadi shared_desktop_ontologies
+ ];
+
+ propagatedBuildInputs = [ kdelibs ];
+
+ meta = {
+ description = "KDE PIM libraries";
+ license = "LGPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeplasma-addons.nix b/pkgs/desktops/kde-4.10/kdeplasma-addons.nix
new file mode 100644
index 000000000000..3b30a257ddfe
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeplasma-addons.nix
@@ -0,0 +1,22 @@
+{ kde, kdelibs, marble, shared_desktop_ontologies, pkgconfig
+, boost, eigen, kde_workspace, attica, python, qca2, qimageblitz
+, kdepimlibs, libkexiv2, libqalculate, libXtst, libdbusmenu_qt
+, qjson, qoauth, nepomuk_core }:
+# TODO: qwt, scim, ibus
+
+kde {
+
+ KDEDIRS=marble;
+
+ buildInputs = [ kdelibs boost kde_workspace kdepimlibs attica qjson qoauth
+ eigen qca2 libXtst qimageblitz nepomuk_core
+ libqalculate shared_desktop_ontologies marble libkexiv2 libdbusmenu_qt
+];
+
+ nativeBuildInputs = [ pkgconfig ];
+
+ meta = {
+ description = "KDE Plasma Addons";
+ license = "GPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/cervisia.nix b/pkgs/desktops/kde-4.10/kdesdk/cervisia.nix
new file mode 100644
index 000000000000..1dabe46cd429
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/dolphin-plugins-bazaar.nix b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-bazaar.nix
new file mode 100644
index 000000000000..9b3a474d3fcc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-bazaar.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+#todo: doesn't build
+ # Needs kdebase for libkonq
+ buildInputs = [ kdelibs kde_baseapps ];
+
+ meta = {
+ description = "Svn plugin for dolphin";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-git.nix b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-git.nix
new file mode 100644
index 000000000000..d28a8d726ccc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-git.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+#todo: doesn't build
+ # Needs kdebase for libkonq
+ buildInputs = [ kdelibs kde_baseapps ];
+
+ meta = {
+ description = "Git plugin for dolphin";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-hg.nix b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-hg.nix
new file mode 100644
index 000000000000..9b3a474d3fcc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-hg.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+#todo: doesn't build
+ # Needs kdebase for libkonq
+ buildInputs = [ kdelibs kde_baseapps ];
+
+ meta = {
+ description = "Svn plugin for dolphin";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-svn.nix b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-svn.nix
new file mode 100644
index 000000000000..9b3a474d3fcc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/dolphin-plugins-svn.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, kde_baseapps }:
+
+kde {
+#todo: doesn't build
+ # Needs kdebase for libkonq
+ buildInputs = [ kdelibs kde_baseapps ];
+
+ meta = {
+ description = "Svn plugin for dolphin";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/find-svn.patch b/pkgs/desktops/kde-4.10/kdesdk/find-svn.patch
new file mode 100644
index 000000000000..f6f4df942dd9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/find-svn.patch
@@ -0,0 +1,57 @@
+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,8 @@ 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}
++ SUFFIXES apr-0 apr-1 apr-1.0
+ )
+ if(_INCLUDES)
+ set(SVN_INCLUDES ${SVN_INCLUDES} ${_INCLUDES})
+@@ -72,6 +69,24 @@ 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}
++ 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.10/kdesdk/kapptemplate.nix b/pkgs/desktops/kde-4.10/kdesdk/kapptemplate.nix
new file mode 100644
index 000000000000..391536248dd3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/kcachegrind.nix b/pkgs/desktops/kde-4.10/kdesdk/kcachegrind.nix
new file mode 100644
index 000000000000..65d410cca48d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/kde-dev-scripts.nix b/pkgs/desktops/kde-4.10/kdesdk/kde-dev-scripts.nix
new file mode 100644
index 000000000000..df81145e5d60
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kde-dev-scripts.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Various scripts to ease KDE development";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kde-dev-utils.nix b/pkgs/desktops/kde-4.10/kdesdk/kde-dev-utils.nix
new file mode 100644
index 000000000000..85b6ea6ac00f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kde-dev-utils.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, gcc }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ preConfigure = "export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${gcc}:${gcc.gcc}";
+
+ meta = {
+ description = "various KDE development utilities";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kdesdk-strigi-analyzers.nix b/pkgs/desktops/kde-4.10/kdesdk/kdesdk-strigi-analyzers.nix
new file mode 100644
index 000000000000..4d579b88ba8a
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kdesdk-strigi-analyzers.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Strigi analyzers for diff, po and ts";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kdesdk-thumbnailers.nix b/pkgs/desktops/kde-4.10/kdesdk/kdesdk-thumbnailers.nix
new file mode 100644
index 000000000000..782ef72ce5aa
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kdesdk-thumbnailers.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs, gettext }:
+
+kde {
+#todo: doesn't build
+ buildInputs = [ kdelibs gettext ];
+
+ meta = {
+ description = "PO file format thumbnailer";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kioslave-perldoc.nix b/pkgs/desktops/kde-4.10/kdesdk/kioslave-perldoc.nix
new file mode 100644
index 000000000000..6f1029539f83
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kioslave-perldoc.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, perl }:
+
+kde {
+#todo: doesn't build
+ buildInputs = [ kdelibs perl ];
+
+ cmakeFlags = [ "-DBUILD_perldoc=ON" ];
+
+ meta = {
+ description = "perldoc: kioslave";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kioslave-svn.nix b/pkgs/desktops/kde-4.10/kdesdk/kioslave-svn.nix
new file mode 100644
index 000000000000..13fc035e6063
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/kioslave-svn.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, subversionClient, apr, aprutil }:
+
+kde {
+#todo: doesn't build
+ buildInputs = [ kdelibs subversionClient apr aprutil ];
+
+ patches = [ ./find-svn.patch ];
+
+ meta = {
+ description = "Subversion kioslave";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/kompare.nix b/pkgs/desktops/kde-4.10/kdesdk/kompare.nix
new file mode 100644
index 000000000000..1ddb4b8ea5b9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/lokalize.nix b/pkgs/desktops/kde-4.10/kdesdk/lokalize.nix
new file mode 100644
index 000000000000..1565426eb1fc
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/okteta.nix b/pkgs/desktops/kde-4.10/kdesdk/okteta.nix
new file mode 100644
index 000000000000..058636596ad8
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdesdk/okteta.nix
@@ -0,0 +1,13 @@
+{ kde, kdelibs, qca2 }:
+
+kde {
+ buildInputs = [ kdelibs qca2 ];
+
+# TODO: Look what does -DBUILD_mobile add
+
+ enableParallelBuilding = false;
+
+ meta = {
+ description = "KDE byte editor";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdesdk/poxml.nix b/pkgs/desktops/kde-4.10/kdesdk/poxml.nix
new file mode 100644
index 000000000000..1ab9ed49df56
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdesdk/umbrello.nix b/pkgs/desktops/kde-4.10/kdesdk/umbrello.nix
new file mode 100644
index 000000000000..e83a2d9a901b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdetoys/amor.nix b/pkgs/desktops/kde-4.10/kdetoys/amor.nix
new file mode 100644
index 000000000000..936d63d544a9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdetoys/kteatime.nix b/pkgs/desktops/kde-4.10/kdetoys/kteatime.nix
new file mode 100644
index 000000000000..dacf54def4b0
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdetoys/ktux.nix b/pkgs/desktops/kde-4.10/kdetoys/ktux.nix
new file mode 100644
index 000000000000..108f9be7c722
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/ark.nix b/pkgs/desktops/kde-4.10/kdeutils/ark.nix
new file mode 100644
index 000000000000..eb3e12281d64
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/ark.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libarchive, bzip2, kde_baseapps, lzma, qjson }:
+
+kde {
+ buildInputs = [ kdelibs kde_baseapps libarchive bzip2 lzma qjson ];
+
+ meta = {
+ description = "KDE Archiving Tool";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/filelight.nix b/pkgs/desktops/kde-4.10/kdeutils/filelight.nix
new file mode 100644
index 000000000000..25ecabed27ce
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/kcalc.nix b/pkgs/desktops/kde-4.10/kdeutils/kcalc.nix
new file mode 100644
index 000000000000..08b202e8f0e8
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/kcharselect.nix b/pkgs/desktops/kde-4.10/kdeutils/kcharselect.nix
new file mode 100644
index 000000000000..d4c9c06f483d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/kdf.nix b/pkgs/desktops/kde-4.10/kdeutils/kdf.nix
new file mode 100644
index 000000000000..3f9da58d0a62
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/kfloppy.nix b/pkgs/desktops/kde-4.10/kdeutils/kfloppy.nix
new file mode 100644
index 000000000000..2434a4fa671f
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/kgpg.nix b/pkgs/desktops/kde-4.10/kdeutils/kgpg.nix
new file mode 100644
index 000000000000..3027e2357a49
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/kgpg.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, kdepimlibs, nepomuk_core }:
+
+kde {
+ buildInputs = [ kdelibs kdepimlibs nepomuk_core ];
+
+ meta = {
+ description = "Simple KDE GUI for GPG";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/kremotecontrol.nix b/pkgs/desktops/kde-4.10/kdeutils/kremotecontrol.nix
new file mode 100644
index 000000000000..70311a789f99
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/kremotecontrol.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs, libXtst }:
+
+kde {
+ buildInputs = [ kdelibs libXtst ];
+
+ meta = {
+ description = "KDE remote control";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/ktimer.nix b/pkgs/desktops/kde-4.10/kdeutils/ktimer.nix
new file mode 100644
index 000000000000..5700977349e3
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/ktimer.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "KDE Timer";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/kwallet.nix b/pkgs/desktops/kde-4.10/kdeutils/kwallet.nix
new file mode 100644
index 000000000000..9ec0e6c0396c
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdeutils/print-manager.nix b/pkgs/desktops/kde-4.10/kdeutils/print-manager.nix
new file mode 100644
index 000000000000..1b0d748e6cc5
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/print-manager.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 manager";
+ longDescription = "Applet to view current print jobs and configure new printers";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/superkaramba.nix b/pkgs/desktops/kde-4.10/kdeutils/superkaramba.nix
new file mode 100644
index 000000000000..cbe7a2856062
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdeutils/superkaramba.nix
@@ -0,0 +1,11 @@
+{ kde, kdelibs, qimageblitz, python }:
+
+kde {
+ buildInputs = [ kdelibs qimageblitz python ];
+
+ cmakeFlags = [ "-DBUILD_icons=TRUE" "-DBUILD_plasma=TRUE" ];
+
+ meta = {
+ description = "A KDE Eye-candy Application";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdeutils/sweeper.nix b/pkgs/desktops/kde-4.10/kdeutils/sweeper.nix
new file mode 100644
index 000000000000..78d56c7df30e
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/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.10/kdewebdev/kfilereplace.nix b/pkgs/desktops/kde-4.10/kdewebdev/kfilereplace.nix
new file mode 100644
index 000000000000..55e37809e07b
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdewebdev/kfilereplace.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "Batch search and replace tool";
+ homepage = http://www.kdewebdev.org;
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdewebdev/kimagemapeditor.nix b/pkgs/desktops/kde-4.10/kdewebdev/kimagemapeditor.nix
new file mode 100644
index 000000000000..6d22f72461f9
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdewebdev/kimagemapeditor.nix
@@ -0,0 +1,10 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "An HTML imagemap editor";
+ homepage = http://www.nongnu.org/kimagemap/;
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdewebdev/klinkstatus.nix b/pkgs/desktops/kde-4.10/kdewebdev/klinkstatus.nix
new file mode 100644
index 000000000000..09f409cc4746
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdewebdev/klinkstatus.nix
@@ -0,0 +1,12 @@
+{ kde, kdelibs, libxml2, libxslt, kdepimlibs, nepomuk_core, htmlTidy, boost }:
+
+kde {
+#todo: ruby is not found. needed for some example scripts
+ buildInputs =
+ [ kdelibs kdepimlibs htmlTidy nepomuk_core boost ];
+
+ meta = {
+ description = "A KDE link checker";
+ homepage = http://klinkstatus.kdewebdev.org;
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/kdewebdev/kommander.nix b/pkgs/desktops/kde-4.10/kdewebdev/kommander.nix
new file mode 100644
index 000000000000..d5f4337f714d
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/kdewebdev/kommander.nix
@@ -0,0 +1,9 @@
+{ kde, kdelibs }:
+
+kde {
+ buildInputs = [ kdelibs ];
+
+ meta = {
+ description = "A graphical editor of scripted dialogs";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/l10n/default.nix b/pkgs/desktops/kde-4.10/l10n/default.nix
new file mode 100644
index 000000000000..57d41fb35bf4
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/l10n/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, kdelibs, gettext, release, stable }:
+
+let
+
+ inherit (stdenv.lib) attrByPath singleton;
+
+ kdeL10nDerivation =
+ { lang, saneName, sha256 }:
+
+ stdenv.mkDerivation rec {
+ name = "kde-l10n-${saneName}-${release}";
+
+ src = fetchurl {
+ url = "mirror://kde/${if stable then "" else "un"}stable/${release}/src/kde-l10n/kde-l10n-${lang}-${release}.tar.xz";
+ name = "${name}.tar.xz";
+ inherit sha256;
+ };
+
+ buildInputs = [ gettext kdelibs ];
+
+ cmakeFlags = "-Wno-dev";
+
+ meta = {
+ description = "KDE translation for ${lang}";
+ 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.10/l10n/l10n-manifest.sh b/pkgs/desktops/kde-4.10/l10n/l10n-manifest.sh
new file mode 100755
index 000000000000..ec159a1e2047
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/l10n/l10n-manifest.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Usage: download kde-l10n to $dir, then run
+# $0 $dir
+
+dir=$1
+
+if [[ ! -d "${dir}" ]]; then
+ echo "${dir} is not a directory (or doesn't exist)!" >&2
+ exit 1
+fi
+
+release=$(ls "${dir}"/kde-l10n-en_GB-*.tar.xz | \
+ sed -e 's/.*en_GB-//' -e 's/\.tar\.xz//')
+
+echo "Detected release ${release}" >&2
+
+exec > "manifest-${release}.nix"
+echo "["
+for i in `cd "${dir}"; ls kde-l10n-*-${release}.tar.xz`; do
+ lang=${i%-${release}.tar.xz}
+ lang=${lang#kde-l10n-}
+ echo -n "${lang}.. " >&2
+ hash=$(nix-hash --type sha256 --flat --base32 "${dir}/${i}")
+ echo "{"
+ echo " lang = \"${lang}\";"
+ echo " saneName = \"$(echo $lang | sed s^@^_^g)\";"
+ echo " sha256 = \"${hash}\";"
+ echo "}"
+ echo $hash >&2
+done
+echo "]"
diff --git a/pkgs/desktops/kde-4.10/l10n/manifest-4.10.2.nix b/pkgs/desktops/kde-4.10/l10n/manifest-4.10.2.nix
new file mode 100644
index 000000000000..93e47d2e63a2
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/l10n/manifest-4.10.2.nix
@@ -0,0 +1,282 @@
+[
+{
+ lang = "ar";
+ saneName = "ar";
+ sha256 = "1si3hkxag2s93vywr8spiwaz8rr287b8ms0akw7ba4hr3mccgllz";
+}
+{
+ lang = "bg";
+ saneName = "bg";
+ sha256 = "1dfp2zkzj5h0qqz03sicdvw024afc49vlj59k973vqnziwqwkvil";
+}
+{
+ lang = "bs";
+ saneName = "bs";
+ sha256 = "0v56by3jxpn76dcbrz89np6par2ndmz6l9lgpyzi3qgh7c1flh3k";
+}
+{
+ lang = "ca";
+ saneName = "ca";
+ sha256 = "0xj157l9h6frac4pnfsirh06j7kdq37wlikm7rnybnpdg7nv4kls";
+}
+{
+ lang = "ca@valencia";
+ saneName = "ca_valencia";
+ sha256 = "0zrc3cpbiarsfh2jqrrhxalmz62k5bb9wf9vbfcvbh90a0v5csaw";
+}
+{
+ lang = "cs";
+ saneName = "cs";
+ sha256 = "1scy726cxyv6gmh77wnfb8qb00vhhxxg1wwg8lk56r79jsh77pbh";
+}
+{
+ lang = "da";
+ saneName = "da";
+ sha256 = "1qdhzw9v1q188bky8phv3wj0sj3imf08j3bqqf2gcniw2zr0nkhq";
+}
+{
+ lang = "de";
+ saneName = "de";
+ sha256 = "13r97in3yl17scq41fncbzp3s99c2ahspxixcjb5b066c9ln4n4z";
+}
+{
+ lang = "el";
+ saneName = "el";
+ sha256 = "0c3w2cxmv46l85kg9d68v037br0ck423k0zfkyi01hgh76jixhnm";
+}
+{
+ lang = "en_GB";
+ saneName = "en_GB";
+ sha256 = "158i25z1b5hj5fhhsczf52l2369xmzyxfjjr1xp9pp5aga2kp3dc";
+}
+{
+ lang = "es";
+ saneName = "es";
+ sha256 = "0vm2sr5nqzjssm2mzjw56wwsygzasrr04pl77y4mvq1d573gaks3";
+}
+{
+ lang = "et";
+ saneName = "et";
+ sha256 = "0w4dqvgain4m14cr8vmr49a890lmjiz203vw347fyq6mvqg57f3z";
+}
+{
+ lang = "eu";
+ saneName = "eu";
+ sha256 = "1809g1jdbrp22572h68zr7a5riymzv240hpmh633v8qmdqyzmnlk";
+}
+{
+ lang = "fa";
+ saneName = "fa";
+ sha256 = "1y1m9zagw1wras6vfrw6zbhy08xm1djfg7wg0fqvr2pnw01b903f";
+}
+{
+ lang = "fi";
+ saneName = "fi";
+ sha256 = "0fd6zbxn1dcq3i8vp6m4ifsrfhpghbgvwrh0gqmpw60kr9ms72pj";
+}
+{
+ lang = "fr";
+ saneName = "fr";
+ sha256 = "1ybdnvsb2fi8hymad4fj7dhgfqjabbhgjgmcs4g0px583gbx38ys";
+}
+{
+ lang = "ga";
+ saneName = "ga";
+ sha256 = "1hcdx82213dhy6v2hy9c543fci8pj3p5lz2bb0sds14wscryngiy";
+}
+{
+ lang = "gl";
+ saneName = "gl";
+ sha256 = "0p0k0r42wqp9ww0w4k4dp0cp9mv4is1zffsnpb1vdj8fr4n73lms";
+}
+{
+ lang = "he";
+ saneName = "he";
+ sha256 = "0wfyx7w2igz078f9s3nf2gr2s2bj6kdrpsd4cycdrvi7lpkv97mg";
+}
+{
+ lang = "hi";
+ saneName = "hi";
+ sha256 = "0nr6lskvq4v885hlnwyn5c6r76lj923lnmzz7f3ymxsm8ahgy9i1";
+}
+{
+ lang = "hr";
+ saneName = "hr";
+ sha256 = "1zg11q416rlcwygbapllmhwy577gwrvxyrr2hv0knz8r6jdwxnxj";
+}
+{
+ lang = "hu";
+ saneName = "hu";
+ sha256 = "1km3w6m7m3w3315ivy80rwmn82g41cfw3id21ks8sykqray60jyf";
+}
+{
+ lang = "ia";
+ saneName = "ia";
+ sha256 = "1rb6qsvhp8r7ivsjcp2980vdkb5pczxky6wix884xdd2jyb4dqbs";
+}
+{
+ lang = "is";
+ saneName = "is";
+ sha256 = "0kngwsasyw36g05xbxcgn71mkl89xs3sg8lx3qzd6g7drk2s5r1w";
+}
+{
+ lang = "it";
+ saneName = "it";
+ sha256 = "1ckb7alln8f72x9q6hi4ji7xylaipd3zwilnrr7978y1q5b8297l";
+}
+{
+ lang = "ja";
+ saneName = "ja";
+ sha256 = "1s0m6kl0wdd22pbnrnmxq19y1nzyvmln64g5gqr9c33x08lwd3jz";
+}
+{
+ lang = "kk";
+ saneName = "kk";
+ sha256 = "1jn3pd4j5jpw8ing7hi0npkrk4cy5vbfp62jcpn93dizq71g0cis";
+}
+{
+ lang = "km";
+ saneName = "km";
+ sha256 = "1y6492rmh8hw3fw8yss80j8dnn6gah4mp207wnjx7savxdganrk9";
+}
+{
+ lang = "ko";
+ saneName = "ko";
+ sha256 = "05r7cslynx4yxlkaqq2lhjg2rmvjzz74h41if5fj3lkm9p848663";
+}
+{
+ lang = "lt";
+ saneName = "lt";
+ sha256 = "1xa7jc3jbhicqzikayssmm08mnqwhwy3gbr2xp2wyxvrwgy0vd7b";
+}
+{
+ lang = "lv";
+ saneName = "lv";
+ sha256 = "1xr2938yqkl81rwcfg43mqksm9r6zcw5bp49cm5ybrrr1np08d4p";
+}
+{
+ lang = "mr";
+ saneName = "mr";
+ sha256 = "0w4g863da74vabbx6dc7hpf6lqa09bsxm5bdl33bqp6wxz0qbrxf";
+}
+{
+ lang = "nb";
+ saneName = "nb";
+ sha256 = "1axqkkwgm3x12fpfnvxzm2bf22rh2fxic15rrk70sjc0xzkmbfc2";
+}
+{
+ lang = "nds";
+ saneName = "nds";
+ sha256 = "1y72jrw7s6afznj0axwrxczvcxm2i3m9dldjjb32w8lr2gbibhz9";
+}
+{
+ lang = "nl";
+ saneName = "nl";
+ sha256 = "01ps3fgwhzffsb52zcjgi4frgy719wlgjmrva9hl320wgi6bgs30";
+}
+{
+ lang = "nn";
+ saneName = "nn";
+ sha256 = "0a9zrn54x38c4jn2p59s3wiv42g1f7nwar2gppn992q2awq05m6x";
+}
+{
+ lang = "pa";
+ saneName = "pa";
+ sha256 = "1782vpj199ck5fswv3jc0adff0k7bv699b4la604kb0a7dl43cf2";
+}
+{
+ lang = "pl";
+ saneName = "pl";
+ sha256 = "0lldhl2jd51j3srf2dqq6gd4nxy6y3qxd585bgxpclvnmz7zqq9b";
+}
+{
+ lang = "pt";
+ saneName = "pt";
+ sha256 = "10w740h5h3ag2jpj44xyclpya59d8jmgv5ma1rz27wcvwl38jggx";
+}
+{
+ lang = "pt_BR";
+ saneName = "pt_BR";
+ sha256 = "1rn5jc9dihi0mwvly1rk1fqzdbhyg9gxax1bip0l80wg8mj9d0h5";
+}
+{
+ lang = "ro";
+ saneName = "ro";
+ sha256 = "1l1b9j9ixianyvbg2msc4d4bkm2km3w0h6xkbcyl7rg0cja9ys8l";
+}
+{
+ lang = "ru";
+ saneName = "ru";
+ sha256 = "0rgasg2c0ds96yqky1rnqj7fc9w3g6p0ng27v5vq3ja7paij1yv9";
+}
+{
+ lang = "si";
+ saneName = "si";
+ sha256 = "0124dhn1ng225zhyz8lmc2lf6cpxbbirr3bl3h6cq8lyjs4p078l";
+}
+{
+ lang = "sk";
+ saneName = "sk";
+ sha256 = "0xfp2wh1qyyh1cixypam9qnni0zin580vcbnhpmbx5disy3znmga";
+}
+{
+ lang = "sl";
+ saneName = "sl";
+ sha256 = "1hfqq8k5n48hjypj5sribh761gpgn930410qbdnrxjmm0l95rzlp";
+}
+{
+ lang = "sr";
+ saneName = "sr";
+ sha256 = "1rma3l9mpm1xakkf2mkjpa6nxhl076hnm6fiirna7nsgvsk2c3jz";
+}
+{
+ lang = "sv";
+ saneName = "sv";
+ sha256 = "02rg9hm0j1lfdv9nb80bh4yy41z3rvfh39w8xwrmv941y6k58q7w";
+}
+{
+ lang = "tg";
+ saneName = "tg";
+ sha256 = "16731c2bjg3c8r7i6lm6j3gsj9yqs2yd69sl04y9nv5yh1i0km15";
+}
+{
+ lang = "th";
+ saneName = "th";
+ sha256 = "032zwwn5za8cknmqxd8yzr3djylnvrzjldgygqlshf0pxkryjkrp";
+}
+{
+ lang = "tr";
+ saneName = "tr";
+ sha256 = "1bp8bndwyw33rkkv2dhs1l9qbzkhccsrqcflxnjrm98shks2vgzr";
+}
+{
+ lang = "ug";
+ saneName = "ug";
+ sha256 = "0hhdj4yb208rmpd9a77jf7x9p5iq35iyvn68sr6n1m228pncddi6";
+}
+{
+ lang = "uk";
+ saneName = "uk";
+ sha256 = "0sw07alwjw7qiss93bgf4h5ix9kpz2czfwbbgdydfwqcwz5nzvcy";
+}
+{
+ lang = "vi";
+ saneName = "vi";
+ sha256 = "06fchmphkp7rpg6i0gd50qyjlfr6drj0xnlkdczw54iy1zklrlmh";
+}
+{
+ lang = "wa";
+ saneName = "wa";
+ sha256 = "1pm3wvs88h03gch6nzn5hd268r2q4jd13slh6bh2nvhq719g8zsa";
+}
+{
+ lang = "zh_CN";
+ saneName = "zh_CN";
+ sha256 = "0k8j3dprpzxi87rd6xhp1qr93jg91i0hym87y7wlqb239aqz41dn";
+}
+{
+ lang = "zh_TW";
+ saneName = "zh_TW";
+ sha256 = "05ks7gdl3x6wkxs2rdj6f48bpd4cishw9zfh0a264kix6mh2fzcq";
+}
+]
diff --git a/pkgs/desktops/kde-4.10/oxygen-icons.nix b/pkgs/desktops/kde-4.10/oxygen-icons.nix
new file mode 100644
index 000000000000..34af88a31931
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/oxygen-icons.nix
@@ -0,0 +1,15 @@
+{ kde, cmake }:
+
+kde {
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "10dpbgidn7rwdhm044ydd294dv97hrhaz7jakf1yncszqbhbxksc";
+
+ nativeBuildInputs = [ cmake ];
+
+ meta = {
+ description = "KDE Oxygen theme icons";
+ longDescription = "Icons for KDE's default theme";
+ license = "GPL";
+ };
+}
diff --git a/pkgs/desktops/kde-4.10/support/akonadi/default.nix b/pkgs/desktops/kde-4.10/support/akonadi/default.nix
new file mode 100644
index 000000000000..0ba617226211
--- /dev/null
+++ b/pkgs/desktops/kde-4.10/support/akonadi/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, qt4, shared_mime_info, libxslt, boost, automoc4, soprano, sqlite }:
+
+stdenv.mkDerivation rec {
+ name = "akonadi-1.9.1";
+
+ src = fetchurl {
+ url = "mirror://kde/stable/akonadi/src/${name}.tar.bz2";
+ sha256 = "1w10kb4m8ri6yi1mii2j0sckj3vq11y6qkzijm3lbh4w0fi4kbjk";
+ };
+
+ buildInputs = [ qt4 soprano libxslt boost sqlite ];
+
+ nativeBuildInputs = [ cmake automoc4 shared_mime_info ];
+
+ enableParallelBuilding = true;
+
+ meta = with stdenv.lib; {
+ description = "KDE PIM Storage Service";
+ license = "LGPL";
+ homepage = http://pim.kde.org/akonadi;
+ maintainers = [ maintainers.sander maintainers.urkud ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 36f82cc03a9b..9003042952e8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8541,6 +8541,12 @@ let
libotr = libotr_3_2;
}) ../desktops/kde-4.8;
+ kde410 = kdePackagesFor (pkgs.kde410 // {
+ boost = boost149;
+ eigen = eigen2;
+ libotr = libotr_3_2;
+ }) ../desktops/kde-4.10;
+
kdePackagesFor = self: dir:
let callPackageOrig = callPackage; in
let