about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/plasma-5
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-04-09 18:28:16 +0000
committerAlyssa Ross <hi@alyssa.is>2021-04-12 18:46:15 +0000
commitfd2e737e0678ee7d8081baef05b305146a2c0034 (patch)
treeac3e9b27576a0382335532d126f9a66d486bc638 /nixpkgs/pkgs/desktops/plasma-5
parentcc207d720b6aa836e256c1ee9842bc739e630a8a (diff)
parent9e377a6ce42dccd9b624ae4ce8f978dc892ba0e2 (diff)
downloadnixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.gz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.bz2
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.lz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.xz
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.zst
nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.zip
Merge remote-tracking branch 'nixpkgs/nixos-unstable'
Diffstat (limited to 'nixpkgs/pkgs/desktops/plasma-5')
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/3rdparty/addons/virtual-desktop-bar.nix40
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/3rdparty/kwin/scripts/parachute.nix37
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/discover.nix64
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/fetch.sh2
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix9
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix5
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch57
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch10
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch10
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch26
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch9
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix4
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch6
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-systemmonitor.nix32
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch76
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch12
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/qqc2-breeze-style.nix26
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix35
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/srcs.nix418
-rw-r--r--nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix4
23 files changed, 615 insertions, 286 deletions
diff --git a/nixpkgs/pkgs/desktops/plasma-5/3rdparty/addons/virtual-desktop-bar.nix b/nixpkgs/pkgs/desktops/plasma-5/3rdparty/addons/virtual-desktop-bar.nix
new file mode 100644
index 000000000000..e71a0bd0230c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/3rdparty/addons/virtual-desktop-bar.nix
@@ -0,0 +1,40 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, extra-cmake-modules
+, kwindowsystem
+, plasma-framework
+, qtx11extras
+}:
+
+mkDerivation rec {
+  pname = "plasma-applet-virtual-desktop-bar";
+  version = "unstable-2021-02-20";
+
+  src = fetchFromGitHub {
+    owner = "wsdfhjxc";
+    repo = "virtual-desktop-bar";
+    rev = "3e9bbddb8def8da65071a1c325eaa06598e8a473";
+    sha256 = "192ns6c2brzq46pg385n0v1ydbz52aaa8f5dgfw5251hrw9c7bxg";
+  };
+
+  buildInputs = [
+    kwindowsystem plasma-framework qtx11extras
+  ];
+
+  nativeBuildInputs = [
+    extra-cmake-modules
+  ];
+
+  cmakeFlags = [
+    "-Wno-dev"
+  ];
+
+  meta = with lib; {
+    description = "Manage virtual desktops dynamically in a convenient way";
+    homepage = "https://github.com/wsdfhjxc/virtual-desktop-bar";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/plasma-5/3rdparty/kwin/scripts/parachute.nix b/nixpkgs/pkgs/desktops/plasma-5/3rdparty/kwin/scripts/parachute.nix
new file mode 100644
index 000000000000..d7816de30422
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/3rdparty/kwin/scripts/parachute.nix
@@ -0,0 +1,37 @@
+{ lib, mkDerivation, fetchFromGitHub
+, kcoreaddons, kwindowsystem, plasma-framework, systemsettings }:
+
+mkDerivation rec {
+  pname = "parachute";
+  version = "0.9.1";
+
+  src = fetchFromGitHub {
+    owner = "tcorreabr";
+    repo = "parachute";
+    rev = "v${version}";
+    sha256 = "QIWb1zIGfkS+Bef7LK+JA6XpwGUW+79XZY47j75nlCE=";
+  };
+
+  buildInputs = [
+    kcoreaddons kwindowsystem plasma-framework systemsettings
+  ];
+
+  dontBuild = true;
+
+  # 1. --global still installs to $HOME/.local/share so we use --packageroot
+  # 2. plasmapkg2 doesn't copy metadata.desktop into place, so we do that manually
+  installPhase = ''
+    runHook preInstall
+    plasmapkg2 --type kwinscript --install ${src} --packageroot $out/share/kwin/scripts
+    install -Dm644 ${src}/metadata.desktop $out/share/kservices5/Parachute.desktop
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Look at your windows and desktops from above.";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ mjlbach ];
+    inherit (src.meta) homepage;
+    inherit (kwindowsystem.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/plasma-5/default.nix b/nixpkgs/pkgs/desktops/plasma-5/default.nix
index 014f794b5e83..98bf4b025f2d 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/default.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/default.nix
@@ -131,21 +131,25 @@ let
       plasma-integration = callPackage ./plasma-integration {};
       plasma-nm = callPackage ./plasma-nm {};
       plasma-pa = callPackage ./plasma-pa.nix { inherit gconf; };
+      plasma-systemmonitor = callPackage ./plasma-systemmonitor.nix { };
       plasma-thunderbolt = callPackage ./plasma-thunderbolt.nix { };
       plasma-vault = callPackage ./plasma-vault {};
       plasma-workspace = callPackage ./plasma-workspace {};
       plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {};
       polkit-kde-agent = callPackage ./polkit-kde-agent.nix {};
       powerdevil = callPackage ./powerdevil.nix {};
+      qqc2-breeze-style = callPackage ./qqc2-breeze-style.nix {};
       sddm-kcm = callPackage ./sddm-kcm.nix {};
       systemsettings = callPackage ./systemsettings.nix {};
       xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix {};
 
       thirdParty = let inherit (libsForQt5) callPackage; in {
         plasma-applet-caffeine-plus = callPackage ./3rdparty/addons/caffeine-plus.nix { };
+        plasma-applet-virtual-desktop-bar = callPackage ./3rdparty/addons/virtual-desktop-bar.nix { };
         kwin-dynamic-workspaces = callPackage ./3rdparty/kwin/scripts/dynamic-workspaces.nix { };
         kwin-tiling = callPackage ./3rdparty/kwin/scripts/tiling.nix { };
         krohnkite = callPackage ./3rdparty/kwin/scripts/krohnkite.nix { };
+        parachute = callPackage ./3rdparty/kwin/scripts/parachute.nix { };
       };
 
     };
diff --git a/nixpkgs/pkgs/desktops/plasma-5/discover.nix b/nixpkgs/pkgs/desktops/plasma-5/discover.nix
index 37632ab2f76d..75e0fd6917d5 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/discover.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/discover.nix
@@ -1,21 +1,65 @@
-{
-  mkDerivation, lib,
-  extra-cmake-modules, gettext, kdoctools, python,
-  appstream-qt, discount, flatpak, fwupd, ostree, packagekit-qt, pcre, util-linux,
-  qtbase, qtquickcontrols2,
-  karchive, kconfig, kcrash, kdbusaddons, kdeclarative, kio, kirigami2, kitemmodels,
-  knewstuff, kwindowsystem, kxmlgui, plasma-framework
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, gettext
+, kdoctools
+, python3
+, appstream-qt
+, discount
+, flatpak
+, fwupd
+, ostree
+, packagekit-qt
+, pcre
+, util-linux
+, qtbase
+, qtquickcontrols2
+, qtx11extras
+, karchive
+, kcmutils
+, kconfig
+, kcrash
+, kdbusaddons
+, kdeclarative
+, kidletime
+, kio
+, kirigami2
+, kitemmodels
+, knewstuff
+, kwindowsystem
+, kxmlgui
+, plasma-framework
 }:
 
 mkDerivation {
   name = "discover";
   meta.broken = lib.versionOlder qtbase.version "5.15.0";
-  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python ];
+  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python3 ];
   buildInputs = [
     # discount is needed for libmarkdown
-    appstream-qt discount flatpak fwupd ostree packagekit-qt pcre util-linux
+    appstream-qt
+    discount
+    flatpak
+    fwupd
+    ostree
+    packagekit-qt
+    pcre
+    util-linux
     qtquickcontrols2
-    karchive kconfig kcrash kdbusaddons kdeclarative kio kirigami2 kitemmodels knewstuff kwindowsystem kxmlgui
+    qtx11extras
+    karchive
+    kcmutils
+    kconfig
+    kcrash
+    kdbusaddons
+    kdeclarative
+    kidletime
+    kio
+    kirigami2
+    kitemmodels
+    knewstuff
+    kwindowsystem
+    kxmlgui
     plasma-framework
   ];
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/fetch.sh b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh
index 43ea2d692818..10214b3fe23f 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/fetch.sh
+++ b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh
@@ -1 +1 @@
-WGET_ARGS=( https://download.kde.org/stable/plasma/5.20.5/ -A '*.tar.xz' )
+WGET_ARGS=( https://download.kde.org/stable/plasma/5.21.3/ -A '*.tar.xz' )
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix
index c8213482d79d..23e225bd7440 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix
@@ -5,7 +5,7 @@
   kcmutils, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons,
   kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kirigami2, kpackage,
   kservice, kwayland, kwidgetsaddons, kxmlgui, libraw1394, libGLU, pciutils,
-  solid
+  solid, systemsettings
 }:
 
 mkDerivation {
@@ -15,6 +15,11 @@ mkDerivation {
   buildInputs = [
     kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons
     kdeclarative kdelibs4support ki18n kiconthemes kio kirigami2 kpackage
-    kservice kwayland kwidgetsaddons kxmlgui libraw1394 libGLU pciutils solid
+    kservice kwayland kwidgetsaddons kxmlgui libraw1394 libGLU pciutils solid systemsettings
   ];
+  preFixup = ''
+    # fix wrong symlink of infocenter pointing to a 'systemsettings5' binary in the same directory,
+    # while it is actually located in a completely different store path
+    ln -sf ${lib.getBin systemsettings}/bin/systemsettings5 $out/bin/kinfocenter
+  '';
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix
index 0581b8bde74a..27d0ab8a0fba 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix
@@ -3,7 +3,8 @@
   extra-cmake-modules, kdoctools,
   libcap, libpcap, lm_sensors,
   kconfig, kcoreaddons, kdelibs4support, ki18n, kiconthemes, kitemviews,
-  knewstuff, libksysguard, qtbase
+  knewstuff, libksysguard, qtbase,
+  networkmanager-qt, libnl
 }:
 
 mkDerivation {
@@ -12,6 +13,6 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [
     kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard
-    kdelibs4support ki18n libcap libpcap lm_sensors
+    kdelibs4support ki18n libcap libpcap lm_sensors networkmanager-qt libnl
   ];
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
new file mode 100644
index 000000000000..7216f54b6c87
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
@@ -0,0 +1,57 @@
+From 29ec6fada935ef966e5859082435ed57daa9522d Mon Sep 17 00:00:00 2001
+From: Samuel Dionne-Riel <samuel@dionne-riel.com>
+Date: Tue, 16 Mar 2021 15:03:59 -0400
+Subject: [PATCH] [NixOS] Unwrap executable name for .desktop search
+
+Why is this necessary even though -a "$0" is used in the wrapper?
+Because it's completely bypassing argv0! This looks at the executable
+file in-use according to the kernel!
+
+Wrappers cannot affect the `/proc/.../exe` symlink!
+---
+ service_utils.h | 28 +++++++++++++++++++++++++++-
+ 1 file changed, 27 insertions(+), 1 deletion(-)
+
+diff --git a/service_utils.h b/service_utils.h
+index 8a70c1fad..6674f553b 100644
+--- a/service_utils.h
++++ b/service_utils.h
+@@ -26,8 +26,34 @@ namespace KWin
+ const static QString s_waylandInterfaceName = QStringLiteral("X-KDE-Wayland-Interfaces");
+ const static QString s_dbusRestrictedInterfaceName = QStringLiteral("X-KDE-DBUS-Restricted-Interfaces");
+ 
+-static QStringList fetchProcessServiceField(const QString &executablePath, const QString &fieldName)
++static QStringList fetchProcessServiceField(const QString &in_executablePath, const QString &fieldName)
+ {
++    // !! Start NixOS fix
++    // NixOS fixes many packaging issues through "wrapper" scripts that manipulates the environment or does
++    // miscellaneous trickeries and mischievous things to make the programs work.
++    // In turn, programs often employs different mischievous schemes and trickeries to do *other things.
++    // It often happens that they conflict.
++    // Here, `kwin` tries to detect the .desktop file for a given process.
++    // `kwin` followed the process `/proc/.../exe` up to the actual binary running.
++    // It normally would be fine, e.g. /usr/bin/foobar is what's in the desktop file.
++    // But it's not the truth here! It's extremely likely the resolved path is /nix/store/.../bin/.foobar-wrapped
++    // rather than what the desktop file points to, something like /nix/store/.../bin/foobar !!
++    // Since the wrappers for Nixpkgs *always* prepend a dot and append -wrapped, we assume here that we can keep
++    // `/^(.*)\/\.([^/]*)-wrapped/` until the (equivalent) regex does not match.
++    // This should canonicalize the wrapper name to the expected name to look for in the desktop file.
++
++    // Use a copy of the const string
++    QString executablePath(in_executablePath);
++
++    // While the parts needed are present, "unwrap" one layer of wrapper names.
++    while (executablePath.endsWith("-wrapped") && executablePath[executablePath.lastIndexOf("/")+1] == QChar('.')) {
++        // Approximately equivalent to s/-wrapped$//
++        executablePath.remove(executablePath.length() - 8, 8);
++        // Approximately equivalent to s;/\.;/;
++        executablePath.remove(executablePath.lastIndexOf("/")+1, 1);
++    }
++    // !! End NixOS fix
++
+     // needed to be able to use the logging category in a header static function
+     static QLoggingCategory KWIN_UTILS ("KWIN_UTILS", QtWarningMsg);
+     const auto servicesFound = KApplicationTrader::query([&executablePath] (const KService::Ptr &service) {
+-- 
+2.28.0
+
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch
index 4861df46ca63..06b3653acee4 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0001-follow-symlinks.patch
@@ -1,17 +1,17 @@
-From 449896c45b23f50c168d8d2789832024c906ec36 Mon Sep 17 00:00:00 2001
+From af569c9ed8079169b524b31461e2789baa09ef7a Mon Sep 17 00:00:00 2001
 From: Thomas Tuegel <ttuegel@mailbox.org>
 Date: Mon, 27 Jan 2020 05:31:13 -0600
-Subject: [PATCH 1/2] follow symlinks
+Subject: [PATCH 1/3] follow symlinks
 
 ---
  plugins/kdecorations/aurorae/src/aurorae.cpp | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/plugins/kdecorations/aurorae/src/aurorae.cpp b/plugins/kdecorations/aurorae/src/aurorae.cpp
-index fd723a8..fb95633 100644
+index 5242cb7..2e4ddae 100644
 --- a/plugins/kdecorations/aurorae/src/aurorae.cpp
 +++ b/plugins/kdecorations/aurorae/src/aurorae.cpp
-@@ -211,7 +211,7 @@ void Helper::init()
+@@ -201,7 +201,7 @@ void Helper::init()
      // so let's try to locate our plugin:
      QString pluginPath;
      for (const QString &path : m_engine->importPathList()) {
@@ -21,5 +21,5 @@ index fd723a8..fb95633 100644
              it.next();
              QFileInfo fileInfo = it.fileInfo();
 -- 
-2.23.1
+2.29.2
 
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch
index 0505810abe60..312daa093848 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0002-xwayland.patch
@@ -1,17 +1,17 @@
-From d584b075d71c4486710c0bbed6d44038f2ff5075 Mon Sep 17 00:00:00 2001
+From 5c90dd84f541bd4789525f12f12ad24411b99018 Mon Sep 17 00:00:00 2001
 From: Thomas Tuegel <ttuegel@mailbox.org>
 Date: Mon, 27 Jan 2020 05:31:23 -0600
-Subject: [PATCH 2/2] xwayland
+Subject: [PATCH 2/3] xwayland
 
 ---
  xwl/xwayland.cpp | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/xwl/xwayland.cpp b/xwl/xwayland.cpp
-index 5f17d39..b4b69ba 100644
+index 57efdde..a211a58 100644
 --- a/xwl/xwayland.cpp
 +++ b/xwl/xwayland.cpp
-@@ -145,7 +145,7 @@ void Xwayland::init()
+@@ -124,7 +124,7 @@ void Xwayland::start()
  
      m_xwaylandProcess = new Process(this);
      m_xwaylandProcess->setProcessChannelMode(QProcess::ForwardedErrorChannel);
@@ -21,5 +21,5 @@ index 5f17d39..b4b69ba 100644
      env.insert("WAYLAND_SOCKET", QByteArray::number(wlfd));
      env.insert("EGL_PLATFORM", QByteArrayLiteral("DRM"));
 -- 
-2.23.1
+2.29.2
 
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
new file mode 100644
index 000000000000..eaffaf591875
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
@@ -0,0 +1,26 @@
+From 8d49f5ef8692c352a62f4f8b1bc68e6e210bbee6 Mon Sep 17 00:00:00 2001
+From: Yaroslav  Bolyukin <iam@lach.pw>
+Date: Wed, 23 Dec 2020 18:02:14 +0300
+Subject: [PATCH 3/3] plugins/qpa: allow using nixos wrapper
+
+Signed-off-by: Yaroslav  Bolyukin <iam@lach.pw>
+---
+ plugins/qpa/main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/qpa/main.cpp b/plugins/qpa/main.cpp
+index efd236b..a69c046 100644
+--- a/plugins/qpa/main.cpp
++++ b/plugins/qpa/main.cpp
+@@ -23,7 +23,7 @@ public:
+ QPlatformIntegration *KWinIntegrationPlugin::create(const QString &system, const QStringList &paramList)
+ {
+     Q_UNUSED(paramList)
+-    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
++    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !QCoreApplication::applicationFilePath().endsWith(QLatin1String(".kwin_wayland-wrapped")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
+         // Not KWin
+         return nullptr;
+     }
+-- 
+2.29.2
+
diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix
index f0b07fba736e..2008529a38bc 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix
@@ -12,7 +12,7 @@
   kcoreaddons, kcrash, kdeclarative, kdecoration, kglobalaccel, ki18n,
   kiconthemes, kidletime, kinit, kio, knewstuff, knotifications, kpackage,
   kscreenlocker, kservice, kwayland, kwayland-server, kwidgetsaddons, kwindowsystem, kxmlgui,
-  plasma-framework, libcap, libdrm, mesa
+  plasma-framework, libcap, libdrm, mesa, pipewire
 }:
 
 # TODO (ttuegel): investigate qmlplugindump failure
@@ -31,12 +31,14 @@ mkDerivation {
     kcoreaddons kcrash kdeclarative kdecoration kglobalaccel ki18n kiconthemes
     kidletime kinit kio knewstuff knotifications kpackage kscreenlocker kservice
     kwayland kwayland-server kwidgetsaddons kwindowsystem kxmlgui plasma-framework
-    libcap libdrm mesa
+    libcap libdrm mesa pipewire
   ];
   outputs = [ "dev" "out" ];
   patches = [
     ./0001-follow-symlinks.patch
     ./0002-xwayland.patch
+    ./0003-plugins-qpa-allow-using-nixos-wrapper.patch
+    ./0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
   ];
   CXXFLAGS = [
     ''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"''
diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
index 48be0d037df5..3d19f2d89fa1 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch
@@ -2,7 +2,7 @@ Index: libkscreen-5.9.4/src/backendmanager.cpp
 ===================================================================
 --- libkscreen-5.9.4.orig/src/backendmanager.cpp
 +++ libkscreen-5.9.4/src/backendmanager.cpp
-@@ -178,17 +178,11 @@ QFileInfo BackendManager::preferredBacke
+@@ -172,14 +172,11 @@ QFileInfo BackendManager::preferredBackend(const QString &backend)
  QFileInfoList BackendManager::listBackends()
  {
      // Compile a list of installed backends first
@@ -10,10 +10,7 @@ Index: libkscreen-5.9.4/src/backendmanager.cpp
 -    const QStringList paths = QCoreApplication::libraryPaths();
 -    QFileInfoList finfos;
 -    for (const QString &path : paths) {
--        const QDir dir(path + QLatin1String("/kf5/kscreen/"),
--                       backendFilter,
--                       QDir::SortFlags(QDir::QDir::Name),
--                       QDir::NoDotAndDotDot | QDir::Files);
+-        const QDir dir(path + QLatin1String("/kf5/kscreen/"), backendFilter, QDir::SortFlags(QDir::QDir::Name), QDir::NoDotAndDotDot | QDir::Files);
 -        finfos.append(dir.entryInfoList());
 -    }
 -    return finfos;
@@ -24,4 +21,4 @@ Index: libkscreen-5.9.4/src/backendmanager.cpp
 +    return dir.entryInfoList();
  }
  
- KScreen::AbstractBackend *BackendManager::loadBackendPlugin(QPluginLoader *loader, const QString &name,
+ KScreen::AbstractBackend *BackendManager::loadBackendPlugin(QPluginLoader *loader, const QString &name, const QVariantMap &arguments)
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix
index f6855cb34da1..e9ad3c28c101 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix
@@ -3,7 +3,7 @@
   extra-cmake-modules,
   qtbase,
   kfilemetadata, kio, ki18n, kconfig , kdbusaddons, knotifications, kpurpose,
-  krunner, kwindowsystem, kactivities,
+  krunner, kwindowsystem, kactivities, plasma-workspace
 }:
 
 mkDerivation {
@@ -13,6 +13,6 @@ mkDerivation {
   ];
   buildInputs = [
     qtbase kfilemetadata kio ki18n kconfig kdbusaddons knotifications kpurpose
-    krunner kwindowsystem kactivities
+    krunner kwindowsystem kactivities plasma-workspace
   ];
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch
index 6c04081ae29a..c85d66ad0031 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch
@@ -3,14 +3,14 @@ Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
 --- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp
 +++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
 @@ -48,10 +48,6 @@
- #include <sys/stat.h>
+ #include <sys/types.h>
  #endif
- 
+
 -// We cannot rely on the $PATH environment variable, because D-Bus activation
 -// clears it. So we have to use a reasonable default.
 -static const QString exePath = QStringLiteral("/usr/sbin:/usr/bin:/sbin:/bin");
 -
- int ClockHelper::ntp( const QStringList& ntpServers, bool ntpEnabled )
+ int ClockHelper::ntp(const QStringList &ntpServers, bool ntpEnabled)
  {
      int ret = 0;
 @@ -227,7 +223,7 @@ int ClockHelper::tzreset()
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-systemmonitor.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-systemmonitor.nix
new file mode 100644
index 000000000000..6b875745d270
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-systemmonitor.nix
@@ -0,0 +1,32 @@
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, kdoctools
+, qtquickcontrols2
+, kconfig
+, kcoreaddons
+, ki18n
+, kiconthemes
+, kitemmodels
+, kitemviews
+, knewstuff
+, libksysguard
+, qtbase
+}:
+
+mkDerivation {
+  name = "plasma-systemmonitor";
+  meta.broken = lib.versionOlder qtbase.version "5.15.0";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    qtquickcontrols2
+    kconfig
+    kcoreaddons
+    ki18n
+    kitemmodels
+    kitemviews
+    knewstuff
+    kiconthemes
+    libksysguard
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch
index ea8afedbe5ba..f9347de7d566 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch
@@ -1,4 +1,4 @@
-From d653bc84c8aed33072237ed858194a8a73b6a2e7 Mon Sep 17 00:00:00 2001
+From 65ed69a38a9ffee21f0eb36de1f7a3f152111cad Mon Sep 17 00:00:00 2001
 From: Tom Hall <tahall256@protonmail.ch>
 Date: Mon, 7 Sep 2020 18:09:52 +0100
 Subject: [PATCH] startkde
@@ -7,27 +7,27 @@ Subject: [PATCH] startkde
  startkde/plasma-session/startup.cpp     |  2 +-
  startkde/startplasma-waylandsession.cpp |  2 +-
  startkde/startplasma-x11.cpp            |  2 +-
- startkde/startplasma.cpp                | 22 +++++++++-------------
- 4 files changed, 12 insertions(+), 16 deletions(-)
+ startkde/startplasma.cpp                | 16 ++++++++--------
+ 4 files changed, 11 insertions(+), 11 deletions(-)
 
 diff --git a/startkde/plasma-session/startup.cpp b/startkde/plasma-session/startup.cpp
-index 89cc144ba..8ca9e81d2 100644
+index c3e77d4..88cb0e9 100644
 --- a/startkde/plasma-session/startup.cpp
 +++ b/startkde/plasma-session/startup.cpp
-@@ -211,7 +211,7 @@ Startup::Startup(QObject *parent):
+@@ -223,7 +223,7 @@ Startup::Startup(QObject *parent)
      upAndRunning(QStringLiteral("ksmserver"));
      const AutoStart autostart;
  
 -    QProcess::execute(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit_wrapper"), QStringList());
 +    QProcess::execute(QStringLiteral(NIXPKGS_START_KDEINIT_WRAPPER), QStringList());
  
-     KJob* phase1;
+     KJob *phase1;
      QProcessEnvironment kdedProcessEnv;
 diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
-index f59654d18..5e3a93db0 100644
+index 4fbfe18..6ba916c 100644
 --- a/startkde/startplasma-waylandsession.cpp
 +++ b/startkde/startplasma-waylandsession.cpp
-@@ -61,7 +61,7 @@ int main(int argc, char** argv)
+@@ -65,7 +65,7 @@ int main(int argc, char **argv)
      waitForKonqi();
      out << "startplasma-waylandsession: Shutting down...\n";
  
@@ -37,10 +37,10 @@ index f59654d18..5e3a93db0 100644
      cleanupX11();
      out << "startplasma-waylandsession: Done.\n";
 diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp
-index ae1c4d101..0df24b5be 100644
+index 4ddf9f8..e0e59cd 100644
 --- a/startkde/startplasma-x11.cpp
 +++ b/startkde/startplasma-x11.cpp
-@@ -110,7 +110,7 @@ int main(int argc, char** argv)
+@@ -110,7 +110,7 @@ int main(int argc, char **argv)
  
      out << "startkde: Shutting down...\n";
  
@@ -50,10 +50,10 @@ index ae1c4d101..0df24b5be 100644
      cleanupPlasmaEnvironment();
      cleanupX11();
 diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
-index a055d5635..62afb1513 100644
+index 9809197..1250e3e 100644
 --- a/startkde/startplasma.cpp
 +++ b/startkde/startplasma.cpp
-@@ -41,7 +41,7 @@ QTextStream out(stderr);
+@@ -46,7 +46,7 @@ QTextStream out(stderr);
  void messageBox(const QString &text)
  {
      out << text;
@@ -61,46 +61,56 @@ index a055d5635..62afb1513 100644
 +    runSync(QStringLiteral(NIXPKGS_XMESSAGE), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
  }
  
- QStringList allServices(const QLatin1String& prefix)
-@@ -262,15 +262,15 @@ void setupX11()
- //     If the user has overwritten fonts, the cursor font may be different now
- //     so don't move this up.
+ QStringList allServices(const QLatin1String &prefix)
+@@ -267,8 +267,8 @@ void setupX11()
+     //     If the user has overwritten fonts, the cursor font may be different now
+     //     so don't move this up.
  
 -    runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
--    runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("8t"), QStringLiteral("-set"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("true")});
--    runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("32c"), QStringLiteral("-set"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("5")});
+-    runSync(QStringLiteral("xprop"),
 +    runSync(QStringLiteral(NIXPKGS_XSETROOT), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
-+    runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("8t"), QStringLiteral("-set"), QStringLiteral("KDE_FULL_SESSION"), QStringLiteral("true")});
-+    runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-f"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("32c"), QStringLiteral("-set"), QStringLiteral("KDE_SESSION_VERSION"), QStringLiteral("5")});
- }
++    runSync(QStringLiteral(NIXPKGS_XPROP),
+             {QStringLiteral("-root"),
+              QStringLiteral("-f"),
+              QStringLiteral("KDE_FULL_SESSION"),
+@@ -276,7 +276,7 @@ void setupX11()
+              QStringLiteral("-set"),
+              QStringLiteral("KDE_FULL_SESSION"),
+              QStringLiteral("true")});
+-    runSync(QStringLiteral("xprop"),
++    runSync(QStringLiteral(NIXPKGS_XPROP),
+             {QStringLiteral("-root"),
+              QStringLiteral("-f"),
+              QStringLiteral("KDE_SESSION_VERSION"),
+@@ -288,8 +288,8 @@ void setupX11()
  
  void cleanupX11()
  {
--    runSync(QStringLiteral("xprop"), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION") });
--    runSync(QStringLiteral("xprop"), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION") });
-+    runSync(QStringLiteral(NIXPKGS_XPROP), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION") });
-+    runSync(QStringLiteral(NIXPKGS_XPROP), { QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION") });
+-    runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")});
+-    runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")});
++    runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")});
++    runSync(QStringLiteral(NIXPKGS_XPROP), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")});
  }
  
  // TODO: Check if Necessary
-@@ -306,7 +302,7 @@ void setupFontDpi()
-     //TODO port to c++?
+@@ -321,7 +321,7 @@ void setupFontDpi()
+     // TODO port to c++?
      const QByteArray input = "Xft.dpi: " + QByteArray::number(fontsCfg.readEntry("forceFontDPI", 0));
      QProcess p;
--    p.start(QStringLiteral("xrdb"), { QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp") });
-+    p.start(QStringLiteral(NIXPKGS_XRDB), { QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp") });
+-    p.start(QStringLiteral("xrdb"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")});
++    p.start(QStringLiteral(NIXPKGS_XRDB), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")});
      p.setProcessChannelMode(QProcess::ForwardedChannels);
      p.write(input);
      p.closeWriteChannel();
-@@ -328,7 +324,7 @@ QProcess* setupKSplash()
+@@ -343,7 +343,7 @@ QProcess *setupKSplash()
          KConfigGroup ksplashCfg = cfg.group("KSplash");
          if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) {
              p = new QProcess;
--            p->start(QStringLiteral("ksplashqml"), { ksplashCfg.readEntry("Theme", QStringLiteral("Breeze")) });
-+            p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), { ksplashCfg.readEntry("Theme", QStringLiteral("Breeze")) });
+-            p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
++            p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
          }
      }
      return p;
 -- 
-2.28.0
+2.30.0
 
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch
index 366707d27034..633551f6e3c2 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/0002-absolute-wallpaper-install-dir.patch
@@ -1,23 +1,23 @@
-From f43f15870f14b8fa17ba0765c0d7e2b225fafc3f Mon Sep 17 00:00:00 2001
+From 914d2ec5e669ecf8771cc1308028990f733fb8cc Mon Sep 17 00:00:00 2001
 From: Thomas Tuegel <ttuegel@mailbox.org>
 Date: Wed, 5 Feb 2020 05:03:11 -0600
-Subject: [PATCH 2/2] absolute-wallpaper-install-dir
+Subject: [PATCH] absolute-wallpaper-install-dir
 
 ---
  sddm-theme/theme.conf.cmake | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/sddm-theme/theme.conf.cmake b/sddm-theme/theme.conf.cmake
-index 8494a5c8a..f723c1e1b 100644
+index a560da3..f723c1e 100644
 --- a/sddm-theme/theme.conf.cmake
 +++ b/sddm-theme/theme.conf.cmake
 @@ -4,5 +4,5 @@ logo=${KDE_INSTALL_FULL_DATADIR}/sddm/themes/breeze/default-logo.svg
  type=image
  color=#1d99f3
  fontSize=10
--background=${KDE_INSTALL_FULL_WALLPAPERDIR}/Next/contents/images/5120x2880.jpg
-+background=${NIXPKGS_BREEZE_WALLPAPERS}/Next/contents/images/5120x2880.jpg
+-background=${KDE_INSTALL_FULL_WALLPAPERDIR}/Next/contents/images/5120x2880.png
++background=${NIXPKGS_BREEZE_WALLPAPERS}/Next/contents/images/5120x2880.png
  needsFullUserModel=false
 -- 
-2.25.1
+2.30.0
 
diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix
index e1becaab95b6..b65bc7df8ed8 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix
@@ -16,6 +16,8 @@
 
   qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qttools,
   qtwayland, qtx11extras, qqc2-desktop-style,
+
+  pipewire, libdrm
 }:
 
 let inherit (lib) getBin getLib; in
@@ -36,6 +38,8 @@ mkDerivation {
 
     qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtwayland
     qtx11extras qqc2-desktop-style
+
+    pipewire libdrm
   ];
   propagatedUserEnvPkgs = [ qtgraphicaleffects ];
   outputs = [ "out" "dev" ];
@@ -49,9 +53,10 @@ mkDerivation {
     ./0002-absolute-wallpaper-install-dir.patch
   ];
 
+  # QT_INSTALL_BINS refers to qtbase, and qdbus is in qttools
   postPatch = ''
-    substituteInPlace wallpapers/image/wallpaper.knsrc.cmake \
-      --replace '@QtBinariesDir@/qdbus' ${getBin qttools}/bin/qdbus
+    substituteInPlace CMakeLists.txt \
+      --replace 'query_qmake(QtBinariesDir QT_INSTALL_BINS)' 'set(QtBinariesDir "${lib.getBin qttools}/bin")'
   '';
 
   NIX_CFLAGS_COMPILE = [
diff --git a/nixpkgs/pkgs/desktops/plasma-5/qqc2-breeze-style.nix b/nixpkgs/pkgs/desktops/plasma-5/qqc2-breeze-style.nix
new file mode 100644
index 000000000000..420529eb1749
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/plasma-5/qqc2-breeze-style.nix
@@ -0,0 +1,26 @@
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, kconfig
+, kconfigwidgets
+, kdoctools
+, kguiaddons
+, kiconthemes
+, kirigami2
+, qtquickcontrols2
+, qtx11extras
+}:
+
+mkDerivation {
+  name = "qqc2-breeze-style";
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kconfig
+    kconfigwidgets
+    kguiaddons
+    kiconthemes
+    kirigami2
+    qtquickcontrols2
+    qtx11extras
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix
index a9f51e50a268..9e3776e8e291 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix
@@ -1,8 +1,19 @@
-{
-  mkDerivation, lib, extra-cmake-modules, shared-mime-info,
-  libpthreadstubs, libXcursor, libXdmcp,
-  qtbase, qtquickcontrols2, qtx11extras,
-  karchive, ki18n, kio, knewstuff
+{ mkDerivation
+, lib
+, extra-cmake-modules
+, shared-mime-info
+, libpthreadstubs
+, libXcursor
+, libXdmcp
+, qtbase
+, qtquickcontrols2
+, qtx11extras
+, karchive
+, kcmutils
+, kdeclarative
+, ki18n
+, kio
+, knewstuff
 }:
 
 mkDerivation {
@@ -10,8 +21,16 @@ mkDerivation {
   meta.broken = lib.versionOlder qtbase.version "5.15.0";
   nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
   buildInputs = [
-    libpthreadstubs libXcursor libXdmcp
-    qtquickcontrols2 qtx11extras
-    karchive ki18n kio knewstuff
+    libpthreadstubs
+    libXcursor
+    libXdmcp
+    qtquickcontrols2
+    qtx11extras
+    karchive
+    kcmutils
+    kdeclarative
+    ki18n
+    kio
+    knewstuff
   ];
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/srcs.nix b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix
index cfd7e5733993..bf93e0564d9f 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/srcs.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix
@@ -1,398 +1,422 @@
 # DO NOT EDIT! This file is generated automatically.
-# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5/
+# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5
 { fetchurl, mirror }:
 
 {
   bluedevil = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/bluedevil-5.20.5.tar.xz";
-      sha256 = "0bpbvfd6m3ddax484p33a1chvf9mf2mi61cli0vacsan7j84xpmk";
-      name = "bluedevil-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/bluedevil-5.21.3.tar.xz";
+      sha256 = "1xqm4bn97asilc4yw5rvmmhk7c7wvmbalalr6gz8gw4gv0pg67qv";
+      name = "bluedevil-5.21.3.tar.xz";
     };
   };
   breeze = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/breeze-5.20.5.tar.xz";
-      sha256 = "01zm5hcal6flihd89wn70zi363cmcglfvnc2q6x97lq89silaf6l";
-      name = "breeze-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/breeze-5.21.3.tar.xz";
+      sha256 = "0frm3f8q1n0pdzjk7zwmvlrl19fb9265ihnnfhak6ckaq50x72l3";
+      name = "breeze-5.21.3.tar.xz";
     };
   };
   breeze-grub = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/breeze-grub-5.20.5.tar.xz";
-      sha256 = "17g2jac96sj6pfacmyi6vvn74lfi9yhmigprcm2pwqg9z093n1m2";
-      name = "breeze-grub-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/breeze-grub-5.21.3.tar.xz";
+      sha256 = "1j0pk4pv5pxwhwah1gd5znnsw3j15x2sc74pp6zinz9a1ywjklnz";
+      name = "breeze-grub-5.21.3.tar.xz";
     };
   };
   breeze-gtk = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/breeze-gtk-5.20.5.tar.xz";
-      sha256 = "1jknfswjcd4abbf249i3gclip4m4v8bp9b5x050zafyjkdcwxd5l";
-      name = "breeze-gtk-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/breeze-gtk-5.21.3.tar.xz";
+      sha256 = "1x5by915lfhbkhgrhy3lkwg64skwdlqaxzbq92x0m9v9a9agwidc";
+      name = "breeze-gtk-5.21.3.tar.xz";
     };
   };
   breeze-plymouth = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/breeze-plymouth-5.20.5.tar.xz";
-      sha256 = "0yiqqwms0qrnbxqb8nwmgssrp1f92jwjg8rfzapaq5jxdycl1d9m";
-      name = "breeze-plymouth-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/breeze-plymouth-5.21.3.tar.xz";
+      sha256 = "01ida3pfj6g1igndjfjpv16199zysgxlxlnc7vsx7kr8aval8pmx";
+      name = "breeze-plymouth-5.21.3.tar.xz";
     };
   };
   discover = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/discover-5.20.5.tar.xz";
-      sha256 = "08dmc8rvbfi1zyk9if588h6948xqcqm9jxdp26q84mzq517x9fn5";
-      name = "discover-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/discover-5.21.3.tar.xz";
+      sha256 = "170kxhrwj4mvj5qg7cyz3sxdfyp7rr4pgsi3v7kahs19a9w3isnx";
+      name = "discover-5.21.3.tar.xz";
     };
   };
   drkonqi = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/drkonqi-5.20.5.tar.xz";
-      sha256 = "1rl212qmmikbnkyryibpp6gxh4jpklynhgr45ym5gcn3903i3vh9";
-      name = "drkonqi-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/drkonqi-5.21.3.tar.xz";
+      sha256 = "1hq37vi0vndhy66labspm75blicx1g4q594wxfxzl076mav5jds4";
+      name = "drkonqi-5.21.3.tar.xz";
     };
   };
   kactivitymanagerd = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kactivitymanagerd-5.20.5.tar.xz";
-      sha256 = "1jzss3waq8jjzbs3rrxxk9dmr974pj5ryw4rdj8bpkc451wc4068";
-      name = "kactivitymanagerd-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kactivitymanagerd-5.21.3.tar.xz";
+      sha256 = "1x5p6rbjf9kz07r5mrkiglvbigvk5bfx8qpb8l2vagsbvlg298c3";
+      name = "kactivitymanagerd-5.21.3.tar.xz";
     };
   };
   kde-cli-tools = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kde-cli-tools-5.20.5.tar.xz";
-      sha256 = "0z32fwc9l8c3xfy1l7v0i26ay8icnxqwrnxz6h8qgjlv6p8b4h04";
-      name = "kde-cli-tools-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kde-cli-tools-5.21.3.tar.xz";
+      sha256 = "0hkmr3zxg4np1ppsgj77ijgkwgvl7d0zxwl46xjc2px877lx8bpp";
+      name = "kde-cli-tools-5.21.3.tar.xz";
     };
   };
   kdecoration = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kdecoration-5.20.5.tar.xz";
-      sha256 = "1kc166f2gqgspsnvxyk8k3k3mmd1ndhgr1dyjzknqdys32dkm5vf";
-      name = "kdecoration-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kdecoration-5.21.3.tar.xz";
+      sha256 = "06a3gsf1lyjxccjzn0ad254wsf7x2bln2i6kyk5j4gwqss6lplf5";
+      name = "kdecoration-5.21.3.tar.xz";
     };
   };
   kde-gtk-config = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kde-gtk-config-5.20.5.tar.xz";
-      sha256 = "1f3fvr201wr7jdh1hg8ff7yis7hnv7653hvx0531hx1x2hfdva1r";
-      name = "kde-gtk-config-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kde-gtk-config-5.21.3.tar.xz";
+      sha256 = "17fyan2jah059kj1i0sy7h901a4d2k7cc87sd84mskyys7g8vs1h";
+      name = "kde-gtk-config-5.21.3.tar.xz";
     };
   };
   kdeplasma-addons = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kdeplasma-addons-5.20.5.tar.xz";
-      sha256 = "1sypmn72fp6l57px3pq9ivzj2r2l3k9vy5006idnfgblzahvpi2n";
-      name = "kdeplasma-addons-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kdeplasma-addons-5.21.3.tar.xz";
+      sha256 = "1181ax96csn4170p5blvhr679d7l865nby5a66swscyl3a5ys8b1";
+      name = "kdeplasma-addons-5.21.3.tar.xz";
     };
   };
   kgamma5 = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kgamma5-5.20.5.tar.xz";
-      sha256 = "1gy0pgsk3xi129y8h78lcif60ajs3y5fxzj1pl7mn6g72f7mwxld";
-      name = "kgamma5-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kgamma5-5.21.3.tar.xz";
+      sha256 = "0h8rwwd6lyfzmxsr5sfvllh1j8gk1pbq1w2fva8q534qrkqhqb49";
+      name = "kgamma5-5.21.3.tar.xz";
     };
   };
   khotkeys = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/khotkeys-5.20.5.tar.xz";
-      sha256 = "1iw8rxdl9q45jqsnmqdm1lkymzkyxkrfgch51kxfj34vd4mi66h8";
-      name = "khotkeys-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/khotkeys-5.21.3.tar.xz";
+      sha256 = "1n3ahrb5mzrxap572ydal1sy5q71af97iy4i2fwbljdb6zb1l1bl";
+      name = "khotkeys-5.21.3.tar.xz";
     };
   };
   kinfocenter = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kinfocenter-5.20.5.tar.xz";
