diff --git a/gnu/local.mk b/gnu/local.mk
index 10b97c8bc3..7433e1e7ea 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1193,7 +1193,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gpm-glibc-2.26.patch			\
   %D%/packages/patches/gpodder-disable-updater.patch		\
   %D%/packages/patches/gpsbabel-fix-i686-test.patch		\
-  %D%/packages/patches/grantlee-merge-theme-dirs.patch		\
   %D%/packages/patches/grep-timing-sensitive-test.patch		\
   %D%/packages/patches/grocsvs-dont-use-admiral.patch		\
   %D%/packages/patches/gromacs-tinyxml2.patch			\
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index dcb91fdb0b..e6146f0f85 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2021 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,6 +37,7 @@
   #:use-module (guix build-system qt)
   #:use-module (guix deprecation)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -57,6 +59,8 @@
   #:use-module (gnu packages ebook)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -74,6 +78,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
@@ -87,14 +92,14 @@
 (define-public baloo-widgets
   (package
     (name "baloo-widgets")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/baloo-widgets-" version ".tar.xz"))
        (sha256
-        (base32 "1x4v79vhvc5ixkbsf3jyjz5ig1lf78rfw3r7g3llpb4j1kcp3wh0"))))
+        (base32 "1fk8qvqh1xx6139wvyfk607vkb7w3d79gc3v3c8s96pkp5b228ax"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -120,17 +125,15 @@ This package contains GUI widgets for baloo.")
 (define-public grantleetheme
   (package
     (name "grantleetheme")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/grantleetheme-" version ".tar.xz"))
        (sha256
-        (base32 "0gabc5cb0sf00s7m5v2jnq55qsrdbrq6nqd15y1i15p788zifsjx"))
-       (patches (search-patches "grantlee-merge-theme-dirs.patch"))))
-    (build-system qt-build-system)
-    (arguments `(#:tests? #f))  ; unexpected error in the test suite.
+        (base32 "0xm19a21y8b4cqiqg6mhxip1xxk7hrz88z1sijhhgc8d14i7mkdk"))))
+    (build-system qt-build-system) ; unexpected error in the test suite.
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("libxml2" ,libxml2))) ;; xmllint required for tests
@@ -150,14 +153,14 @@ This package contains GUI widgets for baloo.")
 (define-public akregator
   (package
     (name "akregator")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/akregator-" version ".tar.xz"))
        (sha256
-        (base32 "1711yhwsdq9iyc3wm3a4xmz81p73hvvc0h58sasc89ifpry50k2p"))))
+        (base32 "15qkkfrxiwcd1gz5skqj8sb8fkr1mkc51wc2chqr4jv6aa0lbf5r"))))
     (build-system qt-build-system)
     (arguments
      `(#:phases
@@ -207,7 +210,7 @@ This package contains GUI widgets for baloo.")
        ("qtwebchannel" ,qtwebchannel)
        ("qtwebengine" ,qtwebengine)
        ("syndication" ,syndication)))
-    (home-page "https://apps.kde.org/en/akregator")
+    (home-page "https://apps.kde.org/akregator/")
     (synopsis "KDE Feed Reader")
     (description
      "Akregator is a news feed reader.  It enables you to follow news
@@ -219,91 +222,90 @@ browser for easy news reading.")
     (license license:gpl2+)))
 
 (define-public kdenlive
-  (let ((version "21.08.2"))
-    (package
-      (name "kdenlive")
-      (version version)
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://invent.kde.org/multimedia/kdenlive")
-               (commit (string-append "v" version))))
-         (file-name (string-append name "-" version "-checkout"))
-         (sha256
-          (base32 "1l78xjdf1bmj3s8kysaqqgh67mb3vrc96rsdnp0i4awlyfsh89d7"))))
-      (build-system qt-build-system)
-      (native-inputs
-       `(("extra-cmake-modules" ,extra-cmake-modules)
-         ("pkg-config" ,pkg-config)
-         ("qttools" ,qttools)))
-      (inputs
-       `(("breeze" ,breeze) ; make dark them available easily
-         ("breeze-icons" ,breeze-icons) ; recommended icon set
-         ("ffmpeg" ,ffmpeg)
-         ("frei0r-plugins" ,frei0r-plugins)
-         ("karchive" ,karchive)
-         ("kcrash" ,kcrash)
-         ("kdbusaddons" ,kdbusaddons)
-         ("kdeclarative" ,kdeclarative)
-         ("kdoctools" ,kdoctools)
-         ("kfilemetadata" ,kfilemetadata)
-         ("kguiaddons" ,kguiaddons)
-         ("kiconthemes" ,kiconthemes)
-         ("knewstuff" ,knewstuff)
-         ("knotifications" ,knotifications)
-         ("knotifyconfig" ,knotifyconfig)
-         ("kparts" ,kparts)
-         ("kplotting" ,kplotting)
-         ("mlt" ,mlt)
-         ("purpose" ,purpose)
-         ("qtbase" ,qtbase-5)
-         ("qtdeclarative" ,qtdeclarative)
-         ("qtgraphicaleffects" ,qtgraphicaleffects)
-         ("qtmultimedia" ,qtmultimedia)
-         ("qtnetworkauth" ,qtnetworkauth)
-         ("qtquickcontrols" ,qtquickcontrols)
-         ("qtquickcontrols2" ,qtquickcontrols2)
-         ("qtscript" ,qtscript)
-         ("qtsvg" ,qtsvg)
-         ("qtwebkit" ,qtwebkit)
-         ("shared-mime-info" ,shared-mime-info)))
-      (arguments
-       ;; XXX: there is a single test that spawns other tests and
-       ;; 1/3 tests failed and 1/327 assertions failed.  It seems
-       ;; that individual tests can't be skipped.
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'wrap-executable
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (qtbase (assoc-ref inputs "qtbase"))
-                      (frei0r (assoc-ref inputs "frei0r-plugins"))
-                      (ffmpeg (assoc-ref inputs "ffmpeg")))
-                 (wrap-program (string-append out "/bin/kdenlive")
-                   `("PATH" ":" prefix
-                     ,(list (string-append ffmpeg "/bin")))
-                   `("FREI0R_PATH" ":" =
-                     (,(string-append frei0r "/lib/frei0r-1/")))
-                   `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
-                     (,(string-append qtbase "/lib/qt5/plugins/platforms")))
-                   `("MLT_PREFIX" ":" =
-                     (,(assoc-ref inputs "mlt"))))))))))
-      (home-page "https://kdenlive.org")
-      (synopsis "Non-linear video editor")
-      (description "Kdenlive is an acronym for KDE Non-Linear Video Editor.
+  (package
+    (name "kdenlive")
+    (version "21.08.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://invent.kde.org/multimedia/kdenlive")
+             (commit (string-append "v" version))))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32 "1l78xjdf1bmj3s8kysaqqgh67mb3vrc96rsdnp0i4awlyfsh89d7"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("breeze" ,breeze) ; make dark theme available easily
+       ("breeze-icons" ,breeze-icons) ; recommended icon set
+       ("ffmpeg" ,ffmpeg)
+       ("frei0r-plugins" ,frei0r-plugins)
+       ("karchive" ,karchive)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdeclarative" ,kdeclarative)
+       ("kdoctools" ,kdoctools)
+       ("kfilemetadata" ,kfilemetadata)
+       ("kguiaddons" ,kguiaddons)
+       ("kiconthemes" ,kiconthemes)
+       ("knewstuff" ,knewstuff)
+       ("knotifications" ,knotifications)
+       ("knotifyconfig" ,knotifyconfig)
+       ("kparts" ,kparts)
+       ("kplotting" ,kplotting)
+       ("mlt" ,mlt)
+       ("purpose" ,purpose)
+       ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtnetworkauth" ,qtnetworkauth)
+       ("qtquickcontrols" ,qtquickcontrols)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtscript" ,qtscript)
+       ("qtsvg" ,qtsvg)
+       ("qtwebkit" ,qtwebkit)
+       ("shared-mime-info" ,shared-mime-info)))
+    (arguments
+     ;; XXX: there is a single test that spawns other tests and
+     ;; 1/3 tests failed and 1/327 assertions failed.  It seems
+     ;; that individual tests can't be skipped.
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (qtbase (assoc-ref inputs "qtbase"))
+                    (frei0r (assoc-ref inputs "frei0r-plugins"))
+                    (ffmpeg (assoc-ref inputs "ffmpeg")))
+               (wrap-program (string-append out "/bin/kdenlive")
+                 `("PATH" ":" prefix
+                   ,(list (string-append ffmpeg "/bin")))
+                 `("FREI0R_PATH" ":" =
+                   (,(string-append frei0r "/lib/frei0r-1/")))
+                 `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
+                   (,(string-append qtbase "/lib/qt5/plugins/platforms")))
+                 `("MLT_PREFIX" ":" =
+                   (,(assoc-ref inputs "mlt"))))))))))
+    (home-page "https://kdenlive.org")
+    (synopsis "Non-linear video editor")
+    (description "Kdenlive is an acronym for KDE Non-Linear Video Editor.
 
 Non-linear video editing is much more powerful than beginner's (linear)
 editors, hence it requires a bit more organization before starting.  However,
 it is not reserved to specialists and can be used for small personal
 projects.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public kdevelop
   (package
     (name "kdevelop")
-    (version "5.6.1")
+    (version "5.6.2")
     (source
       (origin
         (method url-fetch)
@@ -311,7 +313,7 @@ projects.")
                             "/" version "/src/kdevelop-"
                             version ".tar.xz"))
         (sha256
-         (base32 "02ip5r67hjfpywkm3mz86n6wbqcr7996ifzfd2fyzsvm4998hi4y"))))
+         (base32 "1xiv6vs7d7vj5v7i1wxzx0xl6h8cg9bl8x9z7qg1qxizwlzvr1hg"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -338,11 +340,12 @@ projects.")
        ("knotifyconfig" ,knotifyconfig)
        ("kparts" ,kparts)
        ("kservice" ,kservice)
+       ("ksyntaxhighlighting" ,ksyntaxhighlighting)
        ("ktexteditor" ,ktexteditor)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
        ("libkomparediff2" ,libkomparediff2)
-       ("oxygen-icons" ,oxygen-icons)
+       ("breeze-icons" ,breeze-icons)
        ("qtbase" ,qtbase-5)
        ("qtdeclarative" ,qtdeclarative)
        ("qtquickcontrols" ,qtquickcontrols)  ;; not checked as requirement
@@ -384,7 +387,7 @@ projects.")
                (("^\\s*PATHS \"\\$\\{CLANG_LIBRARY_DIRS\\}\"" line)
                 (string-append line " " (assoc-ref inputs "clang") "/lib")))
              #t)))))
