summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/services/x11/desktop-managers/kde5.nix4
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/sddm.nix28
-rw-r--r--pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch (renamed from pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch)16
-rw-r--r--pkgs/applications/display-managers/sddm/0002-fix-ConfigReader-QStringList-corruption.patch26
-rw-r--r--pkgs/applications/display-managers/sddm/default.nix5
-rw-r--r--pkgs/applications/kde-apps-15.12/ark.nix58
-rw-r--r--pkgs/applications/kde-apps-15.12/baloo-widgets.nix35
-rw-r--r--pkgs/applications/kde-apps-15.12/default.nix54
-rw-r--r--pkgs/applications/kde-apps-15.12/dolphin-plugins.nix31
-rw-r--r--pkgs/applications/kde-apps-15.12/dolphin.nix70
-rwxr-xr-xpkgs/applications/kde-apps-15.12/fetchsrcs.sh56
-rw-r--r--pkgs/applications/kde-apps-15.12/ffmpegthumbs.nix21
-rw-r--r--pkgs/applications/kde-apps-15.12/gpgmepp.nix21
-rw-r--r--pkgs/applications/kde-apps-15.12/gwenview.nix44
-rw-r--r--pkgs/applications/kde-apps-15.12/kate.nix69
-rw-r--r--pkgs/applications/kde-apps-15.12/kde-app.nix23
-rw-r--r--pkgs/applications/kde-apps-15.12/kde-locale-4.nix20
-rw-r--r--pkgs/applications/kde-apps-15.12/kde-locale-5.nix17
-rw-r--r--pkgs/applications/kde-apps-15.12/kdegraphics-thumbnailers.nix23
-rw-r--r--pkgs/applications/kde-apps-15.12/kgpg.nix38
-rw-r--r--pkgs/applications/kde-apps-15.12/konsole.nix68
-rw-r--r--pkgs/applications/kde-apps-15.12/ksnapshot.nix29
-rw-r--r--pkgs/applications/kde-apps-15.12/l10n.nix237
-rw-r--r--pkgs/applications/kde-apps-15.12/libkdcraw.nix19
-rw-r--r--pkgs/applications/kde-apps-15.12/libkexiv2.nix19
-rw-r--r--pkgs/applications/kde-apps-15.12/libkipi.nix22
-rw-r--r--pkgs/applications/kde-apps-15.12/okular.nix41
-rw-r--r--pkgs/applications/kde-apps-15.12/print-manager.nix47
-rw-r--r--pkgs/applications/kde-apps-15.12/srcs.nix1925
-rw-r--r--pkgs/desktops/plasma-5.5/bluedevil.nix23
-rw-r--r--pkgs/desktops/plasma-5.5/breeze-qt4.nix29
-rw-r--r--pkgs/desktops/plasma-5.5/breeze-qt5.nix23
-rw-r--r--pkgs/desktops/plasma-5.5/default.nix85
-rwxr-xr-xpkgs/desktops/plasma-5.5/fetchsrcs.sh57
-rw-r--r--pkgs/desktops/plasma-5.5/kde-cli-tools.nix27
-rw-r--r--pkgs/desktops/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch39
-rw-r--r--pkgs/desktops/plasma-5.5/kde-gtk-config/default.nix28
-rw-r--r--pkgs/desktops/plasma-5.5/kdecoration.nix6
-rw-r--r--pkgs/desktops/plasma-5.5/kdeplasma-addons.nix21
-rw-r--r--pkgs/desktops/plasma-5.5/kgamma5.nix9
-rw-r--r--pkgs/desktops/plasma-5.5/khelpcenter.nix20
-rw-r--r--pkgs/desktops/plasma-5.5/khotkeys.nix16
-rw-r--r--pkgs/desktops/plasma-5.5/kinfocenter.nix24
-rw-r--r--pkgs/desktops/plasma-5.5/kmenuedit.nix19
-rw-r--r--pkgs/desktops/plasma-5.5/kscreen.nix19
-rw-r--r--pkgs/desktops/plasma-5.5/kscreenlocker.nix19
-rw-r--r--pkgs/desktops/plasma-5.5/ksshaskpass.nix13
-rw-r--r--pkgs/desktops/plasma-5.5/ksysguard.nix20
-rw-r--r--pkgs/desktops/plasma-5.5/kwayland.nix14
-rw-r--r--pkgs/desktops/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/plasma-5.5/kwin/default.nix33
-rw-r--r--pkgs/desktops/plasma-5.5/kwrited.nix10
-rw-r--r--pkgs/desktops/plasma-5.5/libkscreen/default.nix18
-rw-r--r--pkgs/desktops/plasma-5.5/libkscreen/libkscreen-backend-path.patch130
-rw-r--r--pkgs/desktops/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/plasma-5.5/libksysguard/default.nix21
-rw-r--r--pkgs/desktops/plasma-5.5/milou.nix17
-rw-r--r--pkgs/desktops/plasma-5.5/oxygen.nix20
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch67
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-desktop/0002-hwclock.patch36
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-desktop/0003-tzdir.patch30
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-desktop/default.nix59
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-mediacenter.nix23
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch25
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-nm/default.nix36
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-pa.nix18
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-workspace-wallpapers.nix10
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-workspace/0001-qt-5.5-QML-import-paths.patch123
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-workspace/0002-startkde-NixOS-patches.patch397
-rw-r--r--pkgs/desktops/plasma-5.5/plasma-workspace/default.nix62
-rw-r--r--pkgs/desktops/plasma-5.5/polkit-kde-agent.nix31
-rw-r--r--pkgs/desktops/plasma-5.5/powerdevil.nix20
-rw-r--r--pkgs/desktops/plasma-5.5/setup-hook.sh1
-rw-r--r--pkgs/desktops/plasma-5.5/srcs.nix309
-rw-r--r--pkgs/desktops/plasma-5.5/systemsettings.nix21
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/attica.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/baloo.nix25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/bluez-qt.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/default.nix113
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/0001-extra-cmake-modules-paths.patch74
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/default.nix18
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/setup-hook.sh27
-rwxr-xr-xpkgs/development/libraries/kde-frameworks-5.16/fetchsrcs.sh57
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/frameworkintegration.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kactivities.nix22
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kapidox.nix12
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/karchive.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kauth/default.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kauth/kauth-policy-install.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kbookmarks.nix25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcmutils/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcmutils/default.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcodecs.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcompletion.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kconfig.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/default.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcoreaddons.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kcrash.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdbusaddons.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdeclarative.nix22
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kded.nix19
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdelibs4support.nix32
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdesignerplugin.nix31
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdesu.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdewebkit.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdnssd.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdoctools/default.nix20
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdoctools/kdoctools-no-find-docbook-xml.patch12
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kdoctools/setup-hook.sh5
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kemoticons.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kfilemetadata.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kglobalaccel.nix23
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kguiaddons.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/khtml.nix21
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/ki18n.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kiconthemes.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kidletime.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kimageformats.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kinit/0001-kinit-libpath.patch42
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kinit/default.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kio.nix30
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kitemmodels.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kitemviews.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kjobwidgets.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kjs.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kjsembed.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kmediaplayer.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/knewstuff.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/knotifications.nix21
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/knotifyconfig.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kpackage/0001-allow-external-paths.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kpackage/0002-qdiriterator-follow-symlinks.patch39
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kpackage/default.nix26
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kparts.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kpeople.nix15
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kplotting.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kpty.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kross.nix14
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/krunner.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kservice/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kservice/0002-no-canonicalize-path.patch25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kservice/default.nix19
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kservice/setup-hook.sh43
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/0001-no-qcoreapplication.patch48
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/default.nix18
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/ktextwidgets.nix16
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kunitconversion.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kwallet.nix21
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kwidgetsaddons.nix11
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kwindowsystem.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kxmlgui.nix18
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/kxmlrpcclient.nix10
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/modemmanager-qt.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/networkmanager-qt.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/oxygen-icons5.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/plasma-framework/default.nix25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/solid.nix17
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/sonnet.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/srcs.nix565
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.16/threadweaver.nix11
-rw-r--r--pkgs/development/libraries/qca-qt5/default.nix17
-rw-r--r--pkgs/development/libraries/qca-qt5/old.nix17
-rw-r--r--pkgs/development/libraries/qca2/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix11
166 files changed, 7461 insertions, 34 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/kde5.nix b/nixos/modules/services/x11/desktop-managers/kde5.nix
index 6fdd5b4fa36d..0e9aa60a0fc7 100644
--- a/nixos/modules/services/x11/desktop-managers/kde5.nix
+++ b/nixos/modules/services/x11/desktop-managers/kde5.nix
@@ -108,7 +108,7 @@ in
         kdeApps.okular
         kdeApps.print-manager
 
-        kdeApps.oxygen-icons
+        (plasma5.oxygen-icons or kf5.oxygen-icons5)
         pkgs.hicolor_icon_theme
 
         plasma5.kde-gtk-config
@@ -155,7 +155,7 @@ in
         GST_PLUGIN_SYSTEM_PATH_1_0 = [ "/lib/gstreamer-1.0" ];
       };
 
-    fonts.fonts = [ plasma5.oxygen-fonts ];
+    fonts.fonts = [ (plasma5.oxygen-fonts or pkgs.noto-fonts) ];
 
     programs.ssh.askPassword = "${plasma5.ksshaskpass}/bin/ksshaskpass";
 
diff --git a/nixos/release.nix b/nixos/release.nix
index e48954ceaf59..f0df3fe3e1ef 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -285,6 +285,7 @@ in rec {
   tests.proxy = callTest tests/proxy.nix {};
   tests.quake3 = callTest tests/quake3.nix {};
   tests.runInMachine = callTest tests/run-in-machine.nix {};
+  tests.sddm = callTest tests/sddm.nix {};
   tests.simple = callTest tests/simple.nix {};
   tests.tomcat = callTest tests/tomcat.nix {};
   tests.udisks2 = callTest tests/udisks2.nix {};
diff --git a/nixos/tests/sddm.nix b/nixos/tests/sddm.nix
new file mode 100644
index 000000000000..e11b5714d5c2
--- /dev/null
+++ b/nixos/tests/sddm.nix
@@ -0,0 +1,28 @@
+import ./make-test.nix ({ pkgs, ...} : {
+  name = "sddm";
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ ttuegel ];
+  };
+
+  machine = { lib, ... }: {
+    imports = [ ./common/user-account.nix ];
+    services.xserver.enable = true;
+    services.xserver.displayManager.sddm = {
+      enable = true;
+      autoLogin = {
+        enable = true;
+        user = "alice";
+      };
+    };
+    services.xserver.windowManager.default = "icewm";
+    services.xserver.windowManager.icewm.enable = true;
+    services.xserver.desktopManager.default = "none";
+  };
+
+  enableOCR = true;
+
+  testScript = { nodes, ... }: ''
+    startAll;
+    $machine->waitForWindow("^IceWM ");
+  '';
+})
diff --git a/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch b/pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch
index 9edd9a7b5382..836df2de292d 100644
--- a/pkgs/applications/display-managers/sddm/sddm-ignore-config-mtime.patch
+++ b/pkgs/applications/display-managers/sddm/0001-ignore-config-mtime.patch
@@ -1,8 +1,17 @@
+From e9d82bfbc49993a5be2c93f6b72a969630587f26 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 23 Nov 2015 06:56:28 -0600
+Subject: [PATCH 1/2] ignore config mtime
+
+---
+ src/common/ConfigReader.cpp | 5 -----
+ 1 file changed, 5 deletions(-)
+
 diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
-index 6618455..5356e76 100644
+index cfc9940..5bf5a6a 100644
 --- a/src/common/ConfigReader.cpp
 +++ b/src/common/ConfigReader.cpp
-@@ -136,11 +136,6 @@ namespace SDDM {
+@@ -138,11 +138,6 @@ namespace SDDM {
          QString currentSection = QStringLiteral(IMPLICIT_SECTION);
  
          QFile in(m_path);
@@ -14,3 +23,6 @@ index 6618455..5356e76 100644
  
          in.open(QIODevice::ReadOnly);
          while (!in.atEnd()) {
+-- 
+2.6.3
+
diff --git a/pkgs/applications/display-managers/sddm/0002-fix-ConfigReader-QStringList-corruption.patch b/pkgs/applications/display-managers/sddm/0002-fix-ConfigReader-QStringList-corruption.patch
new file mode 100644
index 000000000000..ad5dcbc472db
--- /dev/null
+++ b/pkgs/applications/display-managers/sddm/0002-fix-ConfigReader-QStringList-corruption.patch
@@ -0,0 +1,26 @@
+From 7a18f4cb77c567dec9ad924fcc76c50092de6ee7 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 23 Nov 2015 06:57:51 -0600
+Subject: [PATCH 2/2] fix ConfigReader QStringList corruption
+
+---
+ src/common/ConfigReader.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
+index 5bf5a6a..34182e6 100644
+--- a/src/common/ConfigReader.cpp
++++ b/src/common/ConfigReader.cpp
+@@ -30,7 +30,8 @@
+ 
+ QTextStream &operator>>(QTextStream &str, QStringList &list)  {
+     list.clear();
+-    foreach(const QStringRef &s, str.readLine().splitRef(QLatin1Char(',')))
++    QString line = str.readLine();
++    foreach(const QStringRef &s, line.splitRef(QLatin1Char(',')))
+     {
+         QStringRef trimmed = s.trimmed();
+         if (!trimmed.isEmpty())
+-- 
+2.6.3
+
diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix
index 5851f1af6390..dc891605d1b6 100644
--- a/pkgs/applications/display-managers/sddm/default.nix
+++ b/pkgs/applications/display-managers/sddm/default.nix
@@ -14,7 +14,10 @@ stdenv.mkDerivation rec {
     sha256 = "0c3q8lpb123m9k5x3i71mm8lmyzhknw77zxh89yfl8qmn6zd61i1";
   };
 
-  patches = [ ./sddm-ignore-config-mtime.patch ];
+  patches = [
+    ./0001-ignore-config-mtime.patch
+    ./0002-fix-ConfigReader-QStringList-corruption.patch
+  ];
 
   nativeBuildInputs = [ cmake makeQtWrapper pkgconfig qttools ];
 
diff --git a/pkgs/applications/kde-apps-15.12/ark.nix b/pkgs/applications/kde-apps-15.12/ark.nix
new file mode 100644
index 000000000000..36a1ca7cfbd7
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/ark.nix
@@ -0,0 +1,58 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, karchive
+, kconfig
+, kcrash
+, kdbusaddons
+, ki18n
+, kiconthemes
+, khtml
+, kio
+, kservice
+, kpty
+, kwidgetsaddons
+, libarchive
+, p7zip
+, unrar
+, unzipNLS
+, zip
+}:
+
+let PATH = lib.makeSearchPath "bin" [
+      p7zip unrar unzipNLS zip
+    ];
+in
+
+kdeApp {
+  name = "ark";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    karchive
+    kconfig
+    kcrash
+    kdbusaddons
+    kiconthemes
+    kservice
+    kpty
+    kwidgetsaddons
+    libarchive
+  ];
+  propagatedBuildInputs = [
+    khtml
+    ki18n
+    kio
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/ark" \
+        --prefix PATH : "${PATH}"
+  '';
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/baloo-widgets.nix b/pkgs/applications/kde-apps-15.12/baloo-widgets.nix
new file mode 100644
index 000000000000..a24928160df1
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/baloo-widgets.nix
@@ -0,0 +1,35 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, kconfig
+, kio
+, ki18n
+, kservice
+, kfilemetadata
+, baloo
+, kdelibs4support
+}:
+
+kdeApp {
+  name = "baloo-widgets";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    kconfig
+    kservice
+  ];
+  propagatedBuildInputs = [
+    baloo
+    kdelibs4support
+    kfilemetadata
+    ki18n
+    kio
+  ];
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/default.nix b/pkgs/applications/kde-apps-15.12/default.nix
new file mode 100644
index 000000000000..0c8c0780aaf2
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/default.nix
@@ -0,0 +1,54 @@
+# Maintainer's Notes:
+#
+# Minor updates:
+#  1. Edit ./manifest.sh to point to the updated URL. Upstream sometimes
+#     releases updates that include only the changed packages; in this case,
+#     multiple URLs can be provided and the results will be merged.
+#  2. Run ./manifest.sh and ./dependencies.sh.
+#  3. Build and enjoy.
+#
+# Major updates:
+#  We prefer not to immediately overwrite older versions with major updates, so
+#  make a copy of this directory first. After copying, be sure to delete ./tmp
+#  if it exists. Then follow the minor update instructions.
+
+{ pkgs, debug ? false }:
+
+let
+
+  inherit (pkgs) lib stdenv;
+
+  srcs = import ./srcs.nix { inherit (pkgs) fetchurl; inherit mirror; };
+  mirror = "mirror://kde";
+
+  kdeApp = import ./kde-app.nix {
+    inherit stdenv lib;
+    inherit debug srcs;
+  };
+
+  packages = self: with self; {
+    inherit (pkgs.kdeApps_15_08) kdelibs ksnapshot;
+
+    ark = callPackage ./ark.nix {};
+    baloo-widgets = callPackage ./baloo-widgets.nix {};
+    dolphin = callPackage ./dolphin.nix {};
+    dolphin-plugins = callPackage ./dolphin-plugins.nix {};
+    ffmpegthumbs = callPackage ./ffmpegthumbs.nix {};
+    gpgmepp = callPackage ./gpgmepp.nix {};
+    gwenview = callPackage ./gwenview.nix {};
+    kate = callPackage ./kate.nix {};
+    kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
+    kgpg = callPackage ./kgpg.nix { inherit (pkgs.kde4) kdepimlibs; };
+    konsole = callPackage ./konsole.nix {};
+    libkdcraw = callPackage ./libkdcraw.nix {};
+    libkexiv2 = callPackage ./libkexiv2.nix {};
+    libkipi = callPackage ./libkipi.nix {};
+    okular = callPackage ./okular.nix {};
+    print-manager = callPackage ./print-manager.nix {};
+
+    l10n = pkgs.recurseIntoAttrs (import ./l10n.nix { inherit callPackage lib pkgs; });
+  };
+
+  newScope = scope: pkgs.kf516.newScope ({ inherit kdeApp; } // scope);
+
+in lib.makeScope newScope packages
diff --git a/pkgs/applications/kde-apps-15.12/dolphin-plugins.nix b/pkgs/applications/kde-apps-15.12/dolphin-plugins.nix
new file mode 100644
index 000000000000..72a08c732614
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/dolphin-plugins.nix
@@ -0,0 +1,31 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, kxmlgui
+, ki18n
+, kio
+, kdelibs4support
+, dolphin
+}:
+
+kdeApp {
+  name = "dolphin-plugins";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    kxmlgui
+    dolphin
+  ];
+  propagatedBuildInputs = [
+    kdelibs4support
+    ki18n
+    kio
+  ];
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/dolphin.nix b/pkgs/applications/kde-apps-15.12/dolphin.nix
new file mode 100644
index 000000000000..3218146f510e
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/dolphin.nix
@@ -0,0 +1,70 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, makeQtWrapper
+, kinit
+, kcmutils
+, kcoreaddons
+, knewstuff
+, ki18n
+, kdbusaddons
+, kbookmarks
+, kconfig
+, kio
+, kparts
+, solid
+, kiconthemes
+, kcompletion
+, ktexteditor
+, kwindowsystem
+, knotifications
+, kactivities
+, phonon
+, baloo
+, baloo-widgets
+, kfilemetadata
+, kdelibs4support
+}:
+
+kdeApp {
+  name = "dolphin";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kinit
+    kcmutils
+    kcoreaddons
+    knewstuff
+    kdbusaddons
+    kbookmarks
+    kconfig
+    kparts
+    solid
+    kiconthemes
+    kcompletion
+    knotifications
+    phonon
+    baloo-widgets
+  ];
+  propagatedBuildInputs = [
+    baloo
+    kactivities
+    kdelibs4support
+    kfilemetadata
+    ki18n
+    kio
+    ktexteditor
+    kwindowsystem
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/dolphin"
+  '';
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/fetchsrcs.sh b/pkgs/applications/kde-apps-15.12/fetchsrcs.sh
new file mode 100755
index 000000000000..a5d568a2b6f7
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/fetchsrcs.sh
@@ -0,0 +1,56 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils findutils gnused nix wget
+
+set -x
+
+# The trailing slash at the end is necessary!
+WGET_ARGS='http://download.kde.org/unstable/applications/15.11.80/ -A *.tar.xz'
+
+mkdir tmp; cd tmp
+
+rm -f ../srcs.csv
+
+wget -nH -r -c --no-parent $WGET_ARGS
+
+find . | while read src; do
+    if [[ -f "${src}" ]]; then
+        # Sanitize file name
+        filename=$(basename "$src" | tr '@' '_')
+        nameVersion="${filename%.tar.*}"
+        name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
+        version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
+        echo "$name,$version,$src,$filename" >>../srcs.csv
+    fi
+done
+
+cat >../srcs.nix <<EOF
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+EOF
+
+gawk -F , "{ print \$1 }" ../srcs.csv | sort | uniq | while read name; do
+    versions=$(gawk -F , "/^$name,/ { print \$2 }" ../srcs.csv)
+    latestVersion=$(echo "$versions" | sort -rV | head -n 1)
+    src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" ../srcs.csv)
+    filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" ../srcs.csv)
+    url="${src:2}"
+    sha256=$(nix-hash --type sha256 --base32 --flat "$src")
+    cat >>../srcs.nix <<EOF
+  $name = {
+    version = "$latestVersion";
+    src = fetchurl {
+      url = "\${mirror}/$url";
+      sha256 = "$sha256";
+      name = "$filename";
+    };
+  };
+EOF
+done
+
+echo "}" >>../srcs.nix
+
+rm -f ../srcs.csv
+
+cd ..
diff --git a/pkgs/applications/kde-apps-15.12/ffmpegthumbs.nix b/pkgs/applications/kde-apps-15.12/ffmpegthumbs.nix
new file mode 100644
index 000000000000..53e9d807d647
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/ffmpegthumbs.nix
@@ -0,0 +1,21 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, ffmpeg
+, kio
+}:
+
+kdeApp {
+  name = "ffmpegthumbs";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    ffmpeg
+    kio
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/gpgmepp.nix b/pkgs/applications/kde-apps-15.12/gpgmepp.nix
new file mode 100644
index 000000000000..ac14573dcaa3
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/gpgmepp.nix
@@ -0,0 +1,21 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, boost
+, gpgme
+}:
+
+kdeApp {
+  name = "gpgmepp";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    boost
+    gpgme
+  ];
+  meta = {
+    license = with lib.licenses; [ lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/gwenview.nix b/pkgs/applications/kde-apps-15.12/gwenview.nix
new file mode 100644
index 000000000000..732ac11e96d0
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/gwenview.nix
@@ -0,0 +1,44 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, makeQtWrapper
+, baloo
+, exiv2
+, kactivities
+, kdelibs4support
+, kio
+, lcms2
+, phonon
+, qtsvg
+, qtx11extras
+}:
+
+kdeApp {
+  name = "gwenview";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    exiv2
+    lcms2
+    phonon
+    qtsvg
+  ];
+  propagatedBuildInputs = [
+    baloo
+    kactivities
+    kdelibs4support
+    kio
+    qtx11extras
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/gwenview"
+  '';
+  meta = {
+    license = with lib.licenses; [ gpl2 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/kate.nix b/pkgs/applications/kde-apps-15.12/kate.nix
new file mode 100644
index 000000000000..91eeb2314a4c
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kate.nix
@@ -0,0 +1,69 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, qtscript
+, kactivities
+, kconfig
+, kcrash
+, kguiaddons
+, kiconthemes
+, ki18n
+, kinit
+, kjobwidgets
+, kio
+, kparts
+, ktexteditor
+, kwindowsystem
+, kxmlgui
+, kdbusaddons
+, kwallet
+, plasma-framework
+, kitemmodels
+, knotifications
+, threadweaver
+, knewstuff
+, libgit2
+}:
+
+kdeApp {
+  name = "kate";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    qtscript
+    kconfig
+    kcrash
+    kguiaddons
+    kiconthemes
+    kinit
+    kjobwidgets
+    kparts
+    kxmlgui
+    kdbusaddons
+    kwallet
+    kitemmodels
+    knotifications
+    threadweaver
+    knewstuff
+    libgit2
+  ];
+  propagatedBuildInputs = [
+    kactivities
+    ki18n
+    kio
+    ktexteditor
+    kwindowsystem
+    plasma-framework
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kate"
+    wrapQtProgram "$out/bin/kwrite"
+  '';
+  meta = {
+    license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/kde-app.nix b/pkgs/applications/kde-apps-15.12/kde-app.nix
new file mode 100644
index 000000000000..242f3d9c793d
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kde-app.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, debug, srcs }:
+
+args:
+
+let
+  inherit (args) name;
+  sname = args.sname or name;
+  inherit (srcs."${sname}") src version;
+in
+stdenv.mkDerivation (args // {
+  name = "${name}-${version}";
+  inherit src;
+
+  cmakeFlags =
+    (args.cmakeFlags or [])
+    ++ [ "-DBUILD_TESTING=OFF" ]
+    ++ lib.optional debug "-DCMAKE_BUILD_TYPE=Debug";
+
+  meta = {
+    platforms = lib.platforms.linux;
+    homepage = "http://www.kde.org";
+  } // (args.meta or {});
+})
diff --git a/pkgs/applications/kde-apps-15.12/kde-locale-4.nix b/pkgs/applications/kde-apps-15.12/kde-locale-4.nix
new file mode 100644
index 000000000000..4b612ee3e3c2
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kde-locale-4.nix
@@ -0,0 +1,20 @@
+name: args:
+
+{ kdeApp, automoc4, cmake, gettext, kdelibs, perl }:
+
+kdeApp (args // {
+  sname = "kde-l10n-${name}";
+  name = "kde-l10n-${name}-qt4";
+
+  nativeBuildInputs =
+    [ automoc4 cmake gettext perl ]
+    ++ (args.nativeBuildInputs or []);
+  buildInputs =
+    [ kdelibs ]
+    ++ (args.buildInputs or []);
+
+  preConfigure = ''
+    sed -e 's/add_subdirectory(5)//' -i CMakeLists.txt
+    ${args.preConfigure or ""}
+  '';
+})
diff --git a/pkgs/applications/kde-apps-15.12/kde-locale-5.nix b/pkgs/applications/kde-apps-15.12/kde-locale-5.nix
new file mode 100644
index 000000000000..522fc542aeb2
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kde-locale-5.nix
@@ -0,0 +1,17 @@
+name: args:
+
+{ kdeApp, cmake, extra-cmake-modules, gettext, kdoctools }:
+
+kdeApp (args // {
+  sname = "kde-l10n-${name}";
+  name = "kde-l10n-${name}-qt5";
+
+  nativeBuildInputs =
+    [ cmake extra-cmake-modules gettext kdoctools ]
+    ++ (args.nativeBuildInputs or []);
+
+  preConfigure = ''
+    sed -e 's/add_subdirectory(4)//' -i CMakeLists.txt
+    ${args.preConfigure or ""}
+  '';
+})
diff --git a/pkgs/applications/kde-apps-15.12/kdegraphics-thumbnailers.nix b/pkgs/applications/kde-apps-15.12/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..520bad0d066a
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kdegraphics-thumbnailers.nix
@@ -0,0 +1,23 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kio
+, libkexiv2
+, libkdcraw
+}:
+
+kdeApp {
+  name = "kdegraphics-thumbnailers";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kio
+    libkexiv2
+    libkdcraw
+  ];
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/kgpg.nix b/pkgs/applications/kde-apps-15.12/kgpg.nix
new file mode 100644
index 000000000000..3ee925197189
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/kgpg.nix
@@ -0,0 +1,38 @@
+{ kdeApp
+, lib
+, automoc4
+, cmake
+, makeWrapper
+, perl
+, pkgconfig
+, boost
+, gpgme
+, kdelibs
+, kdepimlibs
+, gnupg
+}:
+
+kdeApp {
+  name = "kgpg";
+  nativeBuildInputs = [
+    automoc4
+    cmake
+    makeWrapper
+    perl
+    pkgconfig
+  ];
+  buildInputs = [
+    boost
+    gpgme
+    kdelibs
+    kdepimlibs
+  ];
+  postInstall = ''
+    wrapProgram "$out/bin/kgpg" \
+        --prefix PATH : "${gnupg}/bin"
+  '';
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/konsole.nix b/pkgs/applications/kde-apps-15.12/konsole.nix
new file mode 100644
index 000000000000..4b4cba2a3779
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/konsole.nix
@@ -0,0 +1,68 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, makeQtWrapper
+, qtscript
+, kbookmarks
+, kcompletion
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kguiaddons
+, ki18n
+, kiconthemes
+, kinit
+, kdelibs4support
+, kio
+, knotifications
+, knotifyconfig
+, kparts
+, kpty
+, kservice
+, ktextwidgets
+, kwidgetsaddons
+, kwindowsystem
+, kxmlgui
+}:
+
+kdeApp {
+  name = "konsole";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    qtscript
+    kbookmarks
+    kcompletion
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kguiaddons
+    kiconthemes
+    kinit
+    kio
+    knotifications
+    knotifyconfig
+    kparts
+    kpty
+    kservice
+    ktextwidgets
+    kwidgetsaddons
+    kxmlgui
+  ];
+  propagatedBuildInputs = [
+    kdelibs4support
+    ki18n
+    kwindowsystem
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/konsole"
+  '';
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/ksnapshot.nix b/pkgs/applications/kde-apps-15.12/ksnapshot.nix
new file mode 100644
index 000000000000..b757f4f04037
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/ksnapshot.nix
@@ -0,0 +1,29 @@
+{ kdeApp
+, lib
+, automoc4
+, cmake
+, perl
+, pkgconfig
+, kdelibs
+, libkipi
+, libXfixes
+}:
+
+kdeApp {
+  name = "ksnapshot";
+  nativeBuildInputs = [
+    automoc4
+    cmake
+    perl
+    pkgconfig
+  ];
+  buildInputs = [
+    kdelibs
+    libkipi
+    libXfixes
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/l10n.nix b/pkgs/applications/kde-apps-15.12/l10n.nix
new file mode 100644
index 000000000000..a0605e3bd55d
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/l10n.nix
@@ -0,0 +1,237 @@
+{ callPackage, pkgs, lib }:
+
+let
+
+  kdeLocale4 = import ./kde-locale-4.nix;
+  kdeLocale5 = import ./kde-locale-5.nix;
+
+in
+
+lib.mapAttrs (name: attr: pkgs.recurseIntoAttrs attr) {
+  ar = {
+    qt4 = callPackage (kdeLocale4 "ar" {}) {};
+    qt5 = callPackage (kdeLocale5 "ar" {}) {};
+  };
+  bg = {
+    qt4 = callPackage (kdeLocale4 "bg" {}) {};
+    qt5 = callPackage (kdeLocale5 "bg" {}) {};
+  };
+  bs = {
+    qt4 = callPackage (kdeLocale4 "bs" {}) {};
+    qt5 = callPackage (kdeLocale5 "bs" {}) {};
+  };
+  ca = {
+    qt4 = callPackage (kdeLocale4 "ca" {}) {};
+    qt5 = callPackage (kdeLocale5 "ca" {}) {};
+  };
+  ca_valencia = {
+    qt4 = callPackage (kdeLocale4 "ca_valencia" {}) {};
+    qt5 = callPackage (kdeLocale5 "ca_valencia" {}) {};
+  };
+  cs = {
+    qt4 = callPackage (kdeLocale4 "cs" {}) {};
+    qt5 = callPackage (kdeLocale5 "cs" {}) {};
+  };
+  da = {
+    qt4 = callPackage (kdeLocale4 "da" {}) {};
+    qt5 = callPackage (kdeLocale5 "da" {}) {};
+  };
+  de = {
+    qt4 = callPackage (kdeLocale4 "de" {}) {};
+    qt5 = callPackage (kdeLocale5 "de" {}) {};
+  };
+  el = {
+    qt4 = callPackage (kdeLocale4 "el" {}) {};
+    qt5 = callPackage (kdeLocale5 "el" {}) {};
+  };
+  en_GB = {
+    qt4 = callPackage (kdeLocale4 "en_GB" {}) {};
+    qt5 = callPackage (kdeLocale5 "en_GB" {}) {};
+  };
+  eo = {
+    qt4 = callPackage (kdeLocale4 "eo" {}) {};
+    qt5 = callPackage (kdeLocale5 "eo" {}) {};
+  };
+  es = {
+    qt4 = callPackage (kdeLocale4 "es" {}) {};
+    qt5 = callPackage (kdeLocale5 "es" {}) {};
+  };
+  et = {
+    qt4 = callPackage (kdeLocale4 "et" {}) {};
+    qt5 = callPackage (kdeLocale5 "et" {}) {};
+  };
+  eu = {
+    qt4 = callPackage (kdeLocale4 "eu" {}) {};
+    qt5 = callPackage (kdeLocale5 "eu" {}) {};
+  };
+  fa = {
+    qt4 = callPackage (kdeLocale4 "fa" {}) {};
+    qt5 = callPackage (kdeLocale5 "fa" {}) {};
+  };
+  fi = {
+    qt4 = callPackage (kdeLocale4 "fi" {}) {};
+    qt5 = callPackage (kdeLocale5 "fi" {}) {};
+  };
+  fr = {
+    qt4 = callPackage (kdeLocale4 "fr" {}) {};
+    qt5 = callPackage (kdeLocale5 "fr" {}) {};
+  };
+  ga = {
+    qt4 = callPackage (kdeLocale4 "ga" {}) {};
+    qt5 = callPackage (kdeLocale5 "ga" {}) {};
+  };
+  gl = {
+    qt4 = callPackage (kdeLocale4 "gl" {}) {};
+    qt5 = callPackage (kdeLocale5 "gl" {}) {};
+  };
+  he = {
+    qt4 = callPackage (kdeLocale4 "he" {}) {};
+    qt5 = callPackage (kdeLocale5 "he" {}) {};
+  };
+  hi = {
+    qt4 = callPackage (kdeLocale4 "hi" {}) {};
+    qt5 = callPackage (kdeLocale5 "hi" {}) {};
+  };
+  hr = {
+    qt4 = callPackage (kdeLocale4 "hr" {}) {};
+    qt5 = callPackage (kdeLocale5 "hr" {}) {};
+  };
+  hu = {
+    qt4 = callPackage (kdeLocale4 "hu" {}) {};
+    qt5 = callPackage (kdeLocale5 "hu" {}) {};
+  };
+  ia = {
+    qt4 = callPackage (kdeLocale4 "ia" {}) {};
+    qt5 = callPackage (kdeLocale5 "ia" {}) {};
+  };
+  id = {
+    qt4 = callPackage (kdeLocale4 "id" {}) {};
+    qt5 = callPackage (kdeLocale5 "id" {}) {};
+  };
+  is = {
+    qt4 = callPackage (kdeLocale4 "is" {}) {};
+    qt5 = callPackage (kdeLocale5 "is" {}) {};
+  };
+  it = {
+    qt4 = callPackage (kdeLocale4 "it" {}) {};
+    qt5 = callPackage (kdeLocale5 "it" {}) {};
+  };
+  ja = {
+    qt4 = callPackage (kdeLocale4 "ja" {}) {};
+    qt5 = callPackage (kdeLocale5 "ja" {}) {};
+  };
+  kk = {
+    qt4 = callPackage (kdeLocale4 "kk" {}) {};
+    qt5 = callPackage (kdeLocale5 "kk" {}) {};
+  };
+  km = {
+    qt4 = callPackage (kdeLocale4 "km" {}) {};
+    qt5 = callPackage (kdeLocale5 "km" {}) {};
+  };
+  ko = {
+    qt4 = callPackage (kdeLocale4 "ko" {}) {};
+    qt5 = callPackage (kdeLocale5 "ko" {}) {};
+  };
+  lt = {
+    qt4 = callPackage (kdeLocale4 "lt" {}) {};
+    qt5 = callPackage (kdeLocale5 "lt" {}) {};
+  };
+  lv = {
+    qt4 = callPackage (kdeLocale4 "lv" {}) {};
+    qt5 = callPackage (kdeLocale5 "lv" {}) {};
+  };
+  mr = {
+    qt4 = callPackage (kdeLocale4 "mr" {}) {};
+    qt5 = callPackage (kdeLocale5 "mr" {}) {};
+  };
+  nb = {
+    qt4 = callPackage (kdeLocale4 "nb" {}) {};
+    qt5 = callPackage (kdeLocale5 "nb" {}) {};
+  };
+  nds = {
+    qt4 = callPackage (kdeLocale4 "nds" {}) {};
+    qt5 = callPackage (kdeLocale5 "nds" {}) {};
+  };
+  # TODO: build broken in 15.11.80; re-enable in next release
+  /*
+  nl = {
+    qt4 = callPackage (kdeLocale4 "nl" {}) {};
+    qt5 = callPackage (kdeLocale5 "nl" {}) {};
+  };
+  */
+  nn = {
+    qt4 = callPackage (kdeLocale4 "nn" {}) {};
+    qt5 = callPackage (kdeLocale5 "nn" {}) {};
+  };
+  pa = {
+    qt4 = callPackage (kdeLocale4 "pa" {}) {};
+    qt5 = callPackage (kdeLocale5 "pa" {}) {};
+  };
+  pl = {
+    qt4 = callPackage (kdeLocale4 "pl" {}) {};
+    qt5 = callPackage (kdeLocale5 "pl" {}) {};
+  };
+  pt = {
+    qt4 = callPackage (kdeLocale4 "pt" {}) {};
+    qt5 = callPackage (kdeLocale5 "pt" {}) {};
+  };
+  pt_BR = {
+    qt4 = callPackage (kdeLocale4 "pt_BR" {}) {};
+    qt5 = callPackage (kdeLocale5 "pt_BR" {}) {};
+  };
+  ro = {
+    qt4 = callPackage (kdeLocale4 "ro" {}) {};
+    qt5 = callPackage (kdeLocale5 "ro" {}) {};
+  };
+  ru = {
+    qt4 = callPackage (kdeLocale4 "ru" {}) {};
+    qt5 = callPackage (kdeLocale5 "ru" {}) {};
+  };
+  sk = {
+    qt4 = callPackage (kdeLocale4 "sk" {}) {};
+    qt5 = callPackage (kdeLocale5 "sk" {}) {};
+  };
+  sl = {
+    qt4 = callPackage (kdeLocale4 "sl" {}) {};
+    qt5 = callPackage (kdeLocale5 "sl" {}) {};
+  };
+  sr = {
+    qt4 = callPackage (kdeLocale4 "sr" {}) {};
+    qt5 = callPackage (kdeLocale5 "sr" {
+      preConfigure = ''
+        sed -e 's/add_subdirectory(kdesdk)//' -i 5/sr/data/CMakeLists.txt
+      '';
+    }) {};
+  };
+  sv = {
+    qt4 = callPackage (kdeLocale4 "sv" {}) {};
+    qt5 = callPackage (kdeLocale5 "sv" {}) {};
+  };
+  tr = {
+    qt4 = callPackage (kdeLocale4 "tr" {}) {};
+    qt5 = callPackage (kdeLocale5 "tr" {}) {};
+  };
+  ug = {
+    qt4 = callPackage (kdeLocale4 "ug" {}) {};
+    qt5 = callPackage (kdeLocale5 "ug" {}) {};
+  };
+  # TODO: build broken in 15.11.80; re-enable in next release
+  /*
+  uk = {
+    qt4 = callPackage (kdeLocale4 "uk" {}) {};
+    qt5 = callPackage (kdeLocale5 "uk" {}) {};
+  };
+  */
+  wa = {
+    qt4 = callPackage (kdeLocale4 "wa" {}) {};
+    qt5 = callPackage (kdeLocale5 "wa" {}) {};
+  };
+  zh_CN = {
+    qt4 = callPackage (kdeLocale4 "zh_CN" {}) {};
+    qt5 = callPackage (kdeLocale5 "zh_CN" {}) {};
+  };
+  zh_TW = {
+    qt4 = callPackage (kdeLocale4 "zh_TW" {}) {};
+    qt5 = callPackage (kdeLocale5 "zh_TW" {}) {};
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/libkdcraw.nix b/pkgs/applications/kde-apps-15.12/libkdcraw.nix
new file mode 100644
index 000000000000..319c7fc6583d
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/libkdcraw.nix
@@ -0,0 +1,19 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, libraw
+}:
+
+kdeApp {
+  name = "libkdcraw";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    libraw
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/libkexiv2.nix b/pkgs/applications/kde-apps-15.12/libkexiv2.nix
new file mode 100644
index 000000000000..afb1ac836537
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/libkexiv2.nix
@@ -0,0 +1,19 @@
+{ kdeApp
+, lib
+, exiv2
+, extra-cmake-modules
+}:
+
+kdeApp {
+  name = "libkexiv2";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    exiv2
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/libkipi.nix b/pkgs/applications/kde-apps-15.12/libkipi.nix
new file mode 100644
index 000000000000..c23cd8578fb9
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/libkipi.nix
@@ -0,0 +1,22 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kconfig
+, ki18n
+, kservice
+, kxmlgui
+}:
+
+kdeApp {
+  name = "libkipi";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kconfig ki18n kservice kxmlgui
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/okular.nix b/pkgs/applications/kde-apps-15.12/okular.nix
new file mode 100644
index 000000000000..0691325d7a52
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/okular.nix
@@ -0,0 +1,41 @@
+{ kdeApp
+, lib
+, automoc4
+, cmake
+, perl
+, pkgconfig
+, kdelibs
+, qimageblitz
+, poppler_qt4
+, libspectre
+, libkexiv2
+, djvulibre
+, libtiff
+, freetype
+, ebook_tools
+}:
+
+kdeApp {
+  name = "okular";
+  nativeBuildInputs = [
+    automoc4
+    cmake
+    perl
+    pkgconfig
+  ];
+  buildInputs = [
+    kdelibs
+    qimageblitz
+    poppler_qt4
+    libspectre
+    libkexiv2
+    djvulibre
+    libtiff
+    freetype
+    ebook_tools
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/print-manager.nix b/pkgs/applications/kde-apps-15.12/print-manager.nix
new file mode 100644
index 000000000000..b4eab372789d
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/print-manager.nix
@@ -0,0 +1,47 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, qtdeclarative
+, cups
+, kconfig
+, kconfigwidgets
+, kdbusaddons
+, kiconthemes
+, ki18n
+, kcmutils
+, kio
+, knotifications
+, plasma-framework
+, kwidgetsaddons
+, kwindowsystem
+, kitemviews
+}:
+
+kdeApp {
+  name = "print-manager";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    cups
+    kconfig
+    kconfigwidgets
+    kdbusaddons
+    kiconthemes
+    kcmutils
+    knotifications
+    kwidgetsaddons
+    kitemviews
+  ];
+  propagatedBuildInputs = [
+    ki18n
+    kio
+    kwindowsystem
+    plasma-framework
+    qtdeclarative
+  ];
+  meta = {
+    license = [ lib.licenses.gpl2 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/applications/kde-apps-15.12/srcs.nix b/pkgs/applications/kde-apps-15.12/srcs.nix
new file mode 100644
index 000000000000..ffd12f9e242c
--- /dev/null
+++ b/pkgs/applications/kde-apps-15.12/srcs.nix
@@ -0,0 +1,1925 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  akonadi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/akonadi-15.11.80.tar.xz";
+      sha256 = "02a4j9ydxqvjv5kpp8nlw7j0jil0ryqrv39ibypcfm73hx09xxkn";
+      name = "akonadi-15.11.80.tar.xz";
+    };
+  };
+  akonadi-calendar = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/akonadi-calendar-15.11.80.tar.xz";
+      sha256 = "1cdyv10gfc5ygiz726vxzr17s6bk28bla7z8vidn9nkh922wn3k4";
+      name = "akonadi-calendar-15.11.80.tar.xz";
+    };
+  };
+  akonadi-search = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/akonadi-search-15.11.80.tar.xz";
+      sha256 = "0749i1hqwyn4l12039vq2ckm72p9ajcmr9mljsn9vcil9cvd8g82";
+      name = "akonadi-search-15.11.80.tar.xz";
+    };
+  };
+  analitza = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/analitza-15.11.80.tar.xz";
+      sha256 = "1x8l71acmg2fswwlc4pci6681nz7r1qsvbcfdw3alq76l28zmrhp";
+      name = "analitza-15.11.80.tar.xz";
+    };
+  };
+  ark = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ark-15.11.80.tar.xz";
+      sha256 = "1sj6mkzxy4gw19yclps5jn54780is5vpr526bvmbsa2vgj8njxcw";
+      name = "ark-15.11.80.tar.xz";
+    };
+  };
+  artikulate = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/artikulate-15.11.80.tar.xz";
+      sha256 = "0qxykga1kyc6viyqdsqngfvnrf0wk81h54ybrlq3bgkirnfmng07";
+      name = "artikulate-15.11.80.tar.xz";
+    };
+  };
+  audiocd-kio = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/audiocd-kio-15.11.80.tar.xz";
+      sha256 = "0l4x2gm1f6qwzvdq57h0z1zw1qkg7dah5zb2gpjz6apggw4iah00";
+      name = "audiocd-kio-15.11.80.tar.xz";
+    };
+  };
+  baloo-widgets = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/baloo-widgets-15.11.80.tar.xz";
+      sha256 = "11wf2gf64dd8xxyk32kviyxki8f0ddg86nzw5g19l9drspils6jh";
+      name = "baloo-widgets-15.11.80.tar.xz";
+    };
+  };
+  blinken = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/blinken-15.11.80.tar.xz";
+      sha256 = "1lib5mq4xy8xphxfa3ljcdzqp1kd08f1zc7ch6sfb124dv9yzpln";
+      name = "blinken-15.11.80.tar.xz";
+    };
+  };
+  bomber = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/bomber-15.11.80.tar.xz";
+      sha256 = "1rldcx532llxy22y6r1lvz6y8zh66mby5in59snzp5gv1bj6aq89";
+      name = "bomber-15.11.80.tar.xz";
+    };
+  };
+  bovo = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/bovo-15.11.80.tar.xz";
+      sha256 = "1ypna943rq6sidx2zc23r8mm61jfhsc28bdi74v1qg4ishpsjls9";
+      name = "bovo-15.11.80.tar.xz";
+    };
+  };
+  cantor = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/cantor-15.11.80.tar.xz";
+      sha256 = "0pfksygz9ng1c4vf3wfnw6w9dfr133hn7xnfdd2vymqh6bws8b34";
+      name = "cantor-15.11.80.tar.xz";
+    };
+  };
+  cervisia = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/cervisia-15.11.80.tar.xz";
+      sha256 = "0hrbxd3db71kcnvjv64184c3cqankzdnfyfjj4ar1sznvvl29836";
+      name = "cervisia-15.11.80.tar.xz";
+    };
+  };
+  dolphin = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/dolphin-15.11.80.tar.xz";
+      sha256 = "1c7i3akafqhrrv6aq992fl9a9ki2mgs6y9cd6ha320x6npl1f1rj";
+      name = "dolphin-15.11.80.tar.xz";
+    };
+  };
+  dolphin-plugins = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/dolphin-plugins-15.11.80.tar.xz";
+      sha256 = "0vn02bjwch54cg1rfrad12g773r3slhdnl9kpfy1kgjra5p2vdm9";
+      name = "dolphin-plugins-15.11.80.tar.xz";
+    };
+  };
+  dragon = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/dragon-15.11.80.tar.xz";
+      sha256 = "1vv8kxrz2444n8ffi4vq99vi7a64ywbhmy4dx6k055hzpcmh5005";
+      name = "dragon-15.11.80.tar.xz";
+    };
+  };
+  ffmpegthumbs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ffmpegthumbs-15.11.80.tar.xz";
+      sha256 = "0zcaz96rd178w22cqmlay3iq2gb3j6snyy2fd0x4xnzmhmwnvxm6";
+      name = "ffmpegthumbs-15.11.80.tar.xz";
+    };
+  };
+  filelight = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/filelight-15.11.80.tar.xz";
+      sha256 = "0i2iwrq83j2jv4kw3nakiprxdk8i9zk700pvcm9p89ls2h91gv0k";
+      name = "filelight-15.11.80.tar.xz";
+    };
+  };
+  gpgmepp = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/gpgmepp-15.11.80.tar.xz";
+      sha256 = "14igg9kpkv1762q9jjzdc3289swj5l2a21q9xj3smabf7b3mzm3d";
+      name = "gpgmepp-15.11.80.tar.xz";
+    };
+  };
+  granatier = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/granatier-15.11.80.tar.xz";
+      sha256 = "11rsgjl9fkdhwwmszj3sx97mmrks77qhj9zfwb4rgd67q6q8vrzm";
+      name = "granatier-15.11.80.tar.xz";
+    };
+  };
+  gwenview = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/gwenview-15.11.80.tar.xz";
+      sha256 = "1w67bgbsfykg0lsh7vapimgp3wmlygdq9pcwdrbdscymwhhpirj3";
+      name = "gwenview-15.11.80.tar.xz";
+    };
+  };
+  jovie = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/jovie-15.11.80.tar.xz";
+      sha256 = "1mlwm31dbph2dzsjg64rbjq7nr3i6fnh5h45xlmbq6fi1906h9kw";
+      name = "jovie-15.11.80.tar.xz";
+    };
+  };
+  juk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/juk-15.11.80.tar.xz";
+      sha256 = "0lc0x5pscqnzi5mhwsdd0qrqi8b8nwsqbqplfrbk4zlg5dvql7nl";
+      name = "juk-15.11.80.tar.xz";
+    };
+  };
+  kaccessible = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kaccessible-15.11.80.tar.xz";
+      sha256 = "0vg684xnr46iipil058vwwa75rigq3hdq2isfzhi5qxxm9n1n6ri";
+      name = "kaccessible-15.11.80.tar.xz";
+    };
+  };
+  kaccounts-integration = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kaccounts-integration-15.11.80.tar.xz";
+      sha256 = "0sbihlzd837q1p52vjc5ym7c5vsms00rl7l5wa72pd8q9haqabz8";
+      name = "kaccounts-integration-15.11.80.tar.xz";
+    };
+  };
+  kaccounts-providers = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kaccounts-providers-15.11.80.tar.xz";
+      sha256 = "12127sk2ki8hxrwap7mazz6ksqn5wf6wh6h3qb5sw1k8ngmqaxqd";
+      name = "kaccounts-providers-15.11.80.tar.xz";
+    };
+  };
+  kajongg = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kajongg-15.11.80.tar.xz";
+      sha256 = "017x84r78kf25hv9xl7ac9hsrkzxdxdzgdxhq74mgw3lsnp9vrvp";
+      name = "kajongg-15.11.80.tar.xz";
+    };
+  };
+  kalarmcal = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kalarmcal-15.11.80.tar.xz";
+      sha256 = "1h11r2j2iw2cpd2javzpsnspjzy6h5bypj29j426m77b00d8jyaw";
+      name = "kalarmcal-15.11.80.tar.xz";
+    };
+  };
+  kalgebra = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kalgebra-15.11.80.tar.xz";
+      sha256 = "160m1jvfx03dafvzz37jap023p9ap0b2f59r9ayaf1y7ldagdip5";
+      name = "kalgebra-15.11.80.tar.xz";
+    };
+  };
+  kalzium = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kalzium-15.11.80.tar.xz";
+      sha256 = "0hw9a18h3ldvilz6aawnph62mc6v9yggapkyf478d9m7faqdpmll";
+      name = "kalzium-15.11.80.tar.xz";
+    };
+  };
+  kamera = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kamera-15.11.80.tar.xz";
+      sha256 = "0zhi6aimih3szdph4vn0s7a48bn97glp0kxdy6mfkcmx4hgv59v8";
+      name = "kamera-15.11.80.tar.xz";
+    };
+  };
+  kanagram = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kanagram-15.11.80.tar.xz";
+      sha256 = "1hhpzk4yf9pxmdkydwazdvzm3iayh07wwp1p06nhd91zxgjh696y";
+      name = "kanagram-15.11.80.tar.xz";
+    };
+  };
+  kapman = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kapman-15.11.80.tar.xz";
+      sha256 = "1kdjdngsdm95w8skr21722nmv4h860gaa2zifbzkn387k348n23s";
+      name = "kapman-15.11.80.tar.xz";
+    };
+  };
+  kapptemplate = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kapptemplate-15.11.80.tar.xz";
+      sha256 = "0xs5x6hlsm41axavdr3dbaqhcr5ncjigwxzcvr0d3v58k4w55va5";
+      name = "kapptemplate-15.11.80.tar.xz";
+    };
+  };
+  kate = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kate-15.11.80.tar.xz";
+      sha256 = "0503hzhys5004d8f72j8q5vifi39shfkdvj3kvs1wy4naipg6906";
+      name = "kate-15.11.80.tar.xz";
+    };
+  };
+  katomic = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/katomic-15.11.80.tar.xz";
+      sha256 = "0brp5zxaaw9ymyvdbw47c72s9ms6q0prgn327qmnzjpcvi1nagiv";
+      name = "katomic-15.11.80.tar.xz";
+    };
+  };
+  kblackbox = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kblackbox-15.11.80.tar.xz";
+      sha256 = "06qpbivv7jmj900pizs35kivsyz34z6smw3vjmczh5cg6wccjwwc";
+      name = "kblackbox-15.11.80.tar.xz";
+    };
+  };
+  kblocks = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kblocks-15.11.80.tar.xz";
+      sha256 = "0rf60pa73kj5zcyvswpx0pwwrkxif2z8gj75cj1qg20nl15xzcv9";
+      name = "kblocks-15.11.80.tar.xz";
+    };
+  };
+  kblog = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kblog-15.11.80.tar.xz";
+      sha256 = "09ywpx0pkl518hshlcbqx5g7kfrivz0j440xkp7slzaw5ydslh9w";
+      name = "kblog-15.11.80.tar.xz";
+    };
+  };
+  kbounce = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kbounce-15.11.80.tar.xz";
+      sha256 = "1brgv8zc9zw6hkg2315dhnqpk4s2wdv223pxxp7dqcjg28zmr8fs";
+      name = "kbounce-15.11.80.tar.xz";
+    };
+  };
+  kbreakout = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kbreakout-15.11.80.tar.xz";
+      sha256 = "1rr606dgsj75cy665q94cdqz68glc0n8r59ihmwgjkz2xg06cpnc";
+      name = "kbreakout-15.11.80.tar.xz";
+    };
+  };
+  kbruch = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kbruch-15.11.80.tar.xz";
+      sha256 = "1hqnxj4f005jbhhbhjac5lzpmhbfgmsw4mhqavw79v42nldmaygj";
+      name = "kbruch-15.11.80.tar.xz";
+    };
+  };
+  kcachegrind = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcachegrind-15.11.80.tar.xz";
+      sha256 = "0rc308n9yrjfmdg8v0fz4qmm9p8vvvihw9mvc7n31kpfwwlymx3n";
+      name = "kcachegrind-15.11.80.tar.xz";
+    };
+  };
+  kcalc = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcalc-15.11.80.tar.xz";
+      sha256 = "1dvnj2fnl6rjcfw373xplchzkkl63lr0h1b1d0h2l36i7j37g0ih";
+      name = "kcalc-15.11.80.tar.xz";
+    };
+  };
+  kcalcore = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcalcore-15.11.80.tar.xz";
+      sha256 = "1kxw4cvz72flb3587wzx1p8vykwhwjbsw2xq10z6zvk55s8y9g8h";
+      name = "kcalcore-15.11.80.tar.xz";
+    };
+  };
+  kcalutils = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcalutils-15.11.80.tar.xz";
+      sha256 = "0gnw0j92nk9gf40gn0ikbmij8qd3p8zsqwwcq8rbmrlh6g31cb94";
+      name = "kcalutils-15.11.80.tar.xz";
+    };
+  };
+  kcharselect = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcharselect-15.11.80.tar.xz";
+      sha256 = "0sdq3vwkcjm59gbyq7hz3lhpkwrhb6xv4rrdpw9wfhh50gy1ckif";
+      name = "kcharselect-15.11.80.tar.xz";
+    };
+  };
+  kcolorchooser = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcolorchooser-15.11.80.tar.xz";
+      sha256 = "1i2s7ay2r0ymfrhcnmvza627ni2m955c9m7c085h5qchgmljp994";
+      name = "kcolorchooser-15.11.80.tar.xz";
+    };
+  };
+  kcontacts = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcontacts-15.11.80.tar.xz";
+      sha256 = "1wa45vyd7j3zbi1wsz4z0mkhf2ii4qnb7pd8rshvh4z929f1kqg8";
+      name = "kcontacts-15.11.80.tar.xz";
+    };
+  };
+  kcron = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kcron-15.11.80.tar.xz";
+      sha256 = "10dndgavnmwagkfylbji23kvyblnj5p7drygds6md0dqmcdnlvg6";
+      name = "kcron-15.11.80.tar.xz";
+    };
+  };
+  kde-baseapps = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-baseapps-15.11.80.tar.xz";
+      sha256 = "14d5rx0rl6673h949b0c51pxx0a604wsv1sdwyd44ym6z7p5nvab";
+      name = "kde-baseapps-15.11.80.tar.xz";
+    };
+  };
+  kdebugsettings = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdebugsettings-15.11.80.tar.xz";
+      sha256 = "1z0h2ng4v287bb1pjwfdq2slhy6ph516k458jyjsv2mgkjfi5fhi";
+      name = "kdebugsettings-15.11.80.tar.xz";
+    };
+  };
+  kde-dev-scripts = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-dev-scripts-15.11.80.tar.xz";
+      sha256 = "001396pg0jgy3rdk44fi3c2bavqzbfryi75d0ldn33jzhpa2l7sl";
+      name = "kde-dev-scripts-15.11.80.tar.xz";
+    };
+  };
+  kde-dev-utils = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-dev-utils-15.11.80.tar.xz";
+      sha256 = "0jkmgdap3win3znz089nc8znpa001scs0la7rni1a3fh7fm6x1pc";
+      name = "kde-dev-utils-15.11.80.tar.xz";
+    };
+  };
+  kdeedu-data = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdeedu-data-15.11.80.tar.xz";
+      sha256 = "17mfb3xp5xpbx6wfs88frdqh9732jfliv4kq5nba8mh3h8vrnrrb";
+      name = "kdeedu-data-15.11.80.tar.xz";
+    };
+  };
+  kdegraphics-mobipocket = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdegraphics-mobipocket-15.11.80.tar.xz";
+      sha256 = "1yydb4g0dd9pfq8lypp245y42zk18f63khp7na61c04k04d6vfwl";
+      name = "kdegraphics-mobipocket-15.11.80.tar.xz";
+    };
+  };
+  kdegraphics-strigi-analyzer = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdegraphics-strigi-analyzer-15.11.80.tar.xz";
+      sha256 = "0z0gx48rjxad45ar4spppxndpr13zx4lvb8zx2whpdbhf43a8xng";
+      name = "kdegraphics-strigi-analyzer-15.11.80.tar.xz";
+    };
+  };
+  kdegraphics-thumbnailers = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdegraphics-thumbnailers-15.11.80.tar.xz";
+      sha256 = "0gpwv1d8v2x631p2zdpq5b6wbr5zjvawh04pfajkbi45iby9z156";
+      name = "kdegraphics-thumbnailers-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ar = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ar-15.11.80.tar.xz";
+      sha256 = "07hdcqm0f5i47g7vzgdc7mhn03hv0nbrww24xqx7kmzxmq8ficik";
+      name = "kde-l10n-ar-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-bg = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-bg-15.11.80.tar.xz";
+      sha256 = "1cx7vax6n27ai54zpxibi9q2v1ilkzw5vs4zk7y7fr3r8llsn3ci";
+      name = "kde-l10n-bg-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-bs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-bs-15.11.80.tar.xz";
+      sha256 = "1nw5h67j7qis4h127f101c5b5zc82r2pwfb7rhc0jg8fyxrkb0l9";
+      name = "kde-l10n-bs-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ca = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ca-15.11.80.tar.xz";
+      sha256 = "1x6p2bklh2qf047ws9jincbgk33c9xsg20xsyfazp7x4iyrsw3lv";
+      name = "kde-l10n-ca-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ca_valencia = {
+    version = "ca_valencia-15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ca@valencia-15.11.80.tar.xz";
+      sha256 = "1n58flzasr0r64pqhh8j7rizz0w3h9xdjhlj8c18mm50xyp011bq";
+      name = "kde-l10n-ca_valencia-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-cs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-cs-15.11.80.tar.xz";
+      sha256 = "0mnwbb9s2x2pl168awxygrah8a8yzn2zlsrh7fp9kbhiypwr8gvl";
+      name = "kde-l10n-cs-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-da = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-da-15.11.80.tar.xz";
+      sha256 = "0igc9dzj7l7n4kznlij0myvqsdcm2a2hf80j23wh810d1fkgg16a";
+      name = "kde-l10n-da-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-de = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-de-15.11.80.tar.xz";
+      sha256 = "1mwaiapzailc644j5qcmac3m3h5jg7swia21gshdpywcjisrrka7";
+      name = "kde-l10n-de-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-el = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-el-15.11.80.tar.xz";
+      sha256 = "1f0nj7lh2hgs6yxwxcgmc9ydiy294d2pfxffqg3nvk6r7qxxr62i";
+      name = "kde-l10n-el-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-en_GB = {
+    version = "en_GB-15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-en_GB-15.11.80.tar.xz";
+      sha256 = "05kxsfmj6p3w10ily3yn3l53zgjib0v10whq8ls5l99aygws90y3";
+      name = "kde-l10n-en_GB-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-eo = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-eo-15.11.80.tar.xz";
+      sha256 = "1wial0ky930cg66a5f0a7j7f57m7c8nyj62v6c66irdskfm5gh9d";
+      name = "kde-l10n-eo-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-es = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-es-15.11.80.tar.xz";
+      sha256 = "02jz8lm6rz14vp0abycnyghwz87vc6qca2371p8bnsz4sggqbarj";
+      name = "kde-l10n-es-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-et = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-et-15.11.80.tar.xz";
+      sha256 = "1da4jz8a8ixkalwvf27mknchrr761a0rifjghjl2wlr463ivba4q";
+      name = "kde-l10n-et-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-eu = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-eu-15.11.80.tar.xz";
+      sha256 = "1l0clwn2h6ph6jgnv3vrfx2ww04rm55byrndivm78x1i8vci8jx0";
+      name = "kde-l10n-eu-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-fa = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-fa-15.11.80.tar.xz";
+      sha256 = "0v2vcpyvih2xmx69yg1d9wyh988f3439g66vk01wqp2gsa505r1p";
+      name = "kde-l10n-fa-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-fi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-fi-15.11.80.tar.xz";
+      sha256 = "0shxcr6xndxz2136nx1qhm4kbfcgxw3j8fnby1jgjqz8shfjz318";
+      name = "kde-l10n-fi-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-fr = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-fr-15.11.80.tar.xz";
+      sha256 = "1b1cs3fwzknhm3rd2ipbgx63wkn7idck825wvpjbgipg65q6a788";
+      name = "kde-l10n-fr-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ga = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ga-15.11.80.tar.xz";
+      sha256 = "05z536w3djr5p89vbyc1rj8d9z4cwgym74fv08jaz816iq1cz8ww";
+      name = "kde-l10n-ga-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-gl = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-gl-15.11.80.tar.xz";
+      sha256 = "0jrv68qjcrikgpnqsgdgxj6nl0m2prbgj418fjns1c4c4lna43qk";
+      name = "kde-l10n-gl-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-he = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-he-15.11.80.tar.xz";
+      sha256 = "0h71g3rqsvfwkvj2rwf6c0mma6qmp2h0nrbc3biqijgjxl8vyd5s";
+      name = "kde-l10n-he-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-hi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-hi-15.11.80.tar.xz";
+      sha256 = "1blwzqk0v9455c1lsvb9q5qf0x2lj0zj5av8vxbicfd35hr6hc6y";
+      name = "kde-l10n-hi-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-hr = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-hr-15.11.80.tar.xz";
+      sha256 = "11zz6zjk13hqd9i409786d6xinkpyaynlza2dkql104kzymbyknf";
+      name = "kde-l10n-hr-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-hu = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-hu-15.11.80.tar.xz";
+      sha256 = "18hzyyv5ijl29b27q9jfm9sq0w82638yb4gjabq7rkngy0h2v02x";
+      name = "kde-l10n-hu-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ia = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ia-15.11.80.tar.xz";
+      sha256 = "013acls9vqfhpr6yzfpg6c3yn87myrznq2qxm2n4lgmksibw8l38";
+      name = "kde-l10n-ia-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-id = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-id-15.11.80.tar.xz";
+      sha256 = "0l1vsa5s6zdiymw67iy28fsarh2lgi4wpcma7nnbj90jf4l7zj0g";
+      name = "kde-l10n-id-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-is = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-is-15.11.80.tar.xz";
+      sha256 = "07rs26zl15qar6pn6mg3ihfx78zakqn5mbvqv7f0zjsfd6fmmkxx";
+      name = "kde-l10n-is-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-it = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-it-15.11.80.tar.xz";
+      sha256 = "0x7qi9rgma6l7i80r5i37jh35zfi4j6axk6ha1h9dbmyfw9p1fkr";
+      name = "kde-l10n-it-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ja = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ja-15.11.80.tar.xz";
+      sha256 = "0dh8k8gyimzdhmycz8711l2hn0rddprywqz1brs7m43shx8cqxk7";
+      name = "kde-l10n-ja-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-kk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-kk-15.11.80.tar.xz";
+      sha256 = "1r9w4yw3fc4v0pgy130phvapy69p1b7j1gzayg60lakckr3wbpd8";
+      name = "kde-l10n-kk-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-km = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-km-15.11.80.tar.xz";
+      sha256 = "10swsr4zvrv42d2i2w45kqmaqkba7an7w6f519qqsnmp4ykcl0dk";
+      name = "kde-l10n-km-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ko = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ko-15.11.80.tar.xz";
+      sha256 = "07ly80fbz0kqiam3ykfilv6q4y0pa6nzi9chxas830xzzkygri9k";
+      name = "kde-l10n-ko-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-lt = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-lt-15.11.80.tar.xz";
+      sha256 = "11xq8wv3rcg8yz76mnb0052xd6h8l5wis5c9k6lrpqik57kg06ic";
+      name = "kde-l10n-lt-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-lv = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-lv-15.11.80.tar.xz";
+      sha256 = "0wxd9cbzgw404zvi94zs71sx65cai8xhks8jb6j5g0086iscar5a";
+      name = "kde-l10n-lv-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-mr = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-mr-15.11.80.tar.xz";
+      sha256 = "116pk7fzba0k32pl8mdgaq54xxhqg43y7vv1ra0dgilf0znpibyv";
+      name = "kde-l10n-mr-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-nb = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-nb-15.11.80.tar.xz";
+      sha256 = "03y3qbf8nfbqh0c2saznv12igg82bj56i791ksxcphlm5065rlzq";
+      name = "kde-l10n-nb-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-nds = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-nds-15.11.80.tar.xz";
+      sha256 = "0wr842xfclxbx5w30f2aig2rdq5p2vrhd91kr5v9zcidgddms2fj";
+      name = "kde-l10n-nds-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-nl = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-nl-15.11.80.tar.xz";
+      sha256 = "110fwbf2b6ss21vrswj3d3d9zlr1n2p44vs3znwcrv9pjds2v8jg";
+      name = "kde-l10n-nl-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-nn = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-nn-15.11.80.tar.xz";
+      sha256 = "073zcpwx8acv1hdwkk8w7nzkrg6qfb4w4lvah8gkgjhl2r6h4lkr";
+      name = "kde-l10n-nn-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-pa = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-pa-15.11.80.tar.xz";
+      sha256 = "1x99m4rj99wdlyiqmgl9vs125vdjl2g46nk1q0xb2xz7znn003na";
+      name = "kde-l10n-pa-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-pl = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-pl-15.11.80.tar.xz";
+      sha256 = "0hxsdbcclgnalkzpvrl948l4yb122lg8bhxg0mkcm23jmvi594cv";
+      name = "kde-l10n-pl-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-pt = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-pt-15.11.80.tar.xz";
+      sha256 = "1wijadwzv119dyx7wpddwiyc4jip1lqwkhb01dvyq1dzzkjf39f4";
+      name = "kde-l10n-pt-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-pt_BR = {
+    version = "pt_BR-15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-pt_BR-15.11.80.tar.xz";
+      sha256 = "19ki8sf4mj8fjrf2f7a43bj8bnqg9bc0m6982ba558nxdb3lr7fs";
+      name = "kde-l10n-pt_BR-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ro = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ro-15.11.80.tar.xz";
+      sha256 = "1p79xvd49vs81gn18pzmpjz6qy974ryn3ywvqda920nb1wfaqh1k";
+      name = "kde-l10n-ro-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ru = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ru-15.11.80.tar.xz";
+      sha256 = "04x6ym1gs1n6krg9k876gfk7d4ljrxvwv5lmagmjadx7dhfvy4ym";
+      name = "kde-l10n-ru-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-sk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-sk-15.11.80.tar.xz";
+      sha256 = "0mdy9fhppnm5nkanb7q2myinngmnf6hq3iywvhg66iv6nsmbjdw9";
+      name = "kde-l10n-sk-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-sl = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-sl-15.11.80.tar.xz";
+      sha256 = "06nd0wjni4sfmiza6wb8m3mdrbkkvk0k5ymvar396wh8037mjp64";
+      name = "kde-l10n-sl-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-sr = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-sr-15.11.80.tar.xz";
+      sha256 = "1pj9k4j6c5hfzl1lz7vyakggl6p8drrfy5ln7m69s1qy4skraf8x";
+      name = "kde-l10n-sr-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-sv = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-sv-15.11.80.tar.xz";
+      sha256 = "18p880a66iz258lbc8hn3h217qcigi3glzml5r9yq2d8kmr1gfwg";
+      name = "kde-l10n-sv-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-tr = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-tr-15.11.80.tar.xz";
+      sha256 = "0r3sb0i1c0zzywsvkxzmhr67592ss6xzdaqmams6qa37znpxwjw3";
+      name = "kde-l10n-tr-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-ug = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-ug-15.11.80.tar.xz";
+      sha256 = "0daw8qi6bn26xhvxnz3rs7xxqi5azhmj57ay8p62p84d6wfbswsw";
+      name = "kde-l10n-ug-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-uk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-uk-15.11.80.tar.xz";
+      sha256 = "0sfgsj4n0v0c99lmzbicjsyysf1n49413509lh0ljgmsr7v4mskw";
+      name = "kde-l10n-uk-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-wa = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-wa-15.11.80.tar.xz";
+      sha256 = "04v29qq4n48lkql4nyxx4v95jl9v4gh5wxjqrimycw3n2xmrlbnb";
+      name = "kde-l10n-wa-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-zh_CN = {
+    version = "zh_CN-15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-zh_CN-15.11.80.tar.xz";
+      sha256 = "15aa0b3bry1x87v9vwsylp06wzirq98jii1qfbkvh4cf17l23yvb";
+      name = "kde-l10n-zh_CN-15.11.80.tar.xz";
+    };
+  };
+  kde-l10n-zh_TW = {
+    version = "zh_TW-15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-l10n/kde-l10n-zh_TW-15.11.80.tar.xz";
+      sha256 = "0llisjlc6w13gqya7qgq9cxrqh8aicpz2q4z4afn770dqm02jbvn";
+      name = "kde-l10n-zh_TW-15.11.80.tar.xz";
+    };
+  };
+  kdenetwork-filesharing = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdenetwork-filesharing-15.11.80.tar.xz";
+      sha256 = "0rip7k13lfpblg2lbpj6y1dj6j0gmr6ydqdqkcnb37lgrjr1cmn0";
+      name = "kdenetwork-filesharing-15.11.80.tar.xz";
+    };
+  };
+  kdenetwork-strigi-analyzers = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdenetwork-strigi-analyzers-15.11.80.tar.xz";
+      sha256 = "097m04s0vflpfpkbf55k4drbs9w8mp1a80chwyn623mmvg2bdr92";
+      name = "kdenetwork-strigi-analyzers-15.11.80.tar.xz";
+    };
+  };
+  kdenlive = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdenlive-15.11.80.tar.xz";
+      sha256 = "0ms8q5daq8kklv73yhyh8905766zy6v26gbjcrsj4pvql3r6rbs4";
+      name = "kdenlive-15.11.80.tar.xz";
+    };
+  };
+  kdepim = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdepim-15.11.80.tar.xz";
+      sha256 = "0zjrjlsd49c3zk0l12b9ijl62y8jmgkmllgvxkpzrblpn1mqjjls";
+      name = "kdepim-15.11.80.tar.xz";
+    };
+  };
+  kdepimlibs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdepimlibs-15.11.80.tar.xz";
+      sha256 = "06z926a68b8k02w89qqddlarcnrr8wrpgvgg021xqnykgar3dy7h";
+      name = "kdepimlibs-15.11.80.tar.xz";
+    };
+  };
+  kdepim-runtime = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdepim-runtime-15.11.80.tar.xz";
+      sha256 = "07xirx1z54xa7r4gcqfp0sz3r0vgi5f75klcmwna21j53hzc387r";
+      name = "kdepim-runtime-15.11.80.tar.xz";
+    };
+  };
+  kde-runtime = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kde-runtime-15.11.80.tar.xz";
+      sha256 = "1470pp11nc8z1x6wr5b8cpvx6fzflzx2ds06zl2yrq96acl5g8sp";
+      name = "kde-runtime-15.11.80.tar.xz";
+    };
+  };
+  kdesdk-kioslaves = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdesdk-kioslaves-15.11.80.tar.xz";
+      sha256 = "1gm8k4xnkija07kssakpli32isf5455hfvq5pnciqlzf7lllmib7";
+      name = "kdesdk-kioslaves-15.11.80.tar.xz";
+    };
+  };
+  kdesdk-strigi-analyzers = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdesdk-strigi-analyzers-15.11.80.tar.xz";
+      sha256 = "0h6pnssm3nfnk3fqva3qwbkw82vxrzkg7incg2qzpvk0pwbxgyz9";
+      name = "kdesdk-strigi-analyzers-15.11.80.tar.xz";
+    };
+  };
+  kdesdk-thumbnailers = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdesdk-thumbnailers-15.11.80.tar.xz";
+      sha256 = "0wm4gy020lz7mlgn6naixy4fz72xscdlg1vmpw37p4dmxzphmdxy";
+      name = "kdesdk-thumbnailers-15.11.80.tar.xz";
+    };
+  };
+  kdewebdev = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdewebdev-15.11.80.tar.xz";
+      sha256 = "00qmfas4d2r1gh8w421zmxyfra1xbc76zdisyv48phhw80rpqwyx";
+      name = "kdewebdev-15.11.80.tar.xz";
+    };
+  };
+  kdf = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdf-15.11.80.tar.xz";
+      sha256 = "19gazwf02kzga0980y6ixj5l56hjmzfms51zh0n7wl1cr8dbgg5i";
+      name = "kdf-15.11.80.tar.xz";
+    };
+  };
+  kdiamond = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kdiamond-15.11.80.tar.xz";
+      sha256 = "0pp01c8n9m208hknigwcq5nvw5anf4621kip232iibw7pkwk8x2i";
+      name = "kdiamond-15.11.80.tar.xz";
+    };
+  };
+  kfloppy = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kfloppy-15.11.80.tar.xz";
+      sha256 = "1935k4gm32kspjvb05jr24q1b3r31f96vs9g2s6b9s5a63b89w5j";
+      name = "kfloppy-15.11.80.tar.xz";
+    };
+  };
+  kfourinline = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kfourinline-15.11.80.tar.xz";
+      sha256 = "0y5hv4gr0nyilizcd90xka34n6xgqzgh9gh8gy8mw76xklnd1mfd";
+      name = "kfourinline-15.11.80.tar.xz";
+    };
+  };
+  kgeography = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kgeography-15.11.80.tar.xz";
+      sha256 = "01jzl84dc6jf48dx4i6vdv9mgnjvv92ssnamqkgs4jw2iva22s6f";
+      name = "kgeography-15.11.80.tar.xz";
+    };
+  };
+  kget = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kget-15.11.80.tar.xz";
+      sha256 = "17q7vpnx89zrgqgybxc1vjc596vgh82fpanqfbym5n0bxcpap8q5";
+      name = "kget-15.11.80.tar.xz";
+    };
+  };
+  kgoldrunner = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kgoldrunner-15.11.80.tar.xz";
+      sha256 = "0k815mkmd82aa6djyblm71ddl94796b52c0gf6c5dsg42r29w10f";
+      name = "kgoldrunner-15.11.80.tar.xz";
+    };
+  };
+  kgpg = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kgpg-15.11.80.tar.xz";
+      sha256 = "0p088fb8mhfgvp0zihdda0554yw8k90f1xkd6hc4c9ngjc7d2pjf";
+      name = "kgpg-15.11.80.tar.xz";
+    };
+  };
+  khangman = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/khangman-15.11.80.tar.xz";
+      sha256 = "1lz2qgqddq18dczs9cax0r5pay9yxqn63j7msch0y99x33hfyidn";
+      name = "khangman-15.11.80.tar.xz";
+    };
+  };
+  kholidays = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kholidays-15.11.80.tar.xz";
+      sha256 = "086d0vbzz2xcq6ibd7ia97lz89452gz3cxb879rvqxz3cyhhyfwr";
+      name = "kholidays-15.11.80.tar.xz";
+    };
+  };
+  kidentitymanagement = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kidentitymanagement-15.11.80.tar.xz";
+      sha256 = "1j159alnxhvq4mpd2vr7jnj091x58gv47ms1rxk865xc66xv956s";
+      name = "kidentitymanagement-15.11.80.tar.xz";
+    };
+  };
+  kig = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kig-15.11.80.tar.xz";
+      sha256 = "0w19w1bmj2grinq6s7biqqbdv9njdwqsynncb605ldwfvxnyyw7w";
+      name = "kig-15.11.80.tar.xz";
+    };
+  };
+  kigo = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kigo-15.11.80.tar.xz";
+      sha256 = "169cl12z1mjk4jn3c1ncq2q5adravsqraqxp7zq63yz819mv2mxj";
+      name = "kigo-15.11.80.tar.xz";
+    };
+  };
+  killbots = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/killbots-15.11.80.tar.xz";
+      sha256 = "13l02ndf3nyqq2qisfb4ap87z5jf1iplcs7mdj2iswmr57vpc16g";
+      name = "killbots-15.11.80.tar.xz";
+    };
+  };
+  kimap = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kimap-15.11.80.tar.xz";
+      sha256 = "12wcgjgkg8fk91g7f9g7kw2sp1783kv478m521rhl1cy345250sw";
+      name = "kimap-15.11.80.tar.xz";
+    };
+  };
+  kio-extras = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kio-extras-15.11.80.tar.xz";
+      sha256 = "19i8dgs5spayilhc7wyn2g5f30yy9dkzn7vzj2fxd3bwvl8agn2a";
+      name = "kio-extras-15.11.80.tar.xz";
+    };
+  };
+  kiriki = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kiriki-15.11.80.tar.xz";
+      sha256 = "0zrpvz8av3xcnlmms7akis1897pyqc6j9ysmv36gg4bsjj2g7ng3";
+      name = "kiriki-15.11.80.tar.xz";
+    };
+  };
+  kiten = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kiten-15.11.80.tar.xz";
+      sha256 = "0ci4wq5hp4dbmrb511m1pz6kyr2knl7aa82sd9pphndfg64l0mpi";
+      name = "kiten-15.11.80.tar.xz";
+    };
+  };
+  kjumpingcube = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kjumpingcube-15.11.80.tar.xz";
+      sha256 = "121dd6gly5dqr85rvwnqaf9ssbaqlmhlg0crcs3idj9dwag9abvi";
+      name = "kjumpingcube-15.11.80.tar.xz";
+    };
+  };
+  kldap = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kldap-15.11.80.tar.xz";
+      sha256 = "1y5g13amhl14wdbb4sxdndrhcixc9xq0glrz17wz42w2jvsf1nsb";
+      name = "kldap-15.11.80.tar.xz";
+    };
+  };
+  klettres = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/klettres-15.11.80.tar.xz";
+      sha256 = "1yiaz0ac9s99blqkb70228k5c575z05flqwmn1g13gdh8cyp41pj";
+      name = "klettres-15.11.80.tar.xz";
+    };
+  };
+  klickety = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/klickety-15.11.80.tar.xz";
+      sha256 = "09801vm45llrd8h1r9xb4ch1za98scihs655d0g8v938zqm0mzsz";
+      name = "klickety-15.11.80.tar.xz";
+    };
+  };
+  klines = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/klines-15.11.80.tar.xz";
+      sha256 = "1ssg07a48ymh3kl7pgd9wvfqf1q4kysl3c2ygiassl2dzk8inn6c";
+      name = "klines-15.11.80.tar.xz";
+    };
+  };
+  kmag = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmag-15.11.80.tar.xz";
+      sha256 = "0pdm8jj8h0r2xny1aa3nkrbyl4kvmamx49m3cvyv9kcnvabs6hhs";
+      name = "kmag-15.11.80.tar.xz";
+    };
+  };
+  kmahjongg = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmahjongg-15.11.80.tar.xz";
+      sha256 = "036wckckjdm1hwpb4lpw5djm41faih22466abmqiw6327dddwysy";
+      name = "kmahjongg-15.11.80.tar.xz";
+    };
+  };
+  kmailtransport = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmailtransport-15.11.80.tar.xz";
+      sha256 = "0wl27x4z31lpbphx8bsb8kacpnbgcjds4a6ipdgp2xcxqxfixxdl";
+      name = "kmailtransport-15.11.80.tar.xz";
+    };
+  };
+  kmbox = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmbox-15.11.80.tar.xz";
+      sha256 = "0ijdzizjc2vz3w684ny8rj92hpjmcsaqmh9q1vp2ffjfvz5qjppm";
+      name = "kmbox-15.11.80.tar.xz";
+    };
+  };
+  kmime = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmime-15.11.80.tar.xz";
+      sha256 = "1m6n6waap6y9afff5cqldi08dwl5kk002y13m8l8yjxk056qgw06";
+      name = "kmime-15.11.80.tar.xz";
+    };
+  };
+  kmines = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmines-15.11.80.tar.xz";
+      sha256 = "0h29ibkcwlwj3npmkdwii652n5gwhl8xvm31xng93ap98qaawp1b";
+      name = "kmines-15.11.80.tar.xz";
+    };
+  };
+  kmix = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmix-15.11.80.tar.xz";
+      sha256 = "0vry36l9rjbq44z022q4m1zgdgmhw9n7yr7920zq0wiq64qpm98w";
+      name = "kmix-15.11.80.tar.xz";
+    };
+  };
+  kmousetool = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmousetool-15.11.80.tar.xz";
+      sha256 = "0hby69lj0n5swn4zk8mxiba27g4x8ci1cwcc9pxgbn7yc241zbhb";
+      name = "kmousetool-15.11.80.tar.xz";
+    };
+  };
+  kmouth = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmouth-15.11.80.tar.xz";
+      sha256 = "1mi0lm725s22nal01w7jzq4lfybk0qdln84q5yficpx13f7917fn";
+      name = "kmouth-15.11.80.tar.xz";
+    };
+  };
+  kmplot = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kmplot-15.11.80.tar.xz";
+      sha256 = "1979nlcgil7qg334944p439nvq4hnc2nlql321s06dp03a8k6cf5";
+      name = "kmplot-15.11.80.tar.xz";
+    };
+  };
+  knavalbattle = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/knavalbattle-15.11.80.tar.xz";
+      sha256 = "12wbj8nrzjydykvfj1hgpgmwivsipzd5fw5w9k9yi30bgvnryjxw";
+      name = "knavalbattle-15.11.80.tar.xz";
+    };
+  };
+  knetwalk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/knetwalk-15.11.80.tar.xz";
+      sha256 = "15w99pigi8q0282j9sl98lddrivdm510q3pk3pm2mwwc7pi9gpc9";
+      name = "knetwalk-15.11.80.tar.xz";
+    };
+  };
+  kolf = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kolf-15.11.80.tar.xz";
+      sha256 = "1rdj30lyihhn1d64d3k0viw0x1acn3j6cwqjsvzcd50zbhrkcj85";
+      name = "kolf-15.11.80.tar.xz";
+    };
+  };
+  kollision = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kollision-15.11.80.tar.xz";
+      sha256 = "1hycqsp4j3rargpprfwqshmmr4g4vjd8145a0782ha0cj14ndrr8";
+      name = "kollision-15.11.80.tar.xz";
+    };
+  };
+  kolourpaint = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kolourpaint-15.11.80.tar.xz";
+      sha256 = "1walxy7i9b6anb3sa4nj43m8n4mkcnm87i92fjspb7hm029bj8z1";
+      name = "kolourpaint-15.11.80.tar.xz";
+    };
+  };
+  kompare = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kompare-15.11.80.tar.xz";
+      sha256 = "10qvjqvy1dgzw1ywbza8z4ia2hcman0nlha7czy0lr2phf05rw8b";
+      name = "kompare-15.11.80.tar.xz";
+    };
+  };
+  konquest = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/konquest-15.11.80.tar.xz";
+      sha256 = "0jkjncr5kb5qdqykvc4wksv5kj75fijnb6mzahx6ivcgaxp4jff8";
+      name = "konquest-15.11.80.tar.xz";
+    };
+  };
+  konsole = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/konsole-15.11.80.tar.xz";
+      sha256 = "0vgzqnd27ab48rc6mb8hqhr8yk0qf8ygz0mgbhz4aswwk08dm0k0";
+      name = "konsole-15.11.80.tar.xz";
+    };
+  };
+  kontactinterface = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kontactinterface-15.11.80.tar.xz";
+      sha256 = "0ywjvwx3y007mi1g0r9gq1vrcqdfgipk5jralxb91mzxrml2af8a";
+      name = "kontactinterface-15.11.80.tar.xz";
+    };
+  };
+  kopete = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kopete-15.11.80.tar.xz";
+      sha256 = "0jk39agyl9nx4gkwff23aiq3lmnaz4w9xcfbhm906p7072ma82zj";
+      name = "kopete-15.11.80.tar.xz";
+    };
+  };
+  kpat = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kpat-15.11.80.tar.xz";
+      sha256 = "07vchzgf5g92g6zf9slg3x0166fs9s6imysvs2lhin9adwawpbfj";
+      name = "kpat-15.11.80.tar.xz";
+    };
+  };
+  kpimtextedit = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kpimtextedit-15.11.80.tar.xz";
+      sha256 = "1lx2a183p97ixx65f4aqn0k5avb124sm2rzgpj5mjnhqwxfc3fs7";
+      name = "kpimtextedit-15.11.80.tar.xz";
+    };
+  };
+  kppp = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kppp-15.11.80.tar.xz";
+      sha256 = "1j2kyp3jagp2grhbp5hcszq7h3lz43x8k2mfh5cahfkkzn88yqws";
+      name = "kppp-15.11.80.tar.xz";
+    };
+  };
+  kqtquickcharts = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kqtquickcharts-15.11.80.tar.xz";
+      sha256 = "1ssbljhwj5idci7z9hd70pv7b7bmrc87x4k0fxpqayclgwi0iijf";
+      name = "kqtquickcharts-15.11.80.tar.xz";
+    };
+  };
+  krdc = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/krdc-15.11.80.tar.xz";
+      sha256 = "1vhd01zf8w8555pp6b5d9vn92y0nm4r4cksiwvklqsrlv4p3yscc";
+      name = "krdc-15.11.80.tar.xz";
+    };
+  };
+  kremotecontrol = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kremotecontrol-15.11.80.tar.xz";
+      sha256 = "19hmq74nx074h5vhdcxkdqqdz58vkwpspc3dbyk8lypwd28xb09d";
+      name = "kremotecontrol-15.11.80.tar.xz";
+    };
+  };
+  kreversi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kreversi-15.11.80.tar.xz";
+      sha256 = "1zd3lds1rrvbwxrv7qm2pm4pb0ki8szzv1bxpf18kywvw6kb40cr";
+      name = "kreversi-15.11.80.tar.xz";
+    };
+  };
+  krfb = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/krfb-15.11.80.tar.xz";
+      sha256 = "10873di286pgzadlrz4c96b4j2kajxin2wmys7y2lbv6cf0vya2i";
+      name = "krfb-15.11.80.tar.xz";
+    };
+  };
+  kross-interpreters = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kross-interpreters-15.11.80.tar.xz";
+      sha256 = "0zl0f3gh80inmb2wv1jpsxqd0pqaiaa6hkma756mhgxjb90shz3m";
+      name = "kross-interpreters-15.11.80.tar.xz";
+    };
+  };
+  kruler = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kruler-15.11.80.tar.xz";
+      sha256 = "188mya8phcjlp1a8cf2mkkmrg38bwgclgqm36wk181f03cvrqwhi";
+      name = "kruler-15.11.80.tar.xz";
+    };
+  };
+  ksaneplugin = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksaneplugin-15.11.80.tar.xz";
+      sha256 = "1n42i649vcgmv80vacvf1xwa99ay1sz1csi6jc1y09qk83cwdfpa";
+      name = "ksaneplugin-15.11.80.tar.xz";
+    };
+  };
+  kscd = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kscd-15.11.80.tar.xz";
+      sha256 = "1xgb7qvqhg9mlxi09ggqs2l6ybs6wilabp6hbzk1r1zqf44fvvh1";
+      name = "kscd-15.11.80.tar.xz";
+    };
+  };
+  kshisen = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kshisen-15.11.80.tar.xz";
+      sha256 = "0wzran4wdb4zjf4qzj08hzzf3mqzi6dds0yhfv2mwwpw59bba2y4";
+      name = "kshisen-15.11.80.tar.xz";
+    };
+  };
+  ksirk = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksirk-15.11.80.tar.xz";
+      sha256 = "0ciab5mxqli299x084cig8vrlxsirzjvqxzmvk6pz0jf4g8jl797";
+      name = "ksirk-15.11.80.tar.xz";
+    };
+  };
+  ksnakeduel = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksnakeduel-15.11.80.tar.xz";
+      sha256 = "1p0fcjm06a9klb9hrclxs5jskflfb5c3ix7w3b23ql1798nml4f3";
+      name = "ksnakeduel-15.11.80.tar.xz";
+    };
+  };
+  kspaceduel = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kspaceduel-15.11.80.tar.xz";
+      sha256 = "116bjbp5771p6plvamd8iybnj3cx2xi07qhrd2ky8jbxrbbzvmya";
+      name = "kspaceduel-15.11.80.tar.xz";
+    };
+  };
+  ksquares = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksquares-15.11.80.tar.xz";
+      sha256 = "0k3h1r5h8bdvs7sk39nh371pdibgl8xmgp3w0xj95q3ya6587zqg";
+      name = "ksquares-15.11.80.tar.xz";
+    };
+  };
+  kstars = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kstars-15.11.80.tar.xz";
+      sha256 = "1djzvsk91hpxlnmymn1148lr9kdyvwsn2krfrs8wg3f2wy20shjr";
+      name = "kstars-15.11.80.tar.xz";
+    };
+  };
+  ksudoku = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksudoku-15.11.80.tar.xz";
+      sha256 = "0cv9ax2iarz5fy46jp53sgmqw58maasnmp8zky8sm0xz4slphcmq";
+      name = "ksudoku-15.11.80.tar.xz";
+    };
+  };
+  ksystemlog = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ksystemlog-15.11.80.tar.xz";
+      sha256 = "0iah8676h10y5dlw4n9qxy0kxp7n7wzwkvkgvmxzapzvxly2jpdl";
+      name = "ksystemlog-15.11.80.tar.xz";
+    };
+  };
+  kteatime = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kteatime-15.11.80.tar.xz";
+      sha256 = "0ylkhi0i3w7m4jn3bdvnq0wvamj546mk4dggd4ivkwbbf1csbwi2";
+      name = "kteatime-15.11.80.tar.xz";
+    };
+  };
+  ktimer = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktimer-15.11.80.tar.xz";
+      sha256 = "0jv5xzpczwz6mrp2dpynq5bfa90my6pdrndjrz7qa09g9zi9k0wk";
+      name = "ktimer-15.11.80.tar.xz";
+    };
+  };
+  ktnef = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktnef-15.11.80.tar.xz";
+      sha256 = "0s1x877vrzhjyxvm317i0xyc589awkfgyq6cp3yjr3sdyb21bklr";
+      name = "ktnef-15.11.80.tar.xz";
+    };
+  };
+  ktouch = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktouch-15.11.80.tar.xz";
+      sha256 = "1ys3flgmwqryvk39b8405gf2v8qdj9prz7iz9kx0ncb353fz1fd0";
+      name = "ktouch-15.11.80.tar.xz";
+    };
+  };
+  ktp-accounts-kcm = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-accounts-kcm-15.11.80.tar.xz";
+      sha256 = "0kdc96lxzyp7gc9iva6q0dawcw1naw0rdzmcvr254dvk5pwz8wcq";
+      name = "ktp-accounts-kcm-15.11.80.tar.xz";
+    };
+  };
+  ktp-approver = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-approver-15.11.80.tar.xz";
+      sha256 = "03f39h4ppwy92w18wn2n4m5gwiryahj49nmbcsfhvha0va0892fa";
+      name = "ktp-approver-15.11.80.tar.xz";
+    };
+  };
+  ktp-auth-handler = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-auth-handler-15.11.80.tar.xz";
+      sha256 = "0wcz1wjz2r3r86cfvp2wyfcbnvar0alyil7zv8hizzyickwsb3y7";
+      name = "ktp-auth-handler-15.11.80.tar.xz";
+    };
+  };
+  ktp-common-internals = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-common-internals-15.11.80.tar.xz";
+      sha256 = "1gq6mpa0mrfyiv9kiyy39fh28xvwj9vivn3p8nhx5zmai37l5ds4";
+      name = "ktp-common-internals-15.11.80.tar.xz";
+    };
+  };
+  ktp-contact-list = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-contact-list-15.11.80.tar.xz";
+      sha256 = "14az86dv3jmb5x26vgn2wqnys77nz9rjscp6n6hvpqcyp6g5h075";
+      name = "ktp-contact-list-15.11.80.tar.xz";
+    };
+  };
+  ktp-contact-runner = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-contact-runner-15.11.80.tar.xz";
+      sha256 = "0qp7mgn46favlz1a9xv9rv4pbykmc5m5csv3mbrq6pndpihdfbxq";
+      name = "ktp-contact-runner-15.11.80.tar.xz";
+    };
+  };
+  ktp-desktop-applets = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-desktop-applets-15.11.80.tar.xz";
+      sha256 = "1l6z58g0p5xlc0l9z9xgkw3sv7jx4kdwp8jpx1v8m513r8szfwgg";
+      name = "ktp-desktop-applets-15.11.80.tar.xz";
+    };
+  };
+  ktp-filetransfer-handler = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-filetransfer-handler-15.11.80.tar.xz";
+      sha256 = "019h5q83593yg2mgknv8yzfq3bl2vjfkf0dwv7mb6ykf6bsb9630";
+      name = "ktp-filetransfer-handler-15.11.80.tar.xz";
+    };
+  };
+  ktp-kded-module = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-kded-module-15.11.80.tar.xz";
+      sha256 = "1mf9mya8r6lrmbr26pdp9d7hdp1irsba46zlr859hjl6pqa10i3b";
+      name = "ktp-kded-module-15.11.80.tar.xz";
+    };
+  };
+  ktp-send-file = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-send-file-15.11.80.tar.xz";
+      sha256 = "1d265x89854xvxdxqa9z37r6m13kiplawkxq5l4cy5hlwmvp3ivm";
+      name = "ktp-send-file-15.11.80.tar.xz";
+    };
+  };
+  ktp-text-ui = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktp-text-ui-15.11.80.tar.xz";
+      sha256 = "0mixwwqwx4z8m0kaj0wfn5zczq08w18ascl9r78mvx6p1946m86q";
+      name = "ktp-text-ui-15.11.80.tar.xz";
+    };
+  };
+  ktuberling = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/ktuberling-15.11.80.tar.xz";
+      sha256 = "1gpsimdx0l9ml9f8nfqbqm2jmj60w3bni1s23iyc62b96pazx9a4";
+      name = "ktuberling-15.11.80.tar.xz";
+    };
+  };
+  kturtle = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kturtle-15.11.80.tar.xz";
+      sha256 = "13z9rsk0ikg1q312wkag8njgw5921nhfmd57bdfa6p0w971wndm4";
+      name = "kturtle-15.11.80.tar.xz";
+    };
+  };
+  kubrick = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kubrick-15.11.80.tar.xz";
+      sha256 = "11kccqc8vs6cvwzabq80bwyn4f1qypln807m7xx5g3p07qzplc28";
+      name = "kubrick-15.11.80.tar.xz";
+    };
+  };
+  kuser = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kuser-15.11.80.tar.xz";
+      sha256 = "0ima6v48i0cd1kizadla6zm40hdmdp3b4phq8lmai1vqhy9890h8";
+      name = "kuser-15.11.80.tar.xz";
+    };
+  };
+  kwalletmanager = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kwalletmanager-15.11.80.tar.xz";
+      sha256 = "1fg9qjlb12wnxrdz9f6yvvs4ybwwwp3n73nsmq6igms2rw00ixaf";
+      name = "kwalletmanager-15.11.80.tar.xz";
+    };
+  };
+  kwordquiz = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/kwordquiz-15.11.80.tar.xz";
+      sha256 = "00pv1q2d0ccihwbvsk51hblzc2vvnw81lrla7a77bdgk266b2q3c";
+      name = "kwordquiz-15.11.80.tar.xz";
+    };
+  };
+  libkcddb = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkcddb-15.11.80.tar.xz";
+      sha256 = "0dm8vi0h84zm84jjqrlgpc5n8shwlipd3dmm3ndl31jx3wmm4cca";
+      name = "libkcddb-15.11.80.tar.xz";
+    };
+  };
+  libkcompactdisc = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkcompactdisc-15.11.80.tar.xz";
+      sha256 = "0q6yvjzjlkc5pmjqrxphk4n7va6hcr903vkamvnbhn559qv3j11x";
+      name = "libkcompactdisc-15.11.80.tar.xz";
+    };
+  };
+  libkdcraw = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkdcraw-15.11.80.tar.xz";
+      sha256 = "1s7cz3wh4066wyixbzvczba94v5fizwmcnl6waazgnabr8djy75r";
+      name = "libkdcraw-15.11.80.tar.xz";
+    };
+  };
+  libkdeedu = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkdeedu-15.11.80.tar.xz";
+      sha256 = "0xmfv692x6s6c350l324mi69512sbmqscx26hv3827sm02lxi3nj";
+      name = "libkdeedu-15.11.80.tar.xz";
+    };
+  };
+  libkdegames = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkdegames-15.11.80.tar.xz";
+      sha256 = "1pkl30ijnbmzc8gs1ib5l7qvmnb2a59smakaipji2n6pcik5xdi5";
+      name = "libkdegames-15.11.80.tar.xz";
+    };
+  };
+  libkeduvocdocument = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkeduvocdocument-15.11.80.tar.xz";
+      sha256 = "0p7mbw5xm7ywrz36rs8xpcnjm4w844jgjcciv0r4qwbpvcxm38kh";
+      name = "libkeduvocdocument-15.11.80.tar.xz";
+    };
+  };
+  libkexiv2 = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkexiv2-15.11.80.tar.xz";
+      sha256 = "0pis24db80l9w62v6axy9137rdgpsdlfrzf9k3yi63x0qs037k5c";
+      name = "libkexiv2-15.11.80.tar.xz";
+    };
+  };
+  libkface = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkface-15.11.80.tar.xz";
+      sha256 = "0mr52fn3j71y0qaxn4wdz7lrk8ylmlj965jvilgzpnf97jdhy8bc";
+      name = "libkface-15.11.80.tar.xz";
+    };
+  };
+  libkgeomap = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkgeomap-15.11.80.tar.xz";
+      sha256 = "1nwzakm5njilqpa7fslgz4gcy02b1kzhnrckm867qavn8qmy0j56";
+      name = "libkgeomap-15.11.80.tar.xz";
+    };
+  };
+  libkipi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkipi-15.11.80.tar.xz";
+      sha256 = "1qmpbrmpm8hbrfwjihpg3gks177cvwc99rmb9bvphi2q8xg49xzn";
+      name = "libkipi-15.11.80.tar.xz";
+    };
+  };
+  libkmahjongg = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkmahjongg-15.11.80.tar.xz";
+      sha256 = "192az0z4hwqcn8j02g17fxc44blv615vn345svrxbmxinr1cc18q";
+      name = "libkmahjongg-15.11.80.tar.xz";
+    };
+  };
+  libkomparediff2 = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libkomparediff2-15.11.80.tar.xz";
+      sha256 = "1zv6y7j4dna6m51xqs0i3sjd3xxy7bqb8jwrqpjls2fy4x55cnv2";
+      name = "libkomparediff2-15.11.80.tar.xz";
+    };
+  };
+  libksane = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/libksane-15.11.80.tar.xz";
+      sha256 = "1ljqv14x29pqzm7nd7rg3p447q188m1266b2sgvyrpvgg340ynrp";
+      name = "libksane-15.11.80.tar.xz";
+    };
+  };
+  lokalize = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/lokalize-15.11.80.tar.xz";
+      sha256 = "0n6mg6r3hlm9m19kbw2nrfimjhvf23l33wcfwdb66hq05z5fqacz";
+      name = "lokalize-15.11.80.tar.xz";
+    };
+  };
+  lskat = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/lskat-15.11.80.tar.xz";
+      sha256 = "0c30dcsydvzc469gxbv0y0g1v9mg745ajng18sv9jrsgrc9594vv";
+      name = "lskat-15.11.80.tar.xz";
+    };
+  };
+  marble = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/marble-15.11.80.tar.xz";
+      sha256 = "1ks031ypb4himg0jiw1vql0isli1hyaz7kmagvby4il7cw4gdgf3";
+      name = "marble-15.11.80.tar.xz";
+    };
+  };
+  mplayerthumbs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/mplayerthumbs-15.11.80.tar.xz";
+      sha256 = "0snn5jmpsyczxxyfp5ka5mkymldy7pjb2jqjc092aci6w1mmkvsd";
+      name = "mplayerthumbs-15.11.80.tar.xz";
+    };
+  };
+  okteta = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/okteta-15.11.80.tar.xz";
+      sha256 = "06334p934fyajaqg7pz8wqyzcmghymhanfnyz6y1cqaqrkf16n0s";
+      name = "okteta-15.11.80.tar.xz";
+    };
+  };
+  okular = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/okular-15.11.80.tar.xz";
+      sha256 = "0ny8r7shnl7qjdzb0m9rmcq3y7scpfycxz7rcxv8x52v0vqkqgh8";
+      name = "okular-15.11.80.tar.xz";
+    };
+  };
+  palapeli = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/palapeli-15.11.80.tar.xz";
+      sha256 = "02w0m3piw15x0bmkh6ap6il13yj5r0kszwrq47k6ildl96a0zbdd";
+      name = "palapeli-15.11.80.tar.xz";
+    };
+  };
+  parley = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/parley-15.11.80.tar.xz";
+      sha256 = "06na0w14f5r322ybn38qal57arrjv3brlbmlb4bw196467cw773i";
+      name = "parley-15.11.80.tar.xz";
+    };
+  };
+  picmi = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/picmi-15.11.80.tar.xz";
+      sha256 = "1m5b0ziz0pa7j5awis78brx1dsp8rwpg08lbkjvr09l20xb0n0mj";
+      name = "picmi-15.11.80.tar.xz";
+    };
+  };
+  poxml = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/poxml-15.11.80.tar.xz";
+      sha256 = "1p7h7q0dgynyd1187bgavfbpgn2g8km8rf8gzwya7wn8nz152xff";
+      name = "poxml-15.11.80.tar.xz";
+    };
+  };
+  print-manager = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/print-manager-15.11.80.tar.xz";
+      sha256 = "102h4h4qk0hnkak1sh5bmbvhnrr2bhrsqs45j1zyql0na63b5gy1";
+      name = "print-manager-15.11.80.tar.xz";
+    };
+  };
+  rocs = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/rocs-15.11.80.tar.xz";
+      sha256 = "0i05lsvzbcsxqr70a2xsdgq6j5xcbm54g4jw0ifh3jvpr0yrmgb4";
+      name = "rocs-15.11.80.tar.xz";
+    };
+  };
+  signon-kwallet-extension = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/signon-kwallet-extension-15.11.80.tar.xz";
+      sha256 = "0crq69px0gbcw7h6bgbjad35djh3lm9jniblj6avkz8plj0j16z5";
+      name = "signon-kwallet-extension-15.11.80.tar.xz";
+    };
+  };
+  spectacle = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/spectacle-15.11.80.tar.xz";
+      sha256 = "1p39qxr67iy6lda2j9ar0aq1sg29gp9ds29aqbs3rx9m56rn8h6q";
+      name = "spectacle-15.11.80.tar.xz";
+    };
+  };
+  step = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/step-15.11.80.tar.xz";
+      sha256 = "0ggm9rqzjw1aljhmxnc6n428zkp0c1ik3lldaxi576z5ipvvgwnd";
+      name = "step-15.11.80.tar.xz";
+    };
+  };
+  svgpart = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/svgpart-15.11.80.tar.xz";
+      sha256 = "0fq69li2z2nqj0xrsd010d9gfpc39r8k5fxbzlfravi12big0yhk";
+      name = "svgpart-15.11.80.tar.xz";
+    };
+  };
+  sweeper = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/sweeper-15.11.80.tar.xz";
+      sha256 = "1yw1f1j2qzzpqzr3iz0fyi8kmd369i94gx0njv2iqm1jakk1hqfc";
+      name = "sweeper-15.11.80.tar.xz";
+    };
+  };
+  syndication = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/syndication-15.11.80.tar.xz";
+      sha256 = "06y5wz7asa4f1a7j7arhggwyv5cikn52d0h38ybxa9vjcmkn5nw5";
+      name = "syndication-15.11.80.tar.xz";
+    };
+  };
+  umbrello = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/umbrello-15.11.80.tar.xz";
+      sha256 = "1kpag8f6r3cfp77z8lb8hbpq2djqg718bs6hs8wi99y2zy85xwr6";
+      name = "umbrello-15.11.80.tar.xz";
+    };
+  };
+  zeroconf-ioslave = {
+    version = "15.11.80";
+    src = fetchurl {
+      url = "${mirror}/unstable/applications/15.11.80/src/zeroconf-ioslave-15.11.80.tar.xz";
+      sha256 = "1kpahrs8p9l52hgkm3whryvwcbw9fzn4l4yxq93ijzac0m8gpqwr";
+      name = "zeroconf-ioslave-15.11.80.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/desktops/plasma-5.5/bluedevil.nix b/pkgs/desktops/plasma-5.5/bluedevil.nix
new file mode 100644
index 000000000000..d099e95a16b4
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/bluedevil.nix
@@ -0,0 +1,23 @@
+{ plasmaPackage, extra-cmake-modules, bluez-qt, kcoreaddons
+, kdbusaddons, kded, ki18n, kiconthemes, kio, knotifications
+, kwidgetsaddons, kwindowsystem, makeQtWrapper, plasma-framework
+, qtdeclarative, shared_mime_info
+}:
+
+plasmaPackage {
+  name = "bluedevil";
+  nativeBuildInputs = [
+    extra-cmake-modules makeQtWrapper shared_mime_info
+  ];
+  buildInputs = [
+    kcoreaddons kdbusaddons kded kiconthemes knotifications
+    kwidgetsaddons
+  ];
+  propagatedBuildInputs = [
+    bluez-qt ki18n kio kwindowsystem plasma-framework qtdeclarative
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/bluedevil-wizard"
+    wrapQtProgram "$out/bin/bluedevil-sendfile"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/breeze-qt4.nix b/pkgs/desktops/plasma-5.5/breeze-qt4.nix
new file mode 100644
index 000000000000..f8092bc9d376
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/breeze-qt4.nix
@@ -0,0 +1,29 @@
+{ plasmaPackage
+, automoc4
+, cmake
+, perl
+, pkgconfig
+, kdelibs
+, qt4
+, xproto
+}:
+
+plasmaPackage {
+  name = "breeze-qt4";
+  sname = "breeze";
+  buildInputs = [
+    kdelibs
+    qt4
+    xproto
+  ];
+  nativeBuildInputs = [
+    automoc4
+    cmake
+    perl
+    pkgconfig
+  ];
+  cmakeFlags = [
+    "-DUSE_KDE4=ON"
+    "-DQT_QMAKE_EXECUTABLE=${qt4}/bin/qmake"
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/breeze-qt5.nix b/pkgs/desktops/plasma-5.5/breeze-qt5.nix
new file mode 100644
index 000000000000..63ade168805d
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/breeze-qt5.nix
@@ -0,0 +1,23 @@
+{ plasmaPackage, extra-cmake-modules, frameworkintegration
+, kcmutils, kconfigwidgets, kcoreaddons, kdecoration, kguiaddons
+, ki18n, kwindowsystem, makeQtWrapper, plasma-framework, qtx11extras
+}:
+
+plasmaPackage {
+  name = "breeze-qt5";
+  sname = "breeze";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kcmutils kconfigwidgets kcoreaddons kdecoration kguiaddons
+  ];
+  propagatedBuildInputs = [
+    frameworkintegration ki18n kwindowsystem plasma-framework qtx11extras
+  ];
+  cmakeFlags = [ "-DUSE_Qt4=OFF" ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/breeze-settings5"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/default.nix b/pkgs/desktops/plasma-5.5/default.nix
new file mode 100644
index 000000000000..33937aa32200
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/default.nix
@@ -0,0 +1,85 @@
+# Maintainer's Notes:
+#
+# How To Update
+#  1. Edit the URL in ./manifest.sh
+#  2. Run ./manifest.sh
+#  3. Fix build errors.
+
+{ pkgs, debug ? false }:
+
+let
+
+  inherit (pkgs) lib stdenv symlinkJoin;
+
+  kdeApps = pkgs.kdeApps_15_12;
+
+  srcs = import ./srcs.nix { inherit (pkgs) fetchurl; inherit mirror; };
+  mirror = "mirror://kde";
+
+  plasmaPackage = args:
+    let
+      inherit (args) name;
+      sname = args.sname or name;
+      inherit (srcs."${sname}") src version;
+    in stdenv.mkDerivation (args // {
+      name = "${name}-${version}";
+      inherit src;
+
+      setupHook = args.setupHook or ./setup-hook.sh;
+
+      cmakeFlags =
+        (args.cmakeFlags or [])
+        ++ [ "-DBUILD_TESTING=OFF" ]
+        ++ lib.optional debug "-DCMAKE_BUILD_TYPE=Debug";
+
+      meta = {
+        license = with lib.licenses; [
+          lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
+        ];
+        platforms = lib.platforms.linux;
+        maintainers = with lib.maintainers; [ ttuegel ];
+        homepage = "http://www.kde.org";
+      } // (args.meta or {});
+    });
+
+  addPackages = self: with self; {
+    bluedevil = callPackage ./bluedevil.nix {};
+    breeze-qt4 = callPackage ./breeze-qt4.nix {};
+    breeze-qt5 = callPackage ./breeze-qt5.nix {};
+    breeze =
+      let version = (builtins.parseDrvName breeze-qt5.name).version;
+      in symlinkJoin "breeze-${version}" [ breeze-qt4 breeze-qt5 ];
+    kde-cli-tools = callPackage ./kde-cli-tools.nix {};
+    kde-gtk-config = callPackage ./kde-gtk-config {};
+    kdecoration = callPackage ./kdecoration.nix {};
+    kdeplasma-addons = callPackage ./kdeplasma-addons.nix {};
+    kgamma5 = callPackage ./kgamma5.nix {};
+    khelpcenter = callPackage ./khelpcenter.nix {};
+    khotkeys = callPackage ./khotkeys.nix {};
+    kinfocenter = callPackage ./kinfocenter.nix {};
+    kmenuedit = callPackage ./kmenuedit.nix {};
+    kscreen = callPackage ./kscreen.nix {};
+    kscreenlocker = callPackage ./kscreenlocker.nix {};
+    ksshaskpass = callPackage ./ksshaskpass.nix {};
+    ksysguard = callPackage ./ksysguard.nix {};
+    kwayland = callPackage ./kwayland.nix {};
+    kwin = callPackage ./kwin {};
+    kwrited = callPackage ./kwrited.nix {};
+    libkscreen = callPackage ./libkscreen {};
+    libksysguard = callPackage ./libksysguard {};
+    milou = callPackage ./milou.nix {};
+    oxygen = callPackage ./oxygen.nix {};
+    plasma-desktop = callPackage ./plasma-desktop {};
+    plasma-mediacenter = callPackage ./plasma-mediacenter.nix {};
+    plasma-nm = callPackage ./plasma-nm {};
+    plasma-pa = callPackage ./plasma-pa.nix {};
+    plasma-workspace = callPackage ./plasma-workspace {};
+    plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {};
+    polkit-kde-agent = callPackage ./polkit-kde-agent.nix {};
+    powerdevil = callPackage ./powerdevil.nix {};
+    systemsettings = callPackage ./systemsettings.nix {};
+  };
+
+  newScope = scope: kdeApps.newScope ({ inherit plasmaPackage; } // scope);
+
+in lib.makeScope newScope addPackages
diff --git a/pkgs/desktops/plasma-5.5/fetchsrcs.sh b/pkgs/desktops/plasma-5.5/fetchsrcs.sh
new file mode 100755
index 000000000000..e9b551f86b96
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/fetchsrcs.sh
@@ -0,0 +1,57 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils findutils gawk gnused nix wget
+
+set -x
+
+# The trailing slash at the end is necessary!
+RELEASE_URL="http://download.kde.org/unstable/plasma/5.4.95/"
+EXTRA_WGET_ARGS='-A *.tar.xz'
+
+mkdir tmp; cd tmp
+
+rm -f ../srcs.csv
+
+wget -nH -r -c --no-parent $RELEASE_URL $EXTRA_WGET_ARGS
+
+find . | while read src; do
+    if [[ -f "${src}" ]]; then
+        # Sanitize file name
+        filename=$(basename "$src" | tr '@' '_')
+        nameVersion="${filename%.tar.*}"
+        name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
+        version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
+        echo "$name,$version,$src,$filename" >>../srcs.csv
+    fi
+done
+
+cat >../srcs.nix <<EOF
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+EOF
+
+gawk -F , "{ print \$1 }" ../srcs.csv | sort | uniq | while read name; do
+    versions=$(gawk -F , "/^$name,/ { print \$2 }" ../srcs.csv)
+    latestVersion=$(echo "$versions" | sort -rV | head -n 1)
+    src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" ../srcs.csv)
+    filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" ../srcs.csv)
+    url="${src:2}"
+    sha256=$(nix-hash --type sha256 --base32 --flat "$src")
+    cat >>../srcs.nix <<EOF
+  $name = {
+    version = "$latestVersion";
+    src = fetchurl {
+      url = "\${mirror}/$url";
+      sha256 = "$sha256";
+      name = "$filename";
+    };
+  };
+EOF
+done
+
+echo "}" >>../srcs.nix
+
+rm -f ../srcs.csv
+
+cd ..
diff --git a/pkgs/desktops/plasma-5.5/kde-cli-tools.nix b/pkgs/desktops/plasma-5.5/kde-cli-tools.nix
new file mode 100644
index 000000000000..7f19af6959ec
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kde-cli-tools.nix
@@ -0,0 +1,27 @@
+{ plasmaPackage, extra-cmake-modules, kcmutils, kconfig
+, kdelibs4support, kdesu, kdoctools, ki18n, kiconthemes
+, kwindowsystem, makeQtWrapper, qtsvg, qtx11extras
+}:
+
+plasmaPackage {
+  name = "kde-cli-tools";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [
+    kcmutils kconfig kdesu kiconthemes
+  ];
+  propagatedBuildInputs = [
+    kdelibs4support ki18n kwindowsystem qtsvg qtx11extras
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kmimetypefinder5"
+    wrapQtProgram "$out/bin/ksvgtopng5"
+    wrapQtProgram "$out/bin/ktraderclient5"
+    wrapQtProgram "$out/bin/kioclient5"
+    wrapQtProgram "$out/bin/kdecp5"
+    wrapQtProgram "$out/bin/keditfiletype5"
+    wrapQtProgram "$out/bin/kcmshell5"
+    wrapQtProgram "$out/bin/kdemv5"
+    wrapQtProgram "$out/bin/kstart5"
+    wrapQtProgram "$out/bin/kde-open5"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch b/pkgs/desktops/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch
new file mode 100644
index 000000000000..759eda4cc134
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch
@@ -0,0 +1,39 @@
+From 33b25c2e3c7a002c7f726cd79fc4bab22b1299be Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Tue, 27 Oct 2015 18:07:54 -0500
+Subject: [PATCH] follow symlinks
+
+---
+ src/appearancegtk2.cpp  | 2 +-
+ src/iconthemesmodel.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/appearancegtk2.cpp b/src/appearancegtk2.cpp
+index b1e0b52..095cddc 100644
+--- a/src/appearancegtk2.cpp
++++ b/src/appearancegtk2.cpp
+@@ -73,7 +73,7 @@ QString AppearanceGTK2::themesGtkrcFile(const QString& themeName) const
+     QStringList themes=installedThemes();
+     themes=themes.filter(QRegExp("/"+themeName+"/?$"));
+     if(themes.size()==1) {
+-        QDirIterator it(themes.first(), QDirIterator::Subdirectories);
++        QDirIterator it(themes.first(), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         while(it.hasNext()) {
+             it.next();
+             if(it.fileName()=="gtkrc") {
+diff --git a/src/iconthemesmodel.cpp b/src/iconthemesmodel.cpp
+index 07c7ad7..b04d978 100644
+--- a/src/iconthemesmodel.cpp
++++ b/src/iconthemesmodel.cpp
+@@ -46,7 +46,7 @@ QList<QDir> IconThemesModel::installedThemesPaths()
+     
+     foreach(const QString& dir, dirs) {
+         QDir userIconsDir(dir);
+-        QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks);
++        QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs);
+         while(it.hasNext()) {
+             QString currentPath = it.next();
+             QDir dir(currentPath);
+-- 
+2.6.2
+
diff --git a/pkgs/desktops/plasma-5.5/kde-gtk-config/default.nix b/pkgs/desktops/plasma-5.5/kde-gtk-config/default.nix
new file mode 100644
index 000000000000..6b41599994d5
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kde-gtk-config/default.nix
@@ -0,0 +1,28 @@
+{ plasmaPackage
+, extra-cmake-modules
+, glib
+, gtk2
+, gtk3
+, karchive
+, kcmutils
+, kconfigwidgets
+, ki18n
+, kiconthemes
+, kio
+, knewstuff
+}:
+
+plasmaPackage {
+  name = "kde-gtk-config";
+  patches = [ ./0001-follow-symlinks.patch ];
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    glib gtk2 gtk3 karchive kcmutils kconfigwidgets kiconthemes
+    knewstuff
+  ];
+  propagatedBuildInputs = [ ki18n kio ];
+  cmakeFlags = [
+    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib}/lib/glib-2.0/include"
+    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2}/lib/gtk-2.0/include"
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/kdecoration.nix b/pkgs/desktops/plasma-5.5/kdecoration.nix
new file mode 100644
index 000000000000..eb65f7f90afb
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kdecoration.nix
@@ -0,0 +1,6 @@
+{ plasmaPackage, extra-cmake-modules }:
+
+plasmaPackage {
+  name = "kdecoration";
+  nativeBuildInputs = [ extra-cmake-modules ];
+}
diff --git a/pkgs/desktops/plasma-5.5/kdeplasma-addons.nix b/pkgs/desktops/plasma-5.5/kdeplasma-addons.nix
new file mode 100644
index 000000000000..d6a96a3276d7
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kdeplasma-addons.nix
@@ -0,0 +1,21 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, ibus, kconfig
+, kconfigwidgets, kcoreaddons, kcmutils, kdelibs4support, ki18n
+, kio, knewstuff, kross, krunner, kservice, kunitconversion
+, plasma-framework, qtdeclarative, qtx11extras
+}:
+
+plasmaPackage {
+  name = "kdeplasma-addons";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    ibus kconfig kconfigwidgets kcoreaddons kcmutils
+    knewstuff kservice kunitconversion
+  ];
+  propagatedBuildInputs = [
+    kdelibs4support kio kross krunner plasma-framework qtdeclarative
+    qtx11extras
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/kgamma5.nix b/pkgs/desktops/plasma-5.5/kgamma5.nix
new file mode 100644
index 000000000000..965c33e6eef8
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kgamma5.nix
@@ -0,0 +1,9 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kdelibs4support
+, qtx11extras
+}:
+
+plasmaPackage {
+  name = "kgamma5";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [ kdelibs4support qtx11extras ];
+}
diff --git a/pkgs/desktops/plasma-5.5/khelpcenter.nix b/pkgs/desktops/plasma-5.5/khelpcenter.nix
new file mode 100644
index 000000000000..6ba860b9dfb2
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/khelpcenter.nix
@@ -0,0 +1,20 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kconfig
+, kcoreaddons, kdbusaddons, ki18n, kinit, kcmutils, kdelibs4support
+, khtml, kservice, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "khelpcenter";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kconfig kcoreaddons kdbusaddons kinit kcmutils kservice
+  ];
+  propagatedBuildInputs = [ kdelibs4support khtml ki18n ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/khelpcenter"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/khotkeys.nix b/pkgs/desktops/plasma-5.5/khotkeys.nix
new file mode 100644
index 000000000000..141320e6b3e6
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/khotkeys.nix
@@ -0,0 +1,16 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kcmutils
+, kdbusaddons, kdelibs4support, kglobalaccel, ki18n, kio, kxmlgui
+, plasma-framework, plasma-workspace, qtx11extras
+}:
+
+plasmaPackage {
+  name = "khotkeys";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcmutils kdbusaddons kxmlgui
+  ];
+  propagatedBuildInputs = [
+    kdelibs4support kglobalaccel ki18n kio plasma-framework
+    plasma-workspace qtx11extras
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/kinfocenter.nix b/pkgs/desktops/plasma-5.5/kinfocenter.nix
new file mode 100644
index 000000000000..ed717790cd0d
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kinfocenter.nix
@@ -0,0 +1,24 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kcmutils
+, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons
+, kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kpackage
+, kservice, kwidgetsaddons, kxmlgui, libraw1394, makeQtWrapper
+, pciutils, solid
+}:
+
+plasmaPackage {
+  name = "kinfocenter";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kcmutils kcompletion kconfig kconfigwidgets kcoreaddons
+    kdbusaddons kiconthemes kpackage kservice kwidgetsaddons
+    kxmlgui libraw1394 pciutils solid
+  ];
+  propagatedBuildInputs = [ kdeclarative kdelibs4support ki18n kio ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kinfocenter"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kmenuedit.nix b/pkgs/desktops/plasma-5.5/kmenuedit.nix
new file mode 100644
index 000000000000..3834ca1328f8
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kmenuedit.nix
@@ -0,0 +1,19 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, ki18n, kxmlgui
+, kdbusaddons, kiconthemes, kio, sonnet, kdelibs4support, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "kmenuedit";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kxmlgui kdbusaddons kiconthemes
+  ];
+  propagatedBuildInputs = [ kdelibs4support ki18n kio sonnet ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kmenuedit"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kscreen.nix b/pkgs/desktops/plasma-5.5/kscreen.nix
new file mode 100644
index 000000000000..64fcab343e44
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kscreen.nix
@@ -0,0 +1,19 @@
+{ plasmaPackage, extra-cmake-modules, kconfig, kconfigwidgets
+, kdbusaddons, kglobalaccel, ki18n, kwidgetsaddons, kxmlgui
+, libkscreen, makeQtWrapper, qtdeclarative
+}:
+
+plasmaPackage {
+  name = "kscreen";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kconfig kconfigwidgets kdbusaddons kwidgetsaddons kxmlgui
+  ];
+  propagatedBuildInputs = [ kglobalaccel ki18n libkscreen qtdeclarative ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kscreen-console"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kscreenlocker.nix b/pkgs/desktops/plasma-5.5/kscreenlocker.nix
new file mode 100644
index 000000000000..562797b546e9
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kscreenlocker.nix
@@ -0,0 +1,19 @@
+{ plasmaPackage, extra-cmake-modules, kcmutils, kcrash, kdeclarative
+, kdelibs4support, kdoctools, kglobalaccel, kidletime, kwayland
+, libXcursor, pam, plasma-framework, qtdeclarative, wayland
+}:
+
+plasmaPackage {
+  name = "kscreenlocker";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    kcmutils kcrash kdelibs4support kglobalaccel kidletime kwayland
+    libXcursor pam wayland
+  ];
+  propagatedBuildInputs = [
+    kdeclarative plasma-framework qtdeclarative
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/ksshaskpass.nix b/pkgs/desktops/plasma-5.5/ksshaskpass.nix
new file mode 100644
index 000000000000..f274512e027a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/ksshaskpass.nix
@@ -0,0 +1,13 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kcoreaddons
+, ki18n, kwallet, kwidgetsaddons, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "ksshaskpass";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [ kcoreaddons kwallet kwidgetsaddons ];
+  propagatedBuildInputs = [ ki18n ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/ksshaskpass"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/ksysguard.nix b/pkgs/desktops/plasma-5.5/ksysguard.nix
new file mode 100644
index 000000000000..d47f9215a41a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/ksysguard.nix
@@ -0,0 +1,20 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kconfig
+, kcoreaddons, kdelibs4support, ki18n, kitemviews, knewstuff
+, kiconthemes, libksysguard, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "ksysguard";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard
+  ];
+  propagatedBuildInputs = [ kdelibs4support ki18n ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/ksysguardd"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kwayland.nix b/pkgs/desktops/plasma-5.5/kwayland.nix
new file mode 100644
index 000000000000..e4d6eb631f95
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kwayland.nix
@@ -0,0 +1,14 @@
+{ plasmaPackage
+, extra-cmake-modules
+, wayland
+}:
+
+plasmaPackage {
+  name = "kwayland";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    wayland
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..797a32fc5f83
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From 78a4b554187c18fd86b62089f7730c4273fadd4c Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 07:05:22 -0500
+Subject: [PATCH] qdiriterator follow symlinks
+
+---
+ clients/aurorae/src/aurorae.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/clients/aurorae/src/aurorae.cpp b/clients/aurorae/src/aurorae.cpp
+index 781c960..ad5f420 100644
+--- a/clients/aurorae/src/aurorae.cpp
++++ b/clients/aurorae/src/aurorae.cpp
+@@ -211,7 +211,7 @@ void Helper::init()
+     // so let's try to locate our plugin:
+     QString pluginPath;
+     for (const QString &path : m_engine->importPathList()) {
+-        QDirIterator it(path, QDirIterator::Subdirectories);
++        QDirIterator it(path, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         while (it.hasNext()) {
+             it.next();
+             QFileInfo fileInfo = it.fileInfo();
+-- 
+2.5.2
+
diff --git a/pkgs/desktops/plasma-5.5/kwin/default.nix b/pkgs/desktops/plasma-5.5/kwin/default.nix
new file mode 100644
index 000000000000..2e86068b486f
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kwin/default.nix
@@ -0,0 +1,33 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, epoxy
+, kactivities, kcompletion, kcmutils, kconfig, kconfigwidgets
+, kcoreaddons, kcrash, kdeclarative, kdecoration, kglobalaccel
+, ki18n, kiconthemes, kidletime, kinit, kio, knewstuff, knotifications
+, kpackage, kscreenlocker, kservice, kwayland, kwidgetsaddons, kwindowsystem
+, kxmlgui, libinput, libICE, libSM, plasma-framework, qtdeclarative
+, qtmultimedia, qtscript, qtx11extras, udev, wayland, xcb-util-cursor
+, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "kwin";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    epoxy kcompletion kcmutils kconfig kconfigwidgets kcoreaddons
+    kcrash kdecoration kiconthemes kidletime kinit knewstuff knotifications
+    kpackage kservice kwayland kwidgetsaddons kxmlgui libinput libICE
+    libSM qtscript udev wayland xcb-util-cursor
+  ];
+  propagatedBuildInputs = [
+    kactivities kdeclarative kglobalaccel ki18n kio kscreenlocker
+    kwindowsystem plasma-framework qtdeclarative qtmultimedia qtx11extras
+  ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kwin_x11"
+    wrapQtProgram "$out/bin/kwin_wayland"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/kwrited.nix b/pkgs/desktops/plasma-5.5/kwrited.nix
new file mode 100644
index 000000000000..a6ed9d9bb287
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/kwrited.nix
@@ -0,0 +1,10 @@
+{ plasmaPackage, extra-cmake-modules, kcoreaddons, ki18n, kpty
+, knotifications, kdbusaddons
+}:
+
+plasmaPackage {
+  name = "kwrited";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kpty knotifications kdbusaddons ];
+  propagatedBuildInputs = [ ki18n ];
+}
diff --git a/pkgs/desktops/plasma-5.5/libkscreen/default.nix b/pkgs/desktops/plasma-5.5/libkscreen/default.nix
new file mode 100644
index 000000000000..9fccbd6834c3
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/libkscreen/default.nix
@@ -0,0 +1,18 @@
+{ plasmaPackage
+, extra-cmake-modules
+, libXrandr
+, qtx11extras
+}:
+
+plasmaPackage {
+  name = "libkscreen";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    libXrandr
+  ];
+  propagatedBuildInputs = [
+    qtx11extras
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/libkscreen/libkscreen-backend-path.patch b/pkgs/desktops/plasma-5.5/libkscreen/libkscreen-backend-path.patch
new file mode 100644
index 000000000000..d5797924d233
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/libkscreen/libkscreen-backend-path.patch
@@ -0,0 +1,130 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 460022f..422a708 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,5 +1,7 @@
+ include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES})
+ 
++configure_file(config-libkscreen.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-libkscreen.h)
++
+ set(libkscreen_SRCS
+     backendloader.cpp
+     config.cpp
+diff --git a/src/backendloader.cpp b/src/backendloader.cpp
+index b93e469..8aebc14 100644
+--- a/src/backendloader.cpp
++++ b/src/backendloader.cpp
+@@ -16,6 +16,7 @@
+  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA       *
+  *************************************************************************************/
+ 
++#include "config-libkscreen.h"
+ #include "backendloader.h"
+ #include "debug_p.h"
+ #include "backends/abstractbackend.h"
+@@ -40,55 +41,54 @@ bool BackendLoader::init()
+     const QString backend = qgetenv("KSCREEN_BACKEND").constData();
+     const QString backendFilter = QString::fromLatin1("KSC_%1*").arg(backend);
+ 
+-    const QStringList paths = QCoreApplication::libraryPaths();
+-    Q_FOREACH (const QString &path, paths) {
+-        const QDir dir(path + QDir::separator() + QLatin1String("/kf5/kscreen/"),
+-                       backendFilter,
+-                       QDir::SortFlags(QDir::QDir::NoSort),
+-                       QDir::NoDotAndDotDot | QDir::Files);
+-        const QFileInfoList finfos = dir.entryInfoList();
+-        Q_FOREACH (const QFileInfo &finfo, finfos) {
+-            // Skip "Fake" backend unless explicitly specified via KSCREEN_BACKEND
+-            if (backend.isEmpty() && finfo.fileName().contains(QLatin1String("KSC_Fake"))) {
+-                continue;
+-            }
++    QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" PLUGIN_INSTALL_DIR "/");
+ 
+-            // When on X11, skip the QScreen backend, instead use the XRandR backend,
+-            // if not specified in KSCREEN_BACKEND
+-            if (backend.isEmpty() &&
+-                    finfo.fileName().contains(QLatin1String("KSC_QScreen")) &&
+-                    QX11Info::isPlatformX11()) {
+-                continue;
+-            }
++    const QDir dir(path + QDir::separator() + QLatin1String("/kf5/kscreen/"),
++                   backendFilter,
++                   QDir::SortFlags(QDir::QDir::NoSort),
++                   QDir::NoDotAndDotDot | QDir::Files);
++    const QFileInfoList finfos = dir.entryInfoList();
++    Q_FOREACH (const QFileInfo &finfo, finfos) {
++        // Skip "Fake" backend unless explicitly specified via KSCREEN_BACKEND
++        if (backend.isEmpty() && finfo.fileName().contains(QLatin1String("KSC_Fake"))) {
++            continue;
++        }
+ 
+-            // When not on X11, skip the XRandR backend, and fall back to QSCreen
+-            // if not specified in KSCREEN_BACKEND
+-            if (backend.isEmpty() &&
+-                    finfo.fileName().contains(QLatin1String("KSC_XRandR")) &&
+-                    !QX11Info::isPlatformX11()) {
+-                continue;
+-            }
++        // When on X11, skip the QScreen backend, instead use the XRandR backend,
++        // if not specified in KSCREEN_BACKEND
++        if (backend.isEmpty() &&
++                finfo.fileName().contains(QLatin1String("KSC_QScreen")) &&
++                QX11Info::isPlatformX11()) {
++            continue;
++        }
++
++        // When not on X11, skip the XRandR backend, and fall back to QSCreen
++        // if not specified in KSCREEN_BACKEND
++        if (backend.isEmpty() &&
++                finfo.fileName().contains(QLatin1String("KSC_XRandR")) &&
++                !QX11Info::isPlatformX11()) {
++            continue;
++        }
+ 
+-            QPluginLoader loader(finfo.filePath());
+-            loader.load();
+-            QObject *instance = loader.instance();
+-            if (!instance) {
++        QPluginLoader loader(finfo.filePath());
++        loader.load();
++        QObject *instance = loader.instance();
++        if (!instance) {
++            loader.unload();
++            continue;
++        }
++
++        s_backend = qobject_cast< AbstractBackend* >(instance);
++        if (s_backend) {
++            if (!s_backend->isValid()) {
++                qCDebug(KSCREEN) << "Skipping" << s_backend->name() << "backend";
++                delete s_backend;
++                s_backend = 0;
+                 loader.unload();
+                 continue;
+             }
+-
+-            s_backend = qobject_cast< AbstractBackend* >(instance);
+-            if (s_backend) {
+-                if (!s_backend->isValid()) {
+-                    qCDebug(KSCREEN) << "Skipping" << s_backend->name() << "backend";
+-                    delete s_backend;
+-                    s_backend = 0;
+-                    loader.unload();
+-                    continue;
+-                }
+-                qCDebug(KSCREEN) << "Loading" << s_backend->name() << "backend";
+-                return true;
+-            }
++            qCDebug(KSCREEN) << "Loading" << s_backend->name() << "backend";
++            return true;
+         }
+     }
+ 
+diff --git a/src/config-libkscreen.h.cmake b/src/config-libkscreen.h.cmake
+new file mode 100644
+index 0000000..a99f3d1
+--- /dev/null
++++ b/src/config-libkscreen.h.cmake
+@@ -0,0 +1,2 @@
++#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"
++#define PLUGIN_INSTALL_DIR "${PLUGIN_INSTALL_DIR}"
diff --git a/pkgs/desktops/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..fbbb11ae7556
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From 46164a50de4102d02ae9d1d480acdd4b12303db8 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 07:07:22 -0500
+Subject: [PATCH] qdiriterator follow symlinks
+
+---
+ processui/scripting.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/processui/scripting.cpp b/processui/scripting.cpp
+index efed8ff..841761a 100644
+--- a/processui/scripting.cpp
++++ b/processui/scripting.cpp
+@@ -167,7 +167,7 @@ void Scripting::loadContextMenu() {
+     QStringList scripts;
+     const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ksysguard/scripts/", 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()) {
+             scripts.append(it.next());
+         }
+-- 
+2.5.2
+
diff --git a/pkgs/desktops/plasma-5.5/libksysguard/default.nix b/pkgs/desktops/plasma-5.5/libksysguard/default.nix
new file mode 100644
index 000000000000..373221b2b305
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/libksysguard/default.nix
@@ -0,0 +1,21 @@
+{ plasmaPackage, extra-cmake-modules, kauth, kcompletion
+, kconfigwidgets, kcoreaddons, kservice, kwidgetsaddons
+, kwindowsystem, plasma-framework, qtscript, qtwebkit, qtx11extras
+, kconfig, ki18n, kiconthemes
+}:
+
+plasmaPackage {
+  name = "libksysguard";
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kcompletion kconfigwidgets kcoreaddons kservice
+    kwidgetsaddons qtscript qtwebkit
+  ];
+  propagatedBuildInputs = [
+    kauth kconfig ki18n kiconthemes kwindowsystem plasma-framework
+    qtx11extras
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/milou.nix b/pkgs/desktops/plasma-5.5/milou.nix
new file mode 100644
index 000000000000..760de2d79ab4
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/milou.nix
@@ -0,0 +1,17 @@
+{ plasmaPackage, extra-cmake-modules, qtscript, qtdeclarative
+, kcoreaddons, ki18n, kdeclarative, kservice, plasma-framework
+, krunner
+}:
+
+plasmaPackage {
+  name = "milou";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    qtscript kcoreaddons kservice
+  ];
+  propagatedBuildInputs = [
+    kdeclarative ki18n krunner plasma-framework qtdeclarative
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/oxygen.nix b/pkgs/desktops/plasma-5.5/oxygen.nix
new file mode 100644
index 000000000000..02918100408a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/oxygen.nix
@@ -0,0 +1,20 @@
+{ plasmaPackage, extra-cmake-modules, ki18n, kcmutils, kconfig
+, kdecoration, kguiaddons, kwidgetsaddons, kservice, kcompletion
+, frameworkintegration, kwindowsystem, makeQtWrapper, qtx11extras
+}:
+
+plasmaPackage {
+  name = "oxygen";
+  nativeBuildInputs = [
+    extra-cmake-modules makeQtWrapper
+  ];
+  buildInputs = [
+    kcmutils kconfig kdecoration kguiaddons kwidgetsaddons
+    kservice kcompletion
+  ];
+  propagatedBuildInputs = [ frameworkintegration ki18n kwindowsystem qtx11extras ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/oxygen-demo5"
+    wrapQtProgram "$out/bin/oxygen-settings5"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch b/pkgs/desktops/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch
new file mode 100644
index 000000000000..ead7452daa84
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch
@@ -0,0 +1,67 @@
+From 7c379686def9f15be1aa8fa4b5358124f7ed57c6 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 19 Oct 2015 18:45:36 -0500
+Subject: [PATCH 1/3] qt-5.5 QML import paths
+
+---
+ applets/pager/package/contents/ui/main.qml              | 2 +-
+ containments/desktop/package/contents/ui/FolderView.qml | 2 +-
+ containments/desktop/package/contents/ui/main.qml       | 2 +-
+ containments/panel/contents/ui/main.qml                 | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/applets/pager/package/contents/ui/main.qml b/applets/pager/package/contents/ui/main.qml
+index 0c367c6..c9a82be 100644
+--- a/applets/pager/package/contents/ui/main.qml
++++ b/applets/pager/package/contents/ui/main.qml
+@@ -23,7 +23,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
+ import org.kde.kquickcontrolsaddons 2.0 as KQuickControlsAddonsComponents
+ import org.kde.draganddrop 2.0
+ import org.kde.plasma.private.pager 2.0
+-import "utils.js" as Utils
++import "../code/utils.js" as Utils
+ 
+ MouseArea {
+     id: root
+diff --git a/containments/desktop/package/contents/ui/FolderView.qml b/containments/desktop/package/contents/ui/FolderView.qml
+index 578ec87..04e088c 100644
+--- a/containments/desktop/package/contents/ui/FolderView.qml
++++ b/containments/desktop/package/contents/ui/FolderView.qml
+@@ -27,7 +27,7 @@ import org.kde.plasma.extras 2.0 as PlasmaExtras
+ import org.kde.kquickcontrolsaddons 2.0
+ 
+ import org.kde.private.desktopcontainment.folder 0.1 as Folder
+-import "FolderTools.js" as FolderTools
++import "../code/FolderTools.js" as FolderTools
+ 
+ Item {
+     id: main
+diff --git a/containments/desktop/package/contents/ui/main.qml b/containments/desktop/package/contents/ui/main.qml
+index 422e8f7..3c8906e 100644
+--- a/containments/desktop/package/contents/ui/main.qml
++++ b/containments/desktop/package/contents/ui/main.qml
+@@ -29,7 +29,7 @@ import org.kde.kquickcontrolsaddons 2.0 as KQuickControlsAddons
+ 
+ import org.kde.private.desktopcontainment.desktop 0.1 as Desktop
+ 
+-import "LayoutManager.js" as LayoutManager
++import "../code/LayoutManager.js" as LayoutManager
+ 
+ DragDrop.DropArea {
+     id: root
+diff --git a/containments/panel/contents/ui/main.qml b/containments/panel/contents/ui/main.qml
+index bad6ba0..b1fc331 100644
+--- a/containments/panel/contents/ui/main.qml
++++ b/containments/panel/contents/ui/main.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
+ import org.kde.kquickcontrolsaddons 2.0
+ import org.kde.draganddrop 2.0 as DragDrop
+ 
+-import "LayoutManager.js" as LayoutManager
++import "../code/LayoutManager.js" as LayoutManager
+ 
+ DragDrop.DropArea {
+     id: root
+-- 
+2.6.3
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-desktop/0002-hwclock.patch b/pkgs/desktops/plasma-5.5/plasma-desktop/0002-hwclock.patch
new file mode 100644
index 000000000000..17b01486d928
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-desktop/0002-hwclock.patch
@@ -0,0 +1,36 @@
+From d0056fa6c1158408db169a7f5e6eb75691083094 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 22 Nov 2015 09:34:43 -0600
+Subject: [PATCH 2/3] hwclock
+
+---
+ kcms/dateandtime/helper.cpp | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/kcms/dateandtime/helper.cpp b/kcms/dateandtime/helper.cpp
+index e955f0c..5171753 100644
+--- a/kcms/dateandtime/helper.cpp
++++ b/kcms/dateandtime/helper.cpp
+@@ -48,10 +48,6 @@
+ #include <sys/stat.h>
+ #endif
+ 
+-// We cannot rely on the $PATH environment variable, because D-Bus activation
+-// clears it. So we have to use a reasonable default.
+-static const QString exePath = QStringLiteral("/usr/sbin:/usr/bin:/sbin:/bin");
+-
+ int ClockHelper::ntp( const QStringList& ntpServers, bool ntpEnabled )
+ {
+     int ret = 0;
+@@ -227,7 +223,7 @@ int ClockHelper::tzreset()
+ 
+ void ClockHelper::toHwclock()
+ {
+-    QString hwclock = KStandardDirs::findExe(QStringLiteral("hwclock"), exePath);
++    QString hwclock = "@hwclock@";
+     if (!hwclock.isEmpty()) {
+         KProcess::execute(hwclock, QStringList() << QStringLiteral("--systohc"));
+     }
+-- 
+2.6.3
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-desktop/0003-tzdir.patch b/pkgs/desktops/plasma-5.5/plasma-desktop/0003-tzdir.patch
new file mode 100644
index 000000000000..aba97b032f8a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-desktop/0003-tzdir.patch
@@ -0,0 +1,30 @@
+From 0a8e2ae5cb64c5762408df920d99459b20d52b29 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 22 Nov 2015 09:39:24 -0600
+Subject: [PATCH 3/3] tzdir
+
+---
+ kcms/dateandtime/helper.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/kcms/dateandtime/helper.cpp b/kcms/dateandtime/helper.cpp
+index 5171753..92b5d9e 100644
+--- a/kcms/dateandtime/helper.cpp
++++ b/kcms/dateandtime/helper.cpp
+@@ -181,7 +181,12 @@ int ClockHelper::tz( const QString& selectedzone )
+ 
+     val = selectedzone;
+ #else
+-    QString tz = "/usr/share/zoneinfo/" + selectedzone;
++    QString tzdir = QString::fromLocal8Bit(qgetenv("TZDIR"));
++    QString tz = tzdir + "/" + selectedzone;
++    if (tzdir.isEmpty()) {
++      // Standard Linux path
++      tz = "/usr/share/zoneinfo/" + selectedzone;
++    }
+ 
+     if (QFile::exists(tz)) { // make sure the new TZ really exists
+         QFile::remove(QStringLiteral("/etc/localtime"));
+-- 
+2.6.3
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-desktop/default.nix b/pkgs/desktops/plasma-5.5/plasma-desktop/default.nix
new file mode 100644
index 000000000000..843a7c03c43a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-desktop/default.nix
@@ -0,0 +1,59 @@
+{ plasmaPackage, substituteAll, extra-cmake-modules, kdoctools
+, attica, baloo, boost, fontconfig, kactivities, kauth, kcmutils
+, kdbusaddons, kdeclarative, kded, kdelibs4support, kemoticons
+, kglobalaccel, ki18n, kitemmodels, knewstuff, knotifications
+, knotifyconfig, kpeople, krunner, kwallet, kwin, phonon
+, plasma-framework, plasma-workspace, qtdeclarative, qtx11extras
+, qtsvg, libXcursor, libXft, libxkbfile, xf86inputevdev
+, xf86inputsynaptics, xinput, xkeyboard_config, xorgserver
+, libcanberra_kde, libpulseaudio, makeQtWrapper, utillinux
+, qtquick1, qtquickcontrols
+}:
+
+plasmaPackage rec {
+  name = "plasma-desktop";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    attica boost fontconfig kcmutils kdbusaddons kded kitemmodels
+    knewstuff knotifications knotifyconfig kwallet libcanberra_kde
+    libXcursor libpulseaudio libXft libxkbfile phonon
+    qtsvg xf86inputevdev xf86inputsynaptics
+    xkeyboard_config xinput
+  ];
+  propagatedBuildInputs = [
+    baloo kactivities kauth kdeclarative kdelibs4support kemoticons
+    kglobalaccel ki18n kpeople krunner kwin plasma-framework
+    plasma-workspace qtdeclarative qtquick1 qtquickcontrols
+    qtx11extras
+  ];
+  # All propagatedBuildInputs should be present in the profile because
+  # wrappers cannot be used here.
+  propagatedUserEnvPkgs = propagatedBuildInputs;
+  patches = [
+    ./0001-qt-5.5-QML-import-paths.patch
+    (substituteAll {
+      src = ./0002-hwclock.patch;
+      hwclock = "${utillinux}/sbin/hwclock";
+    })
+    ./0003-tzdir.patch
+  ];
+  NIX_CFLAGS_COMPILE = [ "-I${xorgserver}/include/xorg" ];
+  cmakeFlags = [
+    "-DEvdev_INCLUDE_DIRS=${xf86inputevdev}/include/xorg"
+    "-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics}/include/xorg"
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kaccess"
+    wrapQtProgram "$out/bin/solid-action-desktop-gen"
+    wrapQtProgram "$out/bin/knetattach"
+    wrapQtProgram "$out/bin/krdb"
+    wrapQtProgram "$out/bin/kapplymousetheme"
+    wrapQtProgram "$out/bin/kfontinst"
+    wrapQtProgram "$out/bin/kcm-touchpad-list-devices"
+    wrapQtProgram "$out/bin/kfontview"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-mediacenter.nix b/pkgs/desktops/plasma-5.5/plasma-mediacenter.nix
new file mode 100644
index 000000000000..afd8a18bbbd6
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-mediacenter.nix
@@ -0,0 +1,23 @@
+{ plasmaPackage, extra-cmake-modules, baloo, kactivities, kconfig
+, kcoreaddons, kdeclarative, kguiaddons, ki18n, kio, kservice
+, kfilemetadata, plasma-framework, qtdeclarative, qtmultimedia
+, taglib
+}:
+
+plasmaPackage rec {
+  name = "plasma-mediacenter";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kconfig kcoreaddons kguiaddons kservice
+    qtdeclarative qtmultimedia taglib
+  ];
+  propagatedBuildInputs = [
+    baloo kactivities kdeclarative kfilemetadata ki18n kio
+    plasma-framework
+  ];
+  # All propagatedBuildInputs should be present in the profile because
+  # wrappers cannot be used here.
+  propagatedUserEnvPkgs = propagatedBuildInputs;
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch b/pkgs/desktops/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch
new file mode 100644
index 000000000000..79b5cfb437e2
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch
@@ -0,0 +1,25 @@
+From faf13c97ff1192a201843b9d52f4002dbd9022af Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 25 Oct 2015 09:09:27 -0500
+Subject: [PATCH] mobile-broadband-provider-info path
+
+---
+ libs/editor/mobileproviders.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libs/editor/mobileproviders.cpp b/libs/editor/mobileproviders.cpp
+index 568cb34..98a5992 100644
+--- a/libs/editor/mobileproviders.cpp
++++ b/libs/editor/mobileproviders.cpp
+@@ -26,7 +26,7 @@
+ 
+ #include <KLocale>
+ 
+-const QString MobileProviders::ProvidersFile = "/usr/share/mobile-broadband-provider-info/serviceproviders.xml";
++const QString MobileProviders::ProvidersFile = "@mobile_broadband_provider_info@/share/mobile-broadband-provider-info/serviceproviders.xml";
+ 
+ bool localeAwareCompare(const QString & one, const QString & two) {
+     return one.localeAwareCompare(two) < 0;
+-- 
+2.6.2
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-nm/default.nix b/pkgs/desktops/plasma-5.5/plasma-nm/default.nix
new file mode 100644
index 000000000000..249c6d8aac94
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-nm/default.nix
@@ -0,0 +1,36 @@
+{ plasmaPackage, substituteAll, extra-cmake-modules, kdoctools
+, kcompletion, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative
+, kdelibs4support, ki18n, kiconthemes, kinit, kio, kitemviews
+, knotifications, kservice, kwallet, kwidgetsaddons, kwindowsystem
+, kxmlgui, makeQtWrapper, mobile_broadband_provider_info
+, modemmanager-qt, networkmanager-qt, openconnect, plasma-framework
+, qca-qt5, qtdeclarative, solid
+}:
+
+plasmaPackage {
+  name = "plasma-nm";
+  patches = [
+    (substituteAll {
+      src = ./0001-mobile-broadband-provider-info-path.patch;
+      inherit mobile_broadband_provider_info;
+    })
+  ];
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kcompletion kconfigwidgets kcoreaddons kdbusaddons kiconthemes
+    kinit kitemviews knotifications kservice kwallet kwidgetsaddons
+    kxmlgui mobile_broadband_provider_info modemmanager-qt
+    networkmanager-qt openconnect qca-qt5 solid
+  ];
+  propagatedBuildInputs = [
+    kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework
+    qtdeclarative
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kde5-nm-connection-editor"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-pa.nix b/pkgs/desktops/plasma-5.5/plasma-pa.nix
new file mode 100644
index 000000000000..ff56d1199b15
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-pa.nix
@@ -0,0 +1,18 @@
+{ plasmaPackage, extra-cmake-modules, glib, kdoctools, kconfigwidgets
+, kcoreaddons, kdeclarative, kglobalaccel, ki18n, libpulseaudio
+, plasma-framework
+}:
+
+plasmaPackage {
+  name = "plasma-pa";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    glib kconfigwidgets kcoreaddons libpulseaudio
+  ];
+  propagatedBuildInputs = [
+    kdeclarative kglobalaccel ki18n plasma-framework
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-workspace-wallpapers.nix b/pkgs/desktops/plasma-5.5/plasma-workspace-wallpapers.nix
new file mode 100644
index 000000000000..bc87abcad153
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-workspace-wallpapers.nix
@@ -0,0 +1,10 @@
+{ plasmaPackage
+, extra-cmake-modules
+}:
+
+plasmaPackage {
+  name = "plasma-workspace-wallpapers";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/plasma-workspace/0001-qt-5.5-QML-import-paths.patch b/pkgs/desktops/plasma-5.5/plasma-workspace/0001-qt-5.5-QML-import-paths.patch
new file mode 100644
index 000000000000..251e1260e664
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-workspace/0001-qt-5.5-QML-import-paths.patch
@@ -0,0 +1,123 @@
+From 1b95c8c95fb8ea097bb5236b19962c7feff9f333 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 19 Oct 2015 18:55:36 -0500
+Subject: [PATCH 1/2] qt-5.5 QML import paths
+
+---
+ applets/analog-clock/contents/ui/analogclock.qml                     | 2 +-
+ applets/batterymonitor/package/contents/ui/BatteryItem.qml           | 2 +-
+ applets/batterymonitor/package/contents/ui/CompactRepresentation.qml | 2 +-
+ applets/batterymonitor/package/contents/ui/PopupDialog.qml           | 2 +-
+ applets/batterymonitor/package/contents/ui/batterymonitor.qml        | 2 +-
+ applets/lock_logout/contents/ui/lockout.qml                          | 2 +-
+ applets/notifications/package/contents/ui/main.qml                   | 2 +-
+ applets/systemtray/package/contents/ui/main.qml                      | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/applets/analog-clock/contents/ui/analogclock.qml b/applets/analog-clock/contents/ui/analogclock.qml
+index edb3af9..7eb839d 100644
+--- a/applets/analog-clock/contents/ui/analogclock.qml
++++ b/applets/analog-clock/contents/ui/analogclock.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.calendar 2.0 as PlasmaCalendar
+ import QtQuick.Layouts 1.1
+ 
+ import org.kde.plasma.core 2.0 as PlasmaCore
+-import "logic.js" as Logic
++import "../code/logic.js" as Logic
+ 
+ Item {
+     id: analogclock
+diff --git a/applets/batterymonitor/package/contents/ui/BatteryItem.qml b/applets/batterymonitor/package/contents/ui/BatteryItem.qml
+index 8d43797..3322369 100644
+--- a/applets/batterymonitor/package/contents/ui/BatteryItem.qml
++++ b/applets/batterymonitor/package/contents/ui/BatteryItem.qml
+@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
+ import org.kde.plasma.extras 2.0 as PlasmaExtras
+ import org.kde.plasma.workspace.components 2.0
+ import org.kde.kcoreaddons 1.0 as KCoreAddons
+-import "logic.js" as Logic
++import "../code/logic.js" as Logic
+ 
+ Item {
+     id: batteryItem
+diff --git a/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml b/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml
+index b4059cb..ae8eeaf 100755
+--- a/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml
++++ b/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml
+@@ -24,7 +24,7 @@ import QtQuick.Layouts 1.1
+ import org.kde.plasma.core 2.0 as PlasmaCore
+ import org.kde.plasma.components 2.0 as Components
+ import org.kde.plasma.workspace.components 2.0
+-import "logic.js" as Logic
++import "../code/logic.js" as Logic
+ 
+ MouseArea {
+     id: root
+diff --git a/applets/batterymonitor/package/contents/ui/PopupDialog.qml b/applets/batterymonitor/package/contents/ui/PopupDialog.qml
+index d4952c6..2b6586d 100644
+--- a/applets/batterymonitor/package/contents/ui/PopupDialog.qml
++++ b/applets/batterymonitor/package/contents/ui/PopupDialog.qml
+@@ -23,7 +23,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore
+ import org.kde.plasma.components 2.0 as Components
+ import org.kde.plasma.extras 2.0 as PlasmaExtras
+ import org.kde.kquickcontrolsaddons 2.0
+-import "logic.js" as Logic
++import "../code/logic.js" as Logic
+ 
+ FocusScope {
+     id: dialog
+diff --git a/applets/batterymonitor/package/contents/ui/batterymonitor.qml b/applets/batterymonitor/package/contents/ui/batterymonitor.qml
+index a086581..6e1e8be 100755
+--- a/applets/batterymonitor/package/contents/ui/batterymonitor.qml
++++ b/applets/batterymonitor/package/contents/ui/batterymonitor.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0
+ import org.kde.plasma.core 2.0 as PlasmaCore
+ import org.kde.kcoreaddons 1.0 as KCoreAddons
+ import org.kde.kquickcontrolsaddons 2.0
+-import "logic.js" as Logic
++import "../code/logic.js" as Logic
+ 
+ Item {
+     id: batterymonitor
+diff --git a/applets/lock_logout/contents/ui/lockout.qml b/applets/lock_logout/contents/ui/lockout.qml
+index d32e7b7..828c5fb 100644
+--- a/applets/lock_logout/contents/ui/lockout.qml
++++ b/applets/lock_logout/contents/ui/lockout.qml
+@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0
+ import org.kde.plasma.core 2.0 as PlasmaCore
+ import org.kde.plasma.components 2.0
+ import org.kde.kquickcontrolsaddons 2.0
+-import "data.js" as Data
++import "../code/data.js" as Data
+ 
+ Flow {
+     id: lockout
+diff --git a/applets/notifications/package/contents/ui/main.qml b/applets/notifications/package/contents/ui/main.qml
+index 2871cdb..3f50856 100644
+--- a/applets/notifications/package/contents/ui/main.qml
++++ b/applets/notifications/package/contents/ui/main.qml
+@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as PlasmaExtras
+ 
+ import org.kde.plasma.private.notifications 1.0
+ 
+-import "uiproperties.js" as UiProperties
++import "../code/uiproperties.js" as UiProperties
+ 
+ MouseEventListener {
+     id: notificationsApplet
+diff --git a/applets/systemtray/package/contents/ui/main.qml b/applets/systemtray/package/contents/ui/main.qml
+index 2e26455..864c9c5 100644
+--- a/applets/systemtray/package/contents/ui/main.qml
++++ b/applets/systemtray/package/contents/ui/main.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore
+ // import org.kde.plasma.extras 2.0 as PlasmaExtras
+ 
+ import org.kde.private.systemtray 2.0 as SystemTray
+-import "Layout.js" as LayoutManager
++import "../code/Layout.js" as LayoutManager
+ 
+ Item {
+     id: root
+-- 
+2.6.3
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-workspace/0002-startkde-NixOS-patches.patch b/pkgs/desktops/plasma-5.5/plasma-workspace/0002-startkde-NixOS-patches.patch
new file mode 100644
index 000000000000..d8f3e669bc7b
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-workspace/0002-startkde-NixOS-patches.patch
@@ -0,0 +1,397 @@
+From 8e5cf662d55415a838ce8c53f854202257e9feb4 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sun, 22 Nov 2015 08:31:42 -0600
+Subject: [PATCH 2/2] startkde NixOS patches
+
+---
+ startkde/startkde.cmake | 211 ++++++++++++++++++++----------------------------
+ 1 file changed, 89 insertions(+), 122 deletions(-)
+
+diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake
+index 41a8975..130578e 100644
+--- a/startkde/startkde.cmake
++++ b/startkde/startkde.cmake
+@@ -1,8 +1,31 @@
+-#!/bin/sh
++#!@bash@/bin/bash
+ #
+ #  DEFAULT KDE STARTUP SCRIPT ( @PROJECT_VERSION@ )
+ #
+ 
++set -x
++
++# The KDE icon cache is supposed to update itself
++# automatically, but it uses the timestamp on the icon
++# theme directory as a trigger.  Since in Nix the
++# timestamp is always the same, this doesn't work.  So as
++# a workaround, nuke the icon cache on login.  This isn't
++# perfect, since it may require logging out after
++# installing new applications to update the cache.
++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html
++rm -fv $HOME/.cache/icon-cache.kcache
++
++# Qt writes a weird ‘libraryPath’ line to
++# ~/.config/Trolltech.conf that causes the KDE plugin
++# paths of previous KDE invocations to be searched.
++# Obviously using mismatching KDE libraries is potentially
++# disastrous, so here we nuke references to the Nix store
++# in Trolltech.conf.  A better solution would be to stop
++# Qt from doing this wackiness in the first place.
++if [ -e $HOME/.config/Trolltech.conf ]; then
++    @gnused@/bin/sed -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf
++fi
++
+ if test "x$1" = x--failsafe; then
+     KDE_FAILSAFE=1 # General failsafe flag
+     KWIN_COMPOSE=N # Disable KWin's compositing
+@@ -16,29 +39,16 @@ trap 'echo GOT SIGHUP' HUP
+ # we have to unset this for Darwin since it will screw up KDE's dynamic-loading
+ unset DYLD_FORCE_FLAT_NAMESPACE
+ 
+-# in case we have been started with full pathname spec without being in PATH
+-bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'`
+-if [ -n "$bindir" ]; then
+-  qbindir=`qtpaths --binaries-dir`
+-  qdbus=$qbindir/qdbus
+-  case $PATH in
+-    $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;;
+-    *) PATH=$bindir:$PATH; export PATH;;
+-  esac
+-else
+-  qdbus=qdbus
+-fi
+-
+ # Check if a KDE session already is running and whether it's possible to connect to X
+-kcheckrunning
++@out@/bin/kcheckrunning
+ kcheckrunning_result=$?
+ if test $kcheckrunning_result -eq 0 ; then
+-	echo "KDE seems to be already running on this display."
+-	xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null
++  echo "KDE seems to be already running on this display."
++  @xmessage@/bin/xmessage -geometry 500x100 "KDE seems to be already running on this display."
+ 	exit 1
+ elif test $kcheckrunning_result -eq 2 ; then
+ 	echo "\$DISPLAY is not set or cannot connect to the X server."
+-        exit 1
++  exit 1
+ fi
+ 
+ # Boot sequence:
+@@ -56,13 +66,8 @@ fi
+ # * Then ksmserver is started which takes control of the rest of the startup sequence
+ 
+ # We need to create config folder so we can write startupconfigkeys
+-if [  ${XDG_CONFIG_HOME} ]; then
+-  configDir=$XDG_CONFIG_HOME;
+-else
+-  configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+-fi
+-
+-mkdir -p $configDir
++configDir=$(@qttools@/bin/qtpaths --writable-path GenericConfigLocation)
++mkdir -p "$configDir"
+ 
+ #This is basically setting defaults so we can use them with kstartupconfig5
+ cat >$configDir/startupconfigkeys <<EOF
+@@ -101,42 +106,10 @@ XftSubPixel=none
+ EOF
+ }
+ 
+-# Make sure the Oxygen font is installed
+-# This is necessary for setups where CMAKE_INSTALL_PREFIX
+-# is not in /usr. fontconfig looks in /usr, ~/.fonts and
+-# $XDG_DATA_HOME for fonts. In this case, we symlink the
+-# Oxygen font under ${XDG_DATA_HOME} and make it known to
+-# fontconfig
+-
+-usr_share="/usr/share"
+-install_share="@KDE_INSTALL_FULL_DATADIR@"
+-
+-if [ ! $install_share = $usr_share ]; then
+-
+-    if [ ${XDG_DATA_HOME} ]; then
+-        fontsDir="${XDG_DATA_HOME}/fonts"
+-    else
+-        fontsDir="${HOME}/.fonts"
+-    fi
+-
+-    test -d $fontsDir || {
+-        mkdir -p $fontsDir
+-    }
+-
+-    oxygenDir=$fontsDir/oxygen
+-    prefixDir="@@KDE_INSTALL_FULL_DATADIR@/fonts/oxygen"
+-
+-    # if the oxygen dir doesn't exist, create a symlink to be sure that the
+-    # Oxygen font is available to the user
+-    test -d $oxygenDir || test -d $prefixDir && {
+-        test -h $oxygenDir || ln -s $prefixDir $oxygenDir && fc-cache $oxygenDir
+-    }
+-fi
+-
+-kstartupconfig5
++@out@/bin/kstartupconfig5
+ returncode=$?
+ if test $returncode -ne 0; then
+-    xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
++    @xmessage@/bin/xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
+     exit 1
+ fi
+ [ -r $configDir/startupconfig ] && . $configDir/startupconfig
+@@ -145,9 +118,11 @@ if test "$kdeglobals_kscreen_scalefactor" -ne 1; then
+     export QT_DEVICE_PIXEL_RATIO=$kdeglobals_kscreen_scalefactor
+ fi
+ 
++XCURSOR_PATH=~/.icons:$(echo "$XDG_DATA_DIRS" | @coreutils@/bin/tr ":" "\n" | @gnused@/bin/sed 's,$,/icons,g' | @coreutils@/bin/tr "\n" ":")
++export XCURSOR_PATH
++
+ # XCursor mouse theme needs to be applied here to work even for kded or ksmserver
+ if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then
+-    @EXPORT_XCURSOR_PATH@
+ 
+     kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"
+     if test $? -eq 10; then
+@@ -163,21 +138,39 @@ if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize"
+     fi
+ fi
+ 
+-if test "$kcmfonts_general_forcefontdpi" -ne 0; then
+-    xrdb -quiet -merge -nocpp <<EOF
+-Xft.dpi: $kcmfonts_general_forcefontdpi
+-EOF
+-fi
++# Set a left cursor instead of the standard X11 "X" cursor, since I've heard
++# from some users that they're confused and don't know what to do. This is
++# especially necessary on slow machines, where starting KDE takes one or two
++# minutes until anything appears on the screen.
++#
++# If the user has overwritten fonts, the cursor font may be different now
++# so don't move this up.
++#
++@xsetroot@/bin/xsetroot -cursor_name left_ptr
+ 
+ dl=$DESKTOP_LOCKED
+ unset DESKTOP_LOCKED # Don't want it in the environment
+ 
++# Make sure that D-Bus is running
++# D-Bus autolaunch is broken
++if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
++    eval `@dbus_tools@/bin/dbus-launch --sh-syntax --exit-with-session`
++fi
++if @qttools@/bin/qdbus >/dev/null 2>/dev/null; then
++    : # ok
++else
++    echo 'startkde: Could not start D-Bus. Can you call qdbus?'  1>&2
++    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
++    @xmessage@/bin/xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
++    exit 1
++fi
++
+ ksplash_pid=
+ if test -z "$dl"; then
+   # the splashscreen and progress indicator
+   case "$ksplashrc_ksplash_engine" in
+     KSplashQML)
+-      ksplash_pid=`ksplashqml "${ksplashrc_ksplash_theme}" --pid`
++      ksplash_pid=`@out@/bin/ksplashqml "${ksplashrc_ksplash_theme}" --pid`
+       ;;
+     None)
+       ;;
+@@ -200,8 +193,7 @@ fi
+ # For anything else (that doesn't set env vars, or that needs a window manager),
+ # better use the Autostart folder.
+ 
+-# TODO: Use GenericConfigLocation once we depend on Qt 5.4
+-scriptpath=`qtpaths --paths ConfigLocation | tr ':' '\n' | sed 's,$,/plasma-workspace,g'`
++scriptpath=$(@qttools@/bin/qtpaths --paths GenericConfigLocation | tr ':' '\n' | @gnused@/bin/sed 's,$,/plasma-workspace,g')
+ 
+ # Add /env/ to the directory to locate the scripts to be sourced
+ for prefix in `echo $scriptpath`; do
+@@ -231,7 +223,7 @@ usr_odir=$HOME/.fonts/kde-override
+ usr_fdir=$HOME/.fonts
+ 
+ if test -n "$KDEDIRS"; then
+-  kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'`
++  kdedirs_first=`echo "$KDEDIRS" | @gnused@/bin/sed -e 's/:.*//'`
+   sys_odir=$kdedirs_first/share/fonts/override
+   sys_fdir=$kdedirs_first/share/fonts
+ else
+@@ -244,23 +236,13 @@ fi
+ # add the user's dirs to the font path, as they might simply have been made
+ # read-only by the administrator, for whatever reason.
+ 
+-test -d "$sys_odir" && xset +fp "$sys_odir"
+-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir")
+-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir")
+-test -d "$sys_fdir" && xset fp+ "$sys_fdir"
++test -d "$sys_odir" && @xset@/bin/xset +fp "$sys_odir"
++test -d "$usr_odir" && ( @mkfontdir@/bin/mkfontdir "$usr_odir" ; @xset@/bin/xset +fp "$usr_odir" )
++test -d "$usr_fdir" && ( @mkfontdir@/bin/mkfontdir "$usr_fdir" ; @xset@/bin/xset fp+ "$usr_fdir" )
++test -d "$sys_fdir" && @xset@/bin/xset fp+ "$sys_fdir"
+ 
+ # Ask X11 to rebuild its font list.
+-xset fp rehash
+-
+-# Set a left cursor instead of the standard X11 "X" cursor, since I've heard
+-# from some users that they're confused and don't know what to do. This is
+-# especially necessary on slow machines, where starting KDE takes one or two
+-# minutes until anything appears on the screen.
+-#
+-# If the user has overwritten fonts, the cursor font may be different now
+-# so don't move this up.
+-#
+-xsetroot -cursor_name left_ptr
++@xset@/bin/xset fp rehash
+ 
+ # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
+ if test -n "$GS_LIB" ; then
+@@ -273,26 +255,6 @@ fi
+ 
+ echo 'startkde: Starting up...'  1>&2
+ 
+-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all.
+-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend
+-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or
+-# /usr/local.
+-if test -z "$XDG_DATA_DIRS"; then
+-    XDG_DATA_DIRS="@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@:/usr/share:/usr/local/share"
+-fi
+-export XDG_DATA_DIRS
+-
+-# Make sure that D-Bus is running
+-if $qdbus >/dev/null 2>/dev/null; then
+-    : # ok
+-else
+-    echo 'startkde: Could not start D-Bus. Can you call qdbus?'  1>&2
+-    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+-    xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
+-    exit 1
+-fi
+-
+-
+ # Mark that full KDE session is running (e.g. Konqueror preloading works only
+ # with full KDE running). The KDE_FULL_SESSION property can be detected by
+ # any X client connected to the same X session, even if not launched
+@@ -317,11 +279,11 @@ fi
+ #
+ KDE_FULL_SESSION=true
+ export KDE_FULL_SESSION
+-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
++@xprop@/bin/xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
+ 
+ KDE_SESSION_VERSION=5
+ export KDE_SESSION_VERSION
+-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
++@xprop@/bin/xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
+ 
+ KDE_SESSION_UID=`id -ru`
+ export KDE_SESSION_UID
+@@ -331,11 +293,11 @@ export XDG_CURRENT_DESKTOP
+ 
+ # At this point all the environment is ready, let's send it to kwalletd if running
+ if test -n "$PAM_KWALLET_LOGIN" ; then
+-    env | socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN
++    env | @socat@/bin/socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN
+ fi
+ # ...and also to kwalletd5
+ if test -n "$PAM_KWALLET5_LOGIN" ; then
+-    env | socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
++    env | @socat@/bin/socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
+ fi
+ 
+ # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
+@@ -348,21 +310,26 @@ if test $? -ne 0; then
+   # Startup error
+   echo 'startkde: Could not sync environment to dbus.'  1>&2
+   test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+-  xmessage -geometry 500x100 "Could not sync environment to dbus."
++  @xmessage@/bin/xmessage -geometry 500x100 "Could not sync environment to dbus."
+   exit 1
+ fi
+ 
+ # We set LD_BIND_NOW to increase the efficiency of kdeinit.
+ # kdeinit unsets this variable before loading applications.
+-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
++LD_BIND_NOW=true @kinit@/lib/libexec/kf5/start_kdeinit_wrapper --kded +kcminit_startup
+ if test $? -ne 0; then
+   # Startup error
+   echo 'startkde: Could not start kdeinit5. Check your installation.'  1>&2
+   test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+-  xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
++  @xmessage@/bin/xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
+   exit 1
+ fi
+ 
++# (NixOS) We run kbuildsycoca5 before starting the user session because things
++# may be missing or moved if they have run nixos-rebuild and it may not be
++# possible for them to start Konsole to run it manually!
++@kservice@/bin/kbuildsycoca5
++
+ # finally, give the session control to the session manager
+ # see kdebase/ksmserver for the description of the rest of the startup sequence
+ # if the KDEWM environment variable has been set, then it will be used as KDE's
+@@ -378,27 +345,27 @@ test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM"
+ # lock now and do the rest of the KDE startup underneath the locker.
+ KSMSERVEROPTIONS=""
+ test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen"
+-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
++@kinit@/bin/kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
+ if test $? -eq 255; then
+   # Startup error
+   echo 'startkde: Could not start ksmserver. Check your installation.'  1>&2
+   test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+-  xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
++  @xmessage@/bin/xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
+ fi
+ 
+-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
++wait_drkonqi=`@kconfig@/bin/kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
+ 
+ if test x"$wait_drkonqi"x = x"true"x ; then
+     # wait for remaining drkonqi instances with timeout (in seconds)
+-    wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
++    wait_drkonqi_timeout=`@kconfig@/bin/kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
+     wait_drkonqi_counter=0
+-    while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
++    while @qttools@/bin/qdbus | @gnugrep@/bin/grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
+         sleep 5
+         wait_drkonqi_counter=$((wait_drkonqi_counter+5))
+         if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
+             # ask remaining drkonqis to die in a graceful way
+-            $qdbus | grep 'org.kde.drkonqi-' | while read address ; do
+-                $qdbus "$address" "/MainApplication" "quit"
++            @qttools@/bin/qdbus | @gnugrep@/bin/grep 'org.kde.drkonqi-' | while read address ; do
++                @qttools@/bin/qdbus "$address" "/MainApplication" "quit"
+             done
+             break
+         fi
+@@ -410,21 +377,21 @@ echo 'startkde: Shutting down...'  1>&2
+ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+ 
+ # Clean up
+-kdeinit5_shutdown
++@kinit@/bin/kdeinit5_shutdown
+ 
+ echo 'startkde: Running shutdown scripts...'  1>&2
+ 
+ # Run scripts found in <config locations>/plasma-workspace/shutdown
+ for prefix in `echo "$scriptpath"`; do
+-  for file in `ls "$prefix"/shutdown 2> /dev/null | egrep -v '(~|\.bak)$'`; do
++  for file in `ls "$prefix"/shutdown 2> /dev/null | @gnugrep@/bin/egrep -v '(~|\.bak)$'`; do
+     test -x "$prefix/shutdown/$file" && "$prefix/shutdown/$file"
+   done
+ done
+ 
+ unset KDE_FULL_SESSION
+-xprop -root -remove KDE_FULL_SESSION
++@xprop@/bin/xprop -root -remove KDE_FULL_SESSION
+ unset KDE_SESSION_VERSION
+-xprop -root -remove KDE_SESSION_VERSION
++@xprop@/bin/xprop -root -remove KDE_SESSION_VERSION
+ unset KDE_SESSION_UID
+ 
+ echo 'startkde: Done.'  1>&2
+-- 
+2.6.3
+
diff --git a/pkgs/desktops/plasma-5.5/plasma-workspace/default.nix b/pkgs/desktops/plasma-5.5/plasma-workspace/default.nix
new file mode 100644
index 000000000000..bf8b0304a413
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/plasma-workspace/default.nix
@@ -0,0 +1,62 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, baloo
+, kactivities, kcmutils, kcrash, kdbusaddons, kdeclarative
+, kdelibs4support, kdesu, kdewebkit, kglobalaccel, kidletime
+, kjsembed, knewstuff, knotifyconfig, kpackage, krunner
+, ktexteditor, ktextwidgets, kwallet, kwayland, kwin, kxmlrpcclient
+, libdbusmenu, libkscreen, libSM, libXcursor, networkmanager-qt
+, pam, phonon, plasma-framework, qtquick1, qtscript, qtx11extras, wayland
+, libksysguard, bash, coreutils, gnused, gnugrep, socat, kconfig
+, kinit, kservice, makeQtWrapper, qttools, dbus_tools, mkfontdir, xmessage
+, xprop, xrdb, xset, xsetroot, solid, qtquickcontrols
+}:
+
+plasmaPackage rec {
+  name = "plasma-workspace";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kcmutils kcrash kdbusaddons kdesu kdewebkit kjsembed knewstuff
+    knotifyconfig kpackage ktextwidgets kwallet kwayland kxmlrpcclient
+    libdbusmenu libSM libXcursor networkmanager-qt pam phonon
+    qtscript wayland
+  ];
+  propagatedBuildInputs = [
+    baloo kactivities kdeclarative kdelibs4support kglobalaccel
+    kidletime krunner ktexteditor kwin libkscreen libksysguard
+    plasma-framework qtquick1 qtquickcontrols qtx11extras solid
+  ];
+  patches = [
+    ./0001-qt-5.5-QML-import-paths.patch
+    ./0002-startkde-NixOS-patches.patch
+  ];
+
+  inherit bash coreutils gnused gnugrep socat;
+  inherit kconfig kinit kservice qttools;
+  inherit dbus_tools mkfontdir xmessage xprop xrdb xset xsetroot;
+  postPatch = ''
+    substituteAllInPlace startkde/startkde.cmake
+    substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \
+      --replace kdostartupconfig5 $out/bin/kdostartupconfig5
+  '';
+  postInstall = ''
+    wrapQtProgram "$out/bin/ksmserver"
+    wrapQtProgram "$out/bin/plasmawindowed"
+    wrapQtProgram "$out/bin/kcminit_startup"
+    wrapQtProgram "$out/bin/ksplashqml"
+    wrapQtProgram "$out/bin/kcheckrunning"
+    wrapQtProgram "$out/bin/systemmonitor"
+    wrapQtProgram "$out/bin/kstartupconfig5"
+    wrapQtProgram "$out/bin/startplasmacompositor"
+    wrapQtProgram "$out/bin/kdostartupconfig5"
+    wrapQtProgram "$out/bin/klipper"
+    wrapQtProgram "$out/bin/kuiserver5"
+    wrapQtProgram "$out/bin/krunner"
+    wrapQtProgram "$out/bin/plasmashell"
+
+    wrapQtProgram "$out/lib/libexec/drkonqi"
+    rm "$out/lib/libexec/startplasma"
+  '';
+}
diff --git a/pkgs/desktops/plasma-5.5/polkit-kde-agent.nix b/pkgs/desktops/plasma-5.5/polkit-kde-agent.nix
new file mode 100644
index 000000000000..0173ec655169
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/polkit-kde-agent.nix
@@ -0,0 +1,31 @@
+{ plasmaPackage
+, extra-cmake-modules
+, ki18n
+, kwindowsystem
+, kdbusaddons
+, kwidgetsaddons
+, kcoreaddons
+, kcrash
+, kconfig
+, kiconthemes
+, knotifications
+, polkitQt
+}:
+
+plasmaPackage {
+  name = "polkit-kde-agent";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kdbusaddons
+    kwidgetsaddons
+    kcoreaddons
+    kcrash
+    kconfig
+    kiconthemes
+    knotifications
+    polkitQt
+  ];
+  propagatedBuildInputs = [ ki18n kwindowsystem ];
+}
diff --git a/pkgs/desktops/plasma-5.5/powerdevil.nix b/pkgs/desktops/plasma-5.5/powerdevil.nix
new file mode 100644
index 000000000000..475e8878206a
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/powerdevil.nix
@@ -0,0 +1,20 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kactivities
+, kauth, kconfig, kdbusaddons, kdelibs4support, kglobalaccel, ki18n
+, kidletime, kio, knotifyconfig, kwayland, libkscreen, plasma-workspace
+, qtx11extras, solid, udev
+}:
+
+plasmaPackage {
+  name = "powerdevil";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    kconfig kdbusaddons knotifyconfig solid udev
+  ];
+  propagatedBuildInputs = [
+    kactivities kauth kdelibs4support kglobalaccel ki18n kio kidletime
+    kwayland libkscreen plasma-workspace qtx11extras
+  ];
+}
diff --git a/pkgs/desktops/plasma-5.5/setup-hook.sh b/pkgs/desktops/plasma-5.5/setup-hook.sh
new file mode 100644
index 000000000000..a8d9b7e0e36f
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/setup-hook.sh
@@ -0,0 +1 @@
+addToSearchPath XDG_DATA_DIRS @out@/share
diff --git a/pkgs/desktops/plasma-5.5/srcs.nix b/pkgs/desktops/plasma-5.5/srcs.nix
new file mode 100644
index 000000000000..f8ff0be3f853
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/srcs.nix
@@ -0,0 +1,309 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  bluedevil = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/bluedevil-5.4.95.tar.xz";
+      sha256 = "0ffd6vw3g0psysc4qwac55r9p32rl7jwvmwc468rpp9xvh52lx4p";
+      name = "bluedevil-5.4.95.tar.xz";
+    };
+  };
+  breeze = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/breeze-5.4.95.tar.xz";
+      sha256 = "1xvxykmzp6i2qh6zgdwh1hj6pcfll7y3b63ypivnggi96crynxyr";
+      name = "breeze-5.4.95.tar.xz";
+    };
+  };
+  breeze-gtk = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/breeze-gtk-5.4.95.tar.xz";
+      sha256 = "1f8qfnm6qyxkar0kw0ryls8z19hk14vlkk1zvm19h0i2fhihgnqg";
+      name = "breeze-gtk-5.4.95.tar.xz";
+    };
+  };
+  discover = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/discover-5.4.95.tar.xz";
+      sha256 = "1sj2b7sg23ahjix7xnwx3yja1iz8373c3dirgzr0ggwvqb5q5miz";
+      name = "discover-5.4.95.tar.xz";
+    };
+  };
+  kde-cli-tools = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kde-cli-tools-5.4.95.tar.xz";
+      sha256 = "0mh0bjjjji00nrsqr3988qh43jj7i4h7z2lpp2h1i0ykjczjmpj3";
+      name = "kde-cli-tools-5.4.95.tar.xz";
+    };
+  };
+  kdecoration = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kdecoration-5.4.95.tar.xz";
+      sha256 = "1hbdr9nc50438lrrkdij7mdlg8sclaww1ky4rs0c067gnjgqlff3";
+      name = "kdecoration-5.4.95.tar.xz";
+    };
+  };
+  kde-gtk-config = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kde-gtk-config-5.4.95.tar.xz";
+      sha256 = "17l9ypm5b4s8580zi2maxlszh890svcrh1jq3czz10izlmhd1zih";
+      name = "kde-gtk-config-5.4.95.tar.xz";
+    };
+  };
+  kdeplasma-addons = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kdeplasma-addons-5.4.95.tar.xz";
+      sha256 = "1a3d96pii6ljvr1sv4v1n5zqmpp0iv1la8jd44bj12d2xhrng7zq";
+      name = "kdeplasma-addons-5.4.95.tar.xz";
+    };
+  };
+  kgamma5 = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kgamma5-5.4.95.tar.xz";
+      sha256 = "0jpbd4342k8327ibwxwaam99gxc0h4bz3w0xk3chjv8jj2b3znnk";
+      name = "kgamma5-5.4.95.tar.xz";
+    };
+  };
+  khelpcenter = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/khelpcenter-5.4.95.tar.xz";
+      sha256 = "09vrqjysz20pwcrkk2713jin062prz75h6hsc2swhz873ks3krb4";
+      name = "khelpcenter-5.4.95.tar.xz";
+    };
+  };
+  khotkeys = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/khotkeys-5.4.95.tar.xz";
+      sha256 = "1haxxvs6nbva2x4i3ydx01hci2sfldqf9jdapl311hlliv7055bv";
+      name = "khotkeys-5.4.95.tar.xz";
+    };
+  };
+  kinfocenter = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kinfocenter-5.4.95.tar.xz";
+      sha256 = "1xz7k8xqzhk8y652h1gixi6bkbz041k0b3di0c5a1wpa78pzxwjb";
+      name = "kinfocenter-5.4.95.tar.xz";
+    };
+  };
+  kmenuedit = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kmenuedit-5.4.95.tar.xz";
+      sha256 = "1p3agzz2zp1jbdd820kql5064my9lzbk3b8yzli0242gc36sjagq";
+      name = "kmenuedit-5.4.95.tar.xz";
+    };
+  };
+  kscreen = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kscreen-5.4.95.tar.xz";
+      sha256 = "1viwy2ia681nkw89n796r4irlf0za1fbhspmnsjw52i9c6ccard5";
+      name = "kscreen-5.4.95.tar.xz";
+    };
+  };
+  kscreenlocker = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kscreenlocker-5.4.95.tar.xz";
+      sha256 = "08q2d39yfzfx69b6q0qsh3wlcqp6sh80jxaml2m1l8ksn354ldrg";
+      name = "kscreenlocker-5.4.95.tar.xz";
+    };
+  };
+  ksshaskpass = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/ksshaskpass-5.4.95.tar.xz";
+      sha256 = "18k4200ji1k6xb6n5x3s76yx3izqaisb3m7q3icycyzxfq7y50b4";
+      name = "ksshaskpass-5.4.95.tar.xz";
+    };
+  };
+  ksysguard = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/ksysguard-5.4.95.tar.xz";
+      sha256 = "1bjrap38zpvnxgvm6xnzvwjqdnbj6ygmgv2qpyl12nkv5r12rr73";
+      name = "ksysguard-5.4.95.tar.xz";
+    };
+  };
+  kwallet-pam = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kwallet-pam-5.4.95.tar.xz";
+      sha256 = "0vvhx582bk8hvfw3r7518g7vw104az31w6hpah7ki8kvfh35nh65";
+      name = "kwallet-pam-5.4.95.tar.xz";
+    };
+  };
+  kwayland = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kwayland-5.4.95.tar.xz";
+      sha256 = "0w4d2abxkmxgqfg1xg49x04av85lybkr6ymbpirrkfv5wwhgcnqy";
+      name = "kwayland-5.4.95.tar.xz";
+    };
+  };
+  kwayland-integration = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kwayland-integration-5.4.95.tar.xz";
+      sha256 = "1c52hfshnw9b6qi0xb1vrwg39akd57q7mjc7a5wh3kn873v23jj6";
+      name = "kwayland-integration-5.4.95.tar.xz";
+    };
+  };
+  kwin = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kwin-5.4.95.tar.xz";
+      sha256 = "09dw1vpcf20as8s172vf0mfxq1lrdmwl9m19b1pnpdi71fmmabhy";
+      name = "kwin-5.4.95.tar.xz";
+    };
+  };
+  kwrited = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/kwrited-5.4.95.tar.xz";
+      sha256 = "1bzhx8yzwcx78mqkr24pcf9vdh9dbb0rd18pwhyw3xaib2gwiry2";
+      name = "kwrited-5.4.95.tar.xz";
+    };
+  };
+  libkscreen = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/libkscreen-5.4.95.tar.xz";
+      sha256 = "1hpjylkhlfd2h9rc13widyayfgvmwy2dqkc59m1lkf8qgdq6h0sa";
+      name = "libkscreen-5.4.95.tar.xz";
+    };
+  };
+  libksysguard = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/libksysguard-5.4.95.tar.xz";
+      sha256 = "0kcxl1pjakk1l27hnc819r0319gpxzrhvq31mzhdfm3lcskjngzi";
+      name = "libksysguard-5.4.95.tar.xz";
+    };
+  };
+  milou = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/milou-5.4.95.tar.xz";
+      sha256 = "09dz4jjb6adsgwx5qwdzzhwaianlfzs2hwx4qc366yj3hxrch13d";
+      name = "milou-5.4.95.tar.xz";
+    };
+  };
+  oxygen = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/oxygen-5.4.95.tar.xz";
+      sha256 = "0j94yabkwlgnl2zq0wrcwrh6d9j193mf68b310nz2dfskq5wgvr5";
+      name = "oxygen-5.4.95.tar.xz";
+    };
+  };
+  plasma-desktop = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-desktop-5.4.95.tar.xz";
+      sha256 = "0rar2ms65jks0knkv9x0gb5f1gp0yhghpskzcpm4m0gj981vbgyp";
+      name = "plasma-desktop-5.4.95.tar.xz";
+    };
+  };
+  plasma-mediacenter = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-mediacenter-5.4.95.tar.xz";
+      sha256 = "0kzghc8whc87v1ljlxva2k3sx7c2zmvgmp3i2z2lnp7h882a1hak";
+      name = "plasma-mediacenter-5.4.95.tar.xz";
+    };
+  };
+  plasma-nm = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-nm-5.4.95.tar.xz";
+      sha256 = "0cwc72lklv97yahh1672bqamlhil12b4wpjy2diqmq75xmajzjds";
+      name = "plasma-nm-5.4.95.tar.xz";
+    };
+  };
+  plasma-pa = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-pa-5.4.95.tar.xz";
+      sha256 = "0mvxidlzl9nw52sl9r5z180c683iz1a7rr0yh0v88gl30brrqnmw";
+      name = "plasma-pa-5.4.95.tar.xz";
+    };
+  };
+  plasma-sdk = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-sdk-5.4.95.tar.xz";
+      sha256 = "1lis04qmbca8n2ly2g58xhi3znca14dmib81rfshjqp9rldc2z6k";
+      name = "plasma-sdk-5.4.95.tar.xz";
+    };
+  };
+  plasma-workspace = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-workspace-5.4.95.tar.xz";
+      sha256 = "1af2qx5q5pbxyv32fjiwn7cwf5z1xrgj5n22fprsfn1pyjnz4anv";
+      name = "plasma-workspace-5.4.95.tar.xz";
+    };
+  };
+  plasma-workspace-wallpapers = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/plasma-workspace-wallpapers-5.4.95.tar.xz";
+      sha256 = "0bz0hk6bnm14ppnglwjd82w9gyjm5smv7cpicj25cfwlvz3qjizz";
+      name = "plasma-workspace-wallpapers-5.4.95.tar.xz";
+    };
+  };
+  polkit-kde-agent = {
+    version = "1-5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/polkit-kde-agent-1-5.4.95.tar.xz";
+      sha256 = "0hc4a36fxn5bw77hldpklj5dwxxx3c67pni9q8d9bpdk52d89wcg";
+      name = "polkit-kde-agent-1-5.4.95.tar.xz";
+    };
+  };
+  powerdevil = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/powerdevil-5.4.95.tar.xz";
+      sha256 = "0q3a3d654f3k4qjwq8avk2n0ppila3p8l9kkayd5hcasvvhcihq7";
+      name = "powerdevil-5.4.95.tar.xz";
+    };
+  };
+  sddm-kcm = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/sddm-kcm-5.4.95.tar.xz";
+      sha256 = "06i24nqn80j563cw2rsfficyd577j3v7qj83cvn6jwrkhbhc6v45";
+      name = "sddm-kcm-5.4.95.tar.xz";
+    };
+  };
+  systemsettings = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/systemsettings-5.4.95.tar.xz";
+      sha256 = "0zr7chjk43mqbb74p4n5n4ny783j8bnmwa4cr86i21bcbkqgp6sq";
+      name = "systemsettings-5.4.95.tar.xz";
+    };
+  };
+  user-manager = {
+    version = "5.4.95";
+    src = fetchurl {
+      url = "${mirror}/unstable/plasma/5.4.95/user-manager-5.4.95.tar.xz";
+      sha256 = "1dbfqb0w3cgkhimw195gwh9cnnx83qacqdc8j5dpvrjybv3ihv3z";
+      name = "user-manager-5.4.95.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/desktops/plasma-5.5/systemsettings.nix b/pkgs/desktops/plasma-5.5/systemsettings.nix
new file mode 100644
index 000000000000..a921e153dbc2
--- /dev/null
+++ b/pkgs/desktops/plasma-5.5/systemsettings.nix
@@ -0,0 +1,21 @@
+{ plasmaPackage, extra-cmake-modules, kdoctools, kitemviews
+, kcmutils, ki18n, kio, kservice, kiconthemes, kwindowsystem
+, kxmlgui, kdbusaddons, kconfig, khtml, makeQtWrapper
+}:
+
+plasmaPackage {
+  name = "systemsettings";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kitemviews kcmutils kservice kiconthemes kxmlgui kdbusaddons
+    kconfig
+  ];
+  propagatedBuildInputs = [ khtml ki18n kio kwindowsystem ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/systemsettings5"
+  '';
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/attica.nix b/pkgs/development/libraries/kde-frameworks-5.16/attica.nix
new file mode 100644
index 000000000000..98721876c120
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/attica.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "attica";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/baloo.nix b/pkgs/development/libraries/kde-frameworks-5.16/baloo.nix
new file mode 100644
index 000000000000..38c41d9271d8
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/baloo.nix
@@ -0,0 +1,25 @@
+{ kdeFramework, lib, extra-cmake-modules, kauth, kconfig
+, kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n, kidletime
+, kio, lmdb, makeQtWrapper, qtbase, qtquick1, solid
+}:
+
+kdeFramework {
+  name = "baloo";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [
+    kconfig kcrash kdbusaddons lmdb qtquick1 solid
+  ];
+  propagatedBuildInputs = [
+    kauth kcoreaddons kfilemetadata ki18n kio kidletime qtbase
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/baloo_file"
+    wrapQtProgram "$out/bin/baloo_file_extractor"
+    wrapQtProgram "$out/bin/balooctl"
+    wrapQtProgram "$out/bin/baloosearch"
+    wrapQtProgram "$out/bin/balooshow"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/bluez-qt.nix b/pkgs/development/libraries/kde-frameworks-5.16/bluez-qt.nix
new file mode 100644
index 000000000000..f981b0516f72
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/bluez-qt.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, qtdeclarative
+}:
+
+kdeFramework {
+  name = "bluez-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtdeclarative ];
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt \
+      --replace /lib/udev/rules.d "$out/lib/udev/rules.d"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/default.nix
new file mode 100644
index 000000000000..208a437c51e0
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/default.nix
@@ -0,0 +1,113 @@
+# Maintainer's Notes:
+#
+# How To Update
+#  1. Edit the URL in ./manifest.sh
+#  2. Run ./manifest.sh
+#  3. Fix build errors.
+
+{ pkgs, debug ? false }:
+
+let
+
+  inherit (pkgs) lib makeSetupHook stdenv;
+
+  mirror = "mirror://kde";
+  srcs = import ./srcs.nix { inherit (pkgs) fetchurl; inherit mirror; };
+
+  kdeFramework = args:
+    let
+      inherit (args) name;
+      inherit (srcs."${name}") src version;
+    in stdenv.mkDerivation (args // {
+      name = "${name}-${version}";
+      inherit src;
+
+      cmakeFlags =
+        (args.cmakeFlags or [])
+        ++ [ "-DBUILD_TESTING=OFF" ]
+        ++ lib.optional debug "-DCMAKE_BUILD_TYPE=Debug";
+
+      meta = {
+        license = with lib.licenses; [
+          lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
+        ];
+        platforms = lib.platforms.linux;
+        homepage = "http://www.kde.org";
+      } // (args.meta or {});
+    });
+
+  addPackages = self: with self; {
+    attica = callPackage ./attica.nix {};
+    baloo = callPackage ./baloo.nix {};
+    bluez-qt = callPackage ./bluez-qt.nix {};
+    extra-cmake-modules = callPackage ./extra-cmake-modules {};
+    frameworkintegration = callPackage ./frameworkintegration.nix {};
+    kactivities = callPackage ./kactivities.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.nix {};
+    kdesignerplugin = callPackage ./kdesignerplugin.nix {};
+    kdewebkit = callPackage ./kdewebkit.nix {};
+    kdesu = callPackage ./kdesu.nix {};
+    kdnssd = callPackage ./kdnssd.nix {};
+    kdoctools = callPackage ./kdoctools {};
+    kemoticons = callPackage ./kemoticons.nix {};
+    kfilemetadata = callPackage ./kfilemetadata.nix {};
+    kglobalaccel = callPackage ./kglobalaccel.nix {};
+    kguiaddons = callPackage ./kguiaddons.nix {};
+    khtml = callPackage ./khtml.nix {};
+    ki18n = callPackage ./ki18n.nix {};
+    kiconthemes = callPackage ./kiconthemes.nix {};
+    kidletime = callPackage ./kidletime.nix {};
+    kimageformats = callPackage ./kimageformats.nix {};
+    kinit = callPackage ./kinit {};
+    kio = callPackage ./kio.nix {};
+    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 {};
+    ktextwidgets = callPackage ./ktextwidgets.nix {};
+    kunitconversion = callPackage ./kunitconversion.nix {};
+    kwallet = callPackage ./kwallet.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 {};
+    solid = callPackage ./solid.nix {};
+    sonnet = callPackage ./sonnet.nix {};
+    threadweaver = callPackage ./threadweaver.nix {};
+  };
+
+  newScope = scope: pkgs.qt55Libs.newScope ({ inherit kdeFramework; } // scope);
+
+in lib.makeScope newScope addPackages
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/0001-extra-cmake-modules-paths.patch b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/0001-extra-cmake-modules-paths.patch
new file mode 100644
index 000000000000..9717716faf5b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/0001-extra-cmake-modules-paths.patch
@@ -0,0 +1,74 @@
+From 3cc148e878b69fc3e0228f3e3bf1bbe689dad87c Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Fri, 20 Feb 2015 23:17:39 -0600
+Subject: [PATCH] extra-cmake-modules paths
+
+---
+ kde-modules/KDEInstallDirs.cmake | 37 ++++---------------------------------
+ 1 file changed, 4 insertions(+), 33 deletions(-)
+
+diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake
+index b7cd34d..2f868ac 100644
+--- a/kde-modules/KDEInstallDirs.cmake
++++ b/kde-modules/KDEInstallDirs.cmake
+@@ -193,37 +193,8 @@
+ # (To distribute this file outside of extra-cmake-modules, substitute the full
+ #  License text for the above reference.)
+ 
+-# Figure out what the default install directory for libraries should be.
+-# This is based on the logic in GNUInstallDirs, but simplified (the
+-# GNUInstallDirs code deals with re-configuring, but that is dealt with
+-# by the _define_* macros in this module).
++# The default library directory on NixOS is *always* /lib.
+ set(_LIBDIR_DEFAULT "lib")
+-# Override this default 'lib' with 'lib64' iff:
+-#  - we are on a Linux, kFreeBSD or Hurd system but NOT cross-compiling
+-#  - we are NOT on debian
+-#  - we are on a 64 bits system
+-# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+-# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+-# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+-# See http://wiki.debian.org/Multiarch
+-if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
+-   AND NOT CMAKE_CROSSCOMPILING)
+-  if (EXISTS "/etc/debian_version") # is this a debian system ?
+-    if(CMAKE_LIBRARY_ARCHITECTURE)
+-      set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+-    endif()
+-  else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
+-    if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+-      message(AUTHOR_WARNING
+-        "Unable to determine default LIB_INSTALL_LIBDIR directory because no target architecture is known. "
+-        "Please enable at least one language before including KDEInstallDirs.")
+-    else()
+-      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+-        set(_LIBDIR_DEFAULT "lib64")
+-      endif()
+-    endif()
+-  endif()
+-endif()
+ 
+ set(_gnu_install_dirs_vars
+     BINDIR
+@@ -445,15 +416,15 @@ if(KDE_INSTALL_USE_QT_SYS_PATHS)
+         "QtQuick2 imports"
+         QML_INSTALL_DIR)
+ else()
+-    _define_relative(QTPLUGINDIR LIBDIR "plugins"
++    _define_relative(QTPLUGINDIR LIBDIR "qt5/plugins"
+         "Qt plugins"
+         QT_PLUGIN_INSTALL_DIR)
+ 
+-    _define_relative(QTQUICKIMPORTSDIR QTPLUGINDIR "imports"
++    _define_relative(QTQUICKIMPORTSDIR QTPLUGINDIR "qt5/imports"
+         "QtQuick1 imports"
+         IMPORTS_INSTALL_DIR)
+ 
+-    _define_relative(QMLDIR LIBDIR "qml"
++    _define_relative(QMLDIR LIBDIR "qt5/qml"
+         "QtQuick2 imports"
+         QML_INSTALL_DIR)
+ endif()
+-- 
+2.3.0
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/default.nix
new file mode 100644
index 000000000000..4e1b1aff3bd1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/default.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib, stdenv, cmake, pkgconfig, qttools }:
+
+kdeFramework {
+  name = "extra-cmake-modules";
+  patches = [ ./0001-extra-cmake-modules-paths.patch ];
+
+  setupHook = ./setup-hook.sh;
+
+  # It is OK to propagate these inputs as long as
+  # extra-cmake-modules is never a propagated input
+  # of some other derivation.
+  propagatedNativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  meta = {
+    license = stdenv.lib.licenses.bsd2;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/setup-hook.sh b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/setup-hook.sh
new file mode 100644
index 000000000000..a6fa6189240b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/extra-cmake-modules/setup-hook.sh
@@ -0,0 +1,27 @@
+addMimePkg() {
+    local propagated
+
+    if [[ -d "$1/share/mime" ]]; then
+        propagated=
+        for pkg in $propagatedBuildInputs; do
+            if [[ "z$pkg" == "z$1" ]]; then
+                propagated=1
+            fi
+        done
+        if [[ -z $propagated ]]; then
+            propagatedBuildInputs="$propagatedBuildInputs $1"
+        fi
+
+        propagated=
+        for pkg in $propagatedUserEnvPkgs; do
+            if [[ "z$pkg" == "z$1" ]]; then
+                propagated=1
+            fi
+        done
+        if [[ -z $propagated ]]; then
+            propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1"
+        fi
+    fi
+}
+
+envHooks+=(addMimePkg)
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/fetchsrcs.sh b/pkgs/development/libraries/kde-frameworks-5.16/fetchsrcs.sh
new file mode 100755
index 000000000000..72d830575450
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/fetchsrcs.sh
@@ -0,0 +1,57 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p coreutils findutils gnused nix wget
+
+set -x
+
+# The trailing slash at the end is necessary!
+RELEASE_URL="http://download.kde.org/stable/frameworks/5.16/"
+EXTRA_WGET_ARGS='-A *.tar.xz'
+
+mkdir tmp; cd tmp
+
+rm -f ../srcs.csv
+
+wget -nH -r -c --no-parent $RELEASE_URL $EXTRA_WGET_ARGS
+
+find . | while read src; do
+    if [[ -f "${src}" ]]; then
+        # Sanitize file name
+        filename=$(basename "$src" | tr '@' '_')
+        nameVersion="${filename%.tar.*}"
+        name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
+        version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
+        echo "$name,$version,$src,$filename" >>../srcs.csv
+    fi
+done
+
+cat >../srcs.nix <<EOF
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+EOF
+
+gawk -F , "{ print \$1 }" ../srcs.csv | sort | uniq | while read name; do
+    versions=$(gawk -F , "/^$name,/ { print \$2 }" ../srcs.csv)
+    latestVersion=$(echo "$versions" | sort -rV | head -n 1)
+    src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" ../srcs.csv)
+    filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" ../srcs.csv)
+    url="${src:2}"
+    sha256=$(nix-hash --type sha256 --base32 --flat "$src")
+    cat >>../srcs.nix <<EOF
+  $name = {
+    version = "$latestVersion";
+    src = fetchurl {
+      url = "\${mirror}/$url";
+      sha256 = "$sha256";
+      name = "$filename";
+    };
+  };
+EOF
+done
+
+echo "}" >>../srcs.nix
+
+rm -f ../srcs.csv
+
+cd ..
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/frameworkintegration.nix b/pkgs/development/libraries/kde-frameworks-5.16/frameworkintegration.nix
new file mode 100644
index 000000000000..26987c385ad5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/frameworkintegration.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kbookmarks, kcompletion
+, kconfig, kconfigwidgets, ki18n, kiconthemes, kio, knotifications
+, kwidgetsaddons, libXcursor, qtx11extras
+}:
+
+kdeFramework {
+  name = "frameworkintegration";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kbookmarks kcompletion kconfig knotifications kwidgetsaddons
+    libXcursor
+  ];
+  propagatedBuildInputs = [ kconfigwidgets ki18n kio kiconthemes qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kactivities.nix b/pkgs/development/libraries/kde-frameworks-5.16/kactivities.nix
new file mode 100644
index 000000000000..3225098f4398
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kactivities.nix
@@ -0,0 +1,22 @@
+{ kdeFramework, lib, extra-cmake-modules, boost, kcmutils, kconfig
+, kcoreaddons, kdbusaddons, kdeclarative, kglobalaccel, ki18n
+, kio, kservice, kwindowsystem, kxmlgui, makeQtWrapper, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kactivities";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [
+    boost kcmutils kconfig kcoreaddons kdbusaddons kservice
+    kxmlgui
+  ];
+  propagatedBuildInputs = [
+    kdeclarative kglobalaccel ki18n kio kwindowsystem qtdeclarative
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kactivitymanagerd"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kapidox.nix b/pkgs/development/libraries/kde-frameworks-5.16/kapidox.nix
new file mode 100644
index 000000000000..647be8f052c3
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kapidox.nix
@@ -0,0 +1,12 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, python
+}:
+
+kdeFramework {
+  name = "kapidox";
+  nativeBuildInputs = [ extra-cmake-modules python ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/karchive.nix b/pkgs/development/libraries/kde-frameworks-5.16/karchive.nix
new file mode 100644
index 000000000000..a8d9a0003c3b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/karchive.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "karchive";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kauth/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kauth/default.nix
new file mode 100644
index 000000000000..42a100193340
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kauth/default.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcoreaddons
+, polkitQt
+}:
+
+kdeFramework {
+  name = "kauth";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ polkitQt ];
+  propagatedBuildInputs = [ kcoreaddons ];
+  patches = [ ./kauth-policy-install.patch ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kauth/kauth-policy-install.patch b/pkgs/development/libraries/kde-frameworks-5.16/kauth/kauth-policy-install.patch
new file mode 100644
index 000000000000..340155256f28
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kauth/kauth-policy-install.patch
@@ -0,0 +1,13 @@
+diff --git a/KF5AuthConfig.cmake.in b/KF5AuthConfig.cmake.in
+index e859ec7..9a8ab18 100644
+--- a/KF5AuthConfig.cmake.in
++++ b/KF5AuthConfig.cmake.in
+@@ -4,7 +4,7 @@ set(KAUTH_STUB_FILES_DIR "${PACKAGE_PREFIX_DIR}/@KF5_DATA_INSTALL_DIR@/kauth/")
+ 
+ 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_POLICY_FILES_INSTALL_DIR "\${CMAKE_INSTALL_PREFIX}/share/polkit-1/actions")
+ set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
+ 
+ find_dependency(KF5CoreAddons "@KF5_DEP_VERSION@")
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kbookmarks.nix b/pkgs/development/libraries/kde-frameworks-5.16/kbookmarks.nix
new file mode 100644
index 000000000000..1a469ab4db6d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kbookmarks.nix
@@ -0,0 +1,25 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcodecs
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kiconthemes
+, kxmlgui
+}:
+
+kdeFramework {
+  name = "kbookmarks";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcodecs
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kiconthemes
+    kxmlgui
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kcmutils/0001-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks-5.16/kcmutils/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..0d861fa95012
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/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-5.16/kcmutils/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kcmutils/default.nix
new file mode 100644
index 000000000000..dbbb783ac615
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kcmutils/default.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfigwidgets
+, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews
+, kpackage, kservice, kxmlgui
+}:
+
+kdeFramework {
+  name = "kcmutils";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcoreaddons kiconthemes kitemviews kpackage kxmlgui
+  ];
+  propagatedBuildInputs = [ kconfigwidgets kdeclarative ki18n kservice ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kcodecs.nix b/pkgs/development/libraries/kde-frameworks-5.16/kcodecs.nix
new file mode 100644
index 000000000000..53a69a69b69c
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kcodecs.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "kcodecs";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kcompletion.nix b/pkgs/development/libraries/kde-frameworks-5.16/kcompletion.nix
new file mode 100644
index 000000000000..e393774f16a5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kcompletion.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kconfig
+, kwidgetsaddons
+}:
+
+kdeFramework {
+  name = "kcompletion";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfig kwidgetsaddons ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kconfig.nix b/pkgs/development/libraries/kde-frameworks-5.16/kconfig.nix
new file mode 100644
index 000000000000..e132afe59886
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kconfig.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, makeQtWrapper
+}:
+
+kdeFramework {
+  name = "kconfig";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kreadconfig5"
+    wrapQtProgram "$out/bin/kwriteconfig5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..7a6c0ee90534
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/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-5.16/kconfigwidgets/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/default.nix
new file mode 100644
index 000000000000..0e14d06edd36
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kconfigwidgets/default.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kauth, kcodecs, kconfig
+, kdoctools, kguiaddons, ki18n, kwidgetsaddons, makeQtWrapper
+}:
+
+kdeFramework {
+  name = "kconfigwidgets";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [ kguiaddons ];
+  propagatedBuildInputs = [ kauth kconfig kcodecs ki18n kwidgetsaddons ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/preparetips5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kcoreaddons.nix b/pkgs/development/libraries/kde-frameworks-5.16/kcoreaddons.nix
new file mode 100644
index 000000000000..43c21bb51ef5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kcoreaddons.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, shared_mime_info
+}:
+
+kdeFramework {
+  name = "kcoreaddons";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ shared_mime_info ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kcrash.nix b/pkgs/development/libraries/kde-frameworks-5.16/kcrash.nix
new file mode 100644
index 000000000000..bbab78ccb409
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kcrash.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcoreaddons
+, kwindowsystem
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kcrash";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons ];
+  propagatedBuildInputs = [ kwindowsystem qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdbusaddons.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdbusaddons.nix
new file mode 100644
index 000000000000..d2ceab31d14b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdbusaddons.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, makeQtWrapper
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kdbusaddons";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  propagatedBuildInputs = [ qtx11extras ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kquitapp5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdeclarative.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdeclarative.nix
new file mode 100644
index 000000000000..74d107466cfc
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdeclarative.nix
@@ -0,0 +1,22 @@
+{ kdeFramework, lib, extra-cmake-modules, epoxy, kconfig
+, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage
+, kwidgetsaddons, kwindowsystem, makeQtWrapper, pkgconfig
+, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kdeclarative";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [
+    epoxy kguiaddons kiconthemes kwidgetsaddons
+  ];
+  propagatedBuildInputs = [
+    kconfig kglobalaccel ki18n kio kpackage kwindowsystem qtdeclarative
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kpackagelauncherqml"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kded.nix b/pkgs/development/libraries/kde-frameworks-5.16/kded.nix
new file mode 100644
index 000000000000..47ae2d68c68e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kded.nix
@@ -0,0 +1,19 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kconfig
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kdoctools
+, kinit
+, kservice
+}:
+
+kdeFramework {
+  name = "kded";
+  buildInputs = [ kconfig kcoreaddons kcrash kdbusaddons kinit kservice ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdelibs4support.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdelibs4support.nix
new file mode 100644
index 000000000000..0dd5c4157612
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdelibs4support.nix
@@ -0,0 +1,32 @@
+{ kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45, kauth
+, karchive, kcompletion, kconfig, kconfigwidgets, kcoreaddons
+, kcrash, kdbusaddons, 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";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kservice kwidgetsaddons
+    kxmlgui networkmanager qtsvg qtx11extras xlibs.libSM
+  ];
+  propagatedBuildInputs = [
+    kauth karchive kconfigwidgets kcoreaddons kcrash kdbusaddons
+    kdesignerplugin kemoticons kglobalaccel kguiaddons ki18n kio
+    kiconthemes kitemmodels kinit knotifications kparts ktextwidgets
+    kunitconversion kwindowsystem
+  ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXML4_DTD_VERSION=4.5"
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdesignerplugin.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdesignerplugin.nix
new file mode 100644
index 000000000000..28df24153208
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdesignerplugin.nix
@@ -0,0 +1,31 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcompletion
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kdewebkit
+, kdoctools
+, kiconthemes
+, kio
+, kitemviews
+, kplotting
+, ktextwidgets
+, kwidgetsaddons
+, kxmlgui
+, sonnet
+}:
+
+kdeFramework {
+  name = "kdesignerplugin";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kcoreaddons kdewebkit
+    kiconthemes kitemviews kplotting ktextwidgets kwidgetsaddons
+    kxmlgui
+  ];
+  propagatedBuildInputs = [ kio sonnet ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdesu.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdesu.nix
new file mode 100644
index 000000000000..364fbd6a720b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdesu.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, extra-cmake-modules, kcoreaddons, ki18n, kpty
+, kservice
+}:
+
+kdeFramework {
+  name = "kdesu";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kservice ];
+  propagatedBuildInputs = [ ki18n kpty ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdewebkit.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdewebkit.nix
new file mode 100644
index 000000000000..d361313d1d49
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdewebkit.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, ki18n, kio, kjobwidgets, kparts, kservice, kwallet, qtwebkit
+}:
+
+kdeFramework {
+  name = "kdewebkit";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfig kcoreaddons kjobwidgets kparts kservice kwallet ];
+  propagatedBuildInputs = [ ki18n kio qtwebkit ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdnssd.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdnssd.nix
new file mode 100644
index 000000000000..f00432b0c9ce
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdnssd.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, avahi
+}:
+
+kdeFramework {
+  name = "kdnssd";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ avahi ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/default.nix
new file mode 100644
index 000000000000..138c3fc33b94
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/default.nix
@@ -0,0 +1,20 @@
+{ kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45
+, docbook5_xsl, karchive, ki18n, makeQtWrapper, perl, perlPackages
+}:
+
+kdeFramework {
+  name = "kdoctools";
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive ];
+  propagatedBuildInputs = [ ki18n ];
+  propagatedNativeBuildInputs = [ makeQtWrapper 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 ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/kdoctools-no-find-docbook-xml.patch b/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/kdoctools-no-find-docbook-xml.patch
new file mode 100644
index 000000000000..4e3a33efab32
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/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-5.16/kdoctools/setup-hook.sh b/pkgs/development/libraries/kde-frameworks-5.16/kdoctools/setup-hook.sh
new file mode 100644
index 000000000000..5cfffbd622d1
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/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-5.16/kemoticons.nix b/pkgs/development/libraries/kde-frameworks-5.16/kemoticons.nix
new file mode 100644
index 000000000000..d165f84e3a2d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kemoticons.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, karchive
+, kconfig
+, kcoreaddons
+, kservice
+}:
+
+kdeFramework {
+  name = "kemoticons";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive kconfig kcoreaddons ];
+  propagatedBuildInputs = [ kservice ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kfilemetadata.nix b/pkgs/development/libraries/kde-frameworks-5.16/kfilemetadata.nix
new file mode 100644
index 000000000000..92ca1f26b93b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kfilemetadata.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, extra-cmake-modules, attr, ebook_tools, exiv2
+, ffmpeg, karchive, ki18n, popplerQt, qtbase, taglib
+}:
+
+kdeFramework {
+  name = "kfilemetadata";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ attr ebook_tools exiv2 ffmpeg karchive popplerQt taglib ];
+  propagatedBuildInputs = [ qtbase ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kglobalaccel.nix b/pkgs/development/libraries/kde-frameworks-5.16/kglobalaccel.nix
new file mode 100644
index 000000000000..c535b3590a38
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kglobalaccel.nix
@@ -0,0 +1,23 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kconfig
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kwindowsystem
+, makeQtWrapper
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kglobalaccel";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [ kconfig kcoreaddons kcrash kdbusaddons ];
+  propagatedBuildInputs = [ kwindowsystem qtx11extras ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kglobalaccel5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kguiaddons.nix b/pkgs/development/libraries/kde-frameworks-5.16/kguiaddons.nix
new file mode 100644
index 000000000000..bc4e9ab11843
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kguiaddons.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kguiaddons";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/khtml.nix b/pkgs/development/libraries/kde-frameworks-5.16/khtml.nix
new file mode 100644
index 000000000000..d40df466ebbd
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/khtml.nix
@@ -0,0 +1,21 @@
+{ kdeFramework, lib, extra-cmake-modules, giflib, karchive
+, kcodecs, kglobalaccel, ki18n, kiconthemes, kio, kjs
+, knotifications, kparts, ktextwidgets, kwallet, kwidgetsaddons
+, kwindowsystem, kxmlgui, perl, phonon, qtx11extras, sonnet
+}:
+
+kdeFramework {
+  name = "khtml";
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [
+    giflib karchive kiconthemes knotifications kwallet kwidgetsaddons
+    kxmlgui phonon
+  ];
+  propagatedBuildInputs = [
+    kcodecs kglobalaccel ki18n kio kjs kparts ktextwidgets
+    kwindowsystem qtx11extras sonnet
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/ki18n.nix b/pkgs/development/libraries/kde-frameworks-5.16/ki18n.nix
new file mode 100644
index 000000000000..915e3294b465
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/ki18n.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, gettext
+, python
+, qtscript
+}:
+
+kdeFramework {
+  name = "ki18n";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtscript ];
+  propagatedNativeBuildInputs = [ gettext python ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kiconthemes.nix b/pkgs/development/libraries/kde-frameworks-5.16/kiconthemes.nix
new file mode 100644
index 000000000000..02b516afedc6
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kiconthemes.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfigwidgets, ki18n
+, kitemviews, qtsvg
+}:
+
+kdeFramework {
+  name = "kiconthemes";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfigwidgets kitemviews qtsvg ];
+  propagatedBuildInputs = [ ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kidletime.nix b/pkgs/development/libraries/kde-frameworks-5.16/kidletime.nix
new file mode 100644
index 000000000000..fc0865600239
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kidletime.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, qtbase
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kidletime";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kimageformats.nix b/pkgs/development/libraries/kde-frameworks-5.16/kimageformats.nix
new file mode 100644
index 000000000000..49d66bbcc2c6
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kimageformats.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, ilmbase
+}:
+
+kdeFramework {
+  name = "kimageformats";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kinit/0001-kinit-libpath.patch b/pkgs/development/libraries/kde-frameworks-5.16/kinit/0001-kinit-libpath.patch
new file mode 100644
index 000000000000..9c76079a382a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kinit/0001-kinit-libpath.patch
@@ -0,0 +1,42 @@
+From 723c9b1268a04127647a1c20eebe9804150566dd Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 13 Jun 2015 08:57:55 -0500
+Subject: [PATCH] kinit libpath
+
+---
+ src/kdeinit/kinit.cpp | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
+index 9e775b6..0ac5646 100644
+--- a/src/kdeinit/kinit.cpp
++++ b/src/kdeinit/kinit.cpp
+@@ -660,15 +660,17 @@ static pid_t launch(int argc, const char *_name, const char *args,
+         if (!libpath.isEmpty()) {
+             if (!l.load()) {
+                 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 "/");
+-                    libpath = install_lib_dir + libpath;
+-                    l.setFileName(libpath);
++                  // Use QT_PLUGIN_PATH to find shared library directories
++                  // For KF5, the plugin path is /lib/qt5/plugins/, so kdeinit5
++                  // shared libraries should be in /lib/qt5/plugins/../../
++                  const QRegExp pathSepRegExp(QString::fromLatin1("[:\b]"));
++                  const QString up = QString::fromLocal8Bit("/../../");
++                  const QStringList paths = QString::fromLocal8Bit(qgetenv("QT_PLUGIN_PATH")).split(pathSepRegExp, QString::KeepEmptyParts);
++                  Q_FOREACH (const QString &path, paths) {
++                    l.setFileName(path + up + libpath);
+                     l.load();
++                    if (l.isLoaded()) break;
++                  }
+                 }
+             }
+             if (!l.isLoaded()) {
+-- 
+2.4.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kinit/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kinit/default.nix
new file mode 100644
index 000000000000..5f644d7c424e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kinit/default.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcrash
+, kdoctools, ki18n, kio, kservice, kwindowsystem, libcap
+, libcap_progs
+}:
+
+# TODO: setuid wrapper
+
+kdeFramework {
+  name = "kinit";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools libcap_progs ];
+  buildInputs = [ kconfig kcrash kservice libcap ];
+  propagatedBuildInputs = [ ki18n kio kwindowsystem ];
+  patches = [ ./0001-kinit-libpath.patch ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kio.nix b/pkgs/development/libraries/kde-frameworks-5.16/kio.nix
new file mode 100644
index 000000000000..0789828d812b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kio.nix
@@ -0,0 +1,30 @@
+{ kdeFramework, lib, extra-cmake-modules, acl, karchive
+, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons
+, kdbusaddons, kdoctools, ki18n, kiconthemes, kitemviews
+, kjobwidgets, knotifications, kservice, ktextwidgets, kwallet
+, kwidgetsaddons, kwindowsystem, kxmlgui, makeQtWrapper
+, qtscript, qtx11extras, solid
+}:
+
+kdeFramework {
+  name = "kio";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [
+    acl karchive kconfig kcoreaddons kdbusaddons kiconthemes
+    knotifications ktextwidgets kwallet kwidgetsaddons
+    qtscript
+  ];
+  propagatedBuildInputs = [
+    kbookmarks kcompletion kconfigwidgets ki18n kitemviews kjobwidgets
+    kservice kwindowsystem kxmlgui solid qtx11extras
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kcookiejar5"
+    wrapQtProgram "$out/bin/ktelnetservice5"
+    wrapQtProgram "$out/bin/ktrash5"
+    wrapQtProgram "$out/bin/kmailservice5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kitemmodels.nix b/pkgs/development/libraries/kde-frameworks-5.16/kitemmodels.nix
new file mode 100644
index 000000000000..a9024d771cc3
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kitemmodels.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "kitemmodels";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kitemviews.nix b/pkgs/development/libraries/kde-frameworks-5.16/kitemviews.nix
new file mode 100644
index 000000000000..931019ce495d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kitemviews.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "kitemviews";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kjobwidgets.nix b/pkgs/development/libraries/kde-frameworks-5.16/kjobwidgets.nix
new file mode 100644
index 000000000000..746edf12eea0
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kjobwidgets.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcoreaddons
+, kwidgetsaddons
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kjobwidgets";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kwidgetsaddons ];
+  propagatedBuildInputs = [ qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kjs.nix b/pkgs/development/libraries/kde-frameworks-5.16/kjs.nix
new file mode 100644
index 000000000000..768720f178c8
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kjs.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kdoctools
+, makeQtWrapper
+}:
+
+kdeFramework {
+  name = "kjs";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kjs5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kjsembed.nix b/pkgs/development/libraries/kde-frameworks-5.16/kjsembed.nix
new file mode 100644
index 000000000000..22eef2d47bde
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kjsembed.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kdoctools, ki18n, kjs
+, makeQtWrapper, qtsvg
+}:
+
+kdeFramework {
+  name = "kjsembed";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [ qtsvg ];
+  propagatedBuildInputs = [ ki18n kjs ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kjscmd5"
+    wrapQtProgram "$out/bin/kjsconsole"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kmediaplayer.nix b/pkgs/development/libraries/kde-frameworks-5.16/kmediaplayer.nix
new file mode 100644
index 000000000000..460458b22323
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kmediaplayer.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kparts
+, kxmlgui
+}:
+
+kdeFramework {
+  name = "kmediaplayer";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kxmlgui ];
+  propagatedBuildInputs = [ kparts ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/knewstuff.nix b/pkgs/development/libraries/kde-frameworks-5.16/knewstuff.nix
new file mode 100644
index 000000000000..5bcd6f301462
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/knewstuff.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, attica, karchive
+, kcompletion, kconfig, kcoreaddons, ki18n, kiconthemes, kio
+, kitemviews, kservice, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+kdeFramework {
+  name = "knewstuff";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    karchive kcompletion kconfig kcoreaddons kiconthemes
+    kitemviews ktextwidgets kwidgetsaddons
+  ];
+  propagatedBuildInputs = [ attica ki18n kio kservice kxmlgui ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/knotifications.nix b/pkgs/development/libraries/kde-frameworks-5.16/knotifications.nix
new file mode 100644
index 000000000000..7e301dd0f268
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/knotifications.nix
@@ -0,0 +1,21 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kcodecs
+, kconfig
+, kcoreaddons
+, kwindowsystem
+, phonon
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "knotifications";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcodecs kconfig kcoreaddons phonon
+  ];
+  propagatedBuildInputs = [ kwindowsystem qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/knotifyconfig.nix b/pkgs/development/libraries/kde-frameworks-5.16/knotifyconfig.nix
new file mode 100644
index 000000000000..dd99d2d4f1e5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/knotifyconfig.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib, extra-cmake-modules, kcompletion, kconfig
+, ki18n, kio, phonon
+}:
+
+kdeFramework {
+  name = "knotifyconfig";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcompletion kconfig phonon ];
+  propagatedBuildInputs = [ ki18n kio ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0001-allow-external-paths.patch b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0001-allow-external-paths.patch
new file mode 100644
index 000000000000..beede4d7ccb5
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0001-allow-external-paths.patch
@@ -0,0 +1,25 @@
+From a92ac391b4e6ca335bd7fa78f1addd23c9467931 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 28 Jan 2015 07:15:30 -0600
+Subject: [PATCH 1/2] allow external paths
+
+---
+ src/kpackage/package.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
+index 539b21a..977a026 100644
+--- a/src/kpackage/package.cpp
++++ b/src/kpackage/package.cpp
+@@ -789,7 +789,7 @@ PackagePrivate::PackagePrivate()
+     : QSharedData(),
+       fallbackPackage(0),
+       metadata(0),
+-      externalPaths(false),
++      externalPaths(true),
+       valid(false),
+       checkedValid(false)
+ {
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0002-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0002-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..6e93fca9b21d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/0002-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,39 @@
+From 9fc26c3c0478eb7cb0a531836ba2e3a85d820c88 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 06:50:28 -0500
+Subject: [PATCH 2/2] qdiriterator follow symlinks
+
+---
+ src/kpackage/packageloader.cpp            | 2 +-
+ src/kpackage/private/packagejobthread.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/kpackage/packageloader.cpp b/src/kpackage/packageloader.cpp
+index eb5ed47..94217f6 100644
+--- a/src/kpackage/packageloader.cpp
++++ b/src/kpackage/packageloader.cpp
+@@ -241,7 +241,7 @@ QList<KPluginMetaData> PackageLoader::listPackages(const QString &packageFormat,
+         } 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"));
+ 
+             QDirIterator it(plugindir, nameFilters, QDir::Files, flags);
+diff --git a/src/kpackage/private/packagejobthread.cpp b/src/kpackage/private/packagejobthread.cpp
+index ca523b3..1cfa792 100644
+--- a/src/kpackage/private/packagejobthread.cpp
++++ b/src/kpackage/private/packagejobthread.cpp
+@@ -145,7 +145,7 @@ bool indexDirectory(const QString& dir, const QString& dest)
+     QJsonArray plugins;
+ 
+     int i = 0;
+-    QDirIterator it(dir, QStringList()<<QStringLiteral("*.desktop"), QDir::Files, QDirIterator::Subdirectories);
++    QDirIterator it(dir, QStringList()<<QStringLiteral("*.desktop"), QDir::Files, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+     while (it.hasNext()) {
+         it.next();
+         const QString path = it.fileInfo().absoluteFilePath();
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kpackage/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/default.nix
new file mode 100644
index 000000000000..d2dc262bf1ac
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kpackage/default.nix
@@ -0,0 +1,26 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, karchive
+, kconfig
+, kcoreaddons
+, kdoctools
+, ki18n
+, makeQtWrapper
+}:
+
+kdeFramework {
+  name = "kpackage";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [ karchive kconfig ];
+  propagatedBuildInputs = [ kcoreaddons ki18n ];
+  patches = [
+    ./0001-allow-external-paths.patch
+    ./0002-qdiriterator-follow-symlinks.patch
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kpackagetool5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kparts.nix b/pkgs/development/libraries/kde-frameworks-5.16/kparts.nix
new file mode 100644
index 000000000000..1c3e0b2cbc51
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kparts.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, ki18n, kiconthemes, kio, kjobwidgets, knotifications, kservice
+, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+kdeFramework {
+  name = "kparts";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons kiconthemes kjobwidgets knotifications
+    kservice kwidgetsaddons
+  ];
+  propagatedBuildInputs = [ ki18n kio ktextwidgets kxmlgui ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kpeople.nix b/pkgs/development/libraries/kde-frameworks-5.16/kpeople.nix
new file mode 100644
index 000000000000..4c3877e7efd2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kpeople.nix
@@ -0,0 +1,15 @@
+{ kdeFramework, lib, extra-cmake-modules, kcoreaddons, ki18n
+, kitemviews, kservice, kwidgetsaddons, qtdeclarative
+}:
+
+kdeFramework {
+  name = "kpeople";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcoreaddons kitemviews kservice kwidgetsaddons
+  ];
+  propagatedBuildInputs = [ ki18n qtdeclarative ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kplotting.nix b/pkgs/development/libraries/kde-frameworks-5.16/kplotting.nix
new file mode 100644
index 000000000000..c16f51b5ac3c
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kplotting.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "kplotting";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kpty.nix b/pkgs/development/libraries/kde-frameworks-5.16/kpty.nix
new file mode 100644
index 000000000000..2e34e6f674ce
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kpty.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, extra-cmake-modules, kcoreaddons, ki18n }:
+
+kdeFramework {
+  name = "kpty";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ kcoreaddons ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kross.nix b/pkgs/development/libraries/kde-frameworks-5.16/kross.nix
new file mode 100644
index 000000000000..7c6f079feaa7
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kross.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, extra-cmake-modules, kcompletion, kcoreaddons
+, kdoctools, ki18n, kiconthemes, kio, kparts, kwidgetsaddons
+, kxmlgui, qtscript
+}:
+
+kdeFramework {
+  name = "kross";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcompletion kcoreaddons kxmlgui ];
+  propagatedBuildInputs = [ ki18n kiconthemes kio kparts kwidgetsaddons qtscript ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/krunner.nix b/pkgs/development/libraries/kde-frameworks-5.16/krunner.nix
new file mode 100644
index 000000000000..12d2b54d0eb3
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/krunner.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, ki18n, kio, kservice, plasma-framework, qtquick1, solid
+, threadweaver
+}:
+
+kdeFramework {
+  name = "krunner";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons kservice qtquick1 solid threadweaver
+  ];
+  propagatedBuildInputs = [ ki18n kio plasma-framework ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kservice/0001-qdiriterator-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks-5.16/kservice/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..3d8397d8ee2d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kservice/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From ae8919eb81abad369e4a26ffcd845b140983398d Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 06:28:57 -0500
+Subject: [PATCH 1/2] qdiriterator follow symlinks
+
+---
+ src/sycoca/kbuildsycoca.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp
+index 1deae14..250baa8 100644
+--- a/src/sycoca/kbuildsycoca.cpp
++++ b/src/sycoca/kbuildsycoca.cpp
+@@ -208,7 +208,7 @@ bool KBuildSycoca::build()
+         QStringList 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...
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kservice/0002-no-canonicalize-path.patch b/pkgs/development/libraries/kde-frameworks-5.16/kservice/0002-no-canonicalize-path.patch
new file mode 100644
index 000000000000..685c68526119
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kservice/0002-no-canonicalize-path.patch
@@ -0,0 +1,25 @@
+From 46d124da602d84b7611a7ff0ac0862168d451cdb Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 06:31:29 -0500
+Subject: [PATCH 2/2] no canonicalize path
+
+---
+ src/sycoca/vfolder_menu.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sycoca/vfolder_menu.cpp b/src/sycoca/vfolder_menu.cpp
+index d3e31c3..d15d743 100644
+--- a/src/sycoca/vfolder_menu.cpp
++++ b/src/sycoca/vfolder_menu.cpp
+@@ -415,7 +415,7 @@ VFolderMenu::absoluteDir(const QString &_dir, const QString &baseDir, bool keepR
+     }
+ 
+     if (!relative) {
+-        QString resolved = QDir(dir).canonicalPath();
++      QString resolved = QDir::cleanPath(dir);
+         if (!resolved.isEmpty()) {
+             dir = resolved;
+         }
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kservice/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/kservice/default.nix
new file mode 100644
index 000000000000..03b7c7c2f51d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kservice/default.nix
@@ -0,0 +1,19 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem
+}:
+
+kdeFramework {
+  name = "kservice";
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcrash kdbusaddons ];
+  propagatedBuildInputs = [ kconfig kcoreaddons ki18n kwindowsystem ];
+  propagatedUserEnvPkgs = [ kcoreaddons ];
+  patches = [
+    ./0001-qdiriterator-follow-symlinks.patch
+    ./0002-no-canonicalize-path.patch
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kservice/setup-hook.sh b/pkgs/development/libraries/kde-frameworks-5.16/kservice/setup-hook.sh
new file mode 100644
index 000000000000..c28e862ff8ae
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kservice/setup-hook.sh
@@ -0,0 +1,43 @@
+addServicePkg() {
+    local propagated
+    for dir in "share/kservices5" "share/kservicetypes5"; do
+        if [[ -d "$1/$dir" ]]; then
+            propagated=
+            for pkg in $propagatedBuildInputs; do
+                if [[ "z$pkg" == "z$1" ]]; then
+                    propagated=1
+                    break
+                fi
+            done
+            if [[ -z $propagated ]]; then
+                propagatedBuildInputs="$propagatedBuildInputs $1"
+            fi
+
+            propagated=
+            for pkg in $propagatedUserEnvPkgs; do
+                if [[ "z$pkg" == "z$1" ]]; then
+                    propagated=1
+                    break
+                fi
+            done
+            if [[ -z $propagated ]]; then
+                propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1"
+            fi
+
+            break
+        fi
+    done
+}
+
+envHooks+=(addServicePkg)
+
+local propagated
+for pkg in $propagatedBuildInputs; do
+    if [[ "z$pkg" == "z@out@" ]]; then
+        propagated=1
+        break
+    fi
+done
+if [[ -z $propagated ]]; then
+    propagatedBuildInputs="$propagatedBuildInputs @out@"
+fi
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/0001-no-qcoreapplication.patch b/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/0001-no-qcoreapplication.patch
new file mode 100644
index 000000000000..def55bff9b23
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/0001-no-qcoreapplication.patch
@@ -0,0 +1,48 @@
+From dc50fffdc72b76498384ce2f9065c3757b786d71 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Wed, 14 Oct 2015 09:08:59 -0500
+Subject: [PATCH] no qcoreapplication
+
+---
+ src/syntax/data/katehighlightingindexer.cpp | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/src/syntax/data/katehighlightingindexer.cpp b/src/syntax/data/katehighlightingindexer.cpp
+index 3c63140..e3d5efe 100644
+--- a/src/syntax/data/katehighlightingindexer.cpp
++++ b/src/syntax/data/katehighlightingindexer.cpp
+@@ -51,19 +51,16 @@ QStringList readListing(const QString &fileName)
+ 
+ int main(int argc, char *argv[])
+ {
+-    // get app instance
+-    QCoreApplication app(argc, argv);
+-
+     // ensure enough arguments are passed
+-    if (app.arguments().size() < 3)
++    if (argc < 3)
+         return 1;
+ 
+     // open schema
+     QXmlSchema schema;
+-    if (!schema.load(QUrl::fromLocalFile(app.arguments().at(2))))
++    if (!schema.load(QUrl::fromLocalFile(QString::fromLocal8Bit(argv[2]))))
+         return 2;
+ 
+-    const QString hlFilenamesListing = app.arguments().value(3);
++    const QString hlFilenamesListing = QString::fromLocal8Bit(argv[3]);
+     if (hlFilenamesListing.isEmpty()) {
+         return 1;
+     }
+@@ -147,7 +144,7 @@ int main(int argc, char *argv[])
+         return anyError;
+ 
+     // create outfile, after all has worked!
+-    QFile outFile(app.arguments().at(1));
++    QFile outFile(QString::fromLocal8Bit(argv[1]));
+     if (!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
+         return 7;
+ 
+-- 
+2.5.2
+
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/default.nix
new file mode 100644
index 000000000000..39092fbb2784
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/ktexteditor/default.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib, extra-cmake-modules, karchive, kconfig
+, kguiaddons, ki18n, kio, kiconthemes, kparts, perl, qtscript
+, qtxmlpatterns, sonnet
+}:
+
+kdeFramework {
+  name = "ktexteditor";
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [
+    karchive kconfig kguiaddons kiconthemes kparts qtscript
+    qtxmlpatterns
+  ];
+  propagatedBuildInputs = [ ki18n kio sonnet ];
+  patches = [ ./0001-no-qcoreapplication.patch ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/ktextwidgets.nix b/pkgs/development/libraries/kde-frameworks-5.16/ktextwidgets.nix
new file mode 100644
index 000000000000..e332d4ff9a83
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/ktextwidgets.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, extra-cmake-modules, kcompletion, kconfig
+, kconfigwidgets, ki18n, kiconthemes, kservice, kwindowsystem
+, sonnet
+}:
+
+kdeFramework {
+  name = "ktextwidgets";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kiconthemes kservice
+  ];
+  propagatedBuildInputs = [ ki18n kwindowsystem sonnet ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kunitconversion.nix b/pkgs/development/libraries/kde-frameworks-5.16/kunitconversion.nix
new file mode 100644
index 000000000000..3cf0f847d83d
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kunitconversion.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, extra-cmake-modules, ki18n }:
+
+kdeFramework {
+  name = "kunitconversion";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kwallet.nix b/pkgs/development/libraries/kde-frameworks-5.16/kwallet.nix
new file mode 100644
index 000000000000..7c4177e009d2
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kwallet.nix
@@ -0,0 +1,21 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, kdbusaddons, kdoctools, ki18n, kiconthemes, knotifications
+, kservice, kwidgetsaddons, kwindowsystem, libgcrypt, makeQtWrapper
+}:
+
+kdeFramework {
+  name = "kwallet";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [
+    kconfig kcoreaddons kdbusaddons kiconthemes knotifications
+    kservice kwidgetsaddons libgcrypt
+  ];
+  propagatedBuildInputs = [ ki18n kwindowsystem ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kwalletd5"
+    wrapQtProgram "$out/bin/kwallet-query"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kwidgetsaddons.nix b/pkgs/development/libraries/kde-frameworks-5.16/kwidgetsaddons.nix
new file mode 100644
index 000000000000..d95f44d3fecf
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kwidgetsaddons.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "kwidgetsaddons";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kwindowsystem.nix b/pkgs/development/libraries/kde-frameworks-5.16/kwindowsystem.nix
new file mode 100644
index 000000000000..09ab1f2200de
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kwindowsystem.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, qtx11extras
+}:
+
+kdeFramework {
+  name = "kwindowsystem";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kxmlgui.nix b/pkgs/development/libraries/kde-frameworks-5.16/kxmlgui.nix
new file mode 100644
index 000000000000..f081d5f9170e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kxmlgui.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib, extra-cmake-modules, attica, kconfig
+, kconfigwidgets, kglobalaccel, ki18n, kiconthemes, kitemviews
+, ktextwidgets, kwindowsystem, sonnet
+}:
+
+kdeFramework {
+  name = "kxmlgui";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    attica kconfig kiconthemes kitemviews ktextwidgets
+  ];
+  propagatedBuildInputs = [
+    kconfigwidgets kglobalaccel ki18n kwindowsystem sonnet
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/kxmlrpcclient.nix b/pkgs/development/libraries/kde-frameworks-5.16/kxmlrpcclient.nix
new file mode 100644
index 000000000000..20a300b68bc8
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/kxmlrpcclient.nix
@@ -0,0 +1,10 @@
+{ kdeFramework, lib, extra-cmake-modules, ki18n, kio }:
+
+kdeFramework {
+  name = "kxmlrpcclient";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ ki18n kio ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/modemmanager-qt.nix b/pkgs/development/libraries/kde-frameworks-5.16/modemmanager-qt.nix
new file mode 100644
index 000000000000..7d7f769d6a9b
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/modemmanager-qt.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, modemmanager
+}:
+
+kdeFramework {
+  name = "modemmanager-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ modemmanager ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/networkmanager-qt.nix b/pkgs/development/libraries/kde-frameworks-5.16/networkmanager-qt.nix
new file mode 100644
index 000000000000..333378bd1431
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/networkmanager-qt.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, networkmanager
+}:
+
+kdeFramework {
+  name = "networkmanager-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ networkmanager ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/oxygen-icons5.nix b/pkgs/development/libraries/kde-frameworks-5.16/oxygen-icons5.nix
new file mode 100644
index 000000000000..ee350f8e1536
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/oxygen-icons5.nix
@@ -0,0 +1,13 @@
+{ kdeFramework
+, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "oxygen-icons5";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    license = lib.licenses.lgpl3Plus;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/plasma-framework/default.nix b/pkgs/development/libraries/kde-frameworks-5.16/plasma-framework/default.nix
new file mode 100644
index 000000000000..d8846f777231
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/plasma-framework/default.nix
@@ -0,0 +1,25 @@
+{ kdeFramework, lib, extra-cmake-modules, kactivities, karchive
+, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative
+, kdoctools, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio
+, knotifications, kpackage, kservice, kwindowsystem, kxmlgui
+, makeQtWrapper, qtscript, qtx11extras
+}:
+
+kdeFramework {
+  name = "plasma-framework";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [
+    karchive kconfig kconfigwidgets kcoreaddons kdbusaddons kguiaddons
+    kiconthemes knotifications kxmlgui qtscript
+  ];
+  propagatedBuildInputs = [
+    kactivities kdeclarative kglobalaccel ki18n kio kpackage kservice kwindowsystem
+    qtx11extras
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/plasmapkg2"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/solid.nix b/pkgs/development/libraries/kde-frameworks-5.16/solid.nix
new file mode 100644
index 000000000000..afd125e3c597
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/solid.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, makeQtWrapper
+, qtdeclarative
+}:
+
+kdeFramework {
+  name = "solid";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [ qtdeclarative ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/solid-hardware5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/sonnet.nix b/pkgs/development/libraries/kde-frameworks-5.16/sonnet.nix
new file mode 100644
index 000000000000..943fe04a1c92
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/sonnet.nix
@@ -0,0 +1,13 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, hunspell
+}:
+
+kdeFramework {
+  name = "sonnet";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ hunspell ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/srcs.nix b/pkgs/development/libraries/kde-frameworks-5.16/srcs.nix
new file mode 100644
index 000000000000..8e3d6a4a9210
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/srcs.nix
@@ -0,0 +1,565 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  attica = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/attica-5.16.0.tar.xz";
+      sha256 = "1739pf892vgvl03l4322p09p346ca4nghc50ansny7868c73f95w";
+      name = "attica-5.16.0.tar.xz";
+    };
+  };
+  baloo = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/baloo-5.16.0.tar.xz";
+      sha256 = "0s8l9q43ak87sjagashxfwadildlz3vdysj96in6v3gcg09ngm8j";
+      name = "baloo-5.16.0.tar.xz";
+    };
+  };
+  bluez-qt = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/bluez-qt-5.16.0.tar.xz";
+      sha256 = "0xxlwb4kqiiqmph9vr6ppyzjndzz1ys9qbnzzinrhhdmiir5m3k6";
+      name = "bluez-qt-5.16.0.tar.xz";
+    };
+  };
+  breeze-icons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/breeze-icons-5.16.0.tar.xz";
+      sha256 = "1vmwnqin9p6p78kshn1bfq7zz1znmm615bq28545shywfkri1yil";
+      name = "breeze-icons-5.16.0.tar.xz";
+    };
+  };
+  extra-cmake-modules = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/extra-cmake-modules-5.16.0.tar.xz";
+      sha256 = "06xfmxbjkrdswh2n0qmdi5zvm3dqhawiazi5x6p32n77ij5wiph9";
+      name = "extra-cmake-modules-5.16.0.tar.xz";
+    };
+  };
+  frameworkintegration = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/frameworkintegration-5.16.0.tar.xz";
+      sha256 = "0vyv3c34mpp6yjgqm8gyir7cwxn3a064q5d3ms49macpjkkz7c6f";
+      name = "frameworkintegration-5.16.0.tar.xz";
+    };
+  };
+  kactivities = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kactivities-5.16.0.tar.xz";
+      sha256 = "0aq0yxbzhg3r9jpddn1vnylmjb2xr4xx5rviisyfa6nhn21ynqxm";
+      name = "kactivities-5.16.0.tar.xz";
+    };
+  };
+  kapidox = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kapidox-5.16.0.tar.xz";
+      sha256 = "0gfxnssbkdkfncka956y5d2w3zm7yxkl11jvl88cwg6zx2rfh1a4";
+      name = "kapidox-5.16.0.tar.xz";
+    };
+  };
+  karchive = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/karchive-5.16.0.tar.xz";
+      sha256 = "0rn8n7lnw9z7rl1d2cdy59j4f38jzd6sj0s33dkfk04i4kl0ccpc";
+      name = "karchive-5.16.0.tar.xz";
+    };
+  };
+  kauth = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kauth-5.16.0.tar.xz";
+      sha256 = "1972c4m7kcj7hnklvy973935sn0khl4jby6g8q2i5hzivp5b0sn3";
+      name = "kauth-5.16.0.tar.xz";
+    };
+  };
+  kbookmarks = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kbookmarks-5.16.0.tar.xz";
+      sha256 = "009yls3f4l97z1hcn9nk0j35b0kfysc2l0gvdnijk9prgldn287j";
+      name = "kbookmarks-5.16.0.tar.xz";
+    };
+  };
+  kcmutils = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kcmutils-5.16.0.tar.xz";
+      sha256 = "1cz3lgwm6vp39c40yykg26791xcjk3vr83266nhcyl6cm7dk04rl";
+      name = "kcmutils-5.16.0.tar.xz";
+    };
+  };
+  kcodecs = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kcodecs-5.16.0.tar.xz";
+      sha256 = "164yj6mpqb7hl9v5xdhgwpddrk7d4qig8qhx9i8xlxbb2v30rlcp";
+      name = "kcodecs-5.16.0.tar.xz";
+    };
+  };
+  kcompletion = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kcompletion-5.16.0.tar.xz";
+      sha256 = "084nqd5j7rffqh67v862h88zsqks3pyynw2fzmayhngcjm1y8c22";
+      name = "kcompletion-5.16.0.tar.xz";
+    };
+  };
+  kconfig = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kconfig-5.16.0.tar.xz";
+      sha256 = "1871ixmk4z4ajfnszlyba4ibmywz0iw7ibg073wwzm3hpx2nizmf";
+      name = "kconfig-5.16.0.tar.xz";
+    };
+  };
+  kconfigwidgets = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kconfigwidgets-5.16.0.tar.xz";
+      sha256 = "11pl9295qnvz9284liyacz87hb5w5a4ybzcyg0jchc62aw1q9bi6";
+      name = "kconfigwidgets-5.16.0.tar.xz";
+    };
+  };
+  kcoreaddons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kcoreaddons-5.16.0.tar.xz";
+      sha256 = "1944csk50q42a2prm6fijnzi1cds23phdzkfvsxlxxxzga7744fm";
+      name = "kcoreaddons-5.16.0.tar.xz";
+    };
+  };
+  kcrash = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kcrash-5.16.0.tar.xz";
+      sha256 = "1bk7dvlzxs6n63iy0lmb7jgwa3np0ja4ldvwxx1y82gq593dqwa9";
+      name = "kcrash-5.16.0.tar.xz";
+    };
+  };
+  kdbusaddons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdbusaddons-5.16.0.tar.xz";
+      sha256 = "0ykfgmhisyiah9nisb73xcdfnxgiwcpjzry68x9j1r60b506r6za";
+      name = "kdbusaddons-5.16.0.tar.xz";
+    };
+  };
+  kdeclarative = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdeclarative-5.16.0.tar.xz";
+      sha256 = "0ck8w2vd9z288h08zc8fa2bndgcg6m63g34dl95snb4h00ciybd4";
+      name = "kdeclarative-5.16.0.tar.xz";
+    };
+  };
+  kded = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kded-5.16.0.tar.xz";
+      sha256 = "0p0mxa989k9n45iaq0ymgr228nx4g31v3bcbdm2vlzzr524jnx8q";
+      name = "kded-5.16.0.tar.xz";
+    };
+  };
+  kdelibs4support = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/kdelibs4support-5.16.0.tar.xz";
+      sha256 = "0y2m67h79in7hdlv95g31kkdnjafdda1h26dm9fdjv52183n8kdc";
+      name = "kdelibs4support-5.16.0.tar.xz";
+    };
+  };
+  kdesignerplugin = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdesignerplugin-5.16.0.tar.xz";
+      sha256 = "1x2kd70nyvykcmd4whnv991pqyflpaahans5jaz0v0y1a2l67965";
+      name = "kdesignerplugin-5.16.0.tar.xz";
+    };
+  };
+  kdesu = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdesu-5.16.0.tar.xz";
+      sha256 = "10g7vg8q2hibdh098n373jg8njzr0w9dxyfi9yb84pjyyshj7km6";
+      name = "kdesu-5.16.0.tar.xz";
+    };
+  };
+  kdewebkit = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdewebkit-5.16.0.tar.xz";
+      sha256 = "1nq6j1k3ddp9p40mdgczcvv0ba16haz3s4km9pyxsv7qwrbpm6wa";
+      name = "kdewebkit-5.16.0.tar.xz";
+    };
+  };
+  kdnssd = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdnssd-5.16.0.tar.xz";
+      sha256 = "1ds1xvw7v75vz2nnrygy10slwysis75y57s8xafsw7fhs8sybvc3";
+      name = "kdnssd-5.16.0.tar.xz";
+    };
+  };
+  kdoctools = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kdoctools-5.16.0.tar.xz";
+      sha256 = "1qf82drggsbhwlwsrmwbk6m0x4jhihhx0wz32y7ybhn867p8glgb";
+      name = "kdoctools-5.16.0.tar.xz";
+    };
+  };
+  kemoticons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kemoticons-5.16.0.tar.xz";
+      sha256 = "166la4160vjf444cylyr4dnc507fqsifl9qpdw2gqa8nw45w6kms";
+      name = "kemoticons-5.16.0.tar.xz";
+    };
+  };
+  kfilemetadata = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kfilemetadata-5.16.0.tar.xz";
+      sha256 = "1yf7hgpgrvw8qvyj0l8c828y6xh3w3grslg4s9grx93jsw2jpypm";
+      name = "kfilemetadata-5.16.0.tar.xz";
+    };
+  };
+  kglobalaccel = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kglobalaccel-5.16.0.tar.xz";
+      sha256 = "12hxhi8b53az3qrpgcjz494vylbqgxq3921qhsccy3nvywg7r3mv";
+      name = "kglobalaccel-5.16.0.tar.xz";
+    };
+  };
+  kguiaddons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kguiaddons-5.16.0.tar.xz";
+      sha256 = "1gv0rhr06xzgkw1pj1nc4jbc6vmr952bbvs1vp3x2609pfn7d8b4";
+      name = "kguiaddons-5.16.0.tar.xz";
+    };
+  };
+  khtml = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/khtml-5.16.0.tar.xz";
+      sha256 = "11q66h7hlsmjc7rj4m70yian6vymbjisz7yw7ck81qbv7b75w9bk";
+      name = "khtml-5.16.0.tar.xz";
+    };
+  };
+  ki18n = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/ki18n-5.16.0.tar.xz";
+      sha256 = "08hxinx0x8b4pprx23a6aklc9sd26cd21ajdzlk2wrv8jp3dl2pw";
+      name = "ki18n-5.16.0.tar.xz";
+    };
+  };
+  kiconthemes = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kiconthemes-5.16.0.tar.xz";
+      sha256 = "10y9rz4dmza6xjl8n9hhjpymnxzpdqk6w82s7d4yaam2kkv5hysk";
+      name = "kiconthemes-5.16.0.tar.xz";
+    };
+  };
+  kidletime = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kidletime-5.16.0.tar.xz";
+      sha256 = "1s51xbn2i50d7dpl7p9aq92gy5zvgxb0liaq36f425g3hzmdkr57";
+      name = "kidletime-5.16.0.tar.xz";
+    };
+  };
+  kimageformats = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kimageformats-5.16.0.tar.xz";
+      sha256 = "02jsmz3ysddywd9v7y8cbsvanpg4d9xwbgr0sqxb600a4s0z797s";
+      name = "kimageformats-5.16.0.tar.xz";
+    };
+  };
+  kinit = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kinit-5.16.0.tar.xz";
+      sha256 = "1flpxypblj7jjv854f81xd6yx3x1wsns18hpp19jnwb54w2xy0g0";
+      name = "kinit-5.16.0.tar.xz";
+    };
+  };
+  kio = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kio-5.16.0.tar.xz";
+      sha256 = "1mm94ywvkfnrfkd29vhcnc8v3ly9d33vvjmrhz9r2q3rw4zyjpiv";
+      name = "kio-5.16.0.tar.xz";
+    };
+  };
+  kitemmodels = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kitemmodels-5.16.0.tar.xz";
+      sha256 = "1bm948adzhqpq698wg1bqxz09cmpxwqhpv1qvb6fgnxv2fyjgdg2";
+      name = "kitemmodels-5.16.0.tar.xz";
+    };
+  };
+  kitemviews = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kitemviews-5.16.0.tar.xz";
+      sha256 = "1bv41lijf3yh2dwwkwjp80sxz5yffyl1hqs7prhhv2jyn88xpx6a";
+      name = "kitemviews-5.16.0.tar.xz";
+    };
+  };
+  kjobwidgets = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kjobwidgets-5.16.0.tar.xz";
+      sha256 = "07dclwc85294ca3vkg1sf9zqcgr3brzjimb8qqy0svdbfvbr0kxa";
+      name = "kjobwidgets-5.16.0.tar.xz";
+    };
+  };
+  kjs = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/kjs-5.16.0.tar.xz";
+      sha256 = "0zj5px9wx5c5yzlsz48bahi0xnshn3xbrfm4l9j4x4nj4vk3jksv";
+      name = "kjs-5.16.0.tar.xz";
+    };
+  };
+  kjsembed = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/kjsembed-5.16.0.tar.xz";
+      sha256 = "17vsbz0a6cd0nfjpwlyr6401pfrz0snxrcqwnj0llcmbpkbc3las";
+      name = "kjsembed-5.16.0.tar.xz";
+    };
+  };
+  kmediaplayer = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/kmediaplayer-5.16.0.tar.xz";
+      sha256 = "0j9g13qd7l2kwn1imphdsannjdxbx3jk8jl3d9xa6g33mqav8bjc";
+      name = "kmediaplayer-5.16.0.tar.xz";
+    };
+  };
+  knewstuff = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/knewstuff-5.16.0.tar.xz";
+      sha256 = "0213lnnlah2jq8a5rbbwzjxl0qc0cgmsnixjbkbvq3wr7yb1s6hr";
+      name = "knewstuff-5.16.0.tar.xz";
+    };
+  };
+  knotifications = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/knotifications-5.16.0.tar.xz";
+      sha256 = "0bfr68a2favrnmpmck16vrqy8mni72plkn0fv0fl6bfq3fmi645a";
+      name = "knotifications-5.16.0.tar.xz";
+    };
+  };
+  knotifyconfig = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/knotifyconfig-5.16.0.tar.xz";
+      sha256 = "0ma5s4451h9jl9va4nnjrwhxgq5jmgq2b0m5y7hdh7m03hwhjqmc";
+      name = "knotifyconfig-5.16.0.tar.xz";
+    };
+  };
+  kpackage = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kpackage-5.16.0.tar.xz";
+      sha256 = "0js7dbg0y6b6nqnwc70706pchxpg12l9g7si1qab2jq8ir5drrap";
+      name = "kpackage-5.16.0.tar.xz";
+    };
+  };
+  kparts = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kparts-5.16.0.tar.xz";
+      sha256 = "0g405r2x900d8c5jdsspy05m70agj3gqja6y3j319b8ph3yycnq4";
+      name = "kparts-5.16.0.tar.xz";
+    };
+  };
+  kpeople = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kpeople-5.16.0.tar.xz";
+      sha256 = "07lsacynsr3mzqyizbq3mywk8d54kyzfx5a3nminf2hs5a1wgg8m";
+      name = "kpeople-5.16.0.tar.xz";
+    };
+  };
+  kplotting = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kplotting-5.16.0.tar.xz";
+      sha256 = "1fc448f52lf8nvs2zi2r55vqfhph7qdvdwvdpk0gz8jadj4gciz7";
+      name = "kplotting-5.16.0.tar.xz";
+    };
+  };
+  kpty = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kpty-5.16.0.tar.xz";
+      sha256 = "074sws3rvjs090l2cbhl9gxcgb6bjlxard8ylmrkhvqr0dc9syvc";
+      name = "kpty-5.16.0.tar.xz";
+    };
+  };
+  kross = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/kross-5.16.0.tar.xz";
+      sha256 = "05mwldy2jwal5pjn6hbiny61xd02sbljkkbyc33ni5qiiznxjk56";
+      name = "kross-5.16.0.tar.xz";
+    };
+  };
+  krunner = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/portingAids/krunner-5.16.0.tar.xz";
+      sha256 = "1rk7j6kj3sv6dqnv98hprdyrp94wz57lr1lvlmw11kdlm1mmh45p";
+      name = "krunner-5.16.0.tar.xz";
+    };
+  };
+  kservice = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kservice-5.16.0.tar.xz";
+      sha256 = "140b4jxs3s00xbbbh8jjqw9q5krsd7xh4qal2k0hjk0nfx5blvp9";
+      name = "kservice-5.16.0.tar.xz";
+    };
+  };
+  ktexteditor = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/ktexteditor-5.16.0.tar.xz";
+      sha256 = "0g1yms864jq83c48j5ida4pmwisqxn49kl5daf7c1ssaia1pxfqw";
+      name = "ktexteditor-5.16.0.tar.xz";
+    };
+  };
+  ktextwidgets = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/ktextwidgets-5.16.0.tar.xz";
+      sha256 = "1vzklpq1zdn3cg5hh7f2988q3sdn6y9mr1hgkmpcsc1y8pfhn7w9";
+      name = "ktextwidgets-5.16.0.tar.xz";
+    };
+  };
+  kunitconversion = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kunitconversion-5.16.0.tar.xz";
+      sha256 = "1ppmma1z1hk9shfn1w7dvy72872ryyqs9252s65pzx3ycrd00nll";
+      name = "kunitconversion-5.16.0.tar.xz";
+    };
+  };
+  kwallet = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kwallet-5.16.0.tar.xz";
+      sha256 = "1gcwc7m8q5ya3gbj02pmmjaigpr0y94m3h526b2xdbksc23kv2gi";
+      name = "kwallet-5.16.0.tar.xz";
+    };
+  };
+  kwidgetsaddons = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kwidgetsaddons-5.16.0.tar.xz";
+      sha256 = "0vzyikwp351sdywh38m6jj851sf5l4s8mxyvf5i6jkzpzl5591a3";
+      name = "kwidgetsaddons-5.16.0.tar.xz";
+    };
+  };
+  kwindowsystem = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kwindowsystem-5.16.0.tar.xz";
+      sha256 = "07hl0sy0573nwddzyph5s75h983569p5bb96gxjbh0lh3ixar2ig";
+      name = "kwindowsystem-5.16.0.tar.xz";
+    };
+  };
+  kxmlgui = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kxmlgui-5.16.0.tar.xz";
+      sha256 = "1vzhf29gd5kn94x1cydnblb5v5163a52vpwh7fpsg3dlhhwd9h2s";
+      name = "kxmlgui-5.16.0.tar.xz";
+    };
+  };
+  kxmlrpcclient = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/kxmlrpcclient-5.16.0.tar.xz";
+      sha256 = "1pacf0q67xckw8nvj3bncz5ydsmiw2a0fksmabklpbdmi9p2dz0a";
+      name = "kxmlrpcclient-5.16.0.tar.xz";
+    };
+  };
+  modemmanager-qt = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/modemmanager-qt-5.16.0.tar.xz";
+      sha256 = "0q135rhp52pk3ilmx9gx2cmn2p834s56kcqg3vdfycvi5gmvn81x";
+      name = "modemmanager-qt-5.16.0.tar.xz";
+    };
+  };
+  networkmanager-qt = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/networkmanager-qt-5.16.0.tar.xz";
+      sha256 = "115r211bf16dlcccib6dg0fd22g9kq9xshh8vf7f4msaa63kdfjv";
+      name = "networkmanager-qt-5.16.0.tar.xz";
+    };
+  };
+  oxygen-icons5 = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/oxygen-icons5-5.16.0.tar.xz";
+      sha256 = "0nmr1jp3kr41k4wn9jvj1yvq9w51ljajzk94qf5k7rh68dzj4jl7";
+      name = "oxygen-icons5-5.16.0.tar.xz";
+    };
+  };
+  plasma-framework = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/plasma-framework-5.16.0.tar.xz";
+      sha256 = "1snih6i9n29c48sfw51csl99khps1c9bralb599d3c6q1j4iqzp3";
+      name = "plasma-framework-5.16.0.tar.xz";
+    };
+  };
+  solid = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/solid-5.16.0.tar.xz";
+      sha256 = "1km4nb8cmqag2lpwgrmjj5rn8lv6s9lbhh2d3dfb2f0lmnqm00sl";
+      name = "solid-5.16.0.tar.xz";
+    };
+  };
+  sonnet = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/sonnet-5.16.0.tar.xz";
+      sha256 = "1fn729ijclvdrxw9h0c23sbayfagh2jb7yglgsqqjsg3bdp72qi7";
+      name = "sonnet-5.16.0.tar.xz";
+    };
+  };
+  threadweaver = {
+    version = "5.16.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.16/threadweaver-5.16.0.tar.xz";
+      sha256 = "1ansjzfl6bvwqw2yi597gvzikyaaf8z5pvldwfd4mamb3vl42y4y";
+      name = "threadweaver-5.16.0.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.16/threadweaver.nix b/pkgs/development/libraries/kde-frameworks-5.16/threadweaver.nix
new file mode 100644
index 000000000000..52817921cc72
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.16/threadweaver.nix
@@ -0,0 +1,11 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+}:
+
+kdeFramework {
+  name = "threadweaver";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/qca-qt5/default.nix b/pkgs/development/libraries/qca-qt5/default.nix
index cabe672d7bc5..7ee115916053 100644
--- a/pkgs/development/libraries/qca-qt5/default.nix
+++ b/pkgs/development/libraries/qca-qt5/default.nix
@@ -1,16 +1,11 @@
-{ stdenv, fetchgit, cmake, openssl, pkgconfig, qtbase }:
+{ stdenv, fetchurl, cmake, openssl, pkgconfig, qtbase }:
 
-let
-  rev = "088ff642fc2990871e3555e73c94c9287e7514a9";
-  shortrev = builtins.substring 0 7 rev;
-in
 stdenv.mkDerivation rec {
-  name = "qca-qt5-20150422-${shortrev}";
-  src = fetchgit {
-    url = "git://anongit.kde.org/qca.git";
-    branchName = "qt5";
-    inherit rev;
-    sha256 = "fe1c7d5d6f38445a4032548ae3ea22c74d4327dfaf2dc88492a95facbca398f8";
+  name = "qca-qt5-2.1.1";
+
+  src = fetchurl {
+    url = "http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz";
+    sha256 = "10z9icq28fww4qbzwra8d9z55ywbv74qk68nhiqfrydm21wkxplm";
   };
 
   buildInputs = [ openssl qtbase ];
diff --git a/pkgs/development/libraries/qca-qt5/old.nix b/pkgs/development/libraries/qca-qt5/old.nix
index d0bcb73151f0..a3e9e9be6423 100644
--- a/pkgs/development/libraries/qca-qt5/old.nix
+++ b/pkgs/development/libraries/qca-qt5/old.nix
@@ -1,16 +1,11 @@
-{ stdenv, fetchgit, cmake, openssl, pkgconfig, qt5 }:
+{ stdenv, fetchurl, cmake, openssl, pkgconfig, qt5 }:
 
-let
-  rev = "088ff642fc2990871e3555e73c94c9287e7514a9";
-  shortrev = builtins.substring 0 7 rev;
-in
 stdenv.mkDerivation rec {
-  name = "qca-qt5-20150422-${shortrev}";
-  src = fetchgit {
-    url = "git://anongit.kde.org/qca.git";
-    branchName = "qt5";
-    inherit rev;
-    sha256 = "fe1c7d5d6f38445a4032548ae3ea22c74d4327dfaf2dc88492a95facbca398f8";
+  name = "qca-qt5-2.1.1";
+
+  src = fetchurl {
+    url = "http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz";
+    sha256 = "10z9icq28fww4qbzwra8d9z55ywbv74qk68nhiqfrydm21wkxplm";
   };
 
   buildInputs = [ openssl qt5.base ];
diff --git a/pkgs/development/libraries/qca2/default.nix b/pkgs/development/libraries/qca2/default.nix
index 7890017b55b8..43ef6f78b576 100644
--- a/pkgs/development/libraries/qca2/default.nix
+++ b/pkgs/development/libraries/qca2/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, cmake, pkgconfig, qt }:
 
 stdenv.mkDerivation rec {
-  name = "qca-2.1.0";
+  name = "qca-2.1.1";
 
   src = fetchurl {
-    url = "http://delta.affinix.com/download/qca/2.0/${name}.tar.gz";
-    sha256 = "114jg97fmg1rb4llfg7x7r68lxdkjrx60qsqq76khdwc2dvcsv92";
+    url = "http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz";
+    sha256 = "10z9icq28fww4qbzwra8d9z55ywbv74qk68nhiqfrydm21wkxplm";
   };
 
   nativeBuildInputs = [ cmake pkgconfig ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d69d5daaff93..b6802fa64da7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6789,8 +6789,9 @@ let
   };
 
   kf515 = recurseIntoAttrs (import ../development/libraries/kde-frameworks-5.15 { inherit pkgs; });
+  kf516 = recurseIntoAttrs (import ../development/libraries/kde-frameworks-5.16 { inherit pkgs; });
   kf5_stable = kf515;
-  kf5_latest = kf515;
+  kf5_latest = kf516;
 
   kf5PackagesFun = self: with self; {
 
@@ -12119,8 +12120,9 @@ let
   };
 
   kdeApps_15_08 = recurseIntoAttrs (import ../applications/kde-apps-15.08 { inherit pkgs; });
+  kdeApps_15_12 = recurseIntoAttrs (import ../applications/kde-apps-15.12 { inherit pkgs; });
   kdeApps_stable = kdeApps_15_08;
-  kdeApps_latest = kdeApps_15_08;
+  kdeApps_latest = kdeApps_15_12;
 
   keepnote = callPackage ../applications/office/keepnote {
     pygtk = pyGtkGlade;
@@ -14575,9 +14577,10 @@ let
 
   numix-gtk-theme = callPackage ../misc/themes/gtk3/numix-gtk-theme { };
 
-  plasma54 = recurseIntoAttrs (callPackage ../desktops/plasma-5.4 { inherit pkgs; });
+  plasma54 = recurseIntoAttrs (import ../desktops/plasma-5.4 { inherit pkgs; });
+  plasma55 = recurseIntoAttrs (import ../desktops/plasma-5.5 { inherit pkgs; });
   plasma5_stable = plasma54;
-  plasma5_latest = plasma54;
+  plasma5_latest = plasma55;
 
   kde5 = kf5_stable // plasma5_stable // kdeApps_stable;