-      sha256 = "0k3vvfwrfwmmicw8p81fpqljvmj3n8342avavc49ajmnygls7ssm";
-      name = "kinfocenter-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kinfocenter-5.21.3.tar.xz";
+      sha256 = "1hj4mnx2mxb1ya7la05frx5c39cp3q7c5f78lnp6p8bkv3ylik72";
+      name = "kinfocenter-5.21.3.tar.xz";
     };
   };
   kmenuedit = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kmenuedit-5.20.5.tar.xz";
-      sha256 = "0apmhglw74ppps52fhspjdsiy19b219lf68aj8jlpiiqcn80mggf";
-      name = "kmenuedit-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kmenuedit-5.21.3.tar.xz";
+      sha256 = "0fc3sal11amaj5ydws86hdmc45zhrxkv6lc5sfy200wvff3ynjjj";
+      name = "kmenuedit-5.21.3.tar.xz";
     };
   };
   kscreen = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kscreen-5.20.5.tar.xz";
-      sha256 = "1njjkrdgdd6g8avf7ik9fd7j9g4zdbjghli7svcfz2z8h6na626y";
-      name = "kscreen-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kscreen-5.21.3.tar.xz";
+      sha256 = "1f9gxdlj883ddmc1xgd1nmm8n6m5yd269kfx3m9bbp61cw4hrqlm";
+      name = "kscreen-5.21.3.tar.xz";
     };
   };
   kscreenlocker = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kscreenlocker-5.20.5.tar.xz";
