summary refs log tree commit diff
path: root/pkgs/desktops
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops')
-rw-r--r--pkgs/desktops/enlightenment/efl.nix6
-rw-r--r--pkgs/desktops/enlightenment/rage.nix14
-rw-r--r--pkgs/desktops/gnome-2/desktop/gnome-keyring/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/empathy/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/folks/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gdm/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gjs/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix3
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/core/vte/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix2
-rw-r--r--pkgs/desktops/kde-4.14/kde-runtime.nix2
-rw-r--r--pkgs/desktops/kde-4.14/kdenetwork/kopete.nix1
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kcalc.nix5
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-app.nix2
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix7
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix7
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix6
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix2
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/default.nix6
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/0001-extra-cmake-modules-paths.patch74
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix12
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch37
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh98
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix4
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix36
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix14
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix5
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix6
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/default.nix9
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix4
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kscreen.nix5
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix3
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix3
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix39
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch115
-rw-r--r--pkgs/desktops/xfce/core/exo.nix9
-rw-r--r--pkgs/desktops/xfce/core/garcon.nix16
-rw-r--r--pkgs/desktops/xfce/core/libxfce4ui.nix30
-rw-r--r--pkgs/desktops/xfce/core/libxfce4util.nix10
-rw-r--r--pkgs/desktops/xfce/core/libxfcegui4.nix21
-rw-r--r--pkgs/desktops/xfce/core/tumbler.nix28
-rw-r--r--pkgs/desktops/xfce/core/xfce4-appfinder.nix16
-rw-r--r--pkgs/desktops/xfce/core/xfce4-dev-tools.nix8
-rw-r--r--pkgs/desktops/xfce/core/xfce4-panel.nix29
-rw-r--r--pkgs/desktops/xfce/core/xfce4-power-manager.nix22
-rw-r--r--pkgs/desktops/xfce/core/xfce4-session.nix26
-rw-r--r--pkgs/desktops/xfce/core/xfce4-settings.nix22
-rw-r--r--pkgs/desktops/xfce/core/xfconf.nix16
-rw-r--r--pkgs/desktops/xfce/core/xfdesktop.nix22
-rw-r--r--pkgs/desktops/xfce/core/xfwm4.nix16
70 files changed, 545 insertions, 366 deletions
diff --git a/pkgs/desktops/enlightenment/efl.nix b/pkgs/desktops/enlightenment/efl.nix
index c2124f0b2928..3df091fd48a7 100644
--- a/pkgs/desktops/enlightenment/efl.nix
+++ b/pkgs/desktops/enlightenment/efl.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, openssl, libjpeg, zlib, freetype, fontconfig, fribidi, SDL2, SDL, mesa, giflib, libpng, libtiff, glib, gst_all_1, libpulseaudio, libsndfile, xorg, libdrm, libxkbcommon, udev, utillinux, dbus, bullet, luajit, python27Packages, openjpeg, doxygen, expat, harfbuzz, jbig2dec, librsvg, dbus_libs, alsaLib, poppler, libraw, libspectre, xineLib, libwebp, curl, libinput }:
+{ stdenv, fetchurl, pkgconfig, openssl, libjpeg, zlib, freetype, fontconfig, fribidi, SDL2, SDL, mesa, giflib, libpng, libtiff, glib, gst_all_1, libpulseaudio, libsndfile, xorg, libdrm, libxkbcommon, udev, utillinux, dbus, bullet, luajit, python27Packages, openjpeg, doxygen, expat, harfbuzz, jbig2dec, librsvg, dbus_libs, alsaLib, poppler, libraw, libspectre, xineLib, libwebp, curl, libinput, systemd }:
 
 
 stdenv.mkDerivation rec {
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ pkgconfig openssl zlib freetype fontconfig fribidi SDL2 SDL mesa
     giflib libpng libtiff glib gst_all_1.gstreamer gst_all_1.gst-plugins-base
     gst_all_1.gst-libav libpulseaudio libsndfile xorg.libXcursor xorg.printproto
-    xorg.libX11 udev utillinux ];
+    xorg.libX11 udev utillinux systemd ];
 
   propagatedBuildInputs = [ libxkbcommon python27Packages.dbus dbus libjpeg xorg.libXcomposite
     xorg.libXdamage xorg.libXinerama xorg.libXp xorg.libXtst xorg.libXi xorg.libXext
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     "--disable-tslib" "--with-systemdunitdir=$out/systemd/user"
     "ac_ct_CXX=foo" ];
 
-  NIX_CFLAGS_COMPILE = [ "-I${xorg.libXtst}" "-I${dbus_libs}/include/dbus-1.0" "-I${dbus_libs}/lib/dbus-1.0/include" ];
+  NIX_CFLAGS_COMPILE = [ "-I${xorg.libXtst}" "-I${dbus_libs.dev}/include/dbus-1.0" "-I${dbus_libs.lib}/lib/dbus-1.0/include" ];
 
   patches = [ ./efl-elua.patch ];
 
diff --git a/pkgs/desktops/enlightenment/rage.nix b/pkgs/desktops/enlightenment/rage.nix
index 8c3391cf2714..67f9c68cd613 100644
--- a/pkgs/desktops/enlightenment/rage.nix
+++ b/pkgs/desktops/enlightenment/rage.nix
@@ -7,19 +7,23 @@ stdenv.mkDerivation rec {
     url = "http://download.enlightenment.org/rel/apps/rage/${name}.tar.gz";
     sha256 = "10j3n8crk16jzqz2hn5djx6vms5f6x83qyiaphhqx94h9dgv2mgg";
   };
-  buildInputs = [ elementary efl automake autoconf libtool pkgconfig
-    makeWrapper ];
-  GST_PLUGIN_PATH = lib.makeSearchPath "lib/gstreamer-1.0" [
+  buildInputs = [
+    elementary efl automake autoconf libtool pkgconfig
+    makeWrapper
+    gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-good
     gst_all_1.gst-plugins-bad
-    gst_all_1.gst-libav ];
+    gst_all_1.gst-libav
+ ];
+
   configurePhase = ''
     ./autogen.sh --prefix=$out
   '';
+
   postInstall = ''
     wrapProgram $out/bin/rage \
-      --prefix GST_PLUGIN_PATH : "$GST_PLUGIN_PATH"
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
   '';
   meta = {
     description = "Video + Audio player along the lines of mplayer";
diff --git a/pkgs/desktops/gnome-2/desktop/gnome-keyring/default.nix b/pkgs/desktops/gnome-2/desktop/gnome-keyring/default.nix
index f31875bed91c..50f2cd081332 100644
--- a/pkgs/desktops/gnome-2/desktop/gnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-2/desktop/gnome-keyring/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "02r9gv3a4a705jf3h7c0bizn33c73wz0iw2500m7z291nrnmqkmj";
   };
   
-  buildInputs = [ dbus.libs libgcrypt pam python gtk GConf libgnome_keyring ];
+  buildInputs = [ dbus libgcrypt pam python gtk GConf libgnome_keyring ];
 
   propagatedBuildInputs = [ glib libtasn1 ];
 
diff --git a/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix b/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix
index a9bb87d4dddf..100dfbf3acec 100644
--- a/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix
@@ -27,7 +27,7 @@ in stdenv.mkDerivation rec {
   configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar"
                      "--disable-libcryptui" ];
 
-  NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0";
+  NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix
index 4c42c6c026d3..48b45f28522e 100644
--- a/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix
@@ -35,9 +35,9 @@ stdenv.mkDerivation rec {
                   gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas
                   file libtool librsvg ];
 
