summary refs log tree commit diff
path: root/gnu/packages/qt.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/qt.scm')
-rw-r--r--gnu/packages/qt.scm1003
1 files changed, 792 insertions, 211 deletions
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 541e1e6c06..7a1d60a2e5 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2018, 2020, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@@ -25,6 +25,8 @@
 ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Yash Tiwari <yasht@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +50,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
@@ -59,17 +62,21 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -140,8 +147,7 @@
          (modify-phases %standard-phases
            (add-after 'unpack 'chdir
              (lambda _
-               (chdir "libqite")
-               #t)))))
+               (chdir "libqite"))))))
       (inputs
        (list qtbase-5 qtmultimedia-5))
       (home-page "https://github.com/Ri0n/qite/")
@@ -183,6 +189,49 @@ window managers, that don't provide Qt integration by themselves.")
     (home-page "https://qt5ct.sourceforge.io/")
     (license license:bsd-2)))
 
+(define-public kvantum
+  (package
+    (name "kvantum")
+    (version "1.0.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/tsujan/Kvantum/releases/download/V"
+                    version "/Kvantum-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0zwxswbgd3wc7al3fhrl5qc0fmmb6mkygywjh1spbqpl7s8jw5s3"))))
+    (build-system qt-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir
+            (lambda _
+              (chdir "Kvantum")))
+          (add-after 'chdir 'patch-style-dir
+            (lambda _
+              (substitute* "style/CMakeLists.txt"
+                (("\\$\\{KVANTUM_STYLE_DIR\\}")
+                 (string-append #$output
+                                "/lib/qt5/plugins/styles"))))))))
+    (native-inputs (list qttools-5))
+    (inputs (list
+             kwindowsystem
+             libx11
+             libxext
+             qtbase-5
+             qtsvg-5
+             qtx11extras))
+    (synopsis "SVG-based theme engine for Qt")
+    (description
+     "Kvantum is an SVG-based theme engine for Qt,
+tuned to KDE and LXQt, with an emphasis on elegance, usability and
+practicality.")
+    (home-page "https://github.com/tsujan/Kvantum")
+    (license license:gpl3+)))
+
 (define-public materialdecoration
   (let ((commit "6a5de23f2e5162fbee39d16f938473ff970a2ec0")
         (revision "9"))
@@ -219,10 +268,10 @@ window managers, that don't provide Qt integration by themselves.")
       (native-inputs
        (list cmake-shared extra-cmake-modules pkg-config))
       (inputs
-       `(("qtbase" ,qtbase-5)
-         ("qtwayland" ,qtwayland)
-         ("wayland" ,wayland)
-         ("xkbcommon" ,libxkbcommon)))
+       (list qtbase-5
+             qtwayland-5
+             wayland
+             libxkbcommon))
       (synopsis "Material Decoration for Qt")
       (description "MaterialDecoration is a client-side decoration for Qt
 applications on Wayland.")
@@ -254,8 +303,7 @@ applications on Wayland.")
          (add-before 'check 'check-setup
            (lambda _
              ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             #t)))))
+             (setenv "QT_QPA_PLATFORM" "offscreen"))))))
     (home-page "https://github.com/steveire/grantlee")
     (synopsis "Libraries for text templating with Qt")
     (description "Grantlee Templates can be used for theming and generation of
@@ -820,6 +868,69 @@ developers using C++ or QML, a CSS & JavaScript like language.")
             (variable "XDG_CONFIG_DIRS")
             (files '("etc/xdg")))))))
 
+(define-public qt3d-5
+  (package
+    (inherit qtbase-5)
+    (name "qt3d")
+    (version "5.15.5")
+    (source (origin
+              (method url-fetch)
+              (uri (qt-urls name version))
+              (sha256
+               (base32
+                "1m3y7d58crn0qgfwkimxcggssn2pbs8nj5b9diwns6rwqg4aqk20"))))
+    (propagated-inputs `())
+    (native-inputs (list perl))
+    (inputs (list mesa qtbase-5 vulkan-headers zlib))
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-before 'configure 'configure-qmake
+                          (lambda* (#:key inputs outputs #:allow-other-keys)
+                            (let* ((tmpdir (string-append (getenv "TMPDIR")))
+                                   (qmake (string-append tmpdir "/qmake"))
+                                   (qt.conf (string-append tmpdir "/qt.conf")))
+                              (symlink (which "qmake") qmake)
+                              (setenv "PATH"
+                                      (string-append tmpdir ":"
+                                                     (getenv "PATH")))
+                              (with-output-to-file qt.conf
+                                (lambda ()
+                                  (format #t "[Paths]
+Prefix=~a
+ArchData=lib/qt5
+Data=share/qt5
+Documentation=share/doc/qt5
+Headers=include/qt5
+Libraries=lib
+LibraryExecutables=lib/qt5/libexec
+Binaries=bin
+Tests=tests
+Plugins=lib/qt5/plugins
+Imports=lib/qt5/imports
+Qml2Imports=lib/qt5/qml
+Translations=share/qt5/translations
+Settings=etc/xdg
+Examples=share/doc/qt5/examples
+HostPrefix=~a
+HostData=lib/qt5
+HostBinaries=bin
+HostLibraries=lib
+
+[EffectiveSourcePaths]
+HostPrefix=~a
+HostData=lib/qt5"
+                                          #$output #$output #$(this-package-input
+                                                               "qtbase")))))))
+                        (replace 'configure
+                          (lambda* (#:key inputs outputs #:allow-other-keys)
+                            (invoke "qmake"
+                                    "QT_BUILD_PARTS = libs tools tests")))
+                        (add-before 'check 'set-display
+                          (lambda _
+                            (setenv "QT_QPA_PLATFORM" "offscreen"))))))
+    (synopsis "Qt module for 3D")
+    (description "The Qt3d module provides classes for displaying 3D.")))
+
 (define-public qt5compat
   (package
     (name "qt5compat")
@@ -1448,14 +1559,16 @@ record media, and manage a collection of media content.  It also contains a
 set of plugins for interacting with pulseaudio and GStreamer.")
     (license (package-license qtbase))))
 