-      sha256 = "07y0lhwh4pc5rsdfr5yqb645v37ya97vh3dmy2riw9908hiyybw0";
-      name = "kscreenlocker-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kscreenlocker-5.21.3.tar.xz";
+      sha256 = "1hjlpwwca9nrdwgsiy5ss5ainr1fy1wfvi4g599cvijb77qc84h0";
+      name = "kscreenlocker-5.21.3.tar.xz";
     };
   };
   ksshaskpass = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/ksshaskpass-5.20.5.tar.xz";
-      sha256 = "1xk55ampbrz56pl739m6r150qcsjq0nw2sxxkpqykgwjh275y4ry";
-      name = "ksshaskpass-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/ksshaskpass-5.21.3.tar.xz";
+      sha256 = "16c2kzdmw3viphaygdff29cvi06r53ag4a6hkxw15yrscw31n3ns";
+      name = "ksshaskpass-5.21.3.tar.xz";
     };
   };
   ksysguard = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/ksysguard-5.20.5.tar.xz";
-      sha256 = "0ddb3m6rygjisv31bc722vxzyb2q14940szfzijcv48z5ixj5x9j";
-      name = "ksysguard-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/ksysguard-5.21.3.tar.xz";
+      sha256 = "0ys1idjqb9n67czdhlds6mhhiizxq8qq4rmds9nq8cm961g5kqsf";
+      name = "ksysguard-5.21.3.tar.xz";
     };
   };
   kwallet-pam = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kwallet-pam-5.20.5.tar.xz";