-  NIX_CFLAGS_COMPILE = [ "-I${dbus_glib}/include/dbus-1.0"
-                         "-I${dbus_libs}/include/dbus-1.0"
-                         "-I${dbus_libs}/lib/dbus-1.0/include" ];
+  NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.lib}/lib/dbus-1.0/include" ];
 
   preFixup = ''
     for f in $out/bin/* $out/libexec/*; do
diff --git a/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix
index 322dd3bedac6..d50036a597e6 100644
--- a/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
                   gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common
                   gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf ];
 
-  NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0";
+  NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/folks/default.nix b/pkgs/desktops/gnome-3/3.18/core/folks/default.nix
index 6e200bdb3188..4385c6b6f75b 100644
--- a/pkgs/desktops/gnome-3/3.18/core/folks/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/folks/default.nix
@@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
 
   configureFlags = "--disable-fatal-warnings";
 
-  NIX_CFLAGS_COMPILE = ["-I${nspr}/include/nspr" "-I${nss}/include/nss"
-                        "-I${dbus_glib}/include/dbus-1.0" "-I${dbus_libs}/include/dbus-1.0"];
+  NIX_CFLAGS_COMPILE = ["-I${nspr.dev}/include/nspr" "-I${nss.dev}/include/nss"
+                        "-I${dbus_glib.dev}/include/dbus-1.0" "-I${dbus_libs.dev}/include/dbus-1.0"];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix
index 51b67afb01fd..3749be2de27f 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix
@@ -11,9 +11,9 @@ stdenv.mkDerivation rec {
   };
 
   preConfigure = ''
-    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X"
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
     substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session'
-    substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.tools}/bin/dbus-launch'
+    substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.dbus-launch}'
     substituteInPlace data/gdm.conf-custom.in --replace '#WaylandEnable=false' 'WaylandEnable=false'
     sed 's/#Enable=true/Enable=true/' -i data/gdm.conf-custom.in
  '';
diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix
index 1db969651317..a13370e5c9a9 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
 
   # Only needed to make it build
   preConfigure = ''
-    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X"
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
   '';
 
   configureFlags = [ "--sysconfdir=/etc"
diff --git a/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix
index 792e34c7b148..ac53726bc537 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   propagatedBuildInputs = [ spidermonkey_24 ];
 
   postInstall = ''
-    sed 's|-lreadline|-L${readline}/lib -lreadline|g' -i $out/lib/libgjs.la
+    sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix
index 1d1f9d18c566..51e3f6ab3133 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   preFixup = ''
     wrapProgram "$out/bin/gnome-dictionary" \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix
index d810fbb862b7..c6688fd30cd7 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix
@@ -7,7 +7,7 @@
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  NIX_CFLAGS_COMPILE = "-I${dbus_glib}/include/dbus-1.0 -I${dbus_libs}/include/dbus-1.0";
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix
index 763fc990bdab..15d93793088b 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   preFixup = ''
     wrapProgram "$out/bin/gnome-screenshot" \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix
index 716f92a072d4..6b7b28ad4000 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   preFixup = ''
     wrapProgram "$out/bin/gnome-system-log" \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix
index 49ad40912c66..e8f649835062 100644
--- a/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix
@@ -14,8 +14,8 @@ stdenv.mkDerivation rec {
     sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' -i data/dav_user_2.2.conf 
   '';
 
-  configureFlags = [ "--with-httpd=${apacheHttpd_2_2}/bin/httpd"
-                     "--with-modules-path=${apacheHttpd_2_2}/modules"
+  configureFlags = [ "--with-httpd=${apacheHttpd_2_2.out}/bin/httpd"
+                     "--with-modules-path=${apacheHttpd_2_2.out}/modules"
                      "--disable-bluetooth"
                      "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix
index e8ddf7096e62..76d9118c4b95 100644
--- a/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "0w453f3nnkbkrly7spx5lx5pf6mwynzmd5qhszprq8amij2invpa";
   };
 
-  outputs = [ "out" "doc" ];
+  outputs = [ "dev" "out" ];
+  outputBin = "dev";
 
   configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic";
 
diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix b/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix
index 5ccca36bcaad..cbb52c9aaa12 100644
--- a/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   postInstall = ''
-    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses}/lib -lncurses"
+    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses.out}/lib -lncurses"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/default.nix b/pkgs/desktops/gnome-3/3.18/core/vte/default.nix
index 334718403a0d..38850f0fe761 100644
--- a/pkgs/desktops/gnome-3/3.18/core/vte/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/core/vte/default.nix
@@ -20,7 +20,7 @@ let baseAttrs = rec {
   enableParallelBuilding = true;
 
   postInstall = ''
-    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses}/lib -lncurses"
+    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses.out}/lib -lncurses"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix
index 19f340ac291e..e7f833bf7172 100644
--- a/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     wrapProgram "$out/bin/gitg" \
       --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix
index 986d4058af92..d0c6674ad9bd 100644
--- a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
   preFixup = ''
     wrapProgram "$out/bin/gnome-tweak-tool" \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --suffix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+      --suffix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
       --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
       --prefix PYTHONPATH : "$PYTHONPATH:$(toPythonPath $out)"
   '';
diff --git a/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix
index eeb2cee86cdd..fd7ecbea01ff 100644
--- a/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ intltool autoreconfHook pkgconfig vala glib
-                  gtk3 gnome3.gnome_control_center dbus.libs
+                  gtk3 gnome3.gnome_control_center dbus
                   clutter pango appstream-glib makeWrapper ];
 
   preConfigure = "intltoolize -f";
diff --git a/pkgs/desktops/kde-4.14/kde-runtime.nix b/pkgs/desktops/kde-4.14/kde-runtime.nix
index 655555cd140a..495ea242e0d0 100644
--- a/pkgs/desktops/kde-4.14/kde-runtime.nix
+++ b/pkgs/desktops/kde-4.14/kde-runtime.nix
@@ -16,7 +16,7 @@ kde {
 
   nativeBuildInputs = [ shared_mime_info ];
 
-  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR -I${glib}/include/glib-2.0 -I${glib}/lib/glib-2.0/include";
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR -I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include";
 
   passthru.propagatedUserEnvPackages = [ virtuoso ];
 
diff --git a/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix b/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix
index 267c2b782129..f5750d60045f 100644
--- a/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix
+++ b/pkgs/desktops/kde-4.14/kdenetwork/kopete.nix
@@ -9,6 +9,7 @@ kde {
 
   patches = [
     (fetchurl {
+      name = "kopete.patch";
       url = "https://bugs.kde.org/attachment.cgi?id=91567";
       sha256 = "0a44rjiqzn6v3sywm17d1741sygbvlfnbqadq7qbdj3amny014m1";
     })
diff --git a/pkgs/desktops/kde-5/applications-15.12/kcalc.nix b/pkgs/desktops/kde-5/applications-15.12/kcalc.nix
index a1f0316825da..e4c8e9d69253 100644
--- a/pkgs/desktops/kde-5/applications-15.12/kcalc.nix
+++ b/pkgs/desktops/kde-5/applications-15.12/kcalc.nix
@@ -1,14 +1,14 @@
 { kdeApp
 , lib
+, makeQtWrapper
 , extra-cmake-modules
+, gmp
 , kdoctools
-, makeQtWrapper
 , kconfig
 , kconfigwidgets
 , kguiaddons
 , kinit
 , knotifications
-
 }:
 
 kdeApp {
@@ -20,6 +20,7 @@ kdeApp {
   ];
 
   buildInputs = [
+    gmp
     kconfig
     kconfigwidgets
     kguiaddons
diff --git a/pkgs/desktops/kde-5/applications-15.12/kde-app.nix b/pkgs/desktops/kde-5/applications-15.12/kde-app.nix
index 242f3d9c793d..2f1fdc1d643c 100644
--- a/pkgs/desktops/kde-5/applications-15.12/kde-app.nix
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-app.nix
@@ -11,6 +11,8 @@ stdenv.mkDerivation (args // {
   name = "${name}-${version}";
   inherit src;
 
+  outputs = args.outputs or [ "dev" "out" ];
+
   cmakeFlags =
     (args.cmakeFlags or [])
     ++ [ "-DBUILD_TESTING=OFF" ]
diff --git a/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix b/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix
index 4b612ee3e3c2..e83794c60d81 100644
--- a/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix
@@ -6,6 +6,8 @@ kdeApp (args // {
   sname = "kde-l10n-${name}";
   name = "kde-l10n-${name}-qt4";
 
+  outputs = [ "out" ];
+
   nativeBuildInputs =
     [ automoc4 cmake gettext perl ]
     ++ (args.nativeBuildInputs or []);
@@ -17,4 +19,9 @@ kdeApp (args // {
     sed -e 's/add_subdirectory(5)//' -i CMakeLists.txt
     ${args.preConfigure or ""}
   '';
+
+  preFixup = ''
+    propagatedBuildInputs=
+    propagatedNativeBuildInputs=
+  '';
 })
diff --git a/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix b/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix
index 522fc542aeb2..772ebe37e44f 100644
--- a/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix
@@ -6,6 +6,8 @@ kdeApp (args // {
   sname = "kde-l10n-${name}";
   name = "kde-l10n-${name}-qt5";
 
+  outputs = [ "out" ];
+
   nativeBuildInputs =
     [ cmake extra-cmake-modules gettext kdoctools ]
     ++ (args.nativeBuildInputs or []);
@@ -14,4 +16,9 @@ kdeApp (args // {
     sed -e 's/add_subdirectory(4)//' -i CMakeLists.txt
     ${args.preConfigure or ""}
   '';
+
+  preFixup = ''
+    propagatedBuildInputs=
+    propagatedNativeBuildInputs=
+  '';
 })
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix b/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix
index a30b19774f2a..389362deecc6 100644
--- a/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix
@@ -2,16 +2,18 @@
 , docbook_xml_dtd_42, docbook_xsl, flex, giflib, ilmbase
 , libdbusmenu_qt, libjpeg, libxml2, libxslt, perl, phonon, pkgconfig
 , polkit_qt4, qca2, qt4, shared_desktop_ontologies, shared_mime_info
-, soprano, strigi, udev, xz
+, soprano, strigi, udev, xz, pcre
 , lib
 }:
 
 kdeApp {
   name = "kdelibs";
 
+  outputs = [ "out" ];
+
   buildInputs = [
     attica attr avahi giflib libdbusmenu_qt libjpeg libxml2
-    polkit_qt4 qca2 shared_desktop_ontologies udev xz
+    polkit_qt4 qca2 shared_desktop_ontologies udev xz pcre
   ];
   propagatedBuildInputs = [ qt4 soprano phonon strigi ];
   nativeBuildInputs = [
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix b/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix
index 879262c56a41..44cc99daf261 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix
@@ -6,5 +6,5 @@
 kdeFramework {
   name = "breeze-icons";
   nativeBuildInputs = [ extra-cmake-modules ];
-  propagatedUserEnvPkgs = [ qtsvg ];
+  buildInputs = [ qtsvg ];
 }
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/default.nix
index cd314e27cacb..2c15f31a9c9e 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/default.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/default.nix
@@ -29,6 +29,8 @@ let
         name = "${name}-${version}";
         inherit src;
 
+        outputs = args.outputs or [ "dev" "out" ];
+
         cmakeFlags =
           (args.cmakeFlags or [])
           ++ [ "-DBUILD_TESTING=OFF" ]
@@ -64,14 +66,14 @@ let
     kdbusaddons = callPackage ./kdbusaddons.nix {};
     kdeclarative = callPackage ./kdeclarative.nix {};
     kded = callPackage ./kded.nix {};
-    kdelibs4support = callPackage ./kdelibs4support.nix {};
+    kdelibs4support = callPackage ./kdelibs4support {};
     kdesignerplugin = callPackage ./kdesignerplugin.nix {};
     kdewebkit = callPackage ./kdewebkit.nix {};
     kdesu = callPackage ./kdesu.nix {};
     kdnssd = callPackage ./kdnssd.nix {};
     kdoctools = callPackage ./kdoctools {};
     kemoticons = callPackage ./kemoticons.nix {};
-    kfilemetadata = callPackage ./kfilemetadata.nix {};
+    kfilemetadata = callPackage ./kfilemetadata {};
     kglobalaccel = callPackage ./kglobalaccel.nix {};
     kguiaddons = callPackage ./kguiaddons.nix {};
     khtml = callPackage ./khtml.nix {};
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/0001-extra-cmake-modules-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/0001-extra-cmake-modules-paths.patch
deleted file mode 100644
index 9717716faf5b..000000000000
--- a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/0001-extra-cmake-modules-paths.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 3cc148e878b69fc3e0228f3e3bf1bbe689dad87c Mon Sep 17 00:00:00 2001
-From: Thomas Tuegel <ttuegel@gmail.com>
-Date: Fri, 20 Feb 2015 23:17:39 -0600
-Subject: [PATCH] extra-cmake-modules paths
-
----
- kde-modules/KDEInstallDirs.cmake | 37 ++++---------------------------------
- 1 file changed, 4 insertions(+), 33 deletions(-)
-
-diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake
-index b7cd34d..2f868ac 100644
---- a/kde-modules/KDEInstallDirs.cmake
-+++ b/kde-modules/KDEInstallDirs.cmake
-@@ -193,37 +193,8 @@
- # (To distribute this file outside of extra-cmake-modules, substitute the full
- #  License text for the above reference.)
- 
--# Figure out what the default install directory for libraries should be.
--# This is based on the logic in GNUInstallDirs, but simplified (the
--# GNUInstallDirs code deals with re-configuring, but that is dealt with
--# by the _define_* macros in this module).
-+# The default library directory on NixOS is *always* /lib.
- set(_LIBDIR_DEFAULT "lib")
--# Override this default 'lib' with 'lib64' iff:
--#  - we are on a Linux, kFreeBSD or Hurd system but NOT cross-compiling
--#  - we are NOT on debian
--#  - we are on a 64 bits system
--# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
--# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
--# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
--# See http://wiki.debian.org/Multiarch
--if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
--   AND NOT CMAKE_CROSSCOMPILING)
--  if (EXISTS "/etc/debian_version") # is this a debian system ?
--    if(CMAKE_LIBRARY_ARCHITECTURE)
--      set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
--    endif()
--  else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
--    if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
--      message(AUTHOR_WARNING
--        "Unable to determine default LIB_INSTALL_LIBDIR directory because no target architecture is known. "
--        "Please enable at least one language before including KDEInstallDirs.")
--    else()
--      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
--        set(_LIBDIR_DEFAULT "lib64")
--      endif()
--    endif()
--  endif()
--endif()
- 
- set(_gnu_install_dirs_vars
-     BINDIR
-@@ -445,15 +416,15 @@ if(KDE_INSTALL_USE_QT_SYS_PATHS)
-         "QtQuick2 imports"
-         QML_INSTALL_DIR)
- else()
--    _define_relative(QTPLUGINDIR LIBDIR "plugins"
-+    _define_relative(QTPLUGINDIR LIBDIR "qt5/plugins"
-         "Qt plugins"
-         QT_PLUGIN_INSTALL_DIR)
- 
--    _define_relative(QTQUICKIMPORTSDIR QTPLUGINDIR "imports"
-+    _define_relative(QTQUICKIMPORTSDIR QTPLUGINDIR "qt5/imports"
-         "QtQuick1 imports"
-         IMPORTS_INSTALL_DIR)
- 
--    _define_relative(QMLDIR LIBDIR "qml"
-+    _define_relative(QMLDIR LIBDIR "qt5/qml"
-         "QtQuick2 imports"
-         QML_INSTALL_DIR)
- endif()
--- 
-2.3.0
-
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix
index 4e1b1aff3bd1..1c2ea70442d3 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix
@@ -1,9 +1,11 @@
-{ kdeFramework, lib, stdenv, cmake, pkgconfig, qttools }:
+{ kdeFramework, lib, copyPathsToStore, cmake, pkgconfig, qttools }:
 
 kdeFramework {
   name = "extra-cmake-modules";
-  patches = [ ./0001-extra-cmake-modules-paths.patch ];
 
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  outputs = [ "out" ];  # this package has no runtime components
   setupHook = ./setup-hook.sh;
 
   # It is OK to propagate these inputs as long as
@@ -11,8 +13,8 @@ kdeFramework {
   # of some other derivation.
   propagatedNativeBuildInputs = [ cmake pkgconfig qttools ];
 
-  meta = {
-    license = stdenv.lib.licenses.bsd2;
-    maintainers = [ lib.maintainers.ttuegel ];
+  meta = with lib; {
+    license = licenses.bsd2;
+    maintainers = [ maintainers.ttuegel ];
   };
 }
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch
new file mode 100644
index 000000000000..a74340a6dc96
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch
@@ -0,0 +1,37 @@
+Index: extra-cmake-modules-5.18.0/kde-modules/KDEInstallDirs.cmake
+===================================================================
+--- extra-cmake-modules-5.18.0.orig/kde-modules/KDEInstallDirs.cmake
++++ extra-cmake-modules-5.18.0/kde-modules/KDEInstallDirs.cmake
+@@ -200,32 +200,6 @@
+ # GNUInstallDirs code deals with re-configuring, but that is dealt with
+ # by the _define_* macros in this module).
+ set(_LIBDIR_DEFAULT "lib")
+-# Override this default 'lib' with 'lib64' iff:
+-#  - we are on a Linux, kFreeBSD or Hurd system but NOT cross-compiling
+-#  - we are NOT on debian
+-#  - we are on a 64 bits system
+-# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+-# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+-# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+-# See http://wiki.debian.org/Multiarch
+-if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
+-   AND NOT CMAKE_CROSSCOMPILING)
+-  if (EXISTS "/etc/debian_version") # is this a debian system ?
+-    if(CMAKE_LIBRARY_ARCHITECTURE)
+-      set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+-    endif()
+-  else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
+-    if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+-      message(AUTHOR_WARNING
+-        "Unable to determine default LIB_INSTALL_LIBDIR directory because no target architecture is known. "
+-        "Please enable at least one language before including KDEInstallDirs.")
+-    else()
+-      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+-        set(_LIBDIR_DEFAULT "lib64")
+-      endif()
+-    endif()
+-  endif()
+-endif()
+ 
+ set(_gnu_install_dirs_vars
+     BINDIR
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series
new file mode 100644
index 000000000000..b4569e50a5f7
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series
@@ -0,0 +1 @@
+nix-lib-path.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh
index a6fa6189240b..56ed09f4ea59 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh
@@ -1,27 +1,81 @@
-addMimePkg() {
-    local propagated
+_ecmSetXdgDirs() {
+    addToSearchPathOnce XDG_DATA_DIRS "$1/share"
+    addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg"
+    addToSearchPathOnce NIX_WRAP_XDG_CONFIG_DIRS "$1/etc/xdg"
+}
 
-    if [[ -d "$1/share/mime" ]]; then
-        propagated=
-        for pkg in $propagatedBuildInputs; do
-            if [[ "z$pkg" == "z$1" ]]; then
-                propagated=1
-            fi
-        done
-        if [[ -z $propagated ]]; then
-            propagatedBuildInputs="$propagatedBuildInputs $1"
+_ecmPropagateSharedData() {
+    local sharedPaths=( \
+        "config.cfg" \
+        "doc" \
+        "kconf_update" \
+        "kservices5" \
+        "kservicetypes5" \
+        "kxmlgui5" \
+        "knotifications5" \
+        "icons" \
+        "sounds" \
+        "templates" \
+        "wallpapers" \
+        "applications" \
+        "desktop-directories" \
+        "mime" \
+        "info" \
+        "dbus-1" \
+        "interfaces" \
+        "services" \
+        "system-services" )
+    for dir in ${sharedPaths[@]}; do
+        if [ -d "$1/share/$dir" ]; then
+            addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share"
+            propagateOnce propagatedUserEnvPkgs "$1"
+            break
         fi
+    done
+}
 
-        propagated=
-        for pkg in $propagatedUserEnvPkgs; do
-            if [[ "z$pkg" == "z$1" ]]; then
-                propagated=1
-            fi
-        done
-        if [[ -z $propagated ]]; then
-            propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1"
-        fi
-    fi
+_ecmConfig() {
+    # Because we need to use absolute paths here, we must set *all* the paths.
+    cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}"
+    cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
+    cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
+    cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib"
+    cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/lib/libexec"
+    cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
+    cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputLib}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputLib}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputLib}/lib/qt5/imports"
+    cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputLib}/lib/qt5/qml"
+    cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
+    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputLib}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputLib}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputLib}/share/doc/HTML"
+    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputLib}/share/config.kcfg"
+    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputLib}/share/kconf_update"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputLib}/share/kservices5"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputLib}/share/kservicetypes5"
+    cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputLib}/share/kxmlgui5"
+    cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputLib}/share/knotifications5"
+    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputLib}/share/icons"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
+    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputLib}/share/sounds"
+    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputLib}/share/templates"
+    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputLib}/share/wallpapers"
+    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputLib}/share/applications"
+    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputLib}/share/desktop-directories"
+    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputLib}/share/mime/packages"
+    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputLib}/share/appdata"
+    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputLib}/share/man"
+    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputLib}/share/info"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputLib}/share/dbus-1"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputLib}/share/dbus-1/interfaces"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputLib}/share/dbus-1/services"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputLib}/share/dbus-1/system-services"
+    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputLib}/etc"
+    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputLib}/etc/xdg"
+    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputLib}/etc/xdg/autostart"
 }
 
-envHooks+=(addMimePkg)
+envHooks+=(_ecmSetXdgDirs _ecmPropagateSharedData)
+preConfigureHooks+=(_ecmConfig)
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch
new file mode 100644
index 000000000000..c66f5ecd008f
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch
@@ -0,0 +1,17 @@
+Index: kauth-5.18.0/KF5AuthConfig.cmake.in
+===================================================================
+--- kauth-5.18.0.orig/KF5AuthConfig.cmake.in
++++ kauth-5.18.0/KF5AuthConfig.cmake.in
+@@ -4,9 +4,9 @@ set(KAUTH_STUB_FILES_DIR "@PACKAGE_KDE_I
+ 
+ set(KAUTH_BACKEND_NAME "@KAUTH_BACKEND_NAME@")
+ set(KAUTH_HELPER_BACKEND_NAME "@KAUTH_HELPER_BACKEND_NAME@")
+-set(KAUTH_POLICY_FILES_INSTALL_DIR "@KAUTH_POLICY_FILES_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
++set(KAUTH_POLICY_FILES_INSTALL_DIR "${KDE_INSTALL_DATADIR}/polkit-1/actions")
++set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}")
++set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${KDE_INSTALL_LIBEXECDIR}")
+ 
+ find_dependency(KF5CoreAddons "@KF5_DEP_VERSION@")
+ 
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix
index 2b000ff3c041..1352d8c5821f 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix
@@ -1,4 +1,4 @@
-{ kdeFramework, lib
+{ kdeFramework, lib, copyPathsToStore
 , extra-cmake-modules
 , kcoreaddons
 , polkit-qt
@@ -9,7 +9,7 @@ kdeFramework {
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ polkit-qt ];
   propagatedBuildInputs = [ kcoreaddons ];
-  patches = [ ./kauth-policy-install.patch ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   meta = {
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kauth/series b/pkgs/desktops/kde-5/frameworks-5.19/kauth/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix
new file mode 100644
index 000000000000..843db83a99b2
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix
@@ -0,0 +1,36 @@
+{ kdeFramework, lib, copyPathsToStore
+, extra-cmake-modules, docbook_xml_dtd_45, kauth
+, karchive, kcompletion, kconfig, kconfigwidgets, kcoreaddons
+, kcrash, kdbusaddons, kded, kdesignerplugin, kdoctools, kemoticons
+, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kitemmodels
+, kinit, knotifications, kparts, kservice, ktextwidgets
+, kunitconversion, kwidgetsaddons, kwindowsystem, kxmlgui
+, networkmanager, qtsvg, qtx11extras, xlibs
+}:
+
+# TODO: debug docbook detection
+
+kdeFramework {
+  name = "kdelibs4support";
+  outputs = [ "dev" "out" ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kded kservice kwidgetsaddons
+    kxmlgui networkmanager qtsvg qtx11extras xlibs.libSM
+  ];
+  propagatedBuildInputs = [
+    kauth karchive kconfigwidgets kcoreaddons kcrash kdbusaddons
+    kdesignerplugin kemoticons kglobalaccel kguiaddons ki18n kio
+    kiconthemes kitemmodels kinit knotifications kparts ktextwidgets
+    kunitconversion kwindowsystem
+  ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXML4_DTD_VERSION=4.5"
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch
new file mode 100644
index 000000000000..eabb70254483
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch
@@ -0,0 +1,13 @@
+Index: kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+===================================================================
+--- kdelibs4support-5.18.0.orig/src/kdecore/kstandarddirs.cpp
++++ kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+@@ -292,7 +292,7 @@ static QString relativeInstallPath(const
+             return QFile::decodeName(ICON_INSTALL_DIR "/");
+         }
+         if (strcmp("include", type) == 0) {
+-            return QFile::decodeName(INCLUDE_INSTALL_DIR "/");
++            return QFile::decodeName(qgetenv("NIX_KDE_INCLUDE_DIR"));
+         }
+         break;
+     case 'l':
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series
new file mode 100644
index 000000000000..9b08ab208774
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series
@@ -0,0 +1 @@
+nix-kde-include-dir.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh
new file mode 100644
index 000000000000..21ac2e83b5da
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh
@@ -0,0 +1 @@
+export NIX_KDE_INCLUDE_DIR="@dev@/include/"  # trailing slash is required!
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix
index 138c3fc33b94..f67c19f42395 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix
@@ -4,7 +4,6 @@
 
 kdeFramework {
   name = "kdoctools";
-  setupHook = ./setup-hook.sh;
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ karchive ];
   propagatedBuildInputs = [ ki18n ];
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch
new file mode 100644
index 000000000000..732f7b69c828
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch
@@ -0,0 +1,13 @@
+Index: kfilemetadata-5.18.0/src/CMakeLists.txt
+===================================================================
+--- kfilemetadata-5.18.0.orig/src/CMakeLists.txt
++++ kfilemetadata-5.18.0/src/CMakeLists.txt
+@@ -49,7 +49,7 @@ install(TARGETS KF5FileMetaData EXPORT K
+ 
+ install(EXPORT KF5FileMetaDataTargets
+         NAMESPACE KF5::
+-        DESTINATION ${LIB_INSTALL_DIR}/cmake/KF5FileMetaData
++        DESTINATION ${KDE_INSTALL_FULL_CMAKEPACKAGEDIR}/KF5FileMetaData
+         FILE KF5FileMetaDataTargets.cmake)
+ 
+ install(FILES
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix
new file mode 100644
index 000000000000..9bb4831cf8da
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, copyPathsToStore, extra-cmake-modules
+, attr, ebook_tools, exiv2, ffmpeg, karchive, ki18n, poppler, qtbase, taglib
+}:
+
+kdeFramework {
+  name = "kfilemetadata";
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ attr ebook_tools exiv2 ffmpeg karchive poppler taglib ];
+  propagatedBuildInputs = [ qtbase ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix
index 03b7c7c2f51d..3a27d85b9166 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix
@@ -4,11 +4,10 @@
 
 kdeFramework {
   name = "kservice";
-  setupHook = ./setup-hook.sh;
-  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedNativeBuildInputs = [ extra-cmake-modules ];
+  nativeBuildInputs = [ kdoctools ];
   buildInputs = [ kcrash kdbusaddons ];
   propagatedBuildInputs = [ kconfig kcoreaddons ki18n kwindowsystem ];
-  propagatedUserEnvPkgs = [ kcoreaddons ];
   patches = [
     ./0001-qdiriterator-follow-symlinks.patch
     ./0002-no-canonicalize-path.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix b/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix
index 46e3cb37d112..5ade5f63a8d0 100644
--- a/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix
@@ -1,7 +1,7 @@
 { kdeFramework, lib, extra-cmake-modules, kconfig, kconfigwidgets
-, kcoreaddons, kdbusaddons, kdoctools, ki18n, kiconthemes, knotifications
-, kservice, kwidgetsaddons, kwindowsystem, libgcrypt, makeQtWrapper
-}:
+, kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes
+, knotifications , kservice, kwidgetsaddons, kwindowsystem, libgcrypt
+, makeQtWrapper }:
 
 kdeFramework {
   name = "kwallet";
diff --git a/pkgs/desktops/kde-5/plasma-5.5/default.nix b/pkgs/desktops/kde-5/plasma-5.5/default.nix
index c9fcbdd8e6a0..384fa6f6d272 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/default.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/default.nix
@@ -26,7 +26,7 @@ let
         name = "${name}-${version}";
         inherit src;
 
-        setupHook = args.setupHook or ./setup-hook.sh;
+        outputs = args.outputs or [ "dev" "out" ];
 
         cmakeFlags =
           (args.cmakeFlags or [])
@@ -48,8 +48,11 @@ let
     breeze-qt4 = callPackage ./breeze-qt4.nix {};
     breeze-qt5 = callPackage ./breeze-qt5.nix {};
     breeze =
-      let version = (builtins.parseDrvName breeze-qt5.name).version;
-      in symlinkJoin "breeze-${version}" [ breeze-gtk breeze-qt4 breeze-qt5 ];
+      let
+        version = (builtins.parseDrvName breeze-qt5.name).version;
+      in
+        symlinkJoin "breeze-${version}"
+        (map (pkg: pkg.out or pkg) [ breeze-gtk breeze-qt4 breeze-qt5 ]);
     kde-cli-tools = callPackage ./kde-cli-tools.nix {};
     kde-gtk-config = callPackage ./kde-gtk-config {};
     kdecoration = callPackage ./kdecoration.nix {};
diff --git a/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix b/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix
index 6b41599994d5..ab8867520b38 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix
@@ -22,7 +22,7 @@ plasmaPackage {
   ];
   propagatedBuildInputs = [ ki18n kio ];
   cmakeFlags = [
-    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib}/lib/glib-2.0/include"
-    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2}/lib/gtk-2.0/include"
+    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
   ];
 }
diff --git a/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix b/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix
index 2cfd0df2e1d3..a521a7993628 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix
@@ -23,11 +23,6 @@ plasmaPackage {
     qtdeclarative
     qtgraphicaleffects
   ];
-  propagatedUserEnvPkgs = [
-    libkscreen  # D-Bus service
-    qtdeclarative  # QML import
-    qtgraphicaleffects  # QML import
-  ];
   postInstall = ''
     wrapQtProgram "$out/bin/kscreen-console"
   '';
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix
index a73060ad1af1..5f27efc7f24c 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix
@@ -60,9 +60,6 @@ plasmaPackage rec {
     qtquickcontrols
     qtx11extras
   ];
-  # All propagatedBuildInputs should be present in the profile because
-  # wrappers cannot be used here.
-  propagatedUserEnvPkgs = propagatedBuildInputs;
   patches = [
     ./0001-qt-5.5-QML-import-paths.patch
     (substituteAll {
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix
index afd8a18bbbd6..7088f45d64e2 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix
@@ -17,7 +17,4 @@ plasmaPackage rec {
     baloo kactivities kdeclarative kfilemetadata ki18n kio
     plasma-framework
   ];
-  # All propagatedBuildInputs should be present in the profile because
-  # wrappers cannot be used here.
-  propagatedUserEnvPkgs = propagatedBuildInputs;
 }
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix
index 2d9364d446eb..01c5c63ce0aa 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix
@@ -11,7 +11,7 @@
 , xprop, xrdb, xset, xsetroot, solid, qtquickcontrols
 }:
 
-plasmaPackage rec {
+plasmaPackage {
   name = "plasma-workspace";
 
   nativeBuildInputs = [
@@ -20,10 +20,11 @@ plasmaPackage rec {
     makeQtWrapper
   ];
   buildInputs = [
-    kcmutils kcrash kdbusaddons kdesu kdewebkit kjsembed knewstuff
-    knotifyconfig kpackage ktextwidgets kwallet kwayland kxmlrpcclient
-    libdbusmenu libSM libXcursor networkmanager-qt pam phonon
-    qtscript wayland
+    dbus_tools kcmutils kconfig kcrash kdbusaddons kdesu kdewebkit
+    kinit kjsembed knewstuff knotifyconfig kpackage kservice
+    ktextwidgets kwallet kwayland kxmlrpcclient libdbusmenu libSM
+    libXcursor mkfontdir networkmanager-qt pam phonon qtscript qttools
+    socat wayland xmessage xprop xset xsetroot
   ];
   propagatedBuildInputs = [
     baloo kactivities kdeclarative kdelibs4support kglobalaccel
@@ -32,13 +33,31 @@ plasmaPackage rec {
   ];
 
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-  inherit bash coreutils gnused gnugrep socat;
-  inherit kconfig kinit kservice qttools;
-  inherit dbus_tools mkfontdir xmessage xprop xrdb xset xsetroot;
+
   postPatch = ''
-    substituteAllInPlace startkde/startkde.cmake
+    substituteInPlace startkde/startkde.cmake \
+        --subst-var-by bash $(type -P bash) \
+        --subst-var-by sed $(type -P sed) \
+        --subst-var-by grep $(type -P grep) \
+        --subst-var-by socat $(type -P socat) \
+        --subst-var-by kcheckrunning $(type -P kcheckrunning) \
+        --subst-var-by xmessage $(type -P xmessage) \
+        --subst-var-by tr $(type -P tr) \
+        --subst-var-by qtpaths $(type -P qtpaths) \
+        --subst-var-by qdbus $(type -P qdbus) \
+        --subst-var-by dbus-launch $(type -P dbus-launch) \
+        --subst-var-by mkfontdir $(type -P mkfontdir) \
+        --subst-var-by xset $(type -P xset) \
+        --subst-var-by xsetroot $(type -P xsetroot) \
+        --subst-var-by xprop $(type -P xprop) \
+        --subst-var-by start_kdeinit_wrapper "${kinit.out}/lib/libexec/kf5/start_kdeinit_wrapper" \
+        --subst-var-by kwrapper5 $(type -P kwrapper5) \
+        --subst-var-by kdeinit5_shutdown $(type -P kdeinit5_shutdown) \
+        --subst-var-by kbuildsycoca5 $(type -P kbuildsycoca5) \
+        --subst-var-by kreadconfig5 $(type -P kreadconfig5) \
+        --subst-var out
     substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \
-      --replace kdostartupconfig5 $out/bin/kdostartupconfig5
+        --replace kdostartupconfig5 $out/bin/kdostartupconfig5
   '';
 
   postInstall = ''
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch
index 802c92da64d0..eea0ae4c199d 100644
--- a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch
@@ -1,10 +1,10 @@
-Index: plasma-workspace-5.5.1/startkde/startkde.cmake
+Index: plasma-workspace-5.5.5/startkde/startkde.cmake
 ===================================================================
---- plasma-workspace-5.5.1.orig/startkde/startkde.cmake
-+++ plasma-workspace-5.5.1/startkde/startkde.cmake
-@@ -1,8 +1,31 @@
+--- plasma-workspace-5.5.5.orig/startkde/startkde.cmake
++++ plasma-workspace-5.5.5/startkde/startkde.cmake
+@@ -1,8 +1,36 @@
 -#!/bin/sh
-+#!@bash@/bin/bash
++#!@bash@
  #
  #  DEFAULT KDE STARTUP SCRIPT ( @PROJECT_VERSION@ )
  #
@@ -29,13 +29,18 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 +# in Trolltech.conf.  A better solution would be to stop
 +# Qt from doing this wackiness in the first place.
 +if [ -e $HOME/.config/Trolltech.conf ]; then
-+    @gnused@/bin/sed -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf
++    @sed@ -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf
 +fi
 +
++# (NixOS) We run kbuildsycoca5 before starting the user session because things
++# may be missing or moved if they have run nixos-rebuild and it may not be
++# possible for them to start Konsole to run it manually!
++@kbuildsycoca5@
++
  if test "x$1" = x--failsafe; then
      KDE_FAILSAFE=1 # General failsafe flag
      KWIN_COMPOSE=N # Disable KWin's compositing
-@@ -17,29 +40,16 @@ trap 'echo GOT SIGHUP' HUP
+@@ -17,29 +45,16 @@ trap 'echo GOT SIGHUP' HUP
  # we have to unset this for Darwin since it will screw up KDE's dynamic-loading
  unset DYLD_FORCE_FLAT_NAMESPACE
  
@@ -54,13 +59,13 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 -
  # Check if a KDE session already is running and whether it's possible to connect to X
 -kcheckrunning
-+@out@/bin/kcheckrunning
++@kcheckrunning@
  kcheckrunning_result=$?
  if test $kcheckrunning_result -eq 0 ; then
 -	echo "KDE seems to be already running on this display."
 -	xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null
 +  echo "KDE seems to be already running on this display."
-+  @xmessage@/bin/xmessage -geometry 500x100 "KDE seems to be already running on this display."
++  @xmessage@ -geometry 500x100 "KDE seems to be already running on this display."
  	exit 1
  elif test $kcheckrunning_result -eq 2 ; then
  	echo "\$DISPLAY is not set or cannot connect to the X server."
@@ -69,7 +74,7 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
  fi
  
  # Boot sequence:
-@@ -57,13 +67,8 @@ fi
+@@ -57,13 +72,8 @@ fi
  # * Then ksmserver is started which takes control of the rest of the startup sequence
  
  # We need to create config folder so we can write startupconfigkeys
@@ -80,12 +85,12 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 -fi
 -
 -mkdir -p $configDir
-+configDir=$(@qttools@/bin/qtpaths --writable-path GenericConfigLocation)
++configDir=$(@qtpaths@ --writable-path GenericConfigLocation)
 +mkdir -p "$configDir"
  
  #This is basically setting defaults so we can use them with kstartupconfig5
  cat >$configDir/startupconfigkeys <<EOF
-@@ -102,42 +107,10 @@ XftSubPixel=none
+@@ -102,42 +112,10 @@ XftSubPixel=none
  EOF
  }
  
@@ -126,15 +131,15 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
  returncode=$?
  if test $returncode -ne 0; then
 -    xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
-+    @xmessage@/bin/xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
++    @xmessage@ -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
      exit 1
  fi
  [ -r $configDir/startupconfig ] && . $configDir/startupconfig
-@@ -146,9 +119,11 @@ if test "$kdeglobals_kscreen_scalefactor
+@@ -146,9 +124,11 @@ if test "$kdeglobals_kscreen_scalefactor
      export QT_DEVICE_PIXEL_RATIO=$kdeglobals_kscreen_scalefactor
  fi
  
-+XCURSOR_PATH=~/.icons:$(echo "$XDG_DATA_DIRS" | @coreutils@/bin/tr ":" "\n" | @gnused@/bin/sed 's,$,/icons,g' | @coreutils@/bin/tr "\n" ":")
++XCURSOR_PATH=~/.icons:$(echo "$XDG_DATA_DIRS" | @tr@ ":" "\n" | @sed@ 's,$,/icons,g' | @tr@ "\n" ":")
 +export XCURSOR_PATH
 +
  # XCursor mouse theme needs to be applied here to work even for kded or ksmserver
@@ -143,7 +148,7 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
  
      kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"
      if test $? -eq 10; then
-@@ -164,21 +139,39 @@ if test -n "$kcminputrc_mouse_cursorthem
+@@ -164,21 +144,39 @@ if test -n "$kcminputrc_mouse_cursorthem
      fi
  fi
  
@@ -160,7 +165,7 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 +# If the user has overwritten fonts, the cursor font may be different now
 +# so don't move this up.
 +#
-+@xsetroot@/bin/xsetroot -cursor_name left_ptr
++@xsetroot@ -cursor_name left_ptr
  
  dl=$DESKTOP_LOCKED
  unset DESKTOP_LOCKED # Don't want it in the environment
@@ -168,14 +173,14 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 +# Make sure that D-Bus is running
 +# D-Bus autolaunch is broken
 +if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
-+    eval `@dbus_tools@/bin/dbus-launch --sh-syntax --exit-with-session`
++    eval `@dbus-launch@ --sh-syntax --exit-with-session`
 +fi
-+if @qttools@/bin/qdbus >/dev/null 2>/dev/null; then
++if @qdbus@ >/dev/null 2>/dev/null; then
 +    : # ok
 +else
 +    echo 'startkde: Could not start D-Bus. Can you call qdbus?'  1>&2
 +    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
-+    @xmessage@/bin/xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
++    @xmessage@ -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
 +    exit 1
 +fi
 +
@@ -189,26 +194,26 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
        ;;
      None)
        ;;
-@@ -201,8 +194,7 @@ fi
+@@ -201,8 +199,7 @@ fi
  # For anything else (that doesn't set env vars, or that needs a window manager),
  # better use the Autostart folder.
  
 -# TODO: Use GenericConfigLocation once we depend on Qt 5.4
 -scriptpath=`qtpaths --paths ConfigLocation | tr ':' '\n' | sed 's,$,/plasma-workspace,g'`
-+scriptpath=$(@qttools@/bin/qtpaths --paths GenericConfigLocation | tr ':' '\n' | @gnused@/bin/sed 's,$,/plasma-workspace,g')
++scriptpath=$(@qtpaths@ --paths GenericConfigLocation | tr ':' '\n' | @sed@ 's,$,/plasma-workspace,g')
  
  # Add /env/ to the directory to locate the scripts to be sourced
  for prefix in `echo $scriptpath`; do
-@@ -232,7 +224,7 @@ usr_odir=$HOME/.fonts/kde-override
+@@ -232,7 +229,7 @@ usr_odir=$HOME/.fonts/kde-override
  usr_fdir=$HOME/.fonts
  
  if test -n "$KDEDIRS"; then
 -  kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'`
-+  kdedirs_first=`echo "$KDEDIRS" | @gnused@/bin/sed -e 's/:.*//'`
++  kdedirs_first=`echo "$KDEDIRS" | @sed@ -e 's/:.*//'`
    sys_odir=$kdedirs_first/share/fonts/override
    sys_fdir=$kdedirs_first/share/fonts
  else