-    (home-page "https://kdevelop.org")
+    (home-page "https://www.kdevelop.org/")
     (synopsis "IDE for C, C++, Python, Javascript and PHP")
     (description "The KDevelop IDE provides semantic syntax highlighting, as
 well as code navigation and completion for C, C++ (using Clang/LLVM), QML,
@@ -423,14 +426,14 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
 (define-public kdiagram
   (package
     (name "kdiagram")
-    (version "2.7.0")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/kdiagram/" version
                            "/kdiagram-" version ".tar.xz"))
        (sha256
-        (base32 "1pgvf2q8b59hw0jg5ajmj5nrn4q8cgnifpvdd0fynk2ml6zym8k3"))
+        (base32 "07s3kwv0mqvb64x8nz4w1yb3hbk28yzkw4qg1jibai7as4xsv7ap"))
        (patches (search-patches
                  "kdiagram-Fix-missing-link-libraries.patch"))))
     (build-system qt-build-system)
@@ -463,29 +466,13 @@ illustrate project schedules.")
               (sha256
                (base32
                 "1y0d8gnxfdg5nfwk8dgx8fc2bwskvnys049napb1a9fr25bqmimw"))))
-    (build-system cmake-build-system)
+    (build-system qt-build-system)
     (arguments
      `(#:tests? #f
        #:configure-flags
-       (list "-DBUILD_TESTING=OFF"
-             (string-append "-DCMAKE_CXX_FLAGS=-I"
-                            (assoc-ref %build-inputs "openexr")
-                            "/include/OpenEXR"))
-       #:phases
-       (modify-phases %standard-phases
-         ;; Ensure that icons are found at runtime.
-         ;; This works around <https://bugs.gnu.org/22138>.
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (qt '("qtbase" "qtsvg")))
-               (wrap-program (string-append out "/bin/krita")
-                 `("QT_PLUGIN_PATH" ":" prefix
-                   ,(map (lambda (label)
-                           (string-append (assoc-ref inputs label)
-                                          "/lib/qt5/plugins/"))
-                         qt)))
-               #t))))))
+       ,#~(list "-DBUILD_TESTING=OFF"
+                (string-append "-DCMAKE_CXX_FLAGS=-I" #$openexr
+                               "/include/OpenEXR"))))
     (native-inputs
      `(("curl" ,curl)
        ("eigen" ,eigen)
@@ -515,9 +502,10 @@ illustrate project schedules.")
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
        ("lcms" ,lcms)
+       ("libheif" ,libheif)
        ("libjpeg-turbo" ,libjpeg-turbo)
        ("libpng" ,libpng)
-       ("libraw" ,libraw-0.18)
+       ("libraw" ,libraw)
        ("libtiff" ,libtiff)
        ("libx11" ,libx11)
        ("libxcb" ,libxcb)
@@ -568,7 +556,7 @@ features include brush stabilizers, brush engines and wrap-around mode.")
        ("qtbase" ,qtbase-5)
        ("qtsvg" ,qtsvg)
        ("qtxmlpatterns" ,qtxmlpatterns)))
-    (home-page "https://apps.kde.org/en/massif-visualizer")
+    (home-page "https://apps.kde.org/massif-visualizer/")
     (synopsis "Visualize massif data generated by Valgrind")
     (description
      "Massif Visualizer is a tool that visualizes massif data.
@@ -580,14 +568,14 @@ compressed massif files can also be opened transparently.")
 (define-public libkomparediff2
   (package
     (name "libkomparediff2")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kde/stable/release-service/" version
                             "/src/libkomparediff2-" version ".tar.xz"))
         (sha256
-         (base32 "0m8m7sgpf2f4nxpaaymyvihlk0pcyblyd99mcbibrnyr5kzkzzdc"))))
+         (base32 "08y9p3il0i5sayq42v9p1v9f6yynp7ljb5d4ls1hf5ww4xxvx10x"))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)))
@@ -612,14 +600,14 @@ used in KDE development tools Kompare and KDevelop.")
 (define-public qca
   (package
     (name "qca")
-    (version "2.3.3")
+    (version "2.3.4")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kde/stable/qca/" version
                             "/qca-" version ".tar.xz"))
         (sha256
-         (base32 "0rvvf97la95lah67jcj0p06n4br0pc2mri0q1hn4x522hndqybjn"))))
+         (base32 "1i7m5y3dfwij9cyjp72ya5zd2skgp7mfmrmf7bvrbzg3ly0mhsbb"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -637,16 +625,16 @@ cards.")
 (define-public kpmcore
   (package
     (name "kpmcore")
-    (version "4.1.0")
+    (version "21.08.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "mirror://kde/stable/kpmcore"
-                    "/" version "/src/"
-                    name "-" version ".tar.xz"))
+              (uri (string-append "mirror://kde/stable/release-service/"
+                                  version "/src/kpmcore-"
+                                  version ".tar.xz"))
+
               (sha256
                (base32
-                "0jsig7algmab9h0fb09my0axjqzw83zgscamhzl8931lribs6idm"))))
+                "0rn8x0add1qflsbgppmhz1zbnjvy39d5wckxga0vmhdix2m3d60g"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -656,9 +644,18 @@ cards.")
        ("kcoreaddons" ,kcoreaddons)
        ("ki18n" ,ki18n)
        ("kwidgetsaddons" ,kwidgetsaddons)
+       ("polkit-qt" ,polkit-qt)
        ("qtbase" ,qtbase-5)
        ("qca" ,qca)
        ("util-linux" ,util-linux "lib")))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-cmake-install-directories
+           (lambda _
+             (substitute* "src/util/CMakeLists.txt"
+               (("DESTINATION \\$\\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\\}")
+                "DESTINATION share/polkit-1/actions")))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Library for managing partitions")
     (description "Library for managing partitions.")
@@ -694,7 +691,7 @@ different notification systems.")
 (define-public kdeconnect
   (package
     (name "kdeconnect")
-    (version "20.04.2")
+    (version "21.08.2")
     (source
       (origin
         (method url-fetch)
@@ -703,7 +700,7 @@ different notification systems.")
                             version ".tar.xz"))
         (sha256
          (base32
-          "0yq3afbbcc9gmlcachvh3xz3gdj57092fpagp36l5knw8gr0d9ip"))))
+          "09dv3l5g0wjilpga11mkxbyy3d8xk46pb2i35yvjbgi9yzp0xzfv"))))
     (build-system qt-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_TESTING=ON"
@@ -737,13 +734,16 @@ different notification systems.")
        ("libfakekey" ,libfakekey)
        ("pulseaudio-qt" ,pulseaudio-qt)
        ("qca" ,qca)
+       ("qqc2-desktop-style" ,qqc2-desktop-style)
        ("qtbase" ,qtbase-5)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
        ("qtmultimedia" ,qtmultimedia)
        ("qtquickcontrols" ,qtquickcontrols)
        ("qtquickcontrols2" ,qtquickcontrols2)
-       ("qtx11extras" ,qtx11extras)))
+       ("qtx11extras" ,qtx11extras)
+       ("qtwayland" ,qtwayland)
+       ("wayland" ,wayland)))
     (home-page "https://community.kde.org/KDEConnect")
     (synopsis "Enable your devices to communicate with each other")
     (description "KDE Connect is a project that enables all your devices to
@@ -843,7 +843,7 @@ to perform data analysis.")
 (define-public kqtquickcharts
   (package
     (name "kqtquickcharts")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
       (origin
         (method url-fetch)
@@ -851,7 +851,7 @@ to perform data analysis.")
                             version "/src/kqtquickcharts-" version ".tar.xz"))
         (sha256
          (base32
-          "1wxp35mf9zlpgzi4msdl86b2krdq2ipqw371gyx23r7j84vdyxi3"))))
+          "04cxw88lv7mj74znzfl3m9jzks11z837y3bch40qdn8ysk9wqjhn"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -868,14 +868,14 @@ charts.")
 (define-public kdf
   (package
     (name "kdf")
-    (version "20.12.1")
+    (version "21.08.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kde/stable/release-service/"
                                   version "/src/kdf-" version ".tar.xz"))
               (sha256
                (base32
-                "0ba67hs4vlb3qyvdzhnpmf8p62df12s8aqw4hzf9vnxff3qix5k1"))))
+                "1z2m9a4rzjsjxv9pkassn3j7pxkqrpq04hw0j6q913q69a999rwg"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -891,7 +891,7 @@ charts.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kxmlgui" ,kxmlgui)
        ("qtbase" ,qtbase-5)))
-    (home-page "https://kde.org/applications/system/kdk")
+    (home-page "https://apps.kde.org/kdf/")
     (synopsis "View Disk Usage")
     (description "KDiskFree displays the available file devices (hard drive
 partitions, floppy and CD drives, etc.) along with information on their
@@ -902,14 +902,14 @@ unmount drives and view them in a file manager.")
 (define-public kcachegrind
   (package
     (name "kcachegrind")
-    (version "20.04.1")
+    (version "21.08.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kde/stable/release-service/" version
                                   "/src/kcachegrind-" version ".tar.xz"))
               (sha256
                (base32
-                "0fx17s6fj1pxl1mgfrqhchk8sihkbji1x8y3nhb1r0971wzd1nsc"))))
+                "126qa061bwz2d4s721vbv2099mz07vw3i1yw7vm0b3ih43h95149"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -944,14 +944,14 @@ Python, PHP, and Perl.")
 (define-public libkdegames
   (package
     (name "libkdegames")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://kde/stable/release-service/" version
                           "/src/libkdegames-" version ".tar.xz"))
       (sha256
-       (base32 "1xsrrvhwjwi5aajcaxydmzc69i4yx6shs8ly8vr85njc188ycg13"))))
+       (base32 "0jbb4h515c9h08r7dqaslqgrpmb6f08ai46phwgipd67jzgh6wh7"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -990,14 +990,14 @@ Python, PHP, and Perl.")
 (define-public okular
   (package
     (name "okular")
-    (version "20.12.1")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0gpm7n47yijsjg4yba561j5pbvd98hgvr93w1kvzk851nb87m89c"))))
+        (base32 "0y3n340fbhsgmmrq4vz2p9682xzs7hsvvna8ffh4r15wgl1qdb9q"))))
     (build-system qt-build-system)
     ;; The tests fail because they can't find the proper mimetype plugins:
     ;; "org.kde.okular.core: No plugin for mimetype '"image/jpeg"'."
@@ -1047,7 +1047,7 @@ Python, PHP, and Perl.")
        ("threadweaver" ,threadweaver)
        ("kcrash" ,kcrash)
        ("kjs" ,kjs)))
-    (home-page "https://kde.org/applications/graphics/okular/")
+    (home-page "https://apps.kde.org/okular/")
     (synopsis "Document viewer")
     (description
      "Okular is a document viewer developed for KDE.  It can display files in
@@ -1057,7 +1057,7 @@ a variety of formats, including PDF, PostScript, DejaVu, and EPub.")
 (define-public poxml
   (package
     (name "poxml")
-    (version "20.12.1")
+    (version "21.08.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -1065,7 +1065,7 @@ a variety of formats, including PDF, PostScript, DejaVu, and EPub.")
                               "/src/poxml-" version ".tar.xz"))
               (sha256
                (base32
-                "1smjvblx0jcv3afs2sr4qcmvhqd44iw24hvr9fppa3nxhrmjwmlk"))))
+                "1h7y4y1n3xcpgrkabik21ilck5dmq6p3qxs3xm9vzq1jxpb9izyf"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1073,7 +1073,7 @@ a variety of formats, including PDF, PostScript, DejaVu, and EPub.")
     (inputs
      `(("gettext" ,gettext-minimal)
        ("qtbase" ,qtbase-5)))