-      sha256 = "1wn1zm8bfxxsjvx4rbds60v9ckizj55znpq477vnzrh2xfx13rjk";
-      name = "kwallet-pam-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kwallet-pam-5.21.3.tar.xz";
+      sha256 = "1dnni2k4ry11mfjnfc0i44zww3glhsbr70qnpkl9dsf5rj4dcwj3";
+      name = "kwallet-pam-5.21.3.tar.xz";
     };
   };
   kwayland-integration = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kwayland-integration-5.20.5.tar.xz";
-      sha256 = "0rqzq851apw1p4c7salk7rcygjdw7ra0x95xw57vh68w19kn9wrk";
-      name = "kwayland-integration-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kwayland-integration-5.21.3.tar.xz";
+      sha256 = "0kqw5dbsxmdm5fi34yq718ngkx5j23211jh4l9vl029qgbi42xhc";
+      name = "kwayland-integration-5.21.3.tar.xz";
     };
   };
   kwayland-server = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kwayland-server-5.20.5.tar.xz";
-      sha256 = "0ajxjj2cbrg6rpry3r48q3zhxxkr09498j5in0v1jwijp83n9wz0";
-      name = "kwayland-server-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kwayland-server-5.21.3.tar.xz";
+      sha256 = "0d3asblzz9c7cbjfdk33z26hn5n14rdrc3s9jm9awvcc1sd122a4";
+      name = "kwayland-server-5.21.3.tar.xz";
     };
   };
   kwin = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kwin-5.20.5.tar.xz";