-@@ -245,23 +237,13 @@ fi
+@@ -245,23 +242,13 @@ fi
  # add the user's dirs to the font path, as they might simply have been made
  # read-only by the administrator, for whatever reason.
  
@@ -216,10 +221,10 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 -test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir")
 -test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir")
 -test -d "$sys_fdir" && xset fp+ "$sys_fdir"
-+test -d "$sys_odir" && @xset@/bin/xset +fp "$sys_odir"
-+test -d "$usr_odir" && ( @mkfontdir@/bin/mkfontdir "$usr_odir" ; @xset@/bin/xset +fp "$usr_odir" )
-+test -d "$usr_fdir" && ( @mkfontdir@/bin/mkfontdir "$usr_fdir" ; @xset@/bin/xset fp+ "$usr_fdir" )
-+test -d "$sys_fdir" && @xset@/bin/xset fp+ "$sys_fdir"
++test -d "$sys_odir" && @xset@ +fp "$sys_odir"
++test -d "$usr_odir" && ( @mkfontdir@ "$usr_odir" ; @xset@ +fp "$usr_odir" )
++test -d "$usr_fdir" && ( @mkfontdir@ "$usr_fdir" ; @xset@ fp+ "$usr_fdir" )
++test -d "$sys_fdir" && @xset@ fp+ "$sys_fdir"
  
  # Ask X11 to rebuild its font list.
 -xset fp rehash