-(define-public qtwayland
+(define-public qtwayland-5
   (package (inherit qtsvg-5)
     (name "qtwayland")
     (version "5.15.5")
     (source (origin
              (method url-fetch)
              (uri (qt-urls name version))
-             (patches (search-patches "qtwayland-gcc-11.patch"))
+             (patches (search-patches "qtwayland-gcc-11.patch"
+                                      "qtwayland-dont-recreate-callbacks.patch"
+                                      "qtwayland-cleanup-callbacks.patch"))
              (sha256
               (base32
                "0yy8qf9kn15iqsxi2r7jbcsc0vsdyfz7bbxmfn4i9qmz1yvg0jgr"))))
@@ -1496,6 +1609,56 @@ set of plugins for interacting with pulseaudio and GStreamer.")
     (description "The Qt Wayland module provides the QtWayland client and
 compositor libraries.")))
 
+(define-public qtwayland
+  (package
+    (name "qtwayland")
+    (version "6.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (qt-urls name version))
+       (sha256
+        (base32 "1w60p1did7awdlzq5k8vnq2ncpskb07cpvz31cbv99bjs6igw53g"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'disable-failing-tests
+                 (lambda _
+                   ;; FIXME: tst_seatv4::animatedCursor() fails here.
+                   ;; See also: <https://bugreports.qt.io/browse/QTBUG-78317>
+                   (substitute* "tests/auto/client/seatv4/tst_seatv4.cpp"
+                     (((string-append
+                        "QVERIFY\\(!cursorSurface\\(\\)->"
+                        "m_waitingFrameCallbacks\\.empty\\(\\)\\);")) "")
+                     (("QTRY_COMPARE\\(bufferSpy\\.count\\(\\), 1\\);") ""))))
+               (add-before 'check 'set-test-environment
+                 (lambda _
+                   ;; Do not fail just because /etc/machine-id is missing.
+                   (setenv "DBUS_FATAL_WARNINGS" "0")
+                   ;; Make Qt render "offscreen", required for tests.
+                   (setenv "QT_QPA_PLATFORM" "offscreen"))))))
+    (native-inputs (list glib perl pkg-config qtdeclarative))
+    (inputs
+     (list fontconfig
+           freetype
+           libx11
+           libxcomposite
+           libxext
+           libxkbcommon
+           libxrender
+           mesa
+           mtdev
+           qtbase
+           vulkan-headers
+           wayland))
+    (synopsis "Qt Wayland module")
+    (description "The Qt Wayland module provides the QtWayland client and
+compositor libraries.")
+    (home-page (package-home-page qtbase))
+    (license (package-license qtbase))))
+
 (define-public qtserialport
   (package (inherit qtsvg-5)
     (name "qtserialport")
@@ -1630,7 +1793,7 @@ application).")
     (native-inputs '())
     (inputs
      (list mesa qtbase-5 qtdeclarative-5 qtwebsockets-5 zlib))
-    (synopsis "QPA plugin for running an application via a browser using
+    (synopsis "QPA plugin for running applications via a browser using
 streamed WebGL commands")
     (description "Qt back end that uses WebGL for rendering. It allows Qt
 applications (with some limitations) to run in a web browser that supports
@@ -1752,9 +1915,22 @@ that helps in Qt development.")))
      (list
       ;; The build system attempts to fetch online resources and fails when
       ;; building the test suite.
-      #:configure-flags #~(list "-DQT_BUILD_TESTS=OFF")))
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=OFF")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'sanity-check
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       ;; This validation exists to validate that the dynamic
+                       ;; library for Clang works as intended; there was
+                       ;; originally problems due to left-overs patching the
+                       ;; value of BUILD_SHARED_LIBS in CLANG-FROM-LLVM that
+                       ;; would cause the following error: "CommandLine Error:
+                       ;; Option 'filter' registered more than once!"
+                       (invoke/quiet (search-input-file outputs "bin/qdoc")
+                                     "--help"))))))
     (native-inputs (list perl qtdeclarative vulkan-headers))
-    (inputs (list libxkbcommon mesa qtbase))
+    ;; Use clang-15, which is built using as a single shared library, which is
+    ;; what the build system of qttools expects.
+    (inputs (list clang-15 libxkbcommon mesa qtbase))
     (home-page (package-home-page qtbase))
     (synopsis "Qt Tools and Designer modules")
     (description "The Qt Tools module provides a set of applications to browse
@@ -1764,6 +1940,27 @@ that helps in Qt development.")
     ;; LICENSES/Qt-GPL-exception-1.0.txt).
     (license (list license:gpl3))))
 
+(define-public qttranslations
+  (package
+    (name "qttranslations")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt-urls name version))
+              (sha256
+               (base32
+                "15yvvxw1vngnjlly6cady05ljamg01qiaqn2vh0xkph855gdbgfp"))))
+    (build-system cmake-build-system)
+    (arguments (list #:tests? #f))
+    (native-inputs (list qtbase qttools))
+    (home-page (package-home-page qtbase))
+    (synopsis "Qt translation catalogs")
+    (description "This package contains the translations for Qt contributed by
+the Qt community.")
+    ;; GPL 3 only with Qt GPL exception 1.0 (see:
+    ;; LICENSES/Qt-GPL-exception-1.0.txt).
+    (license (list license:gpl3))))
+
 (define-public qtscript
   (package (inherit qtsvg-5)
     (name "qtscript")
@@ -1867,12 +2064,12 @@ coloring, and many more.")))
     (native-inputs
      (list perl pkg-config))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("libxrender" ,libxrender)
-       ("sdl2" ,sdl2)
-       ("qtbase" ,qtbase-5)
-       ("qtdeclarative-5" ,qtdeclarative-5)))
+     (list fontconfig
+           freetype
+           libxrender
+           sdl2
+           qtbase-5
+           qtdeclarative-5))
     (synopsis "Qt Gamepad module")
     (description "The Qt Gamepad module is an add-on library that enables Qt
 applications to support the use of gamepad hardware and in some cases remote
@@ -2129,6 +2326,61 @@ using the Enchant spell-checking library.")
     ;; COPYING file specify GPL3, but source code files all refer to GPL2+.
     (license license:gpl2+)))
 
