about summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-07-31 17:28:25 +0200
committerVladimír Čunát <vcunat@gmail.com>2016-07-31 17:28:25 +0200
commitc20f0f446208fae5c63bbcdb89413973de850926 (patch)
treea5899f40f4d8355098c6e311ad3213d881e14301 /pkgs/development/libraries
parentb4ed9704a89a9bf58ff9411951fe00724a1248b8 (diff)
parent0d259f841b560acc1c5a2c9cbbd38614019bdba8 (diff)
downloadnixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar.gz
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar.bz2
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar.lz
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar.xz
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.tar.zst
nixlib-c20f0f446208fae5c63bbcdb89413973de850926.zip
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/aws-sdk-cpp/default.nix4
-rw-r--r--pkgs/development/libraries/freeglut/default.nix8
-rw-r--r--pkgs/development/libraries/gnutls/generic.nix4
-rw-r--r--pkgs/development/libraries/kde-frameworks/attica.nix7
-rw-r--r--pkgs/development/libraries/kde-frameworks/baloo.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/bluez-qt.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks/breeze-icons.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks/default.nix134
-rw-r--r--pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix20
-rw-r--r--pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch37
-rw-r--r--pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/frameworkintegration.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kactivities-stats.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kactivities.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kapidox.nix7
-rw-r--r--pkgs/development/libraries/kde-frameworks/karchive.nix7
-rw-r--r--pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch17
-rw-r--r--pkgs/development/libraries/kde-frameworks/kauth/default.nix9
-rw-r--r--pkgs/development/libraries/kde-frameworks/kauth/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kbookmarks.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcmutils/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcmutils/default.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcodecs.nix7
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcompletion.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kconfig.nix7
-rw-r--r--pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcoreaddons.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcrash.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdbusaddons.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdeclarative.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks/kded.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix30
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdelibs4support/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix26
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdesu.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdnssd.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdoctools/default.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch12
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh5
-rw-r--r--pkgs/development/libraries/kde-frameworks/kemoticons.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kfilemetadata/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kglobalaccel.nix18
-rw-r--r--pkgs/development/libraries/kde-frameworks/kguiaddons.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/khtml.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks/ki18n.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix12
-rw-r--r--pkgs/development/libraries/kde-frameworks/kiconthemes/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kidletime.nix12
-rw-r--r--pkgs/development/libraries/kde-frameworks/kimageformats.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/kinit/default.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch34
-rw-r--r--pkgs/development/libraries/kde-frameworks/kinit/series2
-rw-r--r--pkgs/development/libraries/kde-frameworks/kinit/start_kdeinit-path.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kio/default.nix21
-rw-r--r--pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch28
-rw-r--r--pkgs/development/libraries/kde-frameworks/kio/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kitemmodels.nix9
-rw-r--r--pkgs/development/libraries/kde-frameworks/kitemviews.nix9
-rw-r--r--pkgs/development/libraries/kde-frameworks/kjobwidgets.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kjs.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks/kjsembed.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks/kmediaplayer.nix12
-rw-r--r--pkgs/development/libraries/kde-frameworks/knewstuff.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/knotifications.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks/knotifyconfig.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpackage/default.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch26
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpackage/series2
-rw-r--r--pkgs/development/libraries/kde-frameworks/kparts.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpeople.nix12
-rw-r--r--pkgs/development/libraries/kde-frameworks/kplotting.nix9
-rw-r--r--pkgs/development/libraries/kde-frameworks/kpty.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kross.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/krunner.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kservice/default.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kservice/series2
-rw-r--r--pkgs/development/libraries/kde-frameworks/ktexteditor.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks/ktextwidgets.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kunitconversion.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/kwallet.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kwayland.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix9
-rw-r--r--pkgs/development/libraries/kde-frameworks/kwindowsystem.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/kxmlgui.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix8
-rw-r--r--pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks/plasma-framework.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks/setup-hook.sh99
-rw-r--r--pkgs/development/libraries/kde-frameworks/solid.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/sonnet.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks/srcs.nix581
-rw-r--r--pkgs/development/libraries/kde-frameworks/threadweaver.nix9
-rw-r--r--pkgs/development/libraries/libebml/default.nix4
-rw-r--r--pkgs/development/libraries/libfilezilla/default.nix4
-rw-r--r--pkgs/development/libraries/libiconv/default.nix2
-rw-r--r--pkgs/development/libraries/libmatroska/default.nix4
-rw-r--r--pkgs/development/libraries/mesa-darwin/default.nix2
-rw-r--r--pkgs/development/libraries/motif/default.nix46
-rw-r--r--pkgs/development/libraries/phonon/backends/gstreamer.nix7
-rw-r--r--pkgs/development/libraries/phonon/backends/vlc.nix7
-rw-r--r--pkgs/development/libraries/phonon/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/default.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/fix-qt-module-cmake-config.sh5
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/cmake-paths.patch321
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/default.nix45
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/series1
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtconnectivity.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtenginio.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtlocation.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtquick1/default.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtscript/default.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtsensors.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtserialport/default.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtsvg.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qttools.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtwebsockets.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtx11extras.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtxmlpatterns.nix3
-rw-r--r--pkgs/development/libraries/qt-5/5.6/default.nix2
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/default.nix27
-rw-r--r--pkgs/development/libraries/qt-5/5.7/default.nix119
-rw-r--r--pkgs/development/libraries/qt-5/5.7/make-qt-wrapper.sh36
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qmake-hook.sh42
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/cmake-paths.patch321
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/compose-search-path.patch16
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/decrypt-ssl-traffic.patch13
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/default.nix247
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-dbus.patch13
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gl.patch17
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gtkstyle.patch (renamed from pkgs/development/libraries/qt-5/5.6/qtbase/dlopen-gtkstyle.patch)0
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-libXcursor.patch17
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-openssl.patch26
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-resolv.patch26
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/libressl.patch33
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/mkspecs-libgl.patch15
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/nix-profiles-library-paths.patch22
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/series10
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/setup-hook.sh171
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/tzdir.patch40
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/xdg-config-dirs.patch41
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtconnectivity.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix8
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtdeclarative/nix-profiles-import-paths.patch20
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtdeclarative/series1
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtdoc.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtgraphicaleffects.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtimageformats.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtlocation.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtmultimedia.nix12
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtquickcontrols.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtscript/0001-glib-2.32.patch25
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtscript/default.nix7
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtsensors.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtserialport/0001-dlopen-serialport-udev.patch28
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtserialport/default.nix12
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtsvg.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qttools.nix10
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qttranslations.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtwebchannel.nix7
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtwebengine.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtwebsockets.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtx11extras.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtxmlpatterns.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.7/setup-hook.sh2
-rw-r--r--pkgs/development/libraries/qt-5/5.7/srcs.nix301
-rw-r--r--pkgs/development/libraries/tk/8.6.nix2
-rw-r--r--pkgs/development/libraries/tk/generic.nix2
-rw-r--r--pkgs/development/libraries/v8/default.nix8
-rw-r--r--pkgs/development/libraries/webkitgtk/2.4.nix8
-rw-r--r--pkgs/development/libraries/webkitgtk/configure.patch20
-rw-r--r--pkgs/development/libraries/webkitgtk/impure-icucore.patch12
185 files changed, 4210 insertions, 150 deletions
diff --git a/pkgs/development/libraries/aws-sdk-cpp/default.nix b/pkgs/development/libraries/aws-sdk-cpp/default.nix
index 1848bd064f16..948cbacf8766 100644
--- a/pkgs/development/libraries/aws-sdk-cpp/default.nix
+++ b/pkgs/development/libraries/aws-sdk-cpp/default.nix
@@ -23,6 +23,10 @@ stdenv.mkDerivation rec {
     ++ lib.optional (apis != ["*"])
       "-DBUILD_ONLY=${lib.concatMapStringsSep ";" (api: "aws-cpp-sdk-" + api) apis}";
 
+  # curl upgrade to 7.50.0 (#17152) changes the libcurl headers slightly and
+  # therefore requires the followin flag until this package gets updated
+  NIX_CFLAGS_COMPILE = [ "-fpermissive" ];
+
   enableParallelBuilding = true;
 
   preBuild =
diff --git a/pkgs/development/libraries/freeglut/default.nix b/pkgs/development/libraries/freeglut/default.nix
index 368a1e274878..4135c451eebc 100644
--- a/pkgs/development/libraries/freeglut/default.nix
+++ b/pkgs/development/libraries/freeglut/default.nix
@@ -11,6 +11,14 @@ in stdenv.mkDerivation {
 
   buildInputs = [ libXi libXrandr libXxf86vm mesa xlibsWrapper cmake ];
 
+  cmakeFlags = stdenv.lib.optionals stdenv.isDarwin [
+                 "-DOPENGL_INCLUDE_DIR=${mesa}/include"
+                 "-DOPENGL_gl_LIBRARY:FILEPATH=${mesa}/lib/libGL.dylib"
+                 "-DOPENGL_glu_LIBRARY:FILEPATH=${mesa}/lib/libGLU.dylib"
+                 "-DFREEGLUT_BUILD_DEMOS:BOOL=OFF"
+                 "-DFREEGLUT_BUILD_STATIC:BOOL=OFF"
+               ];
+
   meta = with stdenv.lib; {
     description = "Create and manage windows containing OpenGL contexts";
     longDescription = ''
diff --git a/pkgs/development/libraries/gnutls/generic.nix b/pkgs/development/libraries/gnutls/generic.nix
index 100478884239..8d3ef3f4c777 100644
--- a/pkgs/development/libraries/gnutls/generic.nix
+++ b/pkgs/development/libraries/gnutls/generic.nix
@@ -10,7 +10,7 @@ assert guileBindings -> guile != null;
 let
   # XXX: Gnulib's `test-select' fails on FreeBSD:
   # http://hydra.nixos.org/build/2962084/nixlog/1/raw .
-  doCheck = (!stdenv.isFreeBSD && !stdenv.isDarwin);
+  doCheck = !stdenv.isFreeBSD && !stdenv.isDarwin && lib.versionAtLeast version "3.4";
 in
 stdenv.mkDerivation {
   name = "gnutls-${version}";
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
   outputs = [ "dev" "out" "bin" "man" "docdev" ];
   outputInfo = "docdev";
 
-  postPatch = ''
+  postPatch = lib.optionalString (lib.versionAtLeast version "3.4") ''
     sed '2iecho "name constraints tests skipped due to datefudge problems"\nexit 0' \
       -i tests/cert-tests/name-constraints
   '' + postPatch;
diff --git a/pkgs/development/libraries/kde-frameworks/attica.nix b/pkgs/development/libraries/kde-frameworks/attica.nix
new file mode 100644
index 000000000000..d34b3f3a2c5f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/attica.nix
@@ -0,0 +1,7 @@
+{ kdeFramework, lib, ecm }:
+
+kdeFramework {
+  name = "attica";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/baloo.nix b/pkgs/development/libraries/kde-frameworks/baloo.nix
new file mode 100644
index 000000000000..9c803fdc7176
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/baloo.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kauth, kconfig
+, kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n, kidletime
+, kio, lmdb, qtbase, solid
+}:
+
+kdeFramework {
+  name = "baloo";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kauth kconfig kcoreaddons kcrash kdbusaddons kfilemetadata ki18n kio
+    kidletime lmdb qtbase solid
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/bluez-qt.nix b/pkgs/development/libraries/kde-frameworks/bluez-qt.nix
new file mode 100644
index 000000000000..7ab82bdc1ef5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/bluez-qt.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib
+, ecm
+, qtdeclarative
+}:
+
+kdeFramework {
+  name = "bluez-qt";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtdeclarative ];
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt \
+      --replace /lib/udev/rules.d "$out/lib/udev/rules.d"
+  '';
+}
diff --git a/pkgs/development/libraries/kde-frameworks/breeze-icons.nix b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
new file mode 100644
index 000000000000..bf6df87a9720
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, ecm, qtsvg }:
+
+kdeFramework {
+  name = "breeze-icons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  outputs = [ "out" ];
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtsvg ];
+  propagatedUserEnvPkgs = [ qtsvg.out ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix
new file mode 100644
index 000000000000..74e9df114f0b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/default.nix
@@ -0,0 +1,134 @@
+/*
+
+# Updates
+
+1. Update the URL in `maintainers/scripts/generate-kde-frameworks.sh` and
+   run that script from the top of the Nixpkgs tree.
+2. Check that the new packages build correctly.
+3. Commit the changes and open a pull request.
+
+*/
+
+{ pkgs, debug ? false }:
+
+let
+
+  inherit (pkgs) lib makeSetupHook stdenv;
+
+  mirror = "mirror://kde";
+  srcs = import ./srcs.nix { inherit (pkgs) fetchurl; inherit mirror; };
+
+  packages = self: with self; {
+
+    kdeDerivation = args:
+      let
+      in stdenv.mkDerivation (args // {
+
+        outputs = args.outputs or [ "dev" "out" ];
+
+        cmakeFlags =
+          (args.cmakeFlags or [])
+          ++ [ "-DBUILD_TESTING=OFF" ]
+          ++ lib.optional debug "-DCMAKE_BUILD_TYPE=Debug";
+
+      });
+
+    kdeFramework = args:
+      let
+        inherit (args) name;
+        inherit (srcs."${name}") src version;
+      in kdeDerivation (args // {
+        name = "${name}-${version}";
+        inherit src;
+
+        meta = {
+          license = with lib.licenses; [
+            lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
+          ];
+          platforms = lib.platforms.linux;
+          homepage = "http://www.kde.org";
+        } // (args.meta or {});
+      });
+
+    attica = callPackage ./attica.nix {};
+    baloo = callPackage ./baloo.nix {};
+    bluez-qt = callPackage ./bluez-qt.nix {};
+    breeze-icons = callPackage ./breeze-icons.nix {};
+    ecm =
+      let drv = { cmake, ecmNoHooks, pkgconfig, qtbase, qttools }:
+            makeSetupHook
+            { deps = [ cmake ecmNoHooks pkgconfig qtbase qttools ]; }
+            ./setup-hook.sh;
+      in callPackage drv {};
+    ecmNoHooks = callPackage ./extra-cmake-modules {
+      inherit (srcs.extra-cmake-modules) src version;
+    };
+    frameworkintegration = callPackage ./frameworkintegration.nix {};
+    kactivities = callPackage ./kactivities.nix {};
+    kactivities-stats = callPackage ./kactivities-stats.nix {};
+    kapidox = callPackage ./kapidox.nix {};
+    karchive = callPackage ./karchive.nix {};
+    kauth = callPackage ./kauth {};
+    kbookmarks = callPackage ./kbookmarks.nix {};
+    kcmutils = callPackage ./kcmutils {};
+    kcodecs = callPackage ./kcodecs.nix {};
+    kcompletion = callPackage ./kcompletion.nix {};
+    kconfig = callPackage ./kconfig.nix {};
+    kconfigwidgets = callPackage ./kconfigwidgets {};
+    kcoreaddons = callPackage ./kcoreaddons.nix {};
+    kcrash = callPackage ./kcrash.nix {};
+    kdbusaddons = callPackage ./kdbusaddons.nix {};
+    kdeclarative = callPackage ./kdeclarative.nix {};
+    kded = callPackage ./kded.nix {};
+    kdelibs4support = callPackage ./kdelibs4support {};
+    kdesignerplugin = callPackage ./kdesignerplugin.nix {};
+    kdesu = callPackage ./kdesu.nix {};
+    kdnssd = callPackage ./kdnssd.nix {};
+    kdoctools = callPackage ./kdoctools {};
+    kemoticons = callPackage ./kemoticons.nix {};
+    kfilemetadata = callPackage ./kfilemetadata {};
+    kglobalaccel = callPackage ./kglobalaccel.nix {};
+    kguiaddons = callPackage ./kguiaddons.nix {};
+    khtml = callPackage ./khtml.nix {};
+    ki18n = callPackage ./ki18n.nix {};
+    kiconthemes = callPackage ./kiconthemes {};
+    kidletime = callPackage ./kidletime.nix {};
+    kimageformats = callPackage ./kimageformats.nix {};
+    kinit = callPackage ./kinit {};
+    kio = callPackage ./kio {};
+    kitemmodels = callPackage ./kitemmodels.nix {};
+    kitemviews = callPackage ./kitemviews.nix {};
+    kjobwidgets = callPackage ./kjobwidgets.nix {};
+    kjs = callPackage ./kjs.nix {};
+    kjsembed = callPackage ./kjsembed.nix {};
+    kmediaplayer = callPackage ./kmediaplayer.nix {};
+    knewstuff = callPackage ./knewstuff.nix {};
+    knotifications = callPackage ./knotifications.nix {};
+    knotifyconfig = callPackage ./knotifyconfig.nix {};
+    kpackage = callPackage ./kpackage {};
+    kparts = callPackage ./kparts.nix {};
+    kpeople = callPackage ./kpeople.nix {};
+    kplotting = callPackage ./kplotting.nix {};
+    kpty = callPackage ./kpty.nix {};
+    kross = callPackage ./kross.nix {};
+    krunner = callPackage ./krunner.nix {};
+    kservice = callPackage ./kservice {};
+    ktexteditor = callPackage ./ktexteditor.nix {};
+    ktextwidgets = callPackage ./ktextwidgets.nix {};
+    kunitconversion = callPackage ./kunitconversion.nix {};
+    kwallet = callPackage ./kwallet.nix {};
+    kwayland = callPackage ./kwayland.nix {};
+    kwidgetsaddons = callPackage ./kwidgetsaddons.nix {};
+    kwindowsystem = callPackage ./kwindowsystem.nix {};
+    kxmlgui = callPackage ./kxmlgui.nix {};
+    kxmlrpcclient = callPackage ./kxmlrpcclient.nix {};
+    modemmanager-qt = callPackage ./modemmanager-qt.nix {};
+    networkmanager-qt = callPackage ./networkmanager-qt.nix {};
+    oxygen-icons5 = callPackage ./oxygen-icons5.nix {};
+    plasma-framework = callPackage ./plasma-framework.nix {};
+    solid = callPackage ./solid.nix {};
+    sonnet = callPackage ./sonnet.nix {};
+    threadweaver = callPackage ./threadweaver.nix {};
+  };
+
+in packages
diff --git a/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix b/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix
new file mode 100644
index 000000000000..d2f1688e330b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, lib, copyPathsToStore, src, version, cmake }:
+
+stdenv.mkDerivation {
+  name = "extra-cmake-modules-${version}";
+
+  inherit src;
+
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  outputs = [ "out" ];  # this package has no runtime components
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    platforms = lib.platforms.linux;
+    homepage = "http://www.kde.org";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch b/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch
new file mode 100644
index 000000000000..a74340a6dc96
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/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/development/libraries/kde-frameworks/extra-cmake-modules/series b/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series
new file mode 100644
index 000000000000..b4569e50a5f7
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series
@@ -0,0 +1 @@
+nix-lib-path.patch
diff --git a/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix b/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix
new file mode 100644
index 000000000000..0a782ae177da
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kbookmarks, kcompletion
+, kconfig, kconfigwidgets, ki18n, kiconthemes, kio, knotifications
+, kwidgetsaddons, libXcursor, qtx11extras
+}:
+
+kdeFramework {
+  name = "frameworkintegration";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kbookmarks kcompletion kconfig kconfigwidgets knotifications ki18n kio
+    kiconthemes kwidgetsaddons libXcursor qtx11extras
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix b/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix
new file mode 100644
index 000000000000..4f406376faa7
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, boost, kactivities, kconfig }:
+
+kdeFramework {
+  name = "kactivities-stats";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ boost kactivities kconfig ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kactivities.nix b/pkgs/development/libraries/kde-frameworks/kactivities.nix
new file mode 100644
index 000000000000..a2cacd4b257d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kactivities.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, boost, kcmutils, kconfig
+, kcoreaddons, kdbusaddons, kdeclarative, kglobalaccel, ki18n
+, kio, kservice, kwindowsystem, kxmlgui, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kactivities";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    boost kcmutils kconfig kcoreaddons kdbusaddons kdeclarative kglobalaccel
+    ki18n kio kservice kwindowsystem kxmlgui qtdeclarative
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kapidox.nix b/pkgs/development/libraries/kde-frameworks/kapidox.nix
new file mode 100644
index 000000000000..f6c60b7731e1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kapidox.nix
@@ -0,0 +1,7 @@
+{ kdeFramework, lib, ecm, python }:
+
+kdeFramework {
+  name = "kapidox";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm python ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/karchive.nix b/pkgs/development/libraries/kde-frameworks/karchive.nix
new file mode 100644
index 000000000000..265df45800f1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/karchive.nix
@@ -0,0 +1,7 @@
+{ kdeFramework, lib, ecm }:
+
+kdeFramework {
+  name = "karchive";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch b/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch
new file mode 100644
index 000000000000..c66f5ecd008f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/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/development/libraries/kde-frameworks/kauth/default.nix b/pkgs/development/libraries/kde-frameworks/kauth/default.nix
new file mode 100644
index 000000000000..f2a1c7717d5d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kauth/default.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib, copyPathsToStore, ecm, kcoreaddons, polkit-qt }:
+
+kdeFramework {
+  name = "kauth";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcoreaddons polkit-qt ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kauth/series b/pkgs/development/libraries/kde-frameworks/kauth/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kauth/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kbookmarks.nix b/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
new file mode 100644
index 000000000000..50cec5a39c86
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
@@ -0,0 +1,13 @@
+{
+  kdeFramework, lib, ecm,
+  kcodecs, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kxmlgui
+}:
+
+kdeFramework {
+  name = "kbookmarks";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kcodecs kconfig kconfigwidgets kcoreaddons kiconthemes kxmlgui
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kcmutils/0001-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks/kcmutils/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..0d861fa95012
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcmutils/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From f14d2a275323a47104b33eb61c5b6910ae1a9f59 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 06:43:53 -0500
+Subject: [PATCH] qdiriterator follow symlinks
+
+---
+ src/kpluginselector.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kpluginselector.cpp b/src/kpluginselector.cpp
+index 9c3431d..d6b1ee2 100644
+--- a/src/kpluginselector.cpp
++++ b/src/kpluginselector.cpp
+@@ -305,7 +305,7 @@ void KPluginSelector::addPlugins(const QString &componentName,
+     QStringList desktopFileNames;
+     const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, componentName + QStringLiteral("/kpartplugins"), QStandardPaths::LocateDirectory);
+     Q_FOREACH (const QString &dir, dirs) {
+-        QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories);
++      QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         while (it.hasNext()) {
+             desktopFileNames.append(it.next());
+         }
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix b/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix
new file mode 100644
index 000000000000..dd1af737d68e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib, ecm, kconfigwidgets
+, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews
+, kpackage, kservice, kxmlgui
+}:
+
+kdeFramework {
+  name = "kcmutils";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kconfigwidgets kcoreaddons kdeclarative ki18n kiconthemes kitemviews
+    kpackage kservice kxmlgui
+  ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kcodecs.nix b/pkgs/development/libraries/kde-frameworks/kcodecs.nix
new file mode 100644
index 000000000000..a3fcd3023f52
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcodecs.nix
@@ -0,0 +1,7 @@
+{ kdeFramework, lib, ecm }:
+
+kdeFramework {
+  name = "kcodecs";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kcompletion.nix b/pkgs/development/libraries/kde-frameworks/kcompletion.nix
new file mode 100644
index 000000000000..893f374933ea
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcompletion.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, kconfig, kwidgetsaddons }:
+
+kdeFramework {
+  name = "kcompletion";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kconfig kwidgetsaddons ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kconfig.nix b/pkgs/development/libraries/kde-frameworks/kconfig.nix
new file mode 100644
index 000000000000..0f003f8ea97e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kconfig.nix
@@ -0,0 +1,7 @@
+{ kdeFramework, lib, ecm }:
+
+kdeFramework {
+  name = "kconfig";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..7a6c0ee90534
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From 4f84780893d505b2d62a14633dd983baa8ec6e28 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 06:47:01 -0500
+Subject: [PATCH] qdiriterator follow symlinks
+
+---
+ src/khelpclient.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/khelpclient.cpp b/src/khelpclient.cpp
+index 53a331e..80fbb01 100644
+--- a/src/khelpclient.cpp
++++ b/src/khelpclient.cpp
+@@ -48,7 +48,7 @@ void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
+     QString docPath;
+     const QStringList desktopDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
+     Q_FOREACH (const QString &dir, desktopDirs) {
+-        QDirIterator it(dir, QStringList() << appname + QLatin1String(".desktop"), QDir::NoFilter, QDirIterator::Subdirectories);
++        QDirIterator it(dir, QStringList() << appname + QLatin1String(".desktop"), QDir::NoFilter, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         while (it.hasNext()) {
+             const QString desktopPath(it.next());
+             KDesktopFile desktopFile(desktopPath);
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix b/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix
new file mode 100644
index 000000000000..b88308b634c0
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix
@@ -0,0 +1,17 @@
+{
+  kdeFramework, lib, ecm,
+  kauth, kcodecs, kconfig, kdoctools, kguiaddons, ki18n, kwidgetsaddons
+}:
+
+kdeFramework {
+  name = "kconfigwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kauth kconfig kcodecs kguiaddons ki18n kwidgetsaddons
+  ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  postInstall = ''
+    moveToOutput "bin/preparetips5" "$dev"
+  '';
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix b/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix
new file mode 100644
index 000000000000..a3d5735ad274
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, shared_mime_info }:
+
+kdeFramework {
+  name = "kcoreaddons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ shared_mime_info ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kcrash.nix b/pkgs/development/libraries/kde-frameworks/kcrash.nix
new file mode 100644
index 000000000000..2fcadc828cf4
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kcrash.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, kcoreaddons, kwindowsystem, qtx11extras }:
+
+kdeFramework {
+  name = "kcrash";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcoreaddons kwindowsystem qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix b/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix
new file mode 100644
index 000000000000..663200516604
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, qtx11extras }:
+
+kdeFramework {
+  name = "kdbusaddons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdeclarative.nix b/pkgs/development/libraries/kde-frameworks/kdeclarative.nix
new file mode 100644
index 000000000000..a90a419d9b84
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdeclarative.nix
@@ -0,0 +1,15 @@
+{
+  kdeFramework, lib, ecm,
+  epoxy, kconfig, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage,
+  kwidgetsaddons, kwindowsystem, pkgconfig, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kdeclarative";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    epoxy kconfig kglobalaccel kguiaddons ki18n kiconthemes kio kpackage
+    kwidgetsaddons kwindowsystem qtdeclarative
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kded.nix b/pkgs/development/libraries/kde-frameworks/kded.nix
new file mode 100644
index 000000000000..d8fe820518d3
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kded.nix
@@ -0,0 +1,13 @@
+{
+  kdeFramework, lib, ecm,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kdoctools, kinit, kservice
+}:
+
+kdeFramework {
+  name = "kded";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kconfig kcoreaddons kcrash kdbusaddons kinit kservice
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix b/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix
new file mode 100644
index 000000000000..f3fd315e5500
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix
@@ -0,0 +1,30 @@
+{ kdeFramework, lib, copyPathsToStore
+, ecm, 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";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kauth karchive kcompletion kconfig kconfigwidgets kcoreaddons kcrash
+    kdbusaddons kded kdesignerplugin kemoticons kglobalaccel kguiaddons ki18n
+    kio kiconthemes kitemmodels kinit knotifications kparts kservice
+    ktextwidgets kunitconversion kwidgetsaddons kwindowsystem kxmlgui
+    networkmanager qtsvg qtx11extras xlibs.libSM
+  ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXML4_DTD_VERSION=4.5"
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch b/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch
new file mode 100644
index 000000000000..eabb70254483
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/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/development/libraries/kde-frameworks/kdelibs4support/series b/pkgs/development/libraries/kde-frameworks/kdelibs4support/series
new file mode 100644
index 000000000000..9b08ab208774
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdelibs4support/series
@@ -0,0 +1 @@
+nix-kde-include-dir.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh
new file mode 100644
index 000000000000..21ac2e83b5da
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh
@@ -0,0 +1 @@
+export NIX_KDE_INCLUDE_DIR="@dev@/include/"  # trailing slash is required!
diff --git a/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix b/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
new file mode 100644
index 000000000000..e87bb5bf9d01
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
@@ -0,0 +1,26 @@
+{ kdeFramework, lib
+, ecm
+, kcompletion
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kdoctools
+, kiconthemes
+, kio
+, kitemviews
+, kplotting
+, ktextwidgets
+, kwidgetsaddons
+, kxmlgui
+, sonnet
+}:
+
+kdeFramework {
+  name = "kdesignerplugin";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kcompletion kconfig kconfigwidgets kcoreaddons kiconthemes kio
+    kitemviews kplotting ktextwidgets kwidgetsaddons kxmlgui sonnet
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdesu.nix b/pkgs/development/libraries/kde-frameworks/kdesu.nix
new file mode 100644
index 000000000000..0c5cb85cc494
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdesu.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, ecm, kcoreaddons, ki18n, kpty
+, kservice
+}:
+
+kdeFramework {
+  name = "kdesu";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcoreaddons ki18n kpty kservice ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdnssd.nix b/pkgs/development/libraries/kde-frameworks/kdnssd.nix
new file mode 100644
index 000000000000..49fd368fccbf
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdnssd.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, avahi
+}:
+
+kdeFramework {
+  name = "kdnssd";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ avahi ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix b/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix
new file mode 100644
index 000000000000..4a31ea5396df
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, ecm, docbook_xml_dtd_45
+, docbook5_xsl, karchive, ki18n, perl, perlPackages
+}:
+
+kdeFramework {
+  name = "kdoctools";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ karchive ki18n ];
+  propagatedNativeBuildInputs = [ perl perlPackages.URI ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXSL_DIR=${docbook5_xsl}/xml/xsl/docbook"
+  ];
+  patches = [ ./kdoctools-no-find-docbook-xml.patch ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch b/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch
new file mode 100644
index 000000000000..4e3a33efab32
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5c4863c..f731775 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,7 +46,6 @@ set_package_properties(LibXml2 PROPERTIES
+                       )
+ 
+ 
+-find_package(DocBookXML4 "4.5")
+ 
+ set_package_properties(DocBookXML4 PROPERTIES
+                        TYPE REQUIRED
diff --git a/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh
new file mode 100644
index 000000000000..5cfffbd622d1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh
@@ -0,0 +1,5 @@
+addXdgData() {
+    addToSearchPath XDG_DATA_DIRS "$1/share"
+}
+
+envHooks+=(addXdgData)
diff --git a/pkgs/development/libraries/kde-frameworks/kemoticons.nix b/pkgs/development/libraries/kde-frameworks/kemoticons.nix
new file mode 100644
index 000000000000..cdffbd503576
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kemoticons.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib
+, ecm
+, karchive
+, kconfig
+, kcoreaddons
+, kservice
+}:
+
+kdeFramework {
+  name = "kemoticons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ karchive kconfig kcoreaddons kservice ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch b/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch
new file mode 100644
index 000000000000..732f7b69c828
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/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/development/libraries/kde-frameworks/kfilemetadata/default.nix b/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix
new file mode 100644
index 000000000000..31f692deca64
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, copyPathsToStore, ecm
+, attr, ebook_tools, exiv2, ffmpeg, karchive, ki18n, poppler, qtbase, taglib
+}:
+
+kdeFramework {
+  name = "kfilemetadata";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    attr ebook_tools exiv2 ffmpeg karchive ki18n poppler qtbase taglib
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kfilemetadata/series b/pkgs/development/libraries/kde-frameworks/kfilemetadata/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kfilemetadata/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix b/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix
new file mode 100644
index 000000000000..8ac0adafbd18
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib
+, ecm
+, kconfig
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kwindowsystem
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kglobalaccel";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kconfig kcoreaddons kcrash kdbusaddons kwindowsystem qtx11extras
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kguiaddons.nix b/pkgs/development/libraries/kde-frameworks/kguiaddons.nix
new file mode 100644
index 000000000000..9f20ecd598a4
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kguiaddons.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kguiaddons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/khtml.nix b/pkgs/development/libraries/kde-frameworks/khtml.nix
new file mode 100644
index 000000000000..be1094b7cf5a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/khtml.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, ecm, giflib, karchive
+, kcodecs, kglobalaccel, ki18n, kiconthemes, kio, kjs
+, knotifications, kparts, ktextwidgets, kwallet, kwidgetsaddons
+, kwindowsystem, kxmlgui, perl, phonon, qtx11extras, sonnet
+}:
+
+kdeFramework {
+  name = "khtml";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm perl ];
+  propagatedBuildInputs = [
+    giflib karchive kcodecs kglobalaccel ki18n kiconthemes kio kjs
+    knotifications kparts ktextwidgets kwallet kwidgetsaddons kwindowsystem
+    kxmlgui phonon qtx11extras sonnet
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/ki18n.nix b/pkgs/development/libraries/kde-frameworks/ki18n.nix
new file mode 100644
index 000000000000..cf2212413bd2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/ki18n.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib
+, ecm
+, gettext
+, python
+, qtdeclarative
+, qtscript
+}:
+
+kdeFramework {
+  name = "ki18n";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtdeclarative qtscript ];
+  propagatedNativeBuildInputs = [ gettext python ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch b/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch
new file mode 100644
index 000000000000..f7cb0ea3aacc
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch
@@ -0,0 +1,13 @@
+Index: kiconthemes-5.17.0/src/kicontheme.cpp
+===================================================================
+--- kiconthemes-5.17.0.orig/src/kicontheme.cpp
++++ kiconthemes-5.17.0/src/kicontheme.cpp
+@@ -557,7 +557,7 @@ void KIconTheme::reconfigure()
+ // static
+ QString KIconTheme::defaultThemeName()
+ {
+-    return QStringLiteral("hicolor");
++    return QStringLiteral("breeze");
+ }
+ 
+ void KIconTheme::assignIconsToContextMenu(ContextMenus type,
diff --git a/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix b/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix
new file mode 100644
index 000000000000..6141db849efe
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix
@@ -0,0 +1,12 @@
+{ kdeFramework, lib, copyPathsToStore
+, ecm
+, karchive, kconfigwidgets, ki18n, breeze-icons, kitemviews, qtsvg
+}:
+
+kdeFramework {
+  name = "kiconthemes";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ breeze-icons kconfigwidgets karchive ki18n kitemviews qtsvg ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kiconthemes/series b/pkgs/development/libraries/kde-frameworks/kiconthemes/series
new file mode 100644
index 000000000000..ab5cc8a3edb2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kiconthemes/series
@@ -0,0 +1 @@
+default-theme-breeze.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kidletime.nix b/pkgs/development/libraries/kde-frameworks/kidletime.nix
new file mode 100644
index 000000000000..d3f46512db23
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kidletime.nix
@@ -0,0 +1,12 @@
+{ kdeFramework, lib
+, ecm
+, qtbase
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kidletime";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtbase qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kimageformats.nix b/pkgs/development/libraries/kde-frameworks/kimageformats.nix
new file mode 100644
index 000000000000..ec22dc335d5f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kimageformats.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, ilmbase
+}:
+
+kdeFramework {
+  name = "kimageformats";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kinit/default.nix b/pkgs/development/libraries/kde-frameworks/kinit/default.nix
new file mode 100644
index 000000000000..032bdd30d9ec
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kinit/default.nix
@@ -0,0 +1,15 @@
+{
+  kdeFramework, lib, copyPathsToStore,
+  ecm, kdoctools,
+  kconfig, kcrash, ki18n, kio, kservice, kwindowsystem
+}:
+
+kdeFramework {
+  name = "kinit";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kconfig kcrash ki18n kio kservice kwindowsystem
+  ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch b/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch
new file mode 100644
index 000000000000..a5c76fca2481
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch
@@ -0,0 +1,34 @@
+Index: kinit-5.24.0/src/kdeinit/kinit.cpp
+===================================================================
+--- kinit-5.24.0.orig/src/kdeinit/kinit.cpp
++++ kinit-5.24.0/src/kdeinit/kinit.cpp
+@@ -672,19 +672,16 @@ static pid_t launch(int argc, const char
+ 
+         if (!libpath.isEmpty()) {
+             if (libpath_relative) {
+-                // NB: Because Qt makes the actual dlopen() call, the
+-                //     RUNPATH of kdeinit is *not* respected - see
+-                //     https://sourceware.org/bugzilla/show_bug.cgi?id=13945
+-                //     - so we try hacking it in ourselves
+-                QString install_lib_dir = QFile::decodeName(
+-                        CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/");
+-                QString orig_libpath = libpath;
+-                libpath = install_lib_dir + libpath;
+-                l.setFileName(libpath);
+-                if (!l.load()) {
+-                    libpath = orig_libpath;
+-                    l.setFileName(libpath);
+-                    l.load();
++                // Try to load the library relative to the active profiles.
++                QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++                // Reverse the profile list.
++                std::reverse(profiles.begin(), profiles.end());
++                const QString libdir = QString::fromLatin1("/lib/");
++                Q_FOREACH (const QByteArray &profile, profiles) {
++                    if (!profile.isEmpty()) {
++                        l.setFileName(QFile::decodeName(profile) + libdir + libpath);
++                        if (l.load()) break;
++                    }
+                 }
+             } else {
+                 l.load();
diff --git a/pkgs/development/libraries/kde-frameworks/kinit/series b/pkgs/development/libraries/kde-frameworks/kinit/series
new file mode 100644
index 000000000000..576b8a935bf1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kinit/series
@@ -0,0 +1,2 @@
+kinit-libpath.patch
+start_kdeinit-path.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kinit/start_kdeinit-path.patch b/pkgs/development/libraries/kde-frameworks/kinit/start_kdeinit-path.patch
new file mode 100644
index 000000000000..fbecf9433f69
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kinit/start_kdeinit-path.patch
@@ -0,0 +1,13 @@
+Index: kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c
+===================================================================
+--- kinit-5.24.0.orig/src/start_kdeinit/start_kdeinit_wrapper.c
++++ kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c
+@@ -23,7 +23,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-#define EXECUTE CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit"
++#define EXECUTE "/var/setuid-wrappers/start_kdeinit"
+ 
+ #if KDEINIT_OOM_PROTECT
+ 
diff --git a/pkgs/development/libraries/kde-frameworks/kio/default.nix b/pkgs/development/libraries/kde-frameworks/kio/default.nix
new file mode 100644
index 000000000000..7623e44a0761
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kio/default.nix
@@ -0,0 +1,21 @@
+{ kdeFramework, lib, copyPathsToStore
+, ecm, acl, karchive
+, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons
+, kdbusaddons, kdoctools, ki18n, kiconthemes, kitemviews
+, kjobwidgets, knotifications, kservice, ktextwidgets, kwallet
+, kwidgetsaddons, kwindowsystem, kxmlgui
+, qtscript, qtx11extras, solid
+}:
+
+kdeFramework {
+  name = "kio";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    acl karchive kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons
+    kdbusaddons ki18n kiconthemes kitemviews kjobwidgets knotifications kservice
+    ktextwidgets kwallet kwidgetsaddons kwindowsystem kxmlgui solid qtscript
+    qtx11extras
+  ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch b/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
new file mode 100644
index 000000000000..c9ad46b41bb7
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
@@ -0,0 +1,28 @@
+Index: kio-5.17.0/src/core/ksambashare.cpp
+===================================================================
+--- kio-5.17.0.orig/src/core/ksambashare.cpp
++++ kio-5.17.0/src/core/ksambashare.cpp
+@@ -67,13 +67,18 @@ KSambaSharePrivate::~KSambaSharePrivate(
+ 
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+-    if (QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-            || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))) {
+-        return true;
++    const QByteArray pathEnv = qgetenv("PATH");
++    if (!pathEnv.isEmpty()) {
++        QLatin1Char pathSep(':');
++        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
++        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
++            it->append("/smbd");
++            if (QFile::exists(*it)) {
++                return true;
++            }
++        }
+     }
+ 
+-    //qDebug() << "Samba is not installed!";
+-
+     return false;
+ }
+ 
diff --git a/pkgs/development/libraries/kde-frameworks/kio/series b/pkgs/development/libraries/kde-frameworks/kio/series
new file mode 100644
index 000000000000..77ca15450047
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kio/series
@@ -0,0 +1 @@
+samba-search-path.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kitemmodels.nix b/pkgs/development/libraries/kde-frameworks/kitemmodels.nix
new file mode 100644
index 000000000000..0a474dfdb7d7
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kitemmodels.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "kitemmodels";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kitemviews.nix b/pkgs/development/libraries/kde-frameworks/kitemviews.nix
new file mode 100644
index 000000000000..0af3de5770a9
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kitemviews.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "kitemviews";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix b/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix
new file mode 100644
index 000000000000..1337f4109c2d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, ecm
+, kcoreaddons
+, kwidgetsaddons
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kjobwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcoreaddons kwidgetsaddons qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kjs.nix b/pkgs/development/libraries/kde-frameworks/kjs.nix
new file mode 100644
index 000000000000..12852e6a1e77
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kjs.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib
+, ecm
+, kdoctools
+}:
+
+kdeFramework {
+  name = "kjs";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kjsembed.nix b/pkgs/development/libraries/kde-frameworks/kjsembed.nix
new file mode 100644
index 000000000000..20c8b2eea162
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kjsembed.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, ecm, kdoctools, ki18n, kjs
+, qtsvg
+}:
+
+kdeFramework {
+  name = "kjsembed";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [ ki18n kjs qtsvg ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix b/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix
new file mode 100644
index 000000000000..360d8e90daf2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix
@@ -0,0 +1,12 @@
+{ kdeFramework, lib
+, ecm
+, kparts
+, kxmlgui
+}:
+
+kdeFramework {
+  name = "kmediaplayer";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kparts kxmlgui ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/knewstuff.nix b/pkgs/development/libraries/kde-frameworks/knewstuff.nix
new file mode 100644
index 000000000000..b6a84e2539d2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/knewstuff.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, attica, karchive
+, kcompletion, kconfig, kcoreaddons, ki18n, kiconthemes, kio
+, kitemviews, kservice, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+kdeFramework {
+  name = "knewstuff";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    attica karchive kcompletion kconfig kcoreaddons ki18n kiconthemes kio
+    kitemviews kservice ktextwidgets kwidgetsaddons kxmlgui
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/knotifications.nix b/pkgs/development/libraries/kde-frameworks/knotifications.nix
new file mode 100644
index 000000000000..061a5d8d142a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/knotifications.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, ecm
+, kcodecs, kconfig, kcoreaddons, kwindowsystem
+, libdbusmenu
+, phonon
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "knotifications";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kcodecs kconfig kcoreaddons kwindowsystem libdbusmenu phonon qtx11extras
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix b/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix
new file mode 100644
index 000000000000..b64f109f08b1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, ecm, kcompletion, kconfig
+, ki18n, kio, phonon
+}:
+
+kdeFramework {
+  name = "knotifyconfig";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcompletion kconfig ki18n kio phonon ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch b/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch
new file mode 100644
index 000000000000..e9d744448148
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch
@@ -0,0 +1,13 @@
+Index: kpackage-5.18.0/src/kpackage/package.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/package.cpp
++++ kpackage-5.18.0/src/kpackage/package.cpp
+@@ -808,7 +808,7 @@ PackagePrivate::PackagePrivate()
+     : QSharedData(),
+       fallbackPackage(0),
+       metadata(0),
+-      externalPaths(false),
++      externalPaths(true),
+       valid(false),
+       checkedValid(false)
+ {
diff --git a/pkgs/development/libraries/kde-frameworks/kpackage/default.nix b/pkgs/development/libraries/kde-frameworks/kpackage/default.nix
new file mode 100644
index 000000000000..76ab7dbe013a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpackage/default.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, copyPathsToStore
+, ecm
+, karchive
+, kconfig
+, kcoreaddons
+, kdoctools
+, ki18n
+}:
+
+kdeFramework {
+  name = "kpackage";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [ karchive kconfig kcoreaddons ki18n ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..ddbf17d00064
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,26 @@
+Index: kpackage-5.18.0/src/kpackage/packageloader.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/packageloader.cpp
++++ kpackage-5.18.0/src/kpackage/packageloader.cpp
+@@ -241,7 +241,7 @@ QList<KPluginMetaData> PackageLoader::li
+         } else {
+             //qDebug() << "Not cached";
+             // If there's no cache file, fall back to listing the directory
+-            const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories;
++            const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories | QDirIterator::FollowSymlinks;
+             const QStringList nameFilters = QStringList(QStringLiteral("metadata.desktop")) << QStringLiteral("metadata.json");
+ 
+             QDirIterator it(plugindir, nameFilters, QDir::Files, flags);
+Index: kpackage-5.18.0/src/kpackage/private/packagejobthread.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/private/packagejobthread.cpp
++++ kpackage-5.18.0/src/kpackage/private/packagejobthread.cpp
+@@ -146,7 +146,7 @@ bool indexDirectory(const QString& dir,
+ 
+     QJsonArray plugins;
+ 
+-    QDirIterator it(dir, *metaDataFiles, QDir::Files, QDirIterator::Subdirectories);
++    QDirIterator it(dir, *metaDataFiles, QDir::Files, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+     while (it.hasNext()) {
+         it.next();
+         const QString path = it.fileInfo().absoluteFilePath();
diff --git a/pkgs/development/libraries/kde-frameworks/kpackage/series b/pkgs/development/libraries/kde-frameworks/kpackage/series
new file mode 100644
index 000000000000..9b7f076efc70
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpackage/series
@@ -0,0 +1,2 @@
+allow-external-paths.patch
+qdiriterator-follow-symlinks.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kparts.nix b/pkgs/development/libraries/kde-frameworks/kparts.nix
new file mode 100644
index 000000000000..a46fa210b276
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kparts.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kconfig, kcoreaddons
+, ki18n, kiconthemes, kio, kjobwidgets, knotifications, kservice
+, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+kdeFramework {
+  name = "kparts";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kconfig kcoreaddons ki18n kiconthemes kio kjobwidgets knotifications
+    kservice ktextwidgets kwidgetsaddons kxmlgui
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kpeople.nix b/pkgs/development/libraries/kde-frameworks/kpeople.nix
new file mode 100644
index 000000000000..4ca9bc7fdbf9
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpeople.nix
@@ -0,0 +1,12 @@
+{ kdeFramework, lib, ecm, kcoreaddons, ki18n
+, kitemviews, kservice, kwidgetsaddons, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kpeople";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kcoreaddons ki18n kitemviews kservice kwidgetsaddons qtdeclarative
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kplotting.nix b/pkgs/development/libraries/kde-frameworks/kplotting.nix
new file mode 100644
index 000000000000..6eda06445dc5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kplotting.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "kplotting";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kpty.nix b/pkgs/development/libraries/kde-frameworks/kpty.nix
new file mode 100644
index 000000000000..d42f96fb92c5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kpty.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, kcoreaddons, ki18n }:
+
+kdeFramework {
+  name = "kpty";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ kcoreaddons ki18n ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kross.nix b/pkgs/development/libraries/kde-frameworks/kross.nix
new file mode 100644
index 000000000000..ae098654eb11
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kross.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kcompletion, kcoreaddons
+, kdoctools, ki18n, kiconthemes, kio, kparts, kwidgetsaddons
+, kxmlgui, qtscript
+}:
+
+kdeFramework {
+  name = "kross";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kcompletion kcoreaddons ki18n kiconthemes kio kparts kwidgetsaddons kxmlgui
+    qtscript
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/krunner.nix b/pkgs/development/libraries/kde-frameworks/krunner.nix
new file mode 100644
index 000000000000..064a89e08067
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/krunner.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kconfig, kcoreaddons
+, ki18n, kio, kservice, plasma-framework, solid
+, threadweaver
+}:
+
+kdeFramework {
+  name = "krunner";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kconfig kcoreaddons ki18n kio kservice plasma-framework solid
+    threadweaver
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kservice/default.nix b/pkgs/development/libraries/kde-frameworks/kservice/default.nix
new file mode 100644
index 000000000000..12e617a7d9af
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kservice/default.nix
@@ -0,0 +1,13 @@
+{
+  kdeFramework, lib, copyPathsToStore, ecm,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem
+}:
+
+kdeFramework {
+  name = "kservice";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  propagatedNativeBuildInputs = [ ecm ];
+  nativeBuildInputs = [ kdoctools ];
+  propagatedBuildInputs = [ kconfig kcoreaddons kcrash kdbusaddons ki18n kwindowsystem ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch b/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch
new file mode 100644
index 000000000000..cf98ffb9067f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch
@@ -0,0 +1,13 @@
+Index: kservice-5.21.0/src/sycoca/vfolder_menu.cpp
+===================================================================
+--- kservice-5.21.0.orig/src/sycoca/vfolder_menu.cpp
++++ kservice-5.21.0/src/sycoca/vfolder_menu.cpp
+@@ -415,7 +415,7 @@ VFolderMenu::absoluteDir(const QString &
+     }
+ 
+     if (!relative) {
+-        QString resolved = QDir(dir).canonicalPath();
++      QString resolved = QDir::cleanPath(dir);
+         if (!resolved.isEmpty()) {
+             dir = resolved;
+         }
diff --git a/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..cbe13b709508
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,13 @@
+Index: kservice-5.21.0/src/sycoca/kbuildsycoca.cpp
+===================================================================
+--- kservice-5.21.0.orig/src/sycoca/kbuildsycoca.cpp
++++ kservice-5.21.0/src/sycoca/kbuildsycoca.cpp
+@@ -203,7 +203,7 @@ bool KBuildSycoca::build()
+         QSet<QString> relFiles;
+         const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
+         Q_FOREACH (const QString &dir, dirs) {
+-            QDirIterator it(dir, QDirIterator::Subdirectories);
++            QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+             while (it.hasNext()) {
+                 const QString filePath = it.next();
+                 Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
diff --git a/pkgs/development/libraries/kde-frameworks/kservice/series b/pkgs/development/libraries/kde-frameworks/kservice/series
new file mode 100644
index 000000000000..3ce22dbd35a0
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kservice/series
@@ -0,0 +1,2 @@
+qdiriterator-follow-symlinks.patch
+no-canonicalize-path.patch
\ No newline at end of file
diff --git a/pkgs/development/libraries/kde-frameworks/ktexteditor.nix b/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
new file mode 100644
index 000000000000..8cd7e95b659a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, copyPathsToStore
+, ecm, perl
+, karchive, kconfig, kguiaddons, kiconthemes, kparts
+, libgit2
+, qtscript, qtxmlpatterns
+, ki18n, kio, sonnet
+}:
+
+kdeFramework {
+  name = "ktexteditor";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm perl ];
+  propagatedBuildInputs = [
+    karchive kconfig kguiaddons ki18n kiconthemes kio kparts libgit2 qtscript
+    qtxmlpatterns sonnet
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix b/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix
new file mode 100644
index 000000000000..3a1258e9a37b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kcompletion, kconfig
+, kconfigwidgets, ki18n, kiconthemes, kservice, kwindowsystem
+, sonnet
+}:
+
+kdeFramework {
+  name = "ktextwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    kcompletion kconfig kconfigwidgets ki18n kiconthemes kservice kwindowsystem
+    sonnet
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kunitconversion.nix b/pkgs/development/libraries/kde-frameworks/kunitconversion.nix
new file mode 100644
index 000000000000..136587cc682e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kunitconversion.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, ki18n }:
+
+kdeFramework {
+  name = "kunitconversion";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ ki18n ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kwallet.nix b/pkgs/development/libraries/kde-frameworks/kwallet.nix
new file mode 100644
index 000000000000..fb801f48b119
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kwallet.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, kconfig, kconfigwidgets
+, kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes
+, knotifications , kservice, kwidgetsaddons, kwindowsystem, libgcrypt
+}:
+
+kdeFramework {
+  name = "kwallet";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes
+    knotifications kservice kwidgetsaddons kwindowsystem libgcrypt
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kwayland.nix b/pkgs/development/libraries/kde-frameworks/kwayland.nix
new file mode 100644
index 000000000000..c530bf80a90e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kwayland.nix
@@ -0,0 +1,14 @@
+{ kdeFramework
+, ecm
+, wayland
+}:
+
+kdeFramework {
+  name = "kwayland";
+  nativeBuildInputs = [
+    ecm
+  ];
+  propagatedBuildInputs = [
+    wayland
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix b/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix
new file mode 100644
index 000000000000..ae34e60c4c12
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "kwidgetsaddons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kwindowsystem.nix b/pkgs/development/libraries/kde-frameworks/kwindowsystem.nix
new file mode 100644
index 000000000000..64186a30eadc
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kwindowsystem.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kwindowsystem";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtx11extras ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kxmlgui.nix b/pkgs/development/libraries/kde-frameworks/kxmlgui.nix
new file mode 100644
index 000000000000..c48fc9efdfad
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kxmlgui.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, ecm, attica, kconfig
+, kconfigwidgets, kglobalaccel, ki18n, kiconthemes, kitemviews
+, ktextwidgets, kwindowsystem, sonnet
+}:
+
+kdeFramework {
+  name = "kxmlgui";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [
+    attica kconfig kconfigwidgets kglobalaccel ki18n kiconthemes kitemviews
+    ktextwidgets kwindowsystem sonnet
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix b/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix
new file mode 100644
index 000000000000..31301875351f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix
@@ -0,0 +1,8 @@
+{ kdeFramework, lib, ecm, ki18n, kio }:
+
+kdeFramework {
+  name = "kxmlrpcclient";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ ki18n kio ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix b/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix
new file mode 100644
index 000000000000..bf3487dcb391
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, modemmanager
+}:
+
+kdeFramework {
+  name = "modemmanager-qt";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ modemmanager ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix b/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix
new file mode 100644
index 000000000000..bb5968635388
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, networkmanager
+}:
+
+kdeFramework {
+  name = "networkmanager-qt";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ networkmanager ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix b/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix
new file mode 100644
index 000000000000..42978b46992d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix
@@ -0,0 +1,14 @@
+{ kdeFramework
+, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "oxygen-icons5";
+  meta = {
+    license = lib.licenses.lgpl3Plus;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  outputs = [ "out" ];
+  nativeBuildInputs = [ ecm ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/plasma-framework.nix b/pkgs/development/libraries/kde-frameworks/plasma-framework.nix
new file mode 100644
index 000000000000..60910b0d678b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/plasma-framework.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, ecm, kactivities, karchive
+, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative
+, kdoctools, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio
+, knotifications, kpackage, kservice, kwindowsystem, kxmlgui
+, qtscript, qtx11extras
+}:
+
+kdeFramework {
+  name = "plasma-framework";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm kdoctools ];
+  propagatedBuildInputs = [
+    kactivities karchive kconfig kconfigwidgets kcoreaddons kdbusaddons
+    kdeclarative kglobalaccel kguiaddons ki18n kiconthemes kio knotifications
+    kpackage kservice kwindowsystem kxmlgui qtscript qtx11extras
+  ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/setup-hook.sh
new file mode 100644
index 000000000000..5363f4e30fdc
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/setup-hook.sh
@@ -0,0 +1,99 @@
+_ecmSetXdgDirs() {
+    addToSearchPathOnce XDG_DATA_DIRS "$1/share"
+    addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg"
+    addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg"
+}
+
+_ecmSharePaths=( \
+    "appdata" \
+    "applications" \
+    "config.cfg" \
+    "dbus-1" \
+    "desktop-directories" \
+    "doc" \
+    "icons" \
+    "kconf_update" \
+    "kservices5" \
+    "kservicetypes5" \
+    "knotifications5" \
+    "kxmlgui5" \
+    "locale" \
+    "mime" \
+    "polkit-1" \
+    "sounds" \
+    "templates" \
+    "wallpapers" \
+    )
+
+_ecmPropagateNative() {
+    for dir in ${_ecmSharePaths[@]}; do
+        if [ -d "$1/share/$dir" ]; then
+            propagateOnce propagatedNativeBuildInputs "$1"
+            if [ -z "$crossConfig" ]; then
+                propagateOnce propagatedUserEnvPkgs "$1"
+                addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
+            fi
+            break
+        fi
+    done
+}
+
+envHooks+=(_ecmSetXdgDirs _ecmPropagate)
+
+_ecmPropagate() {
+    for dir in ${_ecmSharePaths[@]}; do
+        if [ -d "$1/share/$dir" ]; then
+            propagateOnce propagatedBuildInputs "$1"
+            propagateOnce propagatedUserEnvPkgs "$1"
+            addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
+            break
+        fi
+    done
+}
+
+crossEnvHooks+=(_ecmPropagate)
+
+_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"
+}
+
+preConfigureHooks+=(_ecmConfig)
diff --git a/pkgs/development/libraries/kde-frameworks/solid.nix b/pkgs/development/libraries/kde-frameworks/solid.nix
new file mode 100644
index 000000000000..aad6e5eb601b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/solid.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, qtdeclarative
+}:
+
+kdeFramework {
+  name = "solid";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  propagatedBuildInputs = [ qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/sonnet.nix b/pkgs/development/libraries/kde-frameworks/sonnet.nix
new file mode 100644
index 000000000000..8b1cf6a2cd11
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/sonnet.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, ecm
+, hunspell
+}:
+
+kdeFramework {
+  name = "sonnet";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ ecm ];
+  buildInputs = [ hunspell ];
+}
diff --git a/pkgs/development/libraries/kde-frameworks/srcs.nix b/pkgs/development/libraries/kde-frameworks/srcs.nix
new file mode 100644
index 000000000000..5c48ece1e99e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/srcs.nix
@@ -0,0 +1,581 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  attica = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/attica-5.24.0.tar.xz";
+      sha256 = "0d368gmds7m7k5pnn625wqsij38cvxk1gkm4zv24phnk9f67v7cw";
+      name = "attica-5.24.0.tar.xz";
+    };
+  };
+  baloo = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/baloo-5.24.0.tar.xz";
+      sha256 = "1ayfdg6j9lvas17ryjdv4a0kaj6vw3bxfy2x9nadl0gkc9pak4nh";
+      name = "baloo-5.24.0.tar.xz";
+    };
+  };
+  bluez-qt = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/bluez-qt-5.24.0.tar.xz";
+      sha256 = "0gy0m7lcwwklf021l5i3v7j0cl7qz7cgvzrwpj87ix3kyw5xs80z";
+      name = "bluez-qt-5.24.0.tar.xz";
+    };
+  };
+  breeze-icons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/breeze-icons-5.24.0.tar.xz";
+      sha256 = "1dh7bijx99sdb3vn6394wmm5cq0fvvmz8h17sx4hakmbga849cx2";
+      name = "breeze-icons-5.24.0.tar.xz";
+    };
+  };
+  extra-cmake-modules = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/extra-cmake-modules-5.24.0.tar.xz";
+      sha256 = "01m12ml529pwr2sal951r5z6yb1rwbpid1y4k14nlk3xqgmdakwa";
+      name = "extra-cmake-modules-5.24.0.tar.xz";
+    };
+  };
+  frameworkintegration = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/frameworkintegration-5.24.0.tar.xz";
+      sha256 = "0brqgq05m06d98qqvyh30727f5z7hlzxgqysfhfvqzcf3x7f6yzj";
+      name = "frameworkintegration-5.24.0.tar.xz";
+    };
+  };
+  kactivities = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kactivities-5.24.0.tar.xz";
+      sha256 = "0s8g43zk6h35bq1am1nnhj0qvmhd6kz42gs8l7ybga0367jghzhf";
+      name = "kactivities-5.24.0.tar.xz";
+    };
+  };
+  kactivities-stats = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kactivities-stats-5.24.0.tar.xz";
+      sha256 = "1z3xvpifxbd05b2xaxxyiypcpid7jgjb1qpwiyjj1gnfp4rjmzpc";
+      name = "kactivities-stats-5.24.0.tar.xz";
+    };
+  };
+  kapidox = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kapidox-5.24.0.tar.xz";
+      sha256 = "19a7alvn71nxflsyi7y3hghx1iw04qqc77qy54mcxcpkiyvpsggf";
+      name = "kapidox-5.24.0.tar.xz";
+    };
+  };
+  karchive = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/karchive-5.24.0.tar.xz";
+      sha256 = "1n5nfhrfvqnrdjgjjy7arqik4fya5bp3dvxa16mlhqr19azkavzq";
+      name = "karchive-5.24.0.tar.xz";
+    };
+  };
+  kauth = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kauth-5.24.0.tar.xz";
+      sha256 = "14sjjfgl3arqyqcr77w9qhpnd8mrnh53r5rfss6bvlk26bmihs49";
+      name = "kauth-5.24.0.tar.xz";
+    };
+  };
+  kbookmarks = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kbookmarks-5.24.0.tar.xz";
+      sha256 = "10d8dnhvbrwp0dbmz93cqfdff6ir8iy3yiwaf9ihj6ma124qlyjn";
+      name = "kbookmarks-5.24.0.tar.xz";
+    };
+  };
+  kcmutils = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kcmutils-5.24.0.tar.xz";
+      sha256 = "0aws1c76s6wbp0xpr6qv6cfwq8dw82v00pkf9gy84sbxknwjnizk";
+      name = "kcmutils-5.24.0.tar.xz";
+    };
+  };
+  kcodecs = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kcodecs-5.24.0.tar.xz";
+      sha256 = "1qpzjh3qc2zz80j2bmlinipbispms14k9bmqw8v61zhi6in9z14c";
+      name = "kcodecs-5.24.0.tar.xz";
+    };
+  };
+  kcompletion = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kcompletion-5.24.0.tar.xz";
+      sha256 = "1qln0v31gn86kzwhnkijr1ydf129n32jmiybbckrp4w6hyx6xfxv";
+      name = "kcompletion-5.24.0.tar.xz";
+    };
+  };
+  kconfig = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kconfig-5.24.0.tar.xz";
+      sha256 = "1dc2i6icyigw1j6qxgdza6j2g8afh390qmxsa2a54mwl84fkfmxv";
+      name = "kconfig-5.24.0.tar.xz";
+    };
+  };
+  kconfigwidgets = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kconfigwidgets-5.24.0.tar.xz";
+      sha256 = "0v25r50gh5i984lzlv0rradghglcfqf0gsfmnkn23h87b86fm9l2";
+      name = "kconfigwidgets-5.24.0.tar.xz";
+    };
+  };
+  kcoreaddons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kcoreaddons-5.24.0.tar.xz";
+      sha256 = "06sx7by3nvaridnavj5p0bxv4nh47n708jlacfw8ydaikmd9i03h";
+      name = "kcoreaddons-5.24.0.tar.xz";
+    };
+  };
+  kcrash = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kcrash-5.24.0.tar.xz";
+      sha256 = "1lahgfwlp9b5rsl244kzp7rsl4ybv1q4qlvpv0xxz5ygssk48l0w";
+      name = "kcrash-5.24.0.tar.xz";
+    };
+  };
+  kdbusaddons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdbusaddons-5.24.0.tar.xz";
+      sha256 = "183nxqrhz4qk4qfp1w4an0scp2dvfqcaqbpg4cgbgk0z590q0pkk";
+      name = "kdbusaddons-5.24.0.tar.xz";
+    };
+  };
+  kdeclarative = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdeclarative-5.24.0.tar.xz";
+      sha256 = "00ik9q1r6y6g5rkdq96yczgrxmcg85x00lipyljvc3x6xw6bixbz";
+      name = "kdeclarative-5.24.0.tar.xz";
+    };
+  };
+  kded = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kded-5.24.0.tar.xz";
+      sha256 = "0ngpxdxb596myn5r4kjxahx195bwklq33yvgjvcbxi2clg2wccaj";
+      name = "kded-5.24.0.tar.xz";
+    };
+  };
+  kdelibs4support = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/kdelibs4support-5.24.0.tar.xz";
+      sha256 = "12sis63mq6i372bhx64x8y0pw6czrv64hdhjscx27cx65a4ir451";
+      name = "kdelibs4support-5.24.0.tar.xz";
+    };
+  };
+  kdesignerplugin = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdesignerplugin-5.24.0.tar.xz";
+      sha256 = "0i0s8pwwhwh5hyyvkv0cnj0yyv0g5bnm5xw18knv2yagiy4bvb2j";
+      name = "kdesignerplugin-5.24.0.tar.xz";
+    };
+  };
+  kdesu = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdesu-5.24.0.tar.xz";
+      sha256 = "1ivcnhgvq75xvl0w9g7m45qzallz42ijaq0n1ap09lpdfmjbnrxk";
+      name = "kdesu-5.24.0.tar.xz";
+    };
+  };
+  kdewebkit = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdewebkit-5.24.0.tar.xz";
+      sha256 = "1xq36zv7vnllhqbisl6kcna8z6qzlvy29a47g0hbzgl8rc93qskf";
+      name = "kdewebkit-5.24.0.tar.xz";
+    };
+  };
+  kdnssd = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdnssd-5.24.0.tar.xz";
+      sha256 = "01b650g031apxc3vd2m91g2fxqk9l8ap67z6rafniphfwy8i0d5m";
+      name = "kdnssd-5.24.0.tar.xz";
+    };
+  };
+  kdoctools = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kdoctools-5.24.0.tar.xz";
+      sha256 = "1r129kpq0d11b9l87cqbal6fm5ycwhsps1g3r1a7jsxz70scz4ri";
+      name = "kdoctools-5.24.0.tar.xz";
+    };
+  };
+  kemoticons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kemoticons-5.24.0.tar.xz";
+      sha256 = "0gmc52k5jb553jvzxwsq79v5y87kgav8i5qqv4bqc9yl7p866zhn";
+      name = "kemoticons-5.24.0.tar.xz";
+    };
+  };
+  kfilemetadata = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kfilemetadata-5.24.0.tar.xz";
+      sha256 = "02n9qhpr0jlwdgdbid0k34abhs3bzhlsa56ybl5dq1aib6izk1sy";
+      name = "kfilemetadata-5.24.0.tar.xz";
+    };
+  };
+  kglobalaccel = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kglobalaccel-5.24.0.tar.xz";
+      sha256 = "123v0ld1q88hbm3d0mqgq6lcivfkqh7pbz4hb4n76ab5v43qc15c";
+      name = "kglobalaccel-5.24.0.tar.xz";
+    };
+  };
+  kguiaddons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kguiaddons-5.24.0.tar.xz";
+      sha256 = "0ig96ah20ybg5rwpswj9va2klvkh2q4amwxmgy3z4niwfsm2g3ic";
+      name = "kguiaddons-5.24.0.tar.xz";
+    };
+  };
+  khtml = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/khtml-5.24.0.tar.xz";
+      sha256 = "0f19m8ycaa41p61i0j43gafn364abral8dbiqhr0qcj33nsa4134";
+      name = "khtml-5.24.0.tar.xz";
+    };
+  };
+  ki18n = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/ki18n-5.24.0.tar.xz";
+      sha256 = "0cw24spmwsqa3ppkw03cm6yjd3sfll0dbbk2ya76fd4nw9hb00dv";
+      name = "ki18n-5.24.0.tar.xz";
+    };
+  };
+  kiconthemes = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kiconthemes-5.24.0.tar.xz";
+      sha256 = "1k5zig2n6wzfyv6pc8dpas2862mxjyxxza00m31myrfw5i1a1h6m";
+      name = "kiconthemes-5.24.0.tar.xz";
+    };
+  };
+  kidletime = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kidletime-5.24.0.tar.xz";
+      sha256 = "09jsj0pj27h93nr8v46savs6b93h8frydinfr7wlijkvpsl02jb4";
+      name = "kidletime-5.24.0.tar.xz";
+    };
+  };
+  kimageformats = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kimageformats-5.24.0.tar.xz";
+      sha256 = "12mhgckmhnvcnm8k7mk15mipxrnm7i9ip7ykbjh8nxjiwyk1pmwc";
+      name = "kimageformats-5.24.0.tar.xz";
+    };
+  };
+  kinit = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kinit-5.24.0.tar.xz";
+      sha256 = "1i7l6gid5hrrfglw1c461gpjg51dwz7cl4lx7ll8vz2ha8mz4d3n";
+      name = "kinit-5.24.0.tar.xz";
+    };
+  };
+  kio = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kio-5.24.0.tar.xz";
+      sha256 = "0zncj9yf8zaylazlwvirylpk9vki3j889b1x2s0aav54vvj7vdi5";
+      name = "kio-5.24.0.tar.xz";
+    };
+  };
+  kitemmodels = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kitemmodels-5.24.0.tar.xz";
+      sha256 = "1s1p4nw1pqdzbdwvjnka17p9avf00wadr437p4f96md1lvh3sh69";
+      name = "kitemmodels-5.24.0.tar.xz";
+    };
+  };
+  kitemviews = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kitemviews-5.24.0.tar.xz";
+      sha256 = "0y3fx9hk1x27arrmwfzq783a44cs7p8dpmhxrwzh0di4mwa8jafw";
+      name = "kitemviews-5.24.0.tar.xz";
+    };
+  };
+  kjobwidgets = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kjobwidgets-5.24.0.tar.xz";
+      sha256 = "1mcvrz66xcqjgbp08zpqsf943cm462wbqm5gh719p9s25hx8hwrc";
+      name = "kjobwidgets-5.24.0.tar.xz";
+    };
+  };
+  kjs = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/kjs-5.24.0.tar.xz";
+      sha256 = "1qd5sdfrdg7id0g5mwf3ijwlfvh3g36kwnckw6kwns1nf4q6gwlz";
+      name = "kjs-5.24.0.tar.xz";
+    };
+  };
+  kjsembed = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/kjsembed-5.24.0.tar.xz";
+      sha256 = "1nx8ch8mzd1jyx8pd46364ij0bsbsclbipbgr6jm9aak3n13b0nw";
+      name = "kjsembed-5.24.0.tar.xz";
+    };
+  };
+  kmediaplayer = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/kmediaplayer-5.24.0.tar.xz";
+      sha256 = "147xrffkvkyv3h8ighc1vlwksysfrqc0g55k8zrd72l6r0kjjh0p";
+      name = "kmediaplayer-5.24.0.tar.xz";
+    };
+  };
+  knewstuff = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/knewstuff-5.24.0.tar.xz";
+      sha256 = "0xdv3wh3100vzsx8p2zihy1dvh0wzfmrjkjq71v8igwz5d291zsj";
+      name = "knewstuff-5.24.0.tar.xz";
+    };
+  };
+  knotifications = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/knotifications-5.24.0.tar.xz";
+      sha256 = "0qryp41phnpx4r9wa6rfhmnzy7nxl0ijnyrafadf2n2xb53ipkpa";
+      name = "knotifications-5.24.0.tar.xz";
+    };
+  };
+  knotifyconfig = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/knotifyconfig-5.24.0.tar.xz";
+      sha256 = "1dij841fnqia4p44x2wnpdvl8cn3nkj833y0fah50fmipjc8r70b";
+      name = "knotifyconfig-5.24.0.tar.xz";
+    };
+  };
+  kpackage = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kpackage-5.24.0.tar.xz";
+      sha256 = "03aqzkpqz3c1v4qgwfbs3ncdbapiyg7psrkhxqv3z48rklavk1ri";
+      name = "kpackage-5.24.0.tar.xz";
+    };
+  };
+  kparts = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kparts-5.24.0.tar.xz";
+      sha256 = "0z7qr93aq02i7g7cxgypx2rzlnsvbsx9cjblb0ijmad1nb8w3mix";
+      name = "kparts-5.24.0.tar.xz";
+    };
+  };
+  kpeople = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kpeople-5.24.0.tar.xz";
+      sha256 = "0iknzkj23y927xh24kw5sjxyirhy6pkmfcmmgwzd78rba8a54qp2";
+      name = "kpeople-5.24.0.tar.xz";
+    };
+  };
+  kplotting = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kplotting-5.24.0.tar.xz";
+      sha256 = "0gpypq9kh4b5s6dc7py3m117k3nbxczsfkxgxd9zxvr35kig7ya2";
+      name = "kplotting-5.24.0.tar.xz";
+    };
+  };
+  kpty = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kpty-5.24.0.tar.xz";
+      sha256 = "1ybvdzqpa53kkki9p5da0ff9x3c63rmksk7865wqwlgy8apzi2fs";
+      name = "kpty-5.24.0.tar.xz";
+    };
+  };
+  kross = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/portingAids/kross-5.24.0.tar.xz";
+      sha256 = "0f29dpmfcj173vqnmrbpvdmfmzzbfsds1lbl546qfx9a5acdpf2p";
+      name = "kross-5.24.0.tar.xz";
+    };
+  };
+  krunner = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/krunner-5.24.0.tar.xz";
+      sha256 = "0ff87ijjd47jxf6zw2ggqgngnbyx1rj59wdfgy5wbi3acws6bafl";
+      name = "krunner-5.24.0.tar.xz";
+    };
+  };
+  kservice = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kservice-5.24.0.tar.xz";
+      sha256 = "0w0nsg64d6xhgijr2vh0j5p544qi0q55jpqa9v9mv956zrrdssdk";
+      name = "kservice-5.24.0.tar.xz";
+    };
+  };
+  ktexteditor = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/ktexteditor-5.24.0.tar.xz";
+      sha256 = "1ykj1kvm7k1vxb1w235d5hp2swwdqjyp2y4c3pxbvkn999h9x5q5";
+      name = "ktexteditor-5.24.0.tar.xz";
+    };
+  };
+  ktextwidgets = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/ktextwidgets-5.24.0.tar.xz";
+      sha256 = "1q10xav2gkii6s3m31c9xvxf1988l7k2lpib6pyhgsidflmwjm02";
+      name = "ktextwidgets-5.24.0.tar.xz";
+    };
+  };
+  kunitconversion = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kunitconversion-5.24.0.tar.xz";
+      sha256 = "03dfjn4lm6sl2zcdrvw0b9irzvkyc2w2j5xixag5j8nw373742h8";
+      name = "kunitconversion-5.24.0.tar.xz";
+    };
+  };
+  kwallet = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kwallet-5.24.0.tar.xz";
+      sha256 = "0zad5h4vsvcl2xv3vxsjwh42b71xbp6x6rj8cvmw8szr2rzz9gsx";
+      name = "kwallet-5.24.0.tar.xz";
+    };
+  };
+  kwayland = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kwayland-5.24.0.tar.xz";
+      sha256 = "1h5anbqrxcl1s8kx1l53vcsfr8ifamcjqd47dk8a7lwr1ga6myq2";
+      name = "kwayland-5.24.0.tar.xz";
+    };
+  };
+  kwidgetsaddons = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kwidgetsaddons-5.24.0.tar.xz";
+      sha256 = "1kppx0ppfhnb6q6sijs2dffyar86wkkx8miqavsjsgw1l2wiymcx";
+      name = "kwidgetsaddons-5.24.0.tar.xz";
+    };
+  };
+  kwindowsystem = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kwindowsystem-5.24.0.tar.xz";
+      sha256 = "0w5ym8msl80v3q65253pdpj9f1fmb658rnndlbkrgpmm1rv1n6dz";
+      name = "kwindowsystem-5.24.0.tar.xz";
+    };
+  };
+  kxmlgui = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kxmlgui-5.24.0.tar.xz";
+      sha256 = "1qhixldhhcbklmrpjh67440h1rrzqy70h57hw6ialjdsr3pl6ihp";
+      name = "kxmlgui-5.24.0.tar.xz";
+    };
+  };
+  kxmlrpcclient = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/kxmlrpcclient-5.24.0.tar.xz";
+      sha256 = "06ap6ipzqimz1rfrcr7z8zc7idy7sg4a97dws7h52i34ms7jqnc8";
+      name = "kxmlrpcclient-5.24.0.tar.xz";
+    };
+  };
+  modemmanager-qt = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/modemmanager-qt-5.24.0.tar.xz";
+      sha256 = "0khz5bf84xxa8aqpzwb6x839xx6dbiadwqhyj7cvgha65fh2xinh";
+      name = "modemmanager-qt-5.24.0.tar.xz";
+    };
+  };
+  networkmanager-qt = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/networkmanager-qt-5.24.0.tar.xz";
+      sha256 = "11wy0ds0hqbba900ggkcxjfqc9n65xlzc3h1zv9433nn5d75v6fy";
+      name = "networkmanager-qt-5.24.0.tar.xz";
+    };
+  };
+  oxygen-icons5 = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/oxygen-icons5-5.24.0.tar.xz";
+      sha256 = "1c7spjbzk04725vv0ly7vmyvwa96mfa5ki2pm146ld4888a896wm";
+      name = "oxygen-icons5-5.24.0.tar.xz";
+    };
+  };
+  plasma-framework = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/plasma-framework-5.24.0.tar.xz";
+      sha256 = "0981vm00541dzihlr1fsax05biwp2ddpwjrmvnfysx5jagdc65cb";
+      name = "plasma-framework-5.24.0.tar.xz";
+    };
+  };
+  solid = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/solid-5.24.0.tar.xz";
+      sha256 = "00wvsxcnvhdx7ijzpcz5wny2ypkxr1drdpr4yvawgpwa678l1107";
+      name = "solid-5.24.0.tar.xz";
+    };
+  };
+  sonnet = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/sonnet-5.24.0.tar.xz";
+      sha256 = "152xz7fb1iwhb5w1n4xqvc648iaxi0inrl4kavxcsir61das1xyl";
+      name = "sonnet-5.24.0.tar.xz";
+    };
+  };
+  threadweaver = {
+    version = "5.24.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.24/threadweaver-5.24.0.tar.xz";
+      sha256 = "02g60zr9cc4bg1p90giich4n0qvqaiakz0y94qrnyj9f7fg0yksl";
+      name = "threadweaver-5.24.0.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks/threadweaver.nix b/pkgs/development/libraries/kde-frameworks/threadweaver.nix
new file mode 100644
index 000000000000..6d3dff604132
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/threadweaver.nix
@@ -0,0 +1,9 @@
+{ kdeFramework, lib
+, ecm
+}:
+
+kdeFramework {
+  name = "threadweaver";
+  nativeBuildInputs = [ ecm ];
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+}
diff --git a/pkgs/development/libraries/libebml/default.nix b/pkgs/development/libraries/libebml/default.nix
index 3bdcfeda6a5f..7b7f880ab9ed 100644
--- a/pkgs/development/libraries/libebml/default.nix
+++ b/pkgs/development/libraries/libebml/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "libebml-1.3.3";
+  name = "libebml-1.3.4";
 
   src = fetchurl {
     url = "http://dl.matroska.org/downloads/libebml/${name}.tar.bz2";
-    sha256 = "16alhwd1yz5bv3765xfn5azwk37805lg1f61195gjq8rlkd49yrm";
+    sha256 = "11zka6z9ncywyjr1gfm5cnii33ln7y3w6s86kiacchip2g7kw3f5";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libfilezilla/default.nix b/pkgs/development/libraries/libfilezilla/default.nix
index 7a039a813d8a..eb2b46629ade 100644
--- a/pkgs/development/libraries/libfilezilla/default.nix
+++ b/pkgs/development/libraries/libfilezilla/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "libfilezilla-${version}";
-  version = "0.5.3";
+  version = "0.6.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/filezilla/libfilezilla/${version}/${name}.tar.bz2";
-    sha256 = "05z9d2pi8n8yl3dbwg2nw6bcvi0zzc9hkammm1mayfh7h4akqc0i";
+    sha256 = "73c3ada6f9c5649abd93e6a3e7ecc6682d4f43248660b5506918eab76a7b901b";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix
index 9b62436ae080..5f1f6afcec12 100644
--- a/pkgs/development/libraries/libiconv/default.nix
+++ b/pkgs/development/libraries/libiconv/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch =
-    lib.optionalString (stdenv.cross.libc or null == "msvcrt")
+    lib.optionalString ((stdenv ? cross && stdenv.cross.libc == "msvcrt") || stdenv.cc.nativeLibc)
       ''
         sed '/^_GL_WARN_ON_USE (gets/d' -i srclib/stdio.in.h
       '';
diff --git a/pkgs/development/libraries/libmatroska/default.nix b/pkgs/development/libraries/libmatroska/default.nix
index 134f6b1bf270..3b3dee138a54 100644
--- a/pkgs/development/libraries/libmatroska/default.nix
+++ b/pkgs/development/libraries/libmatroska/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libebml }:
 
 stdenv.mkDerivation rec {
-  name = "libmatroska-1.4.4";
+  name = "libmatroska-1.4.5";
 
   src = fetchurl {
     url = "http://dl.matroska.org/downloads/libmatroska/${name}.tar.bz2";
-    sha256 = "1mvb54q3gag9dj0pkwci8w75gp6mm14gi85y0ld3ar1rdngsmvyk";
+    sha256 = "1g2p2phmhkp86ldd2zqx6q0s33r7d38rsfnr4wmmdr81d6j3y0kr";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/mesa-darwin/default.nix b/pkgs/development/libraries/mesa-darwin/default.nix
index af8b4e1179ce..0ae17b4d3f61 100644
--- a/pkgs/development/libraries/mesa-darwin/default.nix
+++ b/pkgs/development/libraries/mesa-darwin/default.nix
@@ -25,6 +25,8 @@ let
       libffi libvdpau
     ] ++ stdenv.lib.optionals stdenv.isDarwin [ OpenGL apple_sdk.sdk Xplugin ];
 
+    propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ OpenGL ];
+
     postUnpack = ''
       ln -s darwin $sourceRoot/configs/current
     '';
diff --git a/pkgs/development/libraries/motif/default.nix b/pkgs/development/libraries/motif/default.nix
new file mode 100644
index 000000000000..9d50fb3d3d19
--- /dev/null
+++ b/pkgs/development/libraries/motif/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig, libtool
+, xlibsWrapper, xbitmaps, libXrender, libXmu, libXt
+, expat, libjpeg, libpng, libiconv
+, flex
+, libXp, libXau
+, demoSupport ? false, autoconf, automake
+}:
+# refer to the gentoo package
+
+stdenv.mkDerivation rec {
+  name = "motif-${version}";
+  version = "2.3.6";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/motif/${name}.tar.gz";
+    sha256 = "1ksqbp0bzdw6wcrx8s4hj4ivvxmw54hz85l2xfigb87cxmmhx0gs";
+  };
+
+  buildInputs = [
+    pkgconfig libtool
+    xlibsWrapper xbitmaps libXrender libXmu libXt
+    expat libjpeg libpng libiconv
+  ] ++ stdenv.lib.optionals (!demoSupport) [ autoconf automake ];
+
+  nativeBuildInputs = [ flex ];
+
+  propagatedBuildInputs = [ libXp libXau ];
+
+  makeFlags = [ "CFLAGS=-fno-strict-aliasing" ];
+
+  patchPhase = ''
+    rm lib/Xm/Xm.h
+    echo -e '"The X.Org Foundation"\t\t\t\t\tpc' >>bindings/xmbind.alias
+  '' + stdenv.lib.optionalString (!demoSupport)
+  ''
+    sed -i -e '/^SUBDIRS/{:x;/\\$/{N;bx;};s/[ \t\n\\]*demos//;}' Makefile.am
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://motif.ics.com;
+    description = "Unix standard widget-toolkit and window-manager";
+    platforms = with platforms; linux;
+    license = with licenses; [ lgpl21 ];
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/pkgs/development/libraries/phonon/backends/gstreamer.nix b/pkgs/development/libraries/phonon/backends/gstreamer.nix
index 3f2ab6696d18..1fb542c2c5f4 100644
--- a/pkgs/development/libraries/phonon/backends/gstreamer.nix
+++ b/pkgs/development/libraries/phonon/backends/gstreamer.nix
@@ -1,13 +1,14 @@
 { stdenv, lib, fetchurl, cmake, gst_all_1, phonon, pkgconfig
-, extra-cmake-modules ? null, qtbase ? null, qtx11extras ? null, qt4 ? null
-, debug ? false }:
+, extra-cmake-modules, qtbase ? null, qtx11extras ? null, qt4 ? null
+, withQt5 ? false
+, debug ? false
+}:
 
 with lib;
 
 let
   v = "4.9.0";
   pname = "phonon-backend-gstreamer";