-      sha256 = "0kiq46gdvfv2811125kw1ncnk1pmpnqkvrz7p3lry72sjd1ja57c";
-      name = "kwin-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kwin-5.21.3.tar.xz";
+      sha256 = "0ni0ipfm0hp90sq03m1a5lm6shxb2cf9j1a4kiqpaf7n62ch8f3w";
+      name = "kwin-5.21.3.tar.xz";
     };
   };
   kwrited = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/kwrited-5.20.5.tar.xz";
-      sha256 = "1h0vbb0bz4r26g4yf88jfzkbi8xbyf44c2y9nmlrmr5lws4bpcmz";
-      name = "kwrited-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/kwrited-5.21.3.tar.xz";
+      sha256 = "01nn94qmi8q38rdv694d9qs7zahsziclmkw49zy0wlffq4ivpk6x";
+      name = "kwrited-5.21.3.tar.xz";
     };
   };
   libkscreen = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/libkscreen-5.20.5.tar.xz";
-      sha256 = "0641kk7s4xy5y94rn6xzjnrp4sbl7yn9w9qzlw4925858pgrr9qv";
-      name = "libkscreen-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/libkscreen-5.21.3.tar.xz";
+      sha256 = "1j2d1xpn48ks0wk9vvnvj9r03bc0ggrqvblyhs30p31svfihjs3a";
+      name = "libkscreen-5.21.3.tar.xz";
     };
   };
   libksysguard = {
-    version = "5.20.5";
+    version = "5.21.3.1";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/libksysguard-5.20.5.tar.xz";
-      sha256 = "0v2x7sl5gg8a9i1cwx8prv03pcls4q3wfxxs5qs6g5ami1f679d8";
-      name = "libksysguard-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/libksysguard-5.21.3.1.tar.xz";
+      sha256 = "0nayjihapn71wrnzfb4wv9laafysl0x6sn98sbwhclapbdvxnw73";
+      name = "libksysguard-5.21.3.1.tar.xz";
     };
   };
   milou = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/milou-5.20.5.tar.xz";