@@ -233,11 +238,11 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
 -# so don't move this up.
 -#
 -xsetroot -cursor_name left_ptr
-+@xset@/bin/xset fp rehash
++@xset@ fp rehash
  
  # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
  if test -n "$GS_LIB" ; then
-@@ -274,26 +256,6 @@ fi
+@@ -274,26 +261,6 @@ fi
  
  echo 'startkde: Starting up...'  1>&2
  
@@ -264,96 +269,88 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
  # Mark that full KDE session is running (e.g. Konqueror preloading works only
  # with full KDE running). The KDE_FULL_SESSION property can be detected by
  # any X client connected to the same X session, even if not launched
-@@ -318,11 +280,11 @@ fi
+@@ -318,11 +285,11 @@ fi
  #
  KDE_FULL_SESSION=true
  export KDE_FULL_SESSION
 -xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
-+@xprop@/bin/xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
++@xprop@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
  
  KDE_SESSION_VERSION=5
  export KDE_SESSION_VERSION
 -xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
-+@xprop@/bin/xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
++@xprop@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
  
  KDE_SESSION_UID=`id -ru`
  export KDE_SESSION_UID
-@@ -332,11 +294,11 @@ export XDG_CURRENT_DESKTOP
+@@ -332,11 +299,11 @@ export XDG_CURRENT_DESKTOP
  
  # At this point all the environment is ready, let's send it to kwalletd if running
  if test -n "$PAM_KWALLET_LOGIN" ; then
 -    env | socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN
-+    env | @socat@/bin/socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN
++    env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN
  fi
  # ...and also to kwalletd5
  if test -n "$PAM_KWALLET5_LOGIN" ; then
 -    env | socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
-+    env | @socat@/bin/socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
++    env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
  fi
  
  # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
-@@ -349,21 +311,26 @@ if test $? -ne 0; then
+@@ -349,18 +316,18 @@ if test $? -ne 0; then
    # Startup error
    echo 'startkde: Could not sync environment to dbus.'  1>&2
    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
 -  xmessage -geometry 500x100 "Could not sync environment to dbus."
-+  @xmessage@/bin/xmessage -geometry 500x100 "Could not sync environment to dbus."
++  @xmessage@ -geometry 500x100 "Could not sync environment to dbus."
    exit 1
  fi
  
  # We set LD_BIND_NOW to increase the efficiency of kdeinit.
  # kdeinit unsets this variable before loading applications.
 -LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
-+LD_BIND_NOW=true @kinit@/lib/libexec/kf5/start_kdeinit_wrapper --kded +kcminit_startup
++LD_BIND_NOW=true @start_kdeinit_wrapper@ --kded +kcminit_startup
  if test $? -ne 0; then
    # Startup error
    echo 'startkde: Could not start kdeinit5. Check your installation.'  1>&2
    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
 -  xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