-  withQt5 = extra-cmake-modules != null;
 in
 
 assert withQt5 -> qtbase != null;
diff --git a/pkgs/development/libraries/phonon/backends/vlc.nix b/pkgs/development/libraries/phonon/backends/vlc.nix
index aaff26eee286..f296e34e783a 100644
--- a/pkgs/development/libraries/phonon/backends/vlc.nix
+++ b/pkgs/development/libraries/phonon/backends/vlc.nix
@@ -1,13 +1,14 @@
 { stdenv, lib, fetchurl, cmake, phonon, pkgconfig, vlc
-, extra-cmake-modules ? null, qtbase ? null, qtx11extras ? null, qt4 ? null
-, debug ? false }:
+, extra-cmake-modules, qtbase ? null, qtx11extras ? null, qt4 ? null
+, withQt5 ? false
+, debug ? false
+}:
 
 with lib;
 
 let
   v = "0.9.0";
   pname = "phonon-backend-vlc";
-  withQt5 = extra-cmake-modules != null;
 in
 
 assert withQt5 -> qtbase != null;
diff --git a/pkgs/development/libraries/phonon/default.nix b/pkgs/development/libraries/phonon/default.nix
index 3fbbccc08e30..4bbe05fea6ee 100644
--- a/pkgs/development/libraries/phonon/default.nix
+++ b/pkgs/development/libraries/phonon/default.nix
@@ -1,12 +1,12 @@
 { stdenv, lib, fetchurl, cmake, mesa, pkgconfig, libpulseaudio
-, qt4 ? null, extra-cmake-modules ? null, qtbase ? null, qttools ? null
+, qt4 ? null, extra-cmake-modules, qtbase ? null, qttools ? null
+, withQt5 ? false
 , debug ? false }:
 
 with lib;
 
 let
   v = "4.9.0";