+(define remove-third-party-files
+  #~(begin
+      (define preserved-club
+        ;; Prefix exceptions with ./ for comparison with ftw.
+        (map (cut string-append "./" <>)
+             preserved-third-party-files))
+      (define protected (make-regexp "\\.(gn|gyp)i?$"))
+      (define (empty? dir)
+        (equal? (scandir dir) '("." "..")))
+      (define (third-party? file)
+        (string-contains file "/third_party/"))
+      (define (useless? file)
+        (any (cute string-suffix? <> file)
+             '(".zip" ".so" ".dll" ".exe" ".jar")))
+      (define (parents child)
+        ;; Return all parent directories of CHILD up to and including
+        ;; the closest "third_party".
+        (let loop ((parent (dirname child))
+                   (parents '()))
+          (if (string=? "third_party" (basename parent))
+              (cons parent parents)
+              (loop (dirname parent)
+                    (cons parent parents)))))
+      (define (remove-loudly file)
+        (format #t "deleting ~a...~%" file)
+        (force-output)
+        (delete-file file))
+      (define (delete-unwanted-files child stat flag base level)
+        (match flag
+          ((or 'regular 'symlink 'stale-symlink)
+           (when (third-party? child)
+             (unless (or (member child preserved-club)
+                         (any (cute member <> preserved-club)
+                              (parents child))
+                         (regexp-exec protected child))
+               (remove-loudly child)))
+           (when (and (useless? child) (file-exists? child))
+             (remove-loudly child))
+           #t)
+          ('directory-processed
+           (when (empty? child)
+             (rmdir child))
+           #t)
+          (_ #t)))
+
+      (nftw "." delete-unwanted-files 'depth 'physical)
+
+      ;; Assert that each preserved item is present to catch
+      ;; removals.
+      (for-each (lambda (third-party)
+                  (unless (file-exists? third-party)
+                    (error (format #f "~s does not exist!~%"
+                                   third-party))))
+                preserved-club)))
+
 (define-public qtwebengine-5
   (package
     (inherit qtsvg-5)
@@ -2147,7 +2399,7 @@ using the Enchant spell-checking library.")
                   (srfi srfi-26)
                   (guix build utils)))
        (snippet
-        '(begin
+        #~(begin
            (let ((preserved-third-party-files
                   '("base/third_party/double_conversion"
                     "base/third_party/cityhash"
@@ -2283,54 +2535,7 @@ using the Enchant spell-checking library.")
                     "v8/src/third_party/valgrind"
                     "v8/src/third_party/siphash"
                     "v8/third_party/v8/builtins"
-                    "v8/third_party/inspector_protocol"))
-                 (protected (make-regexp "\\.(gn|gyp)i?$")))
-             (define preserved-club
-               (map (lambda (member)
-                      (string-append "./" member))
-                    preserved-third-party-files))
-             (define (empty? dir)
-               (equal? (scandir dir) '("." "..")))
-             (define (third-party? file)
-               (string-contains file "third_party/"))
-             (define (useless? file)
-               (any (cute string-suffix? <> file)
-                    '(".zip" ".so" ".dll" ".exe" ".jar")))
-             (define (parents child)
-               ;; Return all parent directories of CHILD up to and including
-               ;; the closest "third_party".
-               (let* ((dirs (match (string-split child #\/)
-                              ((dirs ... last) dirs)))
-                      (closest (list-index (lambda (dir)
-                                             (string=? "third_party" dir))
-                                           (reverse dirs)))
-                      (delim (- (length dirs) closest)))
-                 (fold (lambda (dir prev)
-                         (cons (string-append (car prev) "/" dir)
-                               prev))
-                       (list (string-join (list-head dirs delim) "/"))
-                       (list-tail dirs delim))))
-             (define (remove-loudly file)
-               (format #t "deleting ~a...~%" file)
-               (force-output)
-               (delete-file file))
-             (define (delete-unwanted-files child stat flag base level)
-               (match flag
-                 ((or 'regular 'symlink 'stale-symlink)
-                  (when (third-party? child)
-                    (unless (or (member child preserved-club)
-                                (any (cute member <> preserved-club)
-                                     (parents child))
-                                (regexp-exec protected child))
-                      (remove-loudly child)))
-                  (when (and (useless? child) (file-exists? child))
-                    (remove-loudly child))
-                  #t)
-                 ('directory-processed
-                  (when (empty? child)
-                    (rmdir child))
-                  #t)
-                 (_ #t)))
+                    "v8/third_party/inspector_protocol")))
 
              (with-directory-excursion "src/3rdparty"
                ;; TODO: Try removing "gn" too for future versions of qtwebengine-5.
@@ -2339,13 +2544,7 @@ using the Enchant spell-checking library.")
                (with-directory-excursion "chromium"
                  ;; Delete bundled software and binaries that were not explicitly
                  ;; preserved above.
-                 (nftw "." delete-unwanted-files 'depth 'physical)
-
-                 ;; Assert that each preserved item is present to catch removals.
-                 (for-each (lambda (third-party)
-                             (unless (file-exists? third-party)
-                               (error (format #f "~s does not exist!~%" third-party))))
-                           preserved-club)
+                 #$remove-third-party-files
 
                  ;; Use relative header locations instead of hard coded ones.
                  (substitute*
@@ -2393,7 +2592,7 @@ using the Enchant spell-checking library.")
            cups-minimal
            curl
            dbus
-           ffmpeg
+           ffmpeg-4
            fontconfig
            harfbuzz
            icu4c
@@ -2428,16 +2627,16 @@ using the Enchant spell-checking library.")
            pciutils
            protobuf
            pulseaudio
-           qtbase-5
-           qtdeclarative-5
            qtmultimedia-5
-           qtwebchannel-5
            re2
            snappy
            eudev
            valgrind
            vulkan-headers
            xcb-util))
+    (propagated-inputs
+     ;; Required by Qt5WebEngineCoreConfig.cmake.
+     (list qtbase-5 qtdeclarative-5 qtwebchannel-5))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:modules modules '())
@@ -2525,7 +2724,7 @@ and binaries removed, and adds modular support for using system libraries.")
                   (srfi srfi-26)
                   (guix build utils)))
        (snippet
-        '(begin
+        #~(begin
            (let ((preserved-third-party-files
                   '("base/third_party/double_conversion"
                     "base/third_party/cityhash"
@@ -2547,12 +2746,25 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/angle/src/common/third_party/base"
                     "third_party/angle/src/common/third_party/smhasher"
                     "third_party/angle/src/common/third_party/xxhash"
+                    "third_party/angle/src/third_party/trace_event"
+                    "third_party/angle/src/third_party/volk"
                     "third_party/axe-core"
                     "third_party/blink"
                     "third_party/boringssl"
                     "third_party/boringssl/src/third_party/fiat"
                     "third_party/breakpad"
                     "third_party/brotli"
+                    "third_party/catapult"
+                    "third_party/catapult/common/py_vulcanize/third_party/rcssmin"
+                    "third_party/catapult/common/py_vulcanize/third_party/rjsmin"
+                    "third_party/catapult/third_party/polymer"
+                    "third_party/catapult/tracing/third_party/d3/d3.min.js"
+                    "third_party/catapult/tracing/third_party/gl-matrix/dist/gl-matrix-min.js"
+                    "third_party/catapult/tracing/third_party/jpeg-js/jpeg-js-decoder.js"
+                    "third_party/catapult/tracing/third_party/jszip/jszip.min.js"
+                    "third_party/catapult/tracing/third_party/mannwhitneyu/mannwhitneyu.js"
+                    "third_party/catapult/tracing/third_party/oboe/dist"
+                    "third_party/catapult/tracing/third_party/pako/pako.min.js"
                     "third_party/ced"
                     "third_party/cld_3"
                     "third_party/closure_compiler"
@@ -2562,16 +2774,39 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/crc32c"
                     "third_party/dav1d"
                     "third_party/dawn"
+                    "third_party/dawn/third_party/tint"
                     "third_party/devtools-frontend"
+                    "third_party/devtools-frontend/src/front_end/third_party/i18n"
+                    "third_party/devtools-frontend/src/front_end/third_party/acorn"
+                    "third_party/devtools-frontend/src/front_end/third_party/acorn-loose"
+                    "third_party/devtools-frontend/src/front_end/third_party/axe-core"
+                    "third_party/devtools-frontend/src/front_end/third_party/chromium"
+                    "third_party/devtools-frontend/src/front_end/third_party/codemirror"
+                    "third_party/devtools-frontend/src/front_end/third_party/diff"
+                    "third_party/devtools-frontend/src/front_end/third_party/intl-messageformat"
                     "third_party/devtools-frontend/src/front_end/third_party/lighthouse"
+                    "third_party/devtools-frontend/src/front_end/third_party/lit-html"
+                    "third_party/devtools-frontend/src/front_end/third_party/marked"
                     "third_party/devtools-frontend/src/front_end/third_party/wasmparser"
+                    "third_party/devtools-frontend/src/third_party/typescript"
                     "third_party/emoji-segmenter"
-                    "third_party/ffmpeg"
+                    "third_party/fdlibm"
+                    "third_party/ffmpeg/libavcodec/avcodec.h"
+                    "third_party/ffmpeg/libavcodec/packet.h"
+                    "third_party/ffmpeg/libavformat/avformat.h"
+                    "third_party/ffmpeg/libavformat/avio.h"
+                    "third_party/ffmpeg/libavutil/avutil.h"
+                    "third_party/ffmpeg/libavutil/imgutils.h"
+                    "third_party/ffmpeg/libavutil/log.h"
+                    "third_party/ffmpeg/libavutil/mathematics.h"
+                    "third_party/ffmpeg/libavutil/opt.h"
+                    "third_party/freetype"
                     "third_party/googletest"
-                    "third_party/harfbuzz-ng/utils"
+                    "third_party/harfbuzz-ng"
+                    "third_party/highway"
                     "third_party/hunspell"
                     "third_party/iccjpeg"
-                    "third_party/icu"
+                    "third_party/icu" ;TODO: make pdfium use system version
                     "third_party/inspector_protocol"
                     "third_party/jinja2"
                     "third_party/jsoncpp"
@@ -2579,19 +2814,35 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/khronos"
                     "third_party/leveldatabase"
                     "third_party/libaddressinput"
+                    "third_party/libaom"
+                    "third_party/libaom/source/libaom/third_party/fastfeat"
+                    "third_party/libaom/source/libaom/third_party/vector"
+                    "third_party/libaom/source/libaom/third_party/x86inc"
+                    "third_party/libavif"
+                    "third_party/libgav1"
                     "third_party/libgifcodec"
                     "third_party/libjingle_xmpp"
                     "third_party/libjpeg_turbo"
-                    "third_party/libpng"
+                    "third_party/libjxl"
+                    "third_party/libpng" ;TODO: make pdfium use system version
                     "third_party/libsrtp"
                     "third_party/libsync"
                     "third_party/libudev"
+                    "third_party/liburlpattern"
                     "third_party/libvpx"
                     "third_party/libwebm"
-                    "third_party/libwebp"
-                    "third_party/libxml"
-                    "third_party/libxslt"
+                    "third_party/libwebp/src/webp/decode.h"
+                    "third_party/libwebp/src/webp/demux.h"
+                    "third_party/libwebp/src/webp/encode.h"
+                    "third_party/libwebp/src/webp/format_constants.h"
+                    "third_party/libwebp/src/webp/mux.h"
+                    "third_party/libwebp/src/webp/mux_types.h"
+                    "third_party/libwebp/src/webp/types.h"
+                    "third_party/libx11"
+                    "third_party/libxcb-keysyms"
+                    "third_party/libxml/chromium"
                     "third_party/libyuv"
+                    "third_party/lottie"
                     "third_party/lss"
                     "third_party/mako"
                     "third_party/markupsafe"
@@ -2599,18 +2850,27 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/metrics_proto"
                     "third_party/modp_b64"
                     "third_party/nasm"
+                    "third_party/node"
                     "third_party/one_euro_filter"
-                    "third_party/openh264/src/codec/api/svc"
-                    "third_party/opus"
+                    "third_party/openh264"
+                    "third_party/opus/src/include/opus.h"
+                    "third_party/opus/src/include/opus_custom.h"
+                    "third_party/opus/src/include/opus_defines.h"
+                    "third_party/opus/src/include/opus_multistream.h"
+                    "third_party/opus/src/include/opus_types.h"
                     "third_party/ots"
                     "third_party/pdfium"
                     "third_party/pdfium/third_party/agg23"
                     "third_party/pdfium/third_party/base"
+                    "third_party/pdfium/third_party/bigint"
                     "third_party/pdfium/third_party/freetype"
                     "third_party/pdfium/third_party/lcms"
                     "third_party/pdfium/third_party/libopenjpeg20"
+                    "third_party/pdfium/third_party/libpng16"
+                    "third_party/pdfium/third_party/libtiff"
                     "third_party/pdfium/third_party/skia_shared"
                     "third_party/perfetto"
+                    "third_party/perfetto/protos/third_party/chromium"
                     "third_party/pffft"
                     "third_party/ply"
                     "third_party/polymer"
@@ -2626,9 +2886,18 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/skia/third_party/vulkanmemoryallocator"
                     "third_party/smhasher"
                     "third_party/snappy"
+                    "third_party/speech-dispatcher"
                     "third_party/sqlite"
                     "third_party/usb_ids"
                     "third_party/usrsctp"
+                    "third_party/vulkan-deps/glslang"
+                    "third_party/vulkan-deps/spirv-headers"
+                    "third_party/vulkan-deps/spirv-tools"
+                    "third_party/vulkan-deps/vulkan-headers"
+                    "third_party/vulkan-deps/vulkan-loader"
+                    "third_party/vulkan-deps/vulkan-tools"
+                    "third_party/vulkan-deps/vulkan-validation-layers"
+                    "third_party/vulkan_memory_allocator"
                     "third_party/web-animations-js"
                     "third_party/webrtc"
                     "third_party/webrtc/common_audio/third_party/ooura"
@@ -2642,58 +2911,15 @@ and binaries removed, and adds modular support for using system libraries.")
                     "third_party/widevine/cdm/widevine_cdm_common.h"
                     "third_party/widevine/cdm/widevine_cdm_version.h"
                     "third_party/woff2"
-                    "third_party/zlib"
+                    "third_party/wuffs"
+                    "third_party/x11proto"
+                    "third_party/zlib" ;TODO: make pdfium use system version
                     "url/third_party/mozilla"
                     "v8/src/third_party/utf8-decoder"
                     "v8/src/third_party/valgrind"
                     "v8/src/third_party/siphash"
                     "v8/third_party/v8/builtins"
-                    "v8/third_party/inspector_protocol"))
-                 (protected (make-regexp "\\.(gn|gyp)i?$")))
-             (define preserved-club
-               (map (lambda (member)
-                      (string-append "./" member))
-                    preserved-third-party-files))
-             (define (empty? dir)
-               (equal? (scandir dir) '("." "..")))
-             (define (third-party? file)
-               (string-contains file "third_party/"))
-             (define (useless? file)
-               (any (cute string-suffix? <> file)
-                    '(".zip" ".so" ".dll" ".exe" ".jar")))
-             (define (parents child)
-               ;; Return all parent directories of CHILD up to and including
-               ;; the closest "third_party".
-               (let* ((dirs (match (string-split child #\/)
-                              ((dirs ... last) dirs)))
-                      (closest (list-index (lambda (dir)
-                                             (string=? "third_party" dir))
-                                           (reverse dirs)))
-                      (delim (- (length dirs) closest)))
-                 (fold (lambda (dir prev)
-                         (cons (string-append (car prev) "/" dir)
-                               prev))
-                       (list (string-join (list-head dirs delim) "/"))
-                       (list-tail dirs delim))))
-             (define (remove-loudly file)
-               (format #t "deleting ~a...~%" file)
-               (force-output)
-               (delete-file file))
-             (define (delete-unwanted-files child stat flag base level)
-               (match flag
-                 ((or 'regular 'symlink 'stale-symlink)
-                  (when (third-party? child)
-                    (unless (or (member child preserved-club)
-                                (any (cute member <> preserved-club)
-                                     (parents child))
-                                (regexp-exec protected child))
-                      (remove-loudly child)))
-                  (when (and (useless? child) (file-exists? child))
-                    (remove-loudly child)))
-                 ('directory-processed
-                  (when (empty? child)
-                    (rmdir child)))
-                 (_ #t)))
+                    "v8/third_party/inspector_protocol")))
 
              (with-directory-excursion "src/3rdparty"
                (delete-file-recursively "ninja")
@@ -2701,15 +2927,7 @@ and binaries removed, and adds modular support for using system libraries.")
                (with-directory-excursion "chromium"
                  ;; Delete bundled software and binaries that were not
                  ;; explicitly preserved above.
-                 (nftw "." delete-unwanted-files 'depth 'physical)
-
-                 ;; Assert that each preserved item is present to catch
-                 ;; removals.
-                 (for-each (lambda (third-party)
-                             (unless (file-exists? third-party)
-                               (error (format #f "~s does not exist!~%"
-                                              third-party))))
-                           preserved-club)
+                 #$remove-third-party-files
 
                  ;; Use relative header locations instead of hard coded ones.
                  (substitute*
@@ -2744,7 +2962,7 @@ linux/libcurl_wrapper.h"
       #:configure-flags
       ;; Use the CMake ninja generator, otherwise the build fails (see:
       ;; https://bugreports.qt.io/browse/QTBUG-96897).
-      #~(list "-GNinja"                 ;
+      #~(list "-GNinja"
               ;; Manually add the NSS library prefix to the linker
               ;; search path, otherwise it fails to be linked (see:
               ;; https://bugreports.qt.io/browse/QTBUG-105053).
@@ -2759,15 +2977,29 @@ linux/libcurl_wrapper.h"
               "-DQT_FEATURE_webengine_printing_and_pdf=OFF"
               "-DQT_FEATURE_webengine_pepper_plugins=OFF" ;widevine
               "-DQT_FEATURE_system_ffmpeg=ON"
+
               ;; Do not artificially limit codec support; video decoding is
               ;; done by ffmpeg.
               "-DQT_FEATURE_webengine_proprietary_codecs=ON"
+
+              ;; Use system libraries where possible (see src/core/CMakeLists.txt).
               "-DQT_FEATURE_webengine_system_alsa=ON"
+              "-DQT_FEATURE_webengine_system_ffmpeg=ON"
+              "-DQT_FEATURE_webengine_system_freetype=ON"
+              "-DQT_FEATURE_webengine_system_harfbuzz=ON"
               "-DQT_FEATURE_webengine_system_icu=ON"
-              "-DQT_FEATURE_webengine_system_libxml=ON"
+              "-DQT_FEATURE_webengine_system_lcms2=ON"
+              "-DQT_FEATURE_webengine_system_libevent=ON"
+              "-DQT_FEATURE_webengine_system_libjpeg=ON"
               "-DQT_FEATURE_webengine_system_libpci=ON"
               "-DQT_FEATURE_webengine_system_libpng=ON"
+              "-DQT_FEATURE_webengine_system_libwebp=ON"
+              "-DQT_FEATURE_webengine_system_libxml=ON"
+              "-DQT_FEATURE_webengine_system_libxslt=ON"
+              "-DQT_FEATURE_webengine_system_minizip=ON"
+              "-DQT_FEATURE_webengine_system_opus=ON"
               "-DQT_FEATURE_webengine_system_pulseaudio=ON"
+              "-DQT_FEATURE_webengine_system_re2=ON"
               "-DQT_FEATURE_webengine_system_zlib=ON")
       #:phases
       #~(modify-phases %standard-phases
@@ -2825,18 +3057,22 @@ linux/libcurl_wrapper.h"
     (native-inputs
      (modify-inputs (package-native-inputs qtwebengine-5)
        (delete "python2" "python2-six")
+       (replace "node" node-lts)
        (append clang-14
                lld-as-ld-wrapper
-               node-lts
                python-wrapper
+               python-beautifulsoup4
                python-html5lib)))
     (inputs
      (modify-inputs (package-inputs qtwebengine-5)
-       (replace "qtbase" qtbase)
-       (replace "qtdeclarative" qtdeclarative)
        (replace "qtmultimedia" qtmultimedia)
-       (replace "qtwebchannel" qtwebchannel)
+       (replace "harfbuzz" harfbuzz-5)
        (append libxkbfile xkeyboard-config)))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs qtwebengine-5)
+       (replace "qtbase" qtbase)
+       (replace "qtdeclarative" qtdeclarative)
+       (replace "qtwebchannel" qtwebchannel)))
     (native-search-paths
      (list (search-path-specification
             (file-type 'regular)
@@ -2891,8 +3127,7 @@ system libraries.")
                      (string-append source "/" file)
                      (string-append out "/include")))
                   '("SingleApplication"
-                    "singleapplication.h" "singleapplication_p.h"))
-                 #t))))))
+                    "singleapplication.h" "singleapplication_p.h"))))))))
       (inputs
        (list qtbase-5))
       (home-page "https://github.com/itay-grudev/SingleApplication")
@@ -3038,9 +3273,7 @@ module provides support functions to the automatically generated code.")
              (let* ((qtbase (assoc-ref inputs "qtbase"))
                     (qtprinter.h (string-append "\"" qtbase "/include/qt5/QtPrintSupport/qprinter.h\"")))
                (substitute* "sip/QtPrintSupport/qprinter.sip"
-                 (("<qprinter.h>")
-                  qtprinter.h))
-               #t)))
+                 (("<qprinter.h>") qtprinter.h)))))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -3165,8 +3398,7 @@ contain over 620 classes.")
                  (lambda _ (display "
 from pkgutil import extend_path
 __path__ = extend_path(__path__, __name__)
-")))
-               #t))))))
+")))))))))
     (home-page "https://www.riverbankcomputing.com/software/pyqtwebengine/intro")
     (synopsis "Python bindings for QtWebEngine")
     (description
@@ -3234,6 +3466,25 @@ top of the PyQt bindings for Qt.  PyQt-builder is used to build PyQt itself.")
 (PyQt5, PyQt4 and PySide) and additional custom QWidgets.")
     (license license:expat)))
 
+(define-public python-qt.py
+  (package
+    (name "python-qt.py")
+    (version "1.3.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Qt.py" version))
+       (sha256
+        (base32 "07rvfwzjl378j75j2va0c6xylwx16icxa6dycsjgjc329pgpng40"))))
+    (build-system python-build-system)
+    (native-inputs (list python-pyqt))
+    (home-page "https://github.com/mottosso/Qt.py")
+    (synopsis "Abstraction layer for Python Qt bindings")
+    (description
+     "This package provides an abstraction layer on top of the various Qt
+bindings (PySide, PySide2, PyQt4 and PyQt5).")
+    (license license:expat)))
+
 (define-public qscintilla
   (package
     (name "qscintilla")
@@ -3307,8 +3558,7 @@ indicators, code completion and call tips.")
                   (string-append out "/lib")))
                ;; And fix the installed.txt file
                (substitute* "installed.txt"
-                 (("/gnu/store/[^/]+") out)))
-             #t)))))
+                 (("/gnu/store/[^/]+") out))))))))
     (inputs
      `(("qscintilla" ,qscintilla)
        ("python" ,python)
@@ -3336,8 +3586,7 @@ This package provides the Python bindings.")))
                    (match %build-inputs
                      (((names . directories) ...)
                       (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
+                                   directories))))))
     (inputs
      `(("python-pyqt" ,python-pyqt)
        ("python-qscintilla" ,python-qscintilla)))
@@ -3415,8 +3664,7 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
                    (("#include \"qtlockedfile.*\\.cpp\"") "")
                    ;; Unwrap namespace added in the vendoring process.
                    (("QtLP_Private::QtLockedFile")
-                    "QtLockedFile")))
-             #t))))
+                    "QtLockedFile")))))))
       (build-system gnu-build-system)
       (arguments
        `(#:tests? #f                    ; No target
@@ -3440,8 +3688,7 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
                  (("SUBDIRS\\+=examples") ""))
                ;; Fix deprecated functions.
                (substitute* "qtsoap/src/qtsoap.cpp"
-                 (("toAscii") "toUtf8"))
-               #t))
+                 (("toAscii") "toUtf8"))))
            (replace 'configure
              (lambda _
                (for-each (lambda (solution)
@@ -3449,16 +3696,14 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
                              (invoke "./configure" "-library")
                              (invoke "qmake")))
                          '("qtlockedfile" "qtpropertybrowser" "qtservice"
-                           "qtsingleapplication" "qtsoap"))
-               #t))
+                           "qtsingleapplication" "qtsoap"))))
            (replace 'build
              (lambda _
                (for-each (lambda (solution)
                            (with-directory-excursion solution
                              (invoke "make")))
                          '("qtlockedfile" "qtpropertybrowser" "qtservice"
-                           "qtsingleapplication" "qtsoap"))
-               #t))
+                           "qtsingleapplication" "qtsoap"))))
            (replace 'install
              (lambda args
                (for-each (lambda (solution)
@@ -3538,8 +3783,7 @@ that can be only started once per user.
              ;; Remove some incomplete manual pages.
              (for-each delete-file (find-files "doc/man/man3" "^_tmp.*"))
              (mkdir-p man)
-             (copy-recursively "doc/man" man)
-             #t))))))
+             (copy-recursively "doc/man" man)))))))
   (home-page "http://qwt.sourceforge.net")
   (synopsis "Qt widgets for plots, scales, dials and other technical software
 GUI components")
@@ -3672,35 +3916,32 @@ a binding language:
 @end itemize\n")
     (license license:lgpl3)))                    ;version 3 only (+ exception)
 
-;; There have been no public releases yet.
 (define-public qtcolorwidgets
-  (let ((commit "a95f72e935fe9e046061a1d1c3930cbfbcb533e0")
-        (revision "1"))
-    (package
-      (name "qtcolorwidgets")
-      (version (git-version "0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0dkiwlqh2gwhlp78c1fmchj3shl4p9inspcl96ya5aa8mn6kydy8"))))
-      (build-system cmake-build-system)
-      (arguments `(#:tests? #f)) ; There are no tests
-      (native-inputs
-       (list qttools-5))
-      (inputs
-       (list qtbase-5))
-      (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
-      (synopsis "Color management widgets")
-      (description "QtColorWidgets provides a Qt color dialog that is more
+  (package
+    (name "qtcolorwidgets")
+    (version "2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fp7sr5a56bjp2abc6ng331q0bwvk6mf2nxdga81aj6cd9afs22q"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))          ;there are no tests
+    (native-inputs
+     (list qttools-5))
+    (inputs
+     (list qtbase-5))
+    (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
+    (synopsis "Color management widgets")
+    (description "QtColorWidgets provides a Qt color dialog that is more
 user-friendly than the default @code{QColorDialog} and several other
 color-related widgets.")
-      ;; Includes a license exception for combining with GPL2 code.
-      (license license:lgpl3+))))
+    ;; Includes a license exception for combining with GPL2 code.
+    (license license:lgpl3+)))
 
 (define-public qcustomplot
   (package
@@ -3784,7 +4025,7 @@ color-related widgets.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'use-shiboken-dir-only
-            (lambda _ (chdir "sources/shiboken2") #t))
+            (lambda _ (chdir "sources/shiboken2")))
           (add-before 'configure 'make-files-writable-and-update-timestamps
             (lambda _
               ;; The build scripts need to modify some files in
@@ -3795,13 +4036,11 @@ color-related widgets.")
                 (for-each (lambda (file)
                             (make-file-writable file)
                             (utime file circa-1980 circa-1980))
-                          (find-files ".")))
-              #t))
+                          (find-files ".")))))
           (add-before 'configure 'set-build-env
             (lambda _
               (let ((llvm #$(this-package-input "clang-toolchain")))
-                (setenv "CLANG_INSTALL_DIR" llvm)
-                #t))))))
+                (setenv "CLANG_INSTALL_DIR" llvm)))))))
     (home-page "https://wiki.qt.io/Qt_for_Python")
     (synopsis
      "Shiboken generates bindings for C++ libraries using CPython source code")
@@ -3839,7 +4078,7 @@ color-related widgets.")
        ((#:phases p)
         #~(modify-phases #$p
             (replace 'use-shiboken-dir-only
-              (lambda _ (chdir "sources/shiboken6") #t))))
+              (lambda _ (chdir "sources/shiboken6")))))
        ((#:configure-flags flags)
         #~(cons*
            ;; The RUNPATH of shibokenmodule contains the entry in build
@@ -3893,7 +4132,7 @@ color-related widgets.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'go-to-source-dir
-            (lambda _ (chdir "sources/pyside2") #t))
+            (lambda _ (chdir "sources/pyside2")))
           (add-after 'go-to-source-dir 'fix-qt-module-detection
             (lambda _
               ;; Activate qt module support even if it not in the same
@@ -3988,7 +4227,7 @@ generate Python bindings for your C or C++ code.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'go-to-source-dir
-            (lambda _ (chdir "sources/pyside6") #t))
+            (lambda _ (chdir "sources/pyside6")))
           (add-after 'go-to-source-dir 'fix-qt-module-detection
             (lambda _
               (substitute* "cmake/PySideHelpers.cmake"
@@ -4048,7 +4287,7 @@ generate Python bindings for your C or C++ code.")))
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'go-to-source-dir
-            (lambda _ (chdir "sources/pyside2-tools") #t)))))
+            (lambda _ (chdir "sources/pyside2-tools"))))))
     (home-page "https://wiki.qt.io/Qt_for_Python")
     (synopsis
      "Command line tools for PySide2")
@@ -4165,7 +4404,7 @@ data.")
     (native-inputs
       (list pkg-config cmake))
     (inputs
-      (list qtbase-5 coin3D-4))
+      (list qtbase-5 coin3D))
     (home-page "https://github.com/coin3d/soqt")
     (synopsis "Qt GUI component toolkit library for Coin")
     (description "SoQt is a Qt GUI component toolkit library for Coin.  It is
@@ -4225,8 +4464,7 @@ and import their menus over DBus.")
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (invoke "ctest" "-E" ;; These tests try connect to the internet.
-                       "(kdsoap-webcalls|kdsoap-webcalls_wsdl|kdsoap-test_calc)"))
-             #t)))))
+                       "(kdsoap-webcalls|kdsoap-webcalls_wsdl|kdsoap-test_calc)")))))))
     (home-page "https://www.kdab.com/development-resources/qt-tools/kd-soap/")
     (synopsis "Qt SOAP component")
     (description "KD SOAP is a tool for creating client applications for web
@@ -4234,6 +4472,349 @@ services using the XML based SOAP protocol and without the need for a dedicated
 web server.")
     (license (list license:gpl2 license:gpl3))))
 