-+  @xmessage@/bin/xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
++  @xmessage@ -geometry 500x100 "Could not start kdeinit5. Check your installation."
    exit 1
  fi
  
-+# (NixOS) We run kbuildsycoca5 before starting the user session because things
-+# may be missing or moved if they have run nixos-rebuild and it may not be
-+# possible for them to start Konsole to run it manually!
-+@kservice@/bin/kbuildsycoca5
-+
- # finally, give the session control to the session manager
- # see kdebase/ksmserver for the description of the rest of the startup sequence
- # if the KDEWM environment variable has been set, then it will be used as KDE's
 @@ -379,27 +346,27 @@ test -n "$KDEWM" && KDEWM="--windowmanag
  # lock now and do the rest of the KDE startup underneath the locker.
  KSMSERVEROPTIONS=""
  test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen"
 -kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
-+@kinit@/bin/kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
++@kwrapper5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
  if test $? -eq 255; then
    # Startup error
    echo 'startkde: Could not start ksmserver. Check your installation.'  1>&2
    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
 -  xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
-+  @xmessage@/bin/xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
++  @xmessage@ -geometry 500x100 "Could not start ksmserver. Check your installation."
  fi
  
 -wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
-+wait_drkonqi=`@kconfig@/bin/kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
++wait_drkonqi=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true`
  
  if test x"$wait_drkonqi"x = x"true"x ; then
      # wait for remaining drkonqi instances with timeout (in seconds)
 -    wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
