about summary refs log tree commit diff
path: root/pkgs/desktops/kde-5
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/kde-5')
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/ark.nix58
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/baloo-widgets.nix35
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/default.nix56
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/dolphin-plugins.nix31
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/dolphin.nix70
-rwxr-xr-xpkgs/desktops/kde-5/applications-15.12/fetchsrcs.sh56
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/ffmpegthumbs.nix21
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/gpgmepp.nix21
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/gwenview.nix44
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kate.nix69
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-app.nix25
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix27
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix24
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdegraphics-thumbnailers.nix23
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/0001-old-kde4-cmake-policies.patch56
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/0002-polkit-install-path.patch25
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/0003-remove_xdg_impurities.patch47
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix45
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdelibs/setup-hook.sh10
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kdenetwork-filesharing.nix29
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kgpg.nix38
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/kio-extras.nix58
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/konsole.nix68
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/l10n.nix237
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/libkdcraw.nix19
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/libkexiv2.nix19
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/libkipi.nix22
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/okular.nix41
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/print-manager.nix47
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/spectacle.nix46
-rw-r--r--pkgs/desktops/kde-5/applications-15.12/srcs.nix1933
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/attica.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/baloo.nix25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/bluez-qt.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/default.nix114
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix20
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch37
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh81
-rwxr-xr-xpkgs/desktops/kde-5/frameworks-5.19/fetchsrcs.sh57
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/frameworkintegration.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kactivities.nix22
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kapidox.nix12
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/karchive.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kauth/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kbookmarks.nix25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcmutils/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcmutils/default.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcodecs.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcompletion.nix14
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kconfig.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kconfigwidgets/default.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcoreaddons.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kcrash.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdbusaddons.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdeclarative.nix22
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kded.nix19
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix36
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdesignerplugin.nix34
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdesu.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdewebkit.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdnssd.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix19
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kdoctools/kdoctools-no-find-docbook-xml.patch12
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kemoticons.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix14
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kglobalaccel.nix23
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kguiaddons.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/khtml.nix21
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/ki18n.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default-theme-breeze.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default.nix18
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kidletime.nix15
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kimageformats.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kinit/0001-kinit-libpath.patch42
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kinit/default.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kio/default.nix33
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kio/samba-search-path.patch28
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kio/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kitemmodels.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kitemviews.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kjobwidgets.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kjs.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kjsembed.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kmediaplayer.nix15
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/knewstuff.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/knotifications.nix21
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/knotifyconfig.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpackage/allow-external-paths.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpackage/default.nix23
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpackage/qdiriterator-follow-symlinks.patch26
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpackage/series2
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kparts.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpeople.nix15
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kplotting.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kpty.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kross.nix14
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/krunner.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kservice/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kservice/0002-no-canonicalize-path.patch25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix18
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/default.nix22
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/no-qcoreapplication.patch36
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/ktextwidgets.nix16
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kunitconversion.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix21
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kwidgetsaddons.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kwindowsystem.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kxmlgui.nix18
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/kxmlrpcclient.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/modemmanager-qt.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/networkmanager-qt.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/oxygen-icons5.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/plasma-framework/default.nix25
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/solid.nix17
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/sonnet.nix13
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/srcs.nix565
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.19/threadweaver.nix11
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/bluedevil.nix26
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/breeze-gtk.nix8
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/breeze-qt4.nix29
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/breeze-qt5.nix23
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/default.nix87
-rwxr-xr-xpkgs/desktops/kde-5/plasma-5.5/fetchsrcs.sh57
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kde-cli-tools.nix27
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch39
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix28
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kdecoration.nix6
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kdeplasma-addons.nix21
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kgamma5.nix9
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/khelpcenter.nix20
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/khotkeys.nix16
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kinfocenter.nix24
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kmenuedit.nix19
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kscreen.nix29
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kscreenlocker.nix19
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/ksshaskpass.nix13
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/ksysguard.nix20
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kwayland.nix14
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kwin/default.nix33
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/kwrited.nix10
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/libkscreen/default.nix18
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch25
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/libksysguard/default.nix21
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/milou.nix17
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/oxygen.nix20
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch67
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/0002-hwclock.patch36
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/0003-tzdir.patch30
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix86
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix20
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch25
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-nm/default.nix36
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-pa.nix18
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace-wallpapers.nix10
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix84
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/qml-import-path.patch104
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/series2
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch375
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/polkit-kde-agent.nix31
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/powerdevil.nix20
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/srcs.nix309
-rw-r--r--pkgs/desktops/kde-5/plasma-5.5/systemsettings.nix21
175 files changed, 7621 insertions, 0 deletions
diff --git a/pkgs/desktops/kde-5/applications-15.12/ark.nix b/pkgs/desktops/kde-5/applications-15.12/ark.nix
new file mode 100644
index 000000000000..36a1ca7cfbd7
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/baloo-widgets.nix b/pkgs/desktops/kde-5/applications-15.12/baloo-widgets.nix
new file mode 100644
index 000000000000..a24928160df1
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/default.nix b/pkgs/desktops/kde-5/applications-15.12/default.nix
new file mode 100644
index 000000000000..15982cb5d64c
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/default.nix
@@ -0,0 +1,56 @@
+# 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";
+
+  packages = self: with self; {
+
+    kdeApp = import ./kde-app.nix {
+      inherit stdenv lib;
+      inherit debug srcs;
+    };
+
+    kdelibs = callPackage ./kdelibs { inherit (pkgs) attica phonon; };
+
+    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 {};
+    kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
+    kgpg = callPackage ./kgpg.nix { inherit (pkgs.kde4) kdepimlibs; };
+    kio-extras = callPackage ./kio-extras.nix {};
+    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 {};
+    spectacle = callPackage ./spectacle.nix {};
+
+    l10n = pkgs.recurseIntoAttrs (import ./l10n.nix { inherit callPackage lib pkgs; });
+  };
+
+in packages
diff --git a/pkgs/desktops/kde-5/applications-15.12/dolphin-plugins.nix b/pkgs/desktops/kde-5/applications-15.12/dolphin-plugins.nix
new file mode 100644
index 000000000000..72a08c732614
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/dolphin.nix b/pkgs/desktops/kde-5/applications-15.12/dolphin.nix
new file mode 100644
index 000000000000..3218146f510e
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/fetchsrcs.sh b/pkgs/desktops/kde-5/applications-15.12/fetchsrcs.sh
new file mode 100755
index 000000000000..93da9d332f7c
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/stable/applications/15.12.1/ -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/desktops/kde-5/applications-15.12/ffmpegthumbs.nix b/pkgs/desktops/kde-5/applications-15.12/ffmpegthumbs.nix
new file mode 100644
index 000000000000..53e9d807d647
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/gpgmepp.nix b/pkgs/desktops/kde-5/applications-15.12/gpgmepp.nix
new file mode 100644
index 000000000000..ac14573dcaa3
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/gwenview.nix b/pkgs/desktops/kde-5/applications-15.12/gwenview.nix
new file mode 100644
index 000000000000..732ac11e96d0
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/kate.nix b/pkgs/desktops/kde-5/applications-15.12/kate.nix
new file mode 100644
index 000000000000..91eeb2314a4c
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/kde-app.nix b/pkgs/desktops/kde-5/applications-15.12/kde-app.nix
new file mode 100644
index 000000000000..2f1fdc1d643c
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-app.nix
@@ -0,0 +1,25 @@
+{ 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;
+
+  outputs = args.outputs or [ "dev" "out" ];
+
+  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/desktops/kde-5/applications-15.12/kde-locale-4.nix b/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix
new file mode 100644
index 000000000000..e83794c60d81
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-locale-4.nix
@@ -0,0 +1,27 @@
+name: args:
+
+{ kdeApp, automoc4, cmake, gettext, kdelibs, perl }:
+
+kdeApp (args // {
+  sname = "kde-l10n-${name}";
+  name = "kde-l10n-${name}-qt4";
+
+  outputs = [ "out" ];
+
+  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 ""}
+  '';
+
+  preFixup = ''
+    propagatedBuildInputs=
+    propagatedNativeBuildInputs=
+  '';
+})
diff --git a/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix b/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix
new file mode 100644
index 000000000000..772ebe37e44f
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kde-locale-5.nix
@@ -0,0 +1,24 @@
+name: args:
+
+{ kdeApp, cmake, extra-cmake-modules, gettext, kdoctools }:
+
+kdeApp (args // {
+  sname = "kde-l10n-${name}";
+  name = "kde-l10n-${name}-qt5";
+
+  outputs = [ "out" ];
+
+  nativeBuildInputs =
+    [ cmake extra-cmake-modules gettext kdoctools ]
+    ++ (args.nativeBuildInputs or []);
+
+  preConfigure = ''
+    sed -e 's/add_subdirectory(4)//' -i CMakeLists.txt
+    ${args.preConfigure or ""}
+  '';
+
+  preFixup = ''
+    propagatedBuildInputs=
+    propagatedNativeBuildInputs=
+  '';
+})
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdegraphics-thumbnailers.nix b/pkgs/desktops/kde-5/applications-15.12/kdegraphics-thumbnailers.nix
new file mode 100644
index 000000000000..520bad0d066a
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/kdelibs/0001-old-kde4-cmake-policies.patch b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0001-old-kde4-cmake-policies.patch
new file mode 100644
index 000000000000..b7d7300e9a84
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0001-old-kde4-cmake-policies.patch
@@ -0,0 +1,56 @@
+From b43c49109694940f0a26240753e879eb629dd02d Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 7 Sep 2015 13:54:57 -0500
+Subject: [PATCH 1/2] old kde4 cmake policies
+
+---
+ cmake/modules/FindKDE4Internal.cmake | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/cmake/modules/FindKDE4Internal.cmake b/cmake/modules/FindKDE4Internal.cmake
+index 7d54b9b..c435571 100644
+--- a/cmake/modules/FindKDE4Internal.cmake
++++ b/cmake/modules/FindKDE4Internal.cmake
+@@ -345,6 +345,39 @@
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+ 
++# this is required now by cmake 2.6 and so must not be skipped by if(KDE4_FOUND) below
++cmake_minimum_required(VERSION 2.8.9 FATAL_ERROR)
++# set the cmake policies to the 2.4.x compatibility settings (may change for KDE 4.3)
++cmake_policy(VERSION 2.4.5)
++
++# CMake 2.6, set compatibility behaviour to cmake 2.4
++# this must be executed always, because the CMAKE_MINIMUM_REQUIRED() command above
++# resets the policy settings, so we get a lot of warnings
++
++# CMP0000: don't require cmake_minimum_version() directly in the top level CMakeLists.txt, FindKDE4Internal.cmake is good enough
++cmake_policy(SET CMP0000 OLD)
++# CMP0002: in KDE4 we have multiple targets with the same name for the unit tests
++cmake_policy(SET CMP0002 OLD)
++# CMP0003: add the link paths to the link command as with cmake 2.4
++cmake_policy(SET CMP0003 OLD)
++# CMP0005: keep escaping behaviour for definitions added via add_definitions()
++cmake_policy(SET CMP0005 OLD)
++# since cmake 2.6.3: NEW behaviour is that setting policies doesn't "escape" the file
++# where this is done, macros and functions are executed with the policies as they
++# were when the were defined. Keep the OLD behaviour so we can set the policies here
++# for all KDE software without the big warning
++cmake_policy(SET CMP0011 OLD)
++
++# since cmake 2.8.4: when include()ing from inside cmake's module dir, prefer the files
++# in this directory over those from CMAKE_MODULE_PATH
++cmake_policy(SET CMP0017 NEW)
++
++# since cmake 3.0: use of the LOCATION target property is disallowed while it is used in KDE4Macros.cmake
++if (POLICY CMP0026)
++  cmake_policy(SET CMP0026 OLD)
++endif (POLICY CMP0026)
++
++
+ # Only do something if it hasn't been found yet
+ if(NOT KDE4_FOUND)
+ 
+-- 
+2.5.0
+
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdelibs/0002-polkit-install-path.patch b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0002-polkit-install-path.patch
new file mode 100644
index 000000000000..ff0306ea1488
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0002-polkit-install-path.patch
@@ -0,0 +1,25 @@
+From fab35bac146a817f3af80f45531355fd70cd226b Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Mon, 7 Sep 2015 13:56:03 -0500
+Subject: [PATCH 2/2] polkit install path
+
+---
+ kdecore/auth/ConfigureChecks.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kdecore/auth/ConfigureChecks.cmake b/kdecore/auth/ConfigureChecks.cmake
+index 7cf9cb5..c8334ae 100644
+--- a/kdecore/auth/ConfigureChecks.cmake
++++ b/kdecore/auth/ConfigureChecks.cmake
+@@ -150,7 +150,7 @@ elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "POLKITQT-1")
+         ${CMAKE_INSTALL_PREFIX} _KDE4_AUTH_POLICY_FILES_INSTALL_DIR
+         ${POLKITQT-1_POLICY_FILES_INSTALL_DIR})
+ 
+-    set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR ${_KDE4_AUTH_POLICY_FILES_INSTALL_DIR} CACHE STRING 
++    set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR "\${CMAKE_INSTALL_PREFIX}/share/polkit-1/actions" CACHE STRING 
+         "Where policy files generated by KAuth will be installed" FORCE)
+ elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "FAKE")
+     set (KAUTH_COMPILING_FAKE_BACKEND TRUE)
+-- 
+2.5.0
+
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdelibs/0003-remove_xdg_impurities.patch b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0003-remove_xdg_impurities.patch
new file mode 100644
index 000000000000..a79d7b2b7d16
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/0003-remove_xdg_impurities.patch
@@ -0,0 +1,47 @@
+diff --git a/kdecore/kernel/kstandarddirs.cpp b/kdecore/kernel/kstandarddirs.cpp
+index ab8f76d..2ae5089 100644
+--- a/kdecore/kernel/kstandarddirs.cpp
++++ b/kdecore/kernel/kstandarddirs.cpp
+@@ -1768,12 +1768,6 @@ void KStandardDirs::addKDEDefaults()
+     else
+     {
+         xdgdirList.clear();
+-        xdgdirList.append(QString::fromLatin1("/etc/xdg"));
+-#ifdef Q_WS_WIN
+-        xdgdirList.append(installPath("kdedir") + QString::fromLatin1("etc/xdg"));
+-#else
+-        xdgdirList.append(QFile::decodeName(KDESYSCONFDIR "/xdg"));
+-#endif
+     }
+ 
+     QString localXdgDir = readEnvPath("XDG_CONFIG_HOME");
+@@ -1821,10 +1815,6 @@ void KStandardDirs::addKDEDefaults()
+         }
+     } else {
+         xdgdirList = kdedirDataDirs;
+-#ifndef Q_WS_WIN
+-        xdgdirList.append(QString::fromLatin1("/usr/local/share/"));
+-        xdgdirList.append(QString::fromLatin1("/usr/share/"));
+-#endif
+     }
+ 
+     localXdgDir = readEnvPath("XDG_DATA_HOME");
+diff --git a/solid/solid/xdgbasedirs.cpp b/solid/solid/xdgbasedirs.cpp
+index 4c9cad9..6849d45 100644
+--- a/solid/solid/xdgbasedirs.cpp
++++ b/solid/solid/xdgbasedirs.cpp
+@@ -70,12 +70,12 @@ QStringList Solid::XdgBaseDirs::systemPathList( const char *resource )
+ {
+   if ( qstrncmp( "data", resource, 4 ) == 0 ) {
+     if ( instance()->mDataDirs.isEmpty() ) {
+-      instance()->mDataDirs = instance()->systemPathList( "XDG_DATA_DIRS", "/usr/local/share:/usr/share" );
++      instance()->mDataDirs = instance()->systemPathList( "XDG_DATA_DIRS", "" );
+     }
+     return instance()->mDataDirs;
+   } else if ( qstrncmp( "config", resource, 6 ) == 0 ) {
+     if ( instance()->mConfigDirs.isEmpty() ) {
+-      instance()->mConfigDirs = instance()->systemPathList( "XDG_CONFIG_DIRS", "/etc/xdg" );
++      instance()->mConfigDirs = instance()->systemPathList( "XDG_CONFIG_DIRS", "" );
+     }
+     return instance()->mConfigDirs;
+   }
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix b/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix
new file mode 100644
index 000000000000..389362deecc6
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/default.nix
@@ -0,0 +1,45 @@
+{ kdeApp, attica, attr, automoc4, avahi, bison, cmake
+, docbook_xml_dtd_42, docbook_xsl, flex, giflib, ilmbase
+, libdbusmenu_qt, libjpeg, libxml2, libxslt, perl, phonon, pkgconfig
+, polkit_qt4, qca2, qt4, shared_desktop_ontologies, shared_mime_info
+, soprano, strigi, udev, xz, pcre
+, lib
+}:
+
+kdeApp {
+  name = "kdelibs";
+
+  outputs = [ "out" ];
+
+  buildInputs = [
+    attica attr avahi giflib libdbusmenu_qt libjpeg libxml2
+    polkit_qt4 qca2 shared_desktop_ontologies udev xz pcre
+  ];
+  propagatedBuildInputs = [ qt4 soprano phonon strigi ];
+  nativeBuildInputs = [
+    automoc4 bison cmake flex libxslt perl pkgconfig shared_mime_info
+  ];
+
+  patches = [
+    ./0001-old-kde4-cmake-policies.patch
+    ./0002-polkit-install-path.patch
+    ./0003-remove_xdg_impurities.patch
+  ];
+
+  # cmake does not detect path to `ilmbase`
+  NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
+
+  cmakeFlags = [
+    "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
+    "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
+    "-DWITH_SOLID_UDISKS2=ON"
+    "-DKDE_DEFAULT_HOME=.kde"
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    licenses = with lib.licenses; [ gpl2 fdl12 lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdelibs/setup-hook.sh b/pkgs/desktops/kde-5/applications-15.12/kdelibs/setup-hook.sh
new file mode 100644
index 000000000000..e0a75dc8acd0
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdelibs/setup-hook.sh
@@ -0,0 +1,10 @@
+addQt4Plugins() {
+  if [[ -d "$1/lib/qt4/plugins" ]]; then
+      propagatedUserEnvPkgs+=" $1"
+  fi
+
+  if [[ -d "$1/lib/kde4/plugins" ]]; then
+      propagatedUserEnvPkgs+=" $1"
+  fi
+}
+envHooks+=(addQt4Plugins)
diff --git a/pkgs/desktops/kde-5/applications-15.12/kdenetwork-filesharing.nix b/pkgs/desktops/kde-5/applications-15.12/kdenetwork-filesharing.nix
new file mode 100644
index 000000000000..4e99a43b3913
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kdenetwork-filesharing.nix
@@ -0,0 +1,29 @@
+{ kdeApp
+, lib
+, extra-cmake-modules
+, kdoctools
+, kcoreaddons
+, ki18n
+, kio
+, kwidgetsaddons
+, samba
+}:
+
+kdeApp {
+  name = "kdenetwork-filesharing";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+  buildInputs = [
+    kcoreaddons
+    ki18n
+    kio
+    kwidgetsaddons
+    samba
+  ];
+  meta = {
+    license = [ lib.licenses.gpl2 lib.licenses.lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/applications-15.12/kgpg.nix b/pkgs/desktops/kde-5/applications-15.12/kgpg.nix
new file mode 100644
index 000000000000..3ee925197189
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/kio-extras.nix b/pkgs/desktops/kde-5/applications-15.12/kio-extras.nix
new file mode 100644
index 000000000000..77b42f1fc586
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/kio-extras.nix
@@ -0,0 +1,58 @@
+{ kdeApp, lib
+, extra-cmake-modules, kdoctools
+, shared_mime_info
+, exiv2
+, karchive
+, kbookmarks
+, kconfig, kconfigwidgets
+, kcoreaddons, kdbusaddons, kguiaddons
+, kdnssd
+, kiconthemes
+, ki18n
+, kio
+, khtml
+, kdelibs4support
+, kpty
+, libmtp
+, libssh
+, openexr
+, openslp
+, phonon
+, qtsvg
+, samba
+, solid
+}:
+
+kdeApp {
+  name = "kio-extras";
+  nativeBuildInputs = [
+    extra-cmake-modules kdoctools
+    shared_mime_info
+  ];
+  buildInputs = [
+    exiv2
+    karchive
+    kbookmarks
+    kconfig kconfigwidgets
+    kcoreaddons kdbusaddons kguiaddons
+    kdnssd
+    kiconthemes
+    ki18n
+    kio
+    khtml
+    kdelibs4support
+    kpty
+    libmtp
+    libssh
+    openexr
+    openslp
+    phonon
+    qtsvg
+    samba
+    solid
+  ];
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/applications-15.12/konsole.nix b/pkgs/desktops/kde-5/applications-15.12/konsole.nix
new file mode 100644
index 000000000000..4b4cba2a3779
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/l10n.nix b/pkgs/desktops/kde-5/applications-15.12/l10n.nix
new file mode 100644
index 000000000000..a0605e3bd55d
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/libkdcraw.nix b/pkgs/desktops/kde-5/applications-15.12/libkdcraw.nix
new file mode 100644
index 000000000000..319c7fc6583d
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/libkexiv2.nix b/pkgs/desktops/kde-5/applications-15.12/libkexiv2.nix
new file mode 100644
index 000000000000..afb1ac836537
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/libkipi.nix b/pkgs/desktops/kde-5/applications-15.12/libkipi.nix
new file mode 100644
index 000000000000..c23cd8578fb9
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/okular.nix b/pkgs/desktops/kde-5/applications-15.12/okular.nix
new file mode 100644
index 000000000000..0691325d7a52
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/print-manager.nix b/pkgs/desktops/kde-5/applications-15.12/print-manager.nix
new file mode 100644
index 000000000000..b4eab372789d
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-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/desktops/kde-5/applications-15.12/spectacle.nix b/pkgs/desktops/kde-5/applications-15.12/spectacle.nix
new file mode 100644
index 000000000000..849334fb7364
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/spectacle.nix
@@ -0,0 +1,46 @@
+{ kdeApp, lib
+, extra-cmake-modules
+, kdoctools
+, makeQtWrapper
+, kconfig
+, kcoreaddons
+, kdbusaddons
+, ki18n
+, kio
+, knotifications
+, kscreen
+, kwidgetsaddons
+, kwindowsystem
+, kxmlgui
+, libkipi
+, xcb-util-cursor
+}:
+
+kdeApp {
+  name = "spectacle";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kconfig
+    kcoreaddons
+    kdbusaddons
+    ki18n
+    kio
+    knotifications
+    kscreen
+    kwidgetsaddons
+    kwindowsystem
+    kxmlgui
+    libkipi
+    xcb-util-cursor
+  ];
+  postFixup = ''
+    wrapQtProgram "$out/bin/spectacle"
+  '';
+  meta = with lib; {
+    maintainers = with maintainers; [ ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/applications-15.12/srcs.nix b/pkgs/desktops/kde-5/applications-15.12/srcs.nix
new file mode 100644
index 000000000000..cd123f49f76b
--- /dev/null
+++ b/pkgs/desktops/kde-5/applications-15.12/srcs.nix
@@ -0,0 +1,1933 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  akonadi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/akonadi-15.12.1.tar.xz";
+      sha256 = "1v9l1i9yny1ckyvq95wvd0bn3ain3fdlba76gf4f2zjwd57kw4il";
+      name = "akonadi-15.12.1.tar.xz";
+    };
+  };
+  akonadi-calendar = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/akonadi-calendar-15.12.1.tar.xz";
+      sha256 = "120fzy2l7c3rl4jlvk021wsrkp0gihqxhihmk6jrlwj4v7nswp69";
+      name = "akonadi-calendar-15.12.1.tar.xz";
+    };
+  };
+  akonadi-search = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/akonadi-search-15.12.1.tar.xz";
+      sha256 = "1kzjhqxa3n8216x1cs2xkyqyzjq7i8py5y5d303yr38m62z3f4qr";
+      name = "akonadi-search-15.12.1.tar.xz";
+    };
+  };
+  analitza = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/analitza-15.12.1.tar.xz";
+      sha256 = "0lvjsrraffqfl53gkdsbzmrsznrz1sqnhpsbx015v21pgiwnx6ll";
+      name = "analitza-15.12.1.tar.xz";
+    };
+  };
+  ark = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ark-15.12.1.tar.xz";
+      sha256 = "0x61k21rjydcjz4b2z52xa559kymsji52ik0hjdkljvwhggcw96a";
+      name = "ark-15.12.1.tar.xz";
+    };
+  };
+  artikulate = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/artikulate-15.12.1.tar.xz";
+      sha256 = "1nlpyslrsqs0zirkaryq4sk2cb53sh2b8mk3cdzpj9w9isx9565x";
+      name = "artikulate-15.12.1.tar.xz";
+    };
+  };
+  audiocd-kio = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/audiocd-kio-15.12.1.tar.xz";
+      sha256 = "0x9x25x096grhm5lb3zibvrdy1x0hf2ryqkgp3l05580iirdjwss";
+      name = "audiocd-kio-15.12.1.tar.xz";
+    };
+  };
+  baloo-widgets = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/baloo-widgets-15.12.1.tar.xz";
+      sha256 = "01nrw2wrvzkvnh1xgzxqzy6zpx2p74iwrz44rrgr5dixciy5bqf5";
+      name = "baloo-widgets-15.12.1.tar.xz";
+    };
+  };
+  blinken = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/blinken-15.12.1.tar.xz";
+      sha256 = "1x9pdji26s0hwrni26wl8r0rqbykxdpl348671d0jwmnidq6rabv";
+      name = "blinken-15.12.1.tar.xz";
+    };
+  };
+  bomber = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/bomber-15.12.1.tar.xz";
+      sha256 = "0666ghxjcpscnc4d0q1jh29kx6knabkglbvggpkk1zqq3zl0fw6y";
+      name = "bomber-15.12.1.tar.xz";
+    };
+  };
+  bovo = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/bovo-15.12.1.tar.xz";
+      sha256 = "0cma6b1896nj2m7gra5g7jc9lwb7m70mhd593nib93w1i2mkamfr";
+      name = "bovo-15.12.1.tar.xz";
+    };
+  };
+  cantor = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/cantor-15.12.1.tar.xz";
+      sha256 = "15bdh85hrcx54ynq70jh42aw4m46g9sszg1rvymjpqi0za80srrj";
+      name = "cantor-15.12.1.tar.xz";
+    };
+  };
+  cervisia = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/cervisia-15.12.1.tar.xz";
+      sha256 = "1kgnvv3az7mdl6q29wxwaj8k3cnxzyizri7l6zjkp6n5jywxpq5h";
+      name = "cervisia-15.12.1.tar.xz";
+    };
+  };
+  dolphin = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/dolphin-15.12.1.tar.xz";
+      sha256 = "0lpc21abdw242cans08jnswbsf9avckf6v12za029g6p4nnvmspx";
+      name = "dolphin-15.12.1.tar.xz";
+    };
+  };
+  dolphin-plugins = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/dolphin-plugins-15.12.1.tar.xz";
+      sha256 = "0k438rhcscqin9735mjq8qrapc4ff4kimwp8bl6b77743b2bk59f";
+      name = "dolphin-plugins-15.12.1.tar.xz";
+    };
+  };
+  dragon = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/dragon-15.12.1.tar.xz";
+      sha256 = "0kqd7m8vjpc4ywz3hpqa8cy3fdlznnhv291wrgvvgm7dv83wylq3";
+      name = "dragon-15.12.1.tar.xz";
+    };
+  };
+  ffmpegthumbs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ffmpegthumbs-15.12.1.tar.xz";
+      sha256 = "1apcafjdjzhpqm72h2rvzxcy00fjdl8dah49ss7mj2ld0f36vl07";
+      name = "ffmpegthumbs-15.12.1.tar.xz";
+    };
+  };
+  filelight = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/filelight-15.12.1.tar.xz";
+      sha256 = "0za42abixfhkxczcddy9n4b98ryf3wvq2gngnqwgrs0m4wv3y530";
+      name = "filelight-15.12.1.tar.xz";
+    };
+  };
+  gpgmepp = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/gpgmepp-15.12.1.tar.xz";
+      sha256 = "0ygmdmampd3yc0mkfbw7ihrdc6vmxb178kd5y3dxms4kiilxw6lv";
+      name = "gpgmepp-15.12.1.tar.xz";
+    };
+  };
+  granatier = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/granatier-15.12.1.tar.xz";
+      sha256 = "09v0fwwkz7k8dx2rqc18qdrlmzkbmxna0ppxwq4cdhxixyppi0py";
+      name = "granatier-15.12.1.tar.xz";
+    };
+  };
+  gwenview = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/gwenview-15.12.1.tar.xz";
+      sha256 = "1bqcq277h6421rwhqvy8b2dn95h0zqqiskw38xfzrablfmr4ba9h";
+      name = "gwenview-15.12.1.tar.xz";
+    };
+  };
+  jovie = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/jovie-15.12.1.tar.xz";
+      sha256 = "0z6lxvzv92z5hkbin6l7d75l6alnk94l3mhdkfa6p9mfimxvzixy";
+      name = "jovie-15.12.1.tar.xz";
+    };
+  };
+  juk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/juk-15.12.1.tar.xz";
+      sha256 = "1k9js66kmbpc6wyxxgp3z2zx7zhyvdsawy8fra9j76zd2fjyja60";
+      name = "juk-15.12.1.tar.xz";
+    };
+  };
+  kaccessible = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kaccessible-15.12.1.tar.xz";
+      sha256 = "1vjla5wf63h88y738f0p8prqkmzdifl0l6akmjvkasjipy3bcdw6";
+      name = "kaccessible-15.12.1.tar.xz";
+    };
+  };
+  kaccounts-integration = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kaccounts-integration-15.12.1.tar.xz";
+      sha256 = "1q7gjv4jr534q42am40x27kbk2sqs8im800xjw214y3dgw146g6d";
+      name = "kaccounts-integration-15.12.1.tar.xz";
+    };
+  };
+  kaccounts-providers = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kaccounts-providers-15.12.1.tar.xz";
+      sha256 = "1ir7cb3ma8j1jfnjk4m9xx5mj7yj769pblsjz1v6nh6s846ri1fh";
+      name = "kaccounts-providers-15.12.1.tar.xz";
+    };
+  };
+  kajongg = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kajongg-15.12.1.tar.xz";
+      sha256 = "1dzw9dvh3an26i6w8zf319337x7d4iggfgz0v9c46kngh8b9lydx";
+      name = "kajongg-15.12.1.tar.xz";
+    };
+  };
+  kalarmcal = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kalarmcal-15.12.1.tar.xz";
+      sha256 = "1kdbqy6hb19sip49nca05375rjwj2502mq1vmylrqfggbrh277wz";
+      name = "kalarmcal-15.12.1.tar.xz";
+    };
+  };
+  kalgebra = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kalgebra-15.12.1.tar.xz";
+      sha256 = "1f4kqjljw2rwzi82vzfbk7j9h4b9i127lnhklw47vyapllw2jjjc";
+      name = "kalgebra-15.12.1.tar.xz";
+    };
+  };
+  kalzium = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kalzium-15.12.1.tar.xz";
+      sha256 = "00fh91p4rrw7y6qdkg33dqf74c15q4j76b8xp1a6ydcvwjjcp4cv";
+      name = "kalzium-15.12.1.tar.xz";
+    };
+  };
+  kamera = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kamera-15.12.1.tar.xz";
+      sha256 = "01vd2zg2gyzbzcgdk6yd10vndn41wrf4cqg6vk65y0idk2gqjfbi";
+      name = "kamera-15.12.1.tar.xz";
+    };
+  };
+  kanagram = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kanagram-15.12.1.tar.xz";
+      sha256 = "0pifl0qh33cm09m1fl8ma7p4nzd6bw2sisq3aj1x6r2yal48n5l7";
+      name = "kanagram-15.12.1.tar.xz";
+    };
+  };
+  kapman = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kapman-15.12.1.tar.xz";
+      sha256 = "1fygp0v0s4dk6cb30samg63dbzdspx0fmd7shijhx4rdphq6jr5f";
+      name = "kapman-15.12.1.tar.xz";
+    };
+  };
+  kapptemplate = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kapptemplate-15.12.1.tar.xz";
+      sha256 = "045v0gb8gbhsnqk63zvwhmq7nncf6wd8zpbrp1s92sjkyjc7p8rn";
+      name = "kapptemplate-15.12.1.tar.xz";
+    };
+  };
+  kate = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kate-15.12.1.tar.xz";
+      sha256 = "1nwg578z49pswj098awlqblxzj7a5isqg6j9fy28zdg29rzfwchx";
+      name = "kate-15.12.1.tar.xz";
+    };
+  };
+  katomic = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/katomic-15.12.1.tar.xz";
+      sha256 = "1xvqpazmak4xdzg0wlan5ysn0xnpjqfz8c0j5vhsbglhfw8a71d6";
+      name = "katomic-15.12.1.tar.xz";
+    };
+  };
+  kblackbox = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kblackbox-15.12.1.tar.xz";
+      sha256 = "1dgla3c0wd1vl3yx8civn60xv10kab7nkngmclp6kw4v6f4vqk7q";
+      name = "kblackbox-15.12.1.tar.xz";
+    };
+  };
+  kblocks = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kblocks-15.12.1.tar.xz";
+      sha256 = "1zzdwg8bmf28r8yfjw4105j96xja30yq0aqg5cvpp0krmnr3254i";
+      name = "kblocks-15.12.1.tar.xz";
+    };
+  };
+  kblog = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kblog-15.12.1.tar.xz";
+      sha256 = "0yzi0q64szwgrda3x1w6vblfymgaqp3rq61z71fr327n8hngnpq8";
+      name = "kblog-15.12.1.tar.xz";
+    };
+  };
+  kbounce = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kbounce-15.12.1.tar.xz";
+      sha256 = "18z8q2ny5m3fik4q0zi0hkqy3w87qfhbpffp9nd6vrsi3wdj013p";
+      name = "kbounce-15.12.1.tar.xz";
+    };
+  };
+  kbreakout = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kbreakout-15.12.1.tar.xz";
+      sha256 = "02d964h3ay2sr5xk2g2kam80w9pi8ah98k6ld3vx5l5mjs5qffib";
+      name = "kbreakout-15.12.1.tar.xz";
+    };
+  };
+  kbruch = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kbruch-15.12.1.tar.xz";
+      sha256 = "05s8ghmg562za2y7g9vqwdh4jbifz7kjd9fj45j9mjwb5rxdckpr";
+      name = "kbruch-15.12.1.tar.xz";
+    };
+  };
+  kcachegrind = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcachegrind-15.12.1.tar.xz";
+      sha256 = "0v036sc9lmvc00gllyzzvlgbap3m7q2gx4m0c931iaw6sal473q0";
+      name = "kcachegrind-15.12.1.tar.xz";
+    };
+  };
+  kcalc = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcalc-15.12.1.tar.xz";
+      sha256 = "1dgpifj3w26d595gbv6m4r16729i92lkwl6p8hk0l5v5hxx82dkw";
+      name = "kcalc-15.12.1.tar.xz";
+    };
+  };
+  kcalcore = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcalcore-15.12.1.tar.xz";
+      sha256 = "14w47ljak5v5nnbcgilsqc1hxf212vi8vycfxddflvmxzcy6b9c3";
+      name = "kcalcore-15.12.1.tar.xz";
+    };
+  };
+  kcalutils = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcalutils-15.12.1.tar.xz";
+      sha256 = "0p10vvbnn01qnaxgyinyil4dwqfbwgqk7ngkgblfbmfg9h8drwfp";
+      name = "kcalutils-15.12.1.tar.xz";
+    };
+  };
+  kcharselect = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcharselect-15.12.1.tar.xz";
+      sha256 = "1jagbaxs9nfih2wic0i9cgbmz76kwnrscrmcvd0w8jg4w5rnf59d";
+      name = "kcharselect-15.12.1.tar.xz";
+    };
+  };
+  kcolorchooser = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcolorchooser-15.12.1.tar.xz";
+      sha256 = "1djcknlp97zlwvrs9fswg4v188qs2acb7lzw8y9j2p982d0g1idc";
+      name = "kcolorchooser-15.12.1.tar.xz";
+    };
+  };
+  kcontacts = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcontacts-15.12.1.tar.xz";
+      sha256 = "0i6mx1ss19g86j55kj47qvrcvqwp6ax7wyg0ar436aa18digfa96";
+      name = "kcontacts-15.12.1.tar.xz";
+    };
+  };
+  kcron = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kcron-15.12.1.tar.xz";
+      sha256 = "04w3017y3955fj3z76ng28fksyzjbqlw09g6g6b9l8nyi5y1zgm0";
+      name = "kcron-15.12.1.tar.xz";
+    };
+  };
+  kde-baseapps = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-baseapps-15.12.1.tar.xz";
+      sha256 = "0n0g7jjb2kf8h9nr9sc0l5ia796nc2nzlfxnibyvvlp68sj4ffwd";
+      name = "kde-baseapps-15.12.1.tar.xz";
+    };
+  };
+  kdebugsettings = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdebugsettings-15.12.1.tar.xz";
+      sha256 = "1b7w5rnbxg0m4xlrlisd1ipv4w0xl5125m5vxvrqdrcsl647xbk0";
+      name = "kdebugsettings-15.12.1.tar.xz";
+    };
+  };
+  kde-dev-scripts = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-dev-scripts-15.12.1.tar.xz";
+      sha256 = "1d2d1r11xnk3wbxgmnkm8k6azbjxz8gm0mpp37lrx5aq181i8598";
+      name = "kde-dev-scripts-15.12.1.tar.xz";
+    };
+  };
+  kde-dev-utils = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-dev-utils-15.12.1.tar.xz";
+      sha256 = "1igpf4qa502nsz7rxqmv3phrlj58fgjdbamlrz9fz4czlcd4j8fb";
+      name = "kde-dev-utils-15.12.1.tar.xz";
+    };
+  };
+  kdeedu-data = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdeedu-data-15.12.1.tar.xz";
+      sha256 = "0avpy6w5n554hxi2qhsfi8n9m1x9wf3faklqzfj650j1574n17yj";
+      name = "kdeedu-data-15.12.1.tar.xz";
+    };
+  };
+  kdegraphics-mobipocket = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdegraphics-mobipocket-15.12.1.tar.xz";
+      sha256 = "0ya6cli7c0yh7myh00b818qydlm481cnszc39b3557iq43qrxd89";
+      name = "kdegraphics-mobipocket-15.12.1.tar.xz";
+    };
+  };
+  kdegraphics-strigi-analyzer = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdegraphics-strigi-analyzer-15.12.1.tar.xz";
+      sha256 = "1i0sqdyl2fcg7v0q9c7pvk5v4klzsfphv82knapmkpvlddj7mwyz";
+      name = "kdegraphics-strigi-analyzer-15.12.1.tar.xz";
+    };
+  };
+  kdegraphics-thumbnailers = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdegraphics-thumbnailers-15.12.1.tar.xz";
+      sha256 = "03fvrlk6dgj6s6dr3vvhxn9877ay3798kf156hjn9pqx4iypqhz3";
+      name = "kdegraphics-thumbnailers-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ar = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ar-15.12.1.tar.xz";
+      sha256 = "1p417hkkikggy01awyazd1njyq2bs6y1jvspd7ijr3y4w1jia78q";
+      name = "kde-l10n-ar-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-bg = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-bg-15.12.1.tar.xz";
+      sha256 = "1l2s8h2rpyp71xs8jkww6s5zi58xxizf38k5xh4jrvx9vias4cl8";
+      name = "kde-l10n-bg-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-bs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-bs-15.12.1.tar.xz";
+      sha256 = "10a5680bl5w30ynndf019627l235bx2v5bi5yyx27l7ki3infs86";
+      name = "kde-l10n-bs-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ca = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ca-15.12.1.tar.xz";
+      sha256 = "1841vmsf1iya41zwkcpgmcs2agc825l8mjbpmvpa5d5xyh9nsyp3";
+      name = "kde-l10n-ca-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ca_valencia = {
+    version = "ca_valencia-15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ca@valencia-15.12.1.tar.xz";
+      sha256 = "0yz30y1khvsng166wkq49kr17vv8y67n3cns5y6zrnq6wb7zplri";
+      name = "kde-l10n-ca_valencia-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-cs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-cs-15.12.1.tar.xz";
+      sha256 = "1vvi8mlj3sxwvpbz5fp2yhkzm1933nfmmhhfklpj264dynw6jxzm";
+      name = "kde-l10n-cs-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-da = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-da-15.12.1.tar.xz";
+      sha256 = "00vy9if529za7iybb8i7xxdazd8f4y9kiy1yjpgky39yhsjp65bw";
+      name = "kde-l10n-da-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-de = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-de-15.12.1.tar.xz";
+      sha256 = "0s9ibm1sjw1xa4gx36g0midy2wvc8baixaq7ldv23a56gr9ls37a";
+      name = "kde-l10n-de-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-el = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-el-15.12.1.tar.xz";
+      sha256 = "16xfri6pv01vvxh47h0an2gy9hd38l0lvnmvq33kf60424p20iy9";
+      name = "kde-l10n-el-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-en_GB = {
+    version = "en_GB-15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-en_GB-15.12.1.tar.xz";
+      sha256 = "170hd2g8a7dafsjr35lkpc9wwiwj0gsg0bmrir3dmqjw78fkfrjw";
+      name = "kde-l10n-en_GB-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-eo = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-eo-15.12.1.tar.xz";
+      sha256 = "0jrhrr4rxz9qfapx2gvw8i7q17fc4zzp45q1scz0h7cvnmw087ac";
+      name = "kde-l10n-eo-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-es = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-es-15.12.1.tar.xz";
+      sha256 = "1f54wg365mqbcgf93rs6lay78ac9zijff0kszylzjm1k2a2vl5wj";
+      name = "kde-l10n-es-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-et = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-et-15.12.1.tar.xz";
+      sha256 = "0arrgznymzv4vfc97g40b51z3szbg7y4k1nncl01w0758szrp6c0";
+      name = "kde-l10n-et-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-eu = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-eu-15.12.1.tar.xz";
+      sha256 = "15dpm0isgh8645qwqw5mza295hb8ls6lp2pnil1iy2lpcmsr53cr";
+      name = "kde-l10n-eu-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-fa = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-fa-15.12.1.tar.xz";
+      sha256 = "1867bxi0bvy5dgig41z4gwghnkjgy43h4i5w65al8djf0haqyr52";
+      name = "kde-l10n-fa-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-fi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-fi-15.12.1.tar.xz";
+      sha256 = "1028psgc58wk5lp245jk905w54m654pmwkfj24g06jxas65pglrd";
+      name = "kde-l10n-fi-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-fr = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-fr-15.12.1.tar.xz";
+      sha256 = "0hi3dzd07ns8hrm7rv6hxx1b6idwmgvr3jgdmzs2883gkjivv6g8";
+      name = "kde-l10n-fr-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ga = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ga-15.12.1.tar.xz";
+      sha256 = "1gq7j053c3lv30pmf0q2xlsazyl21jgpcr0kfmza6yrg5cxaivjb";
+      name = "kde-l10n-ga-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-gl = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-gl-15.12.1.tar.xz";
+      sha256 = "1pmizbmfqi95lcwbka5h87f015p3ml1vf59npkchfq6v7iv45zxf";
+      name = "kde-l10n-gl-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-he = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-he-15.12.1.tar.xz";
+      sha256 = "1kyf48hpj42hzc75r1s1js730n0gw94ldcrap3ypd1vjzg67f6wn";
+      name = "kde-l10n-he-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-hi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-hi-15.12.1.tar.xz";
+      sha256 = "0rarsx7y0plr1l0vh5nx4dm9xdq69wr3szcdcvlxx1xdx0f2xyxk";
+      name = "kde-l10n-hi-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-hr = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-hr-15.12.1.tar.xz";
+      sha256 = "15gxrrla5gwvwsx5ncf97naj9p09x3g03jbxkpzjf2vn4xgkq7wf";
+      name = "kde-l10n-hr-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-hu = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-hu-15.12.1.tar.xz";
+      sha256 = "15cw97fjcbqn6n6h03mldf40vjsmzzjwgb63z0qlcg5s87yl8lik";
+      name = "kde-l10n-hu-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ia = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ia-15.12.1.tar.xz";
+      sha256 = "1ab7pivq4xbzvjwq18rnw1c7lyaz0yyhfqkkw0w31qdvh8zx91xg";
+      name = "kde-l10n-ia-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-id = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-id-15.12.1.tar.xz";
+      sha256 = "1w7s7m7p4mia0q9x32rcmdszsz0x7zw210pssw1zk3vh9dc29f1j";
+      name = "kde-l10n-id-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-is = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-is-15.12.1.tar.xz";
+      sha256 = "0w1b8fsw3q6ry63bs27s7rbv9q5cps3kd5rd4bhkja0v950p2lfg";
+      name = "kde-l10n-is-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-it = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-it-15.12.1.tar.xz";
+      sha256 = "03cal5i75540q6vk8ln32lfg93s1hy02qnnajggm96ncpmlw1fp4";
+      name = "kde-l10n-it-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ja = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ja-15.12.1.tar.xz";
+      sha256 = "1d8p2pvz5h9mr0agbazggjd363h4ggmxs35lfkc41sw2ka8wc7zk";
+      name = "kde-l10n-ja-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-kk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-kk-15.12.1.tar.xz";
+      sha256 = "06pr04sq9szkgvgrj0saiwc5axqv09sz48alz97qvhprfi63k7gm";
+      name = "kde-l10n-kk-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-km = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-km-15.12.1.tar.xz";
+      sha256 = "1j0jf01j12y1jsyx8n47nz5wjwk545z6wn3hp8shkf3gfrda6x8h";
+      name = "kde-l10n-km-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ko = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ko-15.12.1.tar.xz";
+      sha256 = "08hknapyy10205h71zapj3n5k46gqjjfd7acpqz85ff92l0iryxd";
+      name = "kde-l10n-ko-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-lt = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-lt-15.12.1.tar.xz";
+      sha256 = "0l844nsr0najfhfbqzwhi4pvagir9fvq2gx2p1xkfk06m1ki1krw";
+      name = "kde-l10n-lt-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-lv = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-lv-15.12.1.tar.xz";
+      sha256 = "09pnn4m70655pn9ycqpmxlich8pih5j0kgqa64r3ip2gsw4gx5js";
+      name = "kde-l10n-lv-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-mr = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-mr-15.12.1.tar.xz";
+      sha256 = "1nqvacfyar88zgq1h836r6amm56qk8whr4xh7q571969qmcbz8mc";
+      name = "kde-l10n-mr-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-nb = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-nb-15.12.1.tar.xz";
+      sha256 = "0h9w9ya8ridprsav2ypn1rl92gdkx7cdnzjhjfyb028c6mrzx2xl";
+      name = "kde-l10n-nb-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-nds = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-nds-15.12.1.tar.xz";
+      sha256 = "0xj644sdicdqg4f5qvvmb3gzdw46rcma1bz2wr19prismswm61q4";
+      name = "kde-l10n-nds-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-nl = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-nl-15.12.1.tar.xz";
+      sha256 = "00wimacv53ggjrccm33mm406yd501c57pkvzdvzzx6ljdq0gz3j1";
+      name = "kde-l10n-nl-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-nn = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-nn-15.12.1.tar.xz";
+      sha256 = "13cb7inz00i0cj9da3zhlbh6mb3rrya4c79ydy2gvwj5p54bdbxy";
+      name = "kde-l10n-nn-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-pa = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-pa-15.12.1.tar.xz";
+      sha256 = "1f58fnmlzgsyfmn9f2lfsla1v0ynpmg4d5x6kk8b92a6ad2an9dc";
+      name = "kde-l10n-pa-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-pl = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-pl-15.12.1.tar.xz";
+      sha256 = "0wfl6sgdbzwbg00c8rqj9i2avi46vdppdjk48w222j9cibf1ifwp";
+      name = "kde-l10n-pl-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-pt = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-pt-15.12.1.tar.xz";
+      sha256 = "0ljxz362ahz1r8hvvh8zliiki3jmsqzx656jn5f6g3c4xjxmmhd9";
+      name = "kde-l10n-pt-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-pt_BR = {
+    version = "pt_BR-15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-pt_BR-15.12.1.tar.xz";
+      sha256 = "072jn9r4sfi62mb5yh6ayisana18da0xrvdf9r2c03rhl1hlqiiq";
+      name = "kde-l10n-pt_BR-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ro = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ro-15.12.1.tar.xz";
+      sha256 = "0pp328zj5v50paf7xgajh2l4mk75hg3am6xyiw7p94fx3m6lnw9g";
+      name = "kde-l10n-ro-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ru = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ru-15.12.1.tar.xz";
+      sha256 = "1sg38y0778ld1cjvvm2zfn8gmav195dak52596lpzklh6ahnp9dc";
+      name = "kde-l10n-ru-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-sk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-sk-15.12.1.tar.xz";
+      sha256 = "16nxrz95x558n5kqvs8q0rdy8lqas0w7zlgr910v92497hsmxmsg";
+      name = "kde-l10n-sk-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-sl = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-sl-15.12.1.tar.xz";
+      sha256 = "128jp5pis4np8734dn8j77xf2h8a8hq041gnjdlfd0yvq61pn9dk";
+      name = "kde-l10n-sl-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-sr = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-sr-15.12.1.tar.xz";
+      sha256 = "0cmchn7niddx48lvjflzvqv0xlbp1fxwr492ldb8vs0l71ifsl6v";
+      name = "kde-l10n-sr-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-sv = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-sv-15.12.1.tar.xz";
+      sha256 = "02sh0z394bd03m0as4n6qdk9mm8yy8z80b2xk9d42f27v6snqr29";
+      name = "kde-l10n-sv-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-tr = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-tr-15.12.1.tar.xz";
+      sha256 = "18rlg2xdif54npfi2dhw2my494pbg089r3wvl6msc17nf0c72w10";
+      name = "kde-l10n-tr-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-ug = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-ug-15.12.1.tar.xz";
+      sha256 = "1dkv3vqa66fvyksqxjdvrm6jmks07dp34934ccx9dm2kqq0nciz9";
+      name = "kde-l10n-ug-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-uk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-uk-15.12.1.tar.xz";
+      sha256 = "15vl45g85f9xncn2dxz527kxig151iddf1pbh57hngdhdirz98cd";
+      name = "kde-l10n-uk-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-wa = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-wa-15.12.1.tar.xz";
+      sha256 = "192rb9hrfw9b525czwc33x2djjg9klm5icdx4l7jp0qsrwzdgr0g";
+      name = "kde-l10n-wa-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-zh_CN = {
+    version = "zh_CN-15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-zh_CN-15.12.1.tar.xz";
+      sha256 = "055prxx6dspsyp3j51a8chmg6fdzl0ncjkhhyr21hlfiwv91fac0";
+      name = "kde-l10n-zh_CN-15.12.1.tar.xz";
+    };
+  };
+  kde-l10n-zh_TW = {
+    version = "zh_TW-15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-l10n/kde-l10n-zh_TW-15.12.1.tar.xz";
+      sha256 = "14kargm5s1vb6ylf7nrnv1s3pbjaplmbi8kr4qrggcyinda4wp74";
+      name = "kde-l10n-zh_TW-15.12.1.tar.xz";
+    };
+  };
+  kdelibs = {
+    version = "4.14.16";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdelibs-4.14.16.tar.xz";
+      sha256 = "1amkwrwjm2v0jd1rl1n0pfi8ahvzaszj03093bmxqllrqhqbkxkv";
+      name = "kdelibs-4.14.16.tar.xz";
+    };
+  };
+  kdenetwork-filesharing = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdenetwork-filesharing-15.12.1.tar.xz";
+      sha256 = "15fj3kk76gg6vk43yiz508cks1l9yazlhmqf7s4q0b9xwmvdahsj";
+      name = "kdenetwork-filesharing-15.12.1.tar.xz";
+    };
+  };
+  kdenetwork-strigi-analyzers = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdenetwork-strigi-analyzers-15.12.1.tar.xz";
+      sha256 = "1nwckiggwrmvsdhyfmhqv1w79zcvzh4s2jyivyprvk418c1qy69b";
+      name = "kdenetwork-strigi-analyzers-15.12.1.tar.xz";
+    };
+  };
+  kdenlive = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdenlive-15.12.1.tar.xz";
+      sha256 = "1j7mpjwis9n99dsyax7swqmx45g9mw46lcn063m0rsdzsh905yrk";
+      name = "kdenlive-15.12.1.tar.xz";
+    };
+  };
+  kdepim = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdepim-15.12.1.tar.xz";
+      sha256 = "0r1l3za5jbdvr4x6hv0d94d8lwa1a5qcg3q83wn1jrb6mlfc1f03";
+      name = "kdepim-15.12.1.tar.xz";
+    };
+  };
+  kdepimlibs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdepimlibs-15.12.1.tar.xz";
+      sha256 = "1f5j4alzmpm4scvn6k4mg9ykdsi0b6r28h2bisq39apn0k6fzadl";
+      name = "kdepimlibs-15.12.1.tar.xz";
+    };
+  };
+  kdepim-runtime = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdepim-runtime-15.12.1.tar.xz";
+      sha256 = "0l6la5jds6byg9ibphlbf8yywgfjyin4w02ik16h3mm01rl5d1mn";
+      name = "kdepim-runtime-15.12.1.tar.xz";
+    };
+  };
+  kde-runtime = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kde-runtime-15.12.1.tar.xz";
+      sha256 = "19arkcj95dysxhanbh0armwimxph3s7ljhvgbzdi7r4glm9aq0kn";
+      name = "kde-runtime-15.12.1.tar.xz";
+    };
+  };
+  kdesdk-kioslaves = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdesdk-kioslaves-15.12.1.tar.xz";
+      sha256 = "198i8cfz194smlhj8rafmkjbgzk1wmiw1gki4mb9vvk1gddgxc65";
+      name = "kdesdk-kioslaves-15.12.1.tar.xz";
+    };
+  };
+  kdesdk-strigi-analyzers = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdesdk-strigi-analyzers-15.12.1.tar.xz";
+      sha256 = "0lcn0b58574kwsg7j5qyf46vjkbvsl7w8y9wi983rd06dhfgql5l";
+      name = "kdesdk-strigi-analyzers-15.12.1.tar.xz";
+    };
+  };
+  kdesdk-thumbnailers = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdesdk-thumbnailers-15.12.1.tar.xz";
+      sha256 = "18fbgwb8bil90arbylw4605xk240g21saaw39zlx203q8bmnm7cm";
+      name = "kdesdk-thumbnailers-15.12.1.tar.xz";
+    };
+  };
+  kdewebdev = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdewebdev-15.12.1.tar.xz";
+      sha256 = "1zmbagi1fqlr2y74hghlbs8y7kbaxx739vjhxxvd8qn4akhgij92";
+      name = "kdewebdev-15.12.1.tar.xz";
+    };
+  };
+  kdf = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdf-15.12.1.tar.xz";
+      sha256 = "0g0b2hqsls8nrwrqj78v6m38h4szsr0hs9bwfbrv63ppjm6a8272";
+      name = "kdf-15.12.1.tar.xz";
+    };
+  };
+  kdiamond = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kdiamond-15.12.1.tar.xz";
+      sha256 = "12xl2h3hcb4c7sm1v9p9cqcflqi30cfqhjj6vjwwb474pjffxfdw";
+      name = "kdiamond-15.12.1.tar.xz";
+    };
+  };
+  kfloppy = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kfloppy-15.12.1.tar.xz";
+      sha256 = "1hrr4rfk63q4r7lbqq6nn96camcm5jq41qnvx6cm4pqqd4a8z6hp";
+      name = "kfloppy-15.12.1.tar.xz";
+    };
+  };
+  kfourinline = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kfourinline-15.12.1.tar.xz";
+      sha256 = "1xj3krs20j3df3mkbav1nmwjaw524kif6g5qp36jipv9f58zw73g";
+      name = "kfourinline-15.12.1.tar.xz";
+    };
+  };
+  kgeography = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kgeography-15.12.1.tar.xz";
+      sha256 = "0rvq9a4l4yjyk2bmlwppjmik3pfkhbxrp9105136n4vskizhrm8h";
+      name = "kgeography-15.12.1.tar.xz";
+    };
+  };
+  kget = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kget-15.12.1.tar.xz";
+      sha256 = "1nqiw64yaz7kw58cldjjwdmlilrg9hxrlqwd2r7d0ip3mid5clkj";
+      name = "kget-15.12.1.tar.xz";
+    };
+  };
+  kgoldrunner = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kgoldrunner-15.12.1.tar.xz";
+      sha256 = "0rlhqvksyi0b79z955d3anagk5p5k4b9nikr8fsb64xzq7pjwn42";
+      name = "kgoldrunner-15.12.1.tar.xz";
+    };
+  };
+  kgpg = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kgpg-15.12.1.tar.xz";
+      sha256 = "1ylns50237qr3af9i66n3v31qm6n1dd64j09smbjy6ij010ja4l3";
+      name = "kgpg-15.12.1.tar.xz";
+    };
+  };
+  khangman = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/khangman-15.12.1.tar.xz";
+      sha256 = "12xkqa8i53km3nwi9kzlclr29hg185pcjmsd6grzkyh3brqz40y2";
+      name = "khangman-15.12.1.tar.xz";
+    };
+  };
+  kholidays = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kholidays-15.12.1.tar.xz";
+      sha256 = "01ycl8j4nsc454wkk7ir5q38j4xlqcq05bgapks04s9lws1582dz";
+      name = "kholidays-15.12.1.tar.xz";
+    };
+  };
+  kidentitymanagement = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kidentitymanagement-15.12.1.tar.xz";
+      sha256 = "12adkn01h5392fqixiap62cql20sijjm23c666kabwdmji98183p";
+      name = "kidentitymanagement-15.12.1.tar.xz";
+    };
+  };
+  kig = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kig-15.12.1.tar.xz";
+      sha256 = "0x3g1ipxrqvd7pxpc2kccv0r4m2qnasarjcxz6ljz3227xzcc5zf";
+      name = "kig-15.12.1.tar.xz";
+    };
+  };
+  kigo = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kigo-15.12.1.tar.xz";
+      sha256 = "0b3ngl9ndgfbbihp1dikii40r8kbpi8yz9s0f4jadp6gqna6xjl5";
+      name = "kigo-15.12.1.tar.xz";
+    };
+  };
+  killbots = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/killbots-15.12.1.tar.xz";
+      sha256 = "1qvy6y4rbapp2y7vd2ammbiqxxqp3dbpyy16fyd7h08639wbrl7f";
+      name = "killbots-15.12.1.tar.xz";
+    };
+  };
+  kimap = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kimap-15.12.1.tar.xz";
+      sha256 = "0q1n8p4h7n5zad0lwaawh5kb5k6z4wzdr8kbpvhlw0dkp8a504ds";
+      name = "kimap-15.12.1.tar.xz";
+    };
+  };
+  kio-extras = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kio-extras-15.12.1.tar.xz";
+      sha256 = "0crl21kq8ya49hhcgfcch4x9xxjakwgs90yv0qp8zj19k12kl8fn";
+      name = "kio-extras-15.12.1.tar.xz";
+    };
+  };
+  kiriki = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kiriki-15.12.1.tar.xz";
+      sha256 = "04zyq7nmdlnskzlw0hn78hpcf8rwjq53d7imnai7gvbxgcv2qf7a";
+      name = "kiriki-15.12.1.tar.xz";
+    };
+  };
+  kiten = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kiten-15.12.1.tar.xz";
+      sha256 = "0wr3zr26y07m911fy6ar4n53fp8b9jvms49i9cf7qwx4dc4a0wvr";
+      name = "kiten-15.12.1.tar.xz";
+    };
+  };
+  kjumpingcube = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kjumpingcube-15.12.1.tar.xz";
+      sha256 = "1xsza01v0c6d1p6ydng1pkqq8g9397x1xbzfzq3fal8l8bf1nnl7";
+      name = "kjumpingcube-15.12.1.tar.xz";
+    };
+  };
+  kldap = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kldap-15.12.1.tar.xz";
+      sha256 = "1dr8pavgr3hrlk0xxvfnsk9p05bzg9rgwzgqw4xci9cx22jmyaxi";
+      name = "kldap-15.12.1.tar.xz";
+    };
+  };
+  klettres = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/klettres-15.12.1.tar.xz";
+      sha256 = "0b1sw7x3miqivryc6bq1qn5gnfm8x8ns5v8qpvq5a2j76ifwkj54";
+      name = "klettres-15.12.1.tar.xz";
+    };
+  };
+  klickety = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/klickety-15.12.1.tar.xz";
+      sha256 = "1cfrn7fvrrvn9s22d8ry1nck6h0hg0l8ccdy6405wjiks9wb5jra";
+      name = "klickety-15.12.1.tar.xz";
+    };
+  };
+  klines = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/klines-15.12.1.tar.xz";
+      sha256 = "1b0plhc79cpxag02ij5zj3ix1hg4rpsnbc272gdy6kzl2862brdd";
+      name = "klines-15.12.1.tar.xz";
+    };
+  };
+  kmag = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmag-15.12.1.tar.xz";
+      sha256 = "1j7vgzpl61b2bm4csh6y9m58451nj0d7sxvjhxbimz0vzv9hh90x";
+      name = "kmag-15.12.1.tar.xz";
+    };
+  };
+  kmahjongg = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmahjongg-15.12.1.tar.xz";
+      sha256 = "1ng2495vrk7czfd1zlmij1qch6ir3vm2dfm63y8vnyf1dj39g1z3";
+      name = "kmahjongg-15.12.1.tar.xz";
+    };
+  };
+  kmailtransport = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmailtransport-15.12.1.tar.xz";
+      sha256 = "04c9pq16aaf1fmyy25jlnq2wcsninbr19j7ygaaiqm2scj2mikk3";
+      name = "kmailtransport-15.12.1.tar.xz";
+    };
+  };
+  kmbox = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmbox-15.12.1.tar.xz";
+      sha256 = "17ri9ay28v7f8yar8a33gx2wm99shby8bi9pj0sflxnzvawnlrwq";
+      name = "kmbox-15.12.1.tar.xz";
+    };
+  };
+  kmime = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmime-15.12.1.tar.xz";
+      sha256 = "0r5scbsq21zhxs6c2lj0ay6sizrkyfczzjrnyv15izxh18jm7h7d";
+      name = "kmime-15.12.1.tar.xz";
+    };
+  };
+  kmines = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmines-15.12.1.tar.xz";
+      sha256 = "0za53gh6v74c2rwmm2f084z80w9gqrdx5g6zqdlxwiml8m9ybzq1";
+      name = "kmines-15.12.1.tar.xz";
+    };
+  };
+  kmix = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmix-15.12.1.tar.xz";
+      sha256 = "10vbb5x9hbd124avs68x39zlp7jrqww0gp2avsgvgv8hr7caxwlv";
+      name = "kmix-15.12.1.tar.xz";
+    };
+  };
+  kmousetool = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmousetool-15.12.1.tar.xz";
+      sha256 = "16lr93v2jmj0851afiz63p317fbnfdjavi2f2j49dxd51dayxydl";
+      name = "kmousetool-15.12.1.tar.xz";
+    };
+  };
+  kmouth = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmouth-15.12.1.tar.xz";
+      sha256 = "0hfkmj3gd71fjp3fvqyv2ds42rlrgyzd1g0scrjpaql9d28g5q7f";
+      name = "kmouth-15.12.1.tar.xz";
+    };
+  };
+  kmplot = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kmplot-15.12.1.tar.xz";
+      sha256 = "1bniv6aahgmdh4kqkcvhi34jpd5i6g4q9s1gyjsfi4b65lhvb908";
+      name = "kmplot-15.12.1.tar.xz";
+    };
+  };
+  knavalbattle = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/knavalbattle-15.12.1.tar.xz";
+      sha256 = "1ky6wx26l1dk244py2j59rh1yyyhdv00kv698i44w71g21g0zg2h";
+      name = "knavalbattle-15.12.1.tar.xz";
+    };
+  };
+  knetwalk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/knetwalk-15.12.1.tar.xz";
+      sha256 = "0zxq3rcs62q2q393b5nrf9496h0ahja7rwydgqmim0gywfnq1xk6";
+      name = "knetwalk-15.12.1.tar.xz";
+    };
+  };
+  kolf = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kolf-15.12.1.tar.xz";
+      sha256 = "182196bjz721vxll4d1j6kflrpqnzrx2ws369p2wm7sy72md5d9s";
+      name = "kolf-15.12.1.tar.xz";
+    };
+  };
+  kollision = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kollision-15.12.1.tar.xz";
+      sha256 = "09cf6dkq499wlafdlzvgkvs4vbkz4pws1q2x1w8ayl0qg4d85a5g";
+      name = "kollision-15.12.1.tar.xz";
+    };
+  };
+  kolourpaint = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kolourpaint-15.12.1.tar.xz";
+      sha256 = "1dnzgyd61n09ia4nvzdc94z2w82akv386kqvla85yrjyr11jcr2j";
+      name = "kolourpaint-15.12.1.tar.xz";
+    };
+  };
+  kompare = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kompare-15.12.1.tar.xz";
+      sha256 = "00mibqn1ca09z3i12ic7vkpdr48sh6ry302jmlcbbmx9pfwlnvdv";
+      name = "kompare-15.12.1.tar.xz";
+    };
+  };
+  konquest = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/konquest-15.12.1.tar.xz";
+      sha256 = "1lhfv8l2yn49bdbkh41pjdjin7g1xgy6qh5hcixvh5sizhnax3yd";
+      name = "konquest-15.12.1.tar.xz";
+    };
+  };
+  konsole = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/konsole-15.12.1.tar.xz";
+      sha256 = "0vpaq3081y8x0sybnnkhq6sz6gdpsl73yvzpgnbmshxr34xnn26z";
+      name = "konsole-15.12.1.tar.xz";
+    };
+  };
+  kontactinterface = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kontactinterface-15.12.1.tar.xz";
+      sha256 = "1j95qcfiwbij7l2fwls4wmpsad2mzsrzg82cdfy6wddgl86v1i1n";
+      name = "kontactinterface-15.12.1.tar.xz";
+    };
+  };
+  kopete = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kopete-15.12.1.tar.xz";
+      sha256 = "0cv22hx0xk2yfwbqh7dqhpdsifb63gyjng2k4zbjjgiixhyg82z8";
+      name = "kopete-15.12.1.tar.xz";
+    };
+  };
+  kpat = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kpat-15.12.1.tar.xz";
+      sha256 = "1qjrs2sblwkhb9avrjsximfshabpc0gqznhq6lwwm41i8kql261m";
+      name = "kpat-15.12.1.tar.xz";
+    };
+  };
+  kpimtextedit = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kpimtextedit-15.12.1.tar.xz";
+      sha256 = "1qgr5bcqmlqngi1g2ylxik80pixa5nijj2ii8qvjh7wkbd7m549y";
+      name = "kpimtextedit-15.12.1.tar.xz";
+    };
+  };
+  kppp = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kppp-15.12.1.tar.xz";
+      sha256 = "0v03mp295h184dhx0kps7r1aygmbdyxr7yz2ab8m259pzb6mfv5l";
+      name = "kppp-15.12.1.tar.xz";
+    };
+  };
+  kqtquickcharts = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kqtquickcharts-15.12.1.tar.xz";
+      sha256 = "1vwx3qb8hrwn4r89a9kb8ycvgv43d94zhfi46l0a5msl94k2kigr";
+      name = "kqtquickcharts-15.12.1.tar.xz";
+    };
+  };
+  krdc = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/krdc-15.12.1.tar.xz";
+      sha256 = "1vhxl6h4xjqvckl2zxhfcb633wllj1xx5dv4lwpvpqk2zpihkrli";
+      name = "krdc-15.12.1.tar.xz";
+    };
+  };
+  kremotecontrol = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kremotecontrol-15.12.1.tar.xz";
+      sha256 = "0v59y8ilgyyjl327qf25d21z0gr7ii2p9wd985xj9lcdx2gax811";
+      name = "kremotecontrol-15.12.1.tar.xz";
+    };
+  };
+  kreversi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kreversi-15.12.1.tar.xz";
+      sha256 = "1hlh2ddxg1kcg9pmd0pmw8kwnnvv7jy45sq8dhw1wnfmqxyni5m9";
+      name = "kreversi-15.12.1.tar.xz";
+    };
+  };
+  krfb = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/krfb-15.12.1.tar.xz";
+      sha256 = "1dw7jwny6qqffykdkv1ic0xb4qbn5kymxv3rpy9g0gzwgyphgg3c";
+      name = "krfb-15.12.1.tar.xz";
+    };
+  };
+  kross-interpreters = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kross-interpreters-15.12.1.tar.xz";
+      sha256 = "1lwxk5p5mb4760bwi5b10yqdrbr7vw1g4xq9g8krd9k3nz5gkkqg";
+      name = "kross-interpreters-15.12.1.tar.xz";
+    };
+  };
+  kruler = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kruler-15.12.1.tar.xz";
+      sha256 = "0y7cli4k0hhdrsw1c0mldlrw9nh7smsayik108na5wyd10ps2yyl";
+      name = "kruler-15.12.1.tar.xz";
+    };
+  };
+  ksaneplugin = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksaneplugin-15.12.1.tar.xz";
+      sha256 = "1fs19rs6kkh2vq5kg1i2n1650349qanw03v6wziqnar4ay243grp";
+      name = "ksaneplugin-15.12.1.tar.xz";
+    };
+  };
+  kscd = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kscd-15.12.1.tar.xz";
+      sha256 = "16hzmxgc73p0n154clnyqz5hc3xliqcra37hrsbx2g0mkbm15p8g";
+      name = "kscd-15.12.1.tar.xz";
+    };
+  };
+  kshisen = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kshisen-15.12.1.tar.xz";
+      sha256 = "1kkzpf4dvlfaqs6f5rxabjn0n95nqxadfw1rp6aqxj0v2qb60pcp";
+      name = "kshisen-15.12.1.tar.xz";
+    };
+  };
+  ksirk = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksirk-15.12.1.tar.xz";
+      sha256 = "1hfq7c77y9wia4534j4cwai3xj4xn4nny9mxx6jwj9hfw6yh3lj6";
+      name = "ksirk-15.12.1.tar.xz";
+    };
+  };
+  ksnakeduel = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksnakeduel-15.12.1.tar.xz";
+      sha256 = "0mdfv4slh2nj50jc27p2hslqxzghyv0mvx270wk2b1n53zg079q9";
+      name = "ksnakeduel-15.12.1.tar.xz";
+    };
+  };
+  kspaceduel = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kspaceduel-15.12.1.tar.xz";
+      sha256 = "0wi6zcmgihw42w4hxrcwc5bq3cksgc71m4a53hqs9j3pq1lz1ykr";
+      name = "kspaceduel-15.12.1.tar.xz";
+    };
+  };
+  ksquares = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksquares-15.12.1.tar.xz";
+      sha256 = "0cmls8lpm271m55wflg1cbj88nvqzfawqn27nxfrg313j7n3a04b";
+      name = "ksquares-15.12.1.tar.xz";
+    };
+  };
+  kstars = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kstars-15.12.1.tar.xz";
+      sha256 = "1jfha7s54rcs76kzw2v445k4s0qnkfdfipbylhkd0jd50a5j7wvl";
+      name = "kstars-15.12.1.tar.xz";
+    };
+  };
+  ksudoku = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksudoku-15.12.1.tar.xz";
+      sha256 = "0pm0a3b59wv30pkl50mcaqn37pmq4yjyviy2l62gbvb229sw9cl2";
+      name = "ksudoku-15.12.1.tar.xz";
+    };
+  };
+  ksystemlog = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ksystemlog-15.12.1.tar.xz";
+      sha256 = "0k3bwjmxs0xzxdvmq6s5sm1x84bfglf347f5bxdcfjmv95vp9bq6";
+      name = "ksystemlog-15.12.1.tar.xz";
+    };
+  };
+  kteatime = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kteatime-15.12.1.tar.xz";
+      sha256 = "12fjqq5n6305203b05q1lkwq7a56jynlkwykjai0yfjg2phxwa1c";
+      name = "kteatime-15.12.1.tar.xz";
+    };
+  };
+  ktimer = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktimer-15.12.1.tar.xz";
+      sha256 = "0nwjyd7z6gz45291w50qa356nlbva6mc4qa53z8jl8nqn6c74iwn";
+      name = "ktimer-15.12.1.tar.xz";
+    };
+  };
+  ktnef = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktnef-15.12.1.tar.xz";
+      sha256 = "178r4ql1jyfk40l6s3jwabqvx5i25fzq3kv83csvd7p3y2299xbh";
+      name = "ktnef-15.12.1.tar.xz";
+    };
+  };
+  ktouch = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktouch-15.12.1.tar.xz";
+      sha256 = "1d7nkq060h5wvjxrgsqdjhmilgaaakk48a6qnx4yv5bc0gpd47rl";
+      name = "ktouch-15.12.1.tar.xz";
+    };
+  };
+  ktp-accounts-kcm = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-accounts-kcm-15.12.1.tar.xz";
+      sha256 = "1nfk33cxl278p4a3f3hiwxn25crvc0bvggfsmmkqd5m1iq1y2vid";
+      name = "ktp-accounts-kcm-15.12.1.tar.xz";
+    };
+  };
+  ktp-approver = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-approver-15.12.1.tar.xz";
+      sha256 = "10h40f8hhxv5a50yby728znfsl8w3jhy4cpp3a15bl21y0javb8p";
+      name = "ktp-approver-15.12.1.tar.xz";
+    };
+  };
+  ktp-auth-handler = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-auth-handler-15.12.1.tar.xz";
+      sha256 = "00r0r46vqd4y89djmkdibb566i23nkd0viz7rfp46s35mlwlfylf";
+      name = "ktp-auth-handler-15.12.1.tar.xz";
+    };
+  };
+  ktp-common-internals = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-common-internals-15.12.1.tar.xz";
+      sha256 = "0bswmvzr78amwpcrmsvpr49854rcq6c9d1g475bgwwi9h2qjajqg";
+      name = "ktp-common-internals-15.12.1.tar.xz";
+    };
+  };
+  ktp-contact-list = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-contact-list-15.12.1.tar.xz";
+      sha256 = "1awidixqp12i29bm15vr1c6lf6m5mwqs9yvfczdvhxmq1vkniwxr";
+      name = "ktp-contact-list-15.12.1.tar.xz";
+    };
+  };
+  ktp-contact-runner = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-contact-runner-15.12.1.tar.xz";
+      sha256 = "0b7gj3vandgqyd27rc7cdr61l7f7ph0whq9pggfxcbly7xmhyhh1";
+      name = "ktp-contact-runner-15.12.1.tar.xz";
+    };
+  };
+  ktp-desktop-applets = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-desktop-applets-15.12.1.tar.xz";
+      sha256 = "0h6zw79canpwlnngkn9w7qnz4jch0ksqvn2vw4vfqgy3w91dxxkj";
+      name = "ktp-desktop-applets-15.12.1.tar.xz";
+    };
+  };
+  ktp-filetransfer-handler = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-filetransfer-handler-15.12.1.tar.xz";
+      sha256 = "13mzc2brzfxfpsqya35iyf76mllp7bhs6yjfcy4rhvazdf79p3dm";
+      name = "ktp-filetransfer-handler-15.12.1.tar.xz";
+    };
+  };
+  ktp-kded-module = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-kded-module-15.12.1.tar.xz";
+      sha256 = "1bn22k1ai2bsncim1k55nm0k0k34xkxs2cvvf4f8y4za5s0hsyix";
+      name = "ktp-kded-module-15.12.1.tar.xz";
+    };
+  };
+  ktp-send-file = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-send-file-15.12.1.tar.xz";
+      sha256 = "18l6il6b70bqs9ggjah2yrmbw229k8cjr8gf1kvkckwh1rv3z343";
+      name = "ktp-send-file-15.12.1.tar.xz";
+    };
+  };
+  ktp-text-ui = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktp-text-ui-15.12.1.tar.xz";
+      sha256 = "0ydk503b8gn84jk5l1v061g9zdi79mb5xjpa7lffgqzjippsb5y1";
+      name = "ktp-text-ui-15.12.1.tar.xz";
+    };
+  };
+  ktuberling = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/ktuberling-15.12.1.tar.xz";
+      sha256 = "1rxn6ih2jy36jisaxf8gxs6rnsdbgmbhv0xmczn74vlzfi35izja";
+      name = "ktuberling-15.12.1.tar.xz";
+    };
+  };
+  kturtle = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kturtle-15.12.1.tar.xz";
+      sha256 = "1d3vmkjww7zc0blc0i62jbay3mqgcccnkr6wxfabmcsz8cp062f4";
+      name = "kturtle-15.12.1.tar.xz";
+    };
+  };
+  kubrick = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kubrick-15.12.1.tar.xz";
+      sha256 = "1r2pwrj8hd5vb18m3ad72cfka6kjz9rab0nsk33sp2yg23zwrg2y";
+      name = "kubrick-15.12.1.tar.xz";
+    };
+  };
+  kuser = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kuser-15.12.1.tar.xz";
+      sha256 = "1qg67d6r2ng217r5f36qgqyyvy16bv1pv0xy3i35d1qpq6y7indy";
+      name = "kuser-15.12.1.tar.xz";
+    };
+  };
+  kwalletmanager = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kwalletmanager-15.12.1.tar.xz";
+      sha256 = "09801vnq6c2cq10ywg68fddwbmvly6lyaybdffw27h8cl4qkxy9f";
+      name = "kwalletmanager-15.12.1.tar.xz";
+    };
+  };
+  kwordquiz = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/kwordquiz-15.12.1.tar.xz";
+      sha256 = "1brihl4a488nmi5s1yk4jy8bb1a5l5576j9vldh2ad9y5mqdq68d";
+      name = "kwordquiz-15.12.1.tar.xz";
+    };
+  };
+  libkcddb = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkcddb-15.12.1.tar.xz";
+      sha256 = "0y5jsimz71a8dilb3gwa8xa2r6bgfh3giwqbg0vl5xsnmq5q282k";
+      name = "libkcddb-15.12.1.tar.xz";
+    };
+  };
+  libkcompactdisc = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkcompactdisc-15.12.1.tar.xz";
+      sha256 = "1cmabgzv1lliqlc0yc3y365g5rdvqpjfs8am4179h2mr1vibvx6b";
+      name = "libkcompactdisc-15.12.1.tar.xz";
+    };
+  };
+  libkdcraw = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkdcraw-15.12.1.tar.xz";
+      sha256 = "0gl1a5dk63jmdh7ip8b1z8179daz1hx0w0p2pqgyklaxg883r88v";
+      name = "libkdcraw-15.12.1.tar.xz";
+    };
+  };
+  libkdeedu = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkdeedu-15.12.1.tar.xz";
+      sha256 = "1fp41cx2gsdax8iqx2kw790i8j718q46ss4c5zhxagshnkd3czmz";
+      name = "libkdeedu-15.12.1.tar.xz";
+    };
+  };
+  libkdegames = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkdegames-15.12.1.tar.xz";
+      sha256 = "003ypjiqi3mk00a6iv9d8nf6d4kq7l6nflgwf0d3sq0y4cbkix0m";
+      name = "libkdegames-15.12.1.tar.xz";
+    };
+  };
+  libkeduvocdocument = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkeduvocdocument-15.12.1.tar.xz";
+      sha256 = "0v1ssh4m59kb7b82r06fwgb0cmj9xm5yy9vcrmhs1167l1s8vr6w";
+      name = "libkeduvocdocument-15.12.1.tar.xz";
+    };
+  };
+  libkexiv2 = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkexiv2-15.12.1.tar.xz";
+      sha256 = "1z4z77psaiqwh62spsvqpkd21agsfjjrpaiiqdaxinsimw5pagb0";
+      name = "libkexiv2-15.12.1.tar.xz";
+    };
+  };
+  libkface = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkface-15.12.1.tar.xz";
+      sha256 = "0x6pz72vxmrsncc0kkwdaci9i9nxkdqkdklwlg7q4wbn8kxxa8n6";
+      name = "libkface-15.12.1.tar.xz";
+    };
+  };
+  libkgeomap = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkgeomap-15.12.1.tar.xz";
+      sha256 = "127flkwgkmcdkd40ccrvxmyq2nzb1jshpj79pjyhwirh9iqbw773";
+      name = "libkgeomap-15.12.1.tar.xz";
+    };
+  };
+  libkipi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkipi-15.12.1.tar.xz";
+      sha256 = "0x14adzkla7cpiwbs75n87x5gb8ifcby1zkw2f2i69g6w9x8nnps";
+      name = "libkipi-15.12.1.tar.xz";
+    };
+  };
+  libkmahjongg = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkmahjongg-15.12.1.tar.xz";
+      sha256 = "1q04c91j78hzk5x7iiwxkn2is3c5cy7wca1wmxlbqbw3q3zc5jlh";
+      name = "libkmahjongg-15.12.1.tar.xz";
+    };
+  };
+  libkomparediff2 = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libkomparediff2-15.12.1.tar.xz";
+      sha256 = "0vkndb5l5lv50id8fik6zbg0ph5mv0kmcxz6ywh2i6mh3nf5h0m2";
+      name = "libkomparediff2-15.12.1.tar.xz";
+    };
+  };
+  libksane = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/libksane-15.12.1.tar.xz";
+      sha256 = "112w0hpnq4rzp40rq68wjdkx0w2p06z1chxribgh032wh09j21by";
+      name = "libksane-15.12.1.tar.xz";
+    };
+  };
+  lokalize = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/lokalize-15.12.1.tar.xz";
+      sha256 = "0ldmw4rgli64dq4xllxbrgvc8wz52a5xhmbcb7m31yr7vpsav533";
+      name = "lokalize-15.12.1.tar.xz";
+    };
+  };
+  lskat = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/lskat-15.12.1.tar.xz";
+      sha256 = "116vfahyh65bhfp8z5ay2xj8gb7s935d3cbd4f9ppidva493lpvp";
+      name = "lskat-15.12.1.tar.xz";
+    };
+  };
+  marble = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/marble-15.12.1.tar.xz";
+      sha256 = "15zybdm28a0q3nanv43y5g3xbl2gpi19fdx1smslypkz33srfwlm";
+      name = "marble-15.12.1.tar.xz";
+    };
+  };
+  mplayerthumbs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/mplayerthumbs-15.12.1.tar.xz";
+      sha256 = "16wgsg3s0a0mcn1p3ixy8xw8qci082qq415hcy4vr1ycbxzypcd0";
+      name = "mplayerthumbs-15.12.1.tar.xz";
+    };
+  };
+  okteta = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/okteta-15.12.1.tar.xz";
+      sha256 = "1fzk1qlsxw5mkvk5sbzaxs902waagf9i8rggis00c6cpgd2il75q";
+      name = "okteta-15.12.1.tar.xz";
+    };
+  };
+  okular = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/okular-15.12.1.tar.xz";
+      sha256 = "17d2xhwdlqf2jcx34hh0l7gj3n3lpidv9wha8xp2vww8hibmdmn3";
+      name = "okular-15.12.1.tar.xz";
+    };
+  };
+  palapeli = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/palapeli-15.12.1.tar.xz";
+      sha256 = "1kq06xi6d6f47chzzcknr1v1jd3pajzg7s45zc78sfwvq1lkcwpj";
+      name = "palapeli-15.12.1.tar.xz";
+    };
+  };
+  parley = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/parley-15.12.1.tar.xz";
+      sha256 = "1imkxanm5nzjkvgyskj3bcnn7rz7hwggspg3iyq75vmrqvmnd17y";
+      name = "parley-15.12.1.tar.xz";
+    };
+  };
+  picmi = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/picmi-15.12.1.tar.xz";
+      sha256 = "0ka8ksq2v7j313i0iki07d2rn6d0ga7qi5zmwvz0c7c0yk1ndpd0";
+      name = "picmi-15.12.1.tar.xz";
+    };
+  };
+  poxml = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/poxml-15.12.1.tar.xz";
+      sha256 = "08qyhw1x4lf5lgbi55cdvvlizbfjjrg2xncgnnvcc2xvs0vbsdrx";
+      name = "poxml-15.12.1.tar.xz";
+    };
+  };
+  print-manager = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/print-manager-15.12.1.tar.xz";
+      sha256 = "0n11ras6zk68zb901jwg5dkay04cl4qwplh57yvcvkaqzp7dx29h";
+      name = "print-manager-15.12.1.tar.xz";
+    };
+  };
+  rocs = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/rocs-15.12.1.tar.xz";
+      sha256 = "1car9wdw3jrnczcws8hp15nky6fm04asqh6z64v1x46xpgqq15s8";
+      name = "rocs-15.12.1.tar.xz";
+    };
+  };
+  signon-kwallet-extension = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/signon-kwallet-extension-15.12.1.tar.xz";
+      sha256 = "1s96924sahamdiw6gs42c7f6fmxacccy0x7a7vcm25jrdw2y8rny";
+      name = "signon-kwallet-extension-15.12.1.tar.xz";
+    };
+  };
+  spectacle = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/spectacle-15.12.1.tar.xz";
+      sha256 = "0ikv29g85fzk4k84a3p56krsabg92na1kc3r1dvg6vmhprr5ar0y";
+      name = "spectacle-15.12.1.tar.xz";
+    };
+  };
+  step = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/step-15.12.1.tar.xz";
+      sha256 = "0g85cwr4ixh254i75af0pvqs6rp9zmzifnn8757dmqb0z0l31l9r";
+      name = "step-15.12.1.tar.xz";
+    };
+  };
+  svgpart = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/svgpart-15.12.1.tar.xz";
+      sha256 = "1l86kvgrjbhyqaldw3cdm483lc1j9lrf8rif059qnq20r35llfp0";
+      name = "svgpart-15.12.1.tar.xz";
+    };
+  };
+  sweeper = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/sweeper-15.12.1.tar.xz";
+      sha256 = "1ykk3msicf71p3p9y6135hdrv3szjfv9khb0bl2nzqg2i28psdad";
+      name = "sweeper-15.12.1.tar.xz";
+    };
+  };
+  syndication = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/syndication-15.12.1.tar.xz";
+      sha256 = "1kq97rid82dv70ii4imh6aq1bwc2i0x7yzw95g855khxbd485a1m";
+      name = "syndication-15.12.1.tar.xz";
+    };
+  };
+  umbrello = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/umbrello-15.12.1.tar.xz";
+      sha256 = "1qxqkqvkp19vj8zkl39cwn077sncl3wqkgv0a1a16cdxhhvfbf23";
+      name = "umbrello-15.12.1.tar.xz";
+    };
+  };
+  zeroconf-ioslave = {
+    version = "15.12.1";
+    src = fetchurl {
+      url = "${mirror}/stable/applications/15.12.1/src/zeroconf-ioslave-15.12.1.tar.xz";
+      sha256 = "0q9q1vj62h3lw0451csg4sa2cgm9h5r9jxbgn8yg4xa31vx1cw03";
+      name = "zeroconf-ioslave-15.12.1.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/attica.nix b/pkgs/desktops/kde-5/frameworks-5.19/attica.nix
new file mode 100644
index 000000000000..98721876c120
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/baloo.nix b/pkgs/desktops/kde-5/frameworks-5.19/baloo.nix
new file mode 100644
index 000000000000..38c41d9271d8
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/bluez-qt.nix b/pkgs/desktops/kde-5/frameworks-5.19/bluez-qt.nix
new file mode 100644
index 000000000000..f981b0516f72
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/breeze-icons.nix b/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix
new file mode 100644
index 000000000000..44cc99daf261
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/breeze-icons.nix
@@ -0,0 +1,10 @@
+{ kdeFramework
+, extra-cmake-modules
+, qtsvg
+}:
+
+kdeFramework {
+  name = "breeze-icons";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtsvg ];
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/default.nix
new file mode 100644
index 000000000000..bb96048d6ff5
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/default.nix
@@ -0,0 +1,114 @@
+# 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; };
+
+  packages = self: with self; {
+    kdeFramework = args:
+      let
+        inherit (args) name;
+        inherit (srcs."${name}") src version;
+      in stdenv.mkDerivation (args // {
+        name = "${name}-${version}";
+        inherit src;
+
+        outputs = args.outputs or [ "dev" "out" ];
+
+        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 {});
+      });
+
+    attica = callPackage ./attica.nix {};
+    baloo = callPackage ./baloo.nix {};
+    bluez-qt = callPackage ./bluez-qt.nix {};
+    breeze-icons = callPackage ./breeze-icons.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 {};
+    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 {};
+    kglobalaccel = callPackage ./kglobalaccel.nix {};
+    kguiaddons = callPackage ./kguiaddons.nix {};
+    khtml = callPackage ./khtml.nix {};
+    ki18n = callPackage ./ki18n.nix {};
+    kiconthemes = callPackage ./kiconthemes {};
+    kidletime = callPackage ./kidletime.nix {};
+    kimageformats = callPackage ./kimageformats.nix {};
+    kinit = callPackage ./kinit {};
+    kio = callPackage ./kio {};
+    kitemmodels = callPackage ./kitemmodels.nix {};
+    kitemviews = callPackage ./kitemviews.nix {};
+    kjobwidgets = callPackage ./kjobwidgets.nix {};
+    kjs = callPackage ./kjs.nix {};
+    kjsembed = callPackage ./kjsembed.nix {};
+    kmediaplayer = callPackage ./kmediaplayer.nix {};
+    knewstuff = callPackage ./knewstuff.nix {};
+    knotifications = callPackage ./knotifications.nix {};
+    knotifyconfig = callPackage ./knotifyconfig.nix {};
+    kpackage = callPackage ./kpackage {};
+    kparts = callPackage ./kparts.nix {};
+    kpeople = callPackage ./kpeople.nix {};
+    kplotting = callPackage ./kplotting.nix {};
+    kpty = callPackage ./kpty.nix {};
+    kross = callPackage ./kross.nix {};
+    krunner = callPackage ./krunner.nix {};
+    kservice = callPackage ./kservice {};
+    ktexteditor = callPackage ./ktexteditor {};
+    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 {};
+  };
+
+in packages
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix
new file mode 100644
index 000000000000..1c2ea70442d3
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/default.nix
@@ -0,0 +1,20 @@
+{ kdeFramework, lib, copyPathsToStore, cmake, pkgconfig, qttools }:
+
+kdeFramework {
+  name = "extra-cmake-modules";
+
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  outputs = [ "out" ];  # this package has no runtime components
+  setupHook = ./setup-hook.sh;
+
+  # It is OK to propagate these inputs as long as
+  # extra-cmake-modules is never a propagated input
+  # of some other derivation.
+  propagatedNativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  meta = with lib; {
+    license = licenses.bsd2;
+    maintainers = [ maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch
new file mode 100644
index 000000000000..a74340a6dc96
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/nix-lib-path.patch
@@ -0,0 +1,37 @@
+Index: extra-cmake-modules-5.18.0/kde-modules/KDEInstallDirs.cmake
+===================================================================
+--- extra-cmake-modules-5.18.0.orig/kde-modules/KDEInstallDirs.cmake
++++ extra-cmake-modules-5.18.0/kde-modules/KDEInstallDirs.cmake
+@@ -200,32 +200,6 @@
+ # GNUInstallDirs code deals with re-configuring, but that is dealt with
+ # by the _define_* macros in this module).
+ set(_LIBDIR_DEFAULT "lib")
+-# Override this default 'lib' with 'lib64' iff:
+-#  - we are on a Linux, kFreeBSD or Hurd system but NOT cross-compiling
+-#  - we are NOT on debian
+-#  - we are on a 64 bits system
+-# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+-# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+-# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+-# See http://wiki.debian.org/Multiarch
+-if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
+-   AND NOT CMAKE_CROSSCOMPILING)
+-  if (EXISTS "/etc/debian_version") # is this a debian system ?
+-    if(CMAKE_LIBRARY_ARCHITECTURE)
+-      set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+-    endif()
+-  else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
+-    if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+-      message(AUTHOR_WARNING
+-        "Unable to determine default LIB_INSTALL_LIBDIR directory because no target architecture is known. "
+-        "Please enable at least one language before including KDEInstallDirs.")
+-    else()
+-      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+-        set(_LIBDIR_DEFAULT "lib64")
+-      endif()
+-    endif()
+-  endif()
+-endif()
+ 
+ set(_gnu_install_dirs_vars
+     BINDIR
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series
new file mode 100644
index 000000000000..b4569e50a5f7
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/series
@@ -0,0 +1 @@
+nix-lib-path.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh
new file mode 100644
index 000000000000..56ed09f4ea59
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/extra-cmake-modules/setup-hook.sh
@@ -0,0 +1,81 @@
+_ecmSetXdgDirs() {
+    addToSearchPathOnce XDG_DATA_DIRS "$1/share"
+    addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg"
+    addToSearchPathOnce NIX_WRAP_XDG_CONFIG_DIRS "$1/etc/xdg"
+}
+
+_ecmPropagateSharedData() {
+    local sharedPaths=( \
+        "config.cfg" \
+        "doc" \
+        "kconf_update" \
+        "kservices5" \
+        "kservicetypes5" \
+        "kxmlgui5" \
+        "knotifications5" \
+        "icons" \
+        "sounds" \
+        "templates" \
+        "wallpapers" \
+        "applications" \
+        "desktop-directories" \
+        "mime" \
+        "info" \
+        "dbus-1" \
+        "interfaces" \
+        "services" \
+        "system-services" )
+    for dir in ${sharedPaths[@]}; do
+        if [ -d "$1/share/$dir" ]; then
+            addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share"
+            propagateOnce propagatedUserEnvPkgs "$1"
+            break
+        fi
+    done
+}
+
+_ecmConfig() {
+    # Because we need to use absolute paths here, we must set *all* the paths.
+    cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}"
+    cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
+    cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
+    cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib"
+    cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/lib/libexec"
+    cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
+    cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputLib}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputLib}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputLib}/lib/qt5/imports"
+    cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputLib}/lib/qt5/qml"
+    cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
+    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputLib}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputLib}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputLib}/share/doc/HTML"
+    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputLib}/share/config.kcfg"
+    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputLib}/share/kconf_update"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputLib}/share/kservices5"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputLib}/share/kservicetypes5"
+    cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputLib}/share/kxmlgui5"
+    cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputLib}/share/knotifications5"
+    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputLib}/share/icons"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
+    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputLib}/share/sounds"
+    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputLib}/share/templates"
+    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputLib}/share/wallpapers"
+    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputLib}/share/applications"
+    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputLib}/share/desktop-directories"
+    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputLib}/share/mime/packages"
+    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputLib}/share/appdata"
+    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputLib}/share/man"
+    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputLib}/share/info"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputLib}/share/dbus-1"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputLib}/share/dbus-1/interfaces"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputLib}/share/dbus-1/services"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputLib}/share/dbus-1/system-services"
+    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputLib}/etc"
+    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputLib}/etc/xdg"
+    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputLib}/etc/xdg/autostart"
+}
+
+envHooks+=(_ecmSetXdgDirs _ecmPropagateSharedData)
+preConfigureHooks+=(_ecmConfig)
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/fetchsrcs.sh b/pkgs/desktops/kde-5/frameworks-5.19/fetchsrcs.sh
new file mode 100755
index 000000000000..7937e6f8bed9
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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.19/"
+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/kde-5/frameworks-5.19/frameworkintegration.nix b/pkgs/desktops/kde-5/frameworks-5.19/frameworkintegration.nix
new file mode 100644
index 000000000000..26987c385ad5
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kactivities.nix b/pkgs/desktops/kde-5/frameworks-5.19/kactivities.nix
new file mode 100644
index 000000000000..3225098f4398
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kapidox.nix b/pkgs/desktops/kde-5/frameworks-5.19/kapidox.nix
new file mode 100644
index 000000000000..647be8f052c3
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/karchive.nix b/pkgs/desktops/kde-5/frameworks-5.19/karchive.nix
new file mode 100644
index 000000000000..a8d9a0003c3b
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch
new file mode 100644
index 000000000000..c66f5ecd008f
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/cmake-install-paths.patch
@@ -0,0 +1,17 @@
+Index: kauth-5.18.0/KF5AuthConfig.cmake.in
+===================================================================
+--- kauth-5.18.0.orig/KF5AuthConfig.cmake.in
++++ kauth-5.18.0/KF5AuthConfig.cmake.in
+@@ -4,9 +4,9 @@ set(KAUTH_STUB_FILES_DIR "@PACKAGE_KDE_I
+ 
+ set(KAUTH_BACKEND_NAME "@KAUTH_BACKEND_NAME@")
+ set(KAUTH_HELPER_BACKEND_NAME "@KAUTH_HELPER_BACKEND_NAME@")
+-set(KAUTH_POLICY_FILES_INSTALL_DIR "@KAUTH_POLICY_FILES_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
++set(KAUTH_POLICY_FILES_INSTALL_DIR "${KDE_INSTALL_DATADIR}/polkit-1/actions")
++set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}")
++set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${KDE_INSTALL_LIBEXECDIR}")
+ 
+ find_dependency(KF5CoreAddons "@KF5_DEP_VERSION@")
+ 
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix
new file mode 100644
index 000000000000..1352d8c5821f
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/default.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, copyPathsToStore
+, extra-cmake-modules
+, kcoreaddons
+, polkit-qt
+}:
+
+kdeFramework {
+  name = "kauth";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ polkit-qt ];
+  propagatedBuildInputs = [ kcoreaddons ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kauth/series b/pkgs/desktops/kde-5/frameworks-5.19/kauth/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kauth/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kbookmarks.nix b/pkgs/desktops/kde-5/frameworks-5.19/kbookmarks.nix
new file mode 100644
index 000000000000..1a469ab4db6d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kcmutils/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/frameworks-5.19/kcmutils/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..0d861fa95012
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kcmutils/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kcmutils/default.nix
new file mode 100644
index 000000000000..dbbb783ac615
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kcodecs.nix b/pkgs/desktops/kde-5/frameworks-5.19/kcodecs.nix
new file mode 100644
index 000000000000..53a69a69b69c
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kcompletion.nix b/pkgs/desktops/kde-5/frameworks-5.19/kcompletion.nix
new file mode 100644
index 000000000000..e393774f16a5
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kconfig.nix b/pkgs/desktops/kde-5/frameworks-5.19/kconfig.nix
new file mode 100644
index 000000000000..e132afe59886
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/frameworks-5.19/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..7a6c0ee90534
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kconfigwidgets/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kconfigwidgets/default.nix
new file mode 100644
index 000000000000..0e14d06edd36
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kcoreaddons.nix b/pkgs/desktops/kde-5/frameworks-5.19/kcoreaddons.nix
new file mode 100644
index 000000000000..f3a1db7bd484
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kcoreaddons.nix
@@ -0,0 +1,16 @@
+{ kdeFramework, lib, makeQtWrapper
+, extra-cmake-modules
+, shared_mime_info
+}:
+
+kdeFramework {
+  name = "kcoreaddons";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [ shared_mime_info ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/desktoptojson"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kcrash.nix b/pkgs/desktops/kde-5/frameworks-5.19/kcrash.nix
new file mode 100644
index 000000000000..bbab78ccb409
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdbusaddons.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdbusaddons.nix
new file mode 100644
index 000000000000..d2ceab31d14b
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdeclarative.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdeclarative.nix
new file mode 100644
index 000000000000..74d107466cfc
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kded.nix b/pkgs/desktops/kde-5/frameworks-5.19/kded.nix
new file mode 100644
index 000000000000..47ae2d68c68e
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix
new file mode 100644
index 000000000000..843db83a99b2
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/default.nix
@@ -0,0 +1,36 @@
+{ kdeFramework, lib, copyPathsToStore
+, extra-cmake-modules, docbook_xml_dtd_45, kauth
+, karchive, kcompletion, kconfig, kconfigwidgets, kcoreaddons
+, kcrash, kdbusaddons, kded, kdesignerplugin, kdoctools, kemoticons
+, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kitemmodels
+, kinit, knotifications, kparts, kservice, ktextwidgets
+, kunitconversion, kwidgetsaddons, kwindowsystem, kxmlgui
+, networkmanager, qtsvg, qtx11extras, xlibs
+}:
+
+# TODO: debug docbook detection
+
+kdeFramework {
+  name = "kdelibs4support";
+  outputs = [ "dev" "out" ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kded kservice kwidgetsaddons
+    kxmlgui networkmanager qtsvg qtx11extras xlibs.libSM
+  ];
+  propagatedBuildInputs = [
+    kauth karchive kconfigwidgets kcoreaddons kcrash kdbusaddons
+    kdesignerplugin kemoticons kglobalaccel kguiaddons ki18n kio
+    kiconthemes kitemmodels kinit knotifications kparts ktextwidgets
+    kunitconversion kwindowsystem
+  ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXML4_DTD_VERSION=4.5"
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch
new file mode 100644
index 000000000000..eabb70254483
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/nix-kde-include-dir.patch
@@ -0,0 +1,13 @@
+Index: kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+===================================================================
+--- kdelibs4support-5.18.0.orig/src/kdecore/kstandarddirs.cpp
++++ kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+@@ -292,7 +292,7 @@ static QString relativeInstallPath(const
+             return QFile::decodeName(ICON_INSTALL_DIR "/");
+         }
+         if (strcmp("include", type) == 0) {
+-            return QFile::decodeName(INCLUDE_INSTALL_DIR "/");
++            return QFile::decodeName(qgetenv("NIX_KDE_INCLUDE_DIR"));
+         }
+         break;
+     case 'l':
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series
new file mode 100644
index 000000000000..9b08ab208774
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/series
@@ -0,0 +1 @@
+nix-kde-include-dir.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh
new file mode 100644
index 000000000000..21ac2e83b5da
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdelibs4support/setup-hook.sh
@@ -0,0 +1 @@
+export NIX_KDE_INCLUDE_DIR="@dev@/include/"  # trailing slash is required!
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdesignerplugin.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdesignerplugin.nix
new file mode 100644
index 000000000000..cbc114ccca03
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdesignerplugin.nix
@@ -0,0 +1,34 @@
+{ kdeFramework, lib, makeQtWrapper
+, 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 makeQtWrapper ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kcoreaddons kdewebkit
+    kiconthemes kitemviews kplotting ktextwidgets kwidgetsaddons
+    kxmlgui
+  ];
+  propagatedBuildInputs = [ kio sonnet ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kgendesignerplugin"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kdesu.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdesu.nix
new file mode 100644
index 000000000000..364fbd6a720b
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdewebkit.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdewebkit.nix
new file mode 100644
index 000000000000..d361313d1d49
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdnssd.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdnssd.nix
new file mode 100644
index 000000000000..f00432b0c9ce
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kdoctools/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix
new file mode 100644
index 000000000000..f67c19f42395
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/default.nix
@@ -0,0 +1,19 @@
+{ kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45
+, docbook5_xsl, karchive, ki18n, makeQtWrapper, perl, perlPackages
+}:
+
+kdeFramework {
+  name = "kdoctools";
+  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/desktops/kde-5/frameworks-5.19/kdoctools/kdoctools-no-find-docbook-xml.patch b/pkgs/desktops/kde-5/frameworks-5.19/kdoctools/kdoctools-no-find-docbook-xml.patch
new file mode 100644
index 000000000000..4e3a33efab32
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kemoticons.nix b/pkgs/desktops/kde-5/frameworks-5.19/kemoticons.nix
new file mode 100644
index 000000000000..d165f84e3a2d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch
new file mode 100644
index 000000000000..732f7b69c828
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/cmake-install-paths.patch
@@ -0,0 +1,13 @@
+Index: kfilemetadata-5.18.0/src/CMakeLists.txt
+===================================================================
+--- kfilemetadata-5.18.0.orig/src/CMakeLists.txt
++++ kfilemetadata-5.18.0/src/CMakeLists.txt
+@@ -49,7 +49,7 @@ install(TARGETS KF5FileMetaData EXPORT K
+ 
+ install(EXPORT KF5FileMetaDataTargets
+         NAMESPACE KF5::
+-        DESTINATION ${LIB_INSTALL_DIR}/cmake/KF5FileMetaData
++        DESTINATION ${KDE_INSTALL_FULL_CMAKEPACKAGEDIR}/KF5FileMetaData
+         FILE KF5FileMetaDataTargets.cmake)
+ 
+ install(FILES
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix
new file mode 100644
index 000000000000..9bb4831cf8da
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/default.nix
@@ -0,0 +1,14 @@
+{ kdeFramework, lib, copyPathsToStore, extra-cmake-modules
+, attr, ebook_tools, exiv2, ffmpeg, karchive, ki18n, poppler, qtbase, taglib
+}:
+
+kdeFramework {
+  name = "kfilemetadata";
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ attr ebook_tools exiv2 ffmpeg karchive poppler taglib ];
+  propagatedBuildInputs = [ qtbase ki18n ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kfilemetadata/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kglobalaccel.nix b/pkgs/desktops/kde-5/frameworks-5.19/kglobalaccel.nix
new file mode 100644
index 000000000000..c535b3590a38
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kguiaddons.nix b/pkgs/desktops/kde-5/frameworks-5.19/kguiaddons.nix
new file mode 100644
index 000000000000..bc4e9ab11843
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/khtml.nix b/pkgs/desktops/kde-5/frameworks-5.19/khtml.nix
new file mode 100644
index 000000000000..d40df466ebbd
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/ki18n.nix b/pkgs/desktops/kde-5/frameworks-5.19/ki18n.nix
new file mode 100644
index 000000000000..268006512e7c
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/ki18n.nix
@@ -0,0 +1,17 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, gettext
+, python
+, qtdeclarative
+, qtscript
+}:
+
+kdeFramework {
+  name = "ki18n";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtdeclarative qtscript ];
+  propagatedNativeBuildInputs = [ gettext python ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default-theme-breeze.patch b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default-theme-breeze.patch
new file mode 100644
index 000000000000..5b3b15d5d5b5
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default-theme-breeze.patch
@@ -0,0 +1,13 @@
+Index: kiconthemes-5.17.0/src/kicontheme.cpp
+===================================================================
+--- kiconthemes-5.17.0.orig/src/kicontheme.cpp
++++ kiconthemes-5.17.0/src/kicontheme.cpp
+@@ -557,7 +557,7 @@ void KIconTheme::reconfigure()
+ // static
+ QString KIconTheme::defaultThemeName()
+ {
+-    return QStringLiteral("oxygen");
++    return QStringLiteral("breeze");
+ }
+ 
+ void KIconTheme::assignIconsToContextMenu(ContextMenus type,
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default.nix
new file mode 100644
index 000000000000..b78b25582beb
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/default.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib, copyPathsToStore
+, extra-cmake-modules, makeQtWrapper
+, kconfigwidgets, ki18n, breeze-icons, kitemviews, qtsvg
+}:
+
+kdeFramework {
+  name = "kiconthemes";
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  buildInputs = [ kconfigwidgets kitemviews qtsvg ];
+  propagatedBuildInputs = [ breeze-icons ki18n ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kiconfinder5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/series b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/series
new file mode 100644
index 000000000000..ab5cc8a3edb2
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kiconthemes/series
@@ -0,0 +1 @@
+default-theme-breeze.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kidletime.nix b/pkgs/desktops/kde-5/frameworks-5.19/kidletime.nix
new file mode 100644
index 000000000000..fc0865600239
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kimageformats.nix b/pkgs/desktops/kde-5/frameworks-5.19/kimageformats.nix
new file mode 100644
index 000000000000..49d66bbcc2c6
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kinit/0001-kinit-libpath.patch b/pkgs/desktops/kde-5/frameworks-5.19/kinit/0001-kinit-libpath.patch
new file mode 100644
index 000000000000..9c76079a382a
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kinit/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kinit/default.nix
new file mode 100644
index 000000000000..5f644d7c424e
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kio/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kio/default.nix
new file mode 100644
index 000000000000..a2131ff33850
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kio/default.nix
@@ -0,0 +1,33 @@
+{ kdeFramework, lib, copyPathsToStore
+, 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";
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  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"
+    wrapQtProgram "$out/bin/protocoltojson"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kio/samba-search-path.patch b/pkgs/desktops/kde-5/frameworks-5.19/kio/samba-search-path.patch
new file mode 100644
index 000000000000..c9ad46b41bb7
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kio/samba-search-path.patch
@@ -0,0 +1,28 @@
+Index: kio-5.17.0/src/core/ksambashare.cpp
+===================================================================
+--- kio-5.17.0.orig/src/core/ksambashare.cpp
++++ kio-5.17.0/src/core/ksambashare.cpp
+@@ -67,13 +67,18 @@ KSambaSharePrivate::~KSambaSharePrivate(
+ 
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+-    if (QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-            || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))) {
+-        return true;
++    const QByteArray pathEnv = qgetenv("PATH");
++    if (!pathEnv.isEmpty()) {
++        QLatin1Char pathSep(':');
++        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
++        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
++            it->append("/smbd");
++            if (QFile::exists(*it)) {
++                return true;
++            }
++        }
+     }
+ 
+-    //qDebug() << "Samba is not installed!";
+-
+     return false;
+ }
+ 
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kio/series b/pkgs/desktops/kde-5/frameworks-5.19/kio/series
new file mode 100644
index 000000000000..77ca15450047
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kio/series
@@ -0,0 +1 @@
+samba-search-path.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kitemmodels.nix b/pkgs/desktops/kde-5/frameworks-5.19/kitemmodels.nix
new file mode 100644
index 000000000000..a9024d771cc3
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kitemviews.nix b/pkgs/desktops/kde-5/frameworks-5.19/kitemviews.nix
new file mode 100644
index 000000000000..931019ce495d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kjobwidgets.nix b/pkgs/desktops/kde-5/frameworks-5.19/kjobwidgets.nix
new file mode 100644
index 000000000000..746edf12eea0
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kjs.nix b/pkgs/desktops/kde-5/frameworks-5.19/kjs.nix
new file mode 100644
index 000000000000..768720f178c8
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kjsembed.nix b/pkgs/desktops/kde-5/frameworks-5.19/kjsembed.nix
new file mode 100644
index 000000000000..22eef2d47bde
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kmediaplayer.nix b/pkgs/desktops/kde-5/frameworks-5.19/kmediaplayer.nix
new file mode 100644
index 000000000000..460458b22323
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/knewstuff.nix b/pkgs/desktops/kde-5/frameworks-5.19/knewstuff.nix
new file mode 100644
index 000000000000..5bcd6f301462
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/knotifications.nix b/pkgs/desktops/kde-5/frameworks-5.19/knotifications.nix
new file mode 100644
index 000000000000..7e301dd0f268
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/knotifyconfig.nix b/pkgs/desktops/kde-5/frameworks-5.19/knotifyconfig.nix
new file mode 100644
index 000000000000..dd99d2d4f1e5
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kpackage/allow-external-paths.patch b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/allow-external-paths.patch
new file mode 100644
index 000000000000..e9d744448148
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/allow-external-paths.patch
@@ -0,0 +1,13 @@
+Index: kpackage-5.18.0/src/kpackage/package.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/package.cpp
++++ kpackage-5.18.0/src/kpackage/package.cpp
+@@ -808,7 +808,7 @@ PackagePrivate::PackagePrivate()
+     : QSharedData(),
+       fallbackPackage(0),
+       metadata(0),
+-      externalPaths(false),
++      externalPaths(true),
+       valid(false),
+       checkedValid(false)
+ {
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kpackage/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/default.nix
new file mode 100644
index 000000000000..aea1b0d31a0d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/default.nix
@@ -0,0 +1,23 @@
+{ kdeFramework, lib, copyPathsToStore
+, 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 = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  postInstall = ''
+    wrapQtProgram "$out/bin/kpackagetool5"
+  '';
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kpackage/qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..ddbf17d00064
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,26 @@
+Index: kpackage-5.18.0/src/kpackage/packageloader.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/packageloader.cpp
++++ kpackage-5.18.0/src/kpackage/packageloader.cpp
+@@ -241,7 +241,7 @@ QList<KPluginMetaData> PackageLoader::li
+         } else {
+             //qDebug() << "Not cached";
+             // If there's no cache file, fall back to listing the directory
+-            const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories;
++            const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories | QDirIterator::FollowSymlinks;
+             const QStringList nameFilters = QStringList(QStringLiteral("metadata.desktop")) << QStringLiteral("metadata.json");
+ 
+             QDirIterator it(plugindir, nameFilters, QDir::Files, flags);
+Index: kpackage-5.18.0/src/kpackage/private/packagejobthread.cpp
+===================================================================
+--- kpackage-5.18.0.orig/src/kpackage/private/packagejobthread.cpp
++++ kpackage-5.18.0/src/kpackage/private/packagejobthread.cpp
+@@ -146,7 +146,7 @@ bool indexDirectory(const QString& dir,
+ 
+     QJsonArray plugins;
+ 
+-    QDirIterator it(dir, *metaDataFiles, QDir::Files, QDirIterator::Subdirectories);
++    QDirIterator it(dir, *metaDataFiles, QDir::Files, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+     while (it.hasNext()) {
+         it.next();
+         const QString path = it.fileInfo().absoluteFilePath();
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kpackage/series b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/series
new file mode 100644
index 000000000000..9b7f076efc70
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kpackage/series
@@ -0,0 +1,2 @@
+allow-external-paths.patch
+qdiriterator-follow-symlinks.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/kparts.nix b/pkgs/desktops/kde-5/frameworks-5.19/kparts.nix
new file mode 100644
index 000000000000..1c3e0b2cbc51
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kpeople.nix b/pkgs/desktops/kde-5/frameworks-5.19/kpeople.nix
new file mode 100644
index 000000000000..4c3877e7efd2
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kplotting.nix b/pkgs/desktops/kde-5/frameworks-5.19/kplotting.nix
new file mode 100644
index 000000000000..c16f51b5ac3c
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kpty.nix b/pkgs/desktops/kde-5/frameworks-5.19/kpty.nix
new file mode 100644
index 000000000000..2e34e6f674ce
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kross.nix b/pkgs/desktops/kde-5/frameworks-5.19/kross.nix
new file mode 100644
index 000000000000..7c6f079feaa7
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/krunner.nix b/pkgs/desktops/kde-5/frameworks-5.19/krunner.nix
new file mode 100644
index 000000000000..12d2b54d0eb3
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kservice/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/frameworks-5.19/kservice/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..3d8397d8ee2d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kservice/0002-no-canonicalize-path.patch b/pkgs/desktops/kde-5/frameworks-5.19/kservice/0002-no-canonicalize-path.patch
new file mode 100644
index 000000000000..685c68526119
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kservice/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix
new file mode 100644
index 000000000000..3a27d85b9166
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kservice/default.nix
@@ -0,0 +1,18 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
+, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem
+}:
+
+kdeFramework {
+  name = "kservice";
+  propagatedNativeBuildInputs = [ extra-cmake-modules ];
+  nativeBuildInputs = [ kdoctools ];
+  buildInputs = [ kcrash kdbusaddons ];
+  propagatedBuildInputs = [ kconfig kcoreaddons ki18n kwindowsystem ];
+  patches = [
+    ./0001-qdiriterator-follow-symlinks.patch
+    ./0002-no-canonicalize-path.patch
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/default.nix
new file mode 100644
index 000000000000..b8df6a5f4c0d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/default.nix
@@ -0,0 +1,22 @@
+{ kdeFramework, lib, copyPathsToStore
+, extra-cmake-modules, makeQtWrapper, perl
+, karchive, kconfig, kguiaddons, kiconthemes, kparts
+, libgit2
+, qtscript, qtxmlpatterns
+, ki18n, kio, sonnet
+}:
+
+kdeFramework {
+  name = "ktexteditor";
+  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper perl ];
+  buildInputs = [
+    karchive kconfig kguiaddons kiconthemes kparts
+    libgit2
+    qtscript qtxmlpatterns
+  ];
+  propagatedBuildInputs = [ ki18n kio sonnet ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/no-qcoreapplication.patch b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/no-qcoreapplication.patch
new file mode 100644
index 000000000000..19ab1e1e5513
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/no-qcoreapplication.patch
@@ -0,0 +1,36 @@
+Index: ktexteditor-5.18.0/src/syntax/data/katehighlightingindexer.cpp
+===================================================================
+--- ktexteditor-5.18.0.orig/src/syntax/data/katehighlightingindexer.cpp
++++ ktexteditor-5.18.0/src/syntax/data/katehighlightingindexer.cpp
+@@ -55,19 +55,16 @@ QStringList readListing(const QString &f
+ 
+ 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;
+     }
+@@ -152,7 +149,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;
+ 
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/series b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/series
new file mode 100644
index 000000000000..46cd23829a2f
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/ktexteditor/series
@@ -0,0 +1 @@
+no-qcoreapplication.patch
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/ktextwidgets.nix b/pkgs/desktops/kde-5/frameworks-5.19/ktextwidgets.nix
new file mode 100644
index 000000000000..e332d4ff9a83
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kunitconversion.nix b/pkgs/desktops/kde-5/frameworks-5.19/kunitconversion.nix
new file mode 100644
index 000000000000..3cf0f847d83d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kwallet.nix b/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix
new file mode 100644
index 000000000000..5ade5f63a8d0
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/kwallet.nix
@@ -0,0 +1,21 @@
+{ kdeFramework, lib, extra-cmake-modules, kconfig, kconfigwidgets
+, kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes
+, knotifications , kservice, kwidgetsaddons, kwindowsystem, libgcrypt
+, makeQtWrapper }:
+
+kdeFramework {
+  name = "kwallet";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  buildInputs = [
+    kconfig kconfigwidgets 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/desktops/kde-5/frameworks-5.19/kwidgetsaddons.nix b/pkgs/desktops/kde-5/frameworks-5.19/kwidgetsaddons.nix
new file mode 100644
index 000000000000..d95f44d3fecf
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kwindowsystem.nix b/pkgs/desktops/kde-5/frameworks-5.19/kwindowsystem.nix
new file mode 100644
index 000000000000..09ab1f2200de
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kxmlgui.nix b/pkgs/desktops/kde-5/frameworks-5.19/kxmlgui.nix
new file mode 100644
index 000000000000..f081d5f9170e
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/kxmlrpcclient.nix b/pkgs/desktops/kde-5/frameworks-5.19/kxmlrpcclient.nix
new file mode 100644
index 000000000000..20a300b68bc8
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/modemmanager-qt.nix b/pkgs/desktops/kde-5/frameworks-5.19/modemmanager-qt.nix
new file mode 100644
index 000000000000..7d7f769d6a9b
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/networkmanager-qt.nix b/pkgs/desktops/kde-5/frameworks-5.19/networkmanager-qt.nix
new file mode 100644
index 000000000000..333378bd1431
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/oxygen-icons5.nix b/pkgs/desktops/kde-5/frameworks-5.19/oxygen-icons5.nix
new file mode 100644
index 000000000000..ee350f8e1536
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/plasma-framework/default.nix b/pkgs/desktops/kde-5/frameworks-5.19/plasma-framework/default.nix
new file mode 100644
index 000000000000..d8846f777231
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/solid.nix b/pkgs/desktops/kde-5/frameworks-5.19/solid.nix
new file mode 100644
index 000000000000..afd125e3c597
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/sonnet.nix b/pkgs/desktops/kde-5/frameworks-5.19/sonnet.nix
new file mode 100644
index 000000000000..943fe04a1c92
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/frameworks-5.19/srcs.nix b/pkgs/desktops/kde-5/frameworks-5.19/srcs.nix
new file mode 100644
index 000000000000..b86c0b71224d
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/srcs.nix
@@ -0,0 +1,565 @@
+# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
+{ fetchurl, mirror }:
+
+{
+  attica = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/attica-5.19.0.tar.xz";
+      sha256 = "0cbvjnv2fcqsxspiy5pzmnnzrpfamlsc9j927kd6gpzai1ckf1lv";
+      name = "attica-5.19.0.tar.xz";
+    };
+  };
+  baloo = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/baloo-5.19.0.tar.xz";
+      sha256 = "02yy0w13h5wxm74a87zi439f6yd9miid6rb54nia0pgvcka98svg";
+      name = "baloo-5.19.0.tar.xz";
+    };
+  };
+  bluez-qt = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/bluez-qt-5.19.0.tar.xz";
+      sha256 = "0609i7rzhnnnp4fqnwscwp6y646ji8kl2hw5sy7azc87yllisnyv";
+      name = "bluez-qt-5.19.0.tar.xz";
+    };
+  };
+  breeze-icons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/breeze-icons-5.19.0.tar.xz";
+      sha256 = "0bwix0jl1dscqfb7ygn9drpd9ivfx4g15vz6h01mswvxa9lz1vj0";
+      name = "breeze-icons-5.19.0.tar.xz";
+    };
+  };
+  extra-cmake-modules = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/extra-cmake-modules-5.19.0.tar.xz";
+      sha256 = "1dl3hhbara7iswb5wsc5dp17ar3ljw5f0nrncl8vry9smaz2zl63";
+      name = "extra-cmake-modules-5.19.0.tar.xz";
+    };
+  };
+  frameworkintegration = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/frameworkintegration-5.19.0.tar.xz";
+      sha256 = "00la7p7wcyqpxyi73h4fjrmm9d2gqzdaljn4468xya4bfns5ijy3";
+      name = "frameworkintegration-5.19.0.tar.xz";
+    };
+  };
+  kactivities = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kactivities-5.19.0.tar.xz";
+      sha256 = "0yml1sbn3z4jd4vsfs25kqrl03pmlcgamzbgpw3248sabhyg7ks3";
+      name = "kactivities-5.19.0.tar.xz";
+    };
+  };
+  kapidox = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kapidox-5.19.0.tar.xz";
+      sha256 = "0a9731xrkd6mnqh72592rx6gfnxxdfd7xl8pdpgdn7qs3394k1yz";
+      name = "kapidox-5.19.0.tar.xz";
+    };
+  };
+  karchive = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/karchive-5.19.0.tar.xz";
+      sha256 = "043spmi7s2d1bj8d3wbgzbhisip6h92kqjhlvg8gyv0a7vy54ymv";
+      name = "karchive-5.19.0.tar.xz";
+    };
+  };
+  kauth = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kauth-5.19.0.tar.xz";
+      sha256 = "0fm9ih2hkh2rpmlf98yw8z1r5bn2qmpva2k7mrv6ijd5h767fxss";
+      name = "kauth-5.19.0.tar.xz";
+    };
+  };
+  kbookmarks = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kbookmarks-5.19.0.tar.xz";
+      sha256 = "0q418jpdc348nqgdavsmxxka4g8sldpdi9n89i1pllfmq10kw9sd";
+      name = "kbookmarks-5.19.0.tar.xz";
+    };
+  };
+  kcmutils = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kcmutils-5.19.0.tar.xz";
+      sha256 = "0qhdjb3zvqq9ycfgb52lz4flgipyplj5ksz8h8y71bbs4w6lazd8";
+      name = "kcmutils-5.19.0.tar.xz";
+    };
+  };
+  kcodecs = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kcodecs-5.19.0.tar.xz";
+      sha256 = "1rzp314fv9n5168j7nhv1c8fjaszpmgdx6javrx4w0hyrjdfkg66";
+      name = "kcodecs-5.19.0.tar.xz";
+    };
+  };
+  kcompletion = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kcompletion-5.19.0.tar.xz";
+      sha256 = "05n0y5kf3bcc4wgn6k0js5cravv1k93xxzrgapm21323qgvfagwd";
+      name = "kcompletion-5.19.0.tar.xz";
+    };
+  };
+  kconfig = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kconfig-5.19.0.tar.xz";
+      sha256 = "0nk5hfl8yh0kgaa7xi0cc05dl6nf7prvbvxv0i99207xh9dafdmm";
+      name = "kconfig-5.19.0.tar.xz";
+    };
+  };
+  kconfigwidgets = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kconfigwidgets-5.19.0.tar.xz";
+      sha256 = "1nld27chcjwjgwv76s2j77ifmca235yp10bm08rjmvnfn6778ypv";
+      name = "kconfigwidgets-5.19.0.tar.xz";
+    };
+  };
+  kcoreaddons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kcoreaddons-5.19.0.tar.xz";
+      sha256 = "07sm0givfdx28p302fkynzsd3xkpn1hbs43d4rscyx18yxfsldcw";
+      name = "kcoreaddons-5.19.0.tar.xz";
+    };
+  };
+  kcrash = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kcrash-5.19.0.tar.xz";
+      sha256 = "1dy03gp1sj96wn0zfa0dpbvz8pz0ia1j7p1wcif3iqk55pjxdgyl";
+      name = "kcrash-5.19.0.tar.xz";
+    };
+  };
+  kdbusaddons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdbusaddons-5.19.0.tar.xz";
+      sha256 = "1bb5aik0kl3kab5399drfjxrm8iysgkf813xgr0y4k64c9kwfp28";
+      name = "kdbusaddons-5.19.0.tar.xz";
+    };
+  };
+  kdeclarative = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdeclarative-5.19.0.tar.xz";
+      sha256 = "03g02zy7wjzmpvqzxx32z8ap7jyj9sf432g1d3csb0dcbx2ny52g";
+      name = "kdeclarative-5.19.0.tar.xz";
+    };
+  };
+  kded = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kded-5.19.0.tar.xz";
+      sha256 = "0nyvg0h2aqy7qr57bad6wyc2rmcv9nhdq0py4fxc3irb6516p9hz";
+      name = "kded-5.19.0.tar.xz";
+    };
+  };
+  kdelibs4support = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/kdelibs4support-5.19.0.tar.xz";
+      sha256 = "0iqnb2j6gfy8006arwv65vljfhxdnk6aia0zppngb481jnd9n2pn";
+      name = "kdelibs4support-5.19.0.tar.xz";
+    };
+  };
+  kdesignerplugin = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdesignerplugin-5.19.0.tar.xz";
+      sha256 = "11inmvyair796rx4842naf1dnxqvc6bqqzrv700ycvisad646ws5";
+      name = "kdesignerplugin-5.19.0.tar.xz";
+    };
+  };
+  kdesu = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdesu-5.19.0.tar.xz";
+      sha256 = "19w8m7ji61bpd368lzkwlizcwa1l968l568lksgm2mm9pnyjjhgz";
+      name = "kdesu-5.19.0.tar.xz";
+    };
+  };
+  kdewebkit = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdewebkit-5.19.0.tar.xz";
+      sha256 = "04b5qanhxggffnvmi28lspyi8kj4kq7mxhxndar9fmkzzgvy70hj";
+      name = "kdewebkit-5.19.0.tar.xz";
+    };
+  };
+  kdnssd = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdnssd-5.19.0.tar.xz";
+      sha256 = "15a8w2i29mrbhadw6y123mr0cc45ijabnwdfp3lbkd40lk8nq314";
+      name = "kdnssd-5.19.0.tar.xz";
+    };
+  };
+  kdoctools = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kdoctools-5.19.0.tar.xz";
+      sha256 = "06g77n9wxpiv4skc1kz794ppfb2mkmd3fgn6an5kr301xc76cnpn";
+      name = "kdoctools-5.19.0.tar.xz";
+    };
+  };
+  kemoticons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kemoticons-5.19.0.tar.xz";
+      sha256 = "0fiix2sf2wrvmrpx8whdr1bzm7gbv7pvg02y47w5bl6s9gh176g5";
+      name = "kemoticons-5.19.0.tar.xz";
+    };
+  };
+  kfilemetadata = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kfilemetadata-5.19.0.tar.xz";
+      sha256 = "11j8if3xhp3xxwibwm6nxb4lh8wx40ni3zf5hki327pxv4vpq3qr";
+      name = "kfilemetadata-5.19.0.tar.xz";
+    };
+  };
+  kglobalaccel = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kglobalaccel-5.19.0.tar.xz";
+      sha256 = "021j98f7217m83aqxpamg0lzlaiskdaqsd9iabc8wrp1g0nkm05d";
+      name = "kglobalaccel-5.19.0.tar.xz";
+    };
+  };
+  kguiaddons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kguiaddons-5.19.0.tar.xz";
+      sha256 = "019xaf7vpgifcw8wibli9d2b50brhgdaypsqknh6mqq8q9g06jhy";
+      name = "kguiaddons-5.19.0.tar.xz";
+    };
+  };
+  khtml = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/khtml-5.19.0.tar.xz";
+      sha256 = "0hqa54a9nxy954vy8gf52y89xd3ibz9b4jgh6w347b1alp1zn145";
+      name = "khtml-5.19.0.tar.xz";
+    };
+  };
+  ki18n = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/ki18n-5.19.0.tar.xz";
+      sha256 = "0v3arc20y5d8afm9zfrz1skd2xg3ng62cq1xvxiq645w6mxf7y05";
+      name = "ki18n-5.19.0.tar.xz";
+    };
+  };
+  kiconthemes = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kiconthemes-5.19.0.tar.xz";
+      sha256 = "0riicirgda3w2b30dzsa2lq9xrr4y04qwhxyzq1p8gn2x4pp3g3n";
+      name = "kiconthemes-5.19.0.tar.xz";
+    };
+  };
+  kidletime = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kidletime-5.19.0.tar.xz";
+      sha256 = "0jlbzqv36ddhfhk8xkkgw0xhq8s371z9ama1cyv2xq8kk4vjywc6";
+      name = "kidletime-5.19.0.tar.xz";
+    };
+  };
+  kimageformats = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kimageformats-5.19.0.tar.xz";
+      sha256 = "1ydizc6b0ncndazk62h8y249yfcx381pwzyivfpka1f69zfgyvv5";
+      name = "kimageformats-5.19.0.tar.xz";
+    };
+  };
+  kinit = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kinit-5.19.0.tar.xz";
+      sha256 = "03l7pijqdnnsfg6yz9p73p7xa86sldayggl6rc5hpkzmgyczcfzm";
+      name = "kinit-5.19.0.tar.xz";
+    };
+  };
+  kio = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kio-5.19.0.tar.xz";
+      sha256 = "0c7smp7cajivx53shy65mp9zcc51pha9iyvh37dggfflxy3xf9nv";
+      name = "kio-5.19.0.tar.xz";
+    };
+  };
+  kitemmodels = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kitemmodels-5.19.0.tar.xz";
+      sha256 = "0skmim986qnncbzd84vm1wp1fr41jn04af2dgckirsk23d35bln7";
+      name = "kitemmodels-5.19.0.tar.xz";
+    };
+  };
+  kitemviews = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kitemviews-5.19.0.tar.xz";
+      sha256 = "118zv46mvrfwbvl06bb1m8axv92wnp4pfs36hsxvnjl7gfjk5xjn";
+      name = "kitemviews-5.19.0.tar.xz";
+    };
+  };
+  kjobwidgets = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kjobwidgets-5.19.0.tar.xz";
+      sha256 = "1qzf8nzy8rxkdai9aj2lyrww90245v0p2q115xiz73bsg9rahmji";
+      name = "kjobwidgets-5.19.0.tar.xz";
+    };
+  };
+  kjs = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/kjs-5.19.0.tar.xz";
+      sha256 = "08m01762hb25vm020g3v37bh40cgvcfrj45ql135klx96x9imfaf";
+      name = "kjs-5.19.0.tar.xz";
+    };
+  };
+  kjsembed = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/kjsembed-5.19.0.tar.xz";
+      sha256 = "1wmkgy8jgm21y2cvcbv1fdv29dxxla8n6ws78kzzbbw4cgqwwl48";
+      name = "kjsembed-5.19.0.tar.xz";
+    };
+  };
+  kmediaplayer = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/kmediaplayer-5.19.0.tar.xz";
+      sha256 = "1vhqr2c7q8vwzdj29vpmfjfhyal8wp9ffirrnqc98vb6sffs85ay";
+      name = "kmediaplayer-5.19.0.tar.xz";
+    };
+  };
+  knewstuff = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/knewstuff-5.19.0.tar.xz";
+      sha256 = "12acd12vxk9z83zg3yz8lvmmb8737z9lzd4hs9a3jcs1z5k2nhb4";
+      name = "knewstuff-5.19.0.tar.xz";
+    };
+  };
+  knotifications = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/knotifications-5.19.0.tar.xz";
+      sha256 = "0grgm0ws16gp2j77nslqpl1jpxbi0m6g59zr7v1xnmzdk2j6n4av";
+      name = "knotifications-5.19.0.tar.xz";
+    };
+  };
+  knotifyconfig = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/knotifyconfig-5.19.0.tar.xz";
+      sha256 = "161brvryxzdkny7sf6icn1jpyi6rnw6jc808gdf5g41v50xpnxfj";
+      name = "knotifyconfig-5.19.0.tar.xz";
+    };
+  };
+  kpackage = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kpackage-5.19.0.tar.xz";
+      sha256 = "1km4sjgxfljp2pnjnzj48q3c574zvj7341a57n4ifhjwj37yzxdv";
+      name = "kpackage-5.19.0.tar.xz";
+    };
+  };
+  kparts = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kparts-5.19.0.tar.xz";
+      sha256 = "05g59x2mrqygawzcwgw3igl5n96l649h0kpzh37sfq4i8kg15g7l";
+      name = "kparts-5.19.0.tar.xz";
+    };
+  };
+  kpeople = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kpeople-5.19.0.tar.xz";
+      sha256 = "1ksf6g71li1xk4q98cvwkam8m8g32x2815kj1gfwbg4g6iw74w98";
+      name = "kpeople-5.19.0.tar.xz";
+    };
+  };
+  kplotting = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kplotting-5.19.0.tar.xz";
+      sha256 = "169x4m9ms8yhfha8zclnl8wrnfhfqshpwwg4b5bd046pcrkqmnqq";
+      name = "kplotting-5.19.0.tar.xz";
+    };
+  };
+  kpty = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kpty-5.19.0.tar.xz";
+      sha256 = "0289vzfjwppwqj9h03flzhwm18dnxz11hqhdhr9990x7rw6a4n03";
+      name = "kpty-5.19.0.tar.xz";
+    };
+  };
+  kross = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/kross-5.19.0.tar.xz";
+      sha256 = "1nv7mrhn7wa4bs2a164x42d3b37akyvhkxqs8cg5fqp4vr2wkw0p";
+      name = "kross-5.19.0.tar.xz";
+    };
+  };
+  krunner = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/portingAids/krunner-5.19.0.tar.xz";
+      sha256 = "054s8309lxi27gpbg7iygbcxsp0pwrzbzww3h8zp2a9yiic4s5mx";
+      name = "krunner-5.19.0.tar.xz";
+    };
+  };
+  kservice = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kservice-5.19.0.tar.xz";
+      sha256 = "02lbia26r2462nwksizaxjfkhxfqqs732dp495yx8bjc7wcv3srm";
+      name = "kservice-5.19.0.tar.xz";
+    };
+  };
+  ktexteditor = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/ktexteditor-5.19.0.tar.xz";
+      sha256 = "0v3l44w4k43ajs81i8386hszk3x7rajjlb6z3jb7q98vhp91b5dp";
+      name = "ktexteditor-5.19.0.tar.xz";
+    };
+  };
+  ktextwidgets = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/ktextwidgets-5.19.0.tar.xz";
+      sha256 = "1xydb76r6x1p10bkr2nlqg3md78jw8zvqad0h42dgvl4f5xvjknp";
+      name = "ktextwidgets-5.19.0.tar.xz";
+    };
+  };
+  kunitconversion = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kunitconversion-5.19.0.tar.xz";
+      sha256 = "11g1vhqkrb1k748drj7klkbb7jca3dybakcmcgqf53g8vxfih8kb";
+      name = "kunitconversion-5.19.0.tar.xz";
+    };
+  };
+  kwallet = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kwallet-5.19.0.tar.xz";
+      sha256 = "0z0c62fdfx9syrq6z7bk0ihac4yqyxpycll7h3mijj29km4jnpjm";
+      name = "kwallet-5.19.0.tar.xz";
+    };
+  };
+  kwidgetsaddons = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kwidgetsaddons-5.19.0.tar.xz";
+      sha256 = "0b85ng0dj5gpzifqmhyzgx61nb37vq7d0gvfpfazlcp5n27ywivm";
+      name = "kwidgetsaddons-5.19.0.tar.xz";
+    };
+  };
+  kwindowsystem = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kwindowsystem-5.19.0.tar.xz";
+      sha256 = "115xs34r74j9zcsw69glnh8w59iyh764n3gniawwrk23c6yb8fch";
+      name = "kwindowsystem-5.19.0.tar.xz";
+    };
+  };
+  kxmlgui = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kxmlgui-5.19.0.tar.xz";
+      sha256 = "1al2xifiyvl3zpva9nqap8gb6vqfgmf2fnhkmymm02rwg4yn4gah";
+      name = "kxmlgui-5.19.0.tar.xz";
+    };
+  };
+  kxmlrpcclient = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/kxmlrpcclient-5.19.0.tar.xz";
+      sha256 = "0lji7cxvh2lmjz42lx6ymz962gr4cyqfzksz0n5vgzfk5z0vq98g";
+      name = "kxmlrpcclient-5.19.0.tar.xz";
+    };
+  };
+  modemmanager-qt = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/modemmanager-qt-5.19.0.tar.xz";
+      sha256 = "05x9jicryjw9fj02arpya8xsh79rsnljnqjfpwbb7pi38f9i8v4w";
+      name = "modemmanager-qt-5.19.0.tar.xz";
+    };
+  };
+  networkmanager-qt = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/networkmanager-qt-5.19.0.tar.xz";
+      sha256 = "0wi0mkygzbvvyil1nyzc3ihgilvpx6j7caqaa9k38p85g93vsq13";
+      name = "networkmanager-qt-5.19.0.tar.xz";
+    };
+  };
+  oxygen-icons5 = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/oxygen-icons5-5.19.0.tar.xz";
+      sha256 = "09vfwcyidj3bl0qr4sq78bkc69zp9x8dwp8bsay5y05q8591dkg0";
+      name = "oxygen-icons5-5.19.0.tar.xz";
+    };
+  };
+  plasma-framework = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/plasma-framework-5.19.0.tar.xz";
+      sha256 = "1588r1jag0s9hhw4qq7mr2mcdd3d9az5ngb3z1l58xdhvfcc4497";
+      name = "plasma-framework-5.19.0.tar.xz";
+    };
+  };
+  solid = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/solid-5.19.0.tar.xz";
+      sha256 = "02bnvhscb55r6q5hkyh7rqi6zsc3r974y3x9shi8l0xbs78snkgz";
+      name = "solid-5.19.0.tar.xz";
+    };
+  };
+  sonnet = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/sonnet-5.19.0.tar.xz";
+      sha256 = "02ringh0wyiq1n19c200bcyf5x2w5jhw0pcxvfjzjai1sjig03x7";
+      name = "sonnet-5.19.0.tar.xz";
+    };
+  };
+  threadweaver = {
+    version = "5.19.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.19/threadweaver-5.19.0.tar.xz";
+      sha256 = "1jm1sw7xq76s2ggghm6qqdn7452myy9n7p5zzdb01qbaw2y1x4pw";
+      name = "threadweaver-5.19.0.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-5/frameworks-5.19/threadweaver.nix b/pkgs/desktops/kde-5/frameworks-5.19/threadweaver.nix
new file mode 100644
index 000000000000..52817921cc72
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks-5.19/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/desktops/kde-5/plasma-5.5/bluedevil.nix b/pkgs/desktops/kde-5/plasma-5.5/bluedevil.nix
new file mode 100644
index 000000000000..6596c246202f
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/bluedevil.nix
@@ -0,0 +1,26 @@
+{ 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
+  ];
+  propagatedUserEnvPkgs = [ bluez-qt ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/bluedevil-wizard"
+    wrapQtProgram "$out/bin/bluedevil-sendfile"
+    # Fix the location of logic.js for the plasmoid
+    ln -s $out/share/plasma/plasmoids/org.kde.plasma.bluetooth/contents/code/logic.js $out/share/plasma/plasmoids/org.kde.plasma.bluetooth/contents/ui/logic.js
+  '';
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/breeze-gtk.nix b/pkgs/desktops/kde-5/plasma-5.5/breeze-gtk.nix
new file mode 100644
index 000000000000..179f15dc8763
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/breeze-gtk.nix
@@ -0,0 +1,8 @@
+{ plasmaPackage
+, extra-cmake-modules
+}:
+
+plasmaPackage {
+  name = "breeze-gtk";
+  nativeBuildInputs = [ extra-cmake-modules ];
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/breeze-qt4.nix b/pkgs/desktops/kde-5/plasma-5.5/breeze-qt4.nix
new file mode 100644
index 000000000000..f8092bc9d376
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/breeze-qt5.nix b/pkgs/desktops/kde-5/plasma-5.5/breeze-qt5.nix
new file mode 100644
index 000000000000..63ade168805d
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/default.nix b/pkgs/desktops/kde-5/plasma-5.5/default.nix
new file mode 100644
index 000000000000..384fa6f6d272
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/default.nix
@@ -0,0 +1,87 @@
+# 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";
+
+  packages = self: with self; {
+    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;
+
+        outputs = args.outputs or [ "dev" "out" ];
+
+        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 {});
+      });
+
+    bluedevil = callPackage ./bluedevil.nix {};
+    breeze-gtk = callPackage ./breeze-gtk.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}"
+        (map (pkg: pkg.out or pkg) [ breeze-gtk breeze-qt4 breeze-qt5 ]);
+    kde-cli-tools = callPackage ./kde-cli-tools.nix {};
+    kde-gtk-config = callPackage ./kde-gtk-config {};
+    kdecoration = callPackage ./kdecoration.nix {};
+    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 {};
+  };
+
+in packages
diff --git a/pkgs/desktops/kde-5/plasma-5.5/fetchsrcs.sh b/pkgs/desktops/kde-5/plasma-5.5/fetchsrcs.sh
new file mode 100755
index 000000000000..714e0fc75097
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/stable/plasma/5.5.4/"
+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/kde-5/plasma-5.5/kde-cli-tools.nix b/pkgs/desktops/kde-5/plasma-5.5/kde-cli-tools.nix
new file mode 100644
index 000000000000..7f19af6959ec
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch b/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/0001-follow-symlinks.patch
new file mode 100644
index 000000000000..759eda4cc134
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kde-gtk-config/default.nix b/pkgs/desktops/kde-5/plasma-5.5/kde-gtk-config/default.nix
new file mode 100644
index 000000000000..ab8867520b38
--- /dev/null
+++ b/pkgs/desktops/kde-5/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.out}/lib/glib-2.0/include"
+    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
+  ];
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/kdecoration.nix b/pkgs/desktops/kde-5/plasma-5.5/kdecoration.nix
new file mode 100644
index 000000000000..eb65f7f90afb
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kdeplasma-addons.nix b/pkgs/desktops/kde-5/plasma-5.5/kdeplasma-addons.nix
new file mode 100644
index 000000000000..d6a96a3276d7
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kgamma5.nix b/pkgs/desktops/kde-5/plasma-5.5/kgamma5.nix
new file mode 100644
index 000000000000..965c33e6eef8
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/khelpcenter.nix b/pkgs/desktops/kde-5/plasma-5.5/khelpcenter.nix
new file mode 100644
index 000000000000..6ba860b9dfb2
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/khotkeys.nix b/pkgs/desktops/kde-5/plasma-5.5/khotkeys.nix
new file mode 100644
index 000000000000..141320e6b3e6
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kinfocenter.nix b/pkgs/desktops/kde-5/plasma-5.5/kinfocenter.nix
new file mode 100644
index 000000000000..ed717790cd0d
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kmenuedit.nix b/pkgs/desktops/kde-5/plasma-5.5/kmenuedit.nix
new file mode 100644
index 000000000000..3834ca1328f8
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kscreen.nix b/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix
new file mode 100644
index 000000000000..a521a7993628
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/kscreen.nix
@@ -0,0 +1,29 @@
+{ plasmaPackage, extra-cmake-modules, kconfig, kconfigwidgets
+, kdbusaddons, kglobalaccel, ki18n, kwidgetsaddons, kxmlgui
+, libkscreen, makeQtWrapper, qtdeclarative, qtgraphicaleffects
+}:
+
+plasmaPackage {
+  name = "kscreen";
+  nativeBuildInputs = [
+    extra-cmake-modules
+    makeQtWrapper
+  ];
+  buildInputs = [
+    kconfig
+    kconfigwidgets
+    kdbusaddons
+    kwidgetsaddons
+    kxmlgui
+  ];
+  propagatedBuildInputs = [
+    kglobalaccel
+    ki18n
+    libkscreen
+    qtdeclarative
+    qtgraphicaleffects
+  ];
+  postInstall = ''
+    wrapQtProgram "$out/bin/kscreen-console"
+  '';
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/kscreenlocker.nix b/pkgs/desktops/kde-5/plasma-5.5/kscreenlocker.nix
new file mode 100644
index 000000000000..562797b546e9
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/ksshaskpass.nix b/pkgs/desktops/kde-5/plasma-5.5/ksshaskpass.nix
new file mode 100644
index 000000000000..f274512e027a
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/ksysguard.nix b/pkgs/desktops/kde-5/plasma-5.5/ksysguard.nix
new file mode 100644
index 000000000000..d47f9215a41a
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kwayland.nix b/pkgs/desktops/kde-5/plasma-5.5/kwayland.nix
new file mode 100644
index 000000000000..e4d6eb631f95
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/plasma-5.5/kwin/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..797a32fc5f83
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kwin/default.nix b/pkgs/desktops/kde-5/plasma-5.5/kwin/default.nix
new file mode 100644
index 000000000000..2e86068b486f
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/kwrited.nix b/pkgs/desktops/kde-5/plasma-5.5/kwrited.nix
new file mode 100644
index 000000000000..a6ed9d9bb287
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/libkscreen/default.nix b/pkgs/desktops/kde-5/plasma-5.5/libkscreen/default.nix
new file mode 100644
index 000000000000..9fccbd6834c3
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch b/pkgs/desktops/kde-5/plasma-5.5/libksysguard/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..fbbb11ae7556
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/libksysguard/default.nix b/pkgs/desktops/kde-5/plasma-5.5/libksysguard/default.nix
new file mode 100644
index 000000000000..373221b2b305
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/milou.nix b/pkgs/desktops/kde-5/plasma-5.5/milou.nix
new file mode 100644
index 000000000000..760de2d79ab4
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/oxygen.nix b/pkgs/desktops/kde-5/plasma-5.5/oxygen.nix
new file mode 100644
index 000000000000..02918100408a
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-desktop/0001-qt-5.5-QML-import-paths.patch b/pkgs/desktops/kde-5/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/kde-5/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/kde-5/plasma-5.5/plasma-desktop/0002-hwclock.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/0002-hwclock.patch
new file mode 100644
index 000000000000..17b01486d928
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-desktop/0003-tzdir.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/0003-tzdir.patch
new file mode 100644
index 000000000000..aba97b032f8a
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-desktop/default.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix
new file mode 100644
index 000000000000..5f27efc7f24c
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-desktop/default.nix
@@ -0,0 +1,86 @@
+{ 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
+  ];
+  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/kde-5/plasma-5.5/plasma-mediacenter.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix
new file mode 100644
index 000000000000..7088f45d64e2
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-mediacenter.nix
@@ -0,0 +1,20 @@
+{ 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
+  ];
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-nm/0001-mobile-broadband-provider-info-path.patch
new file mode 100644
index 000000000000..79b5cfb437e2
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-nm/default.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-nm/default.nix
new file mode 100644
index 000000000000..249c6d8aac94
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-pa.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-pa.nix
new file mode 100644
index 000000000000..ff56d1199b15
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-workspace-wallpapers.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace-wallpapers.nix
new file mode 100644
index 000000000000..bc87abcad153
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/plasma-workspace/default.nix b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix
new file mode 100644
index 000000000000..01c5c63ce0aa
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/default.nix
@@ -0,0 +1,84 @@
+{ plasmaPackage, lib, copyPathsToStore
+, extra-cmake-modules, kdoctools, makeQtWrapper
+, 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, qttools, dbus_tools, mkfontdir, xmessage
+, xprop, xrdb, xset, xsetroot, solid, qtquickcontrols
+}:
+
+plasmaPackage {
+  name = "plasma-workspace";
+
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+    makeQtWrapper
+  ];
+  buildInputs = [
+    dbus_tools kcmutils kconfig kcrash kdbusaddons kdesu kdewebkit
+    kinit kjsembed knewstuff knotifyconfig kpackage kservice
+    ktextwidgets kwallet kwayland kxmlrpcclient libdbusmenu libSM
+    libXcursor mkfontdir networkmanager-qt pam phonon qtscript qttools
+    socat wayland xmessage xprop xset xsetroot
+  ];
+  propagatedBuildInputs = [
+    baloo kactivities kdeclarative kdelibs4support kglobalaccel
+    kidletime krunner ktexteditor kwin libkscreen libksysguard
+    plasma-framework qtquick1 qtquickcontrols qtx11extras solid
+  ];
+
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  postPatch = ''
+    substituteInPlace startkde/startkde.cmake \
+        --subst-var-by bash $(type -P bash) \
+        --subst-var-by sed $(type -P sed) \
+        --subst-var-by grep $(type -P grep) \
+        --subst-var-by socat $(type -P socat) \
+        --subst-var-by kcheckrunning $(type -P kcheckrunning) \
+        --subst-var-by xmessage $(type -P xmessage) \
+        --subst-var-by tr $(type -P tr) \
+        --subst-var-by qtpaths $(type -P qtpaths) \
+        --subst-var-by qdbus $(type -P qdbus) \
+        --subst-var-by dbus-launch $(type -P dbus-launch) \
+        --subst-var-by mkfontdir $(type -P mkfontdir) \
+        --subst-var-by xset $(type -P xset) \
+        --subst-var-by xsetroot $(type -P xsetroot) \
+        --subst-var-by xprop $(type -P xprop) \
+        --subst-var-by start_kdeinit_wrapper "${kinit.out}/lib/libexec/kf5/start_kdeinit_wrapper" \
+        --subst-var-by kwrapper5 $(type -P kwrapper5) \
+        --subst-var-by kdeinit5_shutdown $(type -P kdeinit5_shutdown) \
+        --subst-var-by kbuildsycoca5 $(type -P kbuildsycoca5) \
+        --subst-var-by kreadconfig5 $(type -P kreadconfig5) \
+        --subst-var out
+    substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \
+        --replace kdostartupconfig5 $out/bin/kdostartupconfig5
+  '';
+
+  postInstall = ''
+    rm "$out/bin/startplasmacompositor"
+    rm "$out/lib/libexec/startplasma"
+    rm -r "$out/share/wayland-sessions"
+  '';
+
+  postFixup = ''
+    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/kdostartupconfig5"
+    wrapQtProgram "$out/bin/klipper"
+    wrapQtProgram "$out/bin/kuiserver5"
+    wrapQtProgram "$out/bin/krunner"
+    wrapQtProgram "$out/bin/plasmashell"
+    wrapQtProgram "$out/lib/libexec/drkonqi"
+  '';
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/qml-import-path.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/qml-import-path.patch
new file mode 100644
index 000000000000..1d34001be597
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/qml-import-path.patch
@@ -0,0 +1,104 @@
+Index: plasma-workspace-5.5.1/applets/analog-clock/contents/ui/analogclock.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/analog-clock/contents/ui/analogclock.qml
++++ plasma-workspace-5.5.1/applets/analog-clock/contents/ui/analogclock.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.calendar 2.0 as Pl
+ 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
+Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/BatteryItem.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/BatteryItem.qml
++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/BatteryItem.qml
+@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as
+ 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
+Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml
++++ plasma-workspace-5.5.1/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
+Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/PopupDialog.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/PopupDialog.qml
++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/PopupDialog.qml
+@@ -23,7 +23,7 @@ import org.kde.plasma.core 2.0 as Plasma
+ 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
+Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/batterymonitor.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/batterymonitor.qml
++++ plasma-workspace-5.5.1/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
+Index: plasma-workspace-5.5.1/applets/lock_logout/contents/ui/lockout.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/lock_logout/contents/ui/lockout.qml
++++ plasma-workspace-5.5.1/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
+Index: plasma-workspace-5.5.1/applets/notifications/package/contents/ui/main.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/notifications/package/contents/ui/main.qml
++++ plasma-workspace-5.5.1/applets/notifications/package/contents/ui/main.qml
+@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as Plas
+ 
+ import org.kde.plasma.private.notifications 1.0
+ 
+-import "uiproperties.js" as UiProperties
++import "../code/uiproperties.js" as UiProperties
+ 
+ MouseEventListener {
+     id: notificationsApplet
+Index: plasma-workspace-5.5.1/applets/systemtray/package/contents/ui/main.qml
+===================================================================
+--- plasma-workspace-5.5.1.orig/applets/systemtray/package/contents/ui/main.qml
++++ plasma-workspace-5.5.1/applets/systemtray/package/contents/ui/main.qml
+@@ -25,7 +25,7 @@ import org.kde.plasma.core 2.0 as Plasma
+ // 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
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/series b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/series
new file mode 100644
index 000000000000..88b54af793e7
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/series
@@ -0,0 +1,2 @@
+startkde.patch
+qml-import-path.patch
diff --git a/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch
new file mode 100644
index 000000000000..17c0ccf0ca93
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/plasma-workspace/startkde.patch
@@ -0,0 +1,375 @@
+Index: plasma-workspace-5.5.1/startkde/startkde.cmake
+===================================================================
+--- plasma-workspace-5.5.1.orig/startkde/startkde.cmake
++++ plasma-workspace-5.5.1/startkde/startkde.cmake
+@@ -1,8 +1,31 @@
+-#!/bin/sh
++#!@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
++    @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
+@@ -17,29 +40,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
++@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@ -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:
+@@ -57,13 +67,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=$(@qtpaths@ --writable-path GenericConfigLocation)
++mkdir -p "$configDir"
+ 
+ #This is basically setting defaults so we can use them with kstartupconfig5
+ cat >$configDir/startupconfigkeys <<EOF
+@@ -102,42 +107,10 @@ XftSubPixel=none
+ 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@ -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation."
+     exit 1
+ fi
+ [ -r $configDir/startupconfig ] && . $configDir/startupconfig
+@@ -146,9 +119,11 @@ if test "$kdeglobals_kscreen_scalefactor
+     export QT_DEVICE_PIXEL_RATIO=$kdeglobals_kscreen_scalefactor
+ fi
+ 
++XCURSOR_PATH=~/.icons:$(echo "$XDG_DATA_DIRS" | @tr@ ":" "\n" | @sed@ 's,$,/icons,g' | @tr@ "\n" ":")
++export XCURSOR_PATH
++
+ # XCursor mouse theme needs to be applied here to work even for kded or ksmserver
+ 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
+@@ -164,21 +139,39 @@ if test -n "$kcminputrc_mouse_cursorthem
+     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@ -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-launch@ --sh-syntax --exit-with-session`
++fi
++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
++
+ 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)
+       ;;
+@@ -201,8 +194,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=$(@qtpaths@ --paths GenericConfigLocation | tr ':' '\n' | @sed@ 's,$,/plasma-workspace,g')
+ 
+ # Add /env/ to the directory to locate the scripts to be sourced
+ for prefix in `echo $scriptpath`; do
+@@ -232,7 +224,7 @@ usr_odir=$HOME/.fonts/kde-override
+ usr_fdir=$HOME/.fonts
+ 
+ if test -n "$KDEDIRS"; then
+-  kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'`
++  kdedirs_first=`echo "$KDEDIRS" | @sed@ -e 's/:.*//'`
+   sys_odir=$kdedirs_first/share/fonts/override
+   sys_fdir=$kdedirs_first/share/fonts
+ else
+@@ -245,23 +237,13 @@ fi
+ # 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@ +fp "$sys_odir"
++test -d "$usr_odir" && ( @mkfontdir@ "$usr_odir" ; @xset@ +fp "$usr_odir" )
++test -d "$usr_fdir" && ( @mkfontdir@ "$usr_fdir" ; @xset@ fp+ "$usr_fdir" )
++test -d "$sys_fdir" && @xset@ fp+ "$sys_fdir"
+ 
+ # Ask X11 to rebuild its font list.
+-xset fp rehash
+-
+-# 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@ fp rehash
+ 
+ # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
+ if test -n "$GS_LIB" ; then
+@@ -274,26 +256,6 @@ fi
+ 
+ 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
+@@ -318,11 +280,11 @@ fi
+ #
+ KDE_FULL_SESSION=true
+ export KDE_FULL_SESSION
+-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
++@xprop@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
+ 
+ KDE_SESSION_VERSION=5
+ export KDE_SESSION_VERSION
+-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
++@xprop@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5
+ 
+ KDE_SESSION_UID=`id -ru`
+ export KDE_SESSION_UID
+@@ -332,11 +294,11 @@ export XDG_CURRENT_DESKTOP
+ 
+ # 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@ 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@ STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
+ fi
+ 
+ # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
+@@ -349,21 +311,26 @@ if test $? -ne 0; then
+   # 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@ -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 @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@ -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!
++@kbuildsycoca5@
++
+ # finally, give the session control to the session manager
+ # see kdebase/ksmserver for the description of the rest of the startup sequence
+ # if the KDEWM environment variable has been set, then it will be used as KDE's
+@@ -379,27 +346,27 @@ test -n "$KDEWM" && KDEWM="--windowmanag
+ # lock now and do the rest of the KDE startup underneath the locker.
+ KSMSERVEROPTIONS=""
+ test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen"
+-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS
++@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@ -geometry 500x100 "Could not start ksmserver. Check your installation."
+ fi
+ 
+-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true`
++wait_drkonqi=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true`
+ 
+ if test x"$wait_drkonqi"x = x"true"x ; then
+     # wait for remaining drkonqi instances with timeout (in seconds)
+-    wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
++    wait_drkonqi_timeout=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
+     wait_drkonqi_counter=0
+-    while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
++    while @qdbus@ | @grep@ "^[^w]*org.kde.drkonqi" > /dev/null ; do
+         sleep 5
+         wait_drkonqi_counter=$((wait_drkonqi_counter+5))
+         if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
+             # ask remaining drkonqis to die in a graceful way
+-            $qdbus | grep 'org.kde.drkonqi-' | while read address ; do
+-                $qdbus "$address" "/MainApplication" "quit"
++            @qdbus@ | @grep@ 'org.kde.drkonqi-' | while read address ; do
++                @qdbus@ "$address" "/MainApplication" "quit"
+             done
+             break
+         fi
+@@ -411,12 +378,12 @@ echo 'startkde: Shutting down...'  1>&2
+ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+ 
+ # Clean up
+-kdeinit5_shutdown
++@kdeinit5_shutdown@
+ 
+ unset KDE_FULL_SESSION
+-xprop -root -remove KDE_FULL_SESSION
++@xprop@ -root -remove KDE_FULL_SESSION
+ unset KDE_SESSION_VERSION
+-xprop -root -remove KDE_SESSION_VERSION
++@xprop@ -root -remove KDE_SESSION_VERSION
+ unset KDE_SESSION_UID
+ 
+ echo 'startkde: Done.'  1>&2
diff --git a/pkgs/desktops/kde-5/plasma-5.5/polkit-kde-agent.nix b/pkgs/desktops/kde-5/plasma-5.5/polkit-kde-agent.nix
new file mode 100644
index 000000000000..3fc3a441ac34
--- /dev/null
+++ b/pkgs/desktops/kde-5/plasma-5.5/polkit-kde-agent.nix
@@ -0,0 +1,31 @@
+{ plasmaPackage
+, extra-cmake-modules
+, ki18n
+, kwindowsystem
+, kdbusaddons
+, kwidgetsaddons
+, kcoreaddons
+, kcrash
+, kconfig
+, kiconthemes
+, knotifications
+, polkit-qt
+}:
+
+plasmaPackage {
+  name = "polkit-kde-agent";
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+  buildInputs = [
+    kdbusaddons
+    kwidgetsaddons
+    kcoreaddons
+    kcrash
+    kconfig
+    kiconthemes
+    knotifications
+    polkit-qt
+  ];
+  propagatedBuildInputs = [ ki18n kwindowsystem ];
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/powerdevil.nix b/pkgs/desktops/kde-5/plasma-5.5/powerdevil.nix
new file mode 100644
index 000000000000..475e8878206a
--- /dev/null
+++ b/pkgs/desktops/kde-5/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/kde-5/plasma-5.5/srcs.nix b/pkgs/desktops/kde-5/plasma-5.5/srcs.nix
new file mode 100644
index 000000000000..3b63c864045d
--- /dev/null
+++ b/pkgs/desktops/kde-5/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.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/bluedevil-5.5.4.tar.xz";
+      sha256 = "1r20dlsg83d3lrnbdb92cpd7h0s2fmh0vjv3xi5z6rf741463p14";
+      name = "bluedevil-5.5.4.tar.xz";
+    };
+  };
+  breeze = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/breeze-5.5.4.tar.xz";
+      sha256 = "0chlp5z5zz19rh9k4ffjr92hn07dmavfcwx0wwffy8qhiw6qw7w3";
+      name = "breeze-5.5.4.tar.xz";
+    };
+  };
+  breeze-gtk = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/breeze-gtk-5.5.4.tar.xz";
+      sha256 = "1r6ihmpgha1s4hvgr4jliqvbraw06fnaa4sjrhzqbx9dh00y5d8v";
+      name = "breeze-gtk-5.5.4.tar.xz";
+    };
+  };
+  discover = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/discover-5.5.4.tar.xz";
+      sha256 = "0d5s8b9f5az40ajviijc67rz5l2345wlrqacjm4pdi8fqvxivb1v";
+      name = "discover-5.5.4.tar.xz";
+    };
+  };
+  kde-cli-tools = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kde-cli-tools-5.5.4.tar.xz";
+      sha256 = "1w9l8lh05k6xjdz0nccfygp76lp3wf3xa6pizmgv27wq21pw4wxy";
+      name = "kde-cli-tools-5.5.4.tar.xz";
+    };
+  };
+  kdecoration = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kdecoration-5.5.4.tar.xz";
+      sha256 = "1ghgvg0lfjjlgl3a9ryw1y8aqihdwrkr7qjph4v3p9brlpqm5326";
+      name = "kdecoration-5.5.4.tar.xz";
+    };
+  };
+  kde-gtk-config = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kde-gtk-config-5.5.4.tar.xz";
+      sha256 = "062jgc2sqd93yz5n1z4n7h50k7zsiayi3z901y2rq0x62nndff1m";
+      name = "kde-gtk-config-5.5.4.tar.xz";
+    };
+  };
+  kdeplasma-addons = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kdeplasma-addons-5.5.4.tar.xz";
+      sha256 = "0yrrjkh632q3ns068j7avaf2rkn2n54sf594jyl30q5fxc22mhq1";
+      name = "kdeplasma-addons-5.5.4.tar.xz";
+    };
+  };
+  kgamma5 = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kgamma5-5.5.4.tar.xz";
+      sha256 = "0w63m1sxq2fa0wabyyry4prbzc2c54adc56hfhkh84rflccfbnc2";
+      name = "kgamma5-5.5.4.tar.xz";
+    };
+  };
+  khelpcenter = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/khelpcenter-5.5.4.tar.xz";
+      sha256 = "01kw97p1xz2gghghykkv953bvypcyd080fxknjrzn4v9gl5mrjv0";
+      name = "khelpcenter-5.5.4.tar.xz";
+    };
+  };
+  khotkeys = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/khotkeys-5.5.4.tar.xz";
+      sha256 = "1jlpzqrww2n9zf5cwlvpyvxcz0wv0cyln1xjhm49ayl5iin3m9yn";
+      name = "khotkeys-5.5.4.tar.xz";
+    };
+  };
+  kinfocenter = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kinfocenter-5.5.4.tar.xz";
+      sha256 = "10qhq76ha1mahpmgrj4kw660zf92k7ys3mz2dkiid7ib6gsimir4";
+      name = "kinfocenter-5.5.4.tar.xz";
+    };
+  };
+  kmenuedit = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kmenuedit-5.5.4.tar.xz";
+      sha256 = "0scsr3isf4d0hlk85pk0snn6j5cwm7qlqnl6iqs0df32g8ysirs6";
+      name = "kmenuedit-5.5.4.tar.xz";
+    };
+  };
+  kscreen = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kscreen-5.5.4.tar.xz";
+      sha256 = "0ax67gqfjw59jk3wh3sflk3q10xqrjwf2qmvx6jky6q2x4kdixvv";
+      name = "kscreen-5.5.4.tar.xz";
+    };
+  };
+  kscreenlocker = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kscreenlocker-5.5.4.tar.xz";
+      sha256 = "18r53f5vri8xaj53zskadnxqxs60akxmwkq54xnb4lvg5cks9hrr";
+      name = "kscreenlocker-5.5.4.tar.xz";
+    };
+  };
+  ksshaskpass = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/ksshaskpass-5.5.4.tar.xz";
+      sha256 = "0hlgf7896qksivmf79ks0xcqndjvmmq13ywrkc0l43pcj50ydhj2";
+      name = "ksshaskpass-5.5.4.tar.xz";
+    };
+  };
+  ksysguard = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/ksysguard-5.5.4.tar.xz";
+      sha256 = "1hbq8ppz9ijkk032aldrxyfwk1yrpjchfy6w6mg836bi8f69i1kc";
+      name = "ksysguard-5.5.4.tar.xz";
+    };
+  };
+  kwallet-pam = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kwallet-pam-5.5.4.tar.xz";
+      sha256 = "0cj9iq7ba24lccgj3h4fpa97bcm3lw3yz43hfhldiwdkzl1pydhl";
+      name = "kwallet-pam-5.5.4.tar.xz";
+    };
+  };
+  kwayland = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kwayland-5.5.4.tar.xz";
+      sha256 = "1cprg187h8pny86910m08pzyvknbcqa9x3xbqh7flrpw0rvrg5wp";
+      name = "kwayland-5.5.4.tar.xz";
+    };
+  };
+  kwayland-integration = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kwayland-integration-5.5.4.tar.xz";
+      sha256 = "07vv7gjqgmgn766p6nifn2i835rdhs6kvp24a5fqnh8ad24m8fjy";
+      name = "kwayland-integration-5.5.4.tar.xz";
+    };
+  };
+  kwin = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kwin-5.5.4.tar.xz";
+      sha256 = "1015a0d3yi5b4isfkrl3w3mdslh0r1xyhvy9z8liz3wnxgrajwj8";
+      name = "kwin-5.5.4.tar.xz";
+    };
+  };
+  kwrited = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/kwrited-5.5.4.tar.xz";
+      sha256 = "01d8q3hj5frhmafsavgvyz2nlbd4ma4fsx12dhjyxqsgxdvvgffh";
+      name = "kwrited-5.5.4.tar.xz";
+    };
+  };
+  libkscreen = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/libkscreen-5.5.4.tar.xz";
+      sha256 = "15q7x844x8cz15b3mkh4lwygvrx66s0fl706b221p3my54n63ymf";
+      name = "libkscreen-5.5.4.tar.xz";
+    };
+  };
+  libksysguard = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/libksysguard-5.5.4.tar.xz";
+      sha256 = "1irrb3im0gr8yhkp570bqipbqz8igpxr2k4kxb2c04111npkqmw1";
+      name = "libksysguard-5.5.4.tar.xz";
+    };
+  };
+  milou = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/milou-5.5.4.tar.xz";
+      sha256 = "0dc8jbk0yihqv5jxd4i12rmvfyyp63b6hx9q22qjrj5gkda1cddl";
+      name = "milou-5.5.4.tar.xz";
+    };
+  };
+  oxygen = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/oxygen-5.5.4.tar.xz";
+      sha256 = "10fjwk1aznpkrnal961kfwpjjil2iy2n0x96h26bh91l4insix1v";
+      name = "oxygen-5.5.4.tar.xz";
+    };
+  };
+  plasma-desktop = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-desktop-5.5.4.tar.xz";
+      sha256 = "0lkjgbqinxy40w6z01akpihljqpm7bachmxqmcp6fjnzawql2xqd";
+      name = "plasma-desktop-5.5.4.tar.xz";
+    };
+  };
+  plasma-mediacenter = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-mediacenter-5.5.4.tar.xz";
+      sha256 = "1rn7qffd11dljx1il7cw74wbqf4lwmmlcv19yxj08fdrp5ylqr8a";
+      name = "plasma-mediacenter-5.5.4.tar.xz";
+    };
+  };
+  plasma-nm = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-nm-5.5.4.tar.xz";
+      sha256 = "0bjfcsavrqx4i4c0ynfmdna7fnmabm8970h3dnx7ihwsqgjf5q31";
+      name = "plasma-nm-5.5.4.tar.xz";
+    };
+  };
+  plasma-pa = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-pa-5.5.4.tar.xz";
+      sha256 = "0d1cdixgxa2vsgv47hinh5nsbf2bln3ppdlrnzz9vglian0z7879";
+      name = "plasma-pa-5.5.4.tar.xz";
+    };
+  };
+  plasma-sdk = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-sdk-5.5.4.tar.xz";
+      sha256 = "0fdx4f8z00276s1p1v1bkbrhy59jswk2dj8kcj96r2rk3xzcg0ax";
+      name = "plasma-sdk-5.5.4.tar.xz";
+    };
+  };
+  plasma-workspace = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-workspace-5.5.4.tar.xz";
+      sha256 = "0zh96qq0nl1c6bni7vnciba548f3cjacsi06n2rv05356j1fp87h";
+      name = "plasma-workspace-5.5.4.tar.xz";
+    };
+  };
+  plasma-workspace-wallpapers = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/plasma-workspace-wallpapers-5.5.4.tar.xz";
+      sha256 = "0p111f95di11k4v19c1mg694c71825najmi8dzj2qrif5sb2vvsn";
+      name = "plasma-workspace-wallpapers-5.5.4.tar.xz";
+    };
+  };
+  polkit-kde-agent = {
+    version = "1-5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/polkit-kde-agent-1-5.5.4.tar.xz";
+      sha256 = "116sj9s45n3qcgfsdz5hh6a73b0hldgcnxbpvi4320xpny316vh2";
+      name = "polkit-kde-agent-1-5.5.4.tar.xz";
+    };
+  };
+  powerdevil = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/powerdevil-5.5.4.tar.xz";
+      sha256 = "0i0i55g72yb9z8agv1yyrx98l3s0fs5wn51kz571vqqrw6m3wn7l";
+      name = "powerdevil-5.5.4.tar.xz";
+    };
+  };
+  sddm-kcm = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/sddm-kcm-5.5.4.tar.xz";
+      sha256 = "04vh4f2hg5584acb5ywf1i8z6lvz0fcs7zh085bm7pkx5l60l59b";
+      name = "sddm-kcm-5.5.4.tar.xz";
+    };
+  };
+  systemsettings = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/systemsettings-5.5.4.tar.xz";
+      sha256 = "1i7ljxsnwf2kwd05kzxirbyaxj3w5kyr0jq9j0iy3jlz97p4jkpv";
+      name = "systemsettings-5.5.4.tar.xz";
+    };
+  };
+  user-manager = {
+    version = "5.5.4";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.5.4/user-manager-5.5.4.tar.xz";
+      sha256 = "17lki4y77rq1n100p74q4n6sm3l5dxvv996wf4w1j2n2aiw89p4j";
+      name = "user-manager-5.5.4.tar.xz";
+    };
+  };
+}
diff --git a/pkgs/desktops/kde-5/plasma-5.5/systemsettings.nix b/pkgs/desktops/kde-5/plasma-5.5/systemsettings.nix
new file mode 100644
index 000000000000..a921e153dbc2
--- /dev/null
+++ b/pkgs/desktops/kde-5/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"
+  '';
+}