+(define-public libaccounts-qt
+  (package
+    (name "libaccounts-qt")
+    (version "1.16")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/accounts-sso/libaccounts-qt")
+                    (commit (string-append "VERSION_" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1vmpjvysm0ld8dqnx8msa15hlhrkny02cqycsh4k2azrnijg0xjz"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f                  ;TODO
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'configure
+                 (lambda _
+                   (substitute* "tests/tst_libaccounts.pro"
+                     (("QMAKE_RPATHDIR = \\$\\$\\{QMAKE_LIBDIR\\}")
+                      (string-append "QMAKE_RPATHDIR ="
+                                     #$output "/lib")))
+                   (invoke "qmake"
+                           (string-append "PREFIX=" #$output)
+                           (string-append "LIBDIR=" #$output "/lib")))))))
+    ;; * SignOnQt5 (required version >= 8.55), D-Bus service which performs
+    ;; user authentication on behalf of its clients,
+    ;; <https://gitlab.com/accounts-sso/signond>
+    (native-inputs (list doxygen pkg-config qtbase-5 qttools-5))
+    (inputs (list glib signond libaccounts-glib))
+    (home-page "https://accounts-sso.gitlab.io/")
+    (synopsis "Qt5 bindings for libaccounts-glib")
+    (description
+     "Accounts SSO is a framework for application developers who
+wish to acquire, use and store web account details and credentials.  It
+handles the authentication process of an account and securely stores the
+credentials and service-specific settings.")
+    (license license:lgpl2.1+)))
+
+(define-public libsignon-glib
+  (package
+    (name "libsignon-glib")
+    (version "2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/accounts-sso/libsignon-glib")
+                    (commit (string-append "VERSION_" version))
+                    (recursive? #t)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0gnx9gqsh0hcfm1lk7w60g64mkn1iicga5f5xcy1j9a9byacsfd0"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:tests? #f                  ;TODO: ninja: no work to do.
+           #:imported-modules `((guix build python-build-system)
+                                ,@%meson-build-system-modules)
+           #:modules '(((guix build python-build-system)
+                        #:select (python-version))
+                       (guix build meson-build-system)
+                       (guix build utils))
+           #:configure-flags
+           #~(list "-Dtests=true"
+                   (string-append "-Dpy-overrides-dir="
+                                  #$output "/lib/python"
+                                  (python-version #$(this-package-input
+                                                     "python"))
+                                  "/site-packages/gi/overrides"))))
+    (native-inputs (list dbus
+                         dbus-test-runner
+                         `(,glib "bin")
+                         gobject-introspection
+                         gtk-doc
+                         pkg-config
+                         vala))
+    (inputs (list check signond python python-pygobject))
+    (propagated-inputs (list glib))
+    (home-page "https://accounts-sso.gitlab.io/libsignon-glib/")
+    (synopsis "Single signon authentication library for GLib applications")
+    (description
+     "This package provides single signon authentication library for
+GLib applications.")
+    (license license:lgpl2.1+)))
+
+(define-public packagekit-qt5
+  (package
+    (name "packagekit-qt5")
+    (version "1.0.2")
+    (source (origin
+              (method git-fetch)
+			  (uri (git-reference
+			  (url "https://github.com/hughsie/PackageKit-Qt")
+			  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1d20r503msw1vix3nb6a8bmdqld7fj8k9jk33bkqsc610a2zsms6"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))          ;no test suite
+    (native-inputs (list pkg-config))
+    (inputs (list packagekit qtbase-5))
+    (home-page "https://www.freedesktop.org/software/PackageKit/pk-intro.html")
+    (synopsis "Qt5 bindings for PackageKit")
+    (description "Provides Qt5 bindings to PackageKit which is a DBUS
+abstraction layer that allows the session user to manage packages in
+a secure way.")
+    (license license:lgpl2.1+)))
+
+(define-public signond
+  (package
+    (name "signond")
+    (version "8.61")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/accounts-sso/signond")
+                    (commit (string-append "VERSION_" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0k6saz5spys4a4p6ws0ayrjks2gqdqvz7zfmlhdpz5axha0gbqq4"))))
+    (build-system qt-build-system)
+    (native-inputs (list doxygen pkg-config qtbase-5 qttools-5))
+    (inputs (list dbus glib libaccounts-glib))
+    (arguments
+     (list #:tests? #f                  ; Figure out how to run tests
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'validate-runpath)
+               (replace 'configure
+                 (lambda _
+                   (substitute* "src/signond/signond.pro"
+                     (("/etc/")
+                      (string-append #$output "/etc/")))
+                   (substitute*
+                       '("tests/extensions/extensions.pri"
+                         "tests/signond-tests/mock-ac-plugin/plugin.pro"
+                         "tests/signond-tests/identity-tool.pro"
+                         "tests/signond-tests/mock-ac-plugin/identity-ac-helper.pro"
+                         "tests/libsignon-qt-tests/libsignon-qt-tests.pro"
+                         "tests/signond-tests/signond-tests.pri")
+                     (("QMAKE_RPATHDIR = \\$\\$\\{QMAKE_LIBDIR\\}")
+                      (string-append "QMAKE_RPATHDIR = "
+                                     #$output "/lib:"
+                                     #$output "/lib/signon")))
+                   (invoke "qmake"
+                           (string-append "PREFIX=" #$output)
+                           (string-append "LIBDIR=" #$output "/lib")))))))
+    (home-page "http://accounts-sso.gitlab.io/signond/index.html")
+    (synopsis "Perform user authentication over D-Bus")
+    (description "This package provides a D-Bus service which performs user
+authentication on behalf of its clients.")
+    (license license:lgpl2.1+)))
+
+(define-public signon-plugin-oauth2
+  (package
+    (name "signon-plugin-oauth2")
+    (version "0.25")
+    (home-page "https://gitlab.com/accounts-sso/signon-plugin-oauth2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "VERSION_" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "16aslnyk8jdg03zcg97rp6qzd0gmclj14hyhliksz8jgfz1l0w7c"))))
+    (build-system qt-build-system)
+    (native-inputs (list doxygen pkg-config))
+    (inputs (list signond))
+    (arguments
+     (list #:tests? #f                  ;no tests
+           #:make-flags #~(list (string-append "INSTALL_ROOT=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'configure
+                 (lambda _
+                   (substitute* "common-project-config.pri"
+                     (("-Werror")
+                      ""))
+                   (invoke "qmake"
+                           (string-append "PREFIX=" #$output)
+                           (string-append "LIBDIR=" #$output "/lib")))))))
+    (synopsis "OAuth 2 plugin for signon")
+    (description
+     "This plugin for the Accounts-SSO SignOn daemon handles the OAuth
+1.0 and 2.0 authentication protocols.")
+    (license license:lgpl2.1+)))
+
+(define-public clazy
+  (package
+    (name "clazy")
+    (version "1.11")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/KDE/clazy")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1y0n1jknq566z1rifkgdm1yqb0mw564lp51jidfz7q9w91spijci"))))
+    (build-system cmake-build-system)
+    (native-inputs (list python))
+    (inputs (list clang llvm))
+    (home-page "https://github.com/KDE/clazy/")
+    (synopsis "Qt-oriented static code analyzer")
+    (description "clazy is a compiler plugin which allows @command{clang} to
+understand Qt semantics.  It can emit more than fifty (50) Qt-related compiler
+warnings, ranging from unneeded memory allocations to misuses of the API,
+including @i{fix-its} for automatic refactoring.")
+    (license license:lgpl2.0+)))
+
+(define-public qt-creator
+  (package
+    (name "qt-creator")
+    (version "9.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://download.qt.io/official_releases/qtcreator/"
+                    (version-major+minor version) "/" version
+                    "/qt-creator-opensource-src-" version ".tar.gz"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          (for-each
+                           delete-file-recursively
+                           ;; Remove bundled libraries, where supported.
+                           ;; TODO: package and unbundle litehtml
+                           '("src/libs/3rdparty/yaml-cpp"
+                             "src/shared/qbs/src/shared/qtscript/src/3rdparty"
+                             "tests/unit/unittest/3rdparty"
+                             ;; Marketplace recommends nonfree extensions;
+                             ;; remove it.
+                             "src/plugins/marketplace"))
+                          (substitute* "src/plugins/CMakeLists.txt"
+                            (("add_subdirectory\\(marketplace).*") ""))
+                          (substitute* "src/plugins/plugins.qbs"
+                            ((".*marketplace/marketplace.qbs.*") ""))))
+              (sha256
+               (base32
+                "1adyxs0cnqx14gwzkvh909c52449ia6y87n1r4qf6wwydhch43cs"))))
+    (build-system qt-build-system)
+    (arguments
+     (list
+      #:qtbase qtbase
+      #:configure-flags
+      #~(list "-DWITH_DOCS=ON"
+              "-DBUILD_DEVELOPER_DOCS=ON"
+              "-DCMAKE_VERBOSE_MAKEFILE=ON"
+              "-DWITH_TESTS=ON"
+              ;; Extend the RUNPATH with lib/qtcreator, which contains
+              ;; multiple shared objects.
+              (string-append "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath="
+                             #$output "/lib/qtcreator"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-tests-build
+            (lambda _
+              ;; Add a missing link directive (see:
+              ;; https://bugreports.qt.io/browse/QTCREATORBUG-28434).
+              (substitute* "src/libs/tracing/CMakeLists.txt"
+                (("DEPENDS Utils Qt5::Qml Qt5::Quick")
+                 "DEPENDS Utils Qt5::Quick")
+                (("PUBLIC_DEPENDS Qt5::Widgets")
+                 "PUBLIC_DEPENDS Qt5::Widgets Qt5::Qml"))))
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("src/libs/utils/commandline.cpp"
+                             "src/libs/utils/deviceshell.cpp")
+                (("/bin/sh")
+                 (search-input-file inputs "bin/sh")))
+              (substitute* "src/libs/utils/qtcprocess.cpp"
+                (("/usr/bin/env")
+                 (search-input-file inputs "bin/env")))
+              (substitute* "tests/auto/utils/qtcprocess/tst_qtcprocess.cpp"
+                (("/bin/sh")
+                 (which "sh")))))
+          (add-before 'build 'build-doc
+            (lambda _
+              (invoke "cmake" "--build" "." "--target=docs" "-v")))
+          (add-after 'build-doc 'install-doc
+            (lambda _
+              (invoke "cmake" "--install" "." "--prefix" #$output
+                      "--component=qch_docs")
+              (invoke "cmake" "--install" "." "--prefix" #$output
+                      "--component=html_docs")))
+          (replace 'check
+            ;; Loosely based on .github/workflows/build_cmake.yml.
+            (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (when tests?
+                (invoke "xvfb-run"      ;for the 'renderpass' tests
+                        "ctest" "-j" (if parallel-tests?
+                                         (number->string (parallel-job-count))
+                                         "1")
+                        "--label-exclude" "exclude_from_precheck"
+                        "--exclude-regex" "tst_perfdata"))))
+          (add-after 'qt-wrap 'wrap-bin
+            ;; Make a few well-integrated tools readily available.
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/qtcreator")
+                `("PATH" suffix ,(map (lambda (c)
+                                        (dirname (search-input-file inputs c)))
+                                      '("bin/clang-tidy"
+                                        "bin/clazy-standalone"
+                                        "bin/gdb"
+                                        "bin/valgrind")))))))))
+    (native-inputs
+     (list googletest
+           pkg-config
+           python
+           qttools
+           qttranslations
+           vulkan-headers
+           xvfb-run))
+    (inputs
+     (list bash-minimal
+           coreutils-minimal
+           clang
+           clazy
+           elfutils
+           gdb
+           libxkbcommon
+           llvm
+           qt5compat
+           qtdeclarative
+           qtshadertools
+           qtsvg
+           yaml-cpp
+           valgrind
+           vulkan-loader
+           `(,zstd "lib")))
+    (home-page "https://www.qt.io/")
+    (synopsis "Integrated development environment (IDE) for Qt")
+    (description "Qt Creator is an IDE tailored to the needs of Qt developers.
+It includes features such as an advanced code editor, a visual debugger and a
+@acronym{GUI, Graphical User Interface} designer.")
+    (license license:gpl3+)))           ;with the Qt Company GPL Exception 1.0
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar