diff --git a/gnu/local.mk b/gnu/local.mk
index c1f2399a46..3c6b4cf4d6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1039,6 +1039,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/evolution-data-server-libical-compat.patch	\
   %D%/packages/patches/exercism-disable-self-update.patch	\
   %D%/packages/patches/extempore-unbundle-external-dependencies.patch	\
+  %D%/packages/patches/extra-cmake-modules-reproducible-tarballs.patch	\
   %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\
   %D%/packages/patches/farstream-make.patch                          \
   %D%/packages/patches/fastcap-mulGlobal.patch			\
@@ -1307,7 +1308,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/jfsutils-include-systypes.patch		\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/julia-tracker-16-compat.patch		\
-  %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
   %D%/packages/patches/libblockdev-glib-compat.patch		\
   %D%/packages/patches/libffi-3.3-powerpc-fixes.patch		\
   %D%/packages/patches/libffi-float128-powerpc64le.patch	\
@@ -1327,7 +1327,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/kpackage-allow-external-paths.patch	\
-  %D%/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch \
   %D%/packages/patches/kmplayer-aarch64.patch			\
   %D%/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch	\
   %D%/packages/patches/kobodeluxe-paths.patch			\
@@ -1566,7 +1565,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/pango-skip-libthai-test.patch		\
   %D%/packages/patches/pciutils-hurd-configure.patch		\
   %D%/packages/patches/pciutils-hurd-fix.patch			\
-  %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
   %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch		\
   %D%/packages/patches/pthreadpool-system-libraries.patch	\
   %D%/packages/patches/python-chai-drop-python2.patch		\
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 35818d579b..42a7eb6f47 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2021 Alexandros Theodotou <alex@zrythm.org>
+;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,7 +61,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages image)
   #:use-module (gnu packages kerberos)