-      sha256 = "1hmpdj2zi6nidm6058a6kjgzij8qy9xihv20hi2dhk0f8ys42k3h";
-      name = "milou-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/milou-5.21.3.tar.xz";
+      sha256 = "0qbk0y783n7f7pl0akx252vyblrrgmsg5yr7ncaijq4x4l90f1yf";
+      name = "milou-5.21.3.tar.xz";
     };
   };
   oxygen = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/oxygen-5.20.5.tar.xz";
-      sha256 = "166jk8ix0dnv92svymaxjwbc08k6q8nag9xr2dc033x5lr2l59qr";
-      name = "oxygen-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/oxygen-5.21.3.tar.xz";
+      sha256 = "16yj1qx4mbi62brkn8wkcr6sz5dkbl2pf49zc1hadnxfm9wd3z0a";
+      name = "oxygen-5.21.3.tar.xz";
     };
   };
   plasma-browser-integration = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-browser-integration-5.20.5.tar.xz";
-      sha256 = "03zzmzdlc5a3nrx6izb66s7l3cmangkfjda2mf17g2097rrnb9n2";
-      name = "plasma-browser-integration-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-browser-integration-5.21.3.tar.xz";
+      sha256 = "1hz996lv3vvp1zldzpkb9dmvnn94v69j2vq9sfs446c25ggf9d6y";
+      name = "plasma-browser-integration-5.21.3.tar.xz";
     };
   };
   plasma-desktop = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-desktop-5.20.5.tar.xz";
