about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/kde-frameworks
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/kde-frameworks')
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/attica.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix19
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix185
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix20
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch40
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh112
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/default.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-debug-module-loader.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-follow-symlinks.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/series2
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix32
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdewebkit.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix33
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh5
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kemoticons.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kholidays.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix19
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0001-kinit-libpath.patch45
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0002-start_kdeinit-path.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0003-kdeinit-extra-libs.patch59
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0004-start_kdeinit-environ-hard-limit.patch29
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/default.nix39
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/series3
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/kio-debug-module-loader.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch28
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/series2
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff.nix24
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch26
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/series2
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix9
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix19
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/series2
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix19
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix9
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix22
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/series1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix21
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/solid.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix661
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix16
117 files changed, 2734 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/attica.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/attica.nix
new file mode 100644
index 000000000000..0766a589a2e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/attica.nix
@@ -0,0 +1,12 @@
+{ mkDerivation, lib, extra-cmake-modules, qtbase }:
+
+mkDerivation {
+  name = "attica";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix
new file mode 100644
index 000000000000..d5da9f5af176
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kauth, kconfig, kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n,
+  kidletime, kio, lmdb, qtbase, qtdeclarative, solid,
+}:
+
+mkDerivation {
+  name = "baloo";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kauth kconfig kcrash kdbusaddons ki18n kio kidletime lmdb qtdeclarative
+    solid
+  ];
+  propagatedBuildInputs = [ kcoreaddons kfilemetadata qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix
new file mode 100644
index 000000000000..9717e770ed51
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix
@@ -0,0 +1,19 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, qtbase, qtdeclarative
+}:
+
+mkDerivation {
+  name = "bluez-qt";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtdeclarative ];
+  propagatedBuildInputs = [ qtbase ];
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt \
+      --replace /lib/udev/rules.d "$bin/lib/udev/rules.d"
+  '';
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
new file mode 100644
index 000000000000..d9192b940364
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, lib, extra-cmake-modules, gtk3, qtsvg, hicolor-icon-theme }:
+
+mkDerivation {
+  name = "breeze-icons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules gtk3 ];
+  buildInputs = [ qtsvg ];
+  propagatedBuildInputs = [
+    hicolor-icon-theme
+  ];
+  dontDropIconThemeCache = true;
+  outputs = [ "out" ]; # only runtime outputs
+  postInstall = ''
+    gtk-update-icon-cache "''${out:?}/share/icons/breeze"
+    gtk-update-icon-cache "''${out:?}/share/icons/breeze-dark"
+  '';
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix
new file mode 100644
index 000000000000..7ce3954e286c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix
@@ -0,0 +1,185 @@
+/*
+
+# New packages
+
+READ THIS FIRST
+
+This module is for official packages in KDE Frameworks 5. All available packages
+are listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see
+below).
+
+IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
+
+Many of the packages released upstream are not yet built in Nixpkgs due to lack
+of demand. To add a Nixpkgs build for an upstream package, copy one of the
+existing packages here and modify it as necessary.
+
+# Updates
+
+1. Update the URL in `./fetch.sh`.
+2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/kde-frameworks`
+   from the top of the Nixpkgs tree.
+3. Use `nox-review wip` to check that everything builds.
+4. Commit the changes and open a pull request.
+
+*/
+
+{ libsForQt5, lib, fetchurl }:
+
+let
+
+  srcs = import ./srcs.nix {
+    inherit fetchurl;
+    mirror = "mirror://kde";
+  };
+
+  mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
+
+  packages = self: with self;
+    # SUPPORT
+    let
+
+      propagate = out:
+        let setupHook = { writeScript }:
+              writeScript "setup-hook" ''
+                if [ "''${hookName:-}" != postHook ]; then
+                    postHooks+=("source @dev@/nix-support/setup-hook")
+                else
+                    # Propagate $dev so that this setup hook is propagated
+                    # But only if there is a separate $dev output
+                    if [ "''${outputDev:?}" != out ]; then
+                        propagatedBuildInputs="''${propagatedBuildInputs-} @dev@"
+                    fi
+                fi
+              '';
+        in callPackage setupHook {};
+
+      propagateBin = propagate "bin";
+
+      callPackage = self.newScope {
+
+        inherit propagate propagateBin;
+
+        mkDerivation = args:
+          let
+
+            inherit (args) name;
+            inherit (srcs.${name}) src version;
+
+            outputs = args.outputs or [ "bin" "dev" "out" ];
+            hasSeparateDev = lib.elem "dev" outputs;
+
+            defaultSetupHook = if hasSeparateDev then propagateBin else null;
+            setupHook = args.setupHook or defaultSetupHook;
+
+            meta = {
+              homepage = http://www.kde.org;
+              license = with lib.licenses; [
+                lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
+              ];
+              maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
+              platforms = lib.platforms.linux;
+            } // (args.meta or {});
+
+          in mkDerivation (args // {
+            name = "${name}-${version}";
+            inherit meta outputs setupHook src;
+          });
+
+      };
+
+    in {
+      extra-cmake-modules = callPackage ./extra-cmake-modules {};
+
+    # TIER 1
+      attica = callPackage ./attica.nix {};
+      bluez-qt = callPackage ./bluez-qt.nix {};
+      breeze-icons = callPackage ./breeze-icons.nix {};
+      kapidox = callPackage ./kapidox.nix {};
+      karchive = callPackage ./karchive.nix {};
+      kcalendarcore = callPackage ./kcalendarcore.nix {};
+      kcodecs = callPackage ./kcodecs.nix {};
+      kconfig = callPackage ./kconfig.nix {};
+      kcontacts = callPackage ./kcontacts.nix {};
+      kcoreaddons = callPackage ./kcoreaddons.nix {};
+      kdbusaddons = callPackage ./kdbusaddons.nix {};
+      kdnssd = callPackage ./kdnssd.nix {};
+      kguiaddons = callPackage ./kguiaddons.nix {};
+      ki18n = callPackage ./ki18n.nix {};
+      kidletime = callPackage ./kidletime.nix {};
+      kitemmodels = callPackage ./kitemmodels.nix {};
+      kitemviews = callPackage ./kitemviews.nix {};
+      kplotting = callPackage ./kplotting.nix {};
+      kwayland = callPackage ./kwayland.nix {};
+      kwidgetsaddons = callPackage ./kwidgetsaddons.nix {};
+      kwindowsystem = callPackage ./kwindowsystem {};
+      modemmanager-qt = callPackage ./modemmanager-qt.nix {};
+      networkmanager-qt = callPackage ./networkmanager-qt.nix {};
+      oxygen-icons5 = callPackage ./oxygen-icons5.nix {};
+      prison = callPackage ./prison.nix {};
+      solid = callPackage ./solid.nix {};
+      sonnet = callPackage ./sonnet.nix {};
+      syntax-highlighting = callPackage ./syntax-highlighting.nix {};
+      threadweaver = callPackage ./threadweaver.nix {};
+      kirigami2 = callPackage ./kirigami2.nix {};
+      kholidays = callPackage ./kholidays.nix {};
+
+    # TIER 2
+      kactivities = callPackage ./kactivities.nix {};
+      kactivities-stats = callPackage ./kactivities-stats.nix {};
+      kauth = callPackage ./kauth {};
+      kcompletion = callPackage ./kcompletion.nix {};
+      kcrash = callPackage ./kcrash.nix {};
+      kdoctools = callPackage ./kdoctools {};
+      kfilemetadata = callPackage ./kfilemetadata {};
+      kimageformats = callPackage ./kimageformats.nix {};
+      kjobwidgets = callPackage ./kjobwidgets.nix {};
+      knotifications = callPackage ./knotifications.nix {};
+      kpackage = callPackage ./kpackage {};
+      kpty = callPackage ./kpty.nix {};
+      kunitconversion = callPackage ./kunitconversion.nix {};
+      syndication = callPackage ./syndication.nix {};
+
+    # TIER 3
+      baloo = callPackage ./baloo.nix {};
+      kbookmarks = callPackage ./kbookmarks.nix {};
+      kcmutils = callPackage ./kcmutils {};
+      kconfigwidgets = callPackage ./kconfigwidgets {};
+      kdeclarative = callPackage ./kdeclarative.nix {};
+      kded = callPackage ./kded.nix {};
+      kdesignerplugin = callPackage ./kdesignerplugin.nix {};
+      kdesu = callPackage ./kdesu.nix {};
+      kdewebkit = callPackage ./kdewebkit.nix {};
+      kemoticons = callPackage ./kemoticons.nix {};
+      kglobalaccel = callPackage ./kglobalaccel.nix {};
+      kiconthemes = callPackage ./kiconthemes {};
+      kinit = callPackage ./kinit {};
+      kio = callPackage ./kio {};
+      knewstuff = callPackage ./knewstuff.nix {};
+      knotifyconfig = callPackage ./knotifyconfig.nix {};
+      kparts = callPackage ./kparts.nix {};
+      kpeople = callPackage ./kpeople.nix {};
+      krunner = callPackage ./krunner.nix {};
+      kservice = callPackage ./kservice {};
+      ktexteditor = callPackage ./ktexteditor.nix {};
+      ktextwidgets = callPackage ./ktextwidgets.nix {};
+      kwallet = callPackage ./kwallet.nix {};
+      kxmlgui = callPackage ./kxmlgui.nix {};
+      kxmlrpcclient = callPackage ./kxmlrpcclient.nix {};
+      plasma-framework = callPackage ./plasma-framework.nix {};
+      kpurpose = callPackage ./purpose.nix {};
+
+    # TIER 4
+      frameworkintegration = callPackage ./frameworkintegration.nix {};
+
+    # PORTING AIDS
+      kdelibs4support = callPackage ./kdelibs4support {};
+      khtml = callPackage ./khtml.nix {};
+      kjs = callPackage ./kjs.nix {};
+      kjsembed = callPackage ./kjsembed.nix {};
+      kmediaplayer = callPackage ./kmediaplayer.nix {};
+      kross = callPackage ./kross.nix {};
+
+    };
+
+in lib.makeScope libsForQt5.newScope packages
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix
new file mode 100644
index 000000000000..654eb94b51ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, lib, copyPathsToStore, cmake, pkgconfig }:
+
+mkDerivation {
+  name = "extra-cmake-modules";
+
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  outputs = [ "out" ];  # this package has no runtime components
+
+  propagatedBuildInputs = [ cmake pkgconfig ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
+    platforms = platforms.linux ++ platforms.darwin;
+    homepage = http://www.kde.org;
+    license = licenses.bsd2;
+    maintainers = [ maintainers.ttuegel ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch
new file mode 100644
index 000000000000..804fffc8fdcb
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/nix-lib-path.patch
@@ -0,0 +1,40 @@
+diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake
+index c1d056b..d9e19f0 100644
+--- a/kde-modules/KDEInstallDirs.cmake
++++ b/kde-modules/KDEInstallDirs.cmake
+@@ -242,35 +242,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' if:
+-#  - we are on a Linux, kFreeBSD or Hurd system but NOT cross-compiling
+-#  - we are NOT on debian
+-#  - we are NOT on flatpak
+-#  - 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 https://wiki.debian.org/Multiarch
+-if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
+-   AND NOT CMAKE_CROSSCOMPILING
+-   AND NOT EXISTS "/etc/arch-release"
+-   AND NOT DEFINED ENV{FLATPAK_ID})
+-  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/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series
new file mode 100644
index 000000000000..b4569e50a5f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/series
@@ -0,0 +1 @@
+nix-lib-path.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh
new file mode 100644
index 000000000000..4135f6bfd7aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh
@@ -0,0 +1,112 @@
+ecmEnvHook() {
+    addToSearchPath XDG_DATA_DIRS "$1/share"
+    addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg"
+}
+addEnvHooks "$targetOffset" ecmEnvHook
+
+ecmPostHook() {
+    # 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}/libexec"
+    cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
+    cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
+    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML"
+    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg"
+    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputBin}/share/kservices5"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputBin}/share/kservicetypes5"
+    cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputBin}/share/kxmlgui5"
+    cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputBin}/share/knotifications5"
+    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
+    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds"
+    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates"
+    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers"
+    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications"
+    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories"
+    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages"
+    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata"
+    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man"
+    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services"
+    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc"
+    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg"
+    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart"
+
+    if [ -n "${qtPluginPrefix-}" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/$qtPluginPrefix"
+        cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/$qtPluginPrefix"
+    fi
+
+    if [ -n "${qtQmlPrefix-}" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/$qtQmlPrefix"
+    fi
+}
+postHooks+=(ecmPostHook)
+
+xdgDataSubdirs=( \
+    "config.kcfg" "kconf_update" "kservices5" "kservicetypes5" \
+    "kxmlgui5" "knotifications5" "icons" "locale" "sounds" "templates" \
+    "wallpapers" "applications" "desktop-directories" "mime" "appdata" "dbus-1" \
+)
+
+ecmHostPathSeen=( )
+
+ecmUnseenHostPath() {
+    for pkg in "${ecmHostPathSeen[@]}"
+    do
+        if [ "${pkg:?}" == "$1" ]
+        then
+            return 1
+        fi
+    done
+
+    ecmHostPathSeen+=("$1")
+    return 0
+}
+
+ecmHostPathHook() {
+    ecmUnseenHostPath "$1" || return 0
+
+    local xdgConfigDir="$1/etc/xdg"
+    if [ -d "$xdgConfigDir" ]
+    then
+        qtWrapperArgs+=(--prefix XDG_CONFIG_DIRS : "$xdgConfigDir")
+    fi
+
+    for xdgDataSubdir in "${xdgDataSubdirs[@]}"
+    do
+        if [ -d "$1/share/$xdgDataSubdir" ]
+        then
+            qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$1/share")
+            break
+        fi
+    done
+
+    local manDir="$1/man"
+    if [ -d "$manDir" ]
+    then
+        qtWrapperArgs+=(--prefix MANPATH : "$manDir")
+    fi
+
+    local infoDir="$1/info"
+    if [ -d "$infoDir" ]
+    then
+        qtWrapperArgs+=(--prefix INFOPATH : "$infoDir")
+    fi
+
+    if [ -d "$1/dbus-1" ]
+    then
+        propagatedUserEnvPkgs+=" $1"
+    fi
+}
+addEnvHooks "$targetOffset" ecmHostPathHook
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh b/nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh
new file mode 100644
index 000000000000..d4fcf620db60
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh
@@ -0,0 +1 @@
+WGET_ARGS=( https://download.kde.org/stable/frameworks/5.66/ )
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix
new file mode 100644
index 000000000000..58b064806e52
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kbookmarks, kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kio,
+  knewstuff, knotifications, kpackage, kwidgetsaddons, libXcursor, qtx11extras
+}:
+
+mkDerivation {
+  name = "frameworkintegration";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kbookmarks kcompletion kconfig ki18n kio knewstuff knotifications kpackage
+    kwidgetsaddons libXcursor qtx11extras
+  ];
+  propagatedBuildInputs = [ kconfigwidgets kiconthemes ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix
new file mode 100644
index 000000000000..b558306248ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  boost, kactivities, kconfig, qtbase,
+}:
+
+mkDerivation {
+  name = "kactivities-stats";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ boost kactivities kconfig ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix
new file mode 100644
index 000000000000..eabac6aadd7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  boost, kconfig, kcoreaddons, kio, kwindowsystem, qtbase, qtdeclarative,
+}:
+
+mkDerivation {
+  name = "kactivities";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    boost kconfig kcoreaddons kio kwindowsystem qtdeclarative
+  ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix
new file mode 100644
index 000000000000..ca5e773a45b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix
@@ -0,0 +1,10 @@
+{ mkDerivation, lib, extra-cmake-modules, python }:
+
+mkDerivation {
+  name = "kapidox";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules python ];
+  postFixup = ''
+    moveToOutput bin $bin
+  '';
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix
new file mode 100644
index 000000000000..8c55f8da6a0c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  bzip2, lzma, qtbase, zlib,
+}:
+
+mkDerivation {
+  name = "karchive";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ bzip2 lzma zlib ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch
new file mode 100644
index 000000000000..c66f5ecd008f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/cmake-install-paths.patch
@@ -0,0 +1,17 @@
+Index: kauth-5.18.0/KF5AuthConfig.cmake.in
+===================================================================
+--- kauth-5.18.0.orig/KF5AuthConfig.cmake.in
++++ kauth-5.18.0/KF5AuthConfig.cmake.in
+@@ -4,9 +4,9 @@ set(KAUTH_STUB_FILES_DIR "@PACKAGE_KDE_I
+ 
+ set(KAUTH_BACKEND_NAME "@KAUTH_BACKEND_NAME@")
+ set(KAUTH_HELPER_BACKEND_NAME "@KAUTH_HELPER_BACKEND_NAME@")
+-set(KAUTH_POLICY_FILES_INSTALL_DIR "@KAUTH_POLICY_FILES_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
++set(KAUTH_POLICY_FILES_INSTALL_DIR "${KDE_INSTALL_DATADIR}/polkit-1/actions")
++set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}")
++set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${KDE_INSTALL_LIBEXECDIR}")
+ 
+ find_dependency(KF5CoreAddons "@KF5_DEP_VERSION@")
+ 
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/default.nix
new file mode 100644
index 000000000000..c94c8b91ecd2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/default.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, copyPathsToStore, propagate,
+  extra-cmake-modules, kcoreaddons, polkit-qt, qttools
+}:
+
+mkDerivation {
+  name = "kauth";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ polkit-qt qttools ];
+  propagatedBuildInputs = [ kcoreaddons ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  # library stores reference to plugin path,
+  # separating $out from $bin would create a reference cycle
+  outputs = [ "out" "dev" ];
+  setupHook = propagate "out";
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
new file mode 100644
index 000000000000..dc2339632e45
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, qttools,
+  kcodecs, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kwidgetsaddons,
+  kxmlgui, qtbase,
+}:
+
+mkDerivation {
+  name = "kbookmarks";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [
+    kcodecs kconfig kconfigwidgets kcoreaddons kiconthemes kxmlgui
+  ];
+  propagatedBuildInputs = [ kwidgetsaddons qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix
new file mode 100644
index 000000000000..e0b6c5313bb9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  lib,
+  extra-cmake-modules,
+  libical
+}:
+
+mkDerivation {
+  name = "kcalendarcore";
+  meta = {
+    maintainers = [ lib.maintainers.nyanloutre ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ libical ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix
new file mode 100644
index 000000000000..0c661dcdd48e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/default.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules,
+  kconfigwidgets, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews,
+  kpackage, kservice, kxmlgui, qtdeclarative,
+}:
+
+mkDerivation {
+  name = "kcmutils";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcoreaddons kdeclarative ki18n kiconthemes kitemviews kpackage kxmlgui
+    qtdeclarative
+  ];
+  propagatedBuildInputs = [ kconfigwidgets kservice ];
+  patches = (copyPathsToStore (lib.readPathsFromFile ./. ./series));
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-debug-module-loader.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-debug-module-loader.patch
new file mode 100644
index 000000000000..0411755f45a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-debug-module-loader.patch
@@ -0,0 +1,13 @@
+Index: kcmutils-5.33.0/src/kcmoduleloader.cpp
+===================================================================
+--- kcmutils-5.33.0.orig/src/kcmoduleloader.cpp
++++ kcmutils-5.33.0/src/kcmoduleloader.cpp
+@@ -96,7 +96,7 @@ KCModule *KCModuleLoader::loadModule(con
+             KPluginLoader loader(KPluginLoader::findPlugin(QLatin1String("kcms/") + mod.service()->library()));
+             KPluginFactory* factory = loader.factory();
+             if (!factory) {
+-                qWarning() << "Error loading plugin:" << loader.errorString();
++                qWarning() << "Error loading KCM plugin" << mod.service()->library() << loader.errorString();
+             } else {
+                 KQuickAddons::ConfigModule *cm = factory->create<KQuickAddons::ConfigModule >();
+                 if (!cm) {
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-follow-symlinks.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-follow-symlinks.patch
new file mode 100644
index 000000000000..cc041b9aa3b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-follow-symlinks.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kpluginselector.cpp b/src/kpluginselector.cpp
+index 137c865..097ab75 100644
+--- a/src/kpluginselector.cpp
++++ b/src/kpluginselector.cpp
+@@ -303,7 +303,7 @@ void KPluginSelector::addPlugins(const QString &componentName,
+     QStringList desktopFileNames;
+     const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, componentName + QStringLiteral("/kpartplugins"), QStandardPaths::LocateDirectory);
+     for (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());
+         }
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/series
new file mode 100644
index 000000000000..f2c22554a455
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils/series
@@ -0,0 +1,2 @@
+kcmutils-follow-symlinks.patch
+kcmutils-debug-module-loader.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix
new file mode 100644
index 000000000000..978db644a56f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, lib, extra-cmake-modules, qtbase, qttools, gperf }:
+
+mkDerivation {
+  name = "kcodecs";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools gperf ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix
new file mode 100644
index 000000000000..fdfe28db6c04
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kconfig, kwidgetsaddons, qtbase, qttools
+}:
+
+mkDerivation {
+  name = "kcompletion";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfig kwidgetsaddons qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix
new file mode 100644
index 000000000000..2650843aa55d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix
@@ -0,0 +1,12 @@
+{ mkDerivation, lib, extra-cmake-modules, qtbase, qttools }:
+
+mkDerivation {
+  name = "kconfig";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..3b6ea27d41e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/0001-qdiriterator-follow-symlinks.patch
@@ -0,0 +1,18 @@
+diff --git a/src/khelpclient.cpp b/src/khelpclient.cpp
+index fbbc0fa..cb78741 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);
+     for (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);
+@@ -75,4 +75,3 @@ void KHelpClient::invokeHelp(const QString &anchor, const QString &_appname)
+     // launch khelpcenter, or a browser for URIs not handled by khelpcenter
+     QDesktopServices::openUrl(url);
+ }
+-
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix
new file mode 100644
index 000000000000..3d7c7cdedefa
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib, extra-cmake-modules,
+  kauth, kcodecs, kconfig, kdoctools, kguiaddons, ki18n, kwidgetsaddons, qttools, qtbase,
+}:
+
+mkDerivation {
+  name = "kconfigwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kguiaddons ki18n qtbase qttools ];
+  propagatedBuildInputs = [ kauth kcodecs kconfig kwidgetsaddons ];
+  patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
+  outputs = [ "out" "dev" ];
+  outputBin = "dev";
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix
new file mode 100644
index 000000000000..74b6652aee2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcoreaddons, kconfig, kcodecs, ki18n, qtbase,
+}:
+
+mkDerivation {
+  name = "kcontacts";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kconfig kcodecs ki18n qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix
new file mode 100644
index 000000000000..d5a407ee16f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qttools, shared-mime-info
+}:
+
+mkDerivation {
+  name = "kcoreaddons";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools shared-mime-info ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix
new file mode 100644
index 000000000000..d45d73d33e41
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcoreaddons, kwindowsystem, qtbase, qtx11extras,
+}:
+
+mkDerivation {
+  name = "kcrash";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kwindowsystem qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix
new file mode 100644
index 000000000000..c94167d5d76d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qttools, qtx11extras
+}:
+
+mkDerivation {
+  name = "kdbusaddons";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix
new file mode 100644
index 000000000000..34e01b4c1b62
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, extra-cmake-modules,
+  epoxy, kconfig, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage,
+  kwidgetsaddons, kwindowsystem, qtdeclarative
+}:
+
+mkDerivation {
+  name = "kdeclarative";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    epoxy kglobalaccel kguiaddons ki18n kiconthemes kio kwidgetsaddons
+    kwindowsystem
+  ];
+  propagatedBuildInputs = [ kconfig kpackage qtdeclarative ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix
new file mode 100644
index 000000000000..65377789582e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, propagate,
+  extra-cmake-modules, kdoctools,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kinit, kservice, qtbase,
+}:
+
+mkDerivation {
+  name = "kded";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kcoreaddons kcrash kdbusaddons kinit kservice qtbase
+  ];
+  outputs = [ "out" "dev" ];
+  setupHook = propagate "out";
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix
new file mode 100644
index 000000000000..7e3de9d4d141
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix
@@ -0,0 +1,32 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  docbook_xml_dtd_45, extra-cmake-modules, kdoctools,
+  kauth, karchive, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kcrash,
+  kdbusaddons, kded, kdesignerplugin, kemoticons, kglobalaccel, kguiaddons,
+  ki18n, kiconthemes, kio, kitemmodels, kinit, knotifications, kparts, kservice,
+  ktextwidgets, kunitconversion, kwidgetsaddons, kwindowsystem, kxmlgui,
+  networkmanager, qtbase, qtsvg, qttools, qtx11extras, xorg
+}:
+
+mkDerivation {
+  name = "kdelibs4support";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  propagatedNativeBuildInputs = [ kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kded kglobalaccel ki18n kio kservice kwidgetsaddons
+    kxmlgui networkmanager qtsvg qtx11extras xorg.libSM
+  ];
+  propagatedBuildInputs = [
+    kauth karchive kconfigwidgets kcoreaddons kcrash kdbusaddons kdesignerplugin
+    kemoticons kguiaddons kiconthemes kitemmodels kinit knotifications kparts
+    ktextwidgets kunitconversion kwindowsystem qtbase
+  ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXML4_DTD_VERSION=4.5"
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch
new file mode 100644
index 000000000000..eabb70254483
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/nix-kde-include-dir.patch
@@ -0,0 +1,13 @@
+Index: kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+===================================================================
+--- kdelibs4support-5.18.0.orig/src/kdecore/kstandarddirs.cpp
++++ kdelibs4support-5.18.0/src/kdecore/kstandarddirs.cpp
+@@ -292,7 +292,7 @@ static QString relativeInstallPath(const
+             return QFile::decodeName(ICON_INSTALL_DIR "/");
+         }
+         if (strcmp("include", type) == 0) {
+-            return QFile::decodeName(INCLUDE_INSTALL_DIR "/");
++            return QFile::decodeName(qgetenv("NIX_KDE_INCLUDE_DIR"));
+         }
+         break;
+     case 'l':
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/series
new file mode 100644
index 000000000000..9b08ab208774
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/series
@@ -0,0 +1 @@
+nix-kde-include-dir.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh
new file mode 100644
index 000000000000..21ac2e83b5da
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/setup-hook.sh
@@ -0,0 +1 @@
+export NIX_KDE_INCLUDE_DIR="@dev@/include/"  # trailing slash is required!
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
new file mode 100644
index 000000000000..8418863eabb5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kio,
+  kitemviews, kplotting, ktextwidgets, kwidgetsaddons, kxmlgui, qttools, sonnet,
+}:
+
+mkDerivation {
+  name = "kdesignerplugin";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kcoreaddons kiconthemes kio kitemviews
+    kplotting ktextwidgets kwidgetsaddons kxmlgui sonnet
+  ];
+  propagatedBuildInputs = [ qttools ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu.nix
new file mode 100644
index 000000000000..df60511b5115
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcoreaddons, ki18n, kpty, kservice, qtbase,
+}:
+
+mkDerivation {
+  name = "kdesu";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons ki18n kpty kservice qtbase ];
+  propagatedBuildInputs = [ kpty ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdewebkit.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdewebkit.nix
new file mode 100644
index 000000000000..9f682b449752
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdewebkit.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, extra-cmake-modules
+, kconfig, kcoreaddons, kio, kparts, qtwebkit
+}:
+
+mkDerivation {
+  name = "kdewebkit";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kconfig kcoreaddons kio kparts ];
+  propagatedBuildInputs = [ qtwebkit ];
+  outputs = [ "out" "dev" ];
+  cmakeFlags = [
+    "-DBUILD_DESIGNERPLUGIN=OFF"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix
new file mode 100644
index 000000000000..9e2f827eff59
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  avahi, qtbase, qttools,
+}:
+
+mkDerivation {
+  name = "kdnssd";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ avahi qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix
new file mode 100644
index 000000000000..68b5c08aa090
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix
@@ -0,0 +1,33 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, docbook_xml_dtd_45, docbook_xsl_ns,
+  karchive, ki18n, qtbase,
+  perl, perlPackages
+}:
+
+mkDerivation {
+  name = "kdoctools";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [
+    extra-cmake-modules
+    # The build system insists on having native Perl.
+    perl perlPackages.URI
+  ];
+  propagatedBuildInputs = [
+    # kdoctools at runtime actually needs Perl for the platform kdoctools is
+    # running on, not necessarily native perl.
+    perl perlPackages.URI
+    qtbase
+  ];
+  buildInputs = [ karchive ki18n ];
+  outputs = [ "out" "dev" ];
+  patches = [ ./kdoctools-no-find-docbook-xml.patch ];
+  cmakeFlags = [
+    "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
+    "-DDocBookXSL_DIR=${docbook_xsl_ns}/xml/xsl/docbook"
+  ];
+  postFixup = ''
+    moveToOutput "share/doc" "$dev"
+    moveToOutput "share/man" "$dev"
+  '';
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch
new file mode 100644
index 000000000000..4e3a33efab32
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/kdoctools-no-find-docbook-xml.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5c4863c..f731775 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,7 +46,6 @@ set_package_properties(LibXml2 PROPERTIES
+                       )
+ 
+ 
+-find_package(DocBookXML4 "4.5")
+ 
+ set_package_properties(DocBookXML4 PROPERTIES
+                        TYPE REQUIRED
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh
new file mode 100644
index 000000000000..2928d9b34dbe
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/setup-hook.sh
@@ -0,0 +1,5 @@
+addXdgData() {
+    addToSearchPath XDG_DATA_DIRS "$1/share"
+}
+
+addEnvHooks "$targetOffset" addXdgData
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kemoticons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kemoticons.nix
new file mode 100644
index 000000000000..b7f4f036db5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kemoticons.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  karchive, kcoreaddons, kservice, qtbase,
+}:
+
+mkDerivation {
+  name = "kemoticons";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive kcoreaddons ];
+  propagatedBuildInputs = [ kservice qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch
new file mode 100644
index 000000000000..732f7b69c828
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/cmake-install-paths.patch
@@ -0,0 +1,13 @@
+Index: kfilemetadata-5.18.0/src/CMakeLists.txt
+===================================================================
+--- kfilemetadata-5.18.0.orig/src/CMakeLists.txt
++++ kfilemetadata-5.18.0/src/CMakeLists.txt
+@@ -49,7 +49,7 @@ install(TARGETS KF5FileMetaData EXPORT K
+ 
+ install(EXPORT KF5FileMetaDataTargets
+         NAMESPACE KF5::
+-        DESTINATION ${LIB_INSTALL_DIR}/cmake/KF5FileMetaData
++        DESTINATION ${KDE_INSTALL_FULL_CMAKEPACKAGEDIR}/KF5FileMetaData
+         FILE KF5FileMetaDataTargets.cmake)
+ 
+ install(FILES
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix
new file mode 100644
index 000000000000..c72cb5b71a43
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules,
+  attr, ebook_tools, exiv2, ffmpeg, karchive, kcoreaddons, ki18n, poppler, qtbase, qtmultimedia, taglib
+}:
+
+mkDerivation {
+  name = "kfilemetadata";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    attr ebook_tools exiv2 ffmpeg karchive kcoreaddons ki18n poppler qtbase qtmultimedia
+    taglib
+  ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/series
new file mode 100644
index 000000000000..d2689425c387
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/series
@@ -0,0 +1 @@
+cmake-install-paths.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix
new file mode 100644
index 000000000000..ca015151e0f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kservice, kwindowsystem,
+  qtbase, qttools, qtx11extras,
+}:
+
+mkDerivation {
+  name = "kglobalaccel";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons kcrash kdbusaddons kservice kwindowsystem qttools
+    qtx11extras
+  ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix
new file mode 100644
index 000000000000..66cd8ddf64f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qtx11extras,
+}:
+
+mkDerivation {
+  name = "kguiaddons";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kholidays.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kholidays.nix
new file mode 100644
index 000000000000..2ede69e74953
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kholidays.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  qtbase, qtdeclarative, qttools,
+}:
+
+mkDerivation {
+  name = "kholidays";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = with lib.maintainers; [ bkchr ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ qtbase qtdeclarative qttools ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix
new file mode 100644
index 000000000000..5bb3078ea867
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, perl,
+  giflib, karchive, kcodecs, kglobalaccel, ki18n, kiconthemes, kio, kjs,
+  knotifications, kparts, ktextwidgets, kwallet, kwidgetsaddons, kwindowsystem,
+  kxmlgui, phonon, qtx11extras, sonnet, gperf
+}:
+
+mkDerivation {
+  name = "khtml";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [
+    giflib karchive kcodecs kglobalaccel ki18n kiconthemes kio knotifications
+    kparts ktextwidgets kwallet kwidgetsaddons kwindowsystem kxmlgui phonon
+    qtx11extras sonnet gperf
+  ];
+  propagatedBuildInputs = [ kjs ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix
new file mode 100644
index 000000000000..69ad2fbc737e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, gettext, python3,
+  qtbase, qtdeclarative, qtscript,
+}:
+
+mkDerivation {
+  name = "ki18n";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedNativeBuildInputs = [ gettext python3 ];
+  buildInputs = [ qtdeclarative qtscript ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch
new file mode 100644
index 000000000000..f7cb0ea3aacc
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default-theme-breeze.patch
@@ -0,0 +1,13 @@
+Index: kiconthemes-5.17.0/src/kicontheme.cpp
+===================================================================
+--- kiconthemes-5.17.0.orig/src/kicontheme.cpp
++++ kiconthemes-5.17.0/src/kicontheme.cpp
+@@ -557,7 +557,7 @@ void KIconTheme::reconfigure()
+ // static
+ QString KIconTheme::defaultThemeName()
+ {
+-    return QStringLiteral("hicolor");
++    return QStringLiteral("breeze");
+ }
+ 
+ void KIconTheme::assignIconsToContextMenu(ContextMenus type,
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix
new file mode 100644
index 000000000000..8faac005f2ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules,
+  breeze-icons, karchive, kcoreaddons, kconfigwidgets, ki18n, kitemviews,
+  qtbase, qtsvg, qttools,
+}:
+
+mkDerivation {
+  name = "kiconthemes";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    breeze-icons karchive kcoreaddons kconfigwidgets ki18n kitemviews
+  ];
+  propagatedBuildInputs = [ qtbase qtsvg qttools ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/series
new file mode 100644
index 000000000000..ab5cc8a3edb2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/series
@@ -0,0 +1 @@
+default-theme-breeze.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix
new file mode 100644
index 000000000000..a1e53bb408bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qtx11extras
+}:
+
+mkDerivation {
+  name = "kidletime";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix
new file mode 100644
index 000000000000..29748a5f7f42
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  ilmbase, karchive, openexr, qtbase
+}:
+
+let inherit (lib) getDev; in
+
+mkDerivation {
+  name = "kimageformats";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive openexr qtbase ];
+  outputs = [ "out" ]; # plugins only
+  CXXFLAGS = "-I${getDev ilmbase}/include/OpenEXR";
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0001-kinit-libpath.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0001-kinit-libpath.patch
new file mode 100644
index 000000000000..21477394c915
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0001-kinit-libpath.patch
@@ -0,0 +1,45 @@
+From 715c5f461b4992dac066601202a673bc551a5e33 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 16 Feb 2020 14:23:31 -0600
+Subject: [PATCH 1/4] kinit-libpath
+
+---
+ src/kdeinit/kinit.cpp | 22 +++++++++-------------
+ 1 file changed, 9 insertions(+), 13 deletions(-)
+
+diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
+index 8fff17a..0801b75 100644
+--- a/src/kdeinit/kinit.cpp
++++ b/src/kdeinit/kinit.cpp
+@@ -622,19 +622,15 @@ static pid_t launch(int argc, const char *_name, const char *args,
+ 
+         if (!libpath.isEmpty()) {
+             if (libpath_relative) {
+-                // NB: Because Qt makes the actual dlopen() call, the
+-                //     RUNPATH of kdeinit is *not* respected - see
+-                //     https://sourceware.org/bugzilla/show_bug.cgi?id=13945
+-                //     - so we try hacking it in ourselves
+-                QString install_lib_dir = QFile::decodeName(
+-                        CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/");
+-                QString orig_libpath = libpath;
+-                libpath = install_lib_dir + libpath;
+-                l.setFileName(libpath);
+-                if (!l.load()) {
+-                    libpath = orig_libpath;
+-                    l.setFileName(libpath);
+-                    l.load();
++                // Try to load the library relative to the active profiles.
++                QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++                // Reverse the profile list.
++                std::reverse(profiles.begin(), profiles.end());
++                for (const QByteArray &profile: profiles) {
++                    if (!profile.isEmpty()) {
++                        l.setFileName(QFile::decodeName(profile) + QStringLiteral("/lib/") + libpath);
++                        if (l.load()) break;
++                    }
+                 }
+             } else {
+                 l.load();
+-- 
+2.23.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0002-start_kdeinit-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0002-start_kdeinit-path.patch
new file mode 100644
index 000000000000..bf25b98d6c56
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0002-start_kdeinit-path.patch
@@ -0,0 +1,25 @@
+From 129cd0ae1e983adc10dbe84e87bcc6f31cb13db8 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 16 Feb 2020 14:23:44 -0600
+Subject: [PATCH 2/4] start_kdeinit-path
+
+---
+ src/start_kdeinit/start_kdeinit_wrapper.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/start_kdeinit/start_kdeinit_wrapper.c b/src/start_kdeinit/start_kdeinit_wrapper.c
+index 891f50c..ef664ad 100644
+--- a/src/start_kdeinit/start_kdeinit_wrapper.c
++++ b/src/start_kdeinit/start_kdeinit_wrapper.c
+@@ -23,7 +23,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-#define EXECUTE CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit"
++#define EXECUTE "/run/wrappers/bin/start_kdeinit"
+ 
+ #if KDEINIT_OOM_PROTECT
+ 
+-- 
+2.23.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0003-kdeinit-extra-libs.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0003-kdeinit-extra-libs.patch
new file mode 100644
index 000000000000..9df8505b2929
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0003-kdeinit-extra-libs.patch
@@ -0,0 +1,59 @@
+From 4f5d0de7e35744cdbfa9e280ee7e15a54cf21abb Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 16 Feb 2020 14:24:07 -0600
+Subject: [PATCH 3/4] kdeinit-extra-libs
+
+---
+ src/kdeinit/kinit.cpp | 22 ++++------------------
+ 1 file changed, 4 insertions(+), 18 deletions(-)
+
+diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
+index 0801b75..622dd5f 100644
+--- a/src/kdeinit/kinit.cpp
++++ b/src/kdeinit/kinit.cpp
+@@ -96,9 +96,9 @@ static const char *extra_libs[] = {
+     "libKF5Parts.5.dylib",
+     "libKF5Plasma.5.dylib"
+ #else
+-    "libKF5KIOCore.so.5",
+-    "libKF5Parts.so.5",
+-    "libKF5Plasma.so.5"
++    NIXPKGS_KF5_KIOCORE,
++    NIXPKGS_KF5_PARTS,
++    NIXPKGS_KF5_PLASMA
+ #endif
+ };
+ #endif
+@@ -1524,20 +1524,6 @@ static int initXconnection()
+ }
+ #endif
+ 
+-#ifndef Q_OS_OSX
+-// Find a shared lib in the lib dir, e.g. libkio.so.
+-// Completely unrelated to plugins.
+-static QString findSharedLib(const QString &lib)
+-{
+-    QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/") + lib;
+-    if (QFile::exists(path)) {
+-        return path;
+-    }
+-    // We could also look in LD_LIBRARY_PATH, but really, who installs the main libs in different prefixes?
+-    return QString();
+-}
+-#endif
+-
+ extern "C" {
+ 
+     static void secondary_child_handler(int)
+@@ -1679,7 +1665,7 @@ int main(int argc, char **argv)
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_OSX)
+     if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) {
+         for (const char *extra_lib : extra_libs) {
+-            const QString extra = findSharedLib(QString::fromLatin1(extra_lib));
++            const QString extra = QString::fromLatin1(extra_lib);
+             if (!extra.isEmpty()) {
+                 QLibrary l(extra);
+                 l.setLoadHints(QLibrary::ExportExternalSymbolsHint);
+-- 
+2.23.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0004-start_kdeinit-environ-hard-limit.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0004-start_kdeinit-environ-hard-limit.patch
new file mode 100644
index 000000000000..34d4726150c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/0004-start_kdeinit-environ-hard-limit.patch
@@ -0,0 +1,29 @@
+From 41e94983dcfbc1667f1b18c5b566aa5c5975edcb Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Mon, 17 Feb 2020 04:45:03 -0600
+Subject: [PATCH 4/4] start_kdeinit-environ-hard-limit
+
+---
+ src/start_kdeinit/start_kdeinit.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/start_kdeinit/start_kdeinit.c b/src/start_kdeinit/start_kdeinit.c
+index f2db3e9..4ff2602 100644
+--- a/src/start_kdeinit/start_kdeinit.c
++++ b/src/start_kdeinit/start_kdeinit.c
+@@ -148,7 +148,11 @@ int main(int argc, char **argv)
+                         ++i) {
+                     unsigned len;
+                     if (read(0, &len, sizeof(unsigned)) == sizeof(unsigned)
+-                            && len && len < (1 << 12)) {
++                            && len) {
++                        if (len >= (1 << 14)) {
++                            fprintf(stderr, "%s: exceeded environment length limit", argv[0]);
++                            return 1;
++                        }
+                         env[ i ] = malloc(len + 1);
+                         if ((unsigned) read(0, env[ i ], len) == len) {
+                             env[ i ][ len ] = '\0';
+-- 
+2.23.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/default.nix
new file mode 100644
index 000000000000..116f475e2f8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/default.nix
@@ -0,0 +1,39 @@
+{
+  mkDerivation, lib, copyPathsToStore, writeScript,
+  extra-cmake-modules, kdoctools,
+  kconfig, kcrash, ki18n, kio, kparts, kservice, kwindowsystem, plasma-framework
+}:
+
+let inherit (lib) getLib; in
+
+mkDerivation {
+  name = "kinit";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kcrash ki18n kio kservice kwindowsystem
+  ];
+  patches = [
+    ./0001-kinit-libpath.patch
+    ./0002-start_kdeinit-path.patch
+    ./0003-kdeinit-extra-libs.patch
+    ./0004-start_kdeinit-environ-hard-limit.patch
+  ];
+  CXXFLAGS = [
+    ''-DNIXPKGS_KF5_KIOCORE=\"${getLib kio}/lib/libKF5KIOCore.so.5\"''
+    ''-DNIXPKGS_KF5_PARTS=\"${getLib kparts}/lib/libKF5Parts.so.5\"''
+    ''-DNIXPKGS_KF5_PLASMA=\"${getLib plasma-framework}/lib/libKF5Plasma.so.5\"''
+  ];
+  setupHook = writeScript "setup-hook.sh" ''
+    kinitFixupOutputHook() {
+        if [ $prefix != ''${!outputBin} ] && [ -d $prefix/lib ]; then
+            mkdir -p ''${!outputBin}/lib
+            find $prefix/lib -maxdepth 1 -name 'libkdeinit5_*.so' -exec ln -s \{\} ''${!outputBin}/lib \;
+            rmdir --ignore-fail-on-non-empty ''${!outputBin}/lib
+        fi
+    }
+
+    fixupOutputHooks+=(kinitFixupOutputHook)
+  '';
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/series
new file mode 100644
index 000000000000..9195a4e8e6b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/series
@@ -0,0 +1,3 @@
+kinit-libpath.patch
+start_kdeinit-path.patch
+kdeinit-extra_libs.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix
new file mode 100644
index 000000000000..fee21a6a9235
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules, kdoctools, qttools,
+  karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
+  kdbusaddons, ki18n, kiconthemes, kitemviews, kjobwidgets, knotifications,
+  kservice, ktextwidgets, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui,
+  qtbase, qtscript, qtx11extras, solid, kcrash
+}:
+
+mkDerivation {
+  name = "kio";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    karchive kconfigwidgets kdbusaddons ki18n kiconthemes knotifications
+    ktextwidgets kwallet kwidgetsaddons kwindowsystem qtscript qtx11extras
+    kcrash
+  ];
+  propagatedBuildInputs = [
+    kbookmarks kcompletion kconfig kcoreaddons kitemviews kjobwidgets kservice
+    kxmlgui qtbase qttools solid
+  ];
+  outputs = [ "out" "dev" ];
+  patches = (copyPathsToStore (lib.readPathsFromFile ./. ./series));
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/kio-debug-module-loader.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/kio-debug-module-loader.patch
new file mode 100644
index 000000000000..d26af49e5eb2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/kio-debug-module-loader.patch
@@ -0,0 +1,13 @@
+Index: kio-5.33.0/src/kiod/kiod_main.cpp
+===================================================================
+--- kio-5.33.0.orig/src/kiod/kiod_main.cpp
++++ kio-5.33.0/src/kiod/kiod_main.cpp
+@@ -60,7 +60,7 @@ void KIOD::loadModule(const QString &nam
+         module = factory->create<KDEDModule>();
+     }
+     if (!module) {
+-        qCWarning(KIOD_CATEGORY) << "Error loading plugin:" << loader.errorString();
++        qCWarning(KIOD_CATEGORY) << "Error loading plugin" << name << loader.errorString();
+         return;
+     }
+     module->setModuleName(name); // makes it register to DBus
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
new file mode 100644
index 000000000000..3e18d304c307
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
@@ -0,0 +1,28 @@
+Index: kio-5.17.0/src/core/ksambashare.cpp
+===================================================================
+--- kio-5.17.0.orig/src/core/ksambashare.cpp
++++ kio-5.17.0/src/core/ksambashare.cpp
+@@ -67,13 +67,18 @@ KSambaSharePrivate::~KSambaSharePrivate(
+ 
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+-    if (QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-            || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))) {
+-        return true;
++    const QByteArray pathEnv = qgetenv("PATH");
++    if (!pathEnv.isEmpty()) {
++        QLatin1Char pathSep(':');
++        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
++        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
++            it->append(QStringLiteral("/smbd"));
++            if (QFile::exists(*it)) {
++                return true;
++            }
++        }
+     }
+ 
+-    //qDebug() << "Samba is not installed!";
+-
+     return false;
+ }
+ 
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/series
new file mode 100644
index 000000000000..5330c40a3306
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/series
@@ -0,0 +1,2 @@
+samba-search-path.patch
+kio-debug-module-loader.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix
new file mode 100644
index 000000000000..f4fc40f6d31d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix
@@ -0,0 +1,11 @@
+{ mkDerivation, extra-cmake-modules, qtbase, qtquickcontrols2, qttranslations }:
+
+mkDerivation {
+  name = "kirigami2";
+  meta = {
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase qtquickcontrols2 qttranslations ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix
new file mode 100644
index 000000000000..91bc3e2b98d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase
+}:
+
+mkDerivation {
+  name = "kitemmodels";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix
new file mode 100644
index 000000000000..004d1ac77a6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qttools
+}:
+
+mkDerivation {
+  name = "kitemviews";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix
new file mode 100644
index 000000000000..810e2bf8c84e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, qttools,
+  kcoreaddons, kwidgetsaddons, qtx11extras
+}:
+
+mkDerivation {
+  name = "kjobwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [ kcoreaddons kwidgetsaddons qtx11extras ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix
new file mode 100644
index 000000000000..311f07241d65
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  pcre, qtbase,
+}:
+
+mkDerivation {
+  name = "kjs";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ pcre qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix
new file mode 100644
index 000000000000..e8cd5070ae53
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools, qttools,
+  ki18n, kjs, qtsvg,
+}:
+
+mkDerivation {
+  name = "kjsembed";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools qttools ];
+  buildInputs = [ ki18n qtsvg ];
+  propagatedBuildInputs = [ kjs ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix
new file mode 100644
index 000000000000..a4714c9e4ad7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix
@@ -0,0 +1,12 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, kparts
+, kxmlgui
+}:
+
+mkDerivation {
+  name = "kmediaplayer";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kparts kxmlgui ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff.nix
new file mode 100644
index 000000000000..df384648e6a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff.nix
@@ -0,0 +1,24 @@
+{
+  mkDerivation, lib, fetchpatch,
+  extra-cmake-modules,
+  attica, karchive, kcompletion, kconfig, kcoreaddons, ki18n, kiconthemes,
+  kio, kitemviews, kservice, ktextwidgets, kwidgetsaddons, kxmlgui, qtbase,
+  qtdeclarative, kirigami2,
+}:
+
+mkDerivation {
+  name = "knewstuff";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    karchive kcompletion kconfig kcoreaddons ki18n kiconthemes kio kitemviews
+    ktextwidgets kwidgetsaddons qtbase qtdeclarative kirigami2
+  ];
+  propagatedBuildInputs = [ attica kservice kxmlgui ];
+
+  patches = [ (fetchpatch {
+    url = "https://github.com/KDE/knewstuff/commit/dbf788c10130eaa3f5ea37a7f22eb4569471aa04.patch";
+    sha256 = "1225rgqg1j120nvhgsahvsq2xlkg91lr37zp14x19krixxgx521j";
+    revert = true;
+  }) ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix
new file mode 100644
index 000000000000..964e1b441154
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, kcodecs, kconfig, kcoreaddons, kwindowsystem
+, libdbusmenu
+, phonon
+, qttools, qtx11extras
+}:
+
+mkDerivation {
+  name = "knotifications";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [
+    kcodecs kconfig kcoreaddons kwindowsystem libdbusmenu phonon qtx11extras
+  ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix
new file mode 100644
index 000000000000..6739f96183c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcompletion, kconfig, ki18n, kio, phonon, qtbase,
+}:
+
+mkDerivation {
+  name = "knotifyconfig";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcompletion kconfig ki18n kio phonon ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch
new file mode 100644
index 000000000000..c1c9efde7f74
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/allow-external-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
+index 5aec9fd..b15c933 100644
+--- a/src/kpackage/package.cpp
++++ b/src/kpackage/package.cpp
+@@ -820,7 +820,7 @@ PackagePrivate::PackagePrivate()
+     : QSharedData(),
+       fallbackPackage(nullptr),
+       metadata(nullptr),
+-      externalPaths(false),
++      externalPaths(true),
+       valid(false),
+       checkedValid(false)
+ {
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix
new file mode 100644
index 000000000000..6779faa50cdc
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules, kdoctools,
+  karchive, kconfig, kcoreaddons, ki18n, qtbase,
+}:
+
+mkDerivation {
+  name = "kpackage";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ karchive kconfig kcoreaddons ki18n qtbase ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..cab334838ee7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,26 @@
+Index: kpackage-5.30.0/src/kpackage/packageloader.cpp
+===================================================================
+--- kpackage-5.30.0.orig/src/kpackage/packageloader.cpp
++++ kpackage-5.30.0/src/kpackage/packageloader.cpp
+@@ -238,7 +238,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 = { QStringLiteral("metadata.json"), QStringLiteral("metadata.desktop") };
+ 
+             QDirIterator it(plugindir, nameFilters, QDir::Files, flags);
+Index: kpackage-5.30.0/src/kpackage/private/packagejobthread.cpp
+===================================================================
+--- kpackage-5.30.0.orig/src/kpackage/private/packagejobthread.cpp
++++ kpackage-5.30.0/src/kpackage/private/packagejobthread.cpp
+@@ -121,7 +121,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/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/series
new file mode 100644
index 000000000000..9b7f076efc70
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/series
@@ -0,0 +1,2 @@
+allow-external-paths.patch
+qdiriterator-follow-symlinks.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix
new file mode 100644
index 000000000000..f657569277a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, ki18n, kiconthemes, kio, kjobwidgets, knotifications,
+  kservice, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+mkDerivation {
+  name = "kparts";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons ki18n kiconthemes kjobwidgets knotifications kservice
+    kwidgetsaddons
+  ];
+  propagatedBuildInputs = [ kio ktextwidgets kxmlgui ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix
new file mode 100644
index 000000000000..04181fd3e13a
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcoreaddons, ki18n, kitemviews, kservice, kwidgetsaddons, qtbase,
+  qtdeclarative,
+}:
+
+mkDerivation {
+  name = "kpeople";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcoreaddons ki18n kitemviews kservice kwidgetsaddons qtdeclarative
+  ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix
new file mode 100644
index 000000000000..1774b044b165
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, lib
+, extra-cmake-modules, qttools, qtbase
+}:
+
+mkDerivation {
+  name = "kplotting";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase qttools ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix
new file mode 100644
index 000000000000..150c5b3d2b26
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix
@@ -0,0 +1,9 @@
+{ mkDerivation, lib, extra-cmake-modules, kcoreaddons, ki18n, qtbase, }:
+
+mkDerivation {
+  name = "kpty";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons ki18n qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix
new file mode 100644
index 000000000000..f45fb5ecd1d0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, lib, extra-cmake-modules, kcompletion, kcoreaddons
+, kdoctools, ki18n, kiconthemes, kio, kparts, kwidgetsaddons
+, kxmlgui, qtbase, qtscript, qtxmlpatterns,
+}:
+
+mkDerivation {
+  name = "kross";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcompletion kcoreaddons kxmlgui ];
+  propagatedBuildInputs = [
+    ki18n kiconthemes kio kparts kwidgetsaddons qtbase qtscript qtxmlpatterns
+  ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix
new file mode 100644
index 000000000000..826999f2f9be
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, ki18n, kio, kservice, plasma-framework, qtbase,
+  qtdeclarative, solid, threadweaver, kwindowsystem
+}:
+
+mkDerivation {
+  name = "krunner";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons ki18n kio kservice qtdeclarative solid
+    threadweaver
+  ];
+  propagatedBuildInputs = [ plasma-framework qtbase kwindowsystem ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix
new file mode 100644
index 000000000000..356e6537a4fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  bison, extra-cmake-modules, flex,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem,
+  qtbase, shared-mime-info,
+}:
+
+mkDerivation {
+  name = "kservice";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedNativeBuildInputs = [ bison flex ];
+  buildInputs = [
+    kcrash kdbusaddons ki18n kwindowsystem qtbase
+  ];
+  propagatedBuildInputs = [ kconfig kcoreaddons ];
+  propagatedUserEnvPkgs = [ shared-mime-info ]; # for kbuildsycoca5
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch
new file mode 100644
index 000000000000..cf98ffb9067f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/no-canonicalize-path.patch
@@ -0,0 +1,13 @@
+Index: kservice-5.21.0/src/sycoca/vfolder_menu.cpp
+===================================================================
+--- kservice-5.21.0.orig/src/sycoca/vfolder_menu.cpp
++++ kservice-5.21.0/src/sycoca/vfolder_menu.cpp
+@@ -415,7 +415,7 @@ VFolderMenu::absoluteDir(const QString &
+     }
+ 
+     if (!relative) {
+-        QString resolved = QDir(dir).canonicalPath();
++      QString resolved = QDir::cleanPath(dir);
+         if (!resolved.isEmpty()) {
+             dir = resolved;
+         }
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..fdd8b4d81a18
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,13 @@
+diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp
+index b125299..0682b90 100644
+--- a/src/sycoca/kbuildsycoca.cpp
++++ b/src/sycoca/kbuildsycoca.cpp
+@@ -207,7 +207,7 @@ bool KBuildSycoca::build()
+         const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
+         qCDebug(SYCOCA) << "Looking for subdir" << m_resourceSubdir << "=>" << dirs;
+         for (const QString &dir : dirs) {
+-            QDirIterator it(dir, QDirIterator::Subdirectories);
++            QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+             while (it.hasNext()) {
+                 const QString filePath = it.next();
+                 Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/series
new file mode 100644
index 000000000000..3ce22dbd35a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/series
@@ -0,0 +1,2 @@
+qdiriterator-follow-symlinks.patch
+no-canonicalize-path.patch
\ No newline at end of file
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
new file mode 100644
index 000000000000..98f9b3f82ca2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, perl,
+  karchive, kconfig, kguiaddons, ki18n, kiconthemes, kio, kparts, libgit2,
+  qtscript, qtxmlpatterns, sonnet, syntax-highlighting, qtquickcontrols,
+  editorconfig-core-c
+}:
+
+mkDerivation {
+  name = "ktexteditor";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [
+    karchive kconfig kguiaddons ki18n kiconthemes kio libgit2 qtscript
+    qtxmlpatterns sonnet syntax-highlighting qtquickcontrols
+    editorconfig-core-c
+  ];
+  propagatedBuildInputs = [ kparts ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix
new file mode 100644
index 000000000000..604066b96394
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, qttools,
+  kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kservice,
+  kwindowsystem, qtbase, sonnet,
+}:
+
+mkDerivation {
+  name = "ktextwidgets";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcompletion kconfig kconfigwidgets kiconthemes kservice kwindowsystem
+  ];
+  propagatedBuildInputs = [ ki18n qtbase qttools sonnet ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix
new file mode 100644
index 000000000000..d6c079fd83b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix
@@ -0,0 +1,9 @@
+{ mkDerivation, lib, extra-cmake-modules, ki18n, qtbase, }:
+
+mkDerivation {
+  name = "kunitconversion";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ ki18n qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix
new file mode 100644
index 000000000000..fca0dedd083e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kconfig, kconfigwidgets, kcoreaddons , kdbusaddons, ki18n,
+  kiconthemes, knotifications, kservice, kwidgetsaddons, kwindowsystem,
+  libgcrypt, qgpgme, qtbase,
+}:
+
+mkDerivation {
+  name = "kwallet";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes
+    knotifications kservice kwidgetsaddons kwindowsystem libgcrypt qgpgme
+  ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix
new file mode 100644
index 000000000000..c19836ed7a72
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, propagateBin,
+  extra-cmake-modules,
+  qtbase, wayland, wayland-protocols
+}:
+
+mkDerivation {
+  name = "kwayland";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ wayland wayland-protocols ];
+  propagatedBuildInputs = [ qtbase ];
+  setupHook = propagateBin; # XDG_CONFIG_DIRS
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix
new file mode 100644
index 000000000000..63a95bc217c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qttools
+}:
+
+mkDerivation {
+  name = "kwidgetsaddons";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix
new file mode 100644
index 000000000000..c075adf02941
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, copyPathsToStore,
+  extra-cmake-modules,
+  libpthreadstubs, libXdmcp,
+  qtbase, qttools, qtx11extras
+}:
+
+mkDerivation {
+  name = "kwindowsystem";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ libpthreadstubs libXdmcp qttools qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  preConfigure = ''
+    NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QT_PLUGIN_PATH=\"''${!outputBin}/$qtPluginPrefix\""
+  '';
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch
new file mode 100644
index 000000000000..27501732210f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/platform-plugins-path.patch
@@ -0,0 +1,25 @@
+Index: kwindowsystem-5.64.0/src/pluginwrapper.cpp
+===================================================================
+--- kwindowsystem-5.64.0.orig/src/pluginwrapper.cpp
++++ kwindowsystem-5.64.0/src/pluginwrapper.cpp
+@@ -37,16 +37,10 @@ Q_GLOBAL_STATIC(KWindowSystemPluginWrapp
+ static QStringList pluginCandidates()
+ {
+     QStringList ret;
+-    const auto paths = QCoreApplication::libraryPaths();
+-    for (const QString &path : paths) {
+-        QDir pluginDir(path + QLatin1String("/kf5/org.kde.kwindowsystem.platforms"));
+-        if (!pluginDir.exists()) {
+-            continue;
+-        }
+-        const auto entries = pluginDir.entryList(QDir::Files | QDir::NoDotAndDotDot);
+-        for (const QString &entry : entries) {
+-            ret << pluginDir.absoluteFilePath(entry);
+-        }
++    QDir pluginDir(QLatin1String(NIXPKGS_QT_PLUGIN_PATH) + QLatin1Literal("/kf5/org.kde.kwindowsystem.platforms"));
++    const auto entries = pluginDir.entryList(QDir::Files | QDir::NoDotAndDotDot);
++    for (const QString &entry : entries) {
++        ret << pluginDir.absoluteFilePath(entry);
+     }
+     return ret;
+ }
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/series b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/series
new file mode 100644
index 000000000000..2cd02056ff81
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/series
@@ -0,0 +1 @@
+platform-plugins-path.patch
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix
new file mode 100644
index 000000000000..5adcf281e622
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, qttools,
+  attica, kconfig, kconfigwidgets, kglobalaccel, ki18n, kiconthemes, kitemviews,
+  ktextwidgets, kwindowsystem, qtbase, sonnet,
+}:
+
+mkDerivation {
+  name = "kxmlgui";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    attica kglobalaccel ki18n kiconthemes kitemviews ktextwidgets kwindowsystem
+    sonnet
+  ];
+  propagatedBuildInputs = [ kconfig kconfigwidgets qtbase qttools ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix
new file mode 100644
index 000000000000..acffde6a7cf1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix
@@ -0,0 +1,10 @@
+{ mkDerivation, lib, extra-cmake-modules, ki18n, kio }:
+
+mkDerivation {
+  name = "kxmlrpcclient";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ ki18n ];
+  propagatedBuildInputs = [ kio ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix
new file mode 100644
index 000000000000..195e90feef6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  modemmanager, qtbase
+}:
+
+mkDerivation {
+  name = "modemmanager-qt";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ modemmanager qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix
new file mode 100644
index 000000000000..4ded321674f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  networkmanager, qtbase,
+}:
+
+mkDerivation {
+  name = "networkmanager-qt";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ networkmanager qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix
new file mode 100644
index 000000000000..2d795bfc50cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix
@@ -0,0 +1,15 @@
+{ mkDerivation
+, lib
+, extra-cmake-modules, qtbase
+}:
+
+mkDerivation {
+  name = "oxygen-icons5";
+  meta = {
+    license = lib.licenses.lgpl3Plus;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtbase ];
+  outputs = [ "out" ]; # only runtime outputs
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix
new file mode 100644
index 000000000000..44005ec7d282
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kactivities, karchive, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons,
+  kdeclarative, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio,
+  knotifications, kpackage, kservice, kwayland, kwindowsystem, kxmlgui,
+  qtbase, qtdeclarative, qtscript, qtx11extras, kirigami2, qtquickcontrols2
+}:
+
+mkDerivation {
+  name = "plasma-framework";
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kactivities karchive kconfig kconfigwidgets kcoreaddons kdbusaddons
+    kdeclarative kglobalaccel kguiaddons ki18n kiconthemes kio knotifications
+    kwayland kwindowsystem kxmlgui qtdeclarative qtscript qtx11extras kirigami2
+    qtquickcontrols2
+  ];
+  propagatedBuildInputs = [ kpackage kservice qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix
new file mode 100644
index 000000000000..cf74ee20c2d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  libdmtx, qrencode, qtbase,
+}:
+
+mkDerivation {
+  name = "prison";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ libdmtx qrencode ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix
new file mode 100644
index 000000000000..1484b2d04891
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, lib, extra-cmake-modules, qtbase
+, qtdeclarative, kconfig, kcoreaddons, ki18n, kio, kirigami2
+}:
+
+mkDerivation {
+  name = "purpose";
+  meta = { maintainers = [ lib.maintainers.bkchr ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    qtbase qtdeclarative kconfig kcoreaddons 
+    ki18n kio kirigami2
+  ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/solid.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid.nix
new file mode 100644
index 000000000000..d1beb03fa620
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib,
+  bison, extra-cmake-modules, flex,
+  media-player-info, qtbase, qtdeclarative, qttools
+}:
+
+mkDerivation {
+  name = "solid";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ bison extra-cmake-modules flex media-player-info ];
+  buildInputs = [ qtdeclarative qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  propagatedUserEnvPkgs = [ media-player-info ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix
new file mode 100644
index 000000000000..cccd92513583
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, hunspell, qtbase, qttools
+}:
+
+mkDerivation {
+  name = "sonnet";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ hunspell qttools ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix
new file mode 100644
index 000000000000..2441ff693590
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix
@@ -0,0 +1,661 @@
+# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh
+{ fetchurl, mirror }:
+
+{
+  attica = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/attica-5.66.0.tar.xz";
+      sha256 = "e87ea061d393104804aa65db69ec3489512b472d8fb821c9fc49ffdcb85177fb";
+      name = "attica-5.66.0.tar.xz";
+    };
+  };
+  baloo = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/baloo-5.66.0.tar.xz";
+      sha256 = "9495869eee72f587efadc8a848c3f76b93a1dcb1914c8e818d7084451107a1f8";
+      name = "baloo-5.66.0.tar.xz";
+    };
+  };
+  bluez-qt = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/bluez-qt-5.66.0.tar.xz";
+      sha256 = "cc3f3fcc1df87b61480549d658c1a27690661aaa4f22a65552efe3f6bf41c887";
+      name = "bluez-qt-5.66.0.tar.xz";
+    };
+  };
+  breeze-icons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/breeze-icons-5.66.0.tar.xz";
+      sha256 = "445a77204c7d9ac398e7f1d1594cd93e719665c85c7fb9ef71fde1ce68cb64d7";
+      name = "breeze-icons-5.66.0.tar.xz";
+    };
+  };
+  extra-cmake-modules = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/extra-cmake-modules-5.66.0.tar.xz";
+      sha256 = "2ff1a4ede28488ea787e742ab37edaacc5f59bf9188476e48f681ce23300b9c4";
+      name = "extra-cmake-modules-5.66.0.tar.xz";
+    };
+  };
+  frameworkintegration = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/frameworkintegration-5.66.0.tar.xz";
+      sha256 = "55c01613436781d74652bef19fc594448cdee4c002d5e1713b583473455f54d8";
+      name = "frameworkintegration-5.66.0.tar.xz";
+    };
+  };
+  kactivities = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kactivities-5.66.0.tar.xz";
+      sha256 = "7c37c8f189cb3c9f0cacbcef606562d8bc596e685d2a47bc9994deae6e69f41f";
+      name = "kactivities-5.66.0.tar.xz";
+    };
+  };
+  kactivities-stats = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kactivities-stats-5.66.0.tar.xz";
+      sha256 = "567de599a8fd8b6a5304fc1696e24b069b4eaa7bbc643b1e760293d8c1162b73";
+      name = "kactivities-stats-5.66.0.tar.xz";
+    };
+  };
+  kapidox = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kapidox-5.66.0.tar.xz";
+      sha256 = "19af4d93adfa22ff4de832185c1e9191d35039394bb032ee60e33efc5cc456db";
+      name = "kapidox-5.66.0.tar.xz";
+    };
+  };
+  karchive = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/karchive-5.66.0.tar.xz";
+      sha256 = "434f315af624d315b06a35ba5e71e570f36ca454af891833d6e896e42edf23d8";
+      name = "karchive-5.66.0.tar.xz";
+    };
+  };
+  kauth = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kauth-5.66.0.tar.xz";
+      sha256 = "f167ec8f926caf348a161a39e0c0588f517fe3a49ab4f39c1dfa94f47e104414";
+      name = "kauth-5.66.0.tar.xz";
+    };
+  };
+  kbookmarks = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kbookmarks-5.66.0.tar.xz";
+      sha256 = "b225463ec0fe2424a1f5e70c83b02e3ece6a3ca80832cd2621732d18d7160a43";
+      name = "kbookmarks-5.66.0.tar.xz";
+    };
+  };
+  kcalendarcore = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcalendarcore-5.66.0.tar.xz";
+      sha256 = "bbdb48c775ccc1e1bdba962b5ccdc0611a2d14523076d33c4507c05db3ab33d3";
+      name = "kcalendarcore-5.66.0.tar.xz";
+    };
+  };
+  kcmutils = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcmutils-5.66.0.tar.xz";
+      sha256 = "e02dbf996ed93bdc2813a2a64dcb0ddeb54987dd84bbe787bd890b17d57e4a85";
+      name = "kcmutils-5.66.0.tar.xz";
+    };
+  };
+  kcodecs = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcodecs-5.66.0.tar.xz";
+      sha256 = "0dcb684ad75374bbab82b90bda20e914cf656bd51a6dff69bbb1bfc650481a05";
+      name = "kcodecs-5.66.0.tar.xz";
+    };
+  };
+  kcompletion = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcompletion-5.66.0.tar.xz";
+      sha256 = "be5e272e257b9fe5b951d7c596fef7c75b16886e6b1cd5ebff60d87bd6dd495d";
+      name = "kcompletion-5.66.0.tar.xz";
+    };
+  };
+  kconfig = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kconfig-5.66.0.tar.xz";
+      sha256 = "c0df73bde40162a5ffc20604c2ad343e71a6df852c3f7b05e70e1464f5f63256";
+      name = "kconfig-5.66.0.tar.xz";
+    };
+  };
+  kconfigwidgets = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kconfigwidgets-5.66.0.tar.xz";
+      sha256 = "730834528307c65691d67c901f1c186b49d74ee986ef75e171e867e8751bf10a";
+      name = "kconfigwidgets-5.66.0.tar.xz";
+    };
+  };
+  kcontacts = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcontacts-5.66.0.tar.xz";
+      sha256 = "08086f554eb4718e91a9e96d143ba05fc741289928db9bcc21b21ca7125b0017";
+      name = "kcontacts-5.66.0.tar.xz";
+    };
+  };
+  kcoreaddons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcoreaddons-5.66.0.tar.xz";
+      sha256 = "8a8edf566cb08ad83cb17f942eeb8746993249cd0f7679f7eb810201b85e464b";
+      name = "kcoreaddons-5.66.0.tar.xz";
+    };
+  };
+  kcrash = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kcrash-5.66.0.tar.xz";
+      sha256 = "5a518059de3f3e85ee7b38a0edf348d097993518ce9b17504470f0d8aad3f2e4";
+      name = "kcrash-5.66.0.tar.xz";
+    };
+  };
+  kdbusaddons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kdbusaddons-5.66.0.tar.xz";
+      sha256 = "ee600f15af2fb9a28ad15f7e0689d519211fa63b86f2e6c356bd32530ebdfa46";
+      name = "kdbusaddons-5.66.0.tar.xz";
+    };
+  };
+  kdeclarative = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kdeclarative-5.66.0.tar.xz";
+      sha256 = "ed3a334d8bce6d70e68e013d4210bd6e11cb2ebce9ede4c1813f44dada7eca73";
+      name = "kdeclarative-5.66.0.tar.xz";
+    };
+  };
+  kded = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kded-5.66.0.tar.xz";
+      sha256 = "52223e641c4e8e3158220ed7b6c48e4c3f3e67f882603ada0e3757b4136255a4";
+      name = "kded-5.66.0.tar.xz";
+    };
+  };
+  kdelibs4support = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kdelibs4support-5.66.0.tar.xz";
+      sha256 = "314d0ddb95c024c3d36dd262fcaa9295b462e6430f84b22c82f145029e3b2708";
+      name = "kdelibs4support-5.66.0.tar.xz";
+    };
+  };
+  kdesignerplugin = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kdesignerplugin-5.66.0.tar.xz";
+      sha256 = "a7f9c530d8c7d214a176ee381541bd45f3a000a3e86404040b11f1394912d40b";
+      name = "kdesignerplugin-5.66.0.tar.xz";
+    };
+  };
+  kdesu = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kdesu-5.66.0.tar.xz";
+      sha256 = "764d30acb0ef1d609c9454ecabb939bd64a814442e01aba769eba0673b56f88a";
+      name = "kdesu-5.66.0.tar.xz";
+    };
+  };
+  kdewebkit = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kdewebkit-5.66.0.tar.xz";
+      sha256 = "f73d2599ce2269eaab45ddc11bdeb49dc887e950ded57454f3fd6499c370a777";
+      name = "kdewebkit-5.66.0.tar.xz";
+    };
+  };
+  kdnssd = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kdnssd-5.66.0.tar.xz";
+      sha256 = "e280246212329f2834437ea3e84971fc85f3a3e6824963322e1f5de6aa04709c";
+      name = "kdnssd-5.66.0.tar.xz";
+    };
+  };
+  kdoctools = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kdoctools-5.66.0.tar.xz";
+      sha256 = "41e4ca7aceab17919ef4a82ad99606f520ebfe57f30205597b4184f7a3730a7a";
+      name = "kdoctools-5.66.0.tar.xz";
+    };
+  };
+  kemoticons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kemoticons-5.66.0.tar.xz";
+      sha256 = "dc307192d883108134da104d1507709a3b80c5b5e9984377840bd42d39a431dd";
+      name = "kemoticons-5.66.0.tar.xz";
+    };
+  };
+  kfilemetadata = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kfilemetadata-5.66.0.tar.xz";
+      sha256 = "d78c2128887591229e6c61c60e77af8647e407d570b07892f5f06ab682f807b9";
+      name = "kfilemetadata-5.66.0.tar.xz";
+    };
+  };
+  kglobalaccel = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kglobalaccel-5.66.0.tar.xz";
+      sha256 = "fae805994f946791525da65ca15f93b65b2001241c7539ad04b3aaef937fb1c3";
+      name = "kglobalaccel-5.66.0.tar.xz";
+    };
+  };
+  kguiaddons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kguiaddons-5.66.0.tar.xz";
+      sha256 = "379e5ed87b00d344a13e424e39d97d74d494c503400bcd72df132de74c8cc591";
+      name = "kguiaddons-5.66.0.tar.xz";
+    };
+  };
+  kholidays = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kholidays-5.66.0.tar.xz";
+      sha256 = "2d9bb70fbcb3a45208409228b5e5a88b0cb00fe8f2621e2e938bc77c2df11f02";
+      name = "kholidays-5.66.0.tar.xz";
+    };
+  };
+  khtml = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/khtml-5.66.0.tar.xz";
+      sha256 = "ee34b082760262fb9b5e287960955075ec72179585e51567350a08bf0b4b7a10";
+      name = "khtml-5.66.0.tar.xz";
+    };
+  };
+  ki18n = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/ki18n-5.66.0.tar.xz";
+      sha256 = "9622337a513fcb8f0b5100c218b9fa85617f92024e5d7feada6d071f58a329e3";
+      name = "ki18n-5.66.0.tar.xz";
+    };
+  };
+  kiconthemes = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kiconthemes-5.66.0.tar.xz";
+      sha256 = "93fa9b8d0f951c2c9991f366081f98670086f2b66a740d7be95b64c35dff111d";
+      name = "kiconthemes-5.66.0.tar.xz";
+    };
+  };
+  kidletime = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kidletime-5.66.0.tar.xz";
+      sha256 = "66e891b33ed9026ed6fd211cd1ecf3405255b19d3a58199b87af0b22a40d7185";
+      name = "kidletime-5.66.0.tar.xz";
+    };
+  };
+  kimageformats = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kimageformats-5.66.0.tar.xz";
+      sha256 = "c3b02befbb03f25deca0c7ffafea8c8a5eb79e21d8e2e566bf6fddf4f8afe04d";
+      name = "kimageformats-5.66.0.tar.xz";
+    };
+  };
+  kinit = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kinit-5.66.0.tar.xz";
+      sha256 = "6d9b6ea1542ff5529fd42f49240be37bbd8a3dfdfe8c45ac980b3c9b3fee650e";
+      name = "kinit-5.66.0.tar.xz";
+    };
+  };
+  kio = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kio-5.66.0.tar.xz";
+      sha256 = "c5350e20474b48c4fc02347186b7e4db24cb7580ba8c0f1e120b302e6b8db17d";
+      name = "kio-5.66.0.tar.xz";
+    };
+  };
+  kirigami2 = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kirigami2-5.66.0.tar.xz";
+      sha256 = "4e4abfeaa5e997de52076786dd0d314f178bc883b1b48a8b2cf37dd5979ac41b";
+      name = "kirigami2-5.66.0.tar.xz";
+    };
+  };
+  kitemmodels = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kitemmodels-5.66.0.tar.xz";
+      sha256 = "5c8bcc36b9c29868ba7fa1ece9b83385379d7fed04937a92454ac94a356b3854";
+      name = "kitemmodels-5.66.0.tar.xz";
+    };
+  };
+  kitemviews = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kitemviews-5.66.0.tar.xz";
+      sha256 = "026461fa2e3e0237a56eb18a2817453c788514578f27a4aa0832b85fe98a09ab";
+      name = "kitemviews-5.66.0.tar.xz";
+    };
+  };
+  kjobwidgets = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kjobwidgets-5.66.0.tar.xz";
+      sha256 = "34501be3ec85f0e71dba22669b3c862b297606e9bbff9aae466667c7075b6f8d";
+      name = "kjobwidgets-5.66.0.tar.xz";
+    };
+  };
+  kjs = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kjs-5.66.0.tar.xz";
+      sha256 = "9bed62ebf9fba7d986ff7baabf6c4431f02826c9be70beda15cc62c692fb5f7f";
+      name = "kjs-5.66.0.tar.xz";
+    };
+  };
+  kjsembed = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kjsembed-5.66.0.tar.xz";
+      sha256 = "58fe647901b69167b7c66a284c3181c2eda9c3b751548eb43bfe0795d10eb0ce";
+      name = "kjsembed-5.66.0.tar.xz";
+    };
+  };
+  kmediaplayer = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kmediaplayer-5.66.0.tar.xz";
+      sha256 = "7ec1fea10a1017a0f32183fdc3b2cca38c11273240423ac0d393626436fd4230";
+      name = "kmediaplayer-5.66.0.tar.xz";
+    };
+  };
+  knewstuff = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/knewstuff-5.66.0.tar.xz";
+      sha256 = "acef94661e3a0e42938224c17b90f835d6686d88a25698fe82980d7e1139b1fe";
+      name = "knewstuff-5.66.0.tar.xz";
+    };
+  };
+  knotifications = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/knotifications-5.66.0.tar.xz";
+      sha256 = "aad3697a35109fad49fa286b7837d382599478bac33151cd7991c760866c12c1";
+      name = "knotifications-5.66.0.tar.xz";
+    };
+  };
+  knotifyconfig = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/knotifyconfig-5.66.0.tar.xz";
+      sha256 = "fd9e09b099f49896b5afa6f5663ef82266531ec413d4edeb03ebc768314a37d8";
+      name = "knotifyconfig-5.66.0.tar.xz";
+    };
+  };
+  kpackage = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kpackage-5.66.0.tar.xz";
+      sha256 = "ae848a72e789a80d4a9d0346e90cb1038ebc784da6e7ff645411edd878554ab5";
+      name = "kpackage-5.66.0.tar.xz";
+    };
+  };
+  kparts = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kparts-5.66.0.tar.xz";
+      sha256 = "6de2395cd6a9993f216f4dc4718f352bc4cbbd8147734c76be0e1e6149f733d0";
+      name = "kparts-5.66.0.tar.xz";
+    };
+  };
+  kpeople = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kpeople-5.66.0.tar.xz";
+      sha256 = "2728f08a9417ceb62aa9fc5a3340aed291aeb8a852e5f6f46c5a23fcc34168ab";
+      name = "kpeople-5.66.0.tar.xz";
+    };
+  };
+  kplotting = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kplotting-5.66.0.tar.xz";
+      sha256 = "2a4387f748614f005cf67e549b9466c6eed52589ac58297857ba6a0be92c32ee";
+      name = "kplotting-5.66.0.tar.xz";
+    };
+  };
+  kpty = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kpty-5.66.0.tar.xz";
+      sha256 = "a7fac6ced7504cec13a6776f0f4ba22db9878e44e2bbf85a219a2590e061c859";
+      name = "kpty-5.66.0.tar.xz";
+    };
+  };
+  kquickcharts = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kquickcharts-5.66.0.tar.xz";
+      sha256 = "70fae10b2af1c504e3b166beb0a342cdef0e0f8eb42e53ba88f0e3b174331624";
+      name = "kquickcharts-5.66.0.tar.xz";
+    };
+  };
+  kross = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/portingAids/kross-5.66.0.tar.xz";
+      sha256 = "109159996da54ec52ec8114ff05f88bdee6428e49ca84515ab73c457e0005ebc";
+      name = "kross-5.66.0.tar.xz";
+    };
+  };
+  krunner = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/krunner-5.66.0.tar.xz";
+      sha256 = "b7d67d61c0b0f96128c143e3d2694dc5ced88a7de73db0f4493f084de9dc9701";
+      name = "krunner-5.66.0.tar.xz";
+    };
+  };
+  kservice = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kservice-5.66.0.tar.xz";
+      sha256 = "f1174576f6e3e562d7de65494efc2c1c3ac569c656b8301ffbe34576ea623a6a";
+      name = "kservice-5.66.0.tar.xz";
+    };
+  };
+  ktexteditor = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/ktexteditor-5.66.0.tar.xz";
+      sha256 = "9156e5e554b17d73078e4df09ae524a684f6adff8c2bbd40705b67fd30a6cc0b";
+      name = "ktexteditor-5.66.0.tar.xz";
+    };
+  };
+  ktextwidgets = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/ktextwidgets-5.66.0.tar.xz";
+      sha256 = "dcc4595ceeecd3f59236ed303f2a0d61915c88eb36ad040a0562b60fb10cb9a1";
+      name = "ktextwidgets-5.66.0.tar.xz";
+    };
+  };
+  kunitconversion = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kunitconversion-5.66.0.tar.xz";
+      sha256 = "82db51b59ffdb5b2e69bc5c6ea54521acbc49ee5601baaf4e43cba50d12b418c";
+      name = "kunitconversion-5.66.0.tar.xz";
+    };
+  };
+  kwallet = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kwallet-5.66.0.tar.xz";
+      sha256 = "6e48070e22a822a4003e1f7a739fe1e335bcf46982cbf4909d23a6e40689a827";
+      name = "kwallet-5.66.0.tar.xz";
+    };
+  };
+  kwayland = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kwayland-5.66.0.tar.xz";
+      sha256 = "f43231f10a5294f7ac3d43d2b903f1cf9649364782ca55831e0c069a54cc170d";
+      name = "kwayland-5.66.0.tar.xz";
+    };
+  };
+  kwidgetsaddons = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kwidgetsaddons-5.66.0.tar.xz";
+      sha256 = "311d8274469f03b1938da5a4f7ad17c82e3f96bc79ec28624cb748b13403f451";
+      name = "kwidgetsaddons-5.66.0.tar.xz";
+    };
+  };
+  kwindowsystem = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kwindowsystem-5.66.0.tar.xz";
+      sha256 = "416e2ba52a8c95a6b161ca306724525c1971723cb12e7d8ad7fa108e0b820f0c";
+      name = "kwindowsystem-5.66.0.tar.xz";
+    };
+  };
+  kxmlgui = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kxmlgui-5.66.0.tar.xz";
+      sha256 = "a8f9ed354e30ff1f40306e876d96fcd1fa3a26a8e6acfccdeab8f3437d7231bc";
+      name = "kxmlgui-5.66.0.tar.xz";
+    };
+  };
+  kxmlrpcclient = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/kxmlrpcclient-5.66.0.tar.xz";
+      sha256 = "6b637c138414d93104477034737c9e866d99e43f883a3dfc45d3220df6c21e6c";
+      name = "kxmlrpcclient-5.66.0.tar.xz";
+    };
+  };
+  modemmanager-qt = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/modemmanager-qt-5.66.0.tar.xz";
+      sha256 = "50e24894d0243dbd2fc1a44a1e6368e3bb95a20c1ca56106d26752d5854d8be9";
+      name = "modemmanager-qt-5.66.0.tar.xz";
+    };
+  };
+  networkmanager-qt = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/networkmanager-qt-5.66.0.tar.xz";
+      sha256 = "3089951c69845c4f6d1848bbbaf05116a72d4207a9f2d63b063a76c78549bf45";
+      name = "networkmanager-qt-5.66.0.tar.xz";
+    };
+  };
+  oxygen-icons5 = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/oxygen-icons5-5.66.0.tar.xz";
+      sha256 = "c6275fdcd4883c143adf4f16450a63dcb8651073a205bd14c599ec6ab638e8ef";
+      name = "oxygen-icons5-5.66.0.tar.xz";
+    };
+  };
+  plasma-framework = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/plasma-framework-5.66.0.tar.xz";
+      sha256 = "3263ccf95a6fcf8fde087d402d89d64c64c0130d4df62b95b860fada13aad419";
+      name = "plasma-framework-5.66.0.tar.xz";
+    };
+  };
+  prison = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/prison-5.66.0.tar.xz";
+      sha256 = "ff5b4ae32ae44f2aea4b9254afe54af0fc9ea742517116cd2322e1a71a7315ce";
+      name = "prison-5.66.0.tar.xz";
+    };
+  };
+  purpose = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/purpose-5.66.0.tar.xz";
+      sha256 = "33b8ec6ede6a1deee6c85e45ebe42aca9a3add7884ee68aa8f1a16ed0637b4db";
+      name = "purpose-5.66.0.tar.xz";
+    };
+  };
+  qqc2-desktop-style = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/qqc2-desktop-style-5.66.0.tar.xz";
+      sha256 = "49bb518fc9f3c08cb330b1d82cb5c68d9ea358a562c6e460ea06aaaa13812b87";
+      name = "qqc2-desktop-style-5.66.0.tar.xz";
+    };
+  };
+  solid = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/solid-5.66.0.tar.xz";
+      sha256 = "78deab8c55c30f2c923795730a9655b4d05a75cd6240bc0caa64104b141a3a39";
+      name = "solid-5.66.0.tar.xz";
+    };
+  };
+  sonnet = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/sonnet-5.66.0.tar.xz";
+      sha256 = "5ca700e8e9954b380cc5f4cee0f392888ae240ccd2c4d3a37a2f41f8ac9c8294";
+      name = "sonnet-5.66.0.tar.xz";
+    };
+  };
+  syndication = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/syndication-5.66.0.tar.xz";
+      sha256 = "5e6c90360461b820a48069af2838cffbcbedfe8bcd042535823e1cf1b43cd6b7";
+      name = "syndication-5.66.0.tar.xz";
+    };
+  };
+  syntax-highlighting = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/syntax-highlighting-5.66.0.tar.xz";
+      sha256 = "e572719cb64524c6abc476eeccca56f54cb0d7352fc747af3036dbe817566c25";
+      name = "syntax-highlighting-5.66.0.tar.xz";
+    };
+  };
+  threadweaver = {
+    version = "5.66.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.66/threadweaver-5.66.0.tar.xz";
+      sha256 = "a63db1ef8421e68534f5b9891013286fbad2ef8677f28c15ec733f086ae5cee3";
+      name = "threadweaver-5.66.0.tar.xz";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix
new file mode 100644
index 000000000000..71ee520995c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, kcodecs
+}:
+
+mkDerivation {
+  name = "syndication";
+  meta = {
+    maintainers = [ lib.maintainers.bkchr ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcodecs ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix
new file mode 100644
index 000000000000..ceb8200d4c63
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, lib
+, extra-cmake-modules, perl, qtbase, qttools
+}:
+
+mkDerivation {
+  name = "syntax-highlighting";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [ qttools ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix
new file mode 100644
index 000000000000..b95f70dd6743
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase
+}:
+
+mkDerivation {
+  name = "threadweaver";
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+    broken = builtins.compareVersions qtbase.version "5.7.0" < 0;
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}