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.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix51
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix190
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh117
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities-stats.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix26
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix13
-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.nix19
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix9
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdav.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix22
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix33
-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/setup-hook.sh1
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/default.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch38
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix40
-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.nix12
-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.nix38
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kholidays.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix12
-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.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix19
-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.nix38
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/0001-Remove-impure-smbd-search-path.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix32
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/0001-Delay-resolving-knsrcdir.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/default.nix21
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0001-Allow-external-paths-default.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0002-QDirIterator-follow-symlinks.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kquickcharts.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix21
-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/ktexteditor.nix23
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix16
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix9
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix20
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/qqc2-desktop-style.nix14
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/solid/default.nix15
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/solid/fix-search-path.patch17
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix670
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix12
104 files changed, 2674 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..dbe4dd14b8f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/attica.nix
@@ -0,0 +1,8 @@
+{ mkDerivation, extra-cmake-modules, qtbase }:
+
+mkDerivation {
+  pname = "attica";
+  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..3543fef66337
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/baloo.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, lib
+, fetchpatch
+, extra-cmake-modules
+, kauth
+, kconfig
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kfilemetadata
+, ki18n
+, kidletime
+, kio
+, lmdb
+, qtbase
+, qtdeclarative
+, solid
+,
+}:
+
+mkDerivation {
+  pname = "baloo";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kauth kconfig kcrash kdbusaddons ki18n kio kidletime lmdb qtdeclarative solid ];
+  outputs = [ "out" "dev" ];
+  propagatedBuildInputs = [ kcoreaddons kfilemetadata qtbase ];
+
+  # baloo suffers from issues when running on btrfs as well as with certain LVM/dm-crypt setups
+  # where the device id will change on reboot causing baloo to reindex all the files and then having
+  # duplicate files. A patch has been proposed that addresses this, which has not been accepted yet.
+  # However, without this patch, people tend to disable baloo rather than dealing with the constant
+  # reindexing.
+  #
+  # https://bugs.kde.org/show_bug.cgi?id=402154
+  patches = [
+    (fetchpatch {
+      url = "https://bugsfiles.kde.org/attachment.cgi?id=159031";
+      hash = "sha256-hCtNXUpRhIP94f7gpwTGWWh1h/7JRRJaRASIwHWQjnY=";
+      name = "use_fsid.patch";
+    })
+  ];
+
+  # kde-baloo.service uses `ExecCondition=@KDE_INSTALL_FULL_BINDIR@/kde-systemd-start-condition ...`
+  # which comes from the "plasma-workspace" derivation, but KDE_INSTALL_* all point at the "baloo" one
+  # (`${lib.getBin pkgs.plasma-workspace}` would cause infinite recursion)
+  postUnpack = ''
+    substituteInPlace "$sourceRoot"/src/file/kde-baloo.service.in \
+      --replace @KDE_INSTALL_FULL_BINDIR@ /run/current-system/sw/bin
+  '';
+  meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+}
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..4dad732641a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/bluez-qt.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, qtbase, qtdeclarative
+}:
+
+mkDerivation {
+  pname = "bluez-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtdeclarative ];
+  propagatedBuildInputs = [ qtbase ];
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt \
+      --replace /lib/udev/rules.d "$bin/lib/udev/rules.d"
+  '';
+  meta.platforms = lib.platforms.linux;
+}
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..7fd482ea0da0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, extra-cmake-modules, gtk3, qtsvg, hicolor-icon-theme }:
+
+mkDerivation {
+  pname = "breeze-icons";
+  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..4245aa0ed20e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/default.nix
@@ -0,0 +1,190 @@
+/*
+
+# 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
+  maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
+  license = with lib.licenses; [
+    lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12Plus
+  ];
+
+  srcs = import ./srcs.nix {
+    inherit fetchurl;
+    mirror = "mirror://kde";
+  };
+
+  mkDerivation = libsForQt5.callPackage ({ stdenv, mkDerivation ? stdenv.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) pname;
+            inherit (srcs.${pname}) 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 =
+              let meta = args.meta or {}; in
+              meta // {
+                homepage = meta.homepage or "https://kde.org";
+                license = meta.license or license;
+                maintainers = (meta.maintainers or []) ++ maintainers;
+                platforms = meta.platforms or lib.platforms.all;
+              };
+
+          in mkDerivation (args // {
+            inherit pname meta outputs setupHook src version;
+          });
+
+      };
+
+    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 {};
+      kcoreaddons = callPackage ./kcoreaddons.nix {};
+      kdbusaddons = callPackage ./kdbusaddons.nix {};
+      kdnssd = callPackage ./kdnssd.nix {};
+      kguiaddons = callPackage ./kguiaddons.nix {};
+      kholidays = callPackage ./kholidays.nix {};
+      ki18n = callPackage ./ki18n.nix {};
+      kidletime = callPackage ./kidletime.nix {};
+      kirigami2 = callPackage ./kirigami2.nix {};
+      kitemmodels = callPackage ./kitemmodels.nix {};
+      kitemviews = callPackage ./kitemviews.nix {};
+      kplotting = callPackage ./kplotting.nix {};
+      kquickcharts = callPackage ./kquickcharts.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 {};
+      qqc2-desktop-style = callPackage ./qqc2-desktop-style.nix {};
+      solid = callPackage ./solid {};
+      sonnet = callPackage ./sonnet.nix {};
+      syntax-highlighting = callPackage ./syntax-highlighting.nix {};
+      threadweaver = callPackage ./threadweaver.nix {};
+
+    # TIER 2
+      kactivities = callPackage ./kactivities.nix {};
+      kauth = callPackage ./kauth {};
+      kcompletion = callPackage ./kcompletion.nix {};
+      kcontacts = callPackage ./kcontacts.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 {};
+      kpeople = callPackage ./kpeople.nix {};
+      kpty = callPackage ./kpty.nix {};
+      kunitconversion = callPackage ./kunitconversion.nix {};
+      syndication = callPackage ./syndication.nix {};
+
+    # TIER 3
+      baloo = callPackage ./baloo.nix {};
+      kactivities-stats = callPackage ./kactivities-stats.nix {};
+      kbookmarks = callPackage ./kbookmarks.nix {};
+      kcmutils = callPackage ./kcmutils.nix {};
+      kconfigwidgets = callPackage ./kconfigwidgets.nix {};
+      kdav = callPackage ./kdav.nix {};
+      kdeclarative = callPackage ./kdeclarative.nix {};
+      kded = callPackage ./kded.nix {};
+      kdesu = callPackage ./kdesu {};
+      kemoticons = callPackage ./kemoticons.nix {};
+      kglobalaccel = callPackage ./kglobalaccel.nix {};
+      kiconthemes = callPackage ./kiconthemes {};
+      kinit = callPackage ./kinit {};
+      kio = callPackage ./kio {};
+      knewstuff = callPackage ./knewstuff {};
+      knotifyconfig = callPackage ./knotifyconfig.nix {};
+      kparts = callPackage ./kparts.nix {};
+      krunner = callPackage ./krunner.nix {};
+      kservice = callPackage ./kservice {};
+      ktexteditor = callPackage ./ktexteditor.nix {};
+      ktextwidgets = callPackage ./ktextwidgets.nix {};
+      kwallet = callPackage ./kwallet.nix {};
+      kxmlgui = callPackage ./kxmlgui.nix {};
+      plasma-framework = callPackage ./plasma-framework.nix {};
+      kpurpose = callPackage ./purpose.nix {};
+
+    # TIER 4
+      frameworkintegration = callPackage ./frameworkintegration.nix {};
+
+    # PORTING AIDS
+      kdelibs4support = callPackage ./kdelibs4support {};
+      kdesignerplugin = callPackage ./kdesignerplugin.nix {};
+      khtml = callPackage ./khtml.nix {};
+      kjs = callPackage ./kjs.nix {};
+      kjsembed = callPackage ./kjsembed.nix {};
+      kmediaplayer = callPackage ./kmediaplayer.nix {};
+      kross = callPackage ./kross.nix {};
+      kxmlrpcclient = callPackage ./kxmlrpcclient.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..dcd7a76acb33
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, lib, fetchpatch, cmake, pkg-config }:
+
+mkDerivation {
+  pname = "extra-cmake-modules";
+
+  patches = [
+    # https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/268
+    (fetchpatch {
+      url = "https://invent.kde.org/frameworks/extra-cmake-modules/-/commit/5862a6f5b5cd7ed5a7ce2af01e44747c36318220.patch";
+      sha256 = "10y36fc3hnpmcsmjgfxn1rp4chj5yrhgghj7m8gbmcai1q5jr0xj";
+    })
+  ];
+
+  outputs = [ "out" ];  # this package has no runtime components
+
+  propagatedBuildInputs = [ cmake pkg-config ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
+    platforms = platforms.linux ++ platforms.darwin;
+    homepage = "https://invent.kde.org/frameworks/extra-cmake-modules";
+    license = licenses.bsd2;
+  };
+}
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..8d86ab1d54ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/extra-cmake-modules/setup-hook.sh
@@ -0,0 +1,117 @@
+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 [ "$(uname)" = "Darwin" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_BUNDLEDIR=${!outputBin}/Applications/KDE"
+    fi
+
+    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" \
+)
+
+# ecmHostPathsSeen is an associative array of the paths that have already been
+# seen by ecmHostPathHook.
+declare -gA ecmHostPathsSeen
+
+ecmHostPathIsNotSeen() {
+    if [[ -n "${ecmHostPathsSeen["$1"]:-}" ]]; then
+        # The path has been seen before.
+        return 1
+    else
+        # The path has not been seen before.
+        # Now it is seen, so record it.
+        ecmHostPathsSeen["$1"]=1
+        return 0
+    fi
+}
+
+ecmHostPathHook() {
+    ecmHostPathIsNotSeen "$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..c72caa6d585d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/fetch.sh
@@ -0,0 +1 @@
+WGET_ARGS=( https://download.kde.org/stable/frameworks/5.110/ -A '*.tar.xz' )
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..6cb700c77744
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/frameworkintegration.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kbookmarks, kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kio,
+  knewstuff, knotifications, kpackage, kwidgetsaddons, libXcursor, qtx11extras
+}:
+
+mkDerivation {
+  pname = "frameworkintegration";
+  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..cb838e067742
--- /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 {
+  pname = "kactivities-stats";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ boost kactivities kconfig ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+  meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+}
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..f2f5d09cc8e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kactivities.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  boost, kconfig, kcoreaddons, kio, kwindowsystem, qtbase, qtdeclarative,
+}:
+
+mkDerivation {
+  pname = "kactivities";
+  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..c7dde83bf611
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kapidox.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, python3, qtbase }:
+
+mkDerivation {
+  pname = "kapidox";
+  nativeBuildInputs = [ python3.pkgs.setuptools qtbase ];
+
+  buildInputs = with python3.pkgs; [ jinja2 pyyaml requests ];
+
+  postPatch = ''
+    sed -i -e 's|"doxy\w\+", ||g' setup.py
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    ${python3.interpreter} setup.py build
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    ${python3.interpreter} setup.py install --prefix="$out"
+    runHook postInstall
+  '';
+
+  outputs = [ "out" ];
+}
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..514b63f44b55
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/karchive.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  bzip2, xz, qtbase, qttools, zlib, zstd
+}:
+
+mkDerivation {
+  pname = "karchive";
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [ bzip2 xz zlib zstd ];
+  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..0ad7cfbbb7e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kauth/default.nix
@@ -0,0 +1,19 @@
+{
+  lib, stdenv, mkDerivation, propagate,
+  extra-cmake-modules, kcoreaddons, qttools,
+  enablePolkit ? stdenv.isLinux, polkit-qt
+}:
+
+mkDerivation {
+  pname = "kauth";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = lib.optional enablePolkit polkit-qt ++ [ qttools ];
+  propagatedBuildInputs = [ kcoreaddons ];
+  patches = [
+    ./cmake-install-paths.patch
+  ];
+  # 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/kbookmarks.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
new file mode 100644
index 000000000000..1c45a4acb097
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kbookmarks.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules, qttools,
+  kcodecs, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kwidgetsaddons,
+  kxmlgui, qtbase,
+}:
+
+mkDerivation {
+  pname = "kbookmarks";
+  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..3f02765af8ea
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcalendarcore.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  libical,
+  qtbase
+}:
+
+mkDerivation {
+  pname = "kcalendarcore";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ libical ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils.nix
new file mode 100644
index 000000000000..a275e7175713
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcmutils.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kconfigwidgets, kcoreaddons, kdeclarative, ki18n, kiconthemes, kitemviews,
+  kpackage, kservice, kxmlgui, qtdeclarative,
+}:
+
+mkDerivation {
+  pname = "kcmutils";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kcoreaddons kdeclarative ki18n kiconthemes kitemviews kpackage kxmlgui
+    qtdeclarative
+  ];
+  propagatedBuildInputs = [ kconfigwidgets kservice ];
+}
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..69a9e812494e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcodecs.nix
@@ -0,0 +1,9 @@
+{ mkDerivation, extra-cmake-modules, qtbase, qttools, gperf }:
+
+mkDerivation {
+  pname = "kcodecs";
+  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..28b4715f98f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcompletion.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kconfig, kwidgetsaddons, qtbase, qttools
+}:
+
+mkDerivation {
+  pname = "kcompletion";
+  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..76d9a85e649c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfig.nix
@@ -0,0 +1,8 @@
+{ mkDerivation, extra-cmake-modules, qtbase, qttools }:
+
+mkDerivation {
+  pname = "kconfig";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qttools ];
+  propagatedBuildInputs = [ qtbase ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets.nix
new file mode 100644
index 000000000000..4b20daf052a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kconfigwidgets.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, extra-cmake-modules,
+  kauth, kcodecs, kconfig, kdoctools, kguiaddons, ki18n, kwidgetsaddons, qttools, qtbase,
+}:
+
+mkDerivation {
+  pname = "kconfigwidgets";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kguiaddons ki18n qtbase qttools ];
+  propagatedBuildInputs = [ kauth kcodecs kconfig kwidgetsaddons ];
+  outputs = [ "out" "dev" ];
+  outputBin = "dev";
+  postInstall = ''
+    moveToOutput ''${qtPluginPrefix:?}/designer/kconfigwidgets5widgets.so "$out"
+  '';
+}
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..0d26d064dd2b
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcontacts.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, isocodes,
+  kcoreaddons, kconfig, kcodecs, ki18n, qtbase,
+}:
+
+mkDerivation {
+  pname = "kcontacts";
+  meta = {
+    license = [ lib.licenses.lgpl21 ];
+  };
+  propagatedBuildInputs = [
+    isocodes
+  ];
+  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..f790d802c0ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcoreaddons.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase, qttools, shared-mime-info
+}:
+
+mkDerivation {
+  pname = "kcoreaddons";
+  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..4658ab5c6dae
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kcrash.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kcoreaddons, kwindowsystem, qtbase, qtx11extras,
+}:
+
+mkDerivation {
+  pname = "kcrash";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons kwindowsystem qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdav.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdav.nix
new file mode 100644
index 000000000000..3149c2206625
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdav.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  kcoreaddons, kio, qtxmlpatterns,
+}:
+
+mkDerivation {
+  pname = "kdav";
+  meta = {
+    license = with lib.licenses; [ gpl2Plus lgpl21Plus fdl12Plus ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons kio qtxmlpatterns ];
+  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..b123129cf8d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdbusaddons.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase, qttools, qtx11extras
+}:
+
+mkDerivation {
+  pname = "kdbusaddons";
+  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..08f7cb5d3785
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdeclarative.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, extra-cmake-modules,
+  libepoxy, kconfig, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage,
+  kwidgetsaddons, kwindowsystem, qtdeclarative
+}:
+
+mkDerivation {
+  pname = "kdeclarative";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    libepoxy 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..02364ba72f36
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kded.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, propagate, wrapGAppsHook,
+  extra-cmake-modules, kdoctools,
+  gsettings-desktop-schemas, kconfig, kcoreaddons, kcrash, kdbusaddons,
+  kservice, qtbase,
+}:
+
+mkDerivation {
+  pname = "kded";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
+  buildInputs = [
+    gsettings-desktop-schemas kconfig kcoreaddons kcrash kdbusaddons
+    kservice qtbase
+  ];
+  outputs = [ "out" "dev" ];
+  setupHook = propagate "out";
+  dontWrapGApps = true;
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+  meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+}
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..1e7b30738752
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix
@@ -0,0 +1,33 @@
+{
+  mkDerivation,
+  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 {
+  pname = "kdelibs4support";
+  patches = [
+    ./nix-kde-include-dir.patch
+  ];
+  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/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..6244b82397a2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kconfig, kconfigwidgets, kcoreaddons, kiconthemes, kio,
+  kitemviews, kplotting, ktextwidgets, kwidgetsaddons, kxmlgui, qttools, sonnet,
+}:
+
+mkDerivation {
+  pname = "kdesignerplugin";
+  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/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/default.nix
new file mode 100644
index 000000000000..29a02d750762
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/default.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  kcoreaddons, ki18n, kpty, kservice, qtbase,
+}:
+
+mkDerivation {
+  pname = "kdesu";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons ki18n kpty kservice qtbase ];
+  propagatedBuildInputs = [ kpty ];
+  outputs = [ "out" "dev" ];
+  patches = [ ./kdesu-search-for-wrapped-daemon-first.patch ];
+  meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch
new file mode 100644
index 000000000000..1379707f02fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch
@@ -0,0 +1,38 @@
+From 01af4d2a098e5819c09bca37568941dcd4b89d0b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Thu, 16 Jul 2020 13:21:42 -0300
+Subject: [PATCH] Search for the daemon first in /run/wrappers/bin
+
+If looking first in libexec, the eventually wrapped one in
+/run/wrappers/bin can not be found.
+---
+ src/client.cpp | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/src/client.cpp b/src/client.cpp
+index 44fbacd..6b5abf5 100644
+--- a/src/client.cpp
++++ b/src/client.cpp
+@@ -384,11 +384,14 @@ int KDEsuClient::stopServer()
+ 
+ static QString findDaemon()
+ {
+-    QString daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
+-    if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
+-        daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
+-        if (daemon.isEmpty()) {
+-            qCWarning(KSU_LOG) << "kdesud daemon not found.";
++    QString daemon = QFile::decodeName("/run/wrappers/bin/kdesud");
++    if (!QFile::exists(daemon)) { // if not in wrappers
++        daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
++        if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
++            daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
++            if (daemon.isEmpty()) {
++                qCWarning(KSU_LOG) << "kdesud daemon not found.";
++            }
+         }
+     }
+     return daemon;
+-- 
+2.27.0
+
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..545057e7ef1f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdnssd.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  avahi, qtbase, qttools,
+}:
+
+mkDerivation {
+  pname = "kdnssd";
+  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..4b52cd95b710
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kdoctools/default.nix
@@ -0,0 +1,40 @@
+{
+  mkDerivation, lib, stdenv, fetchpatch,
+  extra-cmake-modules, docbook_xml_dtd_45, docbook_xsl_ns,
+  karchive, ki18n, qtbase,
+  perl, perlPackages
+}:
+
+mkDerivation {
+  pname = "kdoctools";
+  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 ]
+    # kf.doctools.core: Error: Could not find kdoctools catalogs
+    ++ lib.optionals stdenv.isDarwin [
+    (fetchpatch {
+      name = "kdoctools-relocate-datapath.patch";
+      url = "https://github.com/msys2/MINGW-packages/raw/0900785a1f4e4146ab9561fb92a1c70fa70fcfc4/mingw-w64-kdoctools-qt5/0001-kdoctools-relocate-datapath.patch";
+      hash = "sha256-MlokdrabXavWHGXYmdz9zZDJQIwAdNxebJBSAH2Z3vI=";
+    })
+  ];
+  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..67613d274a75
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kemoticons.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  karchive, kcoreaddons, kservice, qtbase,
+}:
+
+mkDerivation {
+  pname = "kemoticons";
+  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..daeaf222b630
--- /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 ${KDE_INSTALL_LIBDIR}/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..1bd1f115c6cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, lib
+, stdenv
+, extra-cmake-modules
+, attr
+, ebook_tools
+, exiv2
+, ffmpeg
+, karchive
+, kcoreaddons
+, ki18n
+, poppler
+, qtbase
+, qtmultimedia
+, taglib
+}:
+
+mkDerivation {
+  pname = "kfilemetadata";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = lib.optionals stdenv.isLinux [
+    attr
+  ] ++ [
+    ebook_tools
+    exiv2
+    ffmpeg
+    karchive
+    kcoreaddons
+    ki18n
+    poppler
+    qtbase
+    qtmultimedia
+    taglib
+  ];
+  patches = [
+    ./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..ab181b8d902d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kglobalaccel.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kservice, kwindowsystem,
+  qtbase, qttools, qtx11extras, libXdmcp,
+}:
+
+mkDerivation {
+  pname = "kglobalaccel";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    kconfig kcoreaddons kcrash kdbusaddons kservice kwindowsystem qttools
+    qtx11extras libXdmcp
+  ];
+  outputs = [ "out" "dev" ];
+  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..9254043117ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kguiaddons.nix
@@ -0,0 +1,16 @@
+{ mkDerivation
+, extra-cmake-modules
+, qtbase, qtx11extras, wayland, plasma-wayland-protocols
+}:
+
+mkDerivation {
+  pname = "kguiaddons";
+
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras wayland plasma-wayland-protocols ];
+  propagatedBuildInputs = [ qtbase ];
+
+  outputs = [ "out" "dev" ];
+
+  meta.homepage = "https://invent.kde.org/frameworks/kguiaddons";
+}
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..81369d4ce83d
--- /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 {
+  pname = "kholidays";
+  meta = {
+    license = with lib.licenses; [ gpl2Plus lgpl21Plus fdl12Plus ];
+    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..9677ffb78a5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/khtml.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation,
+  extra-cmake-modules, perl,
+  giflib, karchive, kcodecs, kglobalaccel, ki18n, kiconthemes, kio, kjs,
+  knotifications, kparts, ktextwidgets, kwallet, kwidgetsaddons, kwindowsystem,
+  kxmlgui, phonon, qtx11extras, sonnet, gperf
+}:
+
+mkDerivation {
+  pname = "khtml";
+  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..be8016155b87
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ki18n.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules, gettext, python3,
+  qtbase, qtdeclarative, qtscript,
+}:
+
+mkDerivation {
+  pname = "ki18n";
+  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..f807193718d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  breeze-icons, karchive, kcoreaddons, kconfigwidgets, ki18n, kitemviews,
+  qtbase, qtsvg, qttools,
+}:
+
+mkDerivation {
+  pname = "kiconthemes";
+  patches = [
+    ./default-theme-breeze.patch
+  ];
+  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/kidletime.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix
new file mode 100644
index 000000000000..522e3a2a5de3
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kidletime.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase, qtx11extras,
+  wayland, wayland-protocols, plasma-wayland-protocols
+}:
+
+mkDerivation {
+  pname = "kidletime";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras wayland wayland-protocols plasma-wayland-protocols ];
+  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..5954d56e6cca
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kimageformats.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  ilmbase, karchive, openexr, libavif, libheif, libjxl, libraw, qtbase
+}:
+
+let inherit (lib) getDev; in
+
+mkDerivation {
+  pname = "kimageformats";
+
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ karchive openexr libavif libheif libjxl libraw qtbase ];
+  outputs = [ "out" ]; # plugins only
+  CXXFLAGS = "-I${getDev ilmbase}/include/OpenEXR";
+  cmakeFlags = [
+    "-DKIMAGEFORMATS_HEIF=ON"
+  ];
+}
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..f9c019c2ae2a
--- /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
+@@ -11,7 +11,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-#define EXECUTE KDE_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..499c975a9e2d
--- /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 "/" KDE_INSTALL_LIBDIR "/") + 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..2996342deadb
--- /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 << 20)) {
++                            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..1f2620c5664d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kinit/default.nix
@@ -0,0 +1,38 @@
+{
+  mkDerivation, lib, stdenv, writeScript,
+  extra-cmake-modules, kdoctools,
+  kconfig, kcrash, ki18n, kio, kparts, kservice, kwindowsystem, plasma-framework
+}:
+
+let inherit (lib) getLib; in
+
+mkDerivation {
+  pname = "kinit";
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kcrash ki18n kio kservice kwindowsystem
+  ];
+  patches = [
+    ./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\"''
+  ] ++ lib.optionals stdenv.isLinux [
+    ''-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/kio/0001-Remove-impure-smbd-search-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/0001-Remove-impure-smbd-search-path.patch
new file mode 100644
index 000000000000..e541f7a05e8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/0001-Remove-impure-smbd-search-path.patch
@@ -0,0 +1,25 @@
+From af54a2a37655df26a33bc6783cb472c38f65322f Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 10:31:12 -0500
+Subject: [PATCH 1/2] Remove impure smbd search path
+
+---
+ src/core/ksambashare.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/ksambashare.cpp b/src/core/ksambashare.cpp
+index e810ce4..7cfb4e6 100644
+--- a/src/core/ksambashare.cpp
++++ b/src/core/ksambashare.cpp
+@@ -61,7 +61,7 @@ KSambaSharePrivate::~KSambaSharePrivate()
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+     const bool daemonExists =
+-        !QStandardPaths::findExecutable(QStringLiteral("smbd"), {QStringLiteral("/usr/sbin/"), QStringLiteral("/usr/local/sbin/")}).isEmpty();
++        !QStandardPaths::findExecutable(QStringLiteral("smbd")).isEmpty();
+     if (!daemonExists) {
+         qCDebug(KIO_CORE_SAMBASHARE) << "KSambaShare: Could not find smbd";
+     }
+-- 
+2.30.1
+
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..3b07654fb802
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kio/default.nix
@@ -0,0 +1,32 @@
+{
+  stdenv, lib, mkDerivation, fetchpatch,
+  extra-cmake-modules, kdoctools, qttools,
+  acl, attr, libkrb5, util-linux,
+  karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
+  kdbusaddons, ki18n, kiconthemes, kitemviews, kjobwidgets, knotifications,
+  kservice, ktextwidgets, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui,
+  qtbase, qtscript, qtx11extras, solid, kcrash, kded
+}:
+
+mkDerivation {
+  pname = "kio";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    karchive kconfigwidgets kdbusaddons ki18n kiconthemes knotifications
+    ktextwidgets kwallet kwidgetsaddons kwindowsystem qtscript qtx11extras
+    kcrash libkrb5
+  ] ++ lib.lists.optionals stdenv.isLinux [
+    acl attr # both are needed for ACL support
+    util-linux # provides libmount
+  ];
+  propagatedBuildInputs = [
+    kbookmarks kcompletion kconfig kcoreaddons kitemviews kjobwidgets kservice
+    kxmlgui qtbase qttools solid
+  ] ++ lib.optionals stdenv.isLinux [
+    kded
+  ];
+  outputs = [ "out" "dev" ];
+  patches = [
+    ./0001-Remove-impure-smbd-search-path.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..a47182fda5e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kirigami2.nix
@@ -0,0 +1,8 @@
+{ mkDerivation, extra-cmake-modules, qtbase, qtquickcontrols2, qtgraphicaleffects, qttools }:
+
+mkDerivation {
+  pname = "kirigami2";
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ];
+  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..8abed8aaa090
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemmodels.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase
+}:
+
+mkDerivation {
+  pname = "kitemmodels";
+  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..ef350835f05d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kitemviews.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qttools
+}:
+
+mkDerivation {
+  pname = "kitemviews";
+  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..a4a6d5bb1025
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjobwidgets.nix
@@ -0,0 +1,11 @@
+{
+  mkDerivation,
+  extra-cmake-modules, qttools,
+  kcoreaddons, kwidgetsaddons, qtx11extras
+}:
+
+mkDerivation {
+  pname = "kjobwidgets";
+  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..a0f985323747
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjs.nix
@@ -0,0 +1,11 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  pcre, qtbase,
+}:
+
+mkDerivation {
+  pname = "kjs";
+  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..576727e81d2f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kjsembed.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools, qttools,
+  ki18n, kjs, qtsvg,
+}:
+
+mkDerivation {
+  pname = "kjsembed";
+  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..f92c22956511
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kmediaplayer.nix
@@ -0,0 +1,11 @@
+{ mkDerivation
+, extra-cmake-modules
+, kparts
+, kxmlgui
+}:
+
+mkDerivation {
+  pname = "kmediaplayer";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kparts kxmlgui ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/0001-Delay-resolving-knsrcdir.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/0001-Delay-resolving-knsrcdir.patch
new file mode 100644
index 000000000000..b42e75267f9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/0001-Delay-resolving-knsrcdir.patch
@@ -0,0 +1,25 @@
+From 09b5063e115c36b75e291230175b449a0f6d0c29 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 13:34:33 -0500
+Subject: [PATCH] Delay resolving knsrcdir
+
+---
+ KF5NewStuffCoreConfig.cmake.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/KF5NewStuffCoreConfig.cmake.in b/KF5NewStuffCoreConfig.cmake.in
+index c65c7c4..3275627 100644
+--- a/KF5NewStuffCoreConfig.cmake.in
++++ b/KF5NewStuffCoreConfig.cmake.in
+@@ -3,7 +3,7 @@
+ include(CMakeFindDependencyMacro)
+ find_dependency(KF5Attica "@KF_DEP_VERSION@")
+ 
+-set(KDE_INSTALL_KNSRCDIR "@KDE_INSTALL_DATADIR@/knsrcfiles")
++set(KDE_INSTALL_KNSRCDIR "${KDE_INSTALL_DATADIR}/knsrcfiles")
+ 
+ include("${CMAKE_CURRENT_LIST_DIR}/KF5NewStuffCoreTargets.cmake")
+ @PACKAGE_INCLUDE_CORE_QCHTARGETS@
+-- 
+2.30.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/default.nix
new file mode 100644
index 000000000000..6e554b5faaad
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knewstuff/default.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, fetchpatch,
+  extra-cmake-modules,
+  attica, karchive, kcompletion, kconfig, kcoreaddons, ki18n, kiconthemes,
+  kio, kitemviews, kpackage, kservice, ktextwidgets, kwidgetsaddons, kxmlgui, qtbase,
+  qtdeclarative, kirigami2, syndication,
+}:
+
+mkDerivation {
+  pname = "knewstuff";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    karchive kcompletion kconfig kcoreaddons ki18n kiconthemes kio kitemviews
+    kpackage
+    ktextwidgets kwidgetsaddons qtbase qtdeclarative kirigami2 syndication
+  ];
+  propagatedBuildInputs = [ attica kservice kxmlgui ];
+  patches = [
+    ./0001-Delay-resolving-knsrcdir.patch
+  ];
+}
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..5284d673d89e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifications.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, lib, stdenv
+, extra-cmake-modules
+, kcodecs, kconfig, kcoreaddons, kwindowsystem
+, libdbusmenu
+, phonon
+, qttools, qtx11extras, qtmacextras
+}:
+
+mkDerivation {
+  pname = "knotifications";
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  buildInputs = [
+    kcodecs kconfig kcoreaddons kwindowsystem libdbusmenu phonon qtx11extras
+  ] ++ lib.optionals stdenv.isDarwin [
+    qtmacextras
+  ];
+}
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..b2415d731ff0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/knotifyconfig.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kcompletion, kconfig, ki18n, kio, phonon, qtbase,
+}:
+
+mkDerivation {
+  pname = "knotifyconfig";
+  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/0001-Allow-external-paths-default.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0001-Allow-external-paths-default.patch
new file mode 100644
index 000000000000..4b1c0aadf76d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0001-Allow-external-paths-default.patch
@@ -0,0 +1,25 @@
+From c134a83d226fc6b92412ee714bb6c7ab7e3a800f Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 10:25:18 -0500
+Subject: [PATCH 1/2] Allow external paths default
+
+---
+ src/kpackage/package.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
+index 36f5600..881f176 100644
+--- a/src/kpackage/package.cpp
++++ b/src/kpackage/package.cpp
+@@ -866,7 +866,7 @@ PackagePrivate::PackagePrivate()
+ PackagePrivate::PackagePrivate()
+     : QSharedData()
+     , fallbackPackage(nullptr)
+-    , externalPaths(false)
++    , externalPaths(true)
+     , valid(false)
+     , checkedValid(false)
+ {
+-- 
+2.30.1
+
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0002-QDirIterator-follow-symlinks.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0002-QDirIterator-follow-symlinks.patch
new file mode 100644
index 000000000000..933271def27d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/0002-QDirIterator-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From b1c0d2542234247a5051df015d70347597dfe8d8 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 10:26:40 -0500
+Subject: [PATCH 2/2] QDirIterator follow symlinks
+
+---
+ src/kpackage/packageloader.cpp            | 2 +-
+ src/kpackage/private/packagejobthread.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/kpackage/packageloader.cpp b/src/kpackage/packageloader.cpp
+index f03d882..d5aee56 100644
+--- a/src/kpackage/packageloader.cpp
++++ b/src/kpackage/packageloader.cpp
+@@ -196,7 +196,7 @@ QList<KPluginMetaData> PackageLoader::listPackages(const QString &packageFormat,
+     }
+
+     for (auto const &plugindir : std::as_const(paths)) {
+-        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);
+--
+2.30.1
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..c1d9bf387fc5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpackage/default.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  karchive, kconfig, kcoreaddons, ki18n, qtbase,
+}:
+
+mkDerivation {
+  pname = "kpackage";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ karchive kconfig kcoreaddons ki18n qtbase ];
+  patches = [
+    ./0001-Allow-external-paths-default.patch
+    ./0002-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..682c2da63132
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kparts.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, ki18n, kiconthemes, kio, kjobwidgets, knotifications,
+  kservice, ktextwidgets, kwidgetsaddons, kxmlgui
+}:
+
+mkDerivation {
+  pname = "kparts";
+  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..433cc6b6e113
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpeople.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  kcoreaddons, ki18n, kitemviews, kservice, kwidgetsaddons, qtbase,
+  qtdeclarative,
+}:
+
+mkDerivation {
+  pname = "kpeople";
+  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..eb26b252566b
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kplotting.nix
@@ -0,0 +1,10 @@
+{ mkDerivation
+, extra-cmake-modules, qttools, qtbase
+}:
+
+mkDerivation {
+  pname = "kplotting";
+  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..239407d6abdf
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kpty.nix
@@ -0,0 +1,8 @@
+{ mkDerivation, extra-cmake-modules, kcoreaddons, ki18n, qtbase, }:
+
+mkDerivation {
+  pname = "kpty";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ kcoreaddons ki18n qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/kquickcharts.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/kquickcharts.nix
new file mode 100644
index 000000000000..20c1b2368a7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kquickcharts.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtquickcontrols2, qtbase,
+}:
+
+mkDerivation {
+  pname = "kquickcharts";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtquickcontrols2 ];
+  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..7cc083e5a261
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kross.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, extra-cmake-modules, kcompletion, kcoreaddons
+, kdoctools, ki18n, kiconthemes, kio, kparts, kwidgetsaddons
+, kxmlgui, qtbase, qtscript, qtxmlpatterns,
+}:
+
+mkDerivation {
+  pname = "kross";
+  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..a56e56a2fe09
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/krunner.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, fetchpatch,
+  extra-cmake-modules,
+  kconfig, kcoreaddons, ki18n, kio, kservice, plasma-framework, qtbase,
+  qtdeclarative, solid, threadweaver, kwindowsystem
+}:
+
+let
+  self = mkDerivation {
+    pname = "krunner";
+    nativeBuildInputs = [ extra-cmake-modules ];
+    buildInputs = [
+      kconfig kcoreaddons ki18n kio kservice qtdeclarative solid
+      threadweaver
+    ];
+    propagatedBuildInputs = [ plasma-framework qtbase kwindowsystem ];
+  };
+in self
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..008c52cf0785
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kservice/default.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation,
+  bison, extra-cmake-modules, flex,
+  kconfig, kcoreaddons, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem,
+  qtbase, shared-mime-info,
+}:
+
+mkDerivation {
+  pname = "kservice";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedNativeBuildInputs = [ bison flex ];
+  buildInputs = [
+    kcrash kdbusaddons ki18n kwindowsystem qtbase
+  ];
+  propagatedBuildInputs = [ kconfig kcoreaddons ];
+  propagatedUserEnvPkgs = [ shared-mime-info ]; # for kbuildsycoca5
+  patches = [
+    ./qdiriterator-follow-symlinks.patch
+    ./no-canonicalize-path.patch
+  ];
+}
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/ktexteditor.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
new file mode 100644
index 000000000000..ccc9f76b237a
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktexteditor.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, stdenv,
+  extra-cmake-modules, perl,
+  karchive, kconfig, kguiaddons, ki18n, kiconthemes, kio, kparts, libgit2,
+  qtscript, qtxmlpatterns, sonnet, syntax-highlighting, qtquickcontrols,
+  editorconfig-core-c
+}:
+
+mkDerivation ({
+  pname = "ktexteditor";
+  nativeBuildInputs = [ extra-cmake-modules perl ];
+  buildInputs = [
+    karchive kconfig kguiaddons ki18n kiconthemes kio libgit2 qtscript
+    qtxmlpatterns sonnet syntax-highlighting qtquickcontrols
+    editorconfig-core-c
+  ];
+  propagatedBuildInputs = [ kparts ];
+} // lib.optionalAttrs stdenv.isDarwin {
+  postPatch = ''
+    substituteInPlace src/part/CMakeLists.txt \
+      --replace "kpart.desktop" "${kparts}/share/kservicetypes5/kpart.desktop"
+  '';
+})
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..6ce7aa88c3a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/ktextwidgets.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation,
+  extra-cmake-modules, qttools,
+  kcompletion, kconfig, kconfigwidgets, ki18n, kiconthemes, kservice,
+  kwindowsystem, qtbase, sonnet,
+}:
+
+mkDerivation {
+  pname = "ktextwidgets";
+  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..aa4c87a1e5f9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kunitconversion.nix
@@ -0,0 +1,8 @@
+{ mkDerivation, extra-cmake-modules, ki18n, qtbase, }:
+
+mkDerivation {
+  pname = "kunitconversion";
+  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..01ad788ba112
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwallet.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation,
+  extra-cmake-modules, kdoctools,
+  kconfig, kconfigwidgets, kcoreaddons , kdbusaddons, ki18n,
+  kiconthemes, knotifications, kservice, kwidgetsaddons, kwindowsystem,
+  libgcrypt, qgpgme, qtbase, qca-qt5
+}:
+
+mkDerivation {
+  pname = "kwallet";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes
+    knotifications kservice kwidgetsaddons kwindowsystem
+    libgcrypt qgpgme qca-qt5
+  ];
+  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..fbe7d70ec2f1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwayland.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, propagateBin, lib,
+  extra-cmake-modules,
+  plasma-wayland-protocols, qtbase, wayland, wayland-protocols
+}:
+
+mkDerivation {
+  pname = "kwayland";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ plasma-wayland-protocols wayland wayland-protocols ];
+  propagatedBuildInputs = [ qtbase ];
+  setupHook = propagateBin; # XDG_CONFIG_DIRS
+  meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+}
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..0fead3bfd6ba
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase, qttools
+}:
+
+mkDerivation {
+  pname = "kwidgetsaddons";
+  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..ec102dbb342a
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  libpthreadstubs, libXdmcp,
+  qtbase, qttools, qtx11extras
+}:
+
+mkDerivation {
+  pname = "kwindowsystem";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ libpthreadstubs libXdmcp qttools qtx11extras ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}
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..c666edbc196d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlgui.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation,
+  extra-cmake-modules, qttools,
+  attica, kconfig, kconfigwidgets, kglobalaccel, ki18n, kiconthemes, kitemviews,
+  ktextwidgets, kwindowsystem, qtbase, sonnet,
+}:
+
+mkDerivation {
+  pname = "kxmlgui";
+  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..3b2d869d1777
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix
@@ -0,0 +1,9 @@
+{ mkDerivation, extra-cmake-modules, ki18n, kio }:
+
+mkDerivation {
+  pname = "kxmlrpcclient";
+  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..f82f97fc7d9d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  modemmanager, qtbase
+}:
+
+mkDerivation {
+  pname = "modemmanager-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ modemmanager qtbase ];
+  outputs = [ "out" "dev" ];
+  meta.platforms = lib.platforms.linux;
+}
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..e9f812d68da8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  networkmanager, qtbase,
+}:
+
+mkDerivation {
+  pname = "networkmanager-qt";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ networkmanager qtbase ];
+  outputs = [ "out" "dev" ];
+  meta.platforms = lib.platforms.linux;
+}
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..7121944d5d39
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix
@@ -0,0 +1,13 @@
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, qtbase
+}:
+
+mkDerivation {
+  pname = "oxygen-icons5";
+  meta.license = lib.licenses.lgpl3Plus;
+  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..3d1e6bfb23d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/plasma-framework.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation,
+  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 {
+  pname = "plasma-framework";
+  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
+    qtquickcontrols2
+  ];
+  propagatedBuildInputs = [ kpackage kservice qtbase kirigami2 ];
+}
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..d2a7b5c1a408
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/prison.nix
@@ -0,0 +1,13 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  libdmtx, qrencode, qtbase, qtmultimedia, zxing-cpp
+}:
+
+mkDerivation {
+  pname = "prison";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ libdmtx qrencode zxing-cpp ];
+  propagatedBuildInputs = [ qtbase qtmultimedia ];
+  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..ee4e9584641c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/purpose.nix
@@ -0,0 +1,14 @@
+{
+  mkDerivation, extra-cmake-modules, intltool, qtbase
+, accounts-qt, qtdeclarative, kaccounts-integration, kconfig, kcoreaddons, ki18n, kio, kirigami2
+, fetchpatch, signond
+}:
+
+mkDerivation {
+  pname = "purpose";
+  nativeBuildInputs = [ extra-cmake-modules intltool ];
+  buildInputs = [
+    qtbase accounts-qt qtdeclarative kaccounts-integration kconfig kcoreaddons
+    ki18n kio kirigami2 signond
+  ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/qqc2-desktop-style.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/qqc2-desktop-style.nix
new file mode 100644
index 000000000000..6d8635c4f283
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/qqc2-desktop-style.nix
@@ -0,0 +1,14 @@
+{ mkDerivation
+, extra-cmake-modules
+, qtquickcontrols2
+, qtx11extras
+, kconfig
+, kiconthemes
+, kirigami2
+}:
+
+mkDerivation {
+  pname = "qqc2-desktop-style";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ qtx11extras qtquickcontrols2 kconfig kiconthemes kirigami2 ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/default.nix b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/default.nix
new file mode 100644
index 000000000000..27160c3bda0d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/default.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib, stdenv,
+  bison, extra-cmake-modules, flex,
+  media-player-info, qtbase, qtdeclarative, qttools
+}:
+
+mkDerivation {
+  pname = "solid";
+  patches = [ ./fix-search-path.patch ];
+  nativeBuildInputs = [ bison extra-cmake-modules flex ]
+    ++ lib.optionals stdenv.isLinux [ media-player-info ];
+  buildInputs = [ qtdeclarative qttools ];
+  propagatedBuildInputs = [ qtbase ];
+  propagatedUserEnvPkgs = lib.optionals stdenv.isLinux [ media-player-info ];
+}
diff --git a/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/fix-search-path.patch b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/fix-search-path.patch
new file mode 100644
index 000000000000..010aa1f3efcc
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/solid/fix-search-path.patch
@@ -0,0 +1,17 @@
+diff --git a/src/solid/devices/backends/fstab/fstabhandling.cpp b/src/solid/devices/backends/fstab/fstabhandling.cpp
+index ac2a628..7ee46cc 100644
+--- a/src/solid/devices/backends/fstab/fstabhandling.cpp
++++ b/src/solid/devices/backends/fstab/fstabhandling.cpp
+@@ -275,7 +275,11 @@ bool Solid::Backends::Fstab::FstabHandling::callSystemCommand(const QString &com
+                                                               const QObject *receiver,
+                                                               std::function<void(QProcess *)> callback)
+ {
+-    static const QStringList searchPaths{QStringLiteral("/sbin"), QStringLiteral("/bin"), QStringLiteral("/usr/sbin"), QStringLiteral("/usr/bin")};
++    static const QStringList searchPaths{QStringLiteral("/run/wrappers/bin"),
++                                         QStringLiteral("/sbin"),
++                                         QStringLiteral("/bin"),
++                                         QStringLiteral("/usr/sbin"),
++                                         QStringLiteral("/usr/bin")};
+     static const QString joinedPaths = searchPaths.join(QLatin1Char(':'));
+     const QString exec = QStandardPaths::findExecutable(commandName, searchPaths);
+     if (exec.isEmpty()) {
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..78aa189559fc
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/sonnet.nix
@@ -0,0 +1,11 @@
+{ mkDerivation
+, extra-cmake-modules
+, aspell, qtbase, qttools
+}:
+
+mkDerivation {
+  pname = "sonnet";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [ aspell 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..1fd8a2ba15a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/srcs.nix
@@ -0,0 +1,670 @@
+# DO NOT EDIT! This file is generated automatically.
+# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/kde-frameworks/
+{ fetchurl, mirror }:
+
+{
+  attica = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/attica-5.110.0.tar.xz";
+      sha256 = "1lp7y0r3npv93kcw1fkgl8c2njbs6y4m8cg32b60pyjahfqspxd6";
+      name = "attica-5.110.0.tar.xz";
+    };
+  };
+  baloo = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/baloo-5.110.0.tar.xz";
+      sha256 = "0bg2nyp7zp1mka7ng8bwcd0hrbglrdiz7xw43r9q8wycr9qmva1n";
+      name = "baloo-5.110.0.tar.xz";
+    };
+  };
+  bluez-qt = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/bluez-qt-5.110.0.tar.xz";
+      sha256 = "1xvr85i0lkdpca64dzd7wqasc7acpzvh2kawl9nrfkrn96vrm0cz";
+      name = "bluez-qt-5.110.0.tar.xz";
+    };
+  };
+  breeze-icons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/breeze-icons-5.110.0.tar.xz";
+      sha256 = "1m5z8g7rvilvwfn65yazci51i83ixv7fc5sh2v5vgxrlmhbysg0s";
+      name = "breeze-icons-5.110.0.tar.xz";
+    };
+  };
+  extra-cmake-modules = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/extra-cmake-modules-5.110.0.tar.xz";
+      sha256 = "0f347y8q3ckgfq4skh2q69n67v3w9k680db0br4f43i37vdzaikp";
+      name = "extra-cmake-modules-5.110.0.tar.xz";
+    };
+  };
+  frameworkintegration = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/frameworkintegration-5.110.0.tar.xz";
+      sha256 = "0ghl5p01g3jdj75wzyjwq4b0l0p98r0vkkf6zj6d3lbax207z0sq";
+      name = "frameworkintegration-5.110.0.tar.xz";
+    };
+  };
+  kactivities = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kactivities-5.110.0.tar.xz";
+      sha256 = "1c1456jc3s7cl2l3kmkgprgngip0j9c7ssd0b0fvjd41dwhzhra5";
+      name = "kactivities-5.110.0.tar.xz";
+    };
+  };
+  kactivities-stats = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kactivities-stats-5.110.0.tar.xz";
+      sha256 = "1agqsdgbmglrzpg9w4df9qdg4hf8g1nnnkq7adp6cxsj3x8c8zx4";
+      name = "kactivities-stats-5.110.0.tar.xz";
+    };
+  };
+  kapidox = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kapidox-5.110.0.tar.xz";
+      sha256 = "1qi2mcslw0gsxc6p5q78lhg3if01j8dhxf0ypwb8njsfjcr45d24";
+      name = "kapidox-5.110.0.tar.xz";
+    };
+  };
+  karchive = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/karchive-5.110.0.tar.xz";
+      sha256 = "1pqc0j4xkhwc6gdgg1q7pl3hjnrscwz8vbdz8jbvpaz51cy5iipw";
+      name = "karchive-5.110.0.tar.xz";
+    };
+  };
+  kauth = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kauth-5.110.0.tar.xz";
+      sha256 = "1yymmyvhqgrwdpy5c2narh6d0ac41mw9ifrhckcyr22kdyrmgcz1";
+      name = "kauth-5.110.0.tar.xz";
+    };
+  };
+  kbookmarks = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kbookmarks-5.110.0.tar.xz";
+      sha256 = "1k04mcfciv3gq4qw5gkpq7189wfxxlr427h4827m3hs3ysbgc4vh";
+      name = "kbookmarks-5.110.0.tar.xz";
+    };
+  };
+  kcalendarcore = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcalendarcore-5.110.0.tar.xz";
+      sha256 = "19zb1g4lbiqy4vcay6hbjx9ak5r00frfn1hahpc544q9l0dznl52";
+      name = "kcalendarcore-5.110.0.tar.xz";
+    };
+  };
+  kcmutils = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcmutils-5.110.0.tar.xz";
+      sha256 = "0ccgrd757ww890nvajw1s9yvq6iikp316q123rfminrc0mlrpzaq";
+      name = "kcmutils-5.110.0.tar.xz";
+    };
+  };
+  kcodecs = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcodecs-5.110.0.tar.xz";
+      sha256 = "1i15q8kg1dn72sxg9djvg9h4mhqh9rgvnsf3bz0pjd5jbwqqyv1v";
+      name = "kcodecs-5.110.0.tar.xz";
+    };
+  };
+  kcompletion = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcompletion-5.110.0.tar.xz";
+      sha256 = "0a9l6p9kfg074wxz0r9dn43baibrbzbh80x60rds2jaf3yjg212g";
+      name = "kcompletion-5.110.0.tar.xz";
+    };
+  };
+  kconfig = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kconfig-5.110.0.tar.xz";
+      sha256 = "1i9idh0rh8ryry5gf22wwgzd15y14jymxjdxbkgx13kqpfyqhaxd";
+      name = "kconfig-5.110.0.tar.xz";
+    };
+  };
+  kconfigwidgets = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kconfigwidgets-5.110.0.tar.xz";
+      sha256 = "04mlw41xdps7qgnmmccqgs7jc5iipx2vqp9bd91l3sz4p90wj3sg";
+      name = "kconfigwidgets-5.110.0.tar.xz";
+    };
+  };
+  kcontacts = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcontacts-5.110.0.tar.xz";
+      sha256 = "0gib8nlis59kbhydqvf6alwxvy4db94r2p3vpbcdy48gc4i06344";
+      name = "kcontacts-5.110.0.tar.xz";
+    };
+  };
+  kcoreaddons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcoreaddons-5.110.0.tar.xz";
+      sha256 = "0xcd2ph62a7kbm8camp1vnsxlaq1kmqm9hw9gyphcdh0rh6fi3bf";
+      name = "kcoreaddons-5.110.0.tar.xz";
+    };
+  };
+  kcrash = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kcrash-5.110.0.tar.xz";
+      sha256 = "15j70r6afc0lyg41047r27l089gkq8fh39w9iyvhv0h8hfxxah6g";
+      name = "kcrash-5.110.0.tar.xz";
+    };
+  };
+  kdav = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdav-5.110.0.tar.xz";
+      sha256 = "0qz5iq9fi1vk1z7w4wdh7kxrc06vnyrvs7n0llyrjaprzjn8yx6a";
+      name = "kdav-5.110.0.tar.xz";
+    };
+  };
+  kdbusaddons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdbusaddons-5.110.0.tar.xz";
+      sha256 = "0ilzk67h5cxrjf78hw505pvbqvd2lkjk3m0g188pcw0sdg10xb8h";
+      name = "kdbusaddons-5.110.0.tar.xz";
+    };
+  };
+  kdeclarative = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdeclarative-5.110.0.tar.xz";
+      sha256 = "1vcqdi4lji97wm5vil2p1g7wi6rwrz0g6aiqf1nzi026fpsc8njj";
+      name = "kdeclarative-5.110.0.tar.xz";
+    };
+  };
+  kded = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kded-5.110.0.tar.xz";
+      sha256 = "1n8hzkwhqrx4mb7ahqnkga01zslcp82ya22hppfapldy83bfrgyl";
+      name = "kded-5.110.0.tar.xz";
+    };
+  };
+  kdelibs4support = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kdelibs4support-5.110.0.tar.xz";
+      sha256 = "119hhc0f862kzr5flrlpg9b8xlcl1qxa5xkccad0hpba76pk2af4";
+      name = "kdelibs4support-5.110.0.tar.xz";
+    };
+  };
+  kdesignerplugin = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kdesignerplugin-5.110.0.tar.xz";
+      sha256 = "146i8n9rrajh03x180z48qi8dn31dywsz052bhbn4yw61ag4w4nc";
+      name = "kdesignerplugin-5.110.0.tar.xz";
+    };
+  };
+  kdesu = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdesu-5.110.0.tar.xz";
+      sha256 = "0ll5k4lpn1v4bc365w2ky0qszikfz2r589ni8iyk109qdqciyrr9";
+      name = "kdesu-5.110.0.tar.xz";
+    };
+  };
+  kdewebkit = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kdewebkit-5.110.0.tar.xz";
+      sha256 = "0p09lby7csx3j513lm91k247iwxby423cz7da51n20qncan8g65v";
+      name = "kdewebkit-5.110.0.tar.xz";
+    };
+  };
+  kdnssd = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdnssd-5.110.0.tar.xz";
+      sha256 = "0xmahgn572ah8ji4d4afalcl7r2krn971ix5jwcqgrj57m5haj45";
+      name = "kdnssd-5.110.0.tar.xz";
+    };
+  };
+  kdoctools = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kdoctools-5.110.0.tar.xz";
+      sha256 = "1g05gppc6qzkag1x18anymbwdswpg32w6jh12x9jfj79vcp7wg4j";
+      name = "kdoctools-5.110.0.tar.xz";
+    };
+  };
+  kemoticons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kemoticons-5.110.0.tar.xz";
+      sha256 = "1r1d3kw6wzw63kq9wy4ic2b9hcnmm4rs7v9f1z9jhq9m1jp0zy12";
+      name = "kemoticons-5.110.0.tar.xz";
+    };
+  };
+  kfilemetadata = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kfilemetadata-5.110.0.tar.xz";
+      sha256 = "07ma48iq5vpnj391shm3s9an3rqhxskfziw6pksmzxxnga0whbl9";
+      name = "kfilemetadata-5.110.0.tar.xz";
+    };
+  };
+  kglobalaccel = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kglobalaccel-5.110.0.tar.xz";
+      sha256 = "1iw22vyrk07pzcsh41cvfp8i8589jm1yqn1cx1ad5rmryzsjalzp";
+      name = "kglobalaccel-5.110.0.tar.xz";
+    };
+  };
+  kguiaddons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kguiaddons-5.110.0.tar.xz";
+      sha256 = "0ajmxj8nhis6f4hwd64s9qfw3hbip80xrdy3d1wksykbq7g5b89c";
+      name = "kguiaddons-5.110.0.tar.xz";
+    };
+  };
+  kholidays = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kholidays-5.110.0.tar.xz";
+      sha256 = "0zikajmic93wqgy9865pf61sdlnsyzzf2jal7bj25is7a1mk8mjc";
+      name = "kholidays-5.110.0.tar.xz";
+    };
+  };
+  khtml = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/khtml-5.110.0.tar.xz";
+      sha256 = "17d87vjim32mn0s1d9zl9342aamqg4xmi6xh6d8ghrgms3vqc7in";
+      name = "khtml-5.110.0.tar.xz";
+    };
+  };
+  ki18n = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/ki18n-5.110.0.tar.xz";
+      sha256 = "03qks9kncvazq2wz3myrjgz5m0gjxm80m1ayv9vjndyyc74a9smw";
+      name = "ki18n-5.110.0.tar.xz";
+    };
+  };
+  kiconthemes = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kiconthemes-5.110.0.tar.xz";
+      sha256 = "0bb6r7jaknjyhyjhdrlji320qgb7cgxshcgab0209zk8dl8a510d";
+      name = "kiconthemes-5.110.0.tar.xz";
+    };
+  };
+  kidletime = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kidletime-5.110.0.tar.xz";
+      sha256 = "0hc30778d1k0vm4qsp58cf3d5bnws328qxazm8d5a6kxdc7izz44";
+      name = "kidletime-5.110.0.tar.xz";
+    };
+  };
+  kimageformats = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kimageformats-5.110.0.tar.xz";
+      sha256 = "0ivks2c2kgd26pr0n0b4x3hb7dmmq52vlp7f6ny14qpvm3cgnscd";
+      name = "kimageformats-5.110.0.tar.xz";
+    };
+  };
+  kinit = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kinit-5.110.0.tar.xz";
+      sha256 = "0ps2299hf02yvgs971cb4bljbmdbcvcmm2xqz6q0h8asjkpkilv5";
+      name = "kinit-5.110.0.tar.xz";
+    };
+  };
+  kio = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kio-5.110.0.tar.xz";
+      sha256 = "0sy91zlk60q5jligxp870srfc6fhd3fyk5yamkg266yfvyy9m3r2";
+      name = "kio-5.110.0.tar.xz";
+    };
+  };
+  kirigami2 = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kirigami2-5.110.0.tar.xz";
+      sha256 = "13j9z0nha3wq97apgkj43bayqijpgy6a2l7f9iryww054aqdjggx";
+      name = "kirigami2-5.110.0.tar.xz";
+    };
+  };
+  kitemmodels = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kitemmodels-5.110.0.tar.xz";
+      sha256 = "06gym33644npci4crhykyfyp2v74pya72kdzmqh4lkzp252pyfhj";
+      name = "kitemmodels-5.110.0.tar.xz";
+    };
+  };
+  kitemviews = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kitemviews-5.110.0.tar.xz";
+      sha256 = "1nqbypn0crbaqa8x19z0fh8mqbr8wbf8nc8wg0irzp32js9vcqyp";
+      name = "kitemviews-5.110.0.tar.xz";
+    };
+  };
+  kjobwidgets = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kjobwidgets-5.110.0.tar.xz";
+      sha256 = "1bl7igakmh1ipiamigs5s8fj6fy905b3j1dqgq9hxdxk59k1r1h2";
+      name = "kjobwidgets-5.110.0.tar.xz";
+    };
+  };
+  kjs = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kjs-5.110.0.tar.xz";
+      sha256 = "0xlkdi7qs75ipf87h8m7bvjn4l28y5qy20hvag1gc370fxz54v15";
+      name = "kjs-5.110.0.tar.xz";
+    };
+  };
+  kjsembed = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kjsembed-5.110.0.tar.xz";
+      sha256 = "1ynmj8ac9g9amjz0ljz3wf7sjsrwmz1kfi26r36rpqlf9mmkzfqm";
+      name = "kjsembed-5.110.0.tar.xz";
+    };
+  };
+  kmediaplayer = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kmediaplayer-5.110.0.tar.xz";
+      sha256 = "1jhh3gsbibi2hrhswg1nz1mdxn2wir5p9cvqpcqv7k8vm6rb82z3";
+      name = "kmediaplayer-5.110.0.tar.xz";
+    };
+  };
+  knewstuff = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/knewstuff-5.110.0.tar.xz";
+      sha256 = "0qld8ijy7z60qdlwa9vaq905xgzyvh5zw6ymngs00axl33m9bbbl";
+      name = "knewstuff-5.110.0.tar.xz";
+    };
+  };
+  knotifications = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/knotifications-5.110.0.tar.xz";
+      sha256 = "0zm3d36v9dgqb3pdwpj962wpngfhq08q9x9rj99f88g9dlnmy6gm";
+      name = "knotifications-5.110.0.tar.xz";
+    };
+  };
+  knotifyconfig = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/knotifyconfig-5.110.0.tar.xz";
+      sha256 = "1651rh0av8lqp8rmb3djizsb8ypihkabprgppla3af2xf446n7wp";
+      name = "knotifyconfig-5.110.0.tar.xz";
+    };
+  };
+  kpackage = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kpackage-5.110.0.tar.xz";
+      sha256 = "1jd85m7pxzah9d6b3zi2nswvsinx85brkiq142vic5l0rm6l89id";
+      name = "kpackage-5.110.0.tar.xz";
+    };
+  };
+  kparts = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kparts-5.110.0.tar.xz";
+      sha256 = "13av8v2kggbvyv8nxganjb88q38g3gbykbkwrigywc3767p838r3";
+      name = "kparts-5.110.0.tar.xz";
+    };
+  };
+  kpeople = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kpeople-5.110.0.tar.xz";
+      sha256 = "10drcfjcw00qhdlsficxb07hnnsd93smcig8argznpgwd61f807p";
+      name = "kpeople-5.110.0.tar.xz";
+    };
+  };
+  kplotting = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kplotting-5.110.0.tar.xz";
+      sha256 = "1fbzy9k0gx1468qsdd1c8fqaml3c01yy0m6n205y3ymkca78hdbk";
+      name = "kplotting-5.110.0.tar.xz";
+    };
+  };
+  kpty = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kpty-5.110.0.tar.xz";
+      sha256 = "1cx9wszi9zlay0vb9wz9hgbmbq006xgssnzzrmby4q4s6bhb92ps";
+      name = "kpty-5.110.0.tar.xz";
+    };
+  };
+  kquickcharts = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kquickcharts-5.110.0.tar.xz";
+      sha256 = "0s8xnsmhx2m6wn7fmmddzwnwc2yr3kvy85vd65m3avfw073rgj5v";
+      name = "kquickcharts-5.110.0.tar.xz";
+    };
+  };
+  kross = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kross-5.110.0.tar.xz";
+      sha256 = "169zsxrmbdv5xn6s0wmf1l2a3qghn88hgl714i0cnymq5ixy25x5";
+      name = "kross-5.110.0.tar.xz";
+    };
+  };
+  krunner = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/krunner-5.110.0.tar.xz";
+      sha256 = "0q3jhq2cswnqj5rdkxhizlv06rsxsm38ipxhcsw6p8zqabi1i351";
+      name = "krunner-5.110.0.tar.xz";
+    };
+  };
+  kservice = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kservice-5.110.0.tar.xz";
+      sha256 = "0rin6v96mcmw53dzw8sw56g7188623d1k4vs18bv44l86gixdhgg";
+      name = "kservice-5.110.0.tar.xz";
+    };
+  };
+  ktexteditor = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/ktexteditor-5.110.0.tar.xz";
+      sha256 = "0iwzw51km3mr8kdva14mxz9bvcfcf09v5igah2axkjaxazxyigla";
+      name = "ktexteditor-5.110.0.tar.xz";
+    };
+  };
+  ktextwidgets = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/ktextwidgets-5.110.0.tar.xz";
+      sha256 = "0cr7n58mak928dysyqhsr1pj0w90amikx9jav4gs4lzb4m4rjp7q";
+      name = "ktextwidgets-5.110.0.tar.xz";
+    };
+  };
+  kunitconversion = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kunitconversion-5.110.0.tar.xz";
+      sha256 = "083w0gz157j2g8qzm03yq3qwq58wafcq26qcc2ly2fksyyxkzzda";
+      name = "kunitconversion-5.110.0.tar.xz";
+    };
+  };
+  kwallet = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kwallet-5.110.0.tar.xz";
+      sha256 = "0mg5y8cvzvs7w3yy5xnpsps2b6m476l5ilw5kvarrjjpq7ybnkqz";
+      name = "kwallet-5.110.0.tar.xz";
+    };
+  };
+  kwayland = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kwayland-5.110.0.tar.xz";
+      sha256 = "0ggxvywvqfhhhb5370n90dyw0mjwkp3i7rgv58nyqsmby0g08r85";
+      name = "kwayland-5.110.0.tar.xz";
+    };
+  };
+  kwidgetsaddons = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kwidgetsaddons-5.110.0.tar.xz";
+      sha256 = "1cyphs0r5j2v93pwi9mbn6xd928lnhb0zmyfj5pywdx9n7lv0x6a";
+      name = "kwidgetsaddons-5.110.0.tar.xz";
+    };
+  };
+  kwindowsystem = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kwindowsystem-5.110.0.tar.xz";
+      sha256 = "0l3aknr3zqz9zwqlyhnr8n53bcfb22rm38vdiv0l5vpwjbjn0270";
+      name = "kwindowsystem-5.110.0.tar.xz";
+    };
+  };
+  kxmlgui = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/kxmlgui-5.110.0.tar.xz";
+      sha256 = "1j8v52ix9sv7q76cvl2gnpjs602ri57kgfh21bvqd88gf2xnwxjq";
+      name = "kxmlgui-5.110.0.tar.xz";
+    };
+  };
+  kxmlrpcclient = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/portingAids/kxmlrpcclient-5.110.0.tar.xz";
+      sha256 = "0fzd9amj2j4bw54q8fbgczqf785s6siqr1a8wbqf56wyyhki5psx";
+      name = "kxmlrpcclient-5.110.0.tar.xz";
+    };
+  };
+  modemmanager-qt = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/modemmanager-qt-5.110.0.tar.xz";
+      sha256 = "08q43arx9q81rqwhczzcn4cyl5glalwzjncb120a2cihida2m71v";
+      name = "modemmanager-qt-5.110.0.tar.xz";
+    };
+  };
+  networkmanager-qt = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/networkmanager-qt-5.110.0.tar.xz";
+      sha256 = "1bnlvpfhw6l64rgaxx9zkxd5wmwvyal5xmv31vxzf92ig6sgjdqq";
+      name = "networkmanager-qt-5.110.0.tar.xz";
+    };
+  };
+  oxygen-icons5 = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/oxygen-icons5-5.110.0.tar.xz";
+      sha256 = "1dmig458gbl0ypb99kj514nwl5gbjpfvixw9lipgc2wwnn1nkia2";
+      name = "oxygen-icons5-5.110.0.tar.xz";
+    };
+  };
+  plasma-framework = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/plasma-framework-5.110.0.tar.xz";
+      sha256 = "0jfln8lrzmcnkqhl8pij5w6mdj6g25rwc332f07g9465y9ap07cf";
+      name = "plasma-framework-5.110.0.tar.xz";
+    };
+  };
+  prison = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/prison-5.110.0.tar.xz";
+      sha256 = "019a3z18gq7nb3ahf5dd3b5fixzyfklg60dk2w4win2w19s70wb7";
+      name = "prison-5.110.0.tar.xz";
+    };
+  };
+  purpose = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/purpose-5.110.0.tar.xz";
+      sha256 = "0nl6qh7j5c3ijnq0qw1a5jmj1x5nb9hlssjjn8fdvfr7q6z67rsc";
+      name = "purpose-5.110.0.tar.xz";
+    };
+  };
+  qqc2-desktop-style = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/qqc2-desktop-style-5.110.0.tar.xz";
+      sha256 = "04pyhlr89azw0kyjxfpx6phxljck8yiflcszd4xkgiw3n9rjyg3g";
+      name = "qqc2-desktop-style-5.110.0.tar.xz";
+    };
+  };
+  solid = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/solid-5.110.0.tar.xz";
+      sha256 = "1k64cqlws7nxki21cwg197avfnxsxpw3isry5p7bqyfmq45ydcvd";
+      name = "solid-5.110.0.tar.xz";
+    };
+  };
+  sonnet = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/sonnet-5.110.0.tar.xz";
+      sha256 = "16qk63yy1y03z4rlc08qzr7mmds1yz0k9x1ws2nzp47khkza250i";
+      name = "sonnet-5.110.0.tar.xz";
+    };
+  };
+  syndication = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/syndication-5.110.0.tar.xz";
+      sha256 = "0dsd05ckfv9fdnrbgprriba7lbbfs2z9qv869pcr4n7pn7x778sd";
+      name = "syndication-5.110.0.tar.xz";
+    };
+  };
+  syntax-highlighting = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/syntax-highlighting-5.110.0.tar.xz";
+      sha256 = "0gbmgan0cy4xhjcf10g0lffhwvkhhpcgbnk190xlzl4chnmpq9w5";
+      name = "syntax-highlighting-5.110.0.tar.xz";
+    };
+  };
+  threadweaver = {
+    version = "5.110.0";
+    src = fetchurl {
+      url = "${mirror}/stable/frameworks/5.110/threadweaver-5.110.0.tar.xz";
+      sha256 = "085y4m7z0rybsvpqzl2sjwnf8yjm4lnc3n49idj2c0psm8v5ksm0";
+      name = "threadweaver-5.110.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..1d32f9b70219
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/syndication.nix
@@ -0,0 +1,11 @@
+{ mkDerivation, lib
+, extra-cmake-modules
+, kcodecs
+}:
+
+mkDerivation {
+  pname = "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..fee392140f7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix
@@ -0,0 +1,10 @@
+{ mkDerivation
+, extra-cmake-modules, perl, qtbase, qttools
+}:
+
+mkDerivation {
+  pname = "syntax-highlighting";
+  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..fb43b9f28b06
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/kde-frameworks/threadweaver.nix
@@ -0,0 +1,12 @@
+{
+  mkDerivation,
+  extra-cmake-modules,
+  qtbase
+}:
+
+mkDerivation {
+  pname = "threadweaver";
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase ];
+  outputs = [ "out" "dev" ];
+}