-  #:use-module (gnu packages kde-plasma)
+  #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mp3)
@@ -86,7 +87,7 @@
 (define-public extra-cmake-modules
   (package
     (name "extra-cmake-modules")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -95,15 +96,18 @@
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10c5xs5shk0dcshpdxg564ay5y8hgmvfvmlhmhjf0dy79kcah3c3"))))
+                "1axwz0p3ggjpcxpqqlyng3fa2pxmjxgybncgkp8i81i7iq6sf72l"))
+              (patches ;; https://bugs.kde.org/show_bug.cgi?id=443532
+               (search-patches "extra-cmake-modules-reproducible-tarballs.patch"))))
     (build-system cmake-build-system)
     (native-inputs
-     ;; Add test dependency, except on armhf where building it is too
+     ;; Add test dependencies, except on armhf where building it is too
      ;; expensive.
      (if (and (not (%current-target-system))
               (string=? (%current-system) "armhf-linux"))
          '()
-         `(("qtbase" ,qtbase-5))))                ;for tests (needs qmake)
+         `(("qtbase" ,qtbase-5)
+           ("qtdeclarative" ,qtdeclarative))))
     (arguments
      `(#:tests? ,(not (null? (package-native-inputs this-package)))
        #:phases
@@ -130,19 +134,11 @@
                (("set\\(ECM_MKSPECS_INSTALL_DIR mkspecs/modules")
                 "set(ECM_MKSPECS_INSTALL_DIR lib/qt5/mkspecs/modules"))
              #t))
-         ;; install and check phase are swapped to prevent install from failing
-         ;; after testsuire has run
-         (add-after 'install 'check-post-install
-           (assoc-ref %standard-phases 'check))
-         (delete 'check))))
-    ;; optional dependencies - to save space, we do not add these inputs.
-    ;; Sphinx > 1.2:
-    ;;   Required to build Extra CMake Modules documentation in Qt Help format.
-    ;; Qt5LinguistTools , Qt5 linguist tools. , <http://www.qt.io/>
-    ;;   Required to run tests for the ECMPoQmTools module.
-    ;; Qt5Core
-    ;;   Required to run tests for the ECMQtDeclareLoggingCategory module,
-    ;;   and for some tests of the KDEInstallDirs module.
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests? ;; This test fails
+               (invoke "ctest" "-E" "KDEFetchTranslations"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "CMake module files for common software used by KDE")
     (description "The Extra CMake Modules package, or ECM, adds to the
@@ -186,7 +182,7 @@ common build settings used in software produced by the KDE community.")
                  ((regex all dest)
                   (string-append dest (assoc-ref outputs "out")))))
            #t)))))
-    (home-page "https://phonon.kde.org")
+    (home-page "https://community.kde.org/Phonon")
     (synopsis "KDE's multimedia library")
     (description "KDE's multimedia library.")
     (license license:lgpl2.1+)))
@@ -220,7 +216,7 @@ common build settings used in software produced by the KDE community.")
     (arguments
      `(#:configure-flags
        '( "-DPHONON_BUILD_PHONON4QT5=ON")))
-    (home-page "https://phonon.kde.org")
+    (home-page "https://community.kde.org/Phonon")
     (synopsis "Phonon backend which uses GStreamer")
     (description "Phonon makes use of backend libraries to provide sound.
 Phonon-GStreamer is a backend based on the GStreamer multimedia library.")
@@ -236,7 +232,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.")
 (define-public attica
   (package
     (name "attica")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -245,7 +241,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1njw1sifykyqldb5idaywdzi3xg7a6bvzkrvazwmyixd0npq12dx"))))
+                "0wjfrlmwg03js544xjlpznxxqv14cj40fpzbfnlj24kjgd1ai8dq"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -276,7 +272,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
 (define-public bluez-qt
   (package
     (name "bluez-qt")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -285,7 +281,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1kqhps4qyvqm0qmk7fb3w41bib898amipchf8csdzacw4bzpri9k"))))
+                "1shk3riddgdb0i6f0603hbhww13z1b566rdaplxsbgk8cyhl5acz"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -297,9 +293,13 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
      `(#:configure-flags
        (list (string-append
               "-DUDEV_RULES_INSTALL_DIR=" %output "/lib/udev/rules.d"))
-       ;; TODO: Make tests pass: DBUS_FATAL_WARNINGS=0 still yields 7/8 tests
-       ;; failing.  When running after install, tests hang.
-       #:tests? #f))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest")))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "QML wrapper for BlueZ")
     (description "bluez-qt is a Qt-style library for accessing the bluez
@@ -309,7 +309,7 @@ Bluetooth stack.  It is used by the KDE Bluetooth stack, BlueDevil.")
 (define-public breeze-icons
   (package
     (name "breeze-icons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -318,14 +318,18 @@ Bluetooth stack.  It is used by the KDE Bluetooth stack, BlueDevil.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0lqglrjgjb4ralgmr7lb9k7acmn8q4jm18s4p3gbgd9iswyqgsbm"))))
+                "19f7n4r6b0b1l8hc79xbj8gc18xf488bk4i0wdbw22x9vwl4h58h"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("fdupes" ,fdupes)
-       ("libxml2" ,libxml2)))
+       ("python-lxml" ,python-lxml)
+       ("python" ,python)))
     (inputs
      `(("qtbase" ,qtbase-5)))
+    (propagated-inputs
+     ;; KDE apps will need qtsvg to make use of breeze which is SVG only.
+     `(("qtsvg" ,qtsvg)))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Default KDE Plasma 5 icon theme")
     (description "Breeze provides a freedesktop.org compatible icon theme.
@@ -338,7 +342,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.")
 (define-public kapidox
   (package
     (name "kapidox")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -347,12 +351,11 @@ It is the default icon theme for the KDE Plasma 5 desktop.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1irl25pf60frzrmm1ksgjq6y8kn3rd5snliq69l4c42yznl9qv1j"))))
+                "0iyla9i4ln6w9wkm4dand53ir6gzsm4180diwi9p2q5mfrk0rvja"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f)) ; has no test target
-    (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)))
+     `(#:tests? #f  ; has no test target
+       #:make-flags (list "DESTDIR=/"))) ;; Otherwise it doesn't install anything.
     (propagated-inputs
      ;; kapidox is a python programm
      ;; TODO: check if doxygen has to be installed, the readme does not
@@ -380,7 +383,7 @@ documentation.")
 (define-public karchive
   (package
     (name "karchive")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -389,15 +392,19 @@ documentation.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0z8asn357pdbv4g9g0x18p72wskca1qanxljyix7wzc5rsi63wzm"))))
+                "0d8wqrynwmqazlf5v7qas9akrvcwr4lrqg3dcbnq61mmc252wgqh"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)))
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+        ; ("pkg-config" ,pkg-config) ;; for zstd
+       ))
     (inputs
      `(("bzip2" ,bzip2)
        ("qtbase" ,qtbase-5)
        ("xz" ,xz)
-       ("zlib" ,zlib)))
+       ("zlib" ,zlib)
+       ; ("zstd:lib" ,zstd "lib") ;; Tests fail with zstd
+       ))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt 5 addon providing access to numerous types of archives")
     (description "KArchive provides classes for easy reading, creation and
@@ -414,7 +421,7 @@ GZip format, via a subclass of QIODevice.")
 (define-public kcalendarcore
   (package
     (name "kcalendarcore")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -423,7 +430,7 @@ GZip format, via a subclass of QIODevice.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1y1f8gc1g9yn9kgmn53f1zvkizasfs667dfin3fyci657r5qwpw2"))))
+                "0ig2w0dxrf9ih9hqk5rvqqmyhg658m1hs4807zl66llplkr58q0n"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -435,26 +442,9 @@ GZip format, via a subclass of QIODevice.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'disable-failing-libical3-tests
-           (lambda _
-             ;; testicaltimezones fails with some time-zone issue
-             (substitute* "autotests/CMakeLists.txt"
-               (("macro_unit_tests\\(testicaltimezones\\)" line)
-                (string-append "## " line))
-               (("target_link_libraries\\(testicaltimezones " line)
-                (string-append "## " line)))
-             (for-each
-              delete-file
-              (list
-               ;; test cases are generated for each .ics file. These fail:
-               "autotests/data/Compat-libical3/AppleICal_1.5.ics"
-               "autotests/data/Compat-libical3/Evolution_2.8.2_timezone_test.ics"
-               "autotests/data/Compat-libical3/KOrganizer_3.1a.ics"
-               "autotests/data/Compat-libical3/MSExchange.ics"
-               "autotests/data/Compat-libical3/Mozilla_1.0.ics"))
-             #t))
-         (add-before 'check 'set-timezone
+         (add-before 'check 'check-setup
            (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "QT_QPA_PLATFORM" "offscreen")
              (setenv "TZ" "Europe/Prague")
              (setenv "TZDIR"
                      (search-input-directory inputs
@@ -474,7 +464,7 @@ and the older vCalendar.")
 (define-public kcodecs
   (package
     (name "kcodecs")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -483,7 +473,7 @@ and the older vCalendar.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y9n2a5n18pasdmrp0xb84hla9l27yj2x3k4p1c041sd9nkwixpk"))))
+                "1fb8agbkwxnxb0hlzz0ya460z3ihn9qz2zvjdxvk21rjhmp1alh7"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -510,7 +500,7 @@ Internet).")
 (define-public kconfig
   (package
     (name "kconfig")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -519,28 +509,23 @@ Internet).")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1s3h4hfpw7c0894cifj66bj1yhx8g94ckvl71jm7qqsb5x5h6y9n"))))
+                "1l8px5qpf5qfma24filim1swblgbdvnf25pc38qc6s79inkganrl"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("dbus" ,dbus)
-       ("extra-cmake-modules" ,extra-cmake-modules)
-       ("inetutils" ,inetutils)
-       ("qttools" ,qttools)
-       ("xorg-server" ,xorg-server-for-tests)))
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)))
     (inputs
      `(("qtbase" ,qtbase-5)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             (setenv "TMPDIR" (getcwd))
-             #t))
          (replace 'check
-           (lambda _
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests? ;; kconfigcore-kconfigtest fails inconsistently!!
+               (setenv "HOME" (getcwd))
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (invoke "ctest" "-E" "kconfigcore-kconfigtest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Kconfiguration settings framework for Qt")
     (description "KConfig provides an advanced configuration system.
@@ -575,7 +560,7 @@ propagate their changes to their respective configuration files.")
 (define-public kcoreaddons
   (package
     (name "kcoreaddons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -584,41 +569,25 @@ propagate their changes to their respective configuration files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10a7zys3limsawl7lk9ggymk3msk2bp0y8hp0jmsvk3l405pd1ps"))))
+                "19pdpz7jjknccaqc2i6zfmclmrk60clzanvx72ryvh7yb0xyk7yj"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("qttools" ,qttools)
        ("shared-mime-info" ,shared-mime-info)
        ;; TODO: FAM: File alteration notification http://oss.sgi.com/projects/fam
-       ("xorg-server" ,xorg-server-for-tests))) ; for the tests
+       ))
     (inputs
      `(("qtbase" ,qtbase-5)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'blacklist-failing-test
-           (lambda _
-             ;; Blacklist failing tests.
-             (with-output-to-file "autotests/BLACKLIST"
-               (lambda _
-                 ;; FIXME: Make it pass.  Test failure caused by stout/stderr
-                 ;; being interleaved.
-                 (display "[test_channels]\n*\n")
-                 ;; This fails with ENOSPC because of too many inotify watches.
-                 (display "[benchNotifyWatcher]\n*\n")))
-             #t))
-         ;; See upstream commit ee424e9b62368485bba4193053cabb553a1d268e
-         (add-after 'unpack 'fix-broken-test
-           (lambda _
-             (substitute* "autotests/kdirwatch_unittest.cpp"
-               (("QVERIFY\\(waitForRecreationSignal\\(watch, existingFile\\)\\);" m)
-                (string-append m "\nwaitUntilNewSecond();")))
-             #t))
-         (add-before 'check 'check-setup
-           (lambda _
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
              (setenv "HOME" (getcwd))
              (setenv "TMPDIR" (getcwd))
+             (when tests? ;; kdirwatch test fails inconsistently. kprocesstest fails.
+               (invoke "ctest" "-E" "(kdirwatch_qfswatch_unittest|kprocesstest)"))
              #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt addon library with a collection of non-GUI utilities")
@@ -632,7 +601,7 @@ many more.")
 (define-public kdbusaddons
   (package
     (name "kdbusaddons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -641,8 +610,7 @@ many more.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vz2hg5p8wvfk0pi8v25zqzcn8yj7ykakxjyipmadvi02c1h8gic"))
-              (patches (search-patches "kdbusaddons-kinit-file-name.patch"))))
+                "14xmrvak95aqc98a6k6ldg1w4g7syx2xng3vgvwj9wzpzr3shp6p"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -661,11 +629,14 @@ many more.")
             ;; look for the kdeinit5 executable in kinit's store directory,
             ;; instead of the current application's directory:
             (substitute* "src/kdeinitinterface.cpp"
-              (("@SUBSTITUTEME@") (assoc-ref inputs "kinit")))))
+              (("<< QCoreApplication::applicationDirPath..")
+               (string-append
+                "<< QString::fromUtf8(\"" (assoc-ref inputs "kinit") "/bin\")" )))))
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest")))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Convenience classes for DBus")
     (description "KDBusAddons provides convenience classes on top of QtDBus,
@@ -677,7 +648,7 @@ as well as an API to create KDED modules.")
 (define-public kdnssd
   (package
     (name "kdnssd")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -686,7 +657,7 @@ as well as an API to create KDED modules.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wadknnf472rqg2xnqzs5v23qzqfr336wj6d96yg2ayqm0chbppy"))))
+                "1rs8i75qm1vazy8cnvcv3sha6faf27bav491z8brcs8fiab96dnw"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -726,7 +697,7 @@ infrastructure.")
      `(("pkg-config" ,pkg-config)
        ("extra-cmake-modules" ,extra-cmake-modules)
        ("kdoctools" ,kdoctools)))
-    (home-page "https://apps.kde.org/en/kgraphviewer")
+    (home-page "https://apps.kde.org/kgraphviewer/")
     (synopsis "Graphviz dot graph viewer for KDE")
     (description "KGraphViewer is a Graphviz DOT graph file viewer, aimed to
 replace the other outdated Graphviz tools.")
@@ -735,7 +706,7 @@ replace the other outdated Graphviz tools.")
 (define-public kguiaddons
   (package
     (name "kguiaddons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -744,7 +715,7 @@ replace the other outdated Graphviz tools.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1yndjdhb9zzlhh74xccpys38balm5dma56sx6bwwfrga1phq0g5l"))))
+                "1k88x22f8db90x28fryg6cp239sfs0zrjk18l72v09bg3zc7y1lh"))))
     (build-system qt-build-system)
     ;; TODO: Build packages for the Python bindings.  Ideally this will be
     ;; done for all versions of python guix supports.  Requires python,
@@ -755,7 +726,9 @@ replace the other outdated Graphviz tools.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("qtbase" ,qtbase-5)
-       ("qtx11extras" ,qtx11extras)))
+       ("qtwayland" ,qtwayland)
+       ("qtx11extras" ,qtx11extras)
+       ("wayland" ,wayland)))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Utilities for graphical user interfaces")
     (description "The KDE GUI addons provide utilities for graphical user
@@ -765,7 +738,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.")
 (define-public kholidays
   (package
     (name "kholidays")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -773,18 +746,8 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.")
                     (version-major+minor version) "/"
                     name "-" version ".tar.xz"))
        (sha256
-        (base32 "1rifx51yk24sk578h08s1bwpqb61rnyyks33zpl82lcdnl1ljp26"))))
+        (base32 "1ca51vkmwwrl1fvs2fw16nvpmag2licywwmwjiaapkk8hv6v1gzm"))))
     (build-system cmake-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             ;; blacklist a failing test function TODO: make it pass
-             (with-output-to-file "autotests/BLACKLIST"
-               (lambda _
-                 (display "[testDefaultRegions]\n*\n")))
-             #t)))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("qttools" ,qttools)))
@@ -800,7 +763,7 @@ other special events for a geographical region.")
 (define-public ki18n
   (package
     (name "ki18n")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -809,7 +772,7 @@ other special events for a geographical region.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f952488492sm904i1iwgjp2gc7z07312mlshw4ckh2801y0qclc"))))
+                "0395khchbhp7x4fgb2fwxlpx0mhdvbkgd0v7kwgmm0n4bkn7jphi"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("gettext" ,gettext-minimal)
@@ -818,8 +781,7 @@ other special events for a geographical region.")
      `(("extra-cmake-modules" ,extra-cmake-modules)))
     (inputs
      `(("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtscript" ,qtscript)))
+       ("qtdeclarative" ,qtdeclarative)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -843,7 +805,7 @@ translation scripting.")
 (define-public kidletime
   (package
     (name "kidletime")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -852,7 +814,7 @@ translation scripting.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0vbxs80a8kh2xbxclx8zwl7acynsasa7i0cs171fxr26d0dmmhm5"))))
+                "1m0p602i9c4dmkll3g8flmzq23ywv20rxnvzc1c8bf5kqn6321qp"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -874,7 +836,7 @@ or user activity.")
   ;; plasma-framework which is tier 3.
   (package
     (name "kirigami")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -883,7 +845,7 @@ or user activity.")
                     "kirigami2-" version ".tar.xz"))
               (sha256
                (base32
-                "0akkyif6n9l7hw4cj6nkf1zwgnd7vqi1gyiqmn588rspgl91zf1w"))))
+                "1wvj0nnb1dd1k12arlmlx99gjhk7v2jpw5sgyjka6kkps31nr1zi"))))
     (properties `((upstream-name . "kirigami2")))
     (build-system cmake-build-system)
     (native-inputs
@@ -910,7 +872,7 @@ of applications that follow the Kirigami Human Interface Guidelines.")
 (define-public kitemmodels
   (package
     (name "kitemmodels")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -919,7 +881,7 @@ of applications that follow the Kirigami Human Interface Guidelines.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0x7y5shg2pp490hvmkz81b8j01cha9j1001q34m7pnyf0n3zknzc"))))
+                "1qx78pfbnwsq8nn6fa8qjjc0zn4nwh4dqs0ifb9iaam33cl3kw92"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -961,7 +923,7 @@ model to observers
 (define-public kitemviews
   (package
     (name "kitemviews")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -970,7 +932,7 @@ model to observers
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "04vlmkvc3y5h7cpb6kdv9gha5axxkimhqh44mdg2ncyn4sas6j68"))))
+                "1nrg92nyc39fl1n7k38pa4k8dahwl76wadv0v0ixyh1zx0x4clbg"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -987,7 +949,7 @@ to flat and hierarchical lists.")
 (define-public kplotting
   (package
     (name "kplotting")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -996,7 +958,7 @@ to flat and hierarchical lists.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1wj4n2a8iz9ml1y0012xkpsx3dfp5gl2dn80sifrzvkxjxrhwach"))))
+                "1np6rqrxldnhz82ak291kr87zqccmp9a3v4gvxl0xsm2qnpzxlxz"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1015,7 +977,7 @@ pixel units.")
 (define-public ksyntaxhighlighting
   (package
     (name "ksyntaxhighlighting")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1024,7 +986,7 @@ pixel units.")
                     "syntax-highlighting-" version ".tar.xz"))
               (sha256
                (base32
-                "12jn7lqsp86329spai7n1n8i65nwhxh8gp33wkq543h7w3i2a3jb"))))
+                "148wm3qdjkwzvcm51x3cppsxl4rylbjyjp1pfh6545fhikm5nqi6"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1041,9 +1003,6 @@ pixel units.")
            (lambda _
              ;; revert the patch-shebang phase on scripts which are
              ;; in fact test data
-             (substitute* '("autotests/input/test.bash"
-                            "autotests/folding/test.bash.fold")
-               (((which "bash")) "/bin/bash"))
              (substitute* '("autotests/input/highlight.sh"
                             "autotests/folding/highlight.sh.fold")
                (((which "sh")) " /bin/sh")) ;; space in front!
@@ -1089,7 +1048,7 @@ protocols used in KDE Plasma.")
 (define-public kwayland
   (package
     (name "kwayland")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1098,24 +1057,27 @@ protocols used in KDE Plasma.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0hrpbfzixjpnfy9q5x66q1fff0p7n80rrs127zzdv68pyi6456ry"))))
+                "03lrlprvc3bj43f0l0dirg93l7amzlcx4ajaqh9h54g030qanfmc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("qtbase" ,qtbase-5)
+     `(("plasma-wayland-protocol" ,plasma-wayland-protocols)
+       ("qtbase" ,qtbase-5)
        ("qtwayland" ,qtwayland)
        ("wayland" ,wayland)
        ("wayland-protocols" ,wayland-protocols)))
     (arguments
-     `(#:tests? #f ; FIXME tests require weston to run
-                   ; weston requires wayland flags in mesa
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "XDG_RUNTIME_DIR" "/tmp")
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (setenv "XDG_RUNTIME_DIR" (getcwd))
+             (setenv "QT_QPA_PLATFORM" "offscreen")
+             (when tests? ;; One test fails.
+               ;; kwayland-testXdgForeign
+               (invoke "ctest" "-E" "kwayland-testWaylandRegistry"))
              #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt-style API to interact with the wayland client and server")
@@ -1130,7 +1092,7 @@ represented by a QPoint or a QSize.")
 (define-public kwidgetsaddons
   (package
     (name "kwidgetsaddons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1139,7 +1101,7 @@ represented by a QPoint or a QSize.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03l37lh219np7pqfa56r2v7n5s5xg4rjq005qng4b5izd95ri56j"))))
+                "00gv9lxiah6yg8lxjd0md0zyvhi7zc9s6fg14jfh0cb1i0zrn49b"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1167,7 +1129,7 @@ configuration pages, message boxes, and password requests.")
 (define-public kwindowsystem
   (package
     (name "kwindowsystem")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1176,7 +1138,7 @@ configuration pages, message boxes, and password requests.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0a68cj0bsl5a9sxfd969khznycrn9p6grp2b08hqacxqdknzs0wh"))))
+                "0rxmpawp5g46xp5irk1gcdq6n2y9r9vlx1dm5gpqhcfh7gr64ja2"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1203,16 +1165,18 @@ configuration pages, message boxes, and password requests.")
                  (display "[testClientMachine]\n*\n"))) ;; requires network
              #t))
          (replace 'check
-           (lambda _
+           (lambda* (#:key tests? #:allow-other-keys)
              ;; The test suite requires a running window anager
-             (setenv "XDG_RUNTIME_DIR" "/tmp")
-             (system "Xvfb :1 -ac -screen 0 640x480x24 &")
-             (setenv "DISPLAY" ":1")
-             (sleep 5) ;; Give Xvfb a few moments to get on it's feet
-             (system "openbox &")
-             (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+             (when tests?
+               (setenv "XDG_RUNTIME_DIR" "/tmp")
+               (system "Xvfb :1 -ac -screen 0 640x480x24 &")
+               (setenv "DISPLAY" ":1")
+               (sleep 5) ;; Give Xvfb a few moments to get on it's feet
+               (system "openbox &")
+               (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "KDE access to the windowing system")
     (description "KWindowSystem provides information about and allows
@@ -1230,7 +1194,7 @@ lower level classes for interaction with the X Windowing System.")
 (define-public modemmanager-qt
   (package
     (name "modemmanager-qt")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1239,7 +1203,7 @@ lower level classes for interaction with the X Windowing System.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0ydq1l823jgp0yrrpqi1zdk5dsg65ydk1x082qwsa9a0vzs0np3x"))))
+                "1ag98r2hhd93gki3dvlz48sgqc2805b0p0w4m0az0czvxnclg0rk"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1254,9 +1218,11 @@ lower level classes for interaction with the X Windowing System.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt wrapper for ModemManager DBus API")
     (description "ModemManagerQt provides access to all ModemManager features
@@ -1268,7 +1234,7 @@ messages.")
 (define-public networkmanager-qt
   (package
     (name "networkmanager-qt")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1277,7 +1243,7 @@ messages.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1h2kdw5vs7mn3n7bvqwm36a48ra9iap6384kanz14zjbankj04c1"))))
+                "0a4sxcm88mfry1sjc4r0qx5aqmbb61ghmd912wqk19nx18qgkm5y"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1293,9 +1259,11 @@ messages.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt wrapper for NetworkManager DBus API")
     (description "NetworkManagerQt provides access to all NetworkManager
@@ -1307,7 +1275,7 @@ which are used in DBus communication.")
 (define-public oxygen-icons
   (package
     (name "oxygen-icons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1316,7 +1284,7 @@ which are used in DBus communication.")
                     name "5" "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rjsnz0g7zyzgii26sk370adb6jcyvr2lm8qi23fvqimifngqm2c"))))
+                "0mpxv2m6nkl1cp3p0xgpm916k2ykvkyk0x0ka4azs8iyy0anc36m"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1332,7 +1300,7 @@ which are used in DBus communication.")
 (define-public prison
   (package
     (name "prison")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -1340,7 +1308,7 @@ which are used in DBus communication.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1qflivvb593d2npc218xkdn3w5zvl7x8v1b52ydnggsxzbgkqvb4"))))
+        (base32 "0vb8ny4za37v4nmcy9qw8zz5zcr46clci9lg22s84f26l4vlcs87"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1357,14 +1325,14 @@ provides uniform access to generation of barcodes with data.")
 (define-public pulseaudio-qt
   (package
     (name "pulseaudio-qt")
-    (version "1.2")
+    (version "1.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.kde.org/stable/pulseaudio-qt"
+              (uri (string-append "mirror://kde/stable/pulseaudio-qt"
                                   "/pulseaudio-qt-" version ".tar.xz"))
               (sha256
                (base32
-                "1i0ql68kxv9jxs24rsd3s7jhjid3f2fq56fj4wbp16zb4wd14099"))))
+                "1i4yb0v1mmhih8c2i61hybg6q60qys3pc5wbjb7a0vwl1mihgsxw"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1388,7 +1356,7 @@ libpulse.")
 (define-public qqc2-desktop-style
   (package
     (name "qqc2-desktop-style")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1397,7 +1365,7 @@ libpulse.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1n47cl082zqdw6ykil04rw6bws4fn1m8wfx4vxv1aqj9warbdks3"))))
+                "02i4rg5gf7i63lm4f0afm9n3lgzvklpbg43d0zcsdwzph386baq7"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1422,7 +1390,7 @@ feel.")
 (define-public solid
   (package
     (name "solid")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1431,15 +1399,16 @@ feel.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0alng7ciw6xji0s2zrk8dsx1p0p9shrrfzl8wnkwygc5chnhysz7"))))
+                "0zmcc4ryp4j93999f0fgwvchs4gycbynsz0wghrhdqkfhsjvhqra"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest")))))))
     (native-inputs
      `(("bison" ,bison)
        ("dbus" ,dbus)
@@ -1461,7 +1430,7 @@ system.")
 (define-public sonnet
   (package
     (name "sonnet")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1470,7 +1439,7 @@ system.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0b88h5fw1n8zyrg0vq3lj2jbjjyh0mk64lj6ab3643kxzqxbn30w"))))
+                "1cc9j9ks33s6amr01a7ywnqiqvm498vlmqqva40ddvkfq1azxmhs"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1490,7 +1459,7 @@ ASpell and HUNSPELL.")
 (define-public threadweaver
   (package
     (name "threadweaver")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1499,7 +1468,7 @@ ASpell and HUNSPELL.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y1q0wy073lf11g4jrp4bdw4kpj4ibqfscsxj6zlh8ban9zlf389"))))
+                "1gqpzv2ijw66fpvaqv66xsglh19lv0k4j9i505xmmkzlyddbhkch"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1520,7 +1489,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way."
 (define-public kactivities
   (package
     (name "kactivities")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1529,7 +1498,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way."
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1whsp0f87lrcn61s9rfhy0aj68hm6zgfa38mq6frlkcjksi0z1vn"))))
+                "1ynngg9x70dwcnn4ncf7h63hj5p187d4mk1aqriax0iz21mfjmp9"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1565,7 +1534,7 @@ with other frameworks.")
 (define-public kauth
   (package
     (name "kauth")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1574,7 +1543,7 @@ with other frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0nmdz7ra3hpg0air4lfkzilv7cwx3zxs29k7sh8l3i1fs3qpjwxm"))))
+                "1gbq487v2nn0zyis6xdvsn0mz7yy131vafq76jdi7b6nyh5c1lgi"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -1599,9 +1568,10 @@ with other frameworks.")
                (("@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
                 "${KDE_INSTALL_LIBEXECDIR}"))))
          (replace 'check
-           (lambda _
+           (lambda* (#:key tests? #:allow-other-keys)
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+             (when tests? (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Execute actions as privileged user")
     (description "KAuth provides a convenient, system-integrated way to offload
@@ -1612,7 +1582,7 @@ utilities.")
 (define-public kcompletion
   (package
     (name "kcompletion")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1621,7 +1591,7 @@ utilities.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1pjgya8wi28jx63hcdi9v5f5487gzbkw2j1iganhd7bhcb8s7zpy"))))
+                "15c9sgdgw6cf5y2jjgjlsxn0p0pxvrmhzcyq05d9fqhy185ng03p"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1640,7 +1610,7 @@ integrated it into your application's other widgets.")
 (define-public kcontacts
   (package
     (name "kcontacts")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1649,7 +1619,7 @@ integrated it into your application's other widgets.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "182ma11z3kqxq3cwy7kwprfqkb9bcmn44w7k9vixbid4pv5wa0lb"))))
+                "02zyirvds572rxbdc47ncs71a66z5hql0vpj8lx1zpr0nnvpvlcv"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1685,7 +1655,7 @@ localized country name to ISO 3166-1 alpha 2 code mapping and vice verca.
 (define-public kcrash
   (package
     (name "kcrash")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1694,7 +1664,7 @@ localized country name to ISO 3166-1 alpha 2 code mapping and vice verca.
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11sy9hrjpvybqi53qjrnncy9mzifrb3vqxi2d12ldjzqyqd8pirp"))))
+                "1l48dn5vqn4lns57v61p1a8r3pklx4xclsa3890pjf6iviqxf22r"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1712,7 +1682,7 @@ application crashes.")
 (define-public kdoctools
   (package
     (name "kdoctools")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1721,7 +1691,7 @@ application crashes.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0g0k83np2xaxk05spf14h5fvzy0n7kbcwx1sa9wjh570f6jx87am"))))
+                "0md5wiv5mv4q63g9ads8d0xg8qxlh91dqgyg66n8abcg56qq83ps"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1769,7 +1739,7 @@ from DocBook files.")
 (define-public kfilemetadata
   (package
     (name "kfilemetadata")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1778,25 +1748,22 @@ from DocBook files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "18n1a5857090a1c1rxzd07sxs652gl6wr3n99sp8rxmvkghn9zsj"))))
+                "1nh4gzprc588q8zfz94j76x3vvf77cnsc30xrs07316726mksw2i"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'disable-failing-test
-           (lambda _
-             ;; Blacklist a failing test-function. FIXME: Make it pass.
-             ;; UserMetaDataWriterTest fails with getxattr("…/writertest.txt")
-             ;; -> EOPNOTSUPP (Operation not supported)
-             (with-output-to-file "autotests/BLACKLIST"
-               (lambda _
-                 (display "[testMimetype]\n*\n")
-                 (display "[test]\n*\n")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; FIXME: Test can't find audio/x-speex mimeinfo
+               ;; (but it can find audio/x-speex+ogg).
+               (invoke "ctest" "-E" "embeddedimagedatatest"))
              #t)))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)
-       ("python-2" ,python-2)))
+       ))
     (inputs
      `(("attr" ,attr)
        ;; TODO: EPub http://sourceforge.net/projects/ebook-tools
@@ -1823,7 +1790,7 @@ by applications to write metadata.")
 (define-public kimageformats
   (package
     (name "kimageformats")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1832,7 +1799,7 @@ by applications to write metadata.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0pk4b725wapzdxv1mm6ddqcl6z8ffcpr32i5vrhrin8awi5gx13s"))))
+                "0c4qq5j6hzz90kh7mmirafglr9l5wck3r67ij436gpmq69ignvmg"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1877,7 +1844,7 @@ formats.")
 (define-public kjobwidgets
   (package
     (name "kjobwidgets")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1886,7 +1853,7 @@ formats.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13kdczzyyh17hf6vlhh4li5bn4yq5bab5xa8mm63r9rynxihgclf"))))
+                "0s0g4dygc6c9p5w7vdk7bninizsdhj5xan351x15b4k0ddgq8sz5"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1905,7 +1872,7 @@ asynchronous jobs.")
 (define-public knotifications
   (package
     (name "knotifications")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1914,7 +1881,7 @@ asynchronous jobs.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "01bn23xw2n53h9nl99lm3cjnqs8s66bmwkzf6fkpg9rzkykizbyc"))))
+                "03zraci1lnzz3d5i97i2m2h4z8xp4fmm28aizk3xipqkgy3q61c3"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1925,11 +1892,12 @@ asynchronous jobs.")
        ("kconfig" ,kconfig)
        ("kcoreaddons" ,kcoreaddons)
        ("kwindowsystem" ,kwindowsystem)
+       ("libcanberra" ,libcanberra)
+       ("libdbusmenu-qt" ,libdbusmenu-qt)
        ("phonon" ,phonon)
        ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
        ("qtspeech" ,qtspeech)
-       ;; TODO: Think about adding dbusmenu-qt5 from
-       ;; https://launchpad.net/libdbusmenu-qt
        ("qtx11extras" ,qtx11extras)))
     (arguments
      `(#:phases
@@ -1939,9 +1907,11 @@ asynchronous jobs.")
              (setenv "HOME" (getcwd))
              #t))
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Desktop notifications")
     (description "KNotification is used to notify the user of an event.  It
@@ -1951,7 +1921,7 @@ covers feedback and persistent events.")
 (define-public kpackage
   (package
     (name "kpackage")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1960,11 +1930,10 @@ covers feedback and persistent events.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03rp7p7i8ihz5wg58gjs638jk7xbszknfiy2j3r979snc57g95mv"))
+                "1dmhj1byxmk407mcz62ydrzzjab6c4da22blkm4f5das79blkdsy"))
               ;; Default to: external paths/symlinks can be followed by a
               ;; package
-              (patches (search-patches "kpackage-allow-external-paths.patch"
-                                       "kpackage-fix-KF5PackageMacros.cmake.patch"))))
+              (patches (search-patches "kpackage-allow-external-paths.patch"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1981,8 +1950,7 @@ covers feedback and persistent events.")
          (add-after 'unpack 'patch
            (lambda _
              ;; Make QDirIterator follow symlinks
-             (substitute* '("src/kpackage/packageloader.cpp"
-                            "src/kpackage/private/packagejobthread.cpp")
+             (substitute* '("src/kpackage/packageloader.cpp")
                (("^\\s*(const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories)(;)" _ a b)
                 (string-append a " | QDirIterator::FollowSymlinks" b))
                (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
@@ -2013,7 +1981,7 @@ were traditional plugins.")
 (define-public kpty
   (package
     (name "kpty")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2022,7 +1990,7 @@ were traditional plugins.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1hp6iilr2asf2269linfazjv4yjg7rsi8wydxx53yyr99r0bgmah"))))
+                "1qd2lj53m0gbpmfilwrcz5v2m735daqlxj2qv1j5m28b3bjwz2li"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2050,7 +2018,7 @@ and communicating with them using a pty.")
 (define-public kunitconversion
   (package
     (name "kunitconversion")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2059,18 +2027,9 @@ and communicating with them using a pty.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0sp4gfzpf40cdi0xnff9sn7b75z88j0589svz4rv77q5m137cgnn"))))
+                "1b5yvs0inr0kj7i4j5yavlxz6n8h3d2wbgw39r2harzxd4xjzz4h"))))
     (build-system cmake-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-a-failing-test-case
-           (lambda _
-             ;; FIXME: Re-enable this test-case. It was committed with the
-             ;; message: "tsan says it's clean, apart from issues in Qt
-             ;; (reported upstream)"
-             (substitute* "autotests/convertertest.cpp"
-               (("const int numThreads = 2") "const int numThreads = 0")))))))
+    (arguments `(#:tests? #f)) ;; Requires network.
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
     (inputs
@@ -2087,7 +2046,7 @@ gallons).")
 (define-public syndication
   (package
     (name "syndication")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2096,7 +2055,7 @@ gallons).")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1n3x8s1z4kd30xirfr07hi87vwhk4rilb5kslcjcgp5n9c0imcpv"))))
+                "1xbs83smgqzk01r7nds6p74v9n1pa0zhlafbbxlj2m226p1zf8bs"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2120,7 +2079,7 @@ between feed formats.")
 (define-public baloo
   (package
     (name "baloo")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2129,7 +2088,7 @@ between feed formats.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cf5pp9hn3pqypwyzh63ksasap3n7qz6n3y2xgb83ss3fra90pjf"))))
+                "0h55hn6klsq19l44qzc95l1r7hx2zr9hr4ysxd8kvcxc02imaswb"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kcoreaddons" ,kcoreaddons)
@@ -2158,17 +2117,6 @@ between feed formats.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             (with-output-to-file "bin/BLACKLIST"
-               (lambda _
-                 ;; Blacklist some failing tests. FIXME: Make them pass.
-                 (display "[testRenameFile]\n*\n")
-                 (display "[testMoveFile]\n*\n")))
-             #t))
          (add-after 'unpack 'remove-failing-test
            (lambda _
              ;; FIXME: kinotifytest broke in 5.70.0 with commit 73183acf00 and
@@ -2181,9 +2129,12 @@ between feed formats.")
                 (string-append all " AND NOT TRUE")))
              #t))
          (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (setenv "HOME" (getcwd))
+               (invoke "dbus-launch" "ctest"))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "File searching and indexing")
     (description "Baloo provides file searching and indexing.  It does so by
@@ -2194,7 +2145,7 @@ maintaining an index of the contents of your files.")
 (define-public kactivities-stats
   (package
     (name "kactivities-stats")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2203,7 +2154,7 @@ maintaining an index of the contents of your files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cnfdnxkw9hwbqdzdygp2vzwxqwqhxyipzwdcgar0clgnf7zi7wx"))))
+                "1n7jzbfwgwclnrnssxm180fis74qp3v9nximhc0l8fmb8ac1f106"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2224,7 +2175,7 @@ by which applications, and what documents have been linked to which activity.")
 (define-public kbookmarks
   (package
     (name "kbookmarks")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2233,7 +2184,7 @@ by which applications, and what documents have been linked to which activity.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1i5vcyvyc9whmflbcg2kc562ch93yscfic1c1n9z347g26jmgras"))))
+                "0klws0psdq9vx09p38ckki7aqbdkcns1smk8ckj79krpsjv8q9nx"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kwidgetsaddons" ,kwidgetsaddons)))
@@ -2267,7 +2218,7 @@ using the XBEL format.")
 (define-public kcmutils
   (package
     (name "kcmutils")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2276,7 +2227,7 @@ using the XBEL format.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08f4yr546brl1dppp0khvsw9ihmh9a7rp505913pdhi0sklaiimz"))))
+                "09pcif2gmkbhwqb8cxfs89nw81wdpdsd4a2n7xdm1xz6lpwwmk1h"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfigwidgets" ,kconfigwidgets)
@@ -2296,6 +2247,10 @@ using the XBEL format.")
                ;; print plugin name when loading fails
                (("^\\s*(qWarning\\(\\) << \"Error loading) (plugin:\")( << loader\\.errorString\\(\\);)" _ a b c)
                 (string-append a " KCM plugin\" << mod.service()->library() << \":\"" c)))
+             #t))
+         (add-before 'check 'check-setup
+           (lambda _
+             (setenv "QT_QPA_PLATFORM" "offscreen")
              #t)))))
     (inputs
      `(("kauth" ,kauth)
@@ -2321,7 +2276,7 @@ KCModules can be created with the KConfigWidgets framework.")
 (define-public kconfigwidgets
   (package
     (name "kconfigwidgets")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2330,7 +2285,7 @@ KCModules can be created with the KConfigWidgets framework.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "195dw7nyr3fp78y3vfnyjh0hwgwk46f80wdcm8dck5rkscl3v9xz"))))
+                "18m3nqlp87am2w8my4y933ck9k3cs5q62nkhbp8ngaavw8cfbd84"))))
     (build-system qt-build-system)
     (propagated-inputs
      `(("kauth" ,kauth)
@@ -2339,14 +2294,14 @@ KCModules can be created with the KConfigWidgets framework.")
        ("kwidgetsaddons" ,kwidgetsaddons)))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)
        ("kdoctools" ,kdoctools)))
     (inputs
      `(("kcoreaddons" ,kcoreaddons)
        ("kguiaddons" ,kguiaddons)
        ("ki18n" ,ki18n)
        ;; todo: PythonModuleGeneration
-       ("qtbase" ,qtbase-5)
-       ("qttools" ,qttools)))
+       ("qtbase" ,qtbase-5)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -2368,7 +2323,7 @@ their settings.")
 (define-public kdeclarative
   (package
     (name "kdeclarative")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2377,7 +2332,7 @@ their settings.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vq9pkrb0zsphi2sfx7cyy1kb6pklzjkmqdf5202z8vydlkc4549"))))
+                "0zx4alsqk3vqfgyi6x7v2mcar92j3swmg0ms0b9mjl95bvpgi4k7"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -2388,22 +2343,17 @@ their settings.")
        ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      `(("kauth" ,kauth)
-       ("kbookmarks" ,kbookmarks)
-       ("kcodecs" ,kcodecs)
-       ("kcompletion" ,kcompletion)
-       ("kconfigwidgets" ,kconfigwidgets)
        ("kcoreaddons" ,kcoreaddons)
        ("kglobalaccel" ,kglobalaccel)
        ("kguiaddons" ,kguiaddons)
        ("kiconthemes" ,kiconthemes)
        ("kio" ,kio)
-       ("kitemviews" ,kitemviews)
        ("ki18n" ,ki18n)
        ("kjobwidgets" ,kjobwidgets)
+       ("knotifications" ,knotifications)
        ("kservice" ,kservice)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
-       ("kxmlgui" ,kxmlgui)
        ("libepoxy" ,libepoxy)
        ("qtbase" ,qtbase-5)
        ("qtdeclarative" ,qtdeclarative)
@@ -2430,7 +2380,7 @@ that offer bindings to some of the Frameworks.")
 (define-public kded
   (package
     (name "kded")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2439,7 +2389,7 @@ that offer bindings to some of the Frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0zqd33vy4ny7g9as3bhd75qi1chz1nlqq133pgw8kjanvghwwnk9"))))
+                "18dw1dd2lmwsh04yan1q72c5lzcgzm9kig1rqag3rg81h7pclsr5"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2449,7 +2399,6 @@ that offer bindings to some of the Frameworks.")
        ("kcrash" ,kcrash)
        ("kdbusaddons" ,kdbusaddons)
        ("kdoctools" ,kdoctools)
-       ("kinit" ,kinit)
        ("kservice" ,kservice)
        ("qtbase" ,qtbase-5)))
     (home-page "https://community.kde.org/Frameworks")
@@ -2463,7 +2412,7 @@ started on demand.")
 (define-public kdesignerplugin
   (package
     (name "kdesignerplugin")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2472,7 +2421,7 @@ started on demand.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0dr6gcag2yzx8fvxis4x403jrcisywds95cywmiyz3pb5727cak2"))))
+                "12rckqvg6w5cycvmxbrkvxi7ysfk6bqk3yi1ik4ryqh4x5dz2am9"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2481,20 +2430,7 @@ started on demand.")
      `(("kconfig" ,kconfig)
        ("kcoreaddons" ,kcoreaddons)
        ("kdoctools" ,kdoctools)
-       ("qtbase" ,qtbase-5)
-       ;; optional:
-       ("kcompletion" ,kcompletion)
-       ("kconfigwidgets" ,kconfigwidgets)
-       ("kiconthemes" ,kiconthemes)
-       ("kitemviews" ,kitemviews)
-       ("kio" ,kio)
-       ("kplotting" ,kplotting)
-       ("ktextwidgets" ,ktextwidgets)
-       ("kdewebkit" ,kdewebkit)
-       ("kwidgetsaddons" ,kwidgetsaddons)
-       ("kxmlgui" ,kxmlgui)
-       ("qtwebkit" ,qtwebkit)
-       ("sonnet" ,sonnet)))
+       ("qtbase" ,qtbase-5)))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Integrating KDE frameworks widgets with Qt Designer")
     (description "This framework provides plugins for Qt Designer that allow it
@@ -2506,7 +2442,7 @@ ini-style description files.")
 (define-public kdesu
   (package
     (name "kdesu")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2515,7 +2451,7 @@ ini-style description files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "17k29g7jwgqj5xdmr509438b9sq65zx8khdr4viybjf5xpi0cf5m"))))
+                "05bb3hcb00j1f047q6ngbb8arrp4s03da880sky0slvvicm4ynkr"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kpty" ,kpty)))
@@ -2537,7 +2473,7 @@ with su and ssh respectively.")
 (define-public kdewebkit
   (package
     (name "kdewebkit")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2546,7 +2482,7 @@ with su and ssh respectively.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y9ja3znkvzdbjfs91dwr4cmvl9fk97zpz2lkf0f9zhm2nw6q008"))))
+                "1a578sa6nfp2vycrrhc37idwg47nrrfhv6dp8rfb2gj4vf67bzcv"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2570,7 +2506,7 @@ engine WebKit via QtWebKit.")
 (define-public kemoticons
   (package
     (name "kemoticons")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2579,7 +2515,7 @@ engine WebKit via QtWebKit.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11v1srn3nii4j7cn4f19qvdw96pczwxhanzxlg4a9gf8kmnp5gxr"))))
+                "0iah6ws0x9xnm900rii2k82gf155cbwlnxbz2rxbybp1dmbjbz5y"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kservice" ,kservice)))
@@ -2610,7 +2546,7 @@ emoticons coming from different providers.")
 (define-public kglobalaccel
   (package
     (name "kglobalaccel")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2619,7 +2555,7 @@ emoticons coming from different providers.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0hmqigc8myiwwh7m6y2cm4vn0d3kmrhia179hyb84vpvvn3lm93z"))))
+                "1wk6mxq6ylkvalcwbrkmc0whvkbllkfwnsf4hxz86cnixqb7ybjh"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2630,9 +2566,7 @@ emoticons coming from different providers.")
        ("kcrash" ,kcrash)
        ("kcoreaddons" ,kcoreaddons)
        ("kdbusaddons" ,kdbusaddons)
-       ("kservice" ,kservice)
        ("kwindowsystem" ,kwindowsystem)
-       ("libxcb" ,libxcb)
        ("qtbase" ,qtbase-5)
        ("qtx11extras" ,qtx11extras)
        ("xcb-util-keysyms" ,xcb-util-keysyms)))
@@ -2646,7 +2580,7 @@ window does not need focus for them to be activated.")
 (define-public kiconthemes
   (package
     (name "kiconthemes")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2655,7 +2589,7 @@ window does not need focus for them to be activated.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "09bqpf3drqyfc81vgab9bsh1wm5qbzdwqjlczhax38660nnvh0r9"))))
+                "04chb3y3d6hxwy9f1xdifvl2mbcd8xbh7fv6x5m5vnb1cviwc6j7"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2694,7 +2628,7 @@ in applications using the KDE Frameworks.")
 (define-public kinit
   (package
     (name "kinit")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2703,7 +2637,7 @@ in applications using the KDE Frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1x4whs8p1daxjfp4ksf70rxrv7fx3w17s5wh6446039wzz9bv6ki"))
+                "0435syvhisagbq82qcbims5adq88ivv793gvb3kx03hxhyyx81xs"))
               ;; Use the store paths for other packages and dynamically loaded
               ;; libs
               (patches (search-patches "kinit-kdeinit-extra_libs.patch"
@@ -2764,7 +2698,7 @@ consumption.")
 (define-public kio
   (package
     (name "kio")
-    (version "5.70.1")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2773,7 +2707,7 @@ consumption.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f33jdjjx6k1d5fab35x8xakc4ny9fyfrgkbib60xncc82lz2h5l"))
+                "0sxwrqvfkqm679v99lx50vd2p4bx10pdzrjhxg0njfwww2fxa7mr"))
               (patches (search-patches "kio-search-smbd-on-PATH.patch"))))
     (build-system cmake-build-system)
     (propagated-inputs
@@ -2799,8 +2733,10 @@ consumption.")
        ("kcodecs" ,kcodecs)
        ("kconfigwidgets" ,kconfigwidgets)
        ("kcrash" ,kcrash)
+       ("kded" ,kded)
        ("kdbusaddons" ,kdbusaddons)
        ("kdoctools" ,kdoctools)
+       ("kguiaddons" ,kguiaddons)
        ("kiconthemes" ,kiconthemes)
        ("ki18n" ,ki18n)
        ("knotifications" ,knotifications)
@@ -2810,12 +2746,14 @@ consumption.")
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
        ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
        ("qtscript" ,qtscript)
        ("qtx11extras" ,qtx11extras)
-       ("sonnet" ,sonnet)))
+       ("sonnet" ,sonnet)
+       ("util-linux:lib" ,util-linux "lib") ; libMount
+       ("zlib" ,zlib)))
     (arguments
-     `(#:tests? #f ; FIXME: 41/50 tests fail.
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch
            (lambda _
@@ -2824,12 +2762,31 @@ consumption.")
                (("(^\\s*qCWarning(KIOD_CATEGORY) << \"Error loading plugin:\")( << loader.errorString();)" _ a b)
                 (string-append a "<< name" b)))
              #t))
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "HOME" (getcwd))
+               (setenv "XDG_RUNTIME_DIR" (getcwd))
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (invoke "dbus-launch" "ctest"
+                       "-E" ; FIXME: 16/67 tests fail.
+                       (string-append "(kiocore-jobtest"
+                                      "|fileitemtest"
+                                      "|kiocore-ktcpsockettest"
+                                      "|kiocore-mimetypefinderjobtest"
+                                      "|kiocore-http_jobtest"
+                                      "|kiogui-openurljobtest"
+                                      "|applicationlauncherjob_forkingtest"
+                                      "|applicationlauncherjob_scopetest"
+                                      "|applicationlauncherjob_servicetest"
+                                      "|commandlauncherjob_forkingtest"
+                                      "|commandlauncherjob_scopetest"
+                                      "|commandlauncherjob_servicetest"
+                                      "|kiowidgets-kfileitemactionstest"
+                                      "|kiowidgets-kurifiltertest-colon-separator"
+                                      "|kiowidgets-kurifiltertest-space-separator"
+                                      "|kiofilewidgets-knewfilemenutest)")))
              #t))
          (add-after 'install 'add-symlinks
            ;; Some package(s) (e.g. bluedevil) refer to these service types by
@@ -2839,11 +2796,8 @@ consumption.")
              (let ((kst5 (string-append (assoc-ref outputs "out")
                                         "/share/kservicetypes5/")))
                (symlink (string-append kst5 "kfileitemactionplugin.desktop")
-                        (string-append kst5 "kfileitemaction-plugin.desktop"))))))))
-    ;;(replace 'check
-    ;;  (lambda _
-    ;;    (setenv "DBUS_FATAL_WARNINGS" "0")
-    ;;    (zero? (system* "dbus-launch" "ctest" ".")))))))
+                        (string-append kst5 "kfileitemaction-plugin.desktop")))
+             #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Network transparent access to files and data")
     (description "This framework implements a lot of file management functions.
@@ -2895,7 +2849,7 @@ supported using GroupDAV or CardDAV.")
 (define-public knewstuff
   (package
     (name "knewstuff")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2904,7 +2858,7 @@ supported using GroupDAV or CardDAV.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1hpxj4nawh57w8l64gjplb5mk5fpxiffm4x49kg75m637rxy19fq"))))
+                "0xnilr3r3l36g3j7a2nf2kqmill22ibrr6qfniqcywmcqpnq7x4q"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("attica" ,attica)
@@ -2926,6 +2880,7 @@ supported using GroupDAV or CardDAV.")
        ("ki18n" ,ki18n)
        ("kiconthemes" ,kiconthemes)
        ("kjobwidgets" ,kjobwidgets)
+       ("kpackage" ,kpackage)
        ("ktextwidgets" ,ktextwidgets)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("qtbase" ,qtbase-5)
@@ -2951,7 +2906,7 @@ specification.")
 (define-public knotifyconfig
   (package
     (name "knotifyconfig")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2960,7 +2915,7 @@ specification.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1d483qrgyamwsqvcl70klv1g8744hn8z1h2j3qfydcvlwz8jy0gj"))))
+                "0jd5yzjg625ixm3fbmpafvg6wc69cvppqr0z0y0wzkbzbd930ggh"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2993,7 +2948,7 @@ notifications which can be embedded in your application.")
 (define-public kparts
   (package
     (name "kparts")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3002,7 +2957,7 @@ notifications which can be embedded in your application.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1gfaxr856zrsjxzdxw1sj12s6aib6r703jgf7yvsl8kilg8l2gsk"))))
+                "0jmjyvrskhvnp0w1d9l9k5azwf1ppda97qp2801179x77bgdfbgi"))))
     (build-system qt-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -3047,7 +3002,7 @@ widgets with a user-interface defined in terms of actions.")
 (define-public kpeople
   (package
     (name "kpeople")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3056,7 +3011,7 @@ widgets with a user-interface defined in terms of actions.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1dhvly19pj9lx78g7mc89scibzmra1vhv4zz33222zidkbrf9ryl"))))
+                "002qnfxyrzv9jr1z86ih7v7bprbpfx311s646rbmjc6c9wqa5a1a"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -3083,7 +3038,7 @@ to easily extend the contacts collection.")
 (define-public krunner
   (package
     (name "krunner")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3092,7 +3047,7 @@ to easily extend the contacts collection.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0fhb26vi9z1mky79kq12qq4g4ghz3530cx84n5l3sdgkd6nfsyqf"))))
+                "0ygqfaif9xp30ahrld85xzsgmfmy51560hl8ym8shggwar20kb1s"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("plasma-framework" ,plasma-framework)))
@@ -3134,20 +3089,13 @@ to easily extend the contacts collection.")
                (("//usr/bin\"") (string-append (getcwd) "\"")) ;; multiple path-parts
                (("/bin/ls" path)
                 (string-append (assoc-ref %build-inputs "coreutils") path)))))
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             ;; Blacklist some failing test-functions. FIXME: Make them pass.
-             (with-output-to-file "bin/BLACKLIST"
-               (lambda _
-                 (display "[testMatch]\n*\n")
-                 (display "[testMulti]\n*\n")))
-             #t))
          (replace 'check
-           (lambda _
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "HOME" (getcwd))
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (invoke "dbus-launch" "ctest" "-E"
+                       "(dbusrunnertest|runnermanagersinglerunnermodetest)")))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Framework for Plasma runners")
     (description "The Plasma workspace provides an application called KRunner
@@ -3159,7 +3107,7 @@ typed.")
 (define-public kservice
   (package
     (name "kservice")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3168,7 +3116,7 @@ typed.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0g49p5331f7dl46rvi43akmjm1jx70w9797j6d17jy7z9s9sqikw"))))
+                "0a3fcqhwbzqwy9wy1787p8hr1s1jfmz3y1dk2spiifwk9l668mxn"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -3176,7 +3124,8 @@ typed.")
     (native-inputs
      `(("bison" ,bison)
        ("extra-cmake-modules" ,extra-cmake-modules)
-       ("flex" ,flex)))
+       ("flex" ,flex)
+       ("shared-mime-info" ,shared-mime-info)))
     (inputs
      `(("kcrash" ,kcrash)
        ("kdbusaddons" ,kdbusaddons)
@@ -3184,8 +3133,7 @@ typed.")
        ("ki18n" ,ki18n)
        ("qtbase" ,qtbase-5)))
     (arguments
-     `(#:tests? #f ; FIXME: 6/10 tests fail.
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch
            ;; Adopted from NixOS' patches "qdiriterator-follow-symlinks" and
@@ -3201,12 +3149,13 @@ typed.")
                (("^\\s*QString resolved = QDir\\(dir\\)\\.canonicalPath\\(\\);")
                 "QString resolved = QDir::cleanPath(dir);"))
              #t))
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             #t)))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "HOME" (getcwd))
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               ;; Disable failing tests.
+               (invoke "ctest" "-E" "(kautostarttest|ksycocatest)")))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Plugin framework for desktop services")
     (description "KService provides a plugin framework for handling desktop
@@ -3218,7 +3167,7 @@ types or handled by application specific code.")
 (define-public ktexteditor
   (package
     (name "ktexteditor")
-    (version "5.70.1")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3227,7 +3176,7 @@ types or handled by application specific code.")
                     "ktexteditor-" version ".tar.xz"))
               (sha256
                (base32
-                "0k10yj1ia1w1mznj4g5nvp65p226zcvgwxc85ycn2w8lbkknidf7"))))
+                "13dnwf2zvp3k6xb0ry5a11gaf2j7x2swhq8d689w4gf3awpma7rg"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kparts" ,kparts)))
@@ -3264,19 +3213,18 @@ types or handled by application specific code.")
        ("solid" ,solid)
        ("sonnet" ,sonnet)))
     (arguments
-     `(#:tests? #f ; FIXME: 2/54 tests fail: Cannot find fontdirectory qtbase/lib/font
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'setup
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "XDG_DATA_DIRS" ; FIXME build phase doesn't find parts.desktop
                      (string-append (assoc-ref inputs "kparts") "/share"))
              #t))
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests? ;; Maybe locale issues with tests?
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (invoke "ctest" "-E" "(kateview_test|movingrange_test)"))
              #t))
          (add-after 'install 'add-symlinks
            ;; Some package(s) (e.g. plasma-sdk) refer to these service types
@@ -3299,7 +3247,7 @@ library.")
 (define-public ktextwidgets
   (package
     (name "ktextwidgets")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3308,7 +3256,7 @@ library.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1609rlwba674kr9whawk93vb1b14b5ly7wvir7kjyjp4j715f47w"))))
+                "04gmqw8wjf6r8lpsjcsg0925a6b6hnckzy5i9ykvian1kq2d79fr"))))
     (build-system qt-build-system)
     (propagated-inputs
      `(("ki18n" ,ki18n)
@@ -3339,7 +3287,7 @@ It supports rich text as well as plain text.")
 (define-public kwallet
   (package
     (name "kwallet")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3348,7 +3296,7 @@ It supports rich text as well as plain text.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1ps6ywcirv7xcisvwfcpvk53wm7m8y5lrz4nhkm36rizrdglw19r"))))
+                "1a2qiwhf6hwh6qs9x84hz1ryaaqqm8bpg9v29kjy6cq9krn3mwar"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -3381,7 +3329,7 @@ the passwords on KDE work spaces.")
 (define-public kxmlgui
   (package
     (name "kxmlgui")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3390,7 +3338,7 @@ the passwords on KDE work spaces.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0cvzcq2dcz89c0ffhvfb820hfmqa87mfdbjvrqjwdysc9lr8zx8f"))))
+                "1wnss0rjspgih3m2a3faflamf7n681k8sf8pzrcsrvvrzq95n65i"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -3402,6 +3350,7 @@ the passwords on KDE work spaces.")
      `(("attica" ,attica)
        ("kauth" ,kauth)
        ("kcodecs" ,kcodecs)
+       ("kguiaddons" ,kguiaddons)
        ("kcoreaddons" ,kcoreaddons)
        ("kglobalaccel" ,kglobalaccel)
        ("kiconthemes" ,kiconthemes)
@@ -3434,7 +3383,7 @@ descriptions for integrating actions from plugins.")
 (define-public kxmlrpcclient
   (package
     (name "kxmlrpcclient")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3443,7 +3392,7 @@ descriptions for integrating actions from plugins.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cmfv2w9yfi8jhj5nawfz7kw8jbr1k5cr3n5xv3z59pg2vazsx8b"))))
+                "03l5zs4l52f3w01hsk00r8hmnccyy3iw2vhiclvpp6dksmb8yad7"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kio" ,kio)))
@@ -3477,7 +3426,7 @@ setUrl, setUserAgent and call.")
 (define-public plasma-framework
   (package
     (name "plasma-framework")
-    (version "5.70.1")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3486,8 +3435,7 @@ setUrl, setUserAgent and call.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "06cxajsxj62g3c37ssrrcaxb9a12zbyp2kvrjqym329k5vd89272"))
-              (patches (search-patches "plasma-framework-fix-KF5PlasmaMacros.cmake.patch"))))
+                "1y7w4b7jb8rnkfan97yln5w9w68skrmif4wqqba4f9mj6y2dcajb"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kpackage" ,kpackage)
@@ -3521,6 +3469,8 @@ setUrl, setUserAgent and call.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
+       ;; XXX: "undefined reference to `glGetString'" errors occur without libglvnd,
+       ("libglvnd" ,libglvnd)
        ("phonon" ,phonon)
        ("qtbase" ,qtbase-5)
        ("qtdeclarative" ,qtdeclarative)
@@ -3529,14 +3479,17 @@ setUrl, setUserAgent and call.")
        ("qtx11extras" ,qtx11extras)
        ("solid" ,solid)))
     (arguments
-     `(#:tests? #f ; FIXME: 9/15 tests fail.
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "HOME" (getcwd))
+               (setenv "QT_QPA_PLATFORM" "offscreen") ;; These tests fail
+               (invoke "ctest" "-E" (string-append "(plasma-dialogstatetest"
+                                                   "|plasma-iconitemtest"
+                                                   "|plasma-themetest"
+                                                   "|dialognativetest)")))
              #t)))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Libraries, components and tools of Plasma workspaces")
@@ -3548,7 +3501,7 @@ script engines.")
 (define-public purpose
   (package
     (name "purpose")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3557,7 +3510,7 @@ script engines.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1pxlx2hgj42zsisws8f486n8sg0vn5a5mhb85prifwkaw0rqzgah"))))
+                "0ddpm2hm3x1p25hkjzff4vs906n5bkkk4j3myh0gvyqn8accdhsd"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -3573,13 +3526,6 @@ script engines.")
        ("qtdeclarative" ,qtdeclarative)))
     (arguments
      `(#:tests? #f  ;; seem to require network; don't find QTQuick components
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'dont-use-qt515-logic
-           (lambda _
-             (substitute* "src/externalprocess/purposeprocess_main.cpp"
-               ((" 15") " 16"))
-             #t)))
        #:configure-flags '("-DBUILD_TESTING=OFF"))) ; not run anyway
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Offers available actions for a specific purpose")
@@ -3621,7 +3567,7 @@ need.")
 (define-public kde-frameworkintegration
   (package
     (name "kde-frameworkintegration")
-    (version "5.70.0")
+    (version "5.87.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3630,7 +3576,7 @@ need.")
                     "frameworkintegration-" version ".tar.xz"))
               (sha256
                (base32
-                "1lvccvhhkzdv1hw627kw3ds18gfq4bxdhlvh959piqxq5gh9d2n0"))))
+                "1bbgxqgy28abrk2cgzj7k2m18xmkl9kw58dal03pzlmh77br00lb"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3678,7 +3624,7 @@ workspace.")
 (define-public kdelibs4support
   (package
     (name "kdelibs4support")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3687,7 +3633,7 @@ workspace.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0imkibjlfc0jshdzr05fz5dy2xmfhvgsfan9b1r35spwsn5qkawx"))))
+        (base32 "17kw76fd97rhdyna3dc7hsajvd8bv9l71qx0xaqn65pvzbndf2jf"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -3699,7 +3645,8 @@ workspace.")
        ("shared-mime-info" ,shared-mime-info)
        ("kjobwidgets" ,kjobwidgets) ;; required for running the tests
        ("strace" ,strace)
-       ("tzdata" ,tzdata-for-tests)))
+       ("tzdata" ,tzdata-for-tests)
+       ("qttools" ,qttools)))
     (propagated-inputs
      ;; These are required to be installed along with this package, see
      ;; lib64/cmake/KF5KDELibs4Support/KF5KDELibs4SupportConfig.cmake
@@ -3736,7 +3683,6 @@ workspace.")
        ("networkmanager-qt" ,networkmanager-qt)
        ("openssl" ,openssl)
        ("qtsvg" ,qtsvg)
-       ("qttools" ,qttools)
        ("qtx11extras" ,qtx11extras)))
     ;; FIXME: Use Guix ca-bundle.crt in etc/xdg/ksslcalist and
     ;; share/kf5/kssl/ca-bundle.crt
@@ -3772,7 +3718,7 @@ workspace.")
                (lambda _
                  (display "[testSmb]\n*\n")))
              ;; kuniqueapptest hangs. FIXME: Make this test pass.
-             (invoke "dbus-launch" "ctest" "."
+             (invoke "dbus-launch" "ctest"
                      "-E" "kstandarddirstest|kuniqueapptest"))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "KDE Frameworks 5 porting aid from KDELibs4")
@@ -3794,7 +3740,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
 (define-public khtml
   (package
     (name "khtml")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3803,7 +3749,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "1jh0g6xv57hyclnh54x0f72lby1gvlisan23y7mzlqf67aky52s5"))))
+        (base32 "1jxpznzw4r8ikx0g5n1fg0qrkllph5cwih4lcvwjn6cqx2ypgn6f"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3845,7 +3791,7 @@ technology and using KJS for JavaScript support.")
 (define-public kjs
   (package
     (name "kjs")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3854,7 +3800,7 @@ technology and using KJS for JavaScript support.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0s3n0pdz59p5v967zrxcas3lb94k5bv9vi8058fi0l20nwwlcgh5"))))
+        (base32 "1ihwhjgk3k2nmyfg2brdjriymm2qi5dgmh47phmb9b2gvzqx6yg8"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3878,7 +3824,7 @@ support.")
 (define-public kjsembed
   (package
     (name "kjsembed")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3887,7 +3833,7 @@ support.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0976faazhxhhi1wpvpcs8hwb2knz0z7j44v3ay3hw73rq4p3bipm"))))
+        (base32 "0j8b637k8vx2qhl3zf6744ywykv6hnfcs2xgsq0i8w5ji0a2jigv"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3907,7 +3853,7 @@ QObjects, so you can script your applications.")
 (define-public kmediaplayer
   (package
     (name "kmediaplayer")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3916,7 +3862,7 @@ QObjects, so you can script your applications.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0lrm4y727nhwaivl37zpmnrwx048gfhyjw19m6q5z9p37lk43jja"))))
+        (base32 "0mrmb7q4wmj8v9ipb9vh4c8scl1mr0frz3yvpc96dyimvb87pp08"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3945,7 +3891,7 @@ KParts instead.")
 (define-public kross
   (package
     (name "kross")
-    (version "5.70.0")
+    (version "5.87.0")
     (source
      (origin
        (method url-fetch)
@@ -3954,7 +3900,7 @@ KParts instead.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "12b527l12rcf421p613ydbacilp9v9iy90ma35w21sdf9a15k675"))))
+        (base32 "1nnyl67b43064y5gvj7ccvzz5481vbaycjhxxzgf4iaj0qm2vpfh"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
diff --git a/gnu/packages/patches/extra-cmake-modules-reproducible-tarballs.patch b/gnu/packages/patches/extra-cmake-modules-reproducible-tarballs.patch
new file mode 100644
index 0000000000..3c3977b683
--- /dev/null
+++ b/gnu/packages/patches/extra-cmake-modules-reproducible-tarballs.patch
@@ -0,0 +1,19 @@
+Fixes 2 non-reproducibility bugs:
+1: root GID in guix can changed, and is embedded in the tarball. this sets it to 0
+2: mtime of some directories set to current time. This sets it to 0 SOURCE_DATE_EPOCH
+
+--- a/kde-modules/KDEPackageAppTemplates.cmake
++++ b/kde-modules/KDEPackageAppTemplates.cmake
+@@ -117,8 +117,8 @@ function(kde_package_app_templates)
+             # Make tar archive reproducible, the arguments are only available with GNU tar
+             add_custom_command(OUTPUT ${_template}
+                 COMMAND ${_tar_executable} ARGS -c
+-                   --exclude .kdev_ignore --exclude .svn --sort=name --mode=go=rX,u+rw,a-s --owner=root
+-                   --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0
+-                   --group=root --numeric-owner -j -v -f ${_template} .
++                   --exclude .kdev_ignore --exclude .svn --sort=name --mode=go=rX,u+rw,a-s
++                   --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime
++                   --mtime="@${SOURCE_DATE_EPOCH}" --owner=0 --group=0 --numeric-owner -j -v -f ${_template} .
+                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}
+                 DEPENDS ${_subdirs_entries}
+             )
diff --git a/gnu/packages/patches/kdbusaddons-kinit-file-name.patch b/gnu/packages/patches/kdbusaddons-kinit-file-name.patch
deleted file mode 100644
index ffed88e043..0000000000
--- a/gnu/packages/patches/kdbusaddons-kinit-file-name.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Add placeholder for kinit's store file name.
-
-diff --git a/src/kdeinitinterface.cpp b/src/kdeinitinterface.cpp
-index 22fa5e5..3d40937 100644
---- a/src/kdeinitinterface.cpp
-+++ b/src/kdeinitinterface.cpp
-@@ -52,7 +52,7 @@ void KDEInitInterface::ensureKdeinitRunning()
-     // If not found in system paths, search other paths
-     if (srv.isEmpty()) {
-         const QStringList searchPaths = QStringList()
--            << QCoreApplication::applicationDirPath() // then look where our application binary is located
-+            << QString::fromUtf8("@SUBSTITUTEME@/bin") // using QStringLiteral would be more efficient, but breaks guix store reference detection.
-             << QLibraryInfo::location(QLibraryInfo::BinariesPath); // look where exec path is (can be set in qt.conf)
-         srv = QStandardPaths::findExecutable(QStringLiteral("kdeinit5"), searchPaths);
-         if (srv.isEmpty()) {
diff --git a/gnu/packages/patches/kinit-kdeinit-extra_libs.patch b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
index 1271f3df7d..b27c6ed535 100644
--- a/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
+++ b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
@@ -21,27 +21,6 @@ pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch
  #endif
  };
  #endif
-@@ -1533,20 +1531,6 @@ static int initXconnection()
- }
- #endif
- 
--#ifndef Q_OS_OSX
--// Find a shared lib in the lib dir, e.g. libkio.so.
--// Completely unrelated to plugins.
--static QString findSharedLib(const QString &lib)
--{
--    QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/") + lib;
--    if (QFile::exists(path)) {
--        return path;
--    }
--    // We could also look in LD_LIBRARY_PATH, but really, who installs the main libs in different prefixes?
--    return QString();
--}
--#endif
--
- extern "C" {
- 
-     static void secondary_child_handler(int)
 @@ -1673,7 +1673,7 @@
  #if defined(Q_OS_UNIX) && !defined(Q_OS_OSX)
      if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) {
diff --git a/gnu/packages/patches/kinit-kdeinit-libpath.patch b/gnu/packages/patches/kinit-kdeinit-libpath.patch
index 6382e8804b..bf87f5011e 100644
--- a/gnu/packages/patches/kinit-kdeinit-libpath.patch
+++ b/gnu/packages/patches/kinit-kdeinit-libpath.patch
@@ -1,19 +1,18 @@
-Search libraries in GUIX_KF5INIT_LIB_PATH.
+Search libraries in KDEINIT5_LIBRARY_PATH.
 
 Based on an idea by NixOs
 pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch
 
 ===================================================================
---- kinit-5.32.0/src/kdeinit/kinit.cpp.orig	2017-10-22 21:02:20.908765455 +0200
-+++ kinit-5.32.0/src/kdeinit/kinit.cpp	2017-10-22 21:03:25.312818248 +0200
-@@ -623,20 +623,18 @@
-             if (libpath_relative) {
-                 // NB: Because Qt makes the actual dlopen() call, the
+diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
+--- a/src/kdeinit/kinit.cpp
++++ b/src/kdeinit/kinit.cpp
+@@ -614,15 +614,12 @@ static pid_t launch(int argc, const char *_name, const char *args,
                  //     RUNPATH of kdeinit is *not* respected - see
                  //     https://sourceware.org/bugzilla/show_bug.cgi?id=13945
                  //     - so we try hacking it in ourselves
 -                QString install_lib_dir = QFile::decodeName(
--                        CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/");
+-                        CMAKE_INSTALL_PREFIX "/" KDE_INSTALL_LIBDIR "/");
 -                QString orig_libpath = libpath;
 -                libpath = install_lib_dir + libpath;
 -                l.setFileName(libpath);
@@ -21,17 +20,15 @@ pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch
 -                    libpath = orig_libpath;
 -                    l.setFileName(libpath);
 -                    l.load();
--                }
-+                // Try to load the library relative to the active profiles.
 +                QByteArrayList profiles = qgetenv("KDEINIT5_LIBRARY_PATH").split(':');
 +                for (const QByteArray &profile: profiles) {
 +                    if (!profile.isEmpty()) {
 +                        l.setFileName(QFile::decodeName(profile) + QStringLiteral("/") + libpath);
 +                        if (l.load()) break;
 +                    }
-+		}
+                 }
              } else {
                  l.load();
-             }
-             if (!l.isLoaded()) {
-                 QString ltdlError(l.errorString());
+-- 
+2.33.0
+
diff --git a/gnu/packages/patches/kio-search-smbd-on-PATH.patch b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
index 55535ffa11..5118c9a361 100644
--- a/gnu/packages/patches/kio-search-smbd-on-PATH.patch
+++ b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
@@ -1,30 +1,24 @@
-Adopted from NixOS
-pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
+From af54a2a37655df26a33bc6783cb472c38f65322f Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 10:31:12 -0500
+Subject: [PATCH 1/2] Remove impure smbd search path
 
-===================================================================
---- kio-5.17.0.orig/src/core/ksambashare.cpp
-+++ kio-5.17.0/src/core/ksambashare.cpp
-@@ -67,13 +67,18 @@ KSambaSharePrivate::~KSambaSharePrivate(
- 
+---
+ src/core/ksambashare.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/ksambashare.cpp b/src/core/ksambashare.cpp
+index e810ce4..7cfb4e6 100644
+--- a/src/core/ksambashare.cpp
++++ b/src/core/ksambashare.cpp
+@@ -61,7 +61,7 @@ KSambaSharePrivate::~KSambaSharePrivate()
  bool KSambaSharePrivate::isSambaInstalled()
  {
--    if (QFile::exists(QStringLiteral("/usr/sbin/smbd"))
--            || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))) {
--        return true;
-+    const QByteArray pathEnv = qgetenv("PATH");
-+    if (!pathEnv.isEmpty()) {
-+        QLatin1Char pathSep(':');
-+        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
-+        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
-+            it->append(QStringLiteral("/smbd"));
-+            if (QFile::exists(*it)) {
-+                return true;
-+            }
-+        }
+     const bool daemonExists =
+-        !QStandardPaths::findExecutable(QStringLiteral("smbd"), {QStringLiteral("/usr/sbin/"), QStringLiteral("/usr/local/sbin/")}).isEmpty();
++        !QStandardPaths::findExecutable(QStringLiteral("smbd")).isEmpty();
+     if (!daemonExists) {
+         qCDebug(KIO_CORE_SAMBASHARE) << "KSambaShare: Could not find smbd";
      }
- 
--    //qDebug() << "Samba is not installed!";
--
-     return false;
- }
- 
+--
+2.30.1
diff --git a/gnu/packages/patches/kpackage-allow-external-paths.patch b/gnu/packages/patches/kpackage-allow-external-paths.patch
index c1c9efde7f..fc5f5bbc02 100644
--- a/gnu/packages/patches/kpackage-allow-external-paths.patch
+++ b/gnu/packages/patches/kpackage-allow-external-paths.patch
@@ -1,13 +1,12 @@
 diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
-index 5aec9fd..b15c933 100644
 --- a/src/kpackage/package.cpp
 +++ b/src/kpackage/package.cpp
-@@ -820,7 +820,7 @@ PackagePrivate::PackagePrivate()
-     : QSharedData(),
-       fallbackPackage(nullptr),
-       metadata(nullptr),
--      externalPaths(false),
-+      externalPaths(true),
-       valid(false),
-       checkedValid(false)
+@@ -858,6 +858,6 @@ PackagePrivate::PackagePrivate()
+     : QSharedData()
+     , fallbackPackage(nullptr)
+     , metadata(nullptr)
+-    , externalPaths(false)
++    , externalPaths(true)
+     , valid(false)
+     , checkedValid(false)
  {
diff --git a/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch b/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch
deleted file mode 100644
index d677f19a70..0000000000
--- a/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 668010ebc9fd84d9dc60f90b9a4ebf3c7054977f Mon Sep 17 00:00:00 2001
-From: Hartmut Goebel <h.goebel@crazy-compilers.com>
-Date: Sun, 25 Oct 2020 20:11:13 +0000
-Subject: [PATCH] Fix build errors if PREFIX is different from ECM's PREFIX.
-
-See <https://bugs.kde.org/424483> for details.
----
- KF5PackageMacros.cmake | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/KF5PackageMacros.cmake b/KF5PackageMacros.cmake
-index f4c1d1d..acd3798 100644
---- a/KF5PackageMacros.cmake
-+++ b/KF5PackageMacros.cmake
-@@ -1,6 +1,5 @@
- 
--find_package(ECM 1.6.0 CONFIG REQUIRED)
--include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
-+include(KDEInstallDirs)
- 
- set(KPACKAGE_RELATIVE_DATA_INSTALL_DIR "kpackage")
- 
--- 
-GitLab
-
diff --git a/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch b/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch
deleted file mode 100644
index bd55d512cf..0000000000
--- a/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ff5ed26f21d304e867ab57781878069567deb23d Mon Sep 17 00:00:00 2001
-From: Hartmut Goebel <h.goebel@crazy-compilers.com>
-Date: Mon, 3 Aug 2020 19:49:58 +0000
-Subject: [PATCH] Fix build errors if PREFIX is different from ECM's PREFIX.
-
-See <https://bugs.kde.org/424483> for details
----
- KF5PlasmaMacros.cmake | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/KF5PlasmaMacros.cmake b/KF5PlasmaMacros.cmake
-index 494b42d56..80b3fd8dd 100644
---- a/KF5PlasmaMacros.cmake
-+++ b/KF5PlasmaMacros.cmake
-@@ -1,6 +1,5 @@
- 
--find_package(ECM 1.6.0 CONFIG REQUIRED)
--include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
-+include(KDEInstallDirs)
- 
- set(PLASMA_RELATIVE_DATA_INSTALL_DIR "plasma")
- set(PLASMA_DATA_INSTALL_DIR "${KDE_INSTALL_DATADIR}/${PLASMA_RELATIVE_DATA_INSTALL_DIR}")
--- 
-GitLab
-