-  withQt5 = extra-cmake-modules != null;
 in
 
 assert withQt5 -> qtbase != null;
diff --git a/pkgs/development/libraries/qt-5/5.5/default.nix b/pkgs/development/libraries/qt-5/5.5/default.nix
index 24b4c749853d..8401e9f0d3de 100644
--- a/pkgs/development/libraries/qt-5/5.5/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/default.nix
@@ -42,7 +42,7 @@ let
       inherit src;
 
       propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []);
-      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.fixQtModuleCMakeConfig self.qmakeHook ];
+      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.qmakeHook ];
 
       NIX_QT_SUBMODULE = args.NIX_QT_SUBMODULE or true;
 
@@ -113,7 +113,6 @@ let
       ];
 
       makeQtWrapper = makeSetupHook { deps = [ makeWrapper ]; } ./make-qt-wrapper.sh;
-      fixQtModuleCMakeConfig = makeSetupHook { } ./fix-qt-module-cmake-config.sh;
       qmakeHook = makeSetupHook { substitutions = { qt_dev = qtbase.dev; lndir = pkgs.xorg.lndir; }; } ./qmake-hook.sh;
 
     };
diff --git a/pkgs/development/libraries/qt-5/5.5/fix-qt-module-cmake-config.sh b/pkgs/development/libraries/qt-5/5.5/fix-qt-module-cmake-config.sh
deleted file mode 100644
index 7ca3e33b613c..000000000000
--- a/pkgs/development/libraries/qt-5/5.5/fix-qt-module-cmake-config.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-fixQtModuleCMakeConfig() {
-    local module="$1"
-    sed -e "/set(imported_location/ s@\\\${_qt5${module}_install_prefix}@${!outputLib}@" \
-        -i "${!outputDev}/lib/cmake/Qt5${module}/Qt5${module}Config.cmake"
-}
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/cmake-paths.patch b/pkgs/development/libraries/qt-5/5.5/qtbase/cmake-paths.patch
new file mode 100644
index 000000000000..63c4ab7256a6
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/cmake-paths.patch
@@ -0,0 +1,321 @@
+Index: qtbase-opensource-src-5.6.0/qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0)
+ endif()
+ !!ENDIF
+ 
+-!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND)
+-!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
+-!!ELSE
+-get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH)
+-# Use original install prefix when loaded through a
+-# cross-prefix symbolic link such as /lib -> /usr/lib.
+-get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH)
+-get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH)
+-if(_realCurr STREQUAL _realOrig)
+-    get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE)
+-else()
+-    get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
+-endif()
+-unset(_realOrig)
+-unset(_realCurr)
+-unset(_IMPORT_PREFIX)
+-!!ENDIF
+-!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
+-!!ELSE
+-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
+-!!ENDIF
+-
+ !!IF !equals(TEMPLATE, aux)
+ # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead.
+ set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)")
+@@ -59,7 +35,10 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta
+     set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    if(NOT EXISTS \"${imported_location}\")
++        set(imported_location \"@NIX_DEV@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    endif()
+ !!ELSE
+     set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ENDIF
+@@ -74,45 +53,18 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta
+         \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\"
+     )
+ 
+-!!IF !isEmpty(CMAKE_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+-!!ELSE
+-    set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+-!!ENDIF
+-    _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib})
+-    if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\")
+-        set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES
+-        \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib}
+-        )
+-    endif()
+-!!ENDIF
+ endmacro()
+ !!ENDIF
+ 
+ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
+ 
+ !!IF !no_module_headers
+-!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK)
+-    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS
+-      \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\"
+-      \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\"
+-    )
+-!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
+-    set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\"
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\"
+-    )
+-!!ELSE
+-    set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+-!!ENDIF
+-!!ELSE
+ !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
+-    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
++    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR\" \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
+ !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\"
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\"
++        \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\"
++        \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\"
+     )
+ !!ELSE
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+@@ -128,7 +80,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+ !!ENDIF
+ !!ENDIF
+-!!ENDIF
++
+ !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS)
+     include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL)
+ !!ENDIF
+@@ -253,28 +205,19 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+ 
+ !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
+ !!IF isEmpty(CMAKE_DEBUG_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
+-    if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
+-        _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" )
+-!!ELSE // CMAKE_STATIC_WINDOWS_BUILD
+     if (EXISTS
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
++        \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
+ !!ELSE
+         \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
+ !!ENDIF
+       AND EXISTS
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
++        \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ !!ELSE
+         \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ !!ENDIF
+         _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+     endif()
+ !!ENDIF // CMAKE_DEBUG_TYPE
+ !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD
+@@ -282,36 +225,23 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+ !!ENDIF // CMAKE_RELEASE_TYPE
+ 
+ !!IF !isEmpty(CMAKE_DEBUG_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-    _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" )
+-!!ELSE
+     _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+ 
+ !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
+ !!IF isEmpty(CMAKE_RELEASE_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
+-    if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
+-        _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" )
+-!!ELSE // CMAKE_STATIC_WINDOWS_BUILD
+     if (EXISTS
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
++        \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
+ !!ELSE
+         \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
+ !!ENDIF
+       AND EXISTS
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
++        \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+ !!ELSE
+         \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+ !!ENDIF
+         _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+     endif()
+ !!ENDIF // CMAKE_RELEASE_TYPE
+ !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD
+@@ -329,7 +259,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+         set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE)
+-        set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
++        set(imported_location \"@NIX_OUT@/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ !!ELSE
+         set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/qtbase/src/gui/Qt5GuiConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/gui/Qt5GuiConfigExtras.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/gui/Qt5GuiConfigExtras.cmake.in
+@@ -2,7 +2,7 @@
+ !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE)
+ 
+ !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
+-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\")
++set(Qt5Gui_EGL_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR/QtANGLE\")
+ !!ELSE
+ set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\")
+ !!ENDIF
+@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_propert
+     set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ENDIF
+ 
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
++    set(imported_implib \"@NIX_DEV@/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ !!ELSE
+     set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/qtbase/src/widgets/Qt5WidgetsConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/widgets/Qt5WidgetsConfigExtras.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/widgets/Qt5WidgetsConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic)
+     add_executable(Qt5::uic IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/corelib/Qt5CoreConfigExtras.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake)
+     add_executable(Qt5::qmake IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc)
+     add_executable(Qt5::moc IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc)
+     add_executable(Qt5::rcc IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -131,7 +131,7 @@ if (NOT TARGET Qt5::WinMain)
+ !!IF !isEmpty(CMAKE_RELEASE_TYPE)
+     set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
+ !!ENDIF
+@@ -145,7 +145,7 @@ if (NOT TARGET Qt5::WinMain)
+     set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+ 
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
+@@ -1,6 +1,6 @@
+ 
+ !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE)
+-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
++set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
+ !!ELSE
+ set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
+@@ -1,6 +1,6 @@
+ 
+ !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE)
+-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
++set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
+ !!ELSE
+ set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.6.0/src/qtbase/dbus/Qt5DBusConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.6.0.orig/qtbase/src/dbus/Qt5DBusConfigExtras.cmake.in
++++ qtbase-opensource-src-5.6.0/qtbase/src/dbus/Qt5DBusConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml)
+     add_executable(Qt5::qdbuscpp2xml IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp)
+     add_executable(Qt5::qdbusxml2cpp IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
index fcd870163074..ef64a87d0e28 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, copyPathsToStore, fixQtModuleCMakeConfig
+{ stdenv, lib, fetchurl, copyPathsToStore
 , srcs
 
 , xlibs, libX11, libxcb, libXcursor, libXext, libXrender, libXi
@@ -213,11 +213,19 @@ stdenv.mkDerivation {
     # FIXME: move to the main list on rebuild.
     ++ [gnome_vfs.out libgnomeui.out gtk GConf];
 
-  nativeBuildInputs = [ fixQtModuleCMakeConfig lndir patchelf perl pkgconfig python ];
+  nativeBuildInputs = [ lndir patchelf perl pkgconfig python ];
 
   # freetype-2.5.4 changed signedness of some struct fields
   NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
 
+  postInstall = ''
+    find "$out" -name "*.cmake" | while read file; do
+        substituteInPlace "$file" \
+            --subst-var-by NIX_OUT "$out" \
+            --subst-var-by NIX_DEV "$dev"
+    done
+  '';
+
   preFixup = ''
     # We cannot simply set these paths in configureFlags because libQtCore retains
     # references to the paths it was built with.
@@ -229,17 +237,6 @@ stdenv.mkDerivation {
     mkdir -p "$dev/share"
     moveToOutput "share/doc" "$dev"
 
-    # Move libtool archives and qmake projects
-    if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then
-        pushd "''${!outputLib}"
-        find lib -name '*.a' -o -name '*.la' -o -name '*.prl' | \
-            while read -r file; do
-                mkdir -p "''${!outputDev}/$(dirname "$file")"
-                mv "''${!outputLib}/$file" "''${!outputDev}/$file"
-            done
-        popd
-    fi
-
     # Move the QGtkStyle plugin to the gtk output
     mkdir -p "$gtk/lib/qt5/plugins/platformthemes"
     mv "$out/lib/qt5/plugins/platformthemes/libqgtk2.so" "$gtk/lib/qt5/plugins/platformthemes"
@@ -262,18 +259,16 @@ stdenv.mkDerivation {
       # Don't retain build-time dependencies like gdb and ruby.
       sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $dev/mkspecs/qconfig.pri
 
-      fixQtModuleCMakeConfig "Concurrent"
-      fixQtModuleCMakeConfig "Core"
-      fixQtModuleCMakeConfig "DBus"
-      fixQtModuleCMakeConfig "Gui"
-      fixQtModuleCMakeConfig "Network"
-      fixQtModuleCMakeConfig "OpenGL"
-      fixQtModuleCMakeConfig "OpenGLExtensions"
-      fixQtModuleCMakeConfig "PrintSupport"
-      fixQtModuleCMakeConfig "Sql"
-      fixQtModuleCMakeConfig "Test"
-      fixQtModuleCMakeConfig "Widgets"
-      fixQtModuleCMakeConfig "Xml"
+      # Move libtool archives and qmake projects
+      if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then
+          pushd "''${!outputLib}"
+          find lib -name '*.a' -o -name '*.la' -o -name '*.prl' | \
+              while read -r file; do
+                  mkdir -p "''${!outputDev}/$(dirname "$file")"
+                  mv "''${!outputLib}/$file" "''${!outputDev}/$file"
+              done
+          popd
+      fi
     '';
 
   inherit lndir;
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/series b/pkgs/development/libraries/qt-5/5.5/qtbase/series
index 2196d8383752..1dfd8ac2683c 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/series
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/series
@@ -7,3 +7,4 @@ xdg-config-dirs.patch
 nix-profiles-library-paths.patch
 compose-search-path.patch
 libressl.patch
+cmake-paths.patch
\ No newline at end of file
diff --git a/pkgs/development/libraries/qt-5/5.5/qtconnectivity.nix b/pkgs/development/libraries/qt-5/5.5/qtconnectivity.nix
index 35538c7261f1..95cd6fea79b4 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtconnectivity.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtconnectivity.nix
@@ -3,8 +3,4 @@
 qtSubmodule {
   name = "qtconnectivity";
   qtInputs = [ qtbase qtdeclarative ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Bluetooth"
-    fixQtModuleCMakeConfig "Nfc"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
index 407513f78498..328d8aee72bd 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
@@ -5,10 +5,4 @@ qtSubmodule {
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   qtInputs = [ qtbase qtsvg qtxmlpatterns ];
   nativeBuildInputs = [ python ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Qml"
-    fixQtModuleCMakeConfig "Quick"
-    fixQtModuleCMakeConfig "QuickTest"
-    fixQtModuleCMakeConfig "QuickWidgets"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtenginio.nix b/pkgs/development/libraries/qt-5/5.5/qtenginio.nix
index 503a0f7ce4f5..b860a73ef890 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtenginio.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtenginio.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtenginio";
   qtInputs = [ qtdeclarative ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Enginio"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
index bd11d4816ff3..1e134057c4b4 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtlocation";
   qtInputs = [ qtbase qtmultimedia ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Positioning"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix b/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
index 9eb68ba6b5ba..7c1cc5da07e3 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
@@ -9,8 +9,4 @@ qtSubmodule {
     pkgconfig alsaLib gstreamer gst-plugins-base libpulseaudio
   ];
   qmakeFlags = [ "GST_VERSION=1.0" ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Multimedia"
-    fixQtModuleCMakeConfig "MultimediaWidgets"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtquick1/default.nix b/pkgs/development/libraries/qt-5/5.5/qtquick1/default.nix
index 4bf92fa01473..64937b3dcd37 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtquick1/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtquick1/default.nix
@@ -4,7 +4,4 @@ qtSubmodule {
   name = "qtquick1";
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   qtInputs = [ qtscript qtsvg qtwebkit qtxmlpatterns ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Declarative"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtscript/default.nix b/pkgs/development/libraries/qt-5/5.5/qtscript/default.nix
index b81a43aeadb0..127766e2ebd6 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtscript/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtscript/default.nix
@@ -4,7 +4,4 @@ qtSubmodule {
   name = "qtscript";
   qtInputs = [ qtbase qttools ];
   patches = [ ./0001-glib-2.32.patch ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Script"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtsensors.nix b/pkgs/development/libraries/qt-5/5.5/qtsensors.nix
index 5776f45a7068..61e64dc47e4d 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtsensors.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtsensors.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtsensors";
   qtInputs = [ qtbase qtdeclarative ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Sensors"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtserialport/default.nix b/pkgs/development/libraries/qt-5/5.5/qtserialport/default.nix
index 3f409f9c0e08..32549c95344a 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtserialport/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtserialport/default.nix
@@ -9,7 +9,4 @@ qtSubmodule {
       libudev = libudev.out;
     })
   ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "SerialPort"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtsvg.nix b/pkgs/development/libraries/qt-5/5.5/qtsvg.nix
index a460d6da4c2a..b9ccac7cf933 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtsvg.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtsvg.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtsvg";
   qtInputs = [ qtbase ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "Svg"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qttools.nix b/pkgs/development/libraries/qt-5/5.5/qttools.nix
index 1472691c5254..47ebd17c08f6 100644
--- a/pkgs/development/libraries/qt-5/5.5/qttools.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qttools.nix
@@ -6,11 +6,5 @@ qtSubmodule {
   postFixup = ''
     moveToOutput "bin/qdbus" "$out"
     moveToOutput "bin/qtpaths" "$out"
-
-    fixQtModuleCMakeConfig "Designer"
-    fixQtModuleCMakeConfig "Help"
-    fixQtModuleCMakeConfig "LinguistTools"
-    fixQtModuleCMakeConfig "UiPlugin"
-    fixQtModuleCMakeConfig "UiTools"
   '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix b/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
index b441a2448d76..2e92391f4c08 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
@@ -31,8 +31,4 @@ qtSubmodule {
         };
     in optionals flashplayerFix [ dlopen-webkit-nsplugin dlopen-webkit-gtk ]
     ++ [ dlopen-webkit-udev ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "WebKit"
-    fixQtModuleCMakeConfig "WebKitWidgets"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtwebsockets.nix b/pkgs/development/libraries/qt-5/5.5/qtwebsockets.nix
index c0d0f9e7d714..fbdfbbcf0dbe 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtwebsockets.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtwebsockets.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtwebsockets";
   qtInputs = [ qtbase qtdeclarative ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "WebSockets"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtx11extras.nix b/pkgs/development/libraries/qt-5/5.5/qtx11extras.nix
index db92f1353627..a765161e2d7e 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtx11extras.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtx11extras.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtx11extras";
   qtInputs = [ qtbase ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "X11Extras"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtxmlpatterns.nix b/pkgs/development/libraries/qt-5/5.5/qtxmlpatterns.nix
index 3b22132e4c38..9a8ddbba2bd2 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtxmlpatterns.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtxmlpatterns.nix
@@ -3,7 +3,4 @@
 qtSubmodule {
   name = "qtxmlpatterns";
   qtInputs = [ qtbase ];
-  postFixup = ''
-    fixQtModuleCMakeConfig "XmlPatterns"
-  '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.6/default.nix b/pkgs/development/libraries/qt-5/5.6/default.nix
index 3cc8c51909b7..94b75f1c18b9 100644
--- a/pkgs/development/libraries/qt-5/5.6/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/default.nix
@@ -66,8 +66,6 @@ let
         mesa = pkgs.mesa_noglu;
         harfbuzz = pkgs.harfbuzz-icu;
         cups = if stdenv.isLinux then pkgs.cups else null;
-        # GNOME dependencies are not used unless gtkStyle == true
-        inherit (pkgs.gnome) libgnomeui GConf gnome_vfs;
         bison = pkgs.bison2; # error: too few arguments to function 'int yylex(...
         inherit developerBuild decryptSslTraffic;
       };
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
index 14a89f82038d..82b54ebd3a11 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
@@ -19,15 +19,11 @@
 , buildExamples ? false
 , buildTests ? false
 , developerBuild ? false
-, libgnomeui, GConf, gnome_vfs, gtk
 , decryptSslTraffic ? false
 }:
 
 let
   system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
-
-  # Search path for Gtk plugin
-  gtkLibPath = lib.makeLibraryPath [ gtk gnome_vfs libgnomeui GConf ];
 in
 
 stdenv.mkDerivation {
@@ -35,7 +31,7 @@ stdenv.mkDerivation {
   name = "qtbase-${srcs.qtbase.version}";
   inherit (srcs.qtbase) src version;
 
-  outputs = [ "dev" "out" "gtk" ];
+  outputs = [ "dev" "out" ];
 
   patches =
     copyPathsToStore (lib.readPathsFromFile ./. ./series)
@@ -127,7 +123,6 @@ stdenv.mkDerivation {
     -xcb
     -qpa xcb
     -${lib.optionalString (cups == null) "no-"}cups
-    -gtkstyle
 
     -no-eglfs
     -no-directfb
@@ -189,9 +184,7 @@ stdenv.mkDerivation {
     ++ lib.optional developerBuild gdb
     ++ lib.optional (cups != null) cups
     ++ lib.optional (mysql != null) mysql.lib
-    ++ lib.optional (postgresql != null) postgresql
-    # FIXME: move to the main list on rebuild.
-    ++ [gnome_vfs.out libgnomeui.out gtk GConf];
+    ++ lib.optional (postgresql != null) postgresql;
 
   nativeBuildInputs = [ lndir patchelf perl pkgconfig python ];
 
@@ -216,22 +209,6 @@ stdenv.mkDerivation {
     # The destination directory must exist or moveToOutput will do nothing
     mkdir -p "$dev/share"
     moveToOutput "share/doc" "$dev"
-
-    # Move the QGtkStyle plugin to the gtk output
-    mkdir -p "$gtk/lib/qt5/plugins/platformthemes"
-    mv "$out/lib/qt5/plugins/platformthemes/libqgtk2.so" "$gtk/lib/qt5/plugins/platformthemes"
-    rm "$out/lib/cmake/Qt5Gui/Qt5Gui_QGtk2ThemePlugin.cmake"
-
-    # Set RPATH for QGtkStyle plugin
-    qgtk2="$gtk/lib/qt5/plugins/platformthemes/libqgtk2.so"
-    qgtk2_RPATH="$(patchelf --print-rpath "$qgtk2")"
-    qgtk2_RPATH="$qgtk2_RPATH''${qgtk2_RPATH:+:}${gtkLibPath}"
-    patchelf "$qgtk2" \
-        --add-needed libgtk-x11-2.0.so \
-        --add-needed libgnomeui-2.so \
-        --add-needed libgnomevfs-2.so \
-        --add-needed libgconf-2.so \
-        --set-rpath "$qgtk2_RPATH"
   '';
 
   postFixup =
diff --git a/pkgs/development/libraries/qt-5/5.7/default.nix b/pkgs/development/libraries/qt-5/5.7/default.nix
new file mode 100644
index 000000000000..90bd6b0726ee
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/default.nix
@@ -0,0 +1,119 @@
+/*
+
+# Updates
+
+Before a major version update, make a copy of this directory. (We like to
+keep the old version around for a short time after major updates.) Add a
+top-level attribute to `top-level/all-packages.nix`.
+
+1. Update the URL in `maintainers/scripts/generate-qt.sh`.
+2. From the top of the Nixpkgs tree, run
+   `./maintainers/scripts/generate-qt.sh > pkgs/development/libraries/qt-5/$VERSION/srcs.nix`.
+3. Check that the new packages build correctly.
+4. Commit the changes and open a pull request.
+
+*/
+
+{ pkgs
+
+# options
+, developerBuild ? false
+, decryptSslTraffic ? false
+}:
+
+let inherit (pkgs) makeSetupHook makeWrapper stdenv; in
+
+with stdenv.lib;
+
+let
+
+  mirror = "http://download.qt.io";
+  srcs = import ./srcs.nix { inherit (pkgs) fetchurl; inherit mirror; };
+
+  qtSubmodule = args:
+    let
+      inherit (args) name;
+      version = args.version or srcs."${name}".version;
+      src = args.src or srcs."${name}".src;
+      inherit (pkgs.stdenv) mkDerivation;
+    in mkDerivation (args // {
+      name = "${name}-${version}";
+      inherit src;
+
+      propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []);
+      nativeBuildInputs =
+        (args.nativeBuildInputs or [])
+        ++ [ pkgs.perl self.qmakeHook ];
+
+      NIX_QT_SUBMODULE = args.NIX_QT_SUBMODULE or true;
+
+      outputs = args.outputs or [ "dev" "out" ];
+      setOutputFlags = args.setOutputFlags or false;
+
+      setupHook = ./setup-hook.sh;
+
+      enableParallelBuilding = args.enableParallelBuilding or true;
+
+      meta = self.qtbase.meta // (args.meta or {});
+    });
+
+  addPackages = self: with self;
+    let
+      callPackage = self.newScope { inherit qtSubmodule srcs; };
+    in {
+
+      qtbase = callPackage ./qtbase {
+        inherit (srcs.qtbase) src version;
+        mesa = pkgs.mesa_noglu;
+        harfbuzz = pkgs.harfbuzz-icu;
+        cups = if stdenv.isLinux then pkgs.cups else null;
+        # GNOME dependencies are not used unless gtkStyle == true
+        bison = pkgs.bison2; # error: too few arguments to function 'int yylex(...
+        inherit developerBuild decryptSslTraffic;
+      };
+
+      qtconnectivity = callPackage ./qtconnectivity.nix {};
+      qtdeclarative = callPackage ./qtdeclarative {};
+      qtdoc = callPackage ./qtdoc.nix {};
+      qtgraphicaleffects = callPackage ./qtgraphicaleffects.nix {};
+      qtimageformats = callPackage ./qtimageformats.nix {};
+      qtlocation = callPackage ./qtlocation.nix {};
+      qtmultimedia = callPackage ./qtmultimedia.nix {
+        inherit (pkgs.gst_all_1) gstreamer gst-plugins-base;
+      };
+      qtquickcontrols = callPackage ./qtquickcontrols.nix {};
+      qtscript = callPackage ./qtscript {};
+      qtsensors = callPackage ./qtsensors.nix {};
+      qtserialport = callPackage ./qtserialport {};
+      qtsvg = callPackage ./qtsvg.nix {};
+      qttools = callPackage ./qttools.nix {};
+      qttranslations = callPackage ./qttranslations.nix {};
+      qtwebchannel = callPackage ./qtwebchannel.nix {};
+      qtwebengine = callPackage ./qtwebengine.nix {};
+      qtwebsockets = callPackage ./qtwebsockets.nix {};
+      qtx11extras = callPackage ./qtx11extras.nix {};
+      qtxmlpatterns = callPackage ./qtxmlpatterns.nix {};
+
+      env = callPackage ../qt-env.nix {};
+      full = env "qt-${qtbase.version}" [
+        qtconnectivity qtdeclarative qtdoc qtgraphicaleffects
+        qtimageformats qtlocation qtmultimedia qtquickcontrols qtscript
+        qtsensors qtserialport qtsvg qttools qttranslations qtwebsockets
+        qtx11extras qtxmlpatterns
+      ];
+
+      makeQtWrapper =
+        makeSetupHook
+        { deps = [ makeWrapper ]; }
+        ./make-qt-wrapper.sh;
+
+      qmakeHook =
+        makeSetupHook
+        { deps = [ self.qtbase ]; }
+        ./qmake-hook.sh;
+
+    };
+
+   self = makeScope pkgs.newScope addPackages;
+
+in self
diff --git a/pkgs/development/libraries/qt-5/5.7/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.7/make-qt-wrapper.sh
new file mode 100644
index 000000000000..b0d0bec9e3f6
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/make-qt-wrapper.sh
@@ -0,0 +1,36 @@
+wrapQtProgram() {
+    local prog="$1"
+    shift
+    wrapProgram "$prog" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
+        "$@"
+}
+
+makeQtWrapper() {
+    local old="$1"
+    local new="$2"
+    shift
+    shift
+    makeWrapper "$old" "$new" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
+        "$@"
+}
+
+_makeQtWrapperSetup() {
+    # cannot use addToSearchPath because these directories may not exist yet
+    export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins"
+    export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports"
+    export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml"
+    export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share"
+    export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg"
+}
+
+prePhases+=(_makeQtWrapperSetup)
diff --git a/pkgs/development/libraries/qt-5/5.7/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.7/qmake-hook.sh
new file mode 100644
index 000000000000..696b4ea8dad3
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qmake-hook.sh
@@ -0,0 +1,42 @@
+qmakeConfigurePhase() {
+    runHook preConfigure
+
+    qmake PREFIX=$out $qmakeFlags
+
+    runHook postConfigure
+}
+
+if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
+    configurePhase=qmakeConfigurePhase
+fi
+
+_qtModuleMultioutDevsPre() {
+    # We cannot simply set these paths in configureFlags because libQtCore retains
+    # references to the paths it was built with.
+    moveToOutput "bin" "${!outputDev}"
+    moveToOutput "include" "${!outputDev}"
+
+    # The destination directory must exist or moveToOutput will do nothing
+    mkdir -p "${!outputDev}/share"
+    moveToOutput "share/doc" "${!outputDev}"
+}
+
+_qtModuleMultioutDevsPost() {
+    # Move libtool archives and qmake project files to $dev/lib
+    if [ "z${!outputLib}" != "z${!outputDev}" ]; then
+        pushd "${!outputLib}"
+        if [ -d "lib" ]; then
+            find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | \
+                while read -r -d $'\0' file; do
+                    mkdir -p "${!outputDev}/$(dirname "$file")"
+                    mv "${!outputLib}/$file" "${!outputDev}/$file"
+                done
+        fi
+        popd
+    fi
+}
+
+if [ -n "$NIX_QT_SUBMODULE" ]; then
+    preFixupHooks+=(_qtModuleMultioutDevsPre)
+    postFixupHooks+=(_qtModuleMultioutDevsPost)
+fi
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/cmake-paths.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/cmake-paths.patch
new file mode 100644
index 000000000000..6e2de0b3022a
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/cmake-paths.patch
@@ -0,0 +1,321 @@
+Index: qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
++++ qtbase-opensource-src-5.7.0/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0)
+ endif()
+ !!ENDIF
+ 
+-!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND)
+-!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
+-!!ELSE
+-get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH)
+-# Use original install prefix when loaded through a
+-# cross-prefix symbolic link such as /lib -> /usr/lib.
+-get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH)
+-get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH)
+-if(_realCurr STREQUAL _realOrig)
+-    get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE)
+-else()
+-    get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
+-endif()
+-unset(_realOrig)
+-unset(_realCurr)
+-unset(_IMPORT_PREFIX)
+-!!ENDIF
+-!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
+-!!ELSE
+-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
+-!!ENDIF
+-
+ !!IF !equals(TEMPLATE, aux)
+ # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead.
+ set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)")
+@@ -59,7 +35,10 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta
+     set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    if(NOT EXISTS \"${imported_location}\")
++        set(imported_location \"@NIX_DEV@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    endif()
+ !!ELSE
+     set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ENDIF
+@@ -74,45 +53,18 @@ macro(_populate_$${CMAKE_MODULE_NAME}_ta
+         \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\"
+     )
+ 
+-!!IF !isEmpty(CMAKE_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+-!!ELSE
+-    set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+-!!ENDIF
+-    _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib})
+-    if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\")
+-        set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES
+-        \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib}
+-        )
+-    endif()
+-!!ENDIF
+ endmacro()
+ !!ENDIF
+ 
+ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
+ 
+ !!IF !no_module_headers
+-!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK)
+-    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS
+-      \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\"
+-      \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\"
+-    )
+-!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
+-    set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\"
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\"
+-    )
+-!!ELSE
+-    set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+-!!ENDIF
+-!!ELSE
+ !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
+-    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
++    set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR\" \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
+ !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\"
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\"
++        \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\"
++        \"@NIX_DEV@/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\"
+     )
+ !!ELSE
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+@@ -128,7 +80,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+     set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
+ !!ENDIF
+ !!ENDIF
+-!!ENDIF
++
+ !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS)
+     include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL)
+ !!ENDIF
+@@ -253,28 +205,19 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+ 
+ !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
+ !!IF isEmpty(CMAKE_DEBUG_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
+-    if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
+-        _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" )
+-!!ELSE // CMAKE_STATIC_WINDOWS_BUILD
+     if (EXISTS
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
++        \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
+ !!ELSE
+         \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
+ !!ENDIF
+       AND EXISTS
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
++        \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ !!ELSE
+         \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ !!ENDIF
+         _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+     endif()
+ !!ENDIF // CMAKE_DEBUG_TYPE
+ !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD
+@@ -282,36 +225,23 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+ !!ENDIF // CMAKE_RELEASE_TYPE
+ 
+ !!IF !isEmpty(CMAKE_DEBUG_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-    _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" )
+-!!ELSE
+     _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+ 
+ !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
+ !!IF isEmpty(CMAKE_RELEASE_TYPE)
+-!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
+-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
+-    if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
+-        _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" )
+-!!ELSE // CMAKE_STATIC_WINDOWS_BUILD
+     if (EXISTS
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
++        \"@NIX_OUT@/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
+ !!ELSE
+         \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
+ !!ENDIF
+       AND EXISTS
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-        \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
++        \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+ !!ELSE
+         \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+ !!ENDIF
+         _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
+-!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
+     endif()
+ !!ENDIF // CMAKE_RELEASE_TYPE
+ !!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD
+@@ -329,7 +259,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME
+         set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE)
+-        set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
++        set(imported_location \"@NIX_OUT@/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ !!ELSE
+         set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/gui/Qt5GuiConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/gui/Qt5GuiConfigExtras.cmake.in
++++ qtbase-opensource-src-5.7.0/src/gui/Qt5GuiConfigExtras.cmake.in
+@@ -2,7 +2,7 @@
+ !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE)
+ 
+ !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
+-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\")
++set(Qt5Gui_EGL_INCLUDE_DIRS \"@NIX_DEV@/$$CMAKE_INCLUDE_DIR/QtANGLE\")
+ !!ELSE
+ set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\")
+ !!ENDIF
+@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_propert
+     set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
+ 
+ !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
++    set(imported_location \"@NIX_OUT@/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ !!ENDIF
+ 
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
++    set(imported_implib \"@NIX_DEV@/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ !!ELSE
+     set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/widgets/Qt5WidgetsConfigExtras.cmake.in
++++ qtbase-opensource-src-5.7.0/src/widgets/Qt5WidgetsConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic)
+     add_executable(Qt5::uic IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtras.cmake.in
++++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake)
+     add_executable(Qt5::qmake IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc)
+     add_executable(Qt5::moc IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc)
+     add_executable(Qt5::rcc IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -133,7 +133,7 @@ if (NOT TARGET Qt5::WinMain)
+ !!IF !isEmpty(CMAKE_RELEASE_TYPE)
+     set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
+ !!ENDIF
+@@ -147,7 +147,7 @@ if (NOT TARGET Qt5::WinMain)
+     set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+ 
+ !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
++++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
+@@ -1,6 +1,6 @@
+ 
+ !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE)
+-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
++set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
+ !!ELSE
+ set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
++++ qtbase-opensource-src-5.7.0/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
+@@ -1,6 +1,6 @@
+ 
+ !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE)
+-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
++set(_qt5_corelib_extra_includes \"@NIX_DEV@/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
+ !!ELSE
+ set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
+ !!ENDIF
+Index: qtbase-opensource-src-5.7.0/src/dbus/Qt5DBusConfigExtras.cmake.in
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/dbus/Qt5DBusConfigExtras.cmake.in
++++ qtbase-opensource-src-5.7.0/src/dbus/Qt5DBusConfigExtras.cmake.in
+@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml)
+     add_executable(Qt5::qdbuscpp2xml IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
+@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp)
+     add_executable(Qt5::qdbusxml2cpp IMPORTED)
+ 
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+-    set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
++    set(imported_location \"@NIX_DEV@/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+     set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
+ !!ENDIF
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/compose-search-path.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/compose-search-path.patch
new file mode 100644
index 000000000000..a0e344a7bc68
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/compose-search-path.patch
@@ -0,0 +1,16 @@
+Index: qtbase-opensource-src-5.7.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
++++ qtbase-opensource-src-5.7.0/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
+@@ -257,10 +257,7 @@ void TableGenerator::initPossibleLocatio
+     // the QTCOMPOSE environment variable
+     if (qEnvironmentVariableIsSet("QTCOMPOSE"))
+         m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE")));
+-    m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale"));
+-    m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale"));
+-    m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale"));
+-    m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale"));
++    m_possibleLocations.append(QStringLiteral("${libX11}/share/X11/locale"));
+     m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale"));
+     m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale"));
+ }
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/decrypt-ssl-traffic.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/decrypt-ssl-traffic.patch
new file mode 100644
index 000000000000..495db07cfbb5
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/decrypt-ssl-traffic.patch
@@ -0,0 +1,13 @@
+Index: qtbase-opensource-src-5.5.1/src/network/ssl/qsslsocket_openssl.cpp
+===================================================================
+--- qtbase-opensource-src-5.5.1.orig/src/network/ssl/qsslsocket_openssl.cpp
++++ qtbase-opensource-src-5.5.1/src/network/ssl/qsslsocket_openssl.cpp
+@@ -48,7 +48,7 @@
+ ****************************************************************************/
+ 
+ //#define QSSLSOCKET_DEBUG
+-//#define QT_DECRYPT_SSL_TRAFFIC
++#define QT_DECRYPT_SSL_TRAFFIC
+ 
+ #include "qssl_p.h"
+ #include "qsslsocket_openssl_p.h"
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
new file mode 100644
index 000000000000..94ddb21f3b60
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
@@ -0,0 +1,247 @@
+{
+  stdenv, lib, copyPathsToStore,
+  src, version,
+
+  coreutils, bison, flex, gdb, gperf, lndir, patchelf, perl, pkgconfig, python,
+  ruby,
+
+  dbus, fontconfig, freetype, glib, gtk3, harfbuzz, icu, libX11, libXcomposite,
+  libXcursor, libXext, libXi, libXrender, libinput, libjpeg, libpng, libtiff,
+  libxcb, libxkbcommon, libxml2, libxslt, openssl, pcre16, sqlite, udev,
+  xcbutil, xcbutilimage, xcbutilkeysyms, xcbutilrenderutil, xcbutilwm, xlibs,
+  zlib,
+
+  # optional dependencies
+  cups ? null, mysql ? null, postgresql ? null,
+
+  # options
+  mesaSupported, mesa,
+  buildExamples ? false,
+  buildTests ? false,
+  developerBuild ? false,
+  decryptSslTraffic ? false
+}:
+
+let
+  system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
+in
+
+stdenv.mkDerivation {
+
+  name = "qtbase-${version}";
+  inherit src version;
+
+  outputs = [ "dev" "out" ];
+
+  patches =
+    copyPathsToStore (lib.readPathsFromFile ./. ./series)
+    ++ lib.optional decryptSslTraffic ./decrypt-ssl-traffic.patch
+    ++ lib.optional mesaSupported [ ./dlopen-gl.patch ./mkspecs-libgl.patch ];
+
+  postPatch =
+    ''
+      substituteInPlace configure --replace /bin/pwd pwd
+      substituteInPlace src/corelib/global/global.pri --replace /bin/ls ${coreutils}/bin/ls
+      sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i config.tests/*/*.test -i mkspecs/*/*.conf
+
+      sed -i 's/PATHS.*NO_DEFAULT_PATH//' "src/corelib/Qt5Config.cmake.in"
+      sed -i 's/PATHS.*NO_DEFAULT_PATH//' "src/corelib/Qt5CoreMacros.cmake"
+      sed -i 's/NO_DEFAULT_PATH//' "src/gui/Qt5GuiConfigExtras.cmake.in"
+      sed -i 's/PATHS.*NO_DEFAULT_PATH//' "mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in"
+
+      substituteInPlace src/network/kernel/qdnslookup_unix.cpp \
+        --replace "@glibc@" "${stdenv.cc.libc.out}"
+      substituteInPlace src/network/kernel/qhostinfo_unix.cpp \
+        --replace "@glibc@" "${stdenv.cc.libc.out}"
+
+      substituteInPlace src/plugins/platforms/xcb/qxcbcursor.cpp \
+        --replace "@libXcursor@" "${libXcursor.out}"
+
+      substituteInPlace src/network/ssl/qsslsocket_openssl_symbols.cpp \
+        --replace "@openssl@" "${openssl.out}"
+
+      substituteInPlace src/dbus/qdbus_symbols.cpp \
+        --replace "@dbus_libs@" "${dbus.lib}"
+
+      substituteInPlace \
+        src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp \
+        --replace "@libX11@" "${libX11.out}"
+    ''
+    + lib.optionalString mesaSupported ''
+      substituteInPlace \
+        src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp \
+        --replace "@mesa_lib@" "${mesa.out}"
+      substituteInPlace mkspecs/common/linux.conf \
+        --replace "@mesa_lib@" "${mesa.out}" \
+        --replace "@mesa_inc@" "${mesa.dev or mesa}"
+    '';
+
+
+  setOutputFlags = false;
+  preConfigure = ''
+    export LD_LIBRARY_PATH="$PWD/lib:$PWD/plugins/platforms:$LD_LIBRARY_PATH"
+    export MAKEFLAGS=-j$NIX_BUILD_CORES
+
+    configureFlags+="\
+        -plugindir $out/lib/qt5/plugins \
+        -importdir $out/lib/qt5/imports \
+        -qmldir $out/lib/qt5/qml \
+        -docdir $out/share/doc/qt5"
+  '';
+
+  prefixKey = "-prefix ";
+
+  # -no-eglfs, -no-directfb, -no-linuxfb and -no-kms because of the current minimalist mesa
+  # TODO Remove obsolete and useless flags once the build will be totally mastered
+  configureFlags = ''
+    -verbose
+    -confirm-license
+    -opensource
+
+    -release
+    -shared
+    ${lib.optionalString developerBuild "-developer-build"}
+    -largefile
+    -accessibility
+    -rpath
+    -optimized-qmake
+    -strip
+    -reduce-relocations
+    -system-proxies
+    -pkg-config
+
+    -gui
+    -widgets
+    -opengl desktop
+    -qml-debug
+    -nis
+    -iconv
+    -icu
+    -pch
+    -glib
+    -xcb
+    -qpa xcb
+    -${lib.optionalString (cups == null) "no-"}cups
+
+    -no-eglfs
+    -no-directfb
+    -no-linuxfb
+    -no-kms
+
+    ${lib.optionalString (!system-x86_64) "-no-sse2"}
+    -no-sse3
+    -no-ssse3
+    -no-sse4.1
+    -no-sse4.2
+    -no-avx
+    -no-avx2
+    -no-mips_dsp
+    -no-mips_dspr2
+
+    -system-zlib
+    -system-libpng
+    -system-libjpeg
+    -system-harfbuzz
+    -system-xcb
+    -system-xkbcommon
+    -system-pcre
+    -openssl-linked
+    -dbus-linked
+    -libinput
+    -gtk
+
+    -system-sqlite
+    -${if mysql != null then "plugin" else "no"}-sql-mysql
+    -${if postgresql != null then "plugin" else "no"}-sql-psql
+
+    -make libs
+    -make tools
+    -${lib.optionalString (buildExamples == false) "no"}make examples
+    -${lib.optionalString (buildTests == false) "no"}make tests
+    -v
+  '';
+
+  # PostgreSQL autodetection fails sporadically because Qt omits the "-lpq" flag
+  # if dependency paths contain the string "pq", which can occur in the hash.
+  # To prevent these failures, we need to override PostgreSQL detection.
+  PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql.lib}/lib -lpq";
+
+  propagatedBuildInputs = [
+    dbus glib libxml2 libxslt openssl pcre16 sqlite udev zlib
+
+    # Image formats
+    libjpeg libpng libtiff
+
+    # Text rendering
+    fontconfig freetype harfbuzz icu
+
+    # X11 libs
+    libX11 libXcomposite libXext libXi libXrender libxcb libxkbcommon xcbutil
+    xcbutilimage xcbutilkeysyms xcbutilrenderutil xcbutilwm
+  ]
+  ++ lib.optional mesaSupported mesa;
+
+  buildInputs =
+    [ gtk3 libinput ]
+    ++ lib.optional developerBuild gdb
+    ++ lib.optional (cups != null) cups
+    ++ lib.optional (mysql != null) mysql.lib
+    ++ lib.optional (postgresql != null) postgresql;
+
+  nativeBuildInputs =
+    [ bison flex gperf lndir patchelf perl pkgconfig python ruby ];
+
+  # freetype-2.5.4 changed signedness of some struct fields
+  NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
+
+  postInstall = ''
+    find "$out" -name "*.cmake" | while read file; do
+        substituteInPlace "$file" \
+            --subst-var-by NIX_OUT "$out" \
+            --subst-var-by NIX_DEV "$dev"
+    done
+  '';
+
+  preFixup = ''
+    # We cannot simply set these paths in configureFlags because libQtCore retains
+    # references to the paths it was built with.
+    moveToOutput "bin" "$dev"
+    moveToOutput "include" "$dev"
+    moveToOutput "mkspecs" "$dev"
+
+    # The destination directory must exist or moveToOutput will do nothing
+    mkdir -p "$dev/share"
+    moveToOutput "share/doc" "$dev"
+  '';
+
+  postFixup =
+    ''
+      # Don't retain build-time dependencies like gdb and ruby.
+      sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $dev/mkspecs/qconfig.pri
+
+      # Move libtool archives and qmake projects
+      if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then
+          pushd "''${!outputLib}"
+          find lib -name '*.a' -o -name '*.la' -o -name '*.prl' | \
+              while read -r file; do
+                  mkdir -p "''${!outputDev}/$(dirname "$file")"
+                  mv "''${!outputLib}/$file" "''${!outputDev}/$file"
+              done
+          popd
+      fi
+    '';
+
+  inherit lndir;
+  setupHook = ./setup-hook.sh;
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = http://www.qt.io;
+    description = "A cross-platform application framework for C++";
+    license = with licenses; [ fdl13 gpl2 lgpl21 lgpl3 ];
+    maintainers = with maintainers; [ bbenoist qknight ttuegel ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-dbus.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-dbus.patch
new file mode 100644
index 000000000000..10b0b6701ddc
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-dbus.patch
@@ -0,0 +1,13 @@
+Index: qtbase-opensource-src-5.7.0/src/dbus/qdbus_symbols.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/dbus/qdbus_symbols.cpp
++++ qtbase-opensource-src-5.7.0/src/dbus/qdbus_symbols.cpp
+@@ -97,7 +97,7 @@ bool qdbus_loadLibDBus()
+ #ifdef Q_OS_WIN
+         QLatin1String("dbus-1"),
+ #endif
+-        QLatin1String("libdbus-1")
++        QLatin1String("@dbus_libs@/lib/libdbus-1")
+     };
+ 
+     lib->unload();
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gl.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gl.patch
new file mode 100644
index 000000000000..ea3073ced50a
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gl.patch
@@ -0,0 +1,17 @@
+Index: qtbase-opensource-src-5.5.1/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+===================================================================
+--- qtbase-opensource-src-5.5.1.orig/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
++++ qtbase-opensource-src-5.5.1/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+@@ -563,7 +563,12 @@ void (*QGLXContext::getProcAddress(const
+             {
+                 extern const QString qt_gl_library_name();
+ //                QLibrary lib(qt_gl_library_name());
++                // Check system library paths first
+                 QLibrary lib(QLatin1String("GL"));
++                if (!lib.load()) {
++                    // Fallback to Mesa driver
++                    lib.setFileName(QLatin1String("@mesa_lib@/lib/libGL"));
++                }
+                 glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB");
+             }
+         }
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/dlopen-gtkstyle.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gtkstyle.patch
index 755b0965cf5f..755b0965cf5f 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/dlopen-gtkstyle.patch
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-gtkstyle.patch
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-libXcursor.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-libXcursor.patch
new file mode 100644
index 000000000000..02b7efb73d22
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-libXcursor.patch
@@ -0,0 +1,17 @@
+Index: qtbase-opensource-src-5.7.0/src/plugins/platforms/xcb/qxcbcursor.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/plugins/platforms/xcb/qxcbcursor.cpp
++++ qtbase-opensource-src-5.7.0/src/plugins/platforms/xcb/qxcbcursor.cpp
+@@ -309,10 +309,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *c
+ #if defined(XCB_USE_XLIB) && !defined(QT_NO_LIBRARY)
+     static bool function_ptrs_not_initialized = true;
+     if (function_ptrs_not_initialized) {
+-        QLibrary xcursorLib(QLatin1String("Xcursor"), 1);
++        QLibrary xcursorLib(QLatin1String("@libXcursor@/lib/libXcursor"), 1);
+         bool xcursorFound = xcursorLib.load();
+         if (!xcursorFound) { // try without the version number
+-            xcursorLib.setFileName(QLatin1String("Xcursor"));
++            xcursorLib.setFileName(QLatin1String("@libXcursor@/lib/Xcursor"));
+             xcursorFound = xcursorLib.load();
+         }
+         if (xcursorFound) {
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-openssl.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-openssl.patch
new file mode 100644
index 000000000000..9891bfeac5bf
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-openssl.patch
@@ -0,0 +1,26 @@
+Index: qtbase-opensource-src-5.7.0/src/network/ssl/qsslsocket_openssl_symbols.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ qtbase-opensource-src-5.7.0/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -658,8 +658,8 @@ static QPair<QLibrary*, QLibrary*> loadO
+ #endif
+ #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so
+     // first attempt: the canonical name is libssl.so.<SHLIB_VERSION_NUMBER>
+-    libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER));
+-    libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER));
++    libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), QLatin1String(SHLIB_VERSION_NUMBER));
++    libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER));
+     if (libcrypto->load() && libssl->load()) {
+         // libssl.so.<SHLIB_VERSION_NUMBER> and libcrypto.so.<SHLIB_VERSION_NUMBER> found
+         return pair;
+@@ -676,8 +676,8 @@ static QPair<QLibrary*, QLibrary*> loadO
+     //  OS X's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third
+     //    attempt, _after_ <bundle>/Contents/Frameworks has been searched.
+     //  iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place.
+-    libssl->setFileNameAndVersion(QLatin1String("ssl"), -1);
+-    libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1);
++    libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), -1);
++    libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), -1);
+     if (libcrypto->load() && libssl->load()) {
+         // libssl.so.0 and libcrypto.so.0 found
+         return pair;
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-resolv.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-resolv.patch
new file mode 100644
index 000000000000..98a3610f5fbd
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/dlopen-resolv.patch
@@ -0,0 +1,26 @@
+Index: qtbase-opensource-src-5.7.0/src/network/kernel/qdnslookup_unix.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/network/kernel/qdnslookup_unix.cpp
++++ qtbase-opensource-src-5.7.0/src/network/kernel/qdnslookup_unix.cpp
+@@ -85,7 +85,7 @@ static bool resolveLibraryInternal()
+     if (!lib.load())
+ #endif
+     {
+-        lib.setFileName(QLatin1String("resolv"));
++        lib.setFileName(QLatin1String("@glibc@/lib/resolv"));
+         if (!lib.load())
+             return false;
+     }
+Index: qtbase-opensource-src-5.7.0/src/network/kernel/qhostinfo_unix.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/network/kernel/qhostinfo_unix.cpp
++++ qtbase-opensource-src-5.7.0/src/network/kernel/qhostinfo_unix.cpp
+@@ -100,7 +100,7 @@ static bool resolveLibraryInternal()
+     if (!lib.load())
+ #endif
+     {
+-        lib.setFileName(QLatin1String("resolv"));
++        lib.setFileName(QLatin1String("@glibc@/lib/libresolv"));
+         if (!lib.load())
+             return false;
+     }
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/libressl.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/libressl.patch
new file mode 100644
index 000000000000..4390db977a71
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/libressl.patch
@@ -0,0 +1,33 @@
+From 81494e67eccba04fc3fe554d76a9ca6fe7f2250e Mon Sep 17 00:00:00 2001
+From: hasufell <hasufell@gentoo.org>
+Date: Sat, 10 Oct 2015 01:15:01 +0200
+Subject: [PATCH] Fix compilation with libressl
+
+By additionally checking for defined(SSL_CTRL_SET_CURVES), which
+is defined in openssl, but not in libressl.
+---
+ src/network/ssl/qsslcontext_openssl.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: qtbase-opensource-src-5.7.0/src/network/ssl/qsslcontext_openssl.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/network/ssl/qsslcontext_openssl.cpp
++++ qtbase-opensource-src-5.7.0/src/network/ssl/qsslcontext_openssl.cpp
+@@ -347,7 +347,7 @@ init_context:
+ 
+     const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
+     if (!qcurves.isEmpty()) {
+-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC)
+         // Set the curves to be used
+         if (q_SSLeay() >= 0x10002000L) {
+             // SSL_CTX_ctrl wants a non-const pointer as last argument,
+@@ -360,7 +360,7 @@ init_context:
+                 sslContext->errorCode = QSslError::UnspecifiedError;
+             }
+         } else
+-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC)
+         {
+             // specific curves requested, but not possible to set -> error
+             sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/mkspecs-libgl.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/mkspecs-libgl.patch
new file mode 100644
index 000000000000..fda3d3e36533
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/mkspecs-libgl.patch
@@ -0,0 +1,15 @@
+Index: qtbase-opensource-src-5.5.1/mkspecs/common/linux.conf
+===================================================================
+--- qtbase-opensource-src-5.5.1.orig/mkspecs/common/linux.conf
++++ qtbase-opensource-src-5.5.1/mkspecs/common/linux.conf
+@@ -12,8 +12,8 @@ QMAKE_INCDIR            =
+ QMAKE_LIBDIR            =
+ QMAKE_INCDIR_X11        =
+ QMAKE_LIBDIR_X11        =
+-QMAKE_INCDIR_OPENGL     =
+-QMAKE_LIBDIR_OPENGL     =
++QMAKE_INCDIR_OPENGL     = @mesa_inc@/include
++QMAKE_LIBDIR_OPENGL     = @mesa_lib@/lib
+ QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
+ QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
+ QMAKE_INCDIR_EGL        =
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/nix-profiles-library-paths.patch
new file mode 100644
index 000000000000..ebaf3651a6d0
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/nix-profiles-library-paths.patch
@@ -0,0 +1,22 @@
+Index: qtbase-opensource-src-5.7.0/src/corelib/kernel/qcoreapplication.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/kernel/qcoreapplication.cpp
++++ qtbase-opensource-src-5.7.0/src/corelib/kernel/qcoreapplication.cpp
+@@ -2487,7 +2487,17 @@ QStringList QCoreApplication::libraryPat
+         QStringList *app_libpaths = new QStringList;
+         coreappdata()->app_libpaths.reset(app_libpaths);
+ 
++        // Add library paths derived from NIX_PROFILES.
++        const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++        const QString plugindir = QString::fromLatin1("/lib/qt5/plugins");
++        for (const QByteArray &profile: profiles) {
++            if (!profile.isEmpty()) {
++                app_libpaths->append(QFile::decodeName(profile) + plugindir);
++            }
++        }
++
+         const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
++        qunsetenv("QT_PLUGIN_PATH"); // do not propagate to child processes
+         if (!libPathEnv.isEmpty()) {
+             QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
+             for (QStringList::const_iterator it = paths.constBegin(); it != paths.constEnd(); ++it) {
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/series b/pkgs/development/libraries/qt-5/5.7/qtbase/series
new file mode 100644
index 000000000000..44e2d9040807
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/series
@@ -0,0 +1,10 @@
+dlopen-resolv.patch
+tzdir.patch
+dlopen-libXcursor.patch
+dlopen-openssl.patch
+dlopen-dbus.patch
+xdg-config-dirs.patch
+nix-profiles-library-paths.patch
+compose-search-path.patch
+libressl.patch
+cmake-paths.patch
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.7/qtbase/setup-hook.sh
new file mode 100644
index 000000000000..6d8989281eba
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/setup-hook.sh
@@ -0,0 +1,171 @@
+addToSearchPathOnceWithCustomDelimiter() {
+    local delim="$1"
+    local search="$2"
+    local target="$3"
+    local dirs
+    local exported
+    IFS="$delim" read -a dirs <<< "${!search}"
+    local canonical
+    if canonical=$(readlink -e "$target"); then
+        for dir in ${dirs[@]}; do
+            if [ "z$dir" == "z$canonical" ]; then exported=1; fi
+        done
+        if [ -z $exported ]; then
+            eval "export ${search}=\"${!search}${!search:+$delim}$canonical\""
+        fi
+    fi
+}
+
+addToSearchPathOnce() {
+    addToSearchPathOnceWithCustomDelimiter ':' "$@"
+}
+
+propagateOnce() {
+    addToSearchPathOnceWithCustomDelimiter ' ' "$@"
+}
+
+_qtPropagate() {
+    for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
+        if [ -d "$1/$dir" ]; then
+            propagateOnce propagatedBuildInputs "$1"
+            break
+        fi
+    done
+    addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
+    addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
+    addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
+}
+
+crossEnvHooks+=(_qtPropagate)
+
+_qtPropagateNative() {
+    for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
+        if [ -d "$1/$dir" ]; then
+            propagateOnce propagatedNativeBuildInputs "$1"
+            break
+        fi
+    done
+    if [ -z "$crossConfig" ]; then
+        addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
+        addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
+        addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
+    fi
+}
+
+envHooks+=(_qtPropagateNative)
+
+_qtMultioutDevs() {
+    # This is necessary whether the package is a Qt module or not
+    moveToOutput "mkspecs" "${!outputDev}"
+}
+
+preFixupHooks+=(_qtMultioutDevs)
+
+if [[ -z "$NIX_QT_PIC" ]]; then
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE${NIX_CFLAGS_COMPILE:+ }-fPIC"
+    export NIX_QT_PIC=1
+fi
+
+_qtSetCMakePrefix() {
+    export CMAKE_PREFIX_PATH="$NIX_QT5_TMP${CMAKE_PREFIX_PATH:+:}${CMAKE_PREFIX_PATH}"
+}
+
+_qtRmTmp() {
+    if [ -z "$NIX_QT_SUBMODULE" ]; then
+        rm -fr "$NIX_QT5_TMP"
+    else
+        cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read file; do
+            if [ ! -d "$NIX_QT5_TMP/$file" ]; then
+                rm -f "$NIX_QT5_TMP/$file"
+            fi
+        done
+
+        cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read dir; do
+            if [ -d "$NIX_QT5_TMP/$dir" ]; then
+                rmdir --ignore-fail-on-non-empty -p "$NIX_QT5_TMP/$dir"
+            fi
+        done
+
+        rm "$NIX_QT5_TMP/nix-support/qt-inputs"
+    fi
+}
+
+_qtSetQmakePath() {
+    export PATH="$NIX_QT5_TMP/bin${PATH:+:}$PATH"
+}
+
+if [ -z "$NIX_QT5_TMP" ]; then
+    if [ -z "$NIX_QT_SUBMODULE" ]; then
+        NIX_QT5_TMP=$(mktemp -d)
+    else
+        NIX_QT5_TMP=$out
+    fi
+    postInstallHooks+=(_qtRmTmp)
+
+    mkdir -p "$NIX_QT5_TMP/nix-support"
+    for subdir in bin include lib mkspecs share; do
+        mkdir "$NIX_QT5_TMP/$subdir"
+        echo "$subdir/" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+    done
+
+    postHooks+=(_qtSetCMakePrefix)
+
+    cp "@dev@/bin/qmake" "$NIX_QT5_TMP/bin"
+    echo "bin/qmake" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+
+    cat >"$NIX_QT5_TMP/bin/qt.conf" <<EOF
+[Paths]
+Prefix = $NIX_QT5_TMP
+Plugins = lib/qt5/plugins
+Imports = lib/qt5/imports
+Qml2Imports = lib/qt5/qml
+Documentation = share/doc/qt5
+EOF
+    echo "bin/qt.conf" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+
+    export QMAKE="$NIX_QT5_TMP/bin/qmake"
+
+    # Set PATH to find qmake first in a preConfigure hook
+    # It must run after all the envHooks!
+    preConfigureHooks+=(_qtSetQmakePath)
+fi
+
+qt5LinkModuleDir() {
+    if [ -d "$1/$2" ]; then
+        @lndir@/bin/lndir -silent "$1/$2" "$NIX_QT5_TMP/$2"
+        find "$1/$2" -printf "$2/%P\n" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+    fi
+}
+
+NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
+NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
+
+_qtLinkAllModules() {
+    IFS=: read -a modules <<< $NIX_QT5_MODULES
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "lib"
+    done
+
+    IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "bin"
+        qt5LinkModuleDir "$module" "include"
+        qt5LinkModuleDir "$module" "lib"
+        qt5LinkModuleDir "$module" "mkspecs"
+        qt5LinkModuleDir "$module" "share"
+    done
+}
+
+preConfigureHooks+=(_qtLinkAllModules)
+
+_qtFixCMakePaths() {
+    find "${!outputLib}" -name "*.cmake" | while read file; do
+        substituteInPlace "$file" \
+            --subst-var-by NIX_OUT "${!outputLib}" \
+            --subst-var-by NIX_DEV "${!outputDev}"
+    done
+}
+
+if [ -n "$NIX_QT_SUBMODULE" ]; then
+    postInstallHooks+=(_qtFixCMakePaths)
+fi
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/tzdir.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/tzdir.patch
new file mode 100644
index 000000000000..f4056dd9cc97
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/tzdir.patch
@@ -0,0 +1,40 @@
+Index: qtbase-opensource-src-5.7.0/src/corelib/tools/qtimezoneprivate_tz.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/tools/qtimezoneprivate_tz.cpp
++++ qtbase-opensource-src-5.7.0/src/corelib/tools/qtimezoneprivate_tz.cpp
+@@ -68,7 +68,10 @@ typedef QHash<QByteArray, QTzTimeZone> Q
+ // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+ static QTzTimeZoneHash loadTzTimeZones()
+ {
+-    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
++    QString path = qgetenv("TZDIR");
++    path += "/zone.tab";
++    if (!QFile::exists(path))
++        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
+     if (!QFile::exists(path))
+         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+ 
+@@ -566,12 +569,18 @@ void QTzTimeZonePrivate::init(const QByt
+         if (!tzif.open(QIODevice::ReadOnly))
+             return;
+     } else {
+-        // Open named tz, try modern path first, if fails try legacy path
+-        tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
++        // Try TZDIR first
++        QString zoneinfoDir = qgetenv("TZDIR");
++        zoneinfoDir += "/" + QString::fromLocal8Bit(ianaId);
++        tzif.setFileName(zoneinfoDir);
+         if (!tzif.open(QIODevice::ReadOnly)) {
+-            tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId));
+-            if (!tzif.open(QIODevice::ReadOnly))
+-                return;
++            // Open named tz, try modern path first, if fails try legacy path
++            tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
++            if (!tzif.open(QIODevice::ReadOnly)) {
++                tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId));
++                if (!tzif.open(QIODevice::ReadOnly))
++                    return;
++            }
+         }
+     }
+ 
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/xdg-config-dirs.patch b/pkgs/development/libraries/qt-5/5.7/qtbase/xdg-config-dirs.patch
new file mode 100644
index 000000000000..1f2f316c5b26
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/xdg-config-dirs.patch
@@ -0,0 +1,41 @@
+Index: qtbase-opensource-src-5.7.0/src/corelib/io/qsettings.cpp
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/io/qsettings.cpp
++++ qtbase-opensource-src-5.7.0/src/corelib/io/qsettings.cpp
+@@ -1161,6 +1161,23 @@ QConfFileSettingsPrivate::QConfFileSetti
+         confFiles[F_System | F_Application].reset(QConfFile::fromName(systemPath + appFile, false));
+     confFiles[F_System | F_Organization].reset(QConfFile::fromName(systemPath + orgFile, false));
+ 
++#if !defined(Q_OS_WIN)
++    // Add directories specified in $XDG_CONFIG_DIRS
++    const QString pathEnv = QString::fromLocal8Bit(getenv("XDG_CONFIG_DIRS"));
++    if (!pathEnv.isEmpty()) {
++        const QStringList pathEntries = pathEnv.split(QLatin1Char(':'), QString::SkipEmptyParts);
++        if (!pathEntries.isEmpty()) {
++            int j = 4; // This is the number of confFiles set above -- we need to start adding $XDG_CONFIG_DIRS after those.
++            for (int k = 0; k < pathEntries.size() && j < NumConfFiles - 1; ++k) {
++                const QString& path = pathEntries.at(k);
++                if (!application.isEmpty())
++                    confFiles[j++].reset(QConfFile::fromName(path + QDir::separator() + appFile, false));
++                confFiles[j++].reset(QConfFile::fromName(path + QDir::separator() + orgFile, false));
++            }
++        }
++    }
++#endif
++
+     for (i = 0; i < NumConfFiles; ++i) {
+         if (confFiles[i]) {
+             spec = i;
+Index: qtbase-opensource-src-5.7.0/src/corelib/io/qsettings_p.h
+===================================================================
+--- qtbase-opensource-src-5.7.0.orig/src/corelib/io/qsettings_p.h
++++ qtbase-opensource-src-5.7.0/src/corelib/io/qsettings_p.h
+@@ -246,7 +246,7 @@ public:
+         F_Organization = 0x1,
+         F_User = 0x0,
+         F_System = 0x2,
+-        NumConfFiles = 4
++        NumConfFiles = 40 // HACK: increase NumConfFiles from 4 to 40 in order to accommodate more paths in $XDG_CONFIG_DIRS -- ellis
+     };
+ 
+     QSettings::Format format;
diff --git a/pkgs/development/libraries/qt-5/5.7/qtconnectivity.nix b/pkgs/development/libraries/qt-5/5.7/qtconnectivity.nix
new file mode 100644
index 000000000000..95cd6fea79b4
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtconnectivity.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtconnectivity";
+  qtInputs = [ qtbase qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix
new file mode 100644
index 000000000000..328d8aee72bd
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix
@@ -0,0 +1,8 @@
+{ qtSubmodule, lib, copyPathsToStore, python, qtbase, qtsvg, qtxmlpatterns }:
+
+qtSubmodule {
+  name = "qtdeclarative";
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  qtInputs = [ qtbase qtsvg qtxmlpatterns ];
+  nativeBuildInputs = [ python ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtdeclarative/nix-profiles-import-paths.patch b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/nix-profiles-import-paths.patch
new file mode 100644
index 000000000000..06b244b974ff
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/nix-profiles-import-paths.patch
@@ -0,0 +1,20 @@
+Index: qtdeclarative-opensource-src-5.5.1/src/qml/qml/qqmlimport.cpp
+===================================================================
+--- qtdeclarative-opensource-src-5.5.1.orig/src/qml/qml/qqmlimport.cpp
++++ qtdeclarative-opensource-src-5.5.1/src/qml/qml/qqmlimport.cpp
+@@ -1549,6 +1549,15 @@ QQmlImportDatabase::QQmlImportDatabase(Q
+     QString installImportsPath =  QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
+     addImportPath(installImportsPath);
+ 
++    // Add library paths derived from NIX_PROFILES.
++    const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++    const QString qmldir = QString::fromLatin1("/lib/qt5/qml");
++    Q_FOREACH (const QByteArray &profile, profiles) {
++        if (!profile.isEmpty()) {
++            addImportPath(QFile::decodeName(profile) + qmldir);
++        }
++    }
++
+     // env import paths
+     QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH");
+     if (!envImportPath.isEmpty()) {
diff --git a/pkgs/development/libraries/qt-5/5.7/qtdeclarative/series b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/series
new file mode 100644
index 000000000000..7dbe197c56e0
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/series
@@ -0,0 +1 @@
+nix-profiles-import-paths.patch
diff --git a/pkgs/development/libraries/qt-5/5.7/qtdoc.nix b/pkgs/development/libraries/qt-5/5.7/qtdoc.nix
new file mode 100644
index 000000000000..578ea6ba0b22
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtdoc.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtdoc";
+  qtInputs = [ qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtgraphicaleffects.nix b/pkgs/development/libraries/qt-5/5.7/qtgraphicaleffects.nix
new file mode 100644
index 000000000000..3273f12eb830
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtgraphicaleffects.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtgraphicaleffects";
+  qtInputs = [ qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtimageformats.nix b/pkgs/development/libraries/qt-5/5.7/qtimageformats.nix
new file mode 100644
index 000000000000..03d0fffbe80e
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtimageformats.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase }:
+
+qtSubmodule {
+  name = "qtimageformats";
+  qtInputs = [ qtbase ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtlocation.nix b/pkgs/development/libraries/qt-5/5.7/qtlocation.nix
new file mode 100644
index 000000000000..1e134057c4b4
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtlocation.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase, qtmultimedia }:
+
+qtSubmodule {
+  name = "qtlocation";
+  qtInputs = [ qtbase qtmultimedia ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtmultimedia.nix b/pkgs/development/libraries/qt-5/5.7/qtmultimedia.nix
new file mode 100644
index 000000000000..7c1cc5da07e3
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtmultimedia.nix
@@ -0,0 +1,12 @@
+{ qtSubmodule, qtbase, qtdeclarative, pkgconfig
+, alsaLib, gstreamer, gst-plugins-base, libpulseaudio
+}:
+
+qtSubmodule {
+  name = "qtmultimedia";
+  qtInputs = [ qtbase qtdeclarative ];
+  buildInputs = [
+    pkgconfig alsaLib gstreamer gst-plugins-base libpulseaudio
+  ];
+  qmakeFlags = [ "GST_VERSION=1.0" ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtquickcontrols.nix b/pkgs/development/libraries/qt-5/5.7/qtquickcontrols.nix
new file mode 100644
index 000000000000..93a864621b82
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtquickcontrols.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtquickcontrols";
+  qtInputs = [ qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtscript/0001-glib-2.32.patch b/pkgs/development/libraries/qt-5/5.7/qtscript/0001-glib-2.32.patch
new file mode 100644
index 000000000000..887e107b6c1b
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtscript/0001-glib-2.32.patch
@@ -0,0 +1,25 @@
+From abd80356449bb36c8adcc5c9ca1df6b47715d265 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 23 Aug 2015 09:13:34 -0500
+Subject: [PATCH] glib-2.32
+
+---
+ src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
+index 1f6d25e..087c3fb 100644
+--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
+@@ -81,7 +81,7 @@
+ #include <pthread.h>
+ #elif PLATFORM(GTK)
+ #include <wtf/gtk/GOwnPtr.h>
+-typedef struct _GMutex GMutex;
++typedef union _GMutex GMutex;
+ typedef struct _GCond GCond;
+ #endif
+ 
+-- 
+2.5.0
+
diff --git a/pkgs/development/libraries/qt-5/5.7/qtscript/default.nix b/pkgs/development/libraries/qt-5/5.7/qtscript/default.nix
new file mode 100644
index 000000000000..127766e2ebd6
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtscript/default.nix
@@ -0,0 +1,7 @@
+{ qtSubmodule, qtbase, qttools }:
+
+qtSubmodule {
+  name = "qtscript";
+  qtInputs = [ qtbase qttools ];
+  patches = [ ./0001-glib-2.32.patch ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtsensors.nix b/pkgs/development/libraries/qt-5/5.7/qtsensors.nix
new file mode 100644
index 000000000000..61e64dc47e4d
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtsensors.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtsensors";
+  qtInputs = [ qtbase qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtserialport/0001-dlopen-serialport-udev.patch b/pkgs/development/libraries/qt-5/5.7/qtserialport/0001-dlopen-serialport-udev.patch
new file mode 100644
index 000000000000..3a813dc80074
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtserialport/0001-dlopen-serialport-udev.patch
@@ -0,0 +1,28 @@
+From d81c2c870b9bea8fb8e6b85baefb06542f568338 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 23 Aug 2015 09:16:02 -0500
+Subject: [PATCH] dlopen serialport udev
+
+---
+ src/serialport/qtudev_p.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/serialport/qtudev_p.h b/src/serialport/qtudev_p.h
+index 6f2cabd..81b9849 100644
+--- a/src/serialport/qtudev_p.h
++++ b/src/serialport/qtudev_p.h
+@@ -105,9 +105,9 @@ inline QFunctionPointer resolveSymbol(QLibrary *udevLibrary, const char *symbolN
+ inline bool resolveSymbols(QLibrary *udevLibrary)
+ {
+     if (!udevLibrary->isLoaded()) {
+-        udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 1);
++        udevLibrary->setFileNameAndVersion(QStringLiteral("@libudev@/lib/libudev"), 1);
+         if (!udevLibrary->load()) {
+-            udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 0);
++            udevLibrary->setFileNameAndVersion(QStringLiteral("@libudev@/lib/libudev"), 0);
+             if (!udevLibrary->load()) {
+                 qWarning("Failed to load the library: %s, supported version(s): %i and %i", qPrintable(udevLibrary->fileName()), 1, 0);
+                 return false;
+-- 
+2.5.0
+
diff --git a/pkgs/development/libraries/qt-5/5.7/qtserialport/default.nix b/pkgs/development/libraries/qt-5/5.7/qtserialport/default.nix
new file mode 100644
index 000000000000..32549c95344a
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtserialport/default.nix
@@ -0,0 +1,12 @@
+{ qtSubmodule, qtbase, substituteAll, libudev }:
+
+qtSubmodule {
+  name = "qtserialport";
+  qtInputs = [ qtbase ];
+  patches = [
+    (substituteAll {
+      src = ./0001-dlopen-serialport-udev.patch;
+      libudev = libudev.out;
+    })
+  ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtsvg.nix b/pkgs/development/libraries/qt-5/5.7/qtsvg.nix
new file mode 100644
index 000000000000..b9ccac7cf933
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtsvg.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase }:
+
+qtSubmodule {
+  name = "qtsvg";
+  qtInputs = [ qtbase ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qttools.nix b/pkgs/development/libraries/qt-5/5.7/qttools.nix
new file mode 100644
index 000000000000..4aeaea729a25
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qttools.nix
@@ -0,0 +1,10 @@
+{ qtSubmodule, qtbase, qtdeclarative }:
+
+qtSubmodule {
+  name = "qttools";
+  qtInputs = [ qtbase qtdeclarative ];
+  postFixup = ''
+    moveToOutput "bin/qdbus" "$out"
+    moveToOutput "bin/qtpaths" "$out"
+  '';
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qttranslations.nix b/pkgs/development/libraries/qt-5/5.7/qttranslations.nix
new file mode 100644
index 000000000000..50fc8cf6826a
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qttranslations.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qttools }:
+
+qtSubmodule {
+  name = "qttranslations";
+  qtInputs = [ qttools ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtwebchannel.nix b/pkgs/development/libraries/qt-5/5.7/qtwebchannel.nix
new file mode 100644
index 000000000000..fd7a3c52026e
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtwebchannel.nix
@@ -0,0 +1,7 @@
+{ qtSubmodule, qtbase, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtwebchannel";
+  qtInputs = [ qtbase qtdeclarative ];
+}
+
diff --git a/pkgs/development/libraries/qt-5/5.7/qtwebengine.nix b/pkgs/development/libraries/qt-5/5.7/qtwebengine.nix
new file mode 100644
index 000000000000..a433976dad1f
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtwebengine.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtquickcontrols, qtlocation, qtwebchannel }:
+
+qtSubmodule {
+  name = "qtwebengine";
+  qtInputs = [ qtquickcontrols qtlocation qtwebchannel ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtwebsockets.nix b/pkgs/development/libraries/qt-5/5.7/qtwebsockets.nix
new file mode 100644
index 000000000000..fbdfbbcf0dbe
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtwebsockets.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase, qtdeclarative }:
+
+qtSubmodule {
+  name = "qtwebsockets";
+  qtInputs = [ qtbase qtdeclarative ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtx11extras.nix b/pkgs/development/libraries/qt-5/5.7/qtx11extras.nix
new file mode 100644
index 000000000000..a765161e2d7e
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtx11extras.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase }:
+
+qtSubmodule {
+  name = "qtx11extras";
+  qtInputs = [ qtbase ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/qtxmlpatterns.nix b/pkgs/development/libraries/qt-5/5.7/qtxmlpatterns.nix
new file mode 100644
index 000000000000..9a8ddbba2bd2
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/qtxmlpatterns.nix
@@ -0,0 +1,6 @@
+{ qtSubmodule, qtbase }:
+
+qtSubmodule {
+  name = "qtxmlpatterns";
+  qtInputs = [ qtbase ];
+}
diff --git a/pkgs/development/libraries/qt-5/5.7/setup-hook.sh b/pkgs/development/libraries/qt-5/5.7/setup-hook.sh
new file mode 100644
index 000000000000..e41433c11386
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/setup-hook.sh
@@ -0,0 +1,2 @@
+NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
+NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
diff --git a/pkgs/development/libraries/qt-5/5.7/srcs.nix b/pkgs/development/libraries/qt-5/5.7/srcs.nix
new file mode 100644
index 000000000000..38334fa77f18
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.7/srcs.nix
@@ -0,0 +1,301 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  qt3d = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qt3d-opensource-src-5.7.0.tar.xz";
+      sha256 = "0a9y4fxm4xmdl5hsv4hfvxcw7jmshy0mwd4j1r2ylqdmg4bql958";
+      name = "qt3d-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtactiveqt = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtactiveqt-opensource-src-5.7.0.tar.xz";
+      sha256 = "149wj6a5i35k750129kz77y4r8q3hpxqzn1c676fcn9wpmfhay4v";
+      name = "qtactiveqt-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtandroidextras = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtandroidextras-opensource-src-5.7.0.tar.xz";
+      sha256 = "1caimhfyag96v98j1b07pfzjl5inhsyfi9kxzy9nj0pkvpjdgi4g";
+      name = "qtandroidextras-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtbase = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtbase-opensource-src-5.7.0.tar.xz";
+      sha256 = "0ip6xnizsn269r4s1nq9lkx8cdxkjqr1fidwrj3sa8xb7h96syry";
+      name = "qtbase-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtcanvas3d = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtcanvas3d-opensource-src-5.7.0.tar.xz";
+      sha256 = "15xxwciyiy8rwrwgb7bgcbxdiiaba3l4cxxm7rdiqmhs9kyv6wbq";
+      name = "qtcanvas3d-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtcharts = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtcharts-opensource-src-5.7.0.tar.xz";
+      sha256 = "0hsj5m9in4w9wzyvbs76v7zc67n9ja641ljc5vgfpbn7fmrsij1b";
+      name = "qtcharts-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtconnectivity = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtconnectivity-opensource-src-5.7.0.tar.xz";
+      sha256 = "00r7lc1w3snfp2qfqmviqzv0cw16zd8m1sfpvxvpl65yqmzcli4q";
+      name = "qtconnectivity-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtdatavis3d = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtdatavis3d-opensource-src-5.7.0.tar.xz";
+      sha256 = "18p82vh5s9bdshmxxkh7r9482i5vaih8nfya9f81l8ff7lw7lpcs";
+      name = "qtdatavis3d-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtdeclarative = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtdeclarative-opensource-src-5.7.0.tar.xz";
+      sha256 = "1x7rij423g5chlfd2kix54f393vxwjvdfsn1c7sybqmfycwn5pl6";
+      name = "qtdeclarative-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtdeclarative-render2d = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtdeclarative-render2d-opensource-src-5.7.0.tar.xz";
+      sha256 = "1qf893i7z2iyjpqpaxfhji4cgzlmpgh0w3vdqarpn51vcn7jj4q6";
+      name = "qtdeclarative-render2d-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtdoc = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtdoc-opensource-src-5.7.0.tar.xz";
+      sha256 = "0d7c7137jvxlwl91c2hh33l4falmjvkmsy1f7lyi73x6nnqzdz8i";
+      name = "qtdoc-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtgamepad = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtgamepad-opensource-src-5.7.0.tar.xz";
+      sha256 = "0g36nlnnq19p9svl6pvklxybpwig7r7z4hw0d5dwc2id02ygg62q";
+      name = "qtgamepad-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtgraphicaleffects = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtgraphicaleffects-opensource-src-5.7.0.tar.xz";
+      sha256 = "1rwdjg5mk6xpadmxfq64xfp573zp5lrj9illb9105ra5wff565n8";
+      name = "qtgraphicaleffects-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtimageformats = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtimageformats-opensource-src-5.7.0.tar.xz";
+      sha256 = "1rb27x7i2pmvsck6wax2cg31gqpzaakciy45wm5l3lcl86j48czg";
+      name = "qtimageformats-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtlocation = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtlocation-opensource-src-5.7.0.tar.xz";
+      sha256 = "0rd898gndn41jrp78203lxd94ybfv693l0qg0myag4r46ikk69vh";
+      name = "qtlocation-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtmacextras = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtmacextras-opensource-src-5.7.0.tar.xz";
+      sha256 = "1p439sqnchrypggaqkfq3rvfk7xmvqgck4nhwv762jk3kgp48ccq";
+      name = "qtmacextras-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtmultimedia = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtmultimedia-opensource-src-5.7.0.tar.xz";
+      sha256 = "0ndmhiflmyr144nq8drd5njsdi282ixsm4730q5n0ji2v9dp1bh5";
+      name = "qtmultimedia-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtpurchasing = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtpurchasing-opensource-src-5.7.0.tar.xz";
+      sha256 = "1db44q3d02nhmrh0fd239n2nsm74myac8saa6jqx1pcap4y4llby";
+      name = "qtpurchasing-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtquickcontrols = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtquickcontrols-opensource-src-5.7.0.tar.xz";
+      sha256 = "0cpcrmz9n5b4bgmshmk093lirl9xwqb23inchnai1zqg21vrmqfq";
+      name = "qtquickcontrols-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtquickcontrols2 = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtquickcontrols2-opensource-src-5.7.0.tar.xz";
+      sha256 = "0i8h933vhvx1bmniqdx0idg6vk82w9byd3dq0bb2phwjg5vv1xb3";
+      name = "qtquickcontrols2-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtscript = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtscript-opensource-src-5.7.0.tar.xz";
+      sha256 = "0040890p5ilyrmcpndz1hhp08x2ms5gw4lp4n5iax2a957yy2i4w";
+      name = "qtscript-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtscxml = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtscxml-opensource-src-5.7.0.tar.xz";
+      sha256 = "1waidk96vp9510g94fry0sv1vm2lgzgpwybf6c2xybcsdkbi62rp";
+      name = "qtscxml-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtsensors = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtsensors-opensource-src-5.7.0.tar.xz";
+      sha256 = "1gii6wg2xd3bkb86y5hgpmwcpl04xav030zscpl6fhscl9kcqg98";
+      name = "qtsensors-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtserialbus = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtserialbus-opensource-src-5.7.0.tar.xz";
+      sha256 = "0f2xq6fm8lmvd88lc3l37kybqp4wqp71kdch14bwz79y7777lhrc";
+      name = "qtserialbus-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtserialport = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtserialport-opensource-src-5.7.0.tar.xz";
+      sha256 = "0rc2l14s59qskp16wqlkizfai32s41qlm7a86r3qahx28gc51qaw";
+      name = "qtserialport-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtsvg = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtsvg-opensource-src-5.7.0.tar.xz";
+      sha256 = "10fqrlqkiq83xhx79g8d2sjy7hjdnp28067z8f4byj7db81rzy51";
+      name = "qtsvg-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qttools = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qttools-opensource-src-5.7.0.tar.xz";
+      sha256 = "004m9l7bgh7qnncbyl3d5fkggdrqx58ib21xv4hflvvarxrssibg";
+      name = "qttools-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qttranslations = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qttranslations-opensource-src-5.7.0.tar.xz";
+      sha256 = "0vasg5ycg5rhj8ljk3aqg1sxfrlz3602n38fr14ip853yqld83ha";
+      name = "qttranslations-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtvirtualkeyboard = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtvirtualkeyboard-opensource-src-5.7.0.tar.xz";
+      sha256 = "0bzzci32f8ji94p2n6n16n838lrykyy3h822gfw77c93ivk3shyz";
+      name = "qtvirtualkeyboard-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwayland = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwayland-opensource-src-5.7.0.tar.xz";
+      sha256 = "04dynjcr6gxi3hcqdf688a4hkabi2l17slpcx9k0f3dxygwcgf96";
+      name = "qtwayland-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwebchannel = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwebchannel-opensource-src-5.7.0.tar.xz";
+      sha256 = "05lqfidlh1ahdd1j9y20p2037qbcq51zkdzj2m8fwhn7ghbwvd1s";
+      name = "qtwebchannel-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwebengine = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwebengine-opensource-src-5.7.0.tar.xz";
+      sha256 = "0pfwsqjh107jqdw1mzzrhn38jxl64d8lljk4586im2ndypzn4mwq";
+      name = "qtwebengine-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwebsockets = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwebsockets-opensource-src-5.7.0.tar.xz";
+      sha256 = "0hwb2l7iwf4wf7l95dli8j3b7h0nffp56skfg1x810kzj0df26vl";
+      name = "qtwebsockets-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwebview = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwebview-opensource-src-5.7.0.tar.xz";
+      sha256 = "1i2ikv1ah4g3rc1pivxiw77p0yj79lialqww91fj781g66pky6l0";
+      name = "qtwebview-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtwinextras = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtwinextras-opensource-src-5.7.0.tar.xz";
+      sha256 = "1fh7kqfwgwi9pcfg9b6hp2fpgvs938wl96ppqan79apxlhqy5awd";
+      name = "qtwinextras-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtx11extras = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtx11extras-opensource-src-5.7.0.tar.xz";
+      sha256 = "1yrkn8pqdbvbqykas3wx1vdfimhjkgx3s5jgdxib9dgmgyx6vjzw";
+      name = "qtx11extras-opensource-src-5.7.0.tar.xz";
+    };
+  };
+  qtxmlpatterns = {
+    version = "5.7.0";
+    src = fetchurl {
+      url = "${mirror}/official_releases/qt/5.7/5.7.0/submodules/qtxmlpatterns-opensource-src-5.7.0.tar.xz";
+      sha256 = "02z2qxamslg6sphnaykjcjfpypq4b69pb586s43vw4fplm72m21q";
+      name = "qtxmlpatterns-opensource-src-5.7.0.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/development/libraries/tk/8.6.nix b/pkgs/development/libraries/tk/8.6.nix
index c10771c9109d..666332d45fb8 100644
--- a/pkgs/development/libraries/tk/8.6.nix
+++ b/pkgs/development/libraries/tk/8.6.nix
@@ -4,7 +4,7 @@ callPackage ./generic.nix (args // rec {
 
   src = fetchurl {
     url = "mirror://sourceforge/tcl/tk${tcl.version}-src.tar.gz";
-    sha256 = "1h96vp15zl5xz0d4qp6wjyrchqmrmdm3q5k22wkw9jaxbvw9vy88";
+    sha256 = "17diivcfcwdhp4v5zi6j9nkxncccjqkivhp363c4wx5lf4d3fb6n";
   };
 
   patches = [ ./different-prefix-with-tcl.patch ] ++ stdenv.lib.optionals stdenv.isDarwin [ ./Fix-bad-install_name-for-libtk8.6.dylib.patch ];
diff --git a/pkgs/development/libraries/tk/generic.nix b/pkgs/development/libraries/tk/generic.nix
index 934bfa6a9e94..c5a01ec7e7c8 100644
--- a/pkgs/development/libraries/tk/generic.nix
+++ b/pkgs/development/libraries/tk/generic.nix
@@ -37,6 +37,6 @@ stdenv.mkDerivation {
     homepage = http://www.tcl.tk/;
     license = licenses.tcltk;
     platforms = platforms.all;
-    maintainers = with maintainers; [ lovek323 wkennington ];
+    maintainers = with maintainers; [ lovek323 vrthra wkennington ];
   };
 }
diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix
index 09e1c9512400..2c6e818b4e12 100644
--- a/pkgs/development/libraries/v8/default.nix
+++ b/pkgs/development/libraries/v8/default.nix
@@ -1,6 +1,7 @@
 { stdenv, lib, fetchgit, fetchFromGitHub, gyp, readline, python, which, icu
 , patchelf, coreutils
 , doCheck ? false
+, static ? false
 }:
 
 assert readline != null;
@@ -15,6 +16,7 @@ let
               else "ia32";
   git_url = "https://chromium.googlesource.com";
   clangFlag = if stdenv.isDarwin then "1" else "0";
+  sharedFlag = if static then "static_library" else "shared_library";
 
   deps = {
     "build" = fetchgit {
@@ -143,7 +145,7 @@ stdenv.mkDerivation rec {
         -Dclang=${clangFlag} \
         -Dv8_enable_i18n_support=1 \
         -Duse_system_icu=1 \
-        -Dcomponent=shared_library \
+        -Dcomponent=${sharedFlag} \
         -Dconsole=readline \
         -Dv8_target_arch=${arch} \
         -Dv8_use_external_startup_data=0
@@ -170,7 +172,8 @@ stdenv.mkDerivation rec {
   installPhase = ''
     install -vD out/Release/d8 "$out/bin/d8"
     install -vD out/Release/mksnapshot "$out/bin/mksnapshot"
-    ${if stdenv.isDarwin then ''
+    ${if static then ""
+    else if stdenv.isDarwin then ''
     install -vD out/Release/lib.target/libv8.dylib "$out/lib/libv8.dylib"
     install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/bin/d8
     install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
@@ -180,6 +183,7 @@ stdenv.mkDerivation rec {
     mkdir -p "$out/include"
     cp -vr include/*.h "$out/include"
     cp -vr include/libplatform "$out/include"
+    mkdir -p "$out/lib"
     cp -v  out/Release/*.a "$out/lib"
   '';
 
diff --git a/pkgs/development/libraries/webkitgtk/2.4.nix b/pkgs/development/libraries/webkitgtk/2.4.nix
index e6e61e0482cb..39c0eed0a543 100644
--- a/pkgs/development/libraries/webkitgtk/2.4.nix
+++ b/pkgs/development/libraries/webkitgtk/2.4.nix
@@ -2,7 +2,7 @@
 , pkgconfig, which, gettext, gobjectIntrospection
 , gtk2, gtk3, wayland, libwebp, enchant, sqlite
 , libxml2, libsoup, libsecret, libxslt, harfbuzz, xorg
-, gst-plugins-base
+, gst-plugins-base, libobjc
 , withGtk2 ? false
 , enableIntrospection ? !stdenv.isDarwin
 , enableCredentialStorage ? !stdenv.isDarwin
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     description = "Web content rendering engine, GTK+ port";
     homepage = "http://webkitgtk.org/";
     license = licenses.bsd2;
-    platforms = platforms.linux;
+    platforms = with platforms; linux ++ darwin;
     maintainers = [];
   };
 
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   patches = [
     ./webcore-svg-libxml-cflags.patch
   ] ++ optionals stdenv.isDarwin [
-    ./impure-icucore.patch
+    ./configure.patch
     ./quartz-webcore.patch
     ./libc++.patch
     ./plugin-none.patch
@@ -76,7 +76,7 @@ stdenv.mkDerivation rec {
   ] ++ optionals enableCredentialStorage [
     libsecret
   ] ++ (if stdenv.isDarwin then [
-    readline libedit
+    readline libedit libobjc
   ] else [
     wayland
   ]);
diff --git a/pkgs/development/libraries/webkitgtk/configure.patch b/pkgs/development/libraries/webkitgtk/configure.patch
new file mode 100644
index 000000000000..2f4c1e7ad314
--- /dev/null
+++ b/pkgs/development/libraries/webkitgtk/configure.patch
@@ -0,0 +1,20 @@
+--- webkitgtk-2.4.11-orig/configure	2016-04-10 17:00:06.000000000 +0800
++++ webkitgtk-2.4.11/configure	2016-07-21 23:04:10.000000000 +0800
+@@ -17738,7 +17738,7 @@
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_WEBP_DECODE_H 1
+ _ACEOF
+- WEBP_LIBS='-lwebp'
++ WEBP_LIBS=`$PKG_CONFIG --libs libwebp`
+ else
+   as_fn_error $? "WebP library (libwebp) not found" "$LINENO" 5
+ fi
+@@ -18388,7 +18388,7 @@
+ case "$host" in
+     *-*-darwin*)
+         UNICODE_CFLAGS="-I$srcdir/Source/JavaScriptCore/icu -I$srcdir/Source/WebCore/icu"
+-        UNICODE_LIBS="-licucore"
++        UNICODE_LIBS="/usr/lib/libicucore.dylib"
+         ;;
+     *-*-mingw*)
+ 
diff --git a/pkgs/development/libraries/webkitgtk/impure-icucore.patch b/pkgs/development/libraries/webkitgtk/impure-icucore.patch
deleted file mode 100644
index 24bf690d8b8f..000000000000
--- a/pkgs/development/libraries/webkitgtk/impure-icucore.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru webkitgtk-2.4.9-orig/configure webkitgtk-2.4.9/configure
---- webkitgtk-2.4.9-orig/configure	2016-02-02 13:23:22.000000000 -0500
-+++ webkitgtk-2.4.9/configure	2016-02-02 13:24:13.000000000 -0500
-@@ -17715,7 +17715,7 @@
- case "$host" in
-     *-*-darwin*)
-         UNICODE_CFLAGS="-I$srcdir/Source/JavaScriptCore/icu -I$srcdir/Source/WebCore/icu"
--        UNICODE_LIBS="-licucore"
-+        UNICODE_LIBS="/usr/lib/libicucore.dylib"
-         ;;
-     *-*-mingw*)
-