-    (home-page "https://kde.org/applications/development")
+    (home-page "https://github.com/KDE/poxml/")
     (synopsis "Tools for translating DocBook XML files with Gettext")
     (description "This is a collection of tools that facilitate translating
 DocBook XML files using Gettext message files (PO files).  Also included are
@@ -1084,21 +1084,21 @@ PO template files.")
 (define-public kdegraphics-mobipocket
   (package
     (name "kdegraphics-mobipocket")
-    (version "20.12.0")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0fm880lp9g60zgrkjyh4jxws6x0s77l9ia4f8pza3w8sxcbbswk5"))))
+        (base32 "15wd7sfwfz3n1a0m0l2ymyhsdxjajw3kkl4piv9956amcg1bxlcp"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
     (inputs
      `(("kio" ,kio)
        ("qtbase" ,qtbase-5)))
-    (home-page "https://apps.kde.org/en/kdegraphics_mobipocket")
+    (home-page "https://apps.kde.org/kdegraphics_mobipocket/")
     (synopsis "KDE thumbnailer for Mobipocket files")
     (description "This package provides a KDE plugin that shows thumbnails of
 Mobipocket e-books in Dolphin and other KDE apps.")
@@ -1107,14 +1107,14 @@ Mobipocket e-books in Dolphin and other KDE apps.")
 (define-public libkexiv2
   (package
     (name "libkexiv2")
-    (version "20.12.0")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0k0iinf7s8qlk3fwvq7iic1b4zn2gm65rfd58q7d3wb1i1j2hjjk"))))
+        (base32 "0spa6pbr6rpnznvm2z0c410k5wssw4rw15rdc3f5ds9mbzbyxpva"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1130,14 +1130,14 @@ picture metadata as EXIF/IPTC and XMP.")
 (define-public zeroconf-ioslave
   (package
     (name "zeroconf-ioslave")
-    (version "20.04.1")
+    (version "21.08.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/release-service/" version
                            "/src/zeroconf-ioslave-" version ".tar.xz"))
        (sha256
-        (base32 "1qck5jyc4psslpibhki8sz8aj0hsnx8z791vzyn10lmdzn71vx8c"))))
+        (base32 "0xgm4y29iklal5kd5z76jdw6wgw0mg9xn0f0d07zyshv5hjgllv6"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1147,7 +1147,7 @@ picture metadata as EXIF/IPTC and XMP.")
        ("ki18n" ,ki18n)
        ("kio" ,kio)
        ("qtbase" ,qtbase-5)))
-    (home-page "https://kde.org/applications/internet/org.kde.zeroconf_ioslave")
+    (home-page "https://apps.kde.org/zeroconf_ioslave/")
     (synopsis "DNS-SD Service Discovery Monitor")
     (description "Adds an entry to Dolphin's Network page to show local
 services such as printers which advertise themselves with DNSSD (called Avahi
diff --git a/gnu/packages/patches/grantlee-merge-theme-dirs.patch b/gnu/packages/patches/grantlee-merge-theme-dirs.patch
deleted file mode 100644
index 96a15a387b..0000000000
--- a/gnu/packages/patches/grantlee-merge-theme-dirs.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-Taken from nixpkgs, see
-grantleetheme: merge themes across multiple prefixes
-<https://github.com/NixOS/nixpkgs/commits/master/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch>
-
-
-diff --git a/src/grantleetheme.cpp b/src/grantleetheme.cpp
-index 27d5bc8..8d43140 100644
---- a/src/grantleetheme.cpp
-+++ b/src/grantleetheme.cpp
-@@ -46,7 +46,7 @@ ThemePrivate::ThemePrivate(const ThemePrivate &other)
-     , description(other.description)
-     , name(other.name)
-     , dirName(other.dirName)
--    , absolutePath(other.absolutePath)
-+    , absolutePaths(other.absolutePaths)
-     , author(other.author)
-     , email(other.email)
-     , loader(other.loader)
-@@ -64,12 +64,15 @@ void ThemePrivate::setupEngine()
- 
- void ThemePrivate::setupLoader()
- {
--    // Get the parent dir with themes, we set the theme directory separately
--    QDir dir(absolutePath);
--    dir.cdUp();
-+    QStringList templateDirs;
-+    for (const QString& path : absolutePaths) {
-+        QDir dir(path);
-+        dir.cdUp();
-+        templateDirs << dir.absolutePath();
-+    }
- 
-     loader = QSharedPointer<GrantleeTheme::QtResourceTemplateLoader>::create();
--    loader->setTemplateDirs({ dir.absolutePath() });
-+    loader->setTemplateDirs(templateDirs);
-     loader->setTheme(dirName);
- 
-     if (!sEngine) {
-@@ -121,7 +124,7 @@ Theme::Theme(const QString &themePath, const QString &dirName, const QString &de
-     KConfigGroup group(&config, QStringLiteral("Desktop Entry"));
-     if (group.isValid()) {
-         d->dirName = dirName;
--        d->absolutePath = themePath;
-+        d->absolutePaths = QStringList(themePath);
-         d->name = group.readEntry("Name", QString());
-         d->description = group.readEntry("Description", QString());
-         d->themeFileName = group.readEntry("FileName", QString());
-@@ -140,7 +143,7 @@ Theme::~Theme()
- 
- bool Theme::operator==(const Theme &other) const
- {
--    return isValid() && other.isValid() && d->absolutePath == other.absolutePath();
-+    return isValid() && other.isValid() && d->absolutePaths == other.absolutePaths();
- }
- 
- Theme &Theme::operator=(const Theme &other)
-@@ -184,7 +187,15 @@ QString Theme::dirName() const
- 
- QString Theme::absolutePath() const
- {
--    return d->absolutePath;
-+    if (! d->absolutePaths.isEmpty()) {
-+      return d->absolutePaths.first();
-+    };
-+    return QString();
-+}
-+
-+QStringList Theme::absolutePaths() const
-+{
-+    return d->absolutePaths;
- }
- 
- QString Theme::author() const
-@@ -223,6 +231,13 @@ QString Theme::render(const QString &templateName, const QVariantHash &data, con
-     return result;
- }
- 
-+void Theme::addThemeDir(const QString& path)
-+{
-+    QDir dir(path);
-+    dir.cdUp();
-+    d->absolutePaths << dir.absolutePath();
-+}
-+
- void Theme::addPluginPath(const QString &path)
- {
-     if (!ThemePrivate::sEngine) {
-diff --git a/src/grantleetheme.h b/src/grantleetheme.h
-index a25c27b..be38299 100644
---- a/src/grantleetheme.h
-+++ b/src/grantleetheme.h
-@@ -48,11 +48,14 @@ public:
-     Q_REQUIRED_RESULT QStringList displayExtraVariables() const;
-     Q_REQUIRED_RESULT QString dirName() const;
-     Q_REQUIRED_RESULT QString absolutePath() const;
-+    Q_REQUIRED_RESULT QStringList absolutePaths() const;
-     Q_REQUIRED_RESULT QString author() const;
-     Q_REQUIRED_RESULT QString authorEmail() const;
- 
-     Q_REQUIRED_RESULT QString render(const QString &templateName, const QVariantHash &data, const QByteArray &applicationDomain = QByteArray());
- 
-+    void addThemeDir(const QString&);
-+
-     static void addPluginPath(const QString &path);
- 
- private:
-diff --git a/src/grantleetheme_p.h b/src/grantleetheme_p.h
-index eb73dcb..00510e9 100644
---- a/src/grantleetheme_p.h
-+++ b/src/grantleetheme_p.h
-@@ -43,7 +43,7 @@ public:
-     QString description;
-     QString name;
-     QString dirName;
--    QString absolutePath;
-+    QStringList absolutePaths;
-     QString author;
-     QString email;
- 
-diff --git a/src/grantleethememanager.cpp b/src/grantleethememanager.cpp
-index 606d717..dc99041 100644
---- a/src/grantleethememanager.cpp
-+++ b/src/grantleethememanager.cpp
-@@ -125,25 +125,18 @@ public:
- 
-         for (const QString &directory : qAsConst(themesDirectories)) {
-             QDirIterator dirIt(directory, QStringList(), QDir::AllDirs | QDir::NoDotAndDotDot);
--            QStringList alreadyLoadedThemeName;
-             while (dirIt.hasNext()) {
-                 dirIt.next();
-                 const QString dirName = dirIt.fileName();
-                 GrantleeTheme::Theme theme = q->loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
-                 if (theme.isValid()) {
-                     QString themeName = theme.name();
--                    if (alreadyLoadedThemeName.contains(themeName)) {
--                        int i = 2;
--                        const QString originalName(theme.name());
--                        while (alreadyLoadedThemeName.contains(themeName)) {
--                            themeName = originalName + QStringLiteral(" (%1)").arg(i);
--                            ++i;
--                        }
--                        theme.d->name = themeName;
-+                    QMap<QString, GrantleeTheme::Theme>::iterator i = themes.find(dirName);
-+                    if (i != themes.end()) {
-+                        i.value().addThemeDir(dirIt.filePath());
-+                    } else {
-+                        themes.insert(dirName, theme);
-                     }
--                    alreadyLoadedThemeName << themeName;
--                    themes.insert(dirName, theme);
--                    //qDebug()<<" theme.name()"<<theme.name();
-                 }
-             }
-             watch->addDir(directory);
-@@ -366,7 +359,7 @@ QString ThemeManager::pathFromThemes(const QString &themesRelativePath, const QS
-                 GrantleeTheme::Theme theme = loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
-                 if (theme.isValid()) {
-                     if (dirName == themeName) {
--                        return theme.absolutePath();
-+                        return theme.absolutePaths().first();
-                     }
-                 }
-             }