-+    wait_drkonqi_timeout=`@kconfig@/bin/kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
++    wait_drkonqi_timeout=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
      wait_drkonqi_counter=0
 -    while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
-+    while @qttools@/bin/qdbus | @gnugrep@/bin/grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
++    while @qdbus@ | @grep@ "^[^w]*org.kde.drkonqi" > /dev/null ; do
          sleep 5
          wait_drkonqi_counter=$((wait_drkonqi_counter+5))
          if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
              # ask remaining drkonqis to die in a graceful way
 -            $qdbus | grep 'org.kde.drkonqi-' | while read address ; do
 -                $qdbus "$address" "/MainApplication" "quit"
-+            @qttools@/bin/qdbus | @gnugrep@/bin/grep 'org.kde.drkonqi-' | while read address ; do
-+                @qttools@/bin/qdbus "$address" "/MainApplication" "quit"
++            @qdbus@ | @grep@ 'org.kde.drkonqi-' | while read address ; do
++                @qdbus@ "$address" "/MainApplication" "quit"
              done
              break
          fi
@@ -362,14 +359,14 @@ Index: plasma-workspace-5.5.1/startkde/startkde.cmake
  
  # Clean up
 -kdeinit5_shutdown
-+@kinit@/bin/kdeinit5_shutdown
++@kdeinit5_shutdown@
  
  unset KDE_FULL_SESSION
 -xprop -root -remove KDE_FULL_SESSION
-+@xprop@/bin/xprop -root -remove KDE_FULL_SESSION
++@xprop@ -root -remove KDE_FULL_SESSION
  unset KDE_SESSION_VERSION
 -xprop -root -remove KDE_SESSION_VERSION
-+@xprop@/bin/xprop -root -remove KDE_SESSION_VERSION
++@xprop@ -root -remove KDE_SESSION_VERSION
  unset KDE_SESSION_UID
  
  echo 'startkde: Done.'  1>&2
diff --git a/pkgs/desktops/xfce/core/exo.nix b/pkgs/desktops/xfce/core/exo.nix
index 83610a4e4a65..4d3f09105433 100644
--- a/pkgs/desktops/xfce/core/exo.nix
+++ b/pkgs/desktops/xfce/core/exo.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4ui, libxfce4util }:
+{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4ui, libxfce4util
+, hicolor_icon_theme }:
 
 stdenv.mkDerivation rec {
   p_name  = "exo";
@@ -11,9 +12,11 @@ stdenv.mkDerivation rec {
   };
   name = "${p_name}-${ver_maj}.${ver_min}";
 
-  buildInputs = [ pkgconfig intltool URI glib gtk libxfce4ui libxfce4util ];
+  outputs = [ "dev" "out" "docdev" ];
+    # lib/xfce4/exo-1/exo-compose-mail-1 is a perl script :-/
 
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
+  nativeBuildInputs = [ pkgconfig intltool ];
+  buildInputs = [ URI glib gtk libxfce4ui libxfce4util hicolor_icon_theme ];
 
   meta = with stdenv.lib; {
     homepage = "http://www.xfce.org/projects/${p_name}";
diff --git a/pkgs/desktops/xfce/core/garcon.nix b/pkgs/desktops/xfce/core/garcon.nix
index 8f8cfff76cd4..4fffc9e1ec9f 100644
--- a/pkgs/desktops/xfce/core/garcon.nix
+++ b/pkgs/desktops/xfce/core/garcon.nix
@@ -1,22 +1,26 @@
 { stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, libxfce4ui, gtk }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "garcon";
   ver_maj = "0.4";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
+
+  outputs = [ "dev" "out" ];
 
   buildInputs = [ pkgconfig intltool glib libxfce4util gtk libxfce4ui ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/;
     description = "Xfce menu support library";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/libxfce4ui.nix b/pkgs/desktops/xfce/core/libxfce4ui.nix
index 2cb20febcb94..6bdeb50f8399 100644
--- a/pkgs/desktops/xfce/core/libxfce4ui.nix
+++ b/pkgs/desktops/xfce/core/libxfce4ui.nix
@@ -1,40 +1,38 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, xfconf
-, libglade, libstartup_notification
+, libglade, libstartup_notification, hicolor_icon_theme
 , withGtk3 ? false, gtk3
 }:
-
-with { inherit (stdenv.lib) optional; };
-
-stdenv.mkDerivation rec {
+let
   p_name  = "libxfce4ui";
   ver_maj = "4.12";
   ver_min = "1";
+  inherit (stdenv.lib) optional;
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "3d619811bfbe7478bb984c16543d980cadd08586365a7bc25e59e3ca6384ff43";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
-  #TODO: gladeui
-  # Install into our own prefix instead.
-  configureFlags = [
-    "--with-libglade-module-path=$out/lib/libglade/2.0"
-  ] ++ optional withGtk3 "--enable-gtk3";
+  outputs = [ "dev" "out" "docdev" ];
 
   buildInputs =
     [ pkgconfig intltool gtk libxfce4util xfconf libglade
-      libstartup_notification
+      libstartup_notification hicolor_icon_theme
     ] ++ optional withGtk3 gtk3;
 
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
+  #TODO: glade?
+  configureFlags = optional withGtk3 "--enable-gtk3";
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/;
     description = "Basic GUI library for Xfce";
-    license = stdenv.lib.licenses.lgpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/libxfce4util.nix b/pkgs/desktops/xfce/core/libxfce4util.nix
index 6893d7cfb20b..cab904f55107 100644
--- a/pkgs/desktops/xfce/core/libxfce4util.nix
+++ b/pkgs/desktops/xfce/core/libxfce4util.nix
@@ -1,15 +1,18 @@
 { stdenv, fetchurl, pkgconfig, glib, intltool }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "libxfce4util";
   ver_maj = "4.12";
   ver_min = "1";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "07c8r3xwx5is298zk77m3r784gmr5y4mh8bbca5zdjqk5vxdwsw7";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
+
+  outputs = [ "dev" "out" "docdev" ];
 
   buildInputs = [ pkgconfig glib intltool ];
 
@@ -20,3 +23,4 @@ stdenv.mkDerivation rec {
     platforms = stdenv.lib.platforms.linux;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/libxfcegui4.nix b/pkgs/desktops/xfce/core/libxfcegui4.nix
index 32a320c779bf..d9e5cce25e85 100644
--- a/pkgs/desktops/xfce/core/libxfcegui4.nix
+++ b/pkgs/desktops/xfce/core/libxfcegui4.nix
@@ -1,31 +1,32 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk
-, libxfce4util, xfconf, libglade, libstartup_notification }:
-
-stdenv.mkDerivation rec {
+, libxfce4util, xfconf, libglade, libstartup_notification, hicolor_icon_theme }:
+let
   p_name  = "libxfcegui4";
   ver_maj = "4.10";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "0cs5im0ib0cmr1lhr5765yliqjfyxvk4kwy8h1l8bn3mj6bzk0ib";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
+
+  outputs = [ "dev" "out" "docdev" ];
 
   #TODO: gladeui
   # By default, libxfcegui4 tries to install into libglade's prefix.
   # Install into our own prefix instead.
-  preConfigure =
-    ''
-      configureFlags="--with-libglade-module-path=$out/lib/libglade/2.0"
-    '';
+  configureFlags = [
+    "--with-libglade-module-path=$(out)/lib/libglade/2.0"
+  ];
   #NOTE: missing keyboard library support is OK according to the mailing-list
 
   buildInputs =
     [ pkgconfig intltool gtk libxfce4util xfconf libglade
-      libstartup_notification
+      libstartup_notification hicolor_icon_theme
     ];
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
 
   meta = {
     homepage = http://www.xfce.org/;
diff --git a/pkgs/desktops/xfce/core/tumbler.nix b/pkgs/desktops/xfce/core/tumbler.nix
index 1fc895ea412a..132003d3fc92 100644
--- a/pkgs/desktops/xfce/core/tumbler.nix
+++ b/pkgs/desktops/xfce/core/tumbler.nix
@@ -1,19 +1,24 @@
-{ stdenv, fetchurl, pkgconfig, intltool, dbus_glib, gdk_pixbuf, curl, freetype,
-libgsf, poppler, bzip2 }:
-
-stdenv.mkDerivation rec {
+{ stdenv, fetchurl, pkgconfig, intltool, dbus_glib, gdk_pixbuf, curl, freetype
+, libgsf, poppler, bzip2 }:
+let
   p_name  = "tumbler";
   ver_maj = "0.1";
   ver_min = "31";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
-  buildInputs = [ pkgconfig intltool dbus_glib gdk_pixbuf curl freetype
-    poppler libgsf bzip2];
+  outputs = [ "dev" "out" "docdev" ];
+
+  buildInputs = [
+    pkgconfig intltool dbus_glib gdk_pixbuf curl freetype
+    poppler libgsf bzip2
+  ];
 
   configureFlags = [
     # Needs gst-tag
@@ -21,15 +26,16 @@ stdenv.mkDerivation rec {
 
     # Needs libffmpegthumbnailer
     # "--enable-ffmpeg-thumbnailer"
-    
+
     "--enable-odf-thumbnailer"
     "--enable-poppler-thumbnailer"
   ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://git.xfce.org/xfce/tumbler/;
     description = "A D-Bus thumbnailer service";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.gpl2;
+    platforms = platforms.linux;
+    license = licenses.gpl2;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-appfinder.nix b/pkgs/desktops/xfce/core/xfce4-appfinder.nix
index 25bd04f9ec40..d39708dd523f 100644
--- a/pkgs/desktops/xfce/core/xfce4-appfinder.nix
+++ b/pkgs/desktops/xfce/core/xfce4-appfinder.nix
@@ -1,27 +1,29 @@
 { stdenv, fetchurl, pkgconfig, intltool, glib, gtk, libxfce4util
 , libxfce4ui, garcon, xfconf }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "xfce4-appfinder";
   ver_maj = "4.12";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "0ry5hin8xhgnkmm9vs7jq8blk1cnbyr0s18nm1j6nsm7360abm1a";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
     [ pkgconfig intltool glib gtk libxfce4util libxfce4ui garcon xfconf ];
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://docs.xfce.org/xfce/xfce4-appfinder/;
     description = "Xfce application finder, a tool to locate and launch programs on your system";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools.nix b/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
index 5541011a5019..da7369decc46 100644
--- a/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
+++ b/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
@@ -1,15 +1,16 @@
 { stdenv, fetchurl, pkgconfig, glib, autoconf, automake, libtool, intltool }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "xfce4-dev-tools";
   ver_maj = "4.12";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "1jxmyp80pwbfgmqmwpjxs7z5dmm6pyf3qj62z20xy44izraadqz2";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs = [ pkgconfig glib ];
 
@@ -22,3 +23,4 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.gpl2Plus;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-panel.nix b/pkgs/desktops/xfce/core/xfce4-panel.nix
index 0f9066876c66..816bbc05735f 100644
--- a/pkgs/desktops/xfce/core/xfce4-panel.nix
+++ b/pkgs/desktops/xfce/core/xfce4-panel.nix
@@ -1,49 +1,50 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui
 , libxfce4ui_gtk3, libwnck, exo, garcon, xfconf, libstartup_notification
-, makeWrapper, xfce4mixer
+, makeWrapper, xfce4mixer, hicolor_icon_theme
 , withGtk3 ? false, gtk3
 }:
-
-with { inherit (stdenv.lib) optional; };
-
-stdenv.mkDerivation rec {
+let
+  inherit (stdenv.lib) optional;
   p_name  = "xfce4-panel";
   ver_maj = "4.12";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   patches = [ ./xfce4-panel-datadir.patch ];
   patchFlags = "-p1";
 
-  configureFlags = optional withGtk3 "--enable-gtk3";
+  outputs = [ "dev" "out" "docdev" ];
 
   buildInputs =
     [ pkgconfig intltool gtk libxfce4util exo libwnck
-      garcon xfconf libstartup_notification makeWrapper
+      garcon xfconf libstartup_notification makeWrapper hicolor_icon_theme
     ] ++ xfce4mixer.gst_plugins
       ++ optional withGtk3 gtk3;
 
   propagatedBuildInputs = [ (if withGtk3 then libxfce4ui_gtk3 else libxfce4ui) ];
 
+  configureFlags = optional withGtk3 "--enable-gtk3";
+
   postInstall = ''
     wrapProgram "$out/bin/xfce4-panel" \
       --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
   '';
 
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
-
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/projects/xfce4-panel;
     description = "Xfce panel";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager.nix b/pkgs/desktops/xfce/core/xfce4-power-manager.nix
index 9a3116463c63..7695f906d317 100644
--- a/pkgs/desktops/xfce/core/xfce4-power-manager.nix
+++ b/pkgs/desktops/xfce/core/xfce4-power-manager.nix
@@ -1,29 +1,29 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk, dbus_glib, upower, xfconf
-, libxfce4ui, libxfce4util, libnotify, xfce4panel }:
-
-stdenv.mkDerivation rec {
+, libxfce4ui, libxfce4util, libnotify, xfce4panel, hicolor_icon_theme }:
+let
   p_name  = "xfce4-power-manager";
   ver_maj = "1.4";
   ver_min = "4";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "01rvqy1cif4s8lkidb7hhmsz7d9f2fwcwvc51xycaj3qgsmch3n5";
   };
 
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
   buildInputs =
     [ pkgconfig intltool gtk dbus_glib upower xfconf libxfce4ui libxfce4util
-      libnotify xfce4panel
+      libnotify xfce4panel hicolor_icon_theme
     ];
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://goodies.xfce.org/projects/applications/xfce4-power-manager;
     description = "A power manager for the Xfce Desktop Environment";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-session.nix b/pkgs/desktops/xfce/core/xfce4-session.nix
index 7599826e8f02..a0568b0dd395 100644
--- a/pkgs/desktops/xfce/core/xfce4-session.nix
+++ b/pkgs/desktops/xfce/core/xfce4-session.nix
@@ -1,25 +1,26 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, intltool, gtk, polkit
 , libxfce4util, libxfce4ui, xfce4panel, libwnck, dbus_glib, xfconf, libglade, xorg
+, hicolor_icon_theme
 }:
 
-#TODO: gnome stuff: gconf (assistive?), keyring
-
-stdenv.mkDerivation rec {
+let
   p_name  = "xfce4-session";
   ver_maj = "4.12";
   ver_min = "1";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "97d7f2a2d0af7f3623b68d1f04091e02913b28f9555dab8b0d26c8a1299d08fd";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
     [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck dbus_glib
-      xfconf xfce4panel libglade xorg.iceauth
-      polkit
-    ];
+      xfconf xfce4panel libglade xorg.iceauth xorg.libSM
+      polkit hicolor_icon_theme
+    ]; #TODO: upower-glib, gconf (assistive?), gnome keyring
 
   preBuild = ''
     sed '/^PATH=/d'        -i scripts/xflock4
@@ -28,13 +29,12 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--with-xsession-prefix=$(out)" ];
 
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
-
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/projects/xfce4-session;
     description = "Session manager for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfce4-settings.nix b/pkgs/desktops/xfce/core/xfce4-settings.nix
index 4c2de64561d5..f6f7c4c3a54b 100644
--- a/pkgs/desktops/xfce/core/xfce4-settings.nix
+++ b/pkgs/desktops/xfce/core/xfce4-settings.nix
@@ -1,33 +1,33 @@
 { stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui
 , libglade, xfconf, xorg, libwnck, libnotify, libxklavier, garcon, upower }:
-
-#TODO: optional packages
-stdenv.mkDerivation rec {
+let
   p_name  = "xfce4-settings";
   ver_maj = "4.12";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4";
   };
 
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
   patches = [ ./xfce4-settings-default-icon-theme.patch ];
 
   buildInputs =
     [ pkgconfig intltool exo gtk libxfce4util libxfce4ui libglade upower
       xfconf xorg.libXi xorg.libXcursor libwnck libnotify libxklavier garcon
-    ];
+    ]; #TODO: optional packages
 
-  configureFlags = "--enable-pluggable-dialogs --enable-sound-settings";
+  configureFlags = [ "--enable-pluggable-dialogs" "--enable-sound-settings" ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/projects/xfce4-settings;
     description = "Settings manager for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfconf.nix b/pkgs/desktops/xfce/core/xfconf.nix
index f12f96895cd9..13902fa4428c 100644
--- a/pkgs/desktops/xfce/core/xfconf.nix
+++ b/pkgs/desktops/xfce/core/xfconf.nix
@@ -1,24 +1,28 @@
 { stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, dbus_glib }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "xfconf";
   ver_maj = "4.12";
   ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "0mmi0g30aln3x98y5p507g17pipq0dj0bwypshan8cq5hkmfl44r";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
+
+  outputs = [ "dev" "out" "docdev" ];
 
   #TODO: no perl bingings yet (ExtUtils::Depends, ExtUtils::PkgConfig, Glib)
   buildInputs = [ pkgconfig intltool glib libxfce4util ];
   propagatedBuildInputs = [ dbus_glib ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://docs.xfce.org/xfce/xfconf/start;
     description = "Simple client-server configuration storage and query system for Xfce";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfdesktop.nix b/pkgs/desktops/xfce/core/xfdesktop.nix
index e5d04879008e..8802862eddde 100644
--- a/pkgs/desktops/xfce/core/xfdesktop.nix
+++ b/pkgs/desktops/xfce/core/xfdesktop.nix
@@ -1,30 +1,32 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui
-, libwnck, xfconf, libglade, xfce4panel, thunar, exo, garcon, libnotify }:
-
-stdenv.mkDerivation rec {
+, libwnck, xfconf, libglade, xfce4panel, thunar, exo, garcon, libnotify
+, hicolor_icon_theme }:
+let
   p_name  = "xfdesktop";
   ver_maj = "4.12";
   ver_min = "3";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "a8a8d93744d842ca6ac1f9bd2c8789ee178937bca7e170e5239cbdbef30520ac";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
     [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck xfconf
-      libglade xfce4panel thunar exo garcon libnotify
+      libglade xfce4panel thunar exo garcon libnotify hicolor_icon_theme
     ];
-  preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/projects/xfdesktop;
     description = "Xfce desktop manager";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+
diff --git a/pkgs/desktops/xfce/core/xfwm4.nix b/pkgs/desktops/xfce/core/xfwm4.nix
index dd18b1355f79..d861e5f2d557 100644
--- a/pkgs/desktops/xfce/core/xfwm4.nix
+++ b/pkgs/desktops/xfce/core/xfwm4.nix
@@ -1,16 +1,17 @@
 { stdenv, fetchurl, pkgconfig, gtk, intltool, libglade, libxfce4util
 , libxfce4ui, xfconf, libwnck, libstartup_notification, xorg }:
-
-stdenv.mkDerivation rec {
+let
   p_name  = "xfwm4";
   ver_maj = "4.12";
   ver_min = "3";
+in
+stdenv.mkDerivation rec {
+  name = "${p_name}-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
     sha256 = "f4a988fbc4e0df7e8583c781d271559e56fd28696092f94ae052e9e6edb09eac";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
     [ pkgconfig intltool gtk libglade libxfce4util libxfce4ui xfconf
@@ -20,11 +21,12 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.xfce.org/projects/xfwm4;
     description = "Window manager for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
+