-      sha256 = "1fc74zgxkp65pj8p58prd5rq7nqspjfcgr70say2imagyj9nwrdx";
-      name = "plasma-desktop-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-desktop-5.21.3.tar.xz";
+      sha256 = "0bryk523qfzb5max1h460d67ir6xbrsws9bq72bdfbv1wkv64kyy";
+      name = "plasma-desktop-5.21.3.tar.xz";
     };
   };
   plasma-disks = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-disks-5.20.5.tar.xz";
-      sha256 = "0bcwf3g2vy2gf0igg0dyl9x5qc0xx0d5z05n4mi7asg5acl596r1";
-      name = "plasma-disks-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-disks-5.21.3.tar.xz";
+      sha256 = "18a7dppfhb2wpb7sfhnayq96bxjlzygdz7sppcjikxil8klhv1aq";
+      name = "plasma-disks-5.21.3.tar.xz";
+    };
+  };
+  plasma-firewall = {
+    version = "5.21.3";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.21.3/plasma-firewall-5.21.3.tar.xz";
+      sha256 = "0bzmcakzwiimc90bbpih1z5isrcfhdfwlslp4q3v3npppnivv9bw";
+      name = "plasma-firewall-5.21.3.tar.xz";
     };
   };
   plasma-integration = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-integration-5.20.5.tar.xz";
-      sha256 = "1wydjnmryf2kvfgg6m9kafa5waimccqr531qrq3nisdjc5p1w9x8";
-      name = "plasma-integration-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-integration-5.21.3.tar.xz";
+      sha256 = "09dlbfildd8wl0nbss84yibljyl6cadx95q8q4n0c5wymyc4zqy1";
+      name = "plasma-integration-5.21.3.tar.xz";
     };
   };
   plasma-nano = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-nano-5.20.5.tar.xz";
-      sha256 = "0h276i1dxbiziw258wf6az9mnysp3xxfh7nlxv0g2w1vfnhm23v5";
-      name = "plasma-nano-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-nano-5.21.3.tar.xz";
+      sha256 = "1yqn29769nnfhiyqbpv15c0zxvkfzq4yvk9x9qlchbcwjc1gr23j";
+      name = "plasma-nano-5.21.3.tar.xz";
     };
   };
   plasma-nm = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-nm-5.20.5.tar.xz";
-      sha256 = "060f32adr0wlv2bs9swjyxcil7n74cnk48j8b8984wwhk6zz53a6";
-      name = "plasma-nm-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-nm-5.21.3.tar.xz";
+      sha256 = "0d7v757kzd0pcvlz201m0njcz9y8j0bqkwbzdz3gik9s7x6rl73p";
+      name = "plasma-nm-5.21.3.tar.xz";
     };
   };
   plasma-pa = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-pa-5.20.5.tar.xz";
-      sha256 = "0xvkbrz3290xxfvv1rqqv7w57j3gdng8m2jyjj1j6dmaackl512d";
-      name = "plasma-pa-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-pa-5.21.3.tar.xz";
+      sha256 = "16z9xzn5swrzz86yd8lykjphs92ghdsahfxjv0v9nj3ca24kfibp";
+      name = "plasma-pa-5.21.3.tar.xz";
     };
   };
   plasma-phone-components = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-phone-components-5.20.5.tar.xz";
-      sha256 = "14h790b2jfs2j2lvv3dwqm20v3nlvah2909g4mhm9kwfdsmgnjms";
-      name = "plasma-phone-components-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-phone-components-5.21.3.tar.xz";
+      sha256 = "1dhv0gdyk47dl8il6zwjdz84jmz2d4ppfyifzc2rzf0ys934scn0";
+      name = "plasma-phone-components-5.21.3.tar.xz";
     };
   };
   plasma-sdk = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-sdk-5.20.5.tar.xz";
-      sha256 = "13cqn700nadqgmn54sy8qbf7waqkgvhzndh73jvmhb0z699z4s6y";
-      name = "plasma-sdk-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-sdk-5.21.3.tar.xz";
+      sha256 = "0asbb7j5b8c4kixw1yf7mdfyd8gjrf57gdb2wfs1npasak0dw84w";
+      name = "plasma-sdk-5.21.3.tar.xz";
+    };
+  };
+  plasma-systemmonitor = {
+    version = "5.21.3";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.21.3/plasma-systemmonitor-5.21.3.tar.xz";
+      sha256 = "1w1xzqmpzk016f8rkyx6cvm6lng3h177c441hird13n6v147l7ll";
+      name = "plasma-systemmonitor-5.21.3.tar.xz";
     };
   };
   plasma-tests = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-tests-5.20.5.tar.xz";
-      sha256 = "0h6wccqp46s3i8dqc6rrh68l8fk662yvz0fdscqv295g1zwhb45j";
-      name = "plasma-tests-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-tests-5.21.3.tar.xz";
+      sha256 = "000iwijpxxicixy5zbbgfs96h988x1d4wvjw90vagjw4hj361dk8";
+      name = "plasma-tests-5.21.3.tar.xz";
     };
   };
   plasma-thunderbolt = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-thunderbolt-5.20.5.tar.xz";
-      sha256 = "06l5zpgn5zmid0rkp8lx228nw72nd991s2cg29yg2h51zyvff4v0";
-      name = "plasma-thunderbolt-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-thunderbolt-5.21.3.tar.xz";
+      sha256 = "1j0nb9p5wbgksxy19bxsz9ni9ys40r4arvs8rl8pvvv9hndqhndm";
+      name = "plasma-thunderbolt-5.21.3.tar.xz";
     };
   };
   plasma-vault = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-vault-5.20.5.tar.xz";
-      sha256 = "0b9jnzx5040sgzqsnzjz61sxnlsmbqfsk8mvqclgqphgiqsbcnm2";
-      name = "plasma-vault-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-vault-5.21.3.tar.xz";
+      sha256 = "1q59q6y8gx4qbp1a5nbsg8zmrdljacfqd3i5n214nlj6al13sg9j";
+      name = "plasma-vault-5.21.3.tar.xz";
     };
   };
   plasma-workspace = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-workspace-5.20.5.tar.xz";
-      sha256 = "0966nqyqs7hb7fp3a3jxhm64iqwbafd29sbagigx9d7gj8qg8zim";
-      name = "plasma-workspace-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-workspace-5.21.3.tar.xz";
+      sha256 = "1djanxc7mslw9hnbzlngf6pflc6byjzqb14ibilg3fxsir2jwq40";
+      name = "plasma-workspace-5.21.3.tar.xz";
     };
   };
   plasma-workspace-wallpapers = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plasma-workspace-wallpapers-5.20.5.tar.xz";
-      sha256 = "03z7pcba8kkmb70dn7gsqldxgb8lky6qw040p5ik1j07516xm6z3";
-      name = "plasma-workspace-wallpapers-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plasma-workspace-wallpapers-5.21.3.tar.xz";
+      sha256 = "1qjkk3qfzz1id898kmx7xx6rr6p77y0jfwkjyf26abk51bdfk9lm";
+      name = "plasma-workspace-wallpapers-5.21.3.tar.xz";
     };
   };
   plymouth-kcm = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/plymouth-kcm-5.20.5.tar.xz";
-      sha256 = "0lwir088h3mjdxc6zzbd74g7alfnsrhf7m0p7ma6prncdj25pcyz";
-      name = "plymouth-kcm-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/plymouth-kcm-5.21.3.tar.xz";
+      sha256 = "0wmpvb06z0js50c9jpv61jlxbx9sf1f5lidzs5v4xs31shxc9sbg";
+      name = "plymouth-kcm-5.21.3.tar.xz";
     };
   };
   polkit-kde-agent = {
-    version = "1-5.20.5";
+    version = "1-5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/polkit-kde-agent-1-5.20.5.tar.xz";
-      sha256 = "1rkvnci93xvxga6cvw99aaivkn8897kyqdw7p9hmk09qvg2qb92v";
-      name = "polkit-kde-agent-1-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/polkit-kde-agent-1-5.21.3.tar.xz";
+      sha256 = "06qpkf01665mjr49wyc3f336g6g7l93k8l35q0yyih58i3v04s0v";
+      name = "polkit-kde-agent-1-5.21.3.tar.xz";
     };
   };
   powerdevil = {
-    version = "5.20.5";
+    version = "5.21.3";
+    src = fetchurl {
+      url = "${mirror}/stable/plasma/5.21.3/powerdevil-5.21.3.tar.xz";
+      sha256 = "0lk6bvc0mym3x3sd85bsvsxvm82vr40lcx355xjycxskf75c5jzz";
+      name = "powerdevil-5.21.3.tar.xz";
+    };
+  };
+  qqc2-breeze-style = {
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/powerdevil-5.20.5.tar.xz";
-      sha256 = "1w3figagjxmrbc7hs81bllfkpq6f9mn4mwj7zjzxjf7d5fkmryrj";
-      name = "powerdevil-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/qqc2-breeze-style-5.21.3.tar.xz";
+      sha256 = "1ydvirjrkjbwfc2faz74dd9zlmfz18fa3cig143gna9rfr5api54";
+      name = "qqc2-breeze-style-5.21.3.tar.xz";
     };
   };
   sddm-kcm = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/sddm-kcm-5.20.5.tar.xz";
-      sha256 = "1zw9y6knrx848f529m45iszr0xplr9lnck242ddmzj3x7qz0x1az";
-      name = "sddm-kcm-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/sddm-kcm-5.21.3.tar.xz";
+      sha256 = "1flqgfpiz66s7dsw1k95zdrbj7ka09r0i2pcdygnrwlls5yvqljz";
+      name = "sddm-kcm-5.21.3.tar.xz";
     };
   };
   systemsettings = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/systemsettings-5.20.5.tar.xz";
-      sha256 = "1b1j9hl9nzd4qqs255yd3svsb492w8i6l6ccihllwzqwkb1kpq5j";
-      name = "systemsettings-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/systemsettings-5.21.3.tar.xz";
+      sha256 = "08ynlg282x1klgpd43mh3ng4m579iq9hjlln96fqaw19g7x1i58x";
+      name = "systemsettings-5.21.3.tar.xz";
     };
   };
   xdg-desktop-portal-kde = {
-    version = "5.20.5";
+    version = "5.21.3";
     src = fetchurl {
-      url = "${mirror}/stable/plasma/5.20.5/xdg-desktop-portal-kde-5.20.5.tar.xz";
-      sha256 = "07g70517p89araa305if2xgwpfd7sdbknl880hqn2mqaqd9m83gl";
-      name = "xdg-desktop-portal-kde-5.20.5.tar.xz";
+      url = "${mirror}/stable/plasma/5.21.3/xdg-desktop-portal-kde-5.21.3.tar.xz";
+      sha256 = "05r1kbw39jmj2gfn42052y779l0k89kxh7xynw07igr7c5mxy4ih";
+      name = "xdg-desktop-portal-kde-5.21.3.tar.xz";
     };
   };
 }
diff --git a/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix
index 2b0450928f5a..aade506483f8 100644
--- a/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix
+++ b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix
@@ -1,6 +1,6 @@
 {
   mkDerivation, lib,
-  extra-cmake-modules, gettext, kdoctools, python,
+  extra-cmake-modules, gettext, kdoctools,
   cups, epoxy, mesa, pcre, pipewire, wayland, wayland-protocols,
   kcoreaddons, knotifications, kwayland, kwidgetsaddons, kwindowsystem,
   kirigami2, kdeclarative, plasma-framework, plasma-wayland-protocols, kio,
@@ -10,7 +10,7 @@
 mkDerivation {
   name = "xdg-desktop-portal-kde";
   meta.broken = lib.versionOlder qtbase.version "5.15.0";
-  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python ];
+  nativeBuildInputs = [ extra-cmake-modules gettext kdoctools ];
   buildInputs = [
     cups epoxy mesa pcre pipewire wayland wayland-protocols