summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-08-11 23:36:10 +0200
committerMarius Bakke <marius@gnu.org>2022-08-11 23:36:10 +0200
commit77eb3008e350c069e0ae8df6a91bf0ebdcfc2ac0 (patch)
treeb899e65aa79099be3f4b27dfcd565bb143681211 /gnu
parentf7e8be231806a904e6817e8ab3404b32f2511db2 (diff)
parentb50eaa67642ebc25e9c896f2e700c08610e0a5da (diff)
downloadguix-77eb3008e350c069e0ae8df6a91bf0ebdcfc2ac0.tar.gz
Merge branch 'staging' into core-updates
Diffstat (limited to 'gnu')
-rw-r--r--gnu/artwork.scm4
-rw-r--r--gnu/build/file-systems.scm6
-rw-r--r--gnu/build/marionette.scm9
-rw-r--r--gnu/ci.scm43
-rw-r--r--gnu/home.scm26
-rw-r--r--gnu/home/services.scm14
-rw-r--r--gnu/home/services/ssh.scm8
-rw-r--r--gnu/home/services/xdg.scm25
-rw-r--r--gnu/installer.scm3
-rw-r--r--gnu/installer/parted.scm22
-rw-r--r--gnu/installer/services.scm39
-rw-r--r--gnu/installer/steps.scm32
-rw-r--r--gnu/installer/user.scm7
-rw-r--r--gnu/local.mk37
-rw-r--r--gnu/packages/admin.scm283
-rw-r--r--gnu/packages/algebra.scm73
-rw-r--r--gnu/packages/android.scm30
-rw-r--r--gnu/packages/animation.scm8
-rw-r--r--gnu/packages/aspell.scm11
-rw-r--r--gnu/packages/astronomy.scm229
-rw-r--r--gnu/packages/audio.scm38
-rw-r--r--gnu/packages/aux-files/emacs/guix-emacs.el2
-rw-r--r--gnu/packages/backup.scm28
-rw-r--r--gnu/packages/benchmark.scm2
-rw-r--r--gnu/packages/bioconductor.scm187
-rw-r--r--gnu/packages/bioinformatics.scm295
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/boost.scm8
-rw-r--r--gnu/packages/bootloaders.scm21
-rw-r--r--gnu/packages/c.scm22
-rw-r--r--gnu/packages/check.scm11
-rw-r--r--gnu/packages/chromium.scm14
-rw-r--r--gnu/packages/code.scm5
-rw-r--r--gnu/packages/compression.scm77
-rw-r--r--gnu/packages/connman.scm2
-rw-r--r--gnu/packages/cpp.scm8
-rw-r--r--gnu/packages/cran.scm844
-rw-r--r--gnu/packages/crates-io.scm46
-rw-r--r--gnu/packages/crypto.scm6
-rw-r--r--gnu/packages/databases.scm37
-rw-r--r--gnu/packages/datastructures.scm26
-rw-r--r--gnu/packages/diffoscope.scm8
-rw-r--r--gnu/packages/disk.scm18
-rw-r--r--gnu/packages/display-managers.scm244
-rw-r--r--gnu/packages/django.scm8
-rw-r--r--gnu/packages/djvu.scm2
-rw-r--r--gnu/packages/documentation.scm10
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/education.scm46
-rw-r--r--gnu/packages/electronics.scm4
-rw-r--r--gnu/packages/elf.scm9
-rw-r--r--gnu/packages/emacs-xyz.scm73
-rw-r--r--gnu/packages/emacs.scm5
-rw-r--r--gnu/packages/emulators.scm8
-rw-r--r--gnu/packages/engineering.scm66
-rw-r--r--gnu/packages/fcitx5.scm6
-rw-r--r--gnu/packages/finance.scm224
-rw-r--r--gnu/packages/fonts.scm92
-rw-r--r--gnu/packages/freedesktop.scm133
-rw-r--r--gnu/packages/game-development.scm26
-rw-r--r--gnu/packages/games.scm334
-rw-r--r--gnu/packages/gdb.scm12
-rw-r--r--gnu/packages/geo.scm20
-rw-r--r--gnu/packages/gnome-xyz.scm12
-rw-r--r--gnu/packages/gnome.scm160
-rw-r--r--gnu/packages/gnupg.scm9
-rw-r--r--gnu/packages/gnuzilla.scm8
-rw-r--r--gnu/packages/gps.scm6
-rw-r--r--gnu/packages/graphics.scm130
-rw-r--r--gnu/packages/graphviz.scm3
-rw-r--r--gnu/packages/gsasl.scm10
-rw-r--r--gnu/packages/gstreamer.scm792
-rw-r--r--gnu/packages/guile-xyz.scm68
-rw-r--r--gnu/packages/guile.scm4
-rw-r--r--gnu/packages/hardware.scm4
-rw-r--r--gnu/packages/haxe.scm284
-rw-r--r--gnu/packages/hunspell.scm2
-rw-r--r--gnu/packages/image-processing.scm13
-rw-r--r--gnu/packages/image-viewers.scm20
-rw-r--r--gnu/packages/image.scm180
-rw-r--r--gnu/packages/inkscape.scm15
-rw-r--r--gnu/packages/installers.scm9
-rw-r--r--gnu/packages/instrumentation.scm58
-rw-r--r--gnu/packages/irc.scm6
-rw-r--r--gnu/packages/jami.scm235
-rw-r--r--gnu/packages/kde-frameworks.scm124
-rw-r--r--gnu/packages/kde-internet.scm2
-rw-r--r--gnu/packages/kde-multimedia.scm28
-rw-r--r--gnu/packages/kde-pim.scm54
-rw-r--r--gnu/packages/kde-plasma.scm6
-rw-r--r--gnu/packages/kde-systemtools.scm2
-rw-r--r--gnu/packages/kde-utils.scm4
-rw-r--r--gnu/packages/kde.scm82
-rw-r--r--gnu/packages/kerberos.scm31
-rw-r--r--gnu/packages/lego.scm2
-rw-r--r--gnu/packages/libreoffice.scm442
-rw-r--r--gnu/packages/libunwind.scm4
-rw-r--r--gnu/packages/linphone.scm10
-rw-r--r--gnu/packages/linux.scm397
-rw-r--r--gnu/packages/lisp-check.scm8
-rw-r--r--gnu/packages/lisp-xyz.scm385
-rw-r--r--gnu/packages/llvm.scm166
-rw-r--r--gnu/packages/logging.scm9
-rw-r--r--gnu/packages/lxqt.scm92
-rw-r--r--gnu/packages/machine-learning.scm9
-rw-r--r--gnu/packages/mail.scm168
-rw-r--r--gnu/packages/maths.scm563
-rw-r--r--gnu/packages/messaging.scm104
-rw-r--r--gnu/packages/mingw.scm9
-rw-r--r--gnu/packages/monitoring.scm19
-rw-r--r--gnu/packages/mp3.scm105
-rw-r--r--gnu/packages/mpd.scm12
-rw-r--r--gnu/packages/mtools.scm6
-rw-r--r--gnu/packages/music.scm72
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/networking.scm236
-rw-r--r--gnu/packages/nim.scm110
-rw-r--r--gnu/packages/node.scm4
-rw-r--r--gnu/packages/notcurses.scm89
-rw-r--r--gnu/packages/ocaml.scm136
-rw-r--r--gnu/packages/onc-rpc.scm12
-rw-r--r--gnu/packages/openstack.scm402
-rw-r--r--gnu/packages/orange.scm4
-rw-r--r--gnu/packages/package-management.scm97
-rw-r--r--gnu/packages/parallel.scm7
-rw-r--r--gnu/packages/password-utils.scm8
-rw-r--r--gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch38
-rw-r--r--gnu/packages/patches/aspell-CVE-2019-25051.patch99
-rw-r--r--gnu/packages/patches/barony-fix-textures.patch237
-rw-r--r--gnu/packages/patches/fail2ban-0.11.2_CVE-2021-32749.patch155
-rw-r--r--gnu/packages/patches/fail2ban-0.11.2_fix-setuptools-drop-2to3.patch64
-rw-r--r--gnu/packages/patches/fail2ban-0.11.2_fix-test-suite.patch48
-rw-r--r--gnu/packages/patches/fail2ban-paths-guix-conf.patch32
-rw-r--r--gnu/packages/patches/fail2ban-python310-server-action.patch27
-rw-r--r--gnu/packages/patches/fail2ban-python310-server-actions.patch25
-rw-r--r--gnu/packages/patches/fail2ban-python310-server-jails.patch25
-rw-r--r--gnu/packages/patches/fuse-glibc-2.34.patch49
-rw-r--r--gnu/packages/patches/gnupg-CVE-2022-34903.patch54
-rw-r--r--gnu/packages/patches/gst-plugins-good-fix-test.patch94
-rw-r--r--gnu/packages/patches/jami-fix-crash-on-quit.patch34
-rw-r--r--gnu/packages/patches/jami-fix-esc-bug.patch24
-rw-r--r--gnu/packages/patches/jami-images-loading.patch152
-rw-r--r--gnu/packages/patches/jami-libclient-audio-managers.patch23
-rw-r--r--gnu/packages/patches/jami-memory-usage.patch70
-rw-r--r--gnu/packages/patches/libphonenumber-reproducible-build.patch25
-rw-r--r--gnu/packages/patches/libtirpc-CVE-2021-46828.patch567
-rw-r--r--gnu/packages/patches/libvirt-add-install-prefix.patch268
-rw-r--r--gnu/packages/patches/mumps-build-parallelism.patch13
-rw-r--r--gnu/packages/patches/mumps-shared-libseq.patch42
-rw-r--r--gnu/packages/patches/mumps-shared-mumps.patch63
-rw-r--r--gnu/packages/patches/mumps-shared-pord.patch77
-rw-r--r--gnu/packages/patches/nsis-env-passthru.patch17
-rw-r--r--gnu/packages/patches/nsis-source-date-epoch.patch23
-rw-r--r--gnu/packages/patches/qtwayland-gcc-11.patch18
-rw-r--r--gnu/packages/patches/ruby-anystyle-data-immutable-install.patch40
-rw-r--r--gnu/packages/patches/ruby-anystyle-fix-dictionary-populate.patch94
-rw-r--r--gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch11
-rw-r--r--gnu/packages/patches/ruby-latex-decode-fix-test.patch66
-rw-r--r--gnu/packages/patches/shishi-fix-libgcrypt-detection.patch32
-rw-r--r--gnu/packages/patches/texlive-hyph-utf8-no-byebug.patch13
-rw-r--r--gnu/packages/patches/unzip-CVE-2022-0529+CVE-2022-0530.patch177
-rw-r--r--gnu/packages/patches/xygrib-fix-finding-data.patch2
-rw-r--r--gnu/packages/pdf.scm2
-rw-r--r--gnu/packages/photo.scm60
-rw-r--r--gnu/packages/printers.scm2
-rw-r--r--gnu/packages/pulseaudio.scm29
-rw-r--r--gnu/packages/python-check.scm4
-rw-r--r--gnu/packages/python-science.scm47
-rw-r--r--gnu/packages/python-web.scm97
-rw-r--r--gnu/packages/python-xyz.scm464
-rw-r--r--gnu/packages/python.scm8
-rw-r--r--gnu/packages/qt.scm1281
-rw-r--r--gnu/packages/radio.scm38
-rw-r--r--gnu/packages/robotics.scm4
-rw-r--r--gnu/packages/rpm.scm124
-rw-r--r--gnu/packages/ruby.scm840
-rw-r--r--gnu/packages/rust.scm50
-rw-r--r--gnu/packages/sagemath.scm21
-rw-r--r--gnu/packages/scribus.scm4
-rw-r--r--gnu/packages/search.scm41
-rw-r--r--gnu/packages/security-token.scm87
-rw-r--r--gnu/packages/serialization.scm71
-rw-r--r--gnu/packages/shells.scm4
-rw-r--r--gnu/packages/simulation.scm16
-rw-r--r--gnu/packages/slang.scm49
-rw-r--r--gnu/packages/statistics.scm110
-rw-r--r--gnu/packages/suckless.scm39
-rw-r--r--gnu/packages/sync.scm16
-rw-r--r--gnu/packages/synergy.scm2
-rw-r--r--gnu/packages/task-management.scm35
-rw-r--r--gnu/packages/telegram.scm4
-rw-r--r--gnu/packages/telephony.scm12
-rw-r--r--gnu/packages/terminals.scm4
-rw-r--r--gnu/packages/tex.scm461
-rw-r--r--gnu/packages/text-editors.scm20
-rw-r--r--gnu/packages/tls.scm84
-rw-r--r--gnu/packages/tor.scm10
-rw-r--r--gnu/packages/tryton.scm1010
-rw-r--r--gnu/packages/version-control.scm9
-rw-r--r--gnu/packages/video.scm218
-rw-r--r--gnu/packages/virtualization.scm160
-rw-r--r--gnu/packages/vpn.scm29
-rw-r--r--gnu/packages/web-browsers.scm60
-rw-r--r--gnu/packages/web.scm20
-rw-r--r--gnu/packages/webkit.scm2
-rw-r--r--gnu/packages/wm.scm50
-rw-r--r--gnu/packages/xdisorg.scm89
-rw-r--r--gnu/packages/xfce.scm8
-rw-r--r--gnu/packages/xorg.scm72
-rw-r--r--gnu/services/admin.scm21
-rw-r--r--gnu/services/configuration.scm11
-rw-r--r--gnu/services/cuirass.scm5
-rw-r--r--gnu/services/desktop.scm8
-rw-r--r--gnu/services/file-sharing.scm4
-rw-r--r--gnu/services/mail.scm45
-rw-r--r--gnu/services/messaging.scm12
-rw-r--r--gnu/services/networking.scm17
-rw-r--r--gnu/services/telephony.scm6
-rw-r--r--gnu/services/virtualization.scm12
-rw-r--r--gnu/system/examples/vm-image.tmpl13
-rw-r--r--gnu/system/file-systems.scm4
-rw-r--r--gnu/system/install.scm17
-rw-r--r--gnu/system/linux-container.scm97
-rw-r--r--gnu/tests/install.scm15
-rw-r--r--gnu/tests/telephony.scm53
-rw-r--r--gnu/tests/virtualization.scm84
226 files changed, 13592 insertions, 5493 deletions
diff --git a/gnu/artwork.scm b/gnu/artwork.scm
index f404467dd7..23b9899384 100644
--- a/gnu/artwork.scm
+++ b/gnu/artwork.scm
@@ -29,7 +29,7 @@
 ;;; Code:
 
 (define %artwork-repository
-  (let ((commit "2f2fe74c1078be605a6a93c2193fd6c715cebbb0"))
+  (let ((commit "4c7f2ce6428a63e202cd2a9474a06f68a946934d"))
     (origin
       (method git-fetch)
       (uri (git-reference
@@ -39,6 +39,6 @@
                                 "-checkout"))
       (sha256
        (base32
-        "0c8r0phvm3wgf914n2kw1461cwdjl2zbzqvzq9x7d9pwkgv7xmq7")))))
+        "1rl569759q9wm1dxn7nkq3873d2k92giic7aa6jwzwr3n16prc7y")))))
 
 ;;; artwork.scm ends here
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 1d3b33e7bd..b9d46c9350 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 David C. Trudgian <dave@trudgian.net>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1123,6 +1124,8 @@ corresponds to the symbols listed in FLAGS."
        (logior MS_STRICTATIME (loop rest)))
       (('lazy-time rest ...)
        (logior MS_LAZYTIME (loop rest)))
+      (('shared rest ...)
+       (loop rest))
       (()
        0))))
 
@@ -1186,6 +1189,9 @@ corresponds to the symbols listed in FLAGS."
         (cond
          ((string-prefix? "nfs" type)
           (mount-nfs source target type flags options))
+         ((memq 'shared (file-system-flags fs))
+          (mount source target type flags options)
+          (mount "none" target #f MS_SHARED))
          (else
           (mount source target type flags options)))
 
diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index 0d2af642c8..4f409166db 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -105,11 +105,14 @@ QEMU monitor and to the guest's backdoor REPL."
           "-monitor" (string-append "unix:" socket-directory "/monitor")
           "-chardev" (string-append "socket,id=repl,path=" socket-directory
                                     "/repl")
+          "-chardev" (string-append "socket,id=qga,server=on,wait=off,path="
+                                    socket-directory "/qemu-ga")
 
           ;; See
           ;; <http://www.linux-kvm.org/page/VMchannel_Requirements#Invocation>.
           "-device" "virtio-serial"
-          "-device" "virtserialport,chardev=repl,name=org.gnu.guix.port.0"))
+          "-device" "virtserialport,chardev=repl,name=org.gnu.guix.port.0"
+          "-device" "virtserialport,chardev=qga,name=org.qemu.guest_agent.0"))
 
   (define (accept* port)
     (match (select (list port) '() (list port) timeout)
@@ -255,8 +258,8 @@ accept connections in MARIONETTE.  Raise an error on failure."
 
 (define (marionette-control command marionette)
   "Run COMMAND in the QEMU monitor of MARIONETTE.  COMMAND is a string such as
-\"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(qemu-doc)
-pcsys_monitor\")."
+\"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(QEMU) QEMU
+Monitor\")."
   (match marionette
     (($ <marionette> _ _ monitor)
      (display command monitor)
diff --git a/gnu/ci.scm b/gnu/ci.scm
index f476e22731..9cc3a1a81f 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -21,9 +21,9 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu ci)
-  #:use-module (guix channels)
+  #:use-module (guix build-system channel)
   #:use-module (guix config)
-  #:use-module (guix describe)
+  #:autoload   (guix describe) (package-channels)
   #:use-module (guix store)
   #:use-module (guix grafts)
   #:use-module (guix profiles)
@@ -32,14 +32,12 @@
   #:use-module (guix channels)
   #:use-module (guix config)
   #:use-module (guix derivations)
-  #:use-module (guix build-system)
   #:use-module (guix monads)
   #:use-module (guix gexp)
   #:use-module (guix ui)
   #:use-module ((guix licenses)
                 #:select (gpl3+ license? license-name))
   #:use-module ((guix utils) #:select (%current-system))
-  #:use-module ((guix scripts system) #:select (read-operating-system))
   #:use-module ((guix scripts pack)
                 #:select (lookup-compressor self-contained-tarball))
   #:use-module (gnu bootloader)
@@ -72,7 +70,6 @@
             image->job
 
             %core-packages
-            channel-source->package
 
             arguments->systems
             cuirass-jobs))
@@ -289,42 +286,6 @@ otherwise use the IMAGE name."
               '()))
       '()))
 
-(define channel-build-system
-  ;; Build system used to "convert" a channel instance to a package.
-  (let* ((build (lambda* (name inputs
-                               #:key source commit system
-                               #:allow-other-keys)
-                  (mlet* %store-monad ((source (if (string? source)
-                                                   (return source)
-                                                   (lower-object source)))
-                                       (instance
-                                        -> (checkout->channel-instance
-                                            source #:commit commit)))
-                    (channel-instances->derivation (list instance)))))
-         (lower (lambda* (name #:key system source commit
-                               #:allow-other-keys)
-                  (bag
-                    (name name)
-                    (system system)
-                    (build build)
-                    (arguments `(#:source ,source
-                                 #:commit ,commit))))))
-    (build-system (name 'channel)
-                  (description "Turn a channel instance into a package.")
-                  (lower lower))))
-
-(define* (channel-source->package source #:key commit)
-  "Return a package for the given channel SOURCE, a lowerable object."
-  (package
-    (inherit guix)
-    (version (string-append (package-version guix) "+"))
-    (build-system channel-build-system)
-    (arguments `(#:source ,source
-                 #:commit ,commit))
-    (inputs '())
-    (native-inputs '())
-    (propagated-inputs '())))
-
 (define* (system-test-jobs store system
                            #:key source commit)
   "Return a list of jobs for the system tests."
diff --git a/gnu/home.scm b/gnu/home.scm
index a9f0a469a5..4ddbafe412 100644
--- a/gnu/home.scm
+++ b/gnu/home.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,8 @@
   #:use-module (guix diagnostics)
   #:use-module (guix gexp)
   #:use-module (guix store)
-
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 regex)
   #:export (home-environment
             home-environment?
             this-home-environment
@@ -38,7 +40,9 @@
             home-environment-services
             home-environment-location
 
-            home-environment-with-provenance))
+            home-environment-with-provenance
+
+            home-generation-base))
 
 ;;; Comment:
 ;;;
@@ -114,3 +118,21 @@ of HOME-PROVENANCE-SERVICE-TYPE to its services."
       (run-with-store store (home-environment-derivation he)
                       #:system system
                       #:target target)))))
+
+(define %profile-generation-rx
+  ;; Regexp that matches profile generation.
+  (make-regexp "(.*)-([0-9]+)-link$"))
+
+(define (home-generation-base file)
+  "If FILE is a Home generation GC root such as \"guix-home-42-link\",
+return its corresponding base---e.g., \"guix-home\".  Otherwise return #f.
+
+This is similar to the 'generation-profile' procedure but applied to Home
+generations."
+  (match (regexp-exec %profile-generation-rx file)
+    (#f #f)
+    (m  (let ((profile (match:substring m 1)))
+          ;; Distinguish from a "real" profile and from a system generation.
+          (and (file-exists? (string-append profile "/on-first-login"))
+               (file-exists? (string-append profile "/profile/manifest"))
+               profile)))))
diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index b05ec53e2a..75ea54743d 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -20,6 +20,7 @@
 (define-module (gnu home services)
   #:use-module (gnu services)
   #:use-module ((gnu packages package-management) #:select (guix))
+  #:use-module ((gnu packages base) #:select (coreutils))
   #:use-module (guix channels)
   #:use-module (guix monads)
   #:use-module (guix store)
@@ -367,9 +368,11 @@ activation.")))
 (define (compute-on-first-login-script _ gexps)
   (program-file
    "on-first-login"
-   (with-imported-modules (source-module-closure '((guix i18n)))
+   (with-imported-modules (source-module-closure '((guix i18n)
+                                                   (guix diagnostics)))
      #~(begin
-       (use-modules (guix i18n))
+         (use-modules (guix i18n)
+                      (guix diagnostics))
        #$%initialize-gettext
 
        (let* ((xdg-runtime-dir (or (getenv "XDG_RUNTIME_DIR")
@@ -386,7 +389,7 @@ activation.")))
                (begin #$@gexps (touch flag-file-path)))
              ;; TRANSLATORS: 'on-first-login' is the name of a service and
              ;; shouldn't be translated
-             (display (G_ "XDG_RUNTIME_DIR doesn't exists, on-first-login script
+             (warning (G_ "XDG_RUNTIME_DIR doesn't exists, on-first-login script
 won't execute anything.  You can check if xdg runtime directory exists,
 XDG_RUNTIME_DIR variable is set to appropriate value and manually execute the
 script by running '$HOME/.guix-home/on-first-login'"))))))))
@@ -426,8 +429,9 @@ extended with one gexp.")))
                               #f))))
        (if (file-exists? (he-init-file new-home))
            (let* ((port   ((@ (ice-9 popen) open-input-pipe)
-                           (format #f "source ~a && env -0"
-                                   (he-init-file new-home))))
+                           (format #f "source ~a && ~a -0"
+                                   (he-init-file new-home)
+                                   #$(file-append coreutils "/bin/env"))))
                   (result ((@ (ice-9 rdelim) read-delimited) "" port))
                   (vars (map (lambda (x)
                                (let ((si (string-index x #\=)))
diff --git a/gnu/home/services/ssh.scm b/gnu/home/services/ssh.scm
index ff2992766c..f0987aee23 100644
--- a/gnu/home/services/ssh.scm
+++ b/gnu/home/services/ssh.scm
@@ -69,10 +69,10 @@
                  " " value "\n"))
 
 (define (address-family? obj)
-  (memv obj (list *unspecified* AF_INET AF_INET6)))
+  (memv obj (list 'unset AF_INET AF_INET6)))
 
 (define (serialize-address-family field family)
-  (if (unspecified? family)
+  (if (eq? 'unset family)
       ""
       (string-append "  " (serialize-field-name field) " "
                      (cond ((= family AF_INET) "inet")
@@ -117,8 +117,8 @@
   (address-family
    address-family
    "Address family to use when connecting to this host: one of
-@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only), or
-@code{*unspecified*} (allowing any address family).")
+@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only).
+Additionally, the field can be left unset to allow any address family.")
   (identity-file
    maybe-string
    "The identity file to use---e.g.,
diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm
index 71c028c788..63c6041cd4 100644
--- a/gnu/home/services/xdg.scm
+++ b/gnu/home/services/xdg.scm
@@ -23,6 +23,7 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu home services utils)
   #:use-module (guix gexp)
+  #:use-module (guix modules)
   #:use-module (guix records)
   #:use-module (guix i18n)
   #:use-module (guix diagnostics)
@@ -106,15 +107,21 @@ services more consistent."))
 
 (define (ensure-xdg-base-dirs-on-activation config)
   #~(map (lambda (xdg-base-dir-variable)
-           ((@@ (guix build utils) mkdir-p)
+           ((@ (guix build utils) mkdir-p)
             (getenv
              xdg-base-dir-variable)))
-         '#$(map (lambda (field)
-                   (format
-                    #f "XDG_~a"
-                    (object->snake-case-string
-                     (configuration-field-name field) 'upper)))
-                 home-xdg-base-directories-configuration-fields)))
+         '#$(filter-map
+             (lambda (field)
+               (let ((variable
+                      (string-append
+                       "XDG_"
+                       (object->snake-case-string
+                        (configuration-field-name field) 'upper))))
+                 ;; XDG_RUNTIME_DIR shouldn't be created during activation
+                 ;; and will be provided by elogind or other service.
+                 (and (not (string=? "XDG_RUNTIME_DIR" variable))
+                      variable)))
+             home-xdg-base-directories-configuration-fields)))
 
 (define (last-extension-or-cfg config extensions)
   "Picks configuration value from last provided extension.  If there
@@ -207,8 +214,8 @@ pre-populated content.")
                    home-xdg-user-directories-configuration-fields)))
     #~(let ((ensure-dir
              (lambda (path)
-               (mkdir-p
-                ((@@ (ice-9 string-fun) string-replace-substring)
+               ((@ (guix build utils) mkdir-p)
+                ((@ (ice-9 string-fun) string-replace-substring)
                  path "$HOME" (getenv "HOME"))))))
         (display "Creating XDG user directories...")
         (map ensure-dir '#$dirs)
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 415f5a7af7..8a6e604fa5 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;;
@@ -63,6 +63,7 @@
     (('gnu 'installer _ ...) #t)
     (('gnu 'build _ ...) #t)
     (('guix 'build _ ...) #t)
+    (('guix 'read-print) #t)
     (_ #f)))
 
 (define not-config?
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 94ef9b42bc..d942a2f49b 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -38,6 +38,7 @@
                 #:select (%base-initrd-modules))
   #:use-module (guix build syscalls)
   #:use-module (guix build utils)
+  #:use-module (guix read-print)
   #:use-module (guix records)
   #:use-module (guix utils)
   #:use-module (guix i18n)
@@ -828,6 +829,7 @@ cause them to cross."
          (installer-log-line "~/type: ~a" partition-type)
          (installer-log-line "~/filesystem-type: ~a"
                              (filesystem-type-name filesystem-type))
+         (installer-log-line "~/flags: ~a" flags)
          (installer-log-line "~/start: ~a" start-sector*)
          (installer-log-line "~/end: ~a" end-sector)
          (installer-log-line "~/start-range: [~a, ~a]"
@@ -844,15 +846,18 @@ cause them to cross."
          (when (and partition-ok? has-name? name)
            (partition-set-name partition name))
 
-         ;; Set flags is required.
+         ;; Both partition-set-system and partition-set-flag calls can affect
+         ;; the partition type.  Their order is important, see:
+         ;; https://issues.guix.gnu.org/55549.
+         (partition-set-system partition filesystem-type)
+
+         ;; Set flags if required.
          (for-each (lambda (flag)
                      (and (partition-is-flag-available? partition flag)
                           (partition-set-flag partition flag 1)))
                    flags)
 
-         (and partition-ok?
-              (partition-set-system partition filesystem-type)
-              partition))))))
+         (and partition-ok? partition))))))
 
 
 ;;
@@ -1439,6 +1444,13 @@ USER-PARTITIONS, or return nothing."
             `((mapped-devices
                (list ,@(map user-partition->mapped-device
                             encrypted-partitions)))))
+
+      ,(vertical-space 1)
+      ,(let-syntax ((G_ (syntax-rules () ((_ str) str))))
+         (comment (G_ "\
+;; The list of file systems that get \"mounted\".  The unique
+;; file system identifiers there (\"UUIDs\") can be obtained
+;; by running 'blkid' in a terminal.\n")))
       (file-systems (cons*
                      ,@(user-partitions->file-systems user-partitions)
                      %base-file-systems)))))
diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index 6584fcceec..6c5f49622f 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
@@ -22,6 +22,7 @@
 
 (define-module (gnu installer services)
   #:use-module (guix records)
+  #:use-module (guix read-print)
   #:use-module (srfi srfi-1)
   #:export (system-service?
             system-service-name
@@ -35,6 +36,11 @@
             %system-services
             system-services->configuration))
 
+(define-syntax-rule (G_ str)
+  ;; In this file, translatable strings are annotated with 'G_' so xgettext
+  ;; catches them, but translation happens later on at run time.
+  str)
+
 (define-record-type* <system-service>
   system-service make-system-service
   system-service?
@@ -52,9 +58,7 @@
                                       ((_ fields ...)
                                        (system-service
                                         (type 'desktop)
-                                        fields ...))))
-               (G_ (syntax-rules ()               ;for xgettext
-                     ((_ str) str))))
+                                        fields ...)))))
     (list
      ;; This is the list of desktop environments supported as services.
      (desktop-environment
@@ -94,7 +98,12 @@
      (system-service
       (name (G_ "OpenSSH secure shell daemon (sshd)"))
       (type 'networking)
-      (snippet '((service openssh-service-type))))
+      (snippet `(,(vertical-space 1)
+                 ,(comment
+                   (G_ "\
+;; To configure OpenSSH, pass an 'openssh-configuration'
+;; record as a second argument to 'service' below.\n"))
+                 (service openssh-service-type))))
      (system-service
       (name (G_ "Tor anonymous network router"))
       (type 'networking)
@@ -149,24 +158,38 @@
          (desktop? (find desktop-system-service? services))
          (base     (if desktop?
                        '%desktop-services
-                       '%base-services)))
+                       '%base-services))
+         (heading  (list (vertical-space 1)
+                         (comment (G_ "\
+;; Below is the list of system services.  To search for available
+;; services, run 'guix system search KEYWORD' in a terminal.\n")))))
+
     (if (null? snippets)
         `(,@(if (null? packages)
                 '()
                 `((packages (append (list ,@packages)
                                     %base-packages))))
+
+          ,@heading
           (services ,base))
         `(,@(if (null? packages)
                 '()
                 `((packages (append (list ,@packages)
                                     %base-packages))))
+
+          ,@heading
           (services (append (list ,@snippets
 
                                   ,@(if desktop?
                                         ;; XXX: Assume 'keyboard-layout' is in
                                         ;; scope.
-                                        '((set-xorg-configuration
+                                        `((set-xorg-configuration
                                            (xorg-configuration
                                             (keyboard-layout keyboard-layout))))
                                         '()))
-                           ,base))))))
+
+                            ,(vertical-space 1)
+                            ,(comment (G_ "\
+;; This is the default list of services we
+;; are appending to.\n"))
+                            ,base))))))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 8bc38181a7..8b25ae97c8 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +21,9 @@
   #:use-module (guix records)
   #:use-module (guix build utils)
   #:use-module (guix i18n)
+  #:use-module (guix read-print)
   #:use-module (gnu installer utils)
   #:use-module (ice-9 match)
-  #:use-module (ice-9 pretty-print)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
@@ -224,10 +224,14 @@ found in RESULTS."
                   (conf-formatter result-step)
                   '())))
           steps))
-        (modules '((use-modules (gnu))
+        (modules `(,(vertical-space 1)
+                   ,(comment (G_ "\
+;; Indicate which modules to import to access the variables
+;; used in this configuration.\n"))
+                   (use-modules (gnu))
                    (use-service-modules cups desktop networking ssh xorg))))
     `(,@modules
-      ()
+      ,(vertical-space 1)
       (operating-system ,@configuration))))
 
 (define* (configuration->file configuration
@@ -241,14 +245,22 @@ found in RESULTS."
       ;; length below 60 characters.
       (display (G_ "\
 ;; This is an operating system configuration generated
-;; by the graphical installer.\n")
+;; by the graphical installer.
+;;
+;; Once installation is complete, you can learn and modify
+;; this file to tweak the system configuration, and pass it
+;; to the 'guix system reconfigure' command to effect your
+;; changes.\n")
                port)
       (newline port)
-      (for-each (lambda (part)
-                  (if (null? part)
-                      (newline port)
-                      (pretty-print part port)))
-                configuration)
+      (pretty-print-with-comments/splice port configuration
+                                         #:max-width 75
+                                         #:format-comment
+                                         (lambda (c indent)
+                                           ;; Localize C.
+                                           (comment (G_ (comment->string c))
+                                                    (comment-margin? c))))
+
       (flush-output-port port))))
 
 ;;; Local Variables:
diff --git a/gnu/installer/user.scm b/gnu/installer/user.scm
index c894a91dc8..224040530c 100644
--- a/gnu/installer/user.scm
+++ b/gnu/installer/user.scm
@@ -18,6 +18,7 @@
 
 (define-module (gnu installer user)
   #:use-module (guix records)
+  #:use-module (guix read-print)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
@@ -69,7 +70,11 @@
       (supplementary-groups '("wheel" "netdev"
                               "audio" "video"))))
 
-  `((users (cons*
+  (define-syntax-rule (G_ str) str)
+
+  `(,(vertical-space 1)
+    ,(comment (G_ ";; The list of user accounts ('root' is implicit).\n"))
+    (users (cons*
             ,@(filter-map (lambda (user)
                             ;; Do not emit a 'user-account' form for "root".
                             (and (not (string=? (user-name user) "root"))
diff --git a/gnu/local.mk b/gnu/local.mk
index bcfa15ca52..d61453b24b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -50,6 +50,7 @@
 # Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 # Copyright © 2022 Remco van 't Veer <remco@remworks.net>
 # Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+# Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 #
 # This file is part of GNU Guix.
 #
@@ -301,6 +302,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/haskell-crypto.scm		\
   %D%/packages/haskell-web.scm			\
   %D%/packages/haskell-xyz.scm			\
+  %D%/packages/haxe.scm				\
   %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
@@ -856,8 +858,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/antiword-CVE-2014-8123.patch			\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch	\
   %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch	\
+  %D%/packages/patches/aoflagger-use-system-provided-pybind11.patch \
   %D%/packages/patches/apr-skip-getservbyname-test.patch	\
   %D%/packages/patches/ark-skip-xar-test.patch			\
+  %D%/packages/patches/aspell-CVE-2019-25051.patch		\
   %D%/packages/patches/aspell-default-dict-dir.patch		\
   %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
@@ -886,6 +890,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/awesome-4.3-fno-common.patch		\
   %D%/packages/patches/aws-c-auth-install-private-headers.patch	\
   %D%/packages/patches/azr3.patch				\
+  %D%/packages/patches/barony-fix-textures.patch		\
   %D%/packages/patches/bash-completion-directories.patch	\
   %D%/packages/patches/bash-linux-pgrp-pipe.patch		\
   %D%/packages/patches/bastet-change-source-of-unordered_set.patch	\
@@ -1044,6 +1049,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/exercism-disable-self-update.patch	\
   %D%/packages/patches/extempore-unbundle-external-dependencies.patch	\
   %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\
+  %D%/packages/patches/fail2ban-0.11.2_CVE-2021-32749.patch	\
+  %D%/packages/patches/fail2ban-0.11.2_fix-setuptools-drop-2to3.patch	\
+  %D%/packages/patches/fail2ban-0.11.2_fix-test-suite.patch	\
+  %D%/packages/patches/fail2ban-paths-guix-conf.patch		\
+  %D%/packages/patches/fail2ban-python310-server-action.patch	\
+  %D%/packages/patches/fail2ban-python310-server-actions.patch	\
+  %D%/packages/patches/fail2ban-python310-server-jails.patch	\
   %D%/packages/patches/farstream-gupnp.patch                         \
   %D%/packages/patches/farstream-make.patch                          \
   %D%/packages/patches/fastcap-mulGlobal.patch			\
@@ -1074,7 +1086,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/fpc-reproducibility.patch		\
   %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
   %D%/packages/patches/freeimage-unbundle.patch		\
-  %D%/packages/patches/fuse-overlapping-headers.patch				\
+  %D%/packages/patches/fuse-glibc-2.34.patch			\
+  %D%/packages/patches/fuse-overlapping-headers.patch		\
   %D%/packages/patches/fxdiv-system-libraries.patch		\
   %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch	\
   %D%/packages/patches/ganeti-disable-version-symlinks.patch	\
@@ -1196,6 +1209,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gnome-session-support-elogind.patch      \
   %D%/packages/patches/gnome-todo-libportal.patch		\
   %D%/packages/patches/gnome-tweaks-search-paths.patch		\
+  %D%/packages/patches/gnupg-CVE-2022-34903.patch		\
   %D%/packages/patches/gnupg-default-pinentry.patch		\
   %D%/packages/patches/gnupg-1-build-with-gcc10.patch		\
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
@@ -1221,7 +1235,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/grub-setup-root.patch			\
   %D%/packages/patches/gspell-dash-test.patch			\
-  %D%/packages/patches/gst-plugins-good-fix-test.patch		\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-2.2-skip-so-test.patch             \
@@ -1298,12 +1311,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/irrlicht-link-against-needed-libs.patch	\
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch	\
   %D%/packages/patches/itk-snap-alt-glibc-compat.patch		\
+  %D%/packages/patches/jami-fix-esc-bug.patch			\
   %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
-  %D%/packages/patches/jami-fix-crash-on-quit.patch		\
-  %D%/packages/patches/jami-images-loading.patch		\
-  %D%/packages/patches/jami-memory-usage.patch			\
-  %D%/packages/patches/jami-libclient-audio-managers.patch	\
   %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
   %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
   %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
@@ -1403,6 +1413,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmpeg2-global-symbol-test.patch	\
   %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch		\
   %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
+  %D%/packages/patches/libphonenumber-reproducible-build.patch	\
   %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch	\
   %D%/packages/patches/libquicktime-ffmpeg.patch 		\
   %D%/packages/patches/librecad-support-for-boost-1.76.patch	\
@@ -1410,6 +1421,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libtgvoip-disable-sse2.patch 		\
   %D%/packages/patches/libtgvoip-disable-webrtc.patch 		\
   %D%/packages/patches/libtheora-config-guess.patch		\
+  %D%/packages/patches/libtirpc-CVE-2021-46828.patch		\
   %D%/packages/patches/libtirpc-hurd.patch			\
   %D%/packages/patches/libtommath-fix-linkage.patch		\
   %D%/packages/patches/libtool-skip-tests2.patch		\
@@ -1507,10 +1519,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
   %D%/packages/patches/mrustc-riscv64-support.patch		\
   %D%/packages/patches/mtools-mformat-uninitialized.patch	\
-  %D%/packages/patches/mumps-build-parallelism.patch		\
-  %D%/packages/patches/mumps-shared-libseq.patch		\
-  %D%/packages/patches/mumps-shared-mumps.patch			\
-  %D%/packages/patches/mumps-shared-pord.patch			\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
@@ -1535,7 +1543,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/nginx-socket-cloexec.patch		\
   %D%/packages/patches/nnpack-system-libraries.patch		\
   %D%/packages/patches/nsis-env-passthru.patch			\
-  %D%/packages/patches/nsis-source-date-epoch.patch		\
   %D%/packages/patches/nss-getcwd-nonnull.patch			\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-3.56-pkgconfig.patch			\
@@ -1730,6 +1737,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
   %D%/packages/patches/quickswitch-fix-dmenu-check.patch	\
+  %D%/packages/patches/qtwayland-gcc-11.patch			\
   %D%/packages/patches/qtwebkit-pbutils-include.patch		\
   %D%/packages/patches/qtwebkit-fix-building-with-bison-3.7.patch \
   %D%/packages/patches/qtwebkit-fix-building-with-python-3.9.patch	\
@@ -1762,6 +1770,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
+  %D%/packages/patches/ruby-hydra-minimal-no-byebug.patch		\
+  %D%/packages/patches/ruby-anystyle-data-immutable-install.patch	\
+  %D%/packages/patches/ruby-anystyle-fix-dictionary-populate.patch	\
+  %D%/packages/patches/ruby-latex-decode-fix-test.patch		\
   %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \
   %D%/packages/patches/ruby-sanitize-system-libxml.patch	\
   %D%/packages/patches/rustc-1.54.0-src.patch			\
@@ -1796,7 +1808,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/serf-python3.patch			\
   %D%/packages/patches/shakespeare-spl-fix-grammar.patch		\
   %D%/packages/patches/sharutils-CVE-2018-1000097.patch		\
-  %D%/packages/patches/shishi-fix-libgcrypt-detection.patch	\
   %D%/packages/patches/slim-session.patch			\
   %D%/packages/patches/slim-config.patch			\
   %D%/packages/patches/slim-sigusr1.patch			\
@@ -1842,6 +1853,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/telegram-purple-adjust-test.patch	\
   %D%/packages/patches/texi2html-document-encoding.patch	\
   %D%/packages/patches/texi2html-i18n.patch			\
+  %D%/packages/patches/texlive-hyph-utf8-no-byebug.patch	\
   %D%/packages/patches/thefuck-test-environ.patch		\
   %D%/packages/patches/tidy-CVE-2015-5522+5523.patch		\
   %D%/packages/patches/timescaledb-flaky-test.patch		\
@@ -1883,6 +1895,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/unzip-CVE-2014-9636.patch		\
   %D%/packages/patches/unzip-CVE-2015-7696.patch		\
   %D%/packages/patches/unzip-CVE-2015-7697.patch		\
+  %D%/packages/patches/unzip-CVE-2022-0529+CVE-2022-0530.patch	\
   %D%/packages/patches/unzip-allow-greater-hostver-values.patch	\
   %D%/packages/patches/unzip-attribs-overflow.patch		\
   %D%/packages/patches/unzip-overflow-on-invalid-input.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 7b05573290..06bc566cc7 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -77,6 +77,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system ruby)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
@@ -100,6 +101,7 @@
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages cryptsetup)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages elf)
@@ -134,6 +136,7 @@
   #:use-module (gnu packages mcrypt)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages patchutils)
   #:use-module (gnu packages pciutils)
@@ -152,6 +155,7 @@
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages selinux)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages tcl)
@@ -1830,18 +1834,15 @@ at once based on a Perl regular expression.")
                     (lambda* (#:key inputs #:allow-other-keys)
                       (substitute* "rc/weekly"
                         (("/bin/kill")
-                         (string-append (assoc-ref inputs "coreutils*")
-                                        "/bin/kill"))
+                         (search-input-file inputs "/bin/kill"))
                         (("syslogd\\.pid")
                          ;; The file is called 'syslog.pid' (no 'd').
-                         "syslog.pid"))
-                      #t))
+                         "syslog.pid"))))
                   (add-after 'install 'install-info
                     (lambda _
                       (invoke "make" "install-info"))))))
     (native-inputs (list texinfo automake util-linux)) ; for 'cal'
-    (inputs `(("coreutils*" ,coreutils)
-              ("mailutils" ,mailutils)))
+    (inputs (list coreutils mailutils))
     (home-page "https://www.gnu.org/software/rottlog/")
     (synopsis "Log rotation and management")
     (description
@@ -2140,39 +2141,35 @@ command.")
     (inherit wpa-supplicant)
     (name "wpa-supplicant-gui")
     (inputs (modify-inputs (package-inputs wpa-supplicant)
-              (prepend qtbase-5 qtsvg)))
+              (prepend qtbase-5 qtsvg-5)))
     (native-inputs
      ;; For icons.
      (modify-inputs (package-native-inputs wpa-supplicant)
        (prepend imagemagick inkscape/stable)))
+    (build-system qt-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'chdir
-                    (lambda _
-                      (chdir "wpa_supplicant/wpa_gui-qt4")
-                      #t))
-                  (delete 'configure)
-                  (replace 'build
-                    (lambda _
-                      (invoke "qmake" "wpa_gui.pro")
-                      (invoke "make" "-j" (number->string (parallel-job-count)))
-                      (invoke "make" "-C" "icons")))
-                  (replace 'install
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out"))
-                            (qt '("qtbase" "qtsvg")))
-                        (install-file "wpa_gui" (string-append out "/bin"))
-                        (install-file "wpa_gui.desktop"
-                                      (string-append out "/share/applications"))
-                        (copy-recursively "icons/hicolor"
-                                          (string-append out "/share/icons/hicolor"))
-                        (wrap-program (string-append out "/bin/wpa_gui")
-                          `("QT_PLUGIN_PATH" ":" prefix
-                            ,(map (lambda (label)
-                                    (string-append (assoc-ref inputs label)
-                                                   "/lib/qt5/plugins/"))
-                                  qt)))
-                        #t))))))
+     (list
+      #:test-target "check"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir
+            (lambda _ (chdir "wpa_supplicant/wpa_gui-qt4")))
+          (replace 'configure
+            (lambda _ (invoke "qmake" "wpa_gui.pro")))
+          (add-after 'build 'build-icons
+            (lambda _
+              ;; Inkscape complains (but works) without a writable $HOME.
+              (setenv "HOME" "/tmp")
+              (invoke "make" "-C" "icons")))
+          (replace 'install
+            (lambda _
+              (install-file "wpa_gui" (string-append #$output "/bin"))
+              (install-file "wpa_gui.desktop"
+                            (string-append #$output
+                                           "/share/applications"))
+              (copy-recursively "icons/hicolor"
+                                (string-append #$output
+                                               "/share/icons/hicolor")))))))
     (synopsis "Graphical user interface for WPA supplicant")))
 
 (define-public hostapd
@@ -3972,14 +3969,14 @@ information tool.")
 (define-public nnn
   (package
     (name "nnn")
-    (version "4.5")
+    (version "4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
                            version "/nnn-v" version ".tar.gz"))
        (sha256
-        (base32 "1aj9hzhpwxl2v1dlf3jpd3rp81z689dq8iycbipc0024dnyibp7s"))))
+        (base32 "0gvyvynw957yirvc1aj65flzni7niaj5bvyk82ka5dfgi2dazb0m"))))
     (build-system gnu-build-system)
     (inputs
      (list ncurses readline))
@@ -5233,3 +5230,217 @@ allows applications to use whatever seat management is available.")
 mediate access to shared devices, such as graphics and input, for applications
 that require it.")
     (license license:expat)))
+
+(define-public fail2ban
+  (package
+    (name "fail2ban")
+    (version "0.11.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fail2ban/fail2ban")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00d9q8m284q2wy6q462nipzszplfbvrs9fhgn0y3imwsc24kv1db"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Get rid of absolute file names.
+                  (substitute* "setup.py"
+                    (("/etc/fail2ban")
+                     "etc/fail2ban")
+                    (("/var/lib/fail2ban")
+                     "var/lib/fail2ban")
+                    (("\"/usr/bin/\"")
+                     "\"usr/bin/\"")
+                    (("\"/usr/lib/fail2ban/\"")
+                     "\"usr/lib/fail2ban/\"")
+                    (("'/usr/share/doc/fail2ban'")
+                     "'usr/share/doc/fail2ban'"))
+                  ;; disable tests performing unacceptable side-effects
+                  (let ((make-suite (lambda (t)
+                                      (string-append
+                                       "tests.addTest.unittest.makeSuite."
+                                       t ".."))))
+                    (substitute* "fail2ban/tests/utils.py"
+                      (((make-suite "actiontestcase.CommandActionTest"))
+                       "")
+                      (((make-suite "misctestcase.SetupTest"))
+                       "")
+                      (((make-suite
+                         "filtertestcase.DNSUtilsNetworkTests"))
+                       "")
+                      (((make-suite "filtertestcase.IgnoreIPDNS"))
+                       "")
+                      (((make-suite "filtertestcase.GetFailures"))
+                       "")
+                      (((make-suite
+                         "fail2banclienttestcase.Fail2banServerTest"))
+                       "")
+                      (((make-suite
+                         "servertestcase.ServerConfigReaderTests"))
+                       "")))))
+              (patches (search-patches
+                        "fail2ban-0.11.2_fix-setuptools-drop-2to3.patch"
+                        "fail2ban-python310-server-action.patch"
+                        "fail2ban-python310-server-actions.patch"
+                        "fail2ban-python310-server-jails.patch"
+                        "fail2ban-0.11.2_fix-test-suite.patch"
+                        "fail2ban-0.11.2_CVE-2021-32749.patch"
+                        "fail2ban-paths-guix-conf.patch"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'build 'invoke-2to3
+                    (lambda _
+                      (invoke "./fail2ban-2to3")))
+                  (add-before 'install 'fix-default-config
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (substitute* '("config/paths-common.conf"
+                                     "fail2ban/tests/utils.py"
+                                     "fail2ban/client/configreader.py"
+                                     "fail2ban/client/fail2bancmdline.py"
+                                     "fail2ban/client/fail2banregex.py")
+                        (("/etc/fail2ban")
+                         (string-append (assoc-ref outputs "out")
+                                        "/etc/fail2ban")))))
+                  (add-after 'fix-default-config 'set-action-dependencies
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      ;; deleting things that are not feasible to fix
+                      ;; or won't be used any way
+                      (with-directory-excursion "config"
+                        (for-each delete-file
+                                  '("paths-arch.conf"
+                                    "paths-debian.conf"
+                                    "paths-fedora.conf"
+                                    "paths-freebsd.conf"
+                                    "paths-opensuse.conf"
+                                    "paths-osx.conf")))
+                      (with-directory-excursion "config/action.d"
+                        (for-each delete-file
+                                  '("apf.conf"
+                                    "bsd-ipfw.conf"
+                                    "dshield.conf"
+                                    "ipfilter.conf"
+                                    "ipfw.conf"
+                                    "firewallcmd-allports.conf"
+                                    "firewallcmd-common.conf"
+                                    "firewallcmd-ipset.conf"
+                                    "firewallcmd-multiport.conf"
+                                    "firewallcmd-new.conf"
+                                    "firewallcmd-rich-logging.conf"
+                                    "firewallcmd-rich-rules.conf"
+                                    "osx-afctl.conf"
+                                    "osx-ipfw.conf"
+                                    "pf.conf"
+                                    "nginx-block-map.conf"
+                                    "npf.conf"
+                                    "shorewall.conf"
+                                    "shorewall-ipset-proto6.conf"
+                                    "ufw.conf")))
+                      (let* ((lookup-cmd (lambda (i)
+                                           (search-input-file inputs i)))
+                             (bin (lambda (i)
+                                    (lookup-cmd (string-append "/bin/" i))))
+                             (sbin (lambda (i)
+                                     (lookup-cmd (string-append "/sbin/" i))))
+                             (ip (sbin "ip"))
+                             (sendmail (sbin "sendmail")))
+                        (substitute* (find-files "config/action.d" "\\.conf$")
+                          ;; TODO: deal with geoiplookup ..
+                          (("(awk|curl|dig|jq)" all cmd)
+                           (bin cmd))
+                          (("(cat|echo|grep|head|printf|wc) " all
+                            cmd)
+                           (string-append (bin cmd) " "))
+                          ((" (date|rm|sed|tail|touch|tr) " all
+                            cmd)
+                           (string-append " "
+                                          (bin cmd) " "))
+                          (("cut -d")
+                           (string-append (bin "cut") " -d"))
+                          (("`date`")
+                           (string-append "`"
+                                          (bin "date") "`"))
+                          (("id -")
+                           (string-append (bin "id") " -"))
+                          (("ip -([46]) addr" all ver)
+                           (string-append ip " -" ver " addr"))
+                          (("ip route")
+                           (string-append ip " route"))
+                          (("ipset ")
+                           (string-append (sbin "ipset") " "))
+                          (("(iptables|ip6tables) <" all cmd)
+                           (string-append (sbin cmd) " <"))
+                          (("/usr/bin/nsupdate")
+                           (bin "nsupdate"))
+                          (("mail -E")
+                           (string-append sendmail " -E"))
+                          (("nftables = nft")
+                           (string-append "nftables = " (sbin "nft")))
+                          (("perl -e")
+                           (string-append (bin "perl") " -e"))
+                          (("/usr/sbin/sendmail")
+                           sendmail)
+                          (("test -e")
+                           (string-append (bin "test") " -e"))
+                          (("_whois = whois")
+                           (string-append "_whois = " (bin "whois")))))
+                      (substitute* "config/jail.conf"
+                        (("before = paths-debian.conf")
+                         "before = paths-guix.conf"))))
+                  (add-after 'install 'copy-man-pages
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((man (string-append (assoc-ref outputs "out")
+                                                 "/man"))
+                             (install-man (lambda (m)
+                                            (lambda (f)
+                                              (install-file (string-append f
+                                                             "." m)
+                                                            (string-append man
+                                                             "/man" m)))))
+                             (install-man1 (install-man "1"))
+                             (install-man5 (install-man "5")))
+                        (with-directory-excursion "man"
+                          (for-each install-man1
+                                    '("fail2ban"
+                                      "fail2ban-client"
+                                      "fail2ban-python"
+                                      "fail2ban-regex"
+                                      "fail2ban-server"
+                                      "fail2ban-testcases"))
+                          (for-each install-man5
+                                    '("jail.conf")))))))))
+    (inputs (list gawk
+                  coreutils-minimal
+                  curl
+                  grep
+                  jq
+                  iproute
+                  ipset
+                  iptables
+                  `(,isc-bind "utils")
+                  nftables
+                  perl
+                  python-pyinotify
+                  sed
+                  sendmail
+                  sqlite
+                  whois))
+    (home-page "http://www.fail2ban.org")
+    (synopsis "Daemon to ban hosts that cause multiple authentication errors")
+    (description
+     "Fail2Ban scans log files like @file{/var/log/auth.log} and bans IP
+addresses conducting too many failed login attempts.  It does this by updating
+system firewall rules to reject new connections from those IP addresses, for a
+configurable amount of time.  Fail2Ban comes out-of-the-box ready to read many
+standard log files, such as those for sshd and Apache, and is easily
+configured to read any log file of your choosing, for any error you wish.
+
+Though Fail2Ban is able to reduce the rate of incorrect authentication
+attempts, it cannot eliminate the risk presented by weak authentication.  Set
+up services to use only two factor, or public/private authentication
+mechanisms if you really want to protect services.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index bb71373aa9..b3f0823daf 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -413,13 +413,13 @@ or text interfaces) or as a C++ library.")
 (define-public flint
   (package
    (name "flint")
-   (version "2.8.4")
+   (version "2.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://flintlib.org/flint-" version ".tar.gz"))
       (sha256
-       (base32 "1gp4wm2s8c27g2hh53d09cys62da1bsxfwbcsj9cd7cfikm95pv1"))))
+       (base32 "0sp79ixaawjzna79afrlwlx9hg55jxil03f1wq435j9k23ar1h1g"))))
    (build-system gnu-build-system)
    (inputs
     (list ntl))
@@ -466,7 +466,7 @@ fast arithmetic.")
 (define-public arb
   (package
     (name "arb")
-    (version "2.22.1")
+    (version "2.23.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -475,7 +475,7 @@ fast arithmetic.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0qcyf8a7w95yxap0r3sb7xibk53nbs5kkidja3ljvqpbpk5xvpax"))))
+                "1m9vskyf857gbm0cbh3z8c8m6cqkqa765wb9hqmsv7yzfmklzpvn"))))
     (build-system gnu-build-system)
     (propagated-inputs
      (list flint))               ; flint.h is included by arf.h
@@ -540,14 +540,14 @@ these types and other mathematical functions.")
 (define-public ntl
   (package
    (name "ntl")
-   (version "11.4.4")
+   (version "11.5.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://shoup.net/ntl/ntl-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1nr1h27j2gdz6badzz9lk2pknxhdijqdxqhd3haryh0sw616wzwx"))
+              "12ka3hym4skg63mp8vgkin79svbpdk2m6i41yvmcdjq62g1hc391"))
             (modules '((guix build utils)))
             (snippet
              '(begin
@@ -923,7 +923,7 @@ algorithms from the FORTRAN library MINPACK.")
 (define-public symengine
   (package
     (name "symengine")
-    (version "0.6.0")
+    (version "0.9.0")
     (source
      (origin
        (method git-fetch)
@@ -932,7 +932,7 @@ algorithms from the FORTRAN library MINPACK.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "129iv9maabmb42ylfdv0l0g94mcbf3y4q3np175008rcqdr8z6h1"))))
+        (base32 "17b6byrhk0bgvarqmg92nrrqhzll9as6x1smghmyq2h9xc373ap4"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -1206,17 +1206,17 @@ xtensor provides:
 (define-public gap
   (package
     (name "gap")
-    (version "4.11.0")
+    (version "4.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://files.gap-system.org/gap-"
                            (version-major+minor version)
-                           "/tar.bz2/gap-"
+                           "/tar.gz/gap-"
                            version
-                           ".tar.bz2"))
+                           ".tar.gz"))
        (sha256
-        (base32 "00l6hvy4iggnlrib4vp805sxdm3j7n3hzpv5zs9hbiiavh80l1xz"))
+        (base32 "01535s81h254zcs84zi95xqmhvvn6fn9qss8761myxc2gpdcadb6"))
        (modules '((guix build utils) (ice-9 ftw) (srfi srfi-1)))
        (snippet
         '(begin
@@ -1242,28 +1242,42 @@ xtensor provides:
                    "SmallGrp-"   ; artistic2.0
                    "transgrp"    ; artistic2.0 for data,
                                  ; gpl2 or gpl3 for code
-                   ;; Recommended package.
-                   "io-"         ; gpl3+
-                   ;; Optional packages, searched for at start,
-                   ;; and their depedencies.
+                   ;; Optional packages.
                    "alnuth-"
+                   "AutoDoc-"
+                   "automata-"
                    "autpgrp-"
+                   "crime-"
                    "crisp-"      ; bsd-2
-                   "ctbllib"     ; gpl3+, clarified in the next release;
-                                 ; see
-                                 ; http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib/README.md
+                   "ctbllib"     ; gpl3+
+                   "datastructures"
                    "FactInt-"
                    "fga"
+                   "format"
+                   "groupoids-"
+                   "guarana"
+                   "idrel-"
+                   "images-"     ; mpl2.0
+                   "IntPic-"
+                   "io-"         ; gpl3+
                    "irredsol-"   ; bsd-2
                    "laguna-"
+                   "liering-"
+                   "MapClass-"
+                   "nilmat-"
+                   "NumericalSgps-"
+                   "OpenMath-"
+                   "orb-"        ; gpl3+
                    "polenta-"
                    "polycyclic-"
                    "radiroot-"
+                   "repsn-"
                    "resclasses-"
+                   "simpcomp"
                    "sophus-"
                    "tomlib-"
-                   "utils-"))))
-           #t))))
+                   "unipot-"
+                   "utils-"))))))))
     (build-system gnu-build-system)
     (inputs
      (list gmp readline zlib))
@@ -1280,14 +1294,12 @@ xtensor provides:
            (lambda _
              (setenv "CONFIG_SHELL" (which "bash"))
              (with-directory-excursion "pkg"
-               (invoke "../bin/BuildPackages.sh")
-             #t)))
+               (invoke "../bin/BuildPackages.sh"))))
          (add-after 'build-packages 'build-doc
            ;; The documentation is bundled, but we create it from source.
            (lambda _
              (with-directory-excursion "doc"
-               (invoke "./make_doc"))
-             #t))
+               (invoke "./make_doc"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -1312,6 +1324,8 @@ xtensor provides:
                (chmod prog #o755)
                ;; Install the headers and library, which are needed by Sage.
                (invoke "make" "install-headers")
+               (install-file "gen/config.h"
+                             (string-append out "/include/gap"))
                (invoke "make" "install-libgap")
                ;; Remove information on the build directory from sysinfo.gap.
                (substitute* "sysinfo.gap"
@@ -1321,8 +1335,7 @@ xtensor provides:
                (invoke "make" "install-gaproot")
                ;; Copy the directory of compiled packages; the make target
                ;; install-pkg is currently empty.
-               (copy-recursively "pkg" (string-append share "/pkg")))
-             #t)))))
+               (copy-recursively "pkg" (string-append share "/pkg"))))))))
     (home-page "https://www.gap-system.org/")
     (synopsis
      "System for computational group theory")
@@ -1589,16 +1602,16 @@ of M4RI from F_2 to F_{2^e}.")
 (define-public eclib
   (package
     (name "eclib")
-    (version "20190909")
+    (version "20220621")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/JohnCremona/eclib/")
-                    (commit (string-append "v" version))))
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gw27lqc3f525n8qdcmr2nyn16y9g10z9f6dnmckyyxcdzvhq35n"))))
+                "07wbkzmn6w0hrv2vim7f0il7k59ccc66x5vnn623xkmhfw32b3nz"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake libtool))
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 04dc4b6499..91aaba089f 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -34,6 +34,7 @@
   #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system android-ndk)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
@@ -54,6 +55,8 @@
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages selinux)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
@@ -1268,3 +1271,30 @@ Dalvik VM.  Their bytecode differs from the bytecode of normal Java
 applications.  Enjarify can translate the Dalvik bytecode back to equivalent
 Java bytecode, which simplifies the analysis of Android applications.")
     (license license:asl2.0)))
+
+(define-public android-file-transfer
+  (package
+    (name "android-file-transfer")
+    (version "4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url
+                     "https://github.com/whoozle/android-file-transfer-linux/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "125rq8ji83nw6chfw43i0h9c38hjqh1qjibb0gnf9wrigar9zc8b"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:tests? #f)) ;there are no tests
+    (inputs (list qtbase-5 fuse-3 libxkbcommon))
+    (native-inputs (list qttools-5 openssl readline))
+    (home-page "https://whoozle.github.io/android-file-transfer-linux/")
+    (synopsis "MTP client for Android devices")
+    (description
+     "This package provides a Qt graphical interface for transferring files
+with Android devices using MTP.  It also allows the Android device to be
+mounted via FUSE.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index c281772563..ba8ce00fbd 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -435,7 +435,7 @@ language.")
            (add-after 'install 'wrap-executable
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
-                      (qt '("qt" "qtmultimedia")))
+                      (qt '("qt" "qtmultimedia-5")))
                  (wrap-program (string-append out "/bin/Papagayo")
                    `("QT_PLUGIN_PATH" ":" prefix
                      ,(map (lambda (label)
@@ -445,10 +445,10 @@ language.")
                  #t))))))
       (inputs
        `(("qt" ,qtbase-5)
-         ("qtmultimedia" ,qtmultimedia)
+         ("qtmultimedia-5" ,qtmultimedia-5)
          ("libsndfile" ,libsndfile)))
       (native-inputs
-       (list qttools))
+       (list qttools-5))
       (home-page "https://www.lostmarble.com/papagayo/")
       (synopsis "Lip-syncing for animations")
       (description
@@ -474,7 +474,7 @@ waveform until they line up with the proper sounds.")
                 "0b1nwiwyg01087q318vymg4si76dw41ykxbn2zwd6dqbxzbpr1dh"))))
     (build-system gnu-build-system)
     (inputs
-     (list qtbase-5 qtxmlpatterns qtmultimedia qtsvg))
+     (list qtbase-5 qtxmlpatterns qtmultimedia-5 qtsvg-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index ef225ac64d..ec0dafbc7a 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -47,6 +47,7 @@
   (package
     (name "aspell")
     (version "0.60.8")
+    (replacement aspell/replacement)
     (source
      (origin
       (method url-fetch)
@@ -92,6 +93,16 @@ documents written in the UTF-8 encoding and its ability to use multiple
 dictionaries, including personal ones.")
     (license lgpl2.1+)))
 
+;; Replacement package with security fixes.
+(define aspell/replacement
+  (package
+    (inherit aspell)
+    (source
+     (origin
+       (inherit (package-source aspell))
+       (patches (append (origin-patches (package-source aspell))
+                        (search-patches "aspell-CVE-2019-25051.patch")))))))
+
 ;;;
 ;;; Dictionaries.
 ;;;
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index e84eb188ff..29f1e6fc36 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -69,6 +69,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix download)
@@ -79,6 +80,33 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define-public aocommon
+  (let ((commit "7329a075271edab8f6264db649e81e62b2b6ae5e")
+        (revision "1"))
+    (package
+      (name "aocommon")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/aroffringa/aocommon")
+               (commit commit)))
+         (sha256
+          (base32 "0qcfax6pbzs0yigy0x8xibrkk539wm2pbvjsb4lh50fybir02nix"))
+         (file-name (git-file-name name version))))
+      (build-system copy-build-system)
+      (arguments
+       (list #:install-plan
+             #~'(("include/aocommon" "include/aocommon"))))
+      (home-page "https://gitlab.com/aroffringa/aocommon")
+      (synopsis "Collection of functionality that is reused in astronomical applications")
+      (description
+       "This package provides source-only AOCommon collection of functionality that is
+reused in several astronomical applications, such as @code{wsclean},
+@code{aoflagger}, @code{DP3} and @code{everybeam}.")
+      (license license:gpl3+))))
+
 (define-public calceph
   (package
     (name "calceph")
@@ -114,6 +142,69 @@ moment, supported SPICE files are:
 @end itemize\n")
     (license license:cecill)))
 
+(define-public aoflagger
+  (package
+    (name "aoflagger")
+    (version "3.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/aroffringa/aoflagger")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1dcbfrbiybhpbypna2xhddx1wk7yifh38ha2r6p5rzsikzwlsin1"))
+       (patches
+        (search-patches "aoflagger-use-system-provided-pybind11.patch"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      ;; XXX: Tests require external files download from
+      ;; https://www.astron.nl/citt/ci_data/aoflagger/
+      ;; FIXME: runtest is not found
+      #:tests? #f
+      #:configure-flags
+      #~(list (string-append "-DCASACORE_ROOT_DIR="
+                             #$(this-package-input "casacore")))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; aocommon and pybind11 are expected to be found as git submodules,
+          ;; link them before build.
+          (add-after 'unpack 'link-submodule-package
+            (lambda _
+              (rmdir "external/aocommon")
+              (symlink #$(this-package-native-input "aocommon")
+                       (string-append (getcwd) "/external/aocommon")))))))
+    (native-inputs
+     (list aocommon
+           boost
+           pkg-config
+           python
+           pybind11))
+    (inputs
+     (list casacore
+           cfitsio
+           fftw
+           gsl
+           gtkmm-3
+           hdf5
+           lapack
+           libpng
+           libsigc++
+           libxml2
+           lua
+           openblas
+           zlib))
+    (home-page "https://gitlab.com/aroffringa/aoflagger")
+    (synopsis "Astronomical tool that can find and remove radio-frequency interference")
+    (description
+     "AOFlagger is a tool that can find and remove radio-frequency
+interference (RFI) in radio astronomical observations.  It can make use of Lua
+scripts to make flagging strategies flexible, and the tools are applicable to a
+wide set of telescopes.")
+    (license license:gpl3+)))
+
 (define-public casacore
   (package
     (name "casacore")
@@ -607,7 +698,7 @@ deconvolution).  Such post-processing is not performed by Stackistry.")
     (inputs
      (list qtbase-5
            qtlocation
-           qtmultimedia
+           qtmultimedia-5
            qtscript
            qtserialport
            zlib))
@@ -615,7 +706,7 @@ deconvolution).  Such post-processing is not performed by Stackistry.")
      `(("gettext" ,gettext-minimal)     ; xgettext is used at compile time
        ("perl" ,perl)                   ; for pod2man
        ("qtbase" ,qtbase-5)               ; Qt MOC is needed at compile time
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (arguments
      `(#:test-target "test"
        #:configure-flags (list "-DENABLE_TESTING=1"
@@ -1131,6 +1222,48 @@ Mechanics, Astrometry and Astrodynamics library.")
     (license (list license:lgpl2.0+
                    license:gpl2+)))) ; examples/transforms.c & lntest/*.c
 
+(define-public libsep
+  (package
+    (name "libsep")
+    (version "1.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kbarbary/sep")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0sag96am6r1ffh9860yq40js874362v3132ahlm6sq7padczkicf"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                           (string-append "PREFIX=" #$output))
+      #:phases #~(modify-phases %standard-phases
+                   (replace 'check
+                     (lambda* (#:key tests? #:allow-other-keys)
+                       (when tests?
+                         (chdir "../source")
+                         (invoke "make"
+                                 (string-append "CC=" #$(cc-for-target))
+                                 "test")))))))
+    (native-inputs
+     (list python-wrapper))
+    (home-page "https://github.com/kbarbary/sep")
+    (synopsis "Astronomical source extraction and photometry library")
+    (description
+     "SEP makes the core algorithms of
+@url{https://www.astromatic.net/software/sextractor/, sextractor} available as a
+library of stand-alone functions and classes.  These operate directly on
+in-memory arrays (no FITS files or configuration files).  The code is derived
+from the Source Extractor code base (written in C) and aims to produce results
+compatible with Source Extractor whenever possible.  SEP consists of a C library
+with no dependencies outside the standard library, and a Python module that
+wraps the C library in a Pythonic API.  The Python wrapper operates on NumPy
+arrays with NumPy as its only dependency.")
+    (license (list license:expat license:lgpl3+ license:bsd-3))))
+
 (define-public libskry
   (package
     (name "libskry")
@@ -1606,29 +1739,89 @@ Astronomical Union (IAU).  All C routines are wrapped as Numpy universal
 functions, so that they can be called with scalar or array inputs.")
     (license license:bsd-3)))
 
-(define-public python-sep
+(define-public python-pynbody
   (package
-    (name "python-sep")
-    (version "1.1.1")
+    (name "python-pynbody")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "sep" version))
+       (uri (pypi-uri "pynbody" version))
        (sha256
-        (base32 "0wxdqn92q1grv8k7xi7h88ac6wnznw4xh5bdlz1vz6za2dgsyj4m"))))
+        (base32 "1jxwk2s4qz1znvyak2lj7ld01kl1jh87xp81ki7a8dz1gcy93fkx"))))
     (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'disable-tests-require-testdata
+                 (lambda _
+                   ;; Disable tests which need to download additional 1.0GiB+
+                   ;; of test data archive from
+                   ;; http://star.ucl.ac.uk/~app/testdata.tar.gz
+                   ;;    https://github.com/pynbody/pynbody/blob/ \
+                   ;;    f4bd482dc47532831b3ec115c7cb07149d61bfc5/ \
+                   ;;    .github/workflows/build-test.yaml#L41
+                   (with-directory-excursion "tests"
+                     (for-each delete-file
+                               '("gravity_test.py"
+                                 "adaptahop_test.py"
+                                 "ahf_halos_test.py"
+                                 "array_test.py"
+                                 "bridge_test.py"
+                                 "family_test.py"
+                                 "partial_tipsy_test.py"
+                                 "snapshot_test.py"
+                                 "test_profile.py"
+                                 "gadget_test.py"
+                                 "gadgethdf_test.py"
+                                 "grafic_test.py"
+                                 "halotools_test.py"
+                                 "nchilada_test.py"
+                                 "ramses_new_ptcl_format_test.py"
+                                 "ramses_test.py"
+                                 "rockstar_test.py"
+                                 "sph_image_test.py"
+                                 "sph_smooth_test.py"
+                                 "subfind_test.py"
+                                 "subfindhdf_gadget4_test.py"
+                                 "tipsy_test.py")))))
+               (replace 'check
+                 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+                   (when tests?
+                     (add-installed-pythonpath inputs outputs)
+                     (setenv "HOME" "/tmp")
+                     (invoke "pytest" "-vv")))))))
     (native-inputs
-     (list python-cython python-pytest))
-    (inputs
-     (list python-numpy))
-    (home-page "https://github.com/kbarbary/sep")
-    (synopsis "Astronomical source extraction and photometry library")
-    (description
-     "SEP makes the core algorithms of Source Extractor available as a library
-of stand-alone functions and classes.")
-    (license (list license:bsd-3
-                   license:expat
-                   license:lgpl3+))))
+     (list python-cython
+           python-pandas
+           python-pytest))
+    (propagated-inputs
+     (list python-h5py
+           python-matplotlib
+           python-numpy
+           python-posix-ipc
+           python-scipy))
+    (home-page "https://pynbody.github.io/pynbody/index.html")
+    (synopsis "Light-weight astronomical N-body/SPH analysis for python")
+    (description "@code{Pynbody} is an analysis framework for N-body and hydrodynamic
+astrophysical simulations supporting PKDGRAV/Gasoline, Gadget, Gadget4/Arepo,
+N-Chilada and RAMSES AMR outputs.")
+    (license license:gpl3+)))
+
+(define-public python-sep
+  (package
+    (inherit libsep)
+    (name "python-sep")
+    (build-system python-build-system)
+    (arguments
+     (strip-keyword-arguments
+      '(#:make-flags) (package-arguments libsep)))
+    (native-inputs
+     (modify-inputs (package-inputs libsep)
+       (prepend python-cython)))
+    (propagated-inputs
+     (modify-inputs (package-inputs libsep)
+       (prepend python-numpy)))))
 
 (define-public python-asdf
   (package
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 66654b99fc..aad86bac06 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -125,6 +125,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -586,7 +587,7 @@ implementation of Adaptive Multi Rate Narrowband and Wideband
            liblo
            qtbase-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "http://alsamodular.sourceforge.net/")
     (synopsis "Realtime modular synthesizer and effect processor")
     (description
@@ -3096,7 +3097,7 @@ different audio devices such as ALSA or PulseAudio.")
     (inputs
      (list jack-1 alsa-lib portaudio qtbase-5 qtx11extras))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://qjackctl.sourceforge.io/")
     (synopsis "Jack server control application")
     (description "Control a Jack server.  Allows you to plug various sources
@@ -3217,7 +3218,7 @@ link REQUIRED)"))))))
                              (string-append ide "/bin"))
                (delete-file scide)))))))
     (native-inputs
-     (list ableton-link pkg-config qttools xorg-server-for-tests))
+     (list ableton-link pkg-config qttools-5 xorg-server-for-tests))
     (inputs (list jack-1
                   libsndfile
                   fftw
@@ -3231,12 +3232,12 @@ link REQUIRED)"))))))
                   boost-sync
                   yaml-cpp
                   qtbase-5
-                  qtdeclarative
-                  qtsvg
-                  qtwebchannel
-                  qtwebsockets))
+                  qtdeclarative-5
+                  qtsvg-5
+                  qtwebchannel-5
+                  qtwebsockets-5))
     (propagated-inputs                  ;to get native-search-path
-     (list qtwebengine))
+     (list qtwebengine-5))
     (home-page "https://github.com/supercollider/supercollider")
     (synopsis "Synthesis engine and programming language")
     (description "SuperCollider is a synthesis engine (@code{scsynth} or
@@ -3597,16 +3598,16 @@ stretching and pitch scaling of audio.  This package contains the library.")
 (define-public libkeyfinder
   (package
     (name "libkeyfinder")
-    (version "2.2.6")
+    (version "2.2.7")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mixxxdj/libkeyfinder")
-             (commit (string-append "v" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg"))))
+        (base32 "0nvhdzy0m3bchk3dpnspv2f518p2v9fjcrv36z1sva1pv9a2g35w"))))
     (build-system cmake-build-system)
     (native-inputs
      (list catch-framework2))
@@ -3902,7 +3903,7 @@ interface.")
     (arguments
      `(#:tests? #f))                    ; no "check" phase
     (native-inputs
-     (list qttools pkg-config))
+     (list qttools-5 pkg-config))
     (inputs
      (list fluidsynth qtbase-5 qtx11extras))
     (home-page "https://qsynth.sourceforge.io")
@@ -5454,11 +5455,11 @@ Rate} 3600x2250 bit/s vocoder used in various radio systems.")
            python ;for running tests
            portaudio ;for portaudio examples
            qtbase-5 ;for Qt examples
-           qtdeclarative
-           qttools))
+           qtdeclarative-5
+           qttools-5))
     (inputs
      (list jack-1 ;for JACK examples
-           qtquickcontrols)) ;for Qt examples
+           qtquickcontrols-5)) ;for Qt examples
     (propagated-inputs
      ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
      ;; contains '#include <asio.hpp>'.
@@ -5848,12 +5849,11 @@ and DSD streams.")
                (base32
                 "1xqmlbqj6ny4cpclzr8xyy6d6i392h9f1vmlbasp6xfy5b0yya94"))))
     (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f))    ;; no tests
+    (arguments (list #:tests? #f)) ;; no tests
     (inputs (list alsa-lib
+                  libxkbcommon
                   pipewire-0.3
-                  ;; qtsvg is still on version 5; use qtbase-5 to match
-                  qtbase-5
+                  qtbase
                   qtsvg))
     (native-inputs (list pkg-config))
     (synopsis "PipeWire graph manager")
diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el
index eff44bfe90..56dbcb8d67 100644
--- a/gnu/packages/aux-files/emacs/guix-emacs.el
+++ b/gnu/packages/aux-files/emacs/guix-emacs.el
@@ -56,7 +56,7 @@ The files in the list do not have extensions (.el, .elc)."
   (let ((autoloads (mapcan #'guix-emacs-find-autoloads
                            (guix-emacs--non-core-load-path))))
     (mapc (lambda (f)
-            (load f 'noerror))
+            (load f 'noerror t))
           autoloads)))
 
 ;;;###autoload
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 1245153789..d0d89bd910 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015, 2016, 2017, 2021, 2022 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2021 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
@@ -1081,14 +1081,14 @@ interactive mode.")
 (define-public btrbk
   (package
     (name "btrbk")
-    (version "0.31.3")
+    (version "0.32.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://digint.ch/download/btrbk/releases/"
-                                  name "-" version ".tar.xz"))
+                                  "btrbk-" version ".tar.xz"))
               (sha256
                (base32
-                "1lx7vnf386nsik8mxrrfyx1h7mkqk5zs26sy0s0lynfxcm4lkxb2"))))
+                "0gi0j09fm4pgw3dq0z27lkpyvrs3ssyqg9b46v5ba794z63w753z"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -1111,19 +1111,23 @@ interactive mode.")
                           (string-append "program_name = "
                                          "$ENV{'BTRBK_PROGRAM_NAME'}")))
                        ;; Wrap the script, so that it works with SSH URI and
-                       ;; finds mbuffer out of the box.
+                       ;; finds mbuffer and other tools out of the box.
                        (wrap-program btrbk
                          #:sh (search-input-file inputs "bin/bash")
                          '("BTRBK_PROGRAM_NAME" = ("$0"))
                          `("PATH" prefix
-                           ,(list (string-append #$btrfs-progs "/bin")
-                                  (string-append #$coreutils "/bin")
-                                  (string-append #$mbuffer "/bin")
-                                  (string-append #$openssh "/bin")))))))))
+                           ,(map (lambda (command)
+                                   (dirname (search-input-file inputs command)))
+                                 (list "bin/btrfs"
+                                       "bin/cat"
+                                       "bin/find"
+                                       "bin/mbuffer"
+                                       "bin/ssh")))))))))
     (native-inputs (list ruby-asciidoctor))
     (inputs (list bash-minimal
                   btrfs-progs
                   coreutils
+                  findutils
                   mbuffer
                   openssh
                   perl))
@@ -1277,13 +1281,13 @@ borgmatic is powered by borg.")
 (define-public vorta
   (package
     (name "vorta")
-    (version "0.8.3")
+    (version "0.8.7")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "vorta" version))
               (sha256
                (base32
-                "0674crxsmf1gwiacpi9ixypgz685fyzr5y3f9sd768b0bmh7ilsn"))))
+                "0yv2z2djbl7aq3fa9m3ihzv9i99a5ahsxz7dlzwvvf4a7pmhc6b2"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -1325,7 +1329,7 @@ borgmatic is powered by borg.")
            python-pyqt-without-qtwebkit
            python-secretstorage
            ;; This is included so that the qt-wrap phase picks it up.
-           qtsvg))
+           qtsvg-5))
     (home-page "https://github.com/borgbase/vorta")
     (synopsis "Graphical backup client based on BorgBackup")
     (description "Vorta is a graphical backup client based on the Borg backup
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 4ea12e4cf3..7be932f528 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -499,7 +499,7 @@ and options.  With careful benchmarking, different hardware can be compared.")
               (substitute* "src/benchmark.cpp"
                 (("\"fio\"")
                  (format #f "~s" (search-input-file inputs "bin/fio")))))))))
-    (native-inputs (list extra-cmake-modules qttools))
+    (native-inputs (list extra-cmake-modules qttools-5))
     (inputs (list fio qtbase-5))
     (home-page "https://github.com/JonMagon/KDiskMark")
     (synopsis "Simple disk benchmark tool")
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 31484799b2..94c92abefa 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages statistics)
@@ -2647,6 +2648,65 @@ and evaluate clustering results.")
 arbitrary genomic intervals along chromosomal ideogram.")
     (license license:gpl2)))
 
+(define-public r-infercnv
+  (package
+    (name "r-infercnv")
+    (version "1.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "infercnv" version))
+       (sha256
+        (base32
+         "01f021fdxm058733rky46dlvqg7dmf5mn5x9lnq0fspp5665w3bl"))))
+    (properties `((upstream-name . "infercnv")))
+    (build-system r-build-system)
+    (inputs (list python))
+    (propagated-inputs
+     (list r-ape
+           r-argparse
+           r-biocgenerics
+           r-catools
+           r-coda
+           r-coin
+           r-digest
+           r-doparallel
+           r-dplyr
+           r-edger
+           r-fastcluster
+           r-fitdistrplus
+           r-foreach
+           r-futile-logger
+           r-future
+           r-ggplot2
+           r-gplots
+           r-gridextra
+           r-hiddenmarkov
+           r-leiden
+           r-matrix
+           r-paralleldist
+           r-phyclust
+           r-rann
+           r-rcolorbrewer
+           r-reshape
+           r-rjags
+           r-singlecellexperiment
+           r-summarizedexperiment
+           r-tidyr))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/broadinstitute/inferCNV/wiki")
+    (synopsis "Infer copy number variation from single-cell RNA-Seq data")
+    (description
+     "@code{InferCNV} is used to explore tumor single cell RNA-Seq data to identify
+evidence for somatic large-scale chromosomal copy number alterations, such as gains
+or deletions of entire chromosomes or large segments of chromosomes.  This is done
+by exploring expression intensity of genes across positions of a tumor genome in
+comparison to a set of reference \"normal\" cells.  A heatmap is generated
+illustrating the relative expression intensities across each chromosome, and it
+often becomes readily apparent as to which regions of the tumor genome are
+over-abundant or less-abundant as compared to that of normal cells.")
+    (license license:bsd-3)))
+
 (define-public r-iranges
   (package
     (name "r-iranges")
@@ -3357,6 +3417,53 @@ users direct access to a diverse set of data and enable a wide range of
 powerful online queries from gene annotation to database mining.")
     (license license:artistic2.0)))
 
+;; This is a CRAN package, but it depends on a Bioconductor package:
+;; r-biomart
+(define-public r-biomartr
+  (package
+    (name "r-biomartr")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "biomartr" version))
+              (sha256
+               (base32
+                "0hr7wks88lbfcqzjzm4x265dk4lpmc3i2ndp7xcrx8ssj76wrmkz"))))
+    (properties `((upstream-name . "biomartr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-biomart
+           r-biostrings
+           r-curl
+           r-data-table
+           r-downloader
+           r-dplyr
+           r-fs
+           r-httr
+           r-jsonlite
+           r-philentropy
+           r-purrr
+           r-r-utils
+           r-rcurl
+           r-readr
+           r-stringr
+           r-tibble
+           r-withr
+           r-xml))
+    (native-inputs (list r-knitr))
+    (home-page "https://docs.ropensci.org/biomartr/")
+    (synopsis "Genomic data retrieval")
+    (description
+     "Perform large scale genomic data retrieval and functional annotation
+retrieval.  This package aims to provide users with a standardized way to
+automate genome, proteome, RNA, coding sequence (CDS), GFF, and metagenome
+retrieval from NCBI RefSeq, NCBI Genbank, ENSEMBL, and UniProt databases.
+Furthermore, an interface to the BioMart database allows users to retrieve
+functional annotation for genomic loci.  In addition, users can download
+entire databases such as NCBI RefSeq, NCBI nr, NCBI nt, NCBI Genbank, etc with
+only one command.")
+    (license license:gpl2)))
+
 (define-public r-biocparallel
   (package
     (name "r-biocparallel")
@@ -4629,6 +4736,56 @@ TAB-Seq.")
 throughput genetic sequencing data sets using regression methods.")
     (license license:artistic2.0)))
 
+(define-public r-muscat
+  (package
+    (name "r-muscat")
+    (version "1.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "muscat" version))
+       (sha256
+        (base32
+         "1j3zkhqgza92vdykb1yia1jjwsdqra6q9c0jk6p5p2x0778xqgfd"))))
+    (properties `((upstream-name . "muscat")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-biocparallel
+           r-blme
+           r-complexheatmap
+           r-data-table
+           r-deseq2
+           r-dplyr
+           r-edger
+           r-ggplot2
+           r-glmmtmb
+           r-limma
+           r-lme4
+           r-lmertest
+           r-matrix
+           r-matrixstats
+           r-progress
+           r-purrr
+           r-s4vectors
+           r-scales
+           r-scater
+           r-sctransform
+           r-scuttle
+           r-singlecellexperiment
+           r-summarizedexperiment
+           r-variancepartition
+           r-viridis))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/HelenaLC/muscat")
+    (synopsis "Multi-sample multi-group scRNA-seq data analysis tools")
+    (description
+     "This package @code{muscat} provides various methods and visualization tools
+for @dfn{DS}(differential splicing) analysis in multi-sample, multi-group,
+multi-(cell-)subpopulation scRNA-seq data, including cell-level mixed models and
+methods based on aggregated \"pseudobulk\" data, as well as a flexible simulation
+platform that mimics both single and multi-sample scRNA-seq data.")
+    (license license:gpl3)))
+
 (define-public r-mutationalpatterns
   (package
     (name "r-mutationalpatterns")
@@ -8834,7 +8991,7 @@ study various biological conditions.  The output from such analysis is both
 the mRNA level (e.g. cytosolic mRNA level) and the level of mRNA actively
 involved in translation (the actively translating mRNA level) for each mRNA.
 The standard analysis of such data strives towards identifying differential
-translational between two or more sample classes - i.e.  differences in
+translational between two or more sample classes - i.e., differences in
 actively translated mRNA levels that are independent of underlying differences
 in cytosolic mRNA levels.  This package allows for such analysis using partial
 variances and the random variance model.  As 10s of thousands of mRNAs are
@@ -11832,6 +11989,30 @@ genes in the gene-set that are ranked above the leading edge).")
      "This package provides a pipeline for analysing Capture Hi-C data.")
     (license license:artistic2.0)))
 
+;; This is a CRAN package, but it depends on Bioconductor packages, so we put
+;; it here.
+(define-public r-ciara
+  (package
+    (name "r-ciara")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "CIARA" version))
+              (sha256
+               (base32
+                "0nr7wks9231326x0lhpbh824c6vcb5hr5jn89s9bmg9mci907bsf"))))
+    (properties `((upstream-name . "CIARA")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-biobase r-ggplot2 r-ggraph r-magrittr))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=CIARA")
+    (synopsis "Cluster-independent algorithm for rare cell types identification")
+    (description
+     "This is a package to support identification of markers of rare cell
+types by looking at genes whose expression is confined in small regions of the
+expression space.")
+    (license license:artistic2.0)))
+
 (define-public r-cicero
   (package
     (name "r-cicero")
@@ -12744,14 +12925,14 @@ using whole genome sequencing data.")
 (define-public r-activepathways
   (package
     (name "r-activepathways")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ActivePathways" version))
        (sha256
         (base32
-         "0zbrgz91mlik7j8j11wsdswqqqfsijj8jkgd5fx1ar3mc6rqsmbg"))))
+         "1crq164vyqhdq5y3q09k3m5zljqrhcd5ak0jrc0xqvzf0pasml2m"))))
     (properties
      `((upstream-name . "ActivePathways")))
     (build-system r-build-system)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index a74002334b..054776da5b 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2017, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2018, 2019, 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
@@ -6264,7 +6264,7 @@ subsequent visualization, annotation and storage of results.")
 (define-public plink-ng
   (package (inherit plink)
     (name "plink-ng")
-    (version "2.00a3-20220315")
+    (version "2.00a3.3")
     (source
      (origin
        (method git-fetch)
@@ -6273,12 +6273,14 @@ subsequent visualization, annotation and storage of results.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19inr47jwddkjb9kfb14yxc7xb16c73lkhgxj9sncb0fsiskb4x8"))))
+        (base32 "0m8wkyvbgvcr5kzc284w8fbhpxwglh2c1xq0yc3yv00a53gs7rv0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
        ,#~(list "BLASFLAGS=-llapack -lopenblas"
-                "CFLAGS=-Wall -O2 -DDYNAMIC_ZLIB=1"
+                (string-append "CFLAGS=-Wall -O2 -DDYNAMIC_ZLIB=1"
+                               " -I" (search-input-directory
+                                       %build-inputs "include/simde"))
                 "ZLIB=-lz"
                 "BIN=plink prettify"
                 (string-append "CC=" #$(cc-for-target))
@@ -6305,7 +6307,7 @@ subsequent visualization, annotation and storage of results.")
     (inputs
      (list lapack openblas zlib))
     (native-inputs
-     (list diffutils plink python)) ; for tests
+     (list diffutils plink python simde)) ; for tests
     (home-page "https://www.cog-genomics.org/plink/")
     (license license:gpl3+)))
 
@@ -7523,6 +7525,41 @@ of transcriptional heterogeneity among single cells.")
     ;; See https://github.com/hms-dbmi/scde/issues/38
     (license license:gpl2)))
 
+(define-public r-millefy
+  (package
+    (name "r-millefy")
+    (version "0.1.9-beta")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/yuifu/millefy")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0z2y0x99f761pxvg6n37cmnyrnj699jhjk43pvk05sa86iykgizl"))))
+    (properties `((upstream-name . "millefy")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-data-table
+           r-destiny
+           r-dplyr
+           r-genomicranges
+           r-iranges
+           r-magrittr
+           r-rsamtools
+           r-rtracklayer
+           r-tidyr))
+    (home-page "https://github.com/yuifu/millefy")
+    (synopsis "Make millefy plot with single-cell RNA-seq data")
+    (description "@code{Millefy} is a tool for visualizing read coverage of
+@dfn{scRNA-seq}(single-cell RNA sequencing) datasets in genomic contexts.  By
+dynamically and automatically reorder single cells based on locus-specific
+pseudo time, @code{Millefy} highlights cell-to-cell heterogeneity in read coverage
+of scRNA-seq data.")
+    (license license:expat)))
+
 (define-public r-misha
   (package
     (name "r-misha")
@@ -9031,6 +9068,91 @@ remove biased methylation positions for RRBS sequence files.")
 programs for inferring phylogenies (evolutionary trees).")
     (license license:bsd-2)))
 
+(define-public phyml
+  (package
+    (name "phyml")
+    (version "3.3.20220408")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/stephaneguindon/phyml")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03hdqmnsgnzkcrp9r9ajdfkj33jgq4b86kra8ssjlrph65y344sa"))
+              (snippet
+               '(delete-file "doc/phyml-manual.pdf"))))
+    (build-system gnu-build-system)
+    (supported-systems '("x86_64-linux"))
+    (arguments
+     (let ((default-flags (list "--disable-native")))
+       `(#:phases
+         (let ((build (lambda (what)
+                         (lambda args
+                           (apply (assoc-ref %standard-phases 'configure)
+                                  (append args
+                                          (list #:configure-flags
+                                                (cons (format #false "--enable-~a" what)
+                                                      '() #;,default-flags))))
+                           (apply (assoc-ref %standard-phases 'build) args)
+                           (apply (assoc-ref %standard-phases 'install) args)))))
+           (modify-phases %standard-phases
+             ;; We cannot use --disable-native; see
+             ;; https://github.com/stephaneguindon/phyml/issues/173 Instead we
+             ;; patch the code to at least get rid of -march=native.
+             (add-after 'unpack 'remove-march-native
+               (lambda _
+                 (substitute* "configure.ac"
+                   (("DEFAULT_VECTOR_FLAG=\"-march=native\"")
+                    "DEFAULT_VECTOR_FLAG=\"-march=athlon64-sse3\"\n"))))
+             (add-after 'build 'build-manual
+               (lambda _
+                 (with-directory-excursion "doc"
+                   (invoke "make" "phyml-manual.pdf"))))
+             (add-after 'build-manual 'install-manual
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (with-directory-excursion "doc"
+                   (install-file "phyml-manual.pdf"
+                                 (string-append (assoc-ref outputs "out")
+                                                "/share/doc/phyml")))))
+             (add-after 'install 'build-phyml-mpi
+               (build "phyml-mpi"))
+             (add-after 'build-phyml-mpi 'build-rf
+               (build "rf"))
+             (add-after 'build-rf 'build-phyrex
+               (build "phyrex")))))))
+    (native-inputs
+     (list automake
+           autoconf
+           openmpi
+           (texlive-updmap.cfg (list texlive-amsfonts
+                                     texlive-caption
+                                     texlive-cite
+                                     texlive-fonts-ec
+                                     texlive-grfext
+                                     texlive-hyperref
+                                     texlive-latex-fancyvrb
+                                     texlive-latex-graphics
+                                     texlive-latex-psfrag
+                                     texlive-xcolor))))
+    (home-page "https://github.com/stephaneguindon/phyml")
+    (synopsis "Programs for working on SAM/BAM files")
+    (description
+     "@code{PhyML} is a software package that uses modern statistical
+approaches to analyse alignments of nucleotide or amino acid sequences in a
+phylogenetic framework.  The main tool in this package builds phylogenies
+under the maximum likelihood criterion.  It implements a large number of
+substitution models coupled with efficient options to search the space of
+phylogenetic tree topologies.  code{PhyREX} fits the
+spatial-Lambda-Fleming-Viot model to geo-referenced genetic data.  This model
+is similar to the structured coalescent but assumes that individuals are
+distributed along a spatial continuum rather than discrete demes.
+@code{PhyREX} can be used to estimate population densities and rates of
+dispersal.  Its output can be processed by treeannotator (from the
+@code{BEAST} package) as well as @code{SPREAD}.")
+    (license license:gpl3)))
+
 (define-public imp
   (package
     (name "imp")
@@ -9895,7 +10017,7 @@ The following file formats are supported:
     (inputs
      `(("boost" ,boost)
        ("bzip2" ,bzip2)
-       ("cereal" ,cereal)
+       ("cereal" ,cereal-1.3.0)
        ("curl" ,curl)
        ("eigen" ,eigen)
        ("jemalloc" ,jemalloc)
@@ -11262,7 +11384,7 @@ Thus the per-base error rate is similar to the raw input reads.")
                (install-file "Bandage" (string-append out "/bin"))
                #t))))))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtbase-5 qtsvg-5))
     (native-inputs
      (list imagemagick))
     (home-page "https://rrwick.github.io/Bandage/")
@@ -11413,6 +11535,123 @@ including:
 dynamic cellular processes at single-cell resolution.")
       (license license:expat))))
 
+;; Needed for r-liana
+(define-public r-omnipathr/devel
+  (let ((commit "679bb79e319af246a16968d27d64d8d6937a331a")
+        (revision "1"))
+    (package
+      (name "r-omnipathr")
+      (version (git-version "3.5.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/saezlab/omnipathr")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "10h6lyapyx4ik8r4kx5z2dly46jlf2v57caq4g6i0hzifyz2vgjq"))))
+      (properties `((upstream-name . "OmnipathR")))
+      (build-system r-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'set-HOME
+             (lambda _ (setenv "HOME" "/tmp"))))))
+      (propagated-inputs
+       (list r-checkmate
+             r-crayon
+             r-curl
+             r-digest
+             r-dplyr
+             r-httr
+             r-igraph
+             r-jsonlite
+             r-later
+             r-logger
+             r-magrittr
+             r-progress
+             r-purrr
+             r-rappdirs
+             r-readr
+             r-readxl
+             r-rlang
+             r-rvest
+             r-stringr
+             r-tibble
+             r-tidyr
+             r-tidyselect
+             r-withr
+             r-xml2
+             r-yaml))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/saezlab/omnipathr")
+      (synopsis "OmniPath web service client and more")
+      (description
+       "This package provides a client for the OmniPath web service and many
+other resources.  It also includes functions to transform and pretty print
+some of the downloaded data, functions to access a number of other resources
+such as BioPlex, ConsensusPathDB, EVEX, Gene Ontology, Guide to
+Pharmacology (IUPHAR/BPS), Harmonizome, HTRIdb, Human Phenotype Ontology,
+InWeb InBioMap, KEGG Pathway, Pathway Commons, Ramilowski et al. 2015,
+RegNetwork, ReMap, TF census, TRRUST and Vinayagam et al. 2011.  Furthermore,
+OmnipathR features a close integration with the NicheNet method for ligand
+activity prediction from transcriptomics data, and its R implementation
+@code{nichenetr}.")
+      (license license:expat))))
+
+(define-public r-liana
+  (let ((commit "efb1249af46f576d1d620956053cfa93b2cee961")
+        (revision "1"))
+    (package
+      (name "r-liana")
+      (version (git-version "0.1.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/saezlab/liana/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0z645k26kqrfj5f1s412vwclw1q47h1zfxxrh9ijr30pxhpv6cv0"))))
+      (properties `((upstream-name . "liana")))
+      (build-system r-build-system)
+      (arguments
+       (list
+        #:phases
+        `(modify-phases %standard-phases
+           ;; This is needed to find ~/.config/OmnipathR/omnipathr.yml
+           (add-after 'unpack 'set-HOME
+             (lambda _ (setenv "HOME" "/tmp"))))))
+      (propagated-inputs
+       (list r-complexheatmap
+             r-dplyr
+             r-ggplot2
+             r-magrittr
+             r-omnipathr/devel
+             r-purrr
+             r-rcolorbrewer
+             r-readr
+             r-reticulate
+             r-rlang
+             r-scater
+             r-scran
+             r-scuttle
+             r-seuratobject
+             r-singlecellexperiment
+             r-stringr
+             r-tibble
+             r-tidyr
+             r-tidyselect))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/saezlab/liana/")
+      (synopsis "LIANA: a LIgand-receptor ANalysis frAmework")
+      (description
+       "LIANA provides a number of methods and resource for ligand-receptor
+interaction inference from scRNA-seq data.")
+      (license license:gpl3))))
+
 (define-public r-circus
   (package
     (name "r-circus")
@@ -11842,19 +12081,23 @@ million cells.")
 (define-public python-bbknn
   (package
     (name "python-bbknn")
-    (version "1.3.6")
+    (version "1.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bbknn" version))
        (sha256
         (base32
-         "1jbsh01f57zj4bhvjr3jh4532zznqd6nccmgrl3qi9gnhkf7c4y0"))))
+         "0q11xdmjr2kf6f179a6kjizj3lllfrq743gslgw67qyzimvrrnhn"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; no tests are included
        #:phases
        (modify-phases %standard-phases
+         ;; Numba needs a writable dir to cache functions.
+         (add-before 'check 'set-numba-cache-dir
+           (lambda _
+             (setenv "NUMBA_CACHE_DIR" "/tmp")))
          (add-after 'unpack 'do-not-fail-to-find-sklearn
            (lambda _
              ;; XXX: I have no idea why it cannot seem to find sklearn.
@@ -11864,6 +12107,7 @@ million cells.")
      (list python-annoy
            python-cython
            python-numpy
+           python-pandas
            python-scikit-learn
            python-scipy
            python-umap-learn))
@@ -12060,14 +12304,14 @@ allowing the insertion of arbitrary types into the tree.")
 (define-public python-intervaltree
   (package
     (name "python-intervaltree")
-    (version "3.0.2")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "intervaltree" version))
        (sha256
         (base32
-         "0wz234g6irlm4hivs2qzmnywk0ss06ckagwh15nflkyb3p462kyb"))))
+         "0bcm6c6r4ck9nfj9xwz4rm2swc5lrjvmw3lyl6rgj639jf41nawh"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -12433,6 +12677,35 @@ cooler).  Both @code{hic} and @code{cool} files describe Hi-C contact
 matrices.")
     (license license:expat)))
 
+(define-public python-scanorama
+  (package
+    (name "python-scanorama")
+    (version "1.7.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "scanorama" version))
+              (sha256
+               (base32
+                "0il7bf4c7vli2dm2jx7dskh3ymgv8nmk0y90jzgfrnqjzh250x5w"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-annoy
+           python-fbpca
+           python-geosketch
+           python-intervaltree
+           python-matplotlib
+           python-numpy
+           python-scikit-learn
+           python-scipy))
+    (home-page "https://github.com/brianhie/scanorama")
+    (synopsis "Panoramic stitching of heterogeneous single cell transcriptomic data")
+    (description
+     "Scanorama enables batch-correction and integration of heterogeneous
+scRNA-seq datasets, which is described in the paper \"Efficient integration of
+heterogeneous single-cell transcriptomes using Scanorama\" by Brian Hie, Bryan
+Bryson, and Bonnie Berger.")
+    (license license:expat)))
+
 (define-public r-pore
   (package
     (name "r-pore")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index bc0364d87c..43fc287b95 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -470,14 +470,14 @@ desktops.")
                (wrap-qt-program "qbittorrent" #:output out #:inputs inputs))
              #t)))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      `(("boost" ,boost)
        ("libtorrent-rasterbar" ,libtorrent-rasterbar)
        ("openssl" ,openssl)
        ("python" ,python-wrapper)
        ("qtbase" ,qtbase-5)
-       ("qtsvg" ,qtsvg)
+       ("qtsvg-5" ,qtsvg-5)
        ("zlib" ,zlib)))
     (home-page "https://www.qbittorrent.org/")
     (synopsis "Graphical BitTorrent client")
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 2aab222d4a..818669b757 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -427,14 +427,14 @@ signals and slots system.")
 (define-public mdds
   (package
     (name "mdds")
-    (version "1.5.0")
+    (version "2.0.3")
     (source (origin
              (method url-fetch)
-             (uri (string-append
-                   "http://kohei.us/files/mdds/src/mdds-" version ".tar.bz2"))
+             (uri (string-append "https://kohei.us/files/mdds/src/mdds-"
+                                 version ".tar.xz"))
              (sha256
               (base32
-               "03b8i43pw4m767mm0cnbi77x7qhpkzpi9b1f6dpp4cmyszmnsk8l"))))
+               "1r68kxqppmhfg0dhz54d0hqzs5882cqrv1x6wpg7lak6gyyws0bc"))))
     (build-system gnu-build-system)
     (propagated-inputs
       (list boost)) ; inclusion of header files
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 71a10f54d5..d19cf55bc4 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -340,10 +340,23 @@ menu to select one of the installed operating systems.")
     (synopsis "GRand Unified Boot loader (UEFI 32bit version)")
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments grub-efi)
-           ((#:configure-flags flags
-             ''()) `(cons* ,(cond ((target-x86?) "--target=i386")
-                                  ((target-arm?) "--target=arm"))
-                           ,flags)))))))
+           ((#:configure-flags flags ''())
+            `(cons*
+               ,@(cond ((target-x86?) '("--target=i386"))
+                       ((target-aarch64?)
+                        (list "--target=arm"
+                              (string-append "TARGET_CC="
+                                             (cc-for-target "arm-linux-gnueabihf"))))
+                       ((target-arm?) '("--target=arm"))
+                       (else '()))
+               ,flags)))))
+    (native-inputs
+     (if (target-aarch64?)
+       (modify-inputs (package-native-inputs grub-efi)
+         (prepend
+           (cross-gcc "arm-linux-gnueabihf")
+           (cross-binutils "arm-linux-gnueabihf")))
+       (package-native-inputs grub-efi)))))
 
 ;; Because grub searches hardcoded paths it's easiest to just build grub
 ;; again to make it find both grub-pc and grub-efi.  There is a command
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 1630a40d17..39f048e993 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2022 ( <paren@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -185,12 +186,21 @@ standard.")
                 "1p34w496095mi0473f815w6wbi57zxil106mg7pj6sg6gzpjcgww"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _ (invoke "make" "-C" "cc/cpp" "test") #t)))))
-    (native-inputs
-     (list bison flex))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-multiple-definitions
+                 (lambda _
+                   ;; Certain variables are defined multiple times. This
+                   ;; upsets the linker and causes a build failure.
+                   (substitute* "cc/ccom/pass1.h"
+                     (("FLT flt_zero;") "extern FLT flt_zero;"))
+                   (substitute* (list "cc/ccom/scan.l" "cc/cxxcom/scan.l")
+                     (("lineno, ") ""))))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "make" "-C" "cc/cpp" "test")))))))
+    (native-inputs (list bison flex))
     (synopsis "Portable C compiler")
     (description
      "PCC is a portable C compiler.  The project goal is to write a C99
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 962dff9ae7..aa7dd41af4 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -452,7 +452,16 @@ multi-paradigm automated test framework for C++ and Objective-C.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gdp5wm8khn02g2miz381llw3191k7309qj8s3jd6sasj01rhf23"))))
+                "1gdp5wm8khn02g2miz381llw3191k7309qj8s3jd6sasj01rhf23"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* '("include/internal/catch_fatal_condition.hpp"
+                               "single_include/catch.hpp")
+                  ;; In glibc 2.34 and later, SIGSTKSZ is no longer a
+                  ;; compile-time constant.  Hard code a reasonably large
+                  ;; value.
+                  (("SIGSTKSZ")
+                   "32768")))))
     (build-system cmake-build-system)
     (synopsis "Automated test framework for C++ and Objective-C")
     (description "Catch2 stands for C++ Automated Test Cases in Headers and is
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 7e75ba8418..c91a8f250c 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -316,7 +316,7 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "103.0.5060.134")
+(define %chromium-version "104.0.5112.81")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/102.0.5005.61-1")
 
@@ -328,7 +328,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "00mpmyaa8bqxf1f4vhk1waxhjbhcwab8m1x1vf341al64f6bmr1r"))))
+      "0dvwh470h06x5a4p8kw22pi4lvch16knh90i2kh10y0wfggqz78w"))))
 
 (define %debian-origin
   (origin
@@ -477,7 +477,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0wdmy15602qxrb403p8yyx69k7py85fbawdsgap1l6z4h4j2g2p4"))
+                "0x17jzzvn2aqx3ahqyi6ijyn70sn79kg648r0ks9m5gib1bbgf0y"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -509,7 +509,6 @@
               "disable_fieldtrial_testing_config=true"
               "safe_browsing_mode=0"
               "enable_mdns=false"
-              "enable_one_click_signin=false"
               "enable_reading_list=false"
               "enable_remoting=false"
               "enable_reporting=false"
@@ -596,6 +595,12 @@
                   ;; This include path is added by Debians openjpeg patch.
                   (("/usr/include/openjpeg-2.4") openjpeg))
 
+                ;; Remove contrib/ prefix from minizip header inclusions.
+                (substitute* (find-files "third_party/tflite_support\
+/src/tensorflow_lite_support/metadata/cc")
+                  (("contrib/minizip/")
+                   "minizip/"))
+
                 (substitute*
                     '("base/process/launch_posix.cc"
                       "base/third_party/dynamic_annotations/dynamic_annotations.c"
@@ -790,6 +795,7 @@
                                        "chrome_200_percent.pak"
                                        "resources.pak"
                                        "v8_context_snapshot.bin"
+                                       "chrome_crashpad_handler"
 
                                        ;; Swiftshader ICD.
                                        "libvk_swiftshader.so"
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 64040270eb..96736aac84 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -914,8 +914,7 @@ extensions over the standard utility.")
              (("test_command \"cc -Wall -Wextra -o source.out source.c\"" all)
               "test_command \"gcc -Wall -Wextra -o source.out source.c\"")))))
       (build-system gnu-build-system)
-      (inputs
-       `(("python" ,python-wrapper)))
+      (inputs (list python-wrapper))
       (arguments
        `(#:phases
          (modify-phases %standard-phases
@@ -1067,7 +1066,7 @@ Using cscope, you can easily search for where symbols are used and defined.")
      "Xenon is a monitoring tool based on Radon.  It monitors code complexity.
 Ideally, @code{xenon} is run every time code is committed.  Through command
 line options, various thresholds can be set for the complexity of code.  It
-will fail (i.e.  it will exit with a non-zero exit code) when any of these
+will fail (i.e., it will exit with a non-zero exit code) when any of these
 requirements is not met.")
     (license license:expat)))
 
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index d885d65883..26c151002c 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -117,6 +117,15 @@
     (outputs '("out" "static"))
     (arguments
      (list
+      #:make-flags
+      (if (target-mingw?)
+          #~(list #$(string-append "PREFIX=" (%current-target-system) "-")
+                  "BINARY_PATH = $(prefix)/bin"
+                  "INCLUDE_PATH = $(prefix)/include"
+                  "LIBRARY_PATH = $(prefix)/lib"
+                  "SHARED_MODE = 1"
+                  (string-append "prefix = " #$output))
+          #~'())
       #:phases
       #~(modify-phases %standard-phases
           (replace 'configure
@@ -129,8 +138,11 @@
               #$@(if (%current-target-system)
                      #~((setenv "CHOST" #$(%current-target-system)))
                      #~())
-              (invoke "./configure"
-                      (string-append "--prefix=" #$output))))
+
+              #$@(if (target-mingw?)
+                     #~((rename-file "win32/Makefile.gcc" "Makefile"))
+                     #~((invoke "./configure"
+                                (string-append "--prefix=" #$output))))))
           (add-after 'install 'move-static-library
             (lambda _
               (with-directory-excursion (string-append #$output "/lib")
@@ -1737,6 +1749,7 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
   (package (inherit zip)
     (name "unzip")
     (version "6.0")
+    (replacement unzip/fixed)
     (source
      (origin
        (method url-fetch)
@@ -1786,25 +1799,33 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
     (build-system gnu-build-system)
     ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (add-after 'unpack 'fortify
-                    (lambda _
-                      ;; Mitigate CVE-2018-1000035, an exploitable buffer overflow.
-                      ;; This environment variable is recommended in 'unix/Makefile'
-                      ;; for passing flags to the C compiler.
-                      (setenv "LOCAL_UNZIP" "-D_FORTIFY_SOURCE=1")
-                      #t))
-                  (replace 'build
-                    (lambda* (#:key make-flags #:allow-other-keys)
-                      (apply invoke "make"
-                             `("-j" ,(number->string
-                                      (parallel-job-count))
-                               ,@make-flags
-                               "generic_gcc")))))
-       #:make-flags (list "-f" "unix/Makefile"
-                          (string-append "prefix=" %output)
-                          (string-append "MANDIR=" %output "/share/man/man1"))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (add-after 'unpack 'fortify
+                 (lambda _
+                   ;; Mitigate CVE-2018-1000035, an exploitable buffer overflow.
+                   ;; This environment variable is recommended in 'unix/Makefile'
+                   ;; for passing flags to the C compiler.
+                   (setenv "LOCAL_UNZIP" "-D_FORTIFY_SOURCE=1")
+                   #t))
+               (replace 'build
+                 (lambda* (#:key make-flags #:allow-other-keys)
+                   (apply invoke "make"
+                          `("-j" ,(number->string
+                                   (parallel-job-count))
+                            ,@make-flags
+                            "generic_gcc")))))
+           #:make-flags
+           ;; Fix cross-compilation without affecting native builds, as doing so
+           ;; would trigger too many rebuilds: https://issues.guix.gnu.org/57127
+           (if (%current-target-system)
+               #~(list "-f" "unix/Makefile"
+                       (string-append "prefix=" #$output)
+                       (string-append "MANDIR=" #$output "/share/man/man1"))
+               #~(list "-f" "unix/Makefile"
+                       (string-append "prefix=" %output)
+                       (string-append "MANDIR=" %output "/share/man/man1")))))
     (home-page "http://www.info-zip.org/UnZip.html")
     (synopsis "Decompression and file extraction utility")
     (description
@@ -1815,9 +1836,19 @@ UnZip lists, tests, or extracts files from a .zip archive.  The default
 behaviour (with no options) is to extract into the current directory, and
 subdirectories below it, all files from the specified zipfile.  UnZip
 recreates the stored directory structure by default.")
+    (properties `((lint-hidden-cve . ("CVE-2019-13232"))))
     (license (license:non-copyleft "file://LICENSE"
                                    "See LICENSE in the distribution."))))
 
+(define unzip/fixed
+  (package (inherit unzip)
+    (source
+     (origin
+       (inherit (package-source unzip))
+       (patches (append
+                  (origin-patches (package-source unzip))
+                  (search-patches "unzip-CVE-2022-0529+CVE-2022-0530.patch")))))))
+
 (define-public ziptime
   (let ((commit "2a5bc9dfbf7c6a80e5f7cb4dd05b4036741478bc")
         (revision "0"))
@@ -2315,7 +2346,7 @@ reading from and writing to ZIP archives.")
 (define-public zchunk
   (package
     (name "zchunk")
-    (version "1.1.16")
+    (version "1.2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2324,7 +2355,7 @@ reading from and writing to ZIP archives.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nlzwnv6wh2yjyyv27f81jnvmk7psgpbnw7dsdp7frfkya569hgv"))))
+                "0q0avb0397xkmidl8rxasfywp0r7w3awk6271pa2d9xl9p1n82zy"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 71dff3588f..f4e6e43ec8 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -165,7 +165,7 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.")
     (inputs
      (list qtbase-5))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 8330f0d157..1c9e57fb1c 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -727,7 +727,7 @@ lock-free fixed size queue written in C++11.")
 (define-public gperftools
   (package
     (name "gperftools")
-    (version "2.8.1")
+    (version "2.10")
     (source
      (origin
        (method git-fetch)
@@ -735,7 +735,7 @@ lock-free fixed size queue written in C++11.")
              (url "https://github.com/gperftools/gperftools")
              (commit (string-append "gperftools-" version))))
        (sha256
-        (base32 "19bj2vlsbfwq7m826v2ccqg47kd7cb5vcz1yw2x0v5qzhaxbakk1"))
+        (base32 "0s9qhx940s8q6glc8sw74k5gs8hdhjfigq20zci92qawgm7zsicm"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -1042,7 +1042,7 @@ Google's C++ code base.")
 (define-public pegtl
   (package
     (name "pegtl")
-    (version "3.2.2")
+    (version "3.2.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1051,7 +1051,7 @@ Google's C++ code base.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1viwrlsw5nwvbv8d88mf5r77syapgxx3xm1kv5kmn6drw8jgsmzf"))))
+                "01adjqqdr9yf4h379jl1x0526kvixfpqk4hdk9mna49qc4s5hpi1"))))
     (build-system cmake-build-system)
     (home-page "https://github.com/taocpp/PEGTL")
     (synopsis "Parsing Expression Grammar template library")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 2db969f28f..e2425ec16e 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -257,14 +257,14 @@ etc.")
 (define-public r-datawizard
   (package
     (name "r-datawizard")
-    (version "0.4.1")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "datawizard" version))
        (sha256
         (base32
-         "09lyh1awm2rplfzgwbdw4iy76mbaqwjd4hwlrsgvxj9pwdnjs4cx"))))
+         "022bbfaszbpml3i281cal7z0y1i380i1zjnhk1ldy5r535vs9cgq"))))
     (properties `((upstream-name . "datawizard")))
     (build-system r-build-system)
     (propagated-inputs
@@ -708,14 +708,14 @@ similar rank-based tests for equal probability distributions due to Neuhauser
 (define-public r-v8
   (package
     (name "r-v8")
-    (version "4.2.0")
+    (version "4.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "V8" version))
        (sha256
         (base32
-         "0hs7ajjw6y3q7mp7z00a9712y4cn6wgcnk5dbjbzlc6cfk4zsqkc"))))
+         "1w1zihmhrygn2i674wimbv7xqjnwlld4x3ndvh5dl4cdg7s1m24r"))))
     (properties `((upstream-name . "V8")))
     (build-system r-build-system)
     (arguments
@@ -860,13 +860,13 @@ series of numeric vectors/matrices and factors.")
 (define-public r-fontawesome
   (package
     (name "r-fontawesome")
-    (version "0.2.2")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fontawesome" version))
        (sha256
-        (base32 "0r6zb5175cr4ybqj6bl0mbhadwv9xjxaf32yjc0y76rw3d6vcbap"))))
+        (base32 "0c8sb8isiyn2gr3xfql75yyssf9wlb152cw67whq83aqsksgrvjd"))))
     (properties `((upstream-name . "fontawesome")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1141,16 +1141,22 @@ respecting the grammar of its graphics paradigm.")
 (define-public r-ggside
   (package
     (name "r-ggside")
-    (version "0.2.0")
+    (version "0.2.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggside" version))
               (sha256
                (base32
-                "1x505zizv7hf65pxp9j5v92c3bchhxh9dsrkk1m55kwqqnsl5nza"))))
+                "1vl7kzgmi5xxxsqvyg4cm4xwd3lfjgysay1lw6hri5vj22mnga5h"))))
     (properties `((upstream-name . "ggside")))
     (build-system r-build-system)
-    (propagated-inputs (list r-ggplot2 r-glue r-gtable r-rlang r-scales))
+    (propagated-inputs
+     (list r-ggplot2
+           r-glue
+           r-gtable
+           r-rlang
+           r-scales
+           r-tibble))
     (native-inputs (list r-knitr))
     (home-page "https://cran.r-project.org/package=ggside")
     (synopsis "Side grammar graphics that extends @code{ggplot2}")
@@ -1376,6 +1382,34 @@ naming conventions as distance methods of existing R packages.")
 control over dimensions and appearance.")
     (license license:gpl2+)))
 
+(define-public r-philentropy
+  (package
+    (name "r-philentropy")
+    (version "0.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "philentropy" version))
+              (sha256
+               (base32
+                "1dpf4hfflp4mcql4na46wzcq1flabkipiwyycz9wj5xbxlmcz2hk"))))
+    (properties `((upstream-name . "philentropy")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-kernsmooth r-poorman r-rcpp))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/drostlab/philentropy")
+    (synopsis
+     "Similarity and distance quantification between probability functions")
+    (description
+     "This package computes optimized distance and similarity measures for
+comparing probability functions (Drost (2018) <doi:10.21105/joss.00765>).
+These comparisons between probability functions have their foundations in a
+broad range of scientific disciplines from mathematics to ecology.  The aim of
+this package is to provide a core framework for clustering, classification,
+statistical inference, goodness-of-fit, non-parametric statistics, information
+theory, and machine learning tasks that are based on comparing univariate or
+multivariate probability functions.")
+    (license license:gpl2)))
+
 (define-public r-pnwcolors
   (package
     (name "r-pnwcolors")
@@ -1448,6 +1482,26 @@ qualitative palettes with many (20-30 or more) colors.  See Coombes and
 colleagues (2019) @url{https://doi:10.18637/jss.v090.c01}.")
     (license license:asl2.0)))
 
+(define-public r-poorman
+  (package
+    (name "r-poorman")
+    (version "0.2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "poorman" version))
+              (sha256
+               (base32
+                "05h7rjgri0b5a1jd0388p7lqvvg0y8z6g42f9bxc80jg1z730axr"))))
+    (properties `((upstream-name . "poorman")))
+    (build-system r-build-system)
+    (native-inputs (list r-knitr))
+    (home-page "https://nathaneastwood.github.io/poorman/")
+    (synopsis "Dependency-free recreation of dplyr")
+    (description
+     "This package provides a replication of key functionality from
+@code{dplyr} and the wider @code{tidyverse} using only @code{base}.")
+    (license license:expat)))
+
 (define-public r-ecp
   (package
     (name "r-ecp")
@@ -1754,14 +1808,14 @@ data types as well.")
 (define-public r-tidyverse
   (package
     (name "r-tidyverse")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidyverse" version))
        (sha256
         (base32
-         "0ck6xmsw5p168jmw2fqv79fzfnw5jckfra7mfii261j6kl89bkw3"))))
+         "0qfgq4p2aq95j39xd5kcing2cacy7rzy7f6zf0bnpsa95svziyrp"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-broom
@@ -1915,14 +1969,14 @@ same time tries to group instances from the same class together.")
 (define-public r-callr
   (package
     (name "r-callr")
-    (version "3.7.0")
+    (version "3.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "callr" version))
        (sha256
         (base32
-         "02inaf3c7b0hikii7p2zwaphrq5myv4in92d9jxd1ilmhla5awnn"))))
+         "1vc986d571nwmb5lw5rq3d38z4qw36lr94s3apz50c2v79xsbqrp"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-r6 r-processx))
@@ -2199,13 +2253,13 @@ a list of p-values.")
 (define-public r-htmltools
   (package
     (name "r-htmltools")
-    (version "0.5.2")
+    (version "0.5.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "htmltools" version))
               (sha256
                (base32
-                "1yv74ydyqm28gfhimmr7825sj1iaawpwsnzq05c2ma756q2dbivx"))))
+                "0krjyz99q7zvdfg60b128c0zwr36h54gb05jw9c874d8kqv1ni9c"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-base64enc r-digest r-fastmap r-rlang))
@@ -2241,13 +2295,13 @@ applications.")
 (define-public r-htmltable
   (package
     (name "r-htmltable")
-    (version "2.4.0")
+    (version "2.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "htmlTable" version))
        (sha256
-        (base32 "17csp0ry4iy4m5xy271dn5wd81v4p03l79swmvlfxkvpdmhvb8jc"))))
+        (base32 "14qg65nw0bpikqs1hb1x7apzdzrnnl3ykjnks67kkp46v1skwzrs"))))
     (properties `((upstream-name . "htmlTable")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2403,14 +2457,14 @@ rules and utility functions for adaptive GH quadrature.")
 (define-public r-rstpm2
   (package
     (name "r-rstpm2")
-    (version "1.5.6")
+    (version "1.5.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rstpm2" version))
        (sha256
         (base32
-         "17mhzfxh761vl64ar6pynpj3k2jkhjgbacxsjhkrfkbmy3aiv0d1"))))
+         "1gsizffplj4m9x1ln82f76936psgxn9cii45m7658lpwf2nzwli2"))))
     (properties `((upstream-name . "rstpm2")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2495,14 +2549,14 @@ jQuery.")
 (define-public r-sass
   (package
     (name "r-sass")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sass" version))
        (sha256
         (base32
-         "1fq8wqnxmx10lg0dh4qzmxdkhd22fjh8vhassapxb1chsimwn3w5"))))
+         "0iln5ky6k1ix0gddlyw4rr2953kc499x66bcyi9yiyp91nfh82dl"))))
     (properties `((upstream-name . "sass")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2557,14 +2611,14 @@ expression estimates for all genes.")
 (define-public r-bslib
   (package
     (name "r-bslib")
-    (version "0.3.1")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bslib" version))
        (sha256
         (base32
-         "0jcqklry1nkibz0sydsz5xdsnb4wnrrhvmyr9ji3k45bbipbap2z"))
+         "1hkmaj0mpygbf6qr1955biv9z4q3khflyqi5x0c3dwi6qz74xspv"))
        (snippet
         '(for-each delete-file
                    '("inst/lib/bs-a11y-p/plugins/js/bootstrap-accessibility.min.js"
@@ -2604,7 +2658,13 @@ expression estimates for all genes.")
                                        (string-append "--outfile=" target)))
                              sources targets)))))))))
     (propagated-inputs
-     (list r-htmltools r-jquerylib r-jsonlite r-rlang r-sass))
+     (list r-cachem
+           r-htmltools
+           r-jquerylib
+           r-jsonlite
+           r-memoise
+           r-rlang
+           r-sass))
     (native-inputs
      `(("esbuild" ,esbuild)
        ("js-bootstrap4-bundle"
@@ -2617,10 +2677,10 @@ expression estimates for all genes.")
        ("js-bootstrap5-bundle"
         ,(origin
            (method url-fetch)
-           (uri "https://raw.githubusercontent.com/twbs/bootstrap/v5.0.2/dist/js/bootstrap.bundle.js")
+           (uri "https://raw.githubusercontent.com/twbs/bootstrap/v5.1.3/dist/js/bootstrap.bundle.js")
            (sha256
             (base32
-             "06vin94nqw1vzs4zrqcms8z9js9fckbj8gwyx07awm8jkjhnqfhl"))))))
+             "116979i2vr1y9i6g7n5iir19p85xwr642scbl9jcqdr0w9801nw6"))))))
     (home-page "https://rstudio.github.io/bslib/")
     (synopsis "Custom Bootstrap Sass themes for shiny and rmarkdown")
     (description
@@ -3111,13 +3171,13 @@ in a ggplot2 plot.")
 (define-public r-mbess
   (package
     (name "r-mbess")
-    (version "4.9.0")
+    (version "4.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MBESS" version))
        (sha256
-        (base32 "0qmyvjx2zn5hlzdbz8c94g8l4707swhn7sq9mxkdqiydmflzv0b5"))))
+        (base32 "18klyyjvmwggv4ma2x77jac3640yxbsbinl3s2rp1ik4n9phnjd0"))))
     (properties `((upstream-name . "MBESS")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3315,7 +3375,7 @@ punctuation.")
     (synopsis "Inter-widget interactivity for HTML widgets")
     (description
      "This package provides building blocks for allowing HTML widgets to
-communicate with each other, with Shiny or without (i.e.  static @code{.html}
+communicate with each other, with Shiny or without (i.e., static @code{.html}
 files).  It currently supports linked brushing and filtering.")
     (license license:expat)))
 
@@ -3815,13 +3875,13 @@ error stream.")
 (define-public r-pls
   (package
     (name "r-pls")
-    (version "2.8-0")
+    (version "2.8-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pls" version))
        (sha256
-        (base32 "1gqq8rcq6p0hs2gfzwfj690rz3pwywmnv8qzcv0wsd6aaqkskwzg"))))
+        (base32 "137jg3x7aqwyki29i4kzp8d6imn17nq6wzzfjw5q19pixvmpybp2"))))
     (build-system r-build-system)
     (home-page "https://mevik.net/work/software/pls.html")
     (synopsis "Partial Least Squares and Principal Component Regression")
@@ -3944,13 +4004,13 @@ value for each cluster in a dendrogram.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.8.3")
+    (version "1.0.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "1gzqfn1xjawzig30ama3rldykqpcn6bd8sg684mrfvpmv96bi9cx"))))
+        (base32 "0xli48y9nsj8x8p5vkhisiz4l23g8r2623rn0i4xb5javh3fqz40"))))
     (build-system r-build-system)
     (home-page "http://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
@@ -4252,14 +4312,14 @@ rows, dropping names) to see if the modified versions are identical.")
 (define-public r-dendextend
   (package
     (name "r-dendextend")
-    (version "1.15.2")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dendextend" version))
        (sha256
         (base32
-         "06wjs8451hmnimzgngpzbai3yrgy33133vzzapa8jib9crdqi8sb"))))
+         "0rl4f0b73s1gdjfxgpnz87lhv131qazxb6vsv2935ad266fd0bzc"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ggplot2 r-magrittr r-viridis))
@@ -5276,14 +5336,14 @@ the Kaplan-Meier and Aalen-Johansen methods.")
 (define-public r-dimred
   (package
     (name "r-dimred")
-    (version "0.2.5")
+    (version "0.2.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dimRed" version))
        (sha256
         (base32
-         "1z8fqdc8mslvfix8ngxs1y2yrvlanp5581hwp2nzldj6mk5kn15b"))))
+         "05zlkf6hjdqqr1sgw7ww9f17vjnsiqfaj9kvdvi146phh53v2zls"))))
     (properties `((upstream-name . "dimRed")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5301,14 +5361,14 @@ methods.")
 (define-public r-timedate
   (package
     (name "r-timedate")
-    (version "3043.102")
+    (version "4021.104")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "timeDate" version))
        (sha256
         (base32
-         "0wvl5pq261rvbgly7vilk3x3m9xk3ly6il1i5scwdf6srl1vlz1p"))))
+         "03ncgbc9igiwl4s8pa94nj2v7aw3gw8ay51pwvv9gkv2f7l7dvh3"))))
     (properties `((upstream-name . "timeDate")))
     (build-system r-build-system)
     (home-page "https://www.rmetrics.org")
@@ -5371,14 +5431,14 @@ the RMariaDB package.")
 (define-public r-rpostgresql
   (package
     (name "r-rpostgresql")
-    (version "0.7-3")
+    (version "0.7-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RPostgreSQL" version))
        (sha256
         (base32
-         "1fbixmnjp1kh6yiv8zhg8zi5ryvdf5j2jxv4agq5gcxf541s3g5x"))))
+         "1ijnsly8wgy6cfib4xvdaz2g9hk1gzg7q52r37zkvc7jjh0gdbdn"))))
     (properties `((upstream-name . "RPostgreSQL")))
     (build-system r-build-system)
     (inputs
@@ -5417,14 +5477,14 @@ Optimization problems by using the simplex algorithm.")
 (define-public r-geometry
   (package
     (name "r-geometry")
-    (version "0.4.6")
+    (version "0.4.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "geometry" version))
        (sha256
         (base32
-         "1n7m0djqlhrv01l98r76grkki6cv4k4q2z6c7fksqgq4r2l6a14i"))))
+         "0wplszaxi6phxffp3zww5alwnfbh9521qi43h65w057lrm1pmj2j"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-magic r-linprog r-lpsolve r-rcpp r-rcppprogress))
@@ -5586,14 +5646,14 @@ created using basic graphics.")
 (define-public r-generics
   (package
     (name "r-generics")
-    (version "0.1.2")
+    (version "0.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "generics" version))
        (sha256
         (base32
-         "162q9hdsnfcwjj255ahbi6v9vnyynvda7gb75p721y28j5xb7sk3"))))
+         "0lyhhwik0w7m5h3fbwl2f52gc1v2g6g6h6sc47sa9f58pxin213m"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/generics")
     (synopsis "Common S3 generics not provided by base R methods")
@@ -5645,17 +5705,18 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.2.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "1950rvva19ms6xy9d3jx94gzy589qprk115zjjd0ib4qxgip601x"))))
+         "1jav29biq13xf0vg9kj3k6khqb71hqak26kxxi0vy29l849f4fly"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-dplyr
+     (list r-cli
+           r-dplyr
            r-ellipsis
            r-generics
            r-glue
@@ -5738,13 +5799,13 @@ from the data points.")
 (define-public r-coro
   (package
     (name "r-coro")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "coro" version))
        (sha256
-        (base32 "14irld29dipgfd34y0k351daqg9vqpnpdx8m3pxmqr1aiyj5f5cv"))))
+        (base32 "0wvxdpdh3xrskz5s5wfkva856x849knx1jigbf0ff6s6n6qjjxsf"))))
     (properties `((upstream-name . "coro")))
     (build-system r-build-system)
     (propagated-inputs (list r-rlang))
@@ -6089,14 +6150,14 @@ acceptance regions, log-ratio plots and Q-Q plots.")
 (define-public r-sm
   (package
     (name "r-sm")
-    (version "2.2-5.7")
+    (version "2.2-5.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sm" version))
        (sha256
         (base32
-         "03z8igsjqr32x407asxvkrbayvm6yhv9xyfs0n8fkmv8zk5a41r6"))))
+         "0mql7rlm8wkdwmx1lv7pscdk9ibvsdpfdv8bpaz1hv2gn4pc637a"))))
     (build-system r-build-system)
     (native-inputs (list gfortran))
     (home-page "http://www.stats.gla.ac.uk/~adrian/sm/")
@@ -6277,13 +6338,13 @@ Analysis with R\" by Michael Friendly and David Meyer (2015).")
 (define-public r-vcfr
   (package
    (name "r-vcfr")
-   (version "1.12.0")
+   (version "1.13.0")
    (source (origin
             (method url-fetch)
             (uri (cran-uri "vcfR" version))
             (sha256
              (base32
-              "0lhxb3ac4fafwik9q3cds46svzf0hyca8k54chw3dpk50c0zz1yx"))))
+              "1g4y11vpr3wrvf5prj7y33c2bah6rn4xfb4a1y7n7niafd2yhg3l"))))
    (build-system r-build-system)
    (native-inputs
     (list r-knitr))
@@ -6315,14 +6376,14 @@ VCF data and familiar R software.")
 (define-public r-ica
   (package
     (name "r-ica")
-    (version "1.0-2")
+    (version "1.0-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ica" version))
        (sha256
         (base32
-         "0ya1nph1zwhad0bfz4yxs27kl45yk1dhnphdlrq34p8pqrpmj8g7"))))
+         "0rdqd3kz2cv3xvf6yz55bwhsg3k7j90d450i3azs2xkbn4q3aka7"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/ica/")
     (synopsis "Independent component analysis")
@@ -6507,13 +6568,13 @@ constants, and control debugging of packages via environment variables.")
 (define-public r-processx
   (package
     (name "r-processx")
-    (version "3.6.1")
+    (version "3.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "processx" version))
        (sha256
-        (base32 "1xgjj37s304vdwp2a02rl999xl6dw7iw0ib9jyfpjrqyc1lmfw47"))))
+        (base32 "1lsyspd3jak6g625sna5jdqrg5fw02qgdfiz0hsyqlzw6m0qssny"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ps r-r6))
@@ -6532,14 +6593,14 @@ timeout.  It can also poll several processes at once.")
 (define-public r-tsp
   (package
     (name "r-tsp")
-    (version "1.2-0")
+    (version "1.2-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TSP" version))
        (sha256
         (base32
-         "022k0972kcxb0w6qhx09l9cif8fmpkpvwddvgxiy60bx343ywzia"))))
+         "1pa6pb4qrh2iybpjzjiny6hshj0shjdm0pxqnidcrg5hyfzzxd9b"))))
     (properties `((upstream-name . "TSP")))
     (build-system r-build-system)
     (propagated-inputs (list r-foreach))
@@ -6617,14 +6678,14 @@ Markdown documents.")
 (define-public r-seriation
   (package
     (name "r-seriation")
-    (version "1.3.5")
+    (version "1.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seriation" version))
        (sha256
         (base32
-         "0dlj0mqpg585m6i7yn0h878i8ag6pyqph98xkk42i2nvghpy01gr"))))
+         "1i0bbfxbvzy2lwprliqrn97ww8lqr2s9klg0g3qqjyr8cdxs5fyc"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cluster
@@ -6772,19 +6833,17 @@ estimated from a given sample.")
 (define-public r-pillar
   (package
     (name "r-pillar")
-    (version "1.7.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pillar" version))
        (sha256
         (base32
-         "1fqk18vc9ashf12gdqkdi6n1nj5lh324vwhgiib3b2fcb2bghhbq"))))
+         "0vxkg451s5kwkg0m8d9dnr8gl5s0pgi8mxcm39ry5vgdj8v47ijj"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli
-           r-crayon
-           r-ellipsis
            r-fansi
            r-glue
            r-lifecycle
@@ -7326,14 +7385,14 @@ provides some missing S-PLUS functionality in R.")
 (define-public r-ifultools
   (package
     (name "r-ifultools")
-    (version "2.0-23")
+    (version "2.0-26")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ifultools" version))
        (sha256
         (base32
-         "16a7rbvlym3bnfm93ikr5kl0l86ppk0s41fva6idvcx765g3fqkk"))))
+         "1lkmzrh65j6vdb8523axxk9gig5q4zxy08wiqsp16w482d2q2sl1"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -7472,14 +7531,14 @@ University Press, 2000.")
 (define-public r-tsa
   (package
     (name "r-tsa")
-    (version "1.3")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TSA" version))
        (sha256
         (base32
-         "1bv5q609lhmrcxnjnvcj497fbjlv89zwa8q918hw4iki5nkvwwdb"))))
+         "14g58s2w7wma1fgcg3b51267b3676zrv0w8v4hpypxygz023d9bx"))))
     (properties `((upstream-name . "TSA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7990,14 +8049,14 @@ systems.")
 (define-public r-radiant-data
   (package
     (name "r-radiant-data")
-    (version "1.4.2")
+    (version "1.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "radiant.data" version))
        (sha256
         (base32
-         "0c5c99q13pwv6k0b07x3r2bxmh0h2w15h02xb1pincgs61qwi15k"))
+         "1lj8zz9zg7kys9rkjxn9p5z6l944dk2bx6idlxal59yhy4ql2i4p"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -8009,6 +8068,7 @@ systems.")
     (propagated-inputs
      (list r-base64enc
            r-broom
+           r-bslib
            r-car
            r-curl
            r-dplyr
@@ -8024,6 +8084,7 @@ systems.")
            r-mass
            r-patchwork
            r-plotly
+           r-png
            r-psych
            r-randomizr
            r-readr
@@ -8732,12 +8793,12 @@ compression with the LZ4 and ZSTD compressors.")
 (define-public r-snowfall
   (package
    (name "r-snowfall")
-   (version "1.84-6.1")
+   (version "1.84-6.2")
    (source (origin
             (method url-fetch)
             (uri (cran-uri "snowfall" version))
             (sha256
-             (base32 "13941rlw1jsdjsndp1plzj1cq5aqravizkrqn6l25r9im7rnsi2w"))))
+             (base32 "0frmasv04wd47h04zbwaryhiyxllarf3ggpa39p5qicjp6r7lilv"))))
    (build-system r-build-system)
    (propagated-inputs
     (list r-snow))
@@ -9768,14 +9829,14 @@ implemented in bibutils.")
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "2.3.1")
+    (version "2.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "12j45n4srs987s9mqvp3524cviqbl2pnpx7yw8agac9ynnfmwgmm"))))
+         "109mylzmlncq5a09ayy4g2g0frj1k843lj8j78gvmz1h5g8sslkn"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9920,14 +9981,14 @@ or missing responses.")
 (define-public r-acdm
   (package
     (name "r-acdm")
-    (version "1.0.4")
+    (version "1.0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ACDm" version))
        (sha256
         (base32
-         "0b4f02ga5ra66mbrm79g0bnlzmii82rks9kmxixxqgf18yhlyjil"))))
+         "129ykw0j8z30mr4c01qzx6qy6h4bl87zxvmps0vkh8cqb7akninq"))))
     (properties `((upstream-name . "ACDm")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10010,14 +10071,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.17.1")
+    (version "0.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "0dffrsimgijdqsgvr9cad4g4w97d5ssjl3l0fm5ssly9l115ag35"))))
+         "09gpkac882hqw84rk66h5dm94ljk08ydz13wz9fbjdxaffgw5ba1"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -10295,14 +10356,14 @@ matches version and feature constraints.")
 (define-public r-argparse
   (package
     (name "r-argparse")
-    (version "2.1.5")
+    (version "2.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "argparse" version))
        (sha256
         (base32
-         "13b5halfxc7nr57vkz3qmkkcpw1hr4xdk1mjh2cq8cvpnjz15qc3"))))
+         "14p57nm0w3siqd473snzhpmnvsgl72x92pdcd64vhy2qg6nzmmra"))))
     (build-system r-build-system)
     (inputs (list python))
     (propagated-inputs
@@ -10807,6 +10868,29 @@ supported classes are those defined in packages @code{network} and
 @code{igraph}.")
     (license license:gpl3)))
 
+(define-public r-interp
+  (package
+    (name "r-interp")
+    (version "1.1-3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "interp" version))
+              (sha256
+               (base32
+                "0gzsnlg8f7knb100n6vv6307c3v2jd8f9qzrq62jkc6g71mn0kmp"))))
+    (properties `((upstream-name . "interp")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-deldir r-rcpp r-rcppeigen))
+    (native-inputs (list gfortran))
+    (home-page "https://cran.r-project.org/package=interp")
+    (synopsis "Interpolation methods")
+    (description
+     "Bivariate data interpolation on regular and irregular grids, either
+linear or using splines are the main part of this package.  It is intended to
+provide replacement functions for the ACM licensed @code{akima::interp} and
+@code{tripack::tri.mesh} functions.")
+    (license license:gpl2+)))
+
 (define-public r-abcoptim
   (package
     (name "r-abcoptim")
@@ -10980,14 +11064,14 @@ repeated measures data, respectively.")
 (define-public r-gam
   (package
     (name "r-gam")
-    (version "1.20.1")
+    (version "1.20.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gam" version))
        (sha256
         (base32
-         "1bbxiqfgi7jc9vw1hspw5q41d69nlw2v6k91zqlvmam5pvxcd1sp"))))
+         "1ndgnaq5fk1w6l6z93w5gd22887yxkykrchbdbx366qmz8v8wcyg"))))
     (properties `((upstream-name . "gam")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11680,13 +11764,13 @@ emission distributions.")
 (define-public r-nleqslv
   (package
     (name "r-nleqslv")
-    (version "3.3.2")
+    (version "3.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nleqslv" version))
        (sha256
-        (base32 "1v9znvncyigw9r25wx2ma0b7ib179b488dl0qsrhp5zrcz7mcjgm"))))
+        (base32 "0cy65bqkmnnr8v0x1cag84caxwdxyr0yw4w443apxzfxjp7dyiif"))))
     (build-system r-build-system)
     (native-inputs (list gfortran))
     (home-page "https://cran.r-project.org/web/packages/nleqslv/")
@@ -11699,6 +11783,31 @@ supplied Jacobian, for specifying a banded numerical Jacobian and for allowing a
 singular or ill-conditioned Jacobian.")
     (license license:gpl2+)))
 
+(define-public r-phyclust
+  (package
+    (name "r-phyclust")
+    (version "0.1-30")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "phyclust" version))
+              (sha256
+               (base32
+                "0fy9q95vmlm9idpax7alhpfwn30gflnc9md72g91jypyxkx5nr7p"))))
+    (properties `((upstream-name . "phyclust")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ape))
+    (home-page "https://snoweye.github.io/phyclust/")
+    (synopsis "Studying phyloclustering and exploring DNA sequence data")
+    (description
+     "@dfn{Phylogenetic clustering} (phyloclustering) is an evolutionary continuous
+time Markov Chain model-based approach to identify population structure from
+molecular data without assuming linkage equilibrium.  The package @code{phyclust}
+provides a convenient implementation of phyloclustering for DNA and SNP data,
+capable of clustering individuals into subpopulations and identifying molecular
+sequences representative of those subpopulations.  It is designed in @code{C} for
+performance and interfaced with @code{R} for visualization.")
+    (license license:gpl2+)))
+
 (define-public r-physicalactivity
   (package
     (name "r-physicalactivity")
@@ -12261,14 +12370,14 @@ packages maintained by Torsten Hothorn.")
 (define-public r-multcomp
   (package
     (name "r-multcomp")
-    (version "1.4-19")
+    (version "1.4-20")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "multcomp" version))
        (sha256
         (base32
-         "0mz5wdqrqpp2gqijfpp9rgfbq8yvxki4is8fbbc4qwdwryqp6d7h"))))
+         "1z1cqklahnp4qi48r335xlqvw7h7xbjrlpb4pjky9gc987xf92rj"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-codetools r-mvtnorm r-sandwich r-survival r-th-data))
@@ -12306,14 +12415,14 @@ the differences were not significantly different.")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.7.5")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "04zy4fb5v3l5zi74bgch8l7mzf2zg16w303k6kp7hwqjlfzh6zms"))))
+         "0xdvbjcywmwk6n8xbp55n92lmqz7wbc938gmv7lbg96hkf9kc993"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-estimability r-mvtnorm r-numderiv r-xtable))
@@ -12505,14 +12614,14 @@ models.")
 (define-public r-glmmtmb
   (package
     (name "r-glmmtmb")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glmmTMB" version))
        (sha256
         (base32
-         "0xdjc3gx0cj098rrjzlsy9cccxzfvn029xh4ycpya4xjhxsykldr"))))
+         "1ldly6qn8iwqr41ndqlwsdz4v2n36giavsmx33vybn9g7r2fq4m7"))))
     (properties `((upstream-name . "glmmTMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12591,14 +12700,14 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "1.1.2")
+    (version "1.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "01yyfw7fkbxrp0gpwni5y8m4w9l3xckwc3crnvy1fqs1d6gwx3xx"))))
+         "1h60s10b1b5ciqg125mfnhq7nf2paq9svs2lfgwpwdvs4f8l4aq7"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-insight r-mass r-sjlabelled))
@@ -12645,13 +12754,13 @@ conversion of indices such as Cohen's d, r, odds, etc.")
 (define-public r-sjplot
   (package
     (name "r-sjplot")
-    (version "2.8.10")
+    (version "2.8.11")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjPlot" version))
        (sha256
-        (base32 "1rnwhh271xj8xgvvlpqw9ain56mfz37fvl7f6jq9nzx9jxx95bjd"))))
+        (base32 "05iimcf1if1cx9bmsjb6f5gcq58hjiw10vx7kqd4nqnyhzcvy8yr"))))
     (properties `((upstream-name . "sjPlot")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12874,14 +12983,14 @@ user credentials.")
 (define-public r-gert
   (package
     (name "r-gert")
-    (version "1.6.0")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gert" version))
        (sha256
         (base32
-         "0r19vi77yyjw5gbhgjibdysjlszlw2095v14f6sv675zpbp0li4c"))))
+         "1pdqmnlrpbjkqwf9ns2232d3cgyqjkywyd2s8sqinaapnlh87y0x"))))
     (properties `((upstream-name . "gert")))
     (build-system r-build-system)
     (inputs
@@ -13459,6 +13568,38 @@ regressions).  NOTE: Weighted partial correlation calculations pulled to
 address a bug.")
   (license license:gpl2+)))
 
+(define-public r-rcppalgos
+  (package
+    (name "r-rcppalgos")
+    (version "2.5.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "RcppAlgos" version))
+              (sha256
+               (base32
+                "1ndibdf3k02bpcgackzviczramzkay9idn071nix3dhs5miq1ai8"))))
+    (properties `((upstream-name . "RcppAlgos")))
+    (build-system r-build-system)
+    (inputs (list gmp))
+    (propagated-inputs (list r-cpp11 r-gmp))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/jwood000/RcppAlgos")
+    (synopsis
+     "High performance tools for combinatorics and computational mathematics")
+    (description
+     "This package provides optimized functions and flexible combinatorial
+iterators implemented in C++ for solving problems in combinatorics and
+computational mathematics.  It utilizes the @code{RMatrix} class from
+@code{RcppParallel} for thread safety.  There are combination/permutation
+functions with constraint parameters that allow for generation of all results
+of a vector meeting specific criteria.  It is capable of generating specific
+combinations/permutations which sets up nicely for parallelization as well as
+random sampling.  Gmp support permits exploration where the total number of
+results is large.  Additionally, there are several high performance number
+theoretic functions that are useful for problems common in computational
+mathematics.")
+    (license license:gpl2+)))
+
 (define-public r-rcppannoy
   (package
     (name "r-rcppannoy")
@@ -13487,14 +13628,14 @@ This package provides an R interface.")
 (define-public r-rcpphnsw
   (package
     (name "r-rcpphnsw")
-    (version "0.3.0")
+    (version "0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppHNSW" version))
        (sha256
         (base32
-         "01z0plf1i6dyibw4ica8shmijyk1grpqb886hcga72z2cpm4xsx0"))))
+         "0x3w14cz6hkrl8hi6217j0dl65l3yphbzka1dmsvgp3p9waq402g"))))
     (properties `((upstream-name . "RcppHNSW")))
     (build-system r-build-system)
     (propagated-inputs (list r-rcpp))
@@ -13579,14 +13720,14 @@ Bioconductor packages.")
 (define-public r-rgl
   (package
     (name "r-rgl")
-    (version "0.109.2")
+    (version "0.109.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgl" version))
        (sha256
         (base32
-         "15rckpi2vzjc45glqk1mibxw1vja9y08hj9id2qd1si2bb708x8i"))))
+         "1jl89v2gwk1d4q3vn7kx8x7abjbgiisfiyrs4d40qixr6iil8hrz"))))
     (build-system r-build-system)
     (native-inputs
      (list pkg-config
@@ -13814,6 +13955,30 @@ circular variables).")
 for evolution along a phylogenetic tree.")
     (license license:gpl2+)))
 
+(define-public r-fmri
+  (package
+    (name "r-fmri")
+    (version "1.9.6")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "fmri" version))
+              (sha256
+               (base32
+                "1wh77xwpm8f9d9vky3r7vfmkik3hls008ifk8hkm2rq6i06jj53n"))))
+    (properties `((upstream-name . "fmri")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-aws r-metafor r-nlme))
+    (native-inputs (list gfortran))
+    (home-page "http://www.wias-berlin.de/software/imaging/")
+    (synopsis "Analysis of fMRI experiments")
+    (description
+     "This package contains R-functions to perform an fMRI analysis as
+described in Polzehl and Tabelow (2019) <DOI:10.1007/978-3-030-29184-6>,
+Tabelow et al. (2006) <DOI:10.1016/j.neuroimage.2006.06.029>, Polzehl et
+al. (2010) <DOI:10.1016/j.neuroimage.2010.04.241>, Tabelow and Polzehl (2011)
+<DOI:10.18637/jss.v044.i11>.")
+    (license license:gpl2+)))
+
 (define-public r-fmsb
   (package
     (name "r-fmsb")
@@ -13898,6 +14063,31 @@ Anderson-Darling Distribution\".")
     ;; Any version of the GPL.
     (license license:gpl3+)))
 
+(define-public r-adimpro
+  (package
+    (name "r-adimpro")
+    (version "0.9.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "adimpro" version))
+              (sha256
+               (base32
+                "0njw38vcdm02sni193nj10mpv7hiklpamrkjlz5bnhjxx9mvf4cl"))))
+    (properties `((upstream-name . "adimpro")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-awsmethods
+           imagemagick))
+    (native-inputs (list gfortran))
+    (home-page "https://www.wias-berlin.de/software/imaging/")
+    (synopsis "Adaptive smoothing of digital images")
+    (description
+     "This package implements tools for manipulation of digital images and the
+Propagation Separation approach by Polzehl and Spokoiny (2006)
+<DOI:10.1007/s00440-005-0464-1> for smoothing digital images, see Polzehl and
+Tabelow (2007) <DOI:10.18637/jss.v019.i01>.")
+    (license license:gpl2+)))
+
 (define-public r-admisc
   (package
     (name "r-admisc")
@@ -13923,6 +14113,47 @@ others, a highly flexible recoding routine and a more flexible alternative to
 the base function @code{with()}.")
     (license license:gpl3+)))
 
+(define-public r-oro-nifti
+  (package
+    (name "r-oro-nifti")
+    (version "0.11.4")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "oro.nifti" version))
+              (sha256
+               (base32
+                "01mn90qxb7i15zr83xrl2cn4akayfzpm83r5x71zczz3qb9gbr7g"))))
+    (properties `((upstream-name . "oro.nifti")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-abind r-bitops r-rnifti))
+    (home-page "https://rigorousanalytics.blogspot.com")
+    (synopsis "Vizualization of medical imaging data")
+    (description
+     "This package provides functions for the input/output and visualization
+of medical imaging data that follow either the ANALYZE, NIfTI or AFNI formats.
+This package is part of the Rigorous Analytics bundle.")
+    (license license:bsd-3)))
+
+(define-public r-mritc
+  (package
+    (name "r-mritc")
+    (version "0.5-2")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "mritc" version))
+              (sha256
+               (base32
+                "07b1b2k1ka43ikj2mhwnazw3ig7w10bf759fimxpksvk5k6wanx2"))))
+    (properties `((upstream-name . "mritc")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-lattice r-misc3d r-oro-nifti))
+    (home-page "https://cran.r-project.org/package=mritc")
+    (synopsis "MRI tissue classification")
+    (description "This package provides various methods for MRI tissue
+classification.")
+    ;; Any version of the GPL.
+    (license license:gpl3+)))
+
 (define-public r-sodium
   (package
     (name "r-sodium")
@@ -14327,6 +14558,33 @@ while other are highly specific for the special data format used for
 @dfn{quantitative language comparison} (QLC).")
     (license license:gpl3)))
 
+(define-public r-qmri
+  (package
+    (name "r-qmri")
+    (version "1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "qMRI" version))
+              (sha256
+               (base32
+                "10x59g8awxjib5j5mc1yd5wsibk3z6ki6zifxsg8azl0zblxbscf"))))
+    (properties `((upstream-name . "qMRI")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-adimpro r-aws r-awsmethods r-oro-nifti
+                             r-stringr))
+    (native-inputs (list gfortran r-knitr))
+    (home-page "http://www.wias-berlin.de/research/ats/imaging/")
+    (synopsis "Methods for quantitative magnetic resonance imaging (qMRI)")
+    (description
+     "This package provides implementation of methods for estimation of
+quantitative maps from @dfn{Multi-Parameter Mapping} (MPM) acquisitions
+including adaptive smoothing methods in the framework of the ESTATICS model.
+The smoothing method is described in Mohammadi et
+al. (2017). <doi:10.20347/WIAS.PREPRINT.2432>.  Usage of the package is also
+described in Polzehl and Tabelow (2019), Magnetic Resonance Brain Imaging,
+Chapter 6, Springer, Use R! Series. <doi:10.1007/978-3-030-29184-6_6>.")
+    (license license:gpl2+)))
+
 (define-public r-ddrtree
   (package
     (name "r-ddrtree")
@@ -14567,6 +14825,27 @@ library which allows parsing of NEXUS, Newick and other phylogenetic tree
 methods, incorporating one or more trees and trait data.")
     (license license:gpl2+)))
 
+(define-public r-phylotools
+  (package
+    (name "r-phylotools")
+    (version "0.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "phylotools" version))
+              (sha256
+               (base32
+                "1dhk1ncp5zi4zl1xfnjz64v983dm7bq7iimfjin80j0bdcpps44w"))))
+    (properties `((upstream-name . "phylotools")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ape))
+    (home-page "https://github.com/helixcn/phylotools")
+    (synopsis "Phylogenetic tools for eco-phylogenetics")
+    (description
+     "This package provides a collection of tools for building RAxML
+supermatrix using PHYLIP or aligned FASTA files.  These functions will be
+useful for building large phylogenies using multiple markers.")
+    (license license:gpl2)))
+
 (define-public r-rnexml
   (package
     (name "r-rnexml")
@@ -14605,14 +14884,14 @@ and compatibility with @code{ape} objects.")
 (define-public r-rnifti
   (package
     (name "r-rnifti")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RNifti" version))
        (sha256
         (base32
-         "0kkj9dby85iwnlqb7zwrh1xidlvqip7i1mbgckb5qg4b0a3zgibc"))))
+         "058jzhw91wd4hb9l06mn0ihf1yp2fapz1fyb32w9bjwxq7qxvii2"))))
     (properties `((upstream-name . "RNifti")))
     (build-system r-build-system)
     (inputs (list zlib))
@@ -15527,13 +15806,13 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
 (define-public r-spam
   (package
     (name "r-spam")
-    (version "2.8-0")
+    (version "2.9-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spam" version))
        (sha256
-        (base32 "1ann2a2ifr3z983fcg1c0pkgmbxz6a0ym5q1dmq1r382bd1pg0fr"))))
+        (base32 "1nvx965vxzs697k9m2l40a15bykflksn9bwa4py1p2wqg6922bn3"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-dotcall64))
@@ -15557,13 +15836,13 @@ Differences with other sparse matrix packages are:
 (define-public r-fields
   (package
     (name "r-fields")
-    (version "13.3")
+    (version "14.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fields" version))
        (sha256
-        (base32 "1hs4k5a9hh0r5fsrnpnvs6wvf78xpjzj8a2j6643dsz73a5q6ln6"))))
+        (base32 "0rjg2yx52f5s1fhg6jbk9lfv92qmjqwd6bwpz9rx1fkml9vy8zch"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-maps r-spam r-viridis))
@@ -15782,6 +16061,71 @@ putative directions).")
 library.")
     (license license:artistic2.0)))
 
+(define-public r-profvis
+  (package
+    (name "r-profvis")
+    (version "0.3.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "profvis" version))
+              (sha256
+               (base32
+                "1f86m426pcf90l29hf4hkirzf8f38dihk52bxbdq2gvrrdili5s3"))
+              (modules '((guix build utils)))
+              (snippet
+               '(with-directory-excursion "inst/htmlwidgets/lib"
+                  (for-each delete-file
+                            (list "highlight/highlight.js" ;from rmarkdown
+                                  "jquery/jquery.min.js" ;version 1.12.4
+                                  "d3/d3.min.js")))))) ;version 3.5.6
+    (properties `((upstream-name . "profvis")))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'process-javascript
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "inst/htmlwidgets/lib/"
+               (copy-file
+                (search-input-file
+                 inputs "/site-library/rmarkdown/rmd/h/highlightjs/highlight.js")
+                "highlight/highlight.js")
+               (let ((mapping
+                      `((,(assoc-ref inputs "js-jquery")
+                         . "jquery/jquery.min.js")
+                        (,(assoc-ref inputs "js-d3")
+                         . "d3/d3.min.js"))))
+                 (for-each (lambda (source target)
+                             (format #true "Processing ~a --> ~a~%"
+                                     source target)
+                             (invoke "esbuild" source "--minify"
+                                     (string-append "--outfile=" target)))
+                           (map car mapping)
+                           (map cdr mapping)))))))))
+    (native-inputs
+     `(("esbuild" ,esbuild)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("js-d3"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/d3/d3/v3.5.6/d3.js")
+           (sha256
+            (base32
+             "17qlbwn7vgx335gciq6zp2ib6zg1r9lfa6p1bd9g0ds0xbcsbvgd"))))
+       ("js-jquery"
+        ,(origin
+           (method url-fetch)
+           (uri "https://code.jquery.com/jquery-1.12.4.js")
+           (sha256
+            (base32
+             "0x9mrc1668icvhpwzvgafm8xm11x9lfai9nwr66aw6pjnpwkc3s3"))))))
+    (propagated-inputs (list r-htmlwidgets r-stringr))
+    (home-page "https://rstudio.github.io/profvis/")
+    (synopsis "Interactive visualizations for profiling R code")
+    (description "This package provides interactive visualizations for
+profiling R code.")
+    (license license:gpl3)))
+
 (define-public r-protviz
   (package
     (name "r-protviz")
@@ -16014,14 +16358,14 @@ subsetting.")
 (define-public r-globals
   (package
     (name "r-globals")
-    (version "0.15.1")
+    (version "0.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "globals" version))
        (sha256
         (base32
-         "0svsssf8swzsihng6c8wpmn33lxaj4f5xq975ywlr950svmjfz7f"))))
+         "0507lxykjz44yws4s4hb99zb3bn6kn6fy8m87lf2dsm431j40gy5"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-codetools))
@@ -16038,14 +16382,14 @@ them in distributed compute environments.")
 (define-public r-parallelly
   (package
     (name "r-parallelly")
-    (version "1.32.0")
+    (version "1.32.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parallelly" version))
        (sha256
         (base32
-         "0yg1hmgkp81ihgwqaynqh0jgki2mkdy78j4fgjmqvc1ig5ga774h"))))
+         "146a9i999vrflr4g1fph1pgkl4bq0dw102bjw8pp1zy7kbsqbiii"))))
     (properties `((upstream-name . "parallelly")))
     (build-system r-build-system)
     (home-page "https://github.com/HenrikBengtsson/parallelly")
@@ -16066,14 +16410,14 @@ port-forwarding to your local computer.")
 (define-public r-future
   (package
     (name "r-future")
-    (version "1.26.1")
+    (version "1.27.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future" version))
        (sha256
         (base32
-         "1mchjdvvwgs8v0iv8z5m6gav3xzvnq11h8qrc7lfnrb2x3d0np53"))))
+         "1ybhbdw158403n6plipgiwkw710pxpnq3mq8pdx5g8q3jibv93nh"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -16809,14 +17153,14 @@ probabilities from a standard bivariate normal CDF.")
 (define-public r-lavaan
   (package
     (name "r-lavaan")
-    (version "0.6-11")
+    (version "0.6-12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lavaan" version))
        (sha256
         (base32
-         "026k32paf51lpy6zxm9m81zg9szx14j37dxdip6nba334jw97h9c"))))
+         "17h79pnww1mihvlp6ap0r6d8wnly9bwszj13l5dkby0284z2fj40"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-mass r-mnormt r-numderiv r-pbivnorm))
@@ -17296,17 +17640,17 @@ customizable sets, and intervals.")
 (define-public r-partitions
   (package
     (name "r-partitions")
-    (version "1.10-4")
+    (version "1.10-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "partitions" version))
        (sha256
         (base32
-         "1ik7cj2yfybx4v847nvnjrbkd0k66pfqqv6lkygfnlrldi0r205i"))))
+         "1kxiy1wl7dr39kyfg2y9hd67s32knd83r2jsb7j9p3vg8iqq7yqb"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-gmp r-mathjaxr r-polynom r-sets))
+     (list r-gmp r-mathjaxr r-polynom r-rdpack r-sets))
     (home-page "https://cran.r-project.org/web/packages/partitions")
     (synopsis "Additive partitions of integers")
     (description
@@ -17627,16 +17971,27 @@ high-performance functions are provided here.")
 (define-public r-s2
   (package
     (name "r-s2")
-    (version "1.0.7")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "s2" version))
        (sha256
         (base32
-         "0gwydn6wdl675ydkcckrci6ylcx30qn8nfhmrp4qx4r9mv3c2410"))))
+         "05n459rp5b1wk826sq3c5d2z1xwgkpfp8m1jnfshvs4gadlfkap3"))))
     (properties `((upstream-name . "s2")))
     (build-system r-build-system)
+    (arguments
+     (list
+      #:phases
+      `(modify-phases %standard-phases
+         ;; We don't want to convert -lssl to -l:libssl.so.1.1; there is only
+         ;; one libssl.so anyway and the -l:* thing breaks linking.
+         (add-after 'unpack 'undo-library-versioning
+           (lambda _
+             (substitute* "configure"
+               (("PKG_LIBS_VERSIONED=.*")
+                "PKG_LIBS_VERSIONED=\"${PKG_LIBS}\"\n")))))))
     (propagated-inputs
      (list r-rcpp r-wk))
     (inputs
@@ -17657,14 +18012,14 @@ information about geometries.")
 (define-public r-sf
   (package
     (name "r-sf")
-    (version "1.0-7")
+    (version "1.0-8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sf" version))
        (sha256
         (base32
-         "0lsl4rh4lbv386hxlsnnwsjb5x1n9d3z0ckjmxakmmrqjjmiywyh"))))
+         "0cl7m47ar3iw95rpwpmjl23frdbscxa15q39mlzmwswxwy871p1x"))))
     (build-system r-build-system)
     (inputs
      (list gdal geos proj sqlite zlib))
@@ -18166,14 +18521,14 @@ authoring books and technical documents with R Markdown.")
 (define-public r-optparse
   (package
     (name "r-optparse")
-    (version "1.7.1")
+    (version "1.7.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "optparse" version))
        (sha256
         (base32
-         "1rqz0y4r94y3mwbb9kyz97cjqpnprka96qbncvbnbmgg2d630kij"))))
+         "1v87db7fm494dwxvdsnl1m2kj84nplq7pkh0g41najhx0npy31v2"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-getopt))
@@ -18583,14 +18938,14 @@ consists of @code{grid} grobs and viewports that can then be manipulated with
 (define-public r-farver
   (package
     (name "r-farver")
-    (version "2.1.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "farver" version))
        (sha256
         (base32
-         "1x6ffwxqbrwlylnk995jz2a6nz2y9z59jaq0ncpni7q40w367j75"))))
+         "1klnr73fhm7n46q85in1v9gi99y6rcdzzg4h4wvnbx23lxndmkqd"))))
     (build-system r-build-system)
     (home-page "https://github.com/thomasp85/farver")
     (synopsis "Vectorized color conversion and comparison")
@@ -18722,6 +19077,27 @@ Minkowski Sum of general polygons.  There is a function for removing
 self-intersections from polygon data.")
     (license license:boost1.0)))
 
+(define-public r-urlchecker
+  (package
+    (name "r-urlchecker")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "urlchecker" version))
+              (sha256
+               (base32
+                "06034lb94krbzawqg5xklwcksvyyzl3qy355f66baj5pw7dms5k2"))))
+    (properties `((upstream-name . "urlchecker")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-cli r-curl r-xml2))
+    (home-page "https://github.com/r-lib/urlchecker")
+    (synopsis "Run CRAN URL checks from older R versions")
+    (description
+     "This package provides the URL checking tools available in R 4.1+ as a
+package for earlier versions of R.  It also uses concurrent requests so can be
+much faster than the serial versions.")
+    (license license:gpl3)))
+
 (define-public r-urltools
   (package
     (name "r-urltools")
@@ -18823,14 +19199,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
 (define-public r-ggraph
   (package
     (name "r-ggraph")
-    (version "2.0.5")
+    (version "2.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggraph" version))
        (sha256
         (base32
-         "0m4n8iw2b9jk8hcy5blg5w59zsqcpsbv27wbw598dvljpafx8sp3"))))
+         "02nl92vgyp5pc61r14mmmbfhg5nhb6fibjjb3djfag2ahc6wj2kv"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-digest
@@ -19244,14 +19620,14 @@ etc.).  Text boxes with automatic word wrap are also supported.")
 (define-public r-flexdashboard
   (package
     (name "r-flexdashboard")
-    (version "0.5.2")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flexdashboard" version))
        (sha256
         (base32
-         "1bh759llp15fxrx2rwvxd8p3w84vjmkid32ism7zg49a127fjib4"))
+         "0bvw2ca6xxscia4hvq505qvjf6zkgpsqv86f1s78aknzwr9jsikm"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -19260,7 +19636,7 @@ etc.).  Text boxes with automatic word wrap are also supported.")
            (delete-file "inst/www/sly/sly.min.js")
            (delete-file "inst/www/stickytableheaders/jquery.stickytableheaders.min.js")
            (delete-file "inst/www/prism/prism.js")
-           #t))))
+           (delete-file "inst/www/featherlight/featherlight.min.js")))))
     (build-system r-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -19307,14 +19683,16 @@ etc.).  Text boxes with automatic word wrap are also supported.")
                                  (call-with-output-file target
                                    (lambda (port)
                                      (dump-port minified port)))))
-                             sources targets))))
-             #t)))))
+                             sources targets)))))))))
     (propagated-inputs
-     (list r-htmltools
+     (list r-bslib
+           r-htmltools
            r-htmlwidgets
            r-jsonlite
            r-knitr
            r-rmarkdown
+           r-sass
+           r-scales
            r-shiny))
     (native-inputs
      `(("uglifyjs" ,node-uglify-js)
@@ -20814,14 +21192,14 @@ emphasize hidden group structures in networks or focus on specific nodes.")
 (define-public r-terra
   (package
     (name "r-terra")
-    (version "1.5-34")
+    (version "1.6-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "terra" version))
        (sha256
         (base32
-         "075azi23gi1b1jxm3s1f1hpc6in7qz4fp38shq9pflfnzbs8ib9w"))))
+         "1p67797i9n4cjk1lp4a84h220428nxv940n1kjg1ysl3chrf0w1l"))))
     (properties `((upstream-name . "terra")))
     (build-system r-build-system)
     (inputs
@@ -21094,13 +21472,13 @@ programming problems.")
 (define-public r-desolve
   (package
     (name "r-desolve")
-    (version "1.32")
+    (version "1.33")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "deSolve" version))
        (sha256
-        (base32 "1bfr4w760nr7mjhpmf32z39swr6isnn1665cld2d1pdgx8b0yrvl"))))
+        (base32 "115nr3j1zp2016qpk9ab6r8n15zygvlihlmc10ilfznf0ng9gpki"))))
     (properties `((upstream-name . "deSolve")))
     (build-system r-build-system)
     (native-inputs
@@ -21123,13 +21501,13 @@ to ODEs by numerical differencing.")
 (define-public r-pmcmrplus
   (package
     (name "r-pmcmrplus")
-    (version "1.9.4")
+    (version "1.9.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "PMCMRplus" version))
        (sha256
-        (base32 "16m1pdrzjq9vnx5v7zv56mz9r1205rkw92883cxaqbvdpds6dhqy"))))
+        (base32 "15xhwq231vgq9q7pk1r4z11wijn4hgdwcly1n9nxxa05w15x9q33"))))
     (properties `((upstream-name . "PMCMRplus")))
     (build-system r-build-system)
     (inputs (list gmp))
@@ -21246,14 +21624,14 @@ structural data.")
 (define-public r-bios2cor
   (package
     (name "r-bios2cor")
-    (version "2.2")
+    (version "2.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Bios2cor" version))
        (sha256
         (base32
-         "1wkj9vr33m9jilidil9jpw5rzr3pf7gkimxdvch22ks4bgkx7l1w"))))
+         "0xj7ab9a463p4a67y0hlv6mfd08xf8didkn2mwrfa7gxjqqvix4z"))))
     (properties `((upstream-name . "Bios2cor")))
     (build-system r-build-system)
     (propagated-inputs
@@ -21805,14 +22183,14 @@ Social Sciences\" by Mark S. Handcock and Martina Morris, Springer-Verlag,
 (define-public r-accept
   (package
     (name "r-accept")
-    (version "0.9.0")
+    (version "0.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "accept" version))
        (sha256
         (base32
-         "13kx8fbnbpasjklgbq2rf4n73j2s8rvy5v77ywqhfzln24937qgh"))))
+         "0risdxw17jk3d56q40a78slb1rcj93b6kz71hn5hbwr0iih722gr"))))
     (properties `((upstream-name . "accept")))
     (build-system r-build-system)
     (propagated-inputs
@@ -22479,14 +22857,14 @@ the @code{aroma.affymetrix} package.")
 (define-public r-r-filesets
   (package
     (name "r-r-filesets")
-    (version "2.14.0")
+    (version "2.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "R.filesets" version))
        (sha256
         (base32
-         "08xv8b3c81nf54viyr3w912al18483k5gfnjpg7bxbdfk70dfzbh"))))
+         "14dngx6ffhfvlaixpvlq890nwgil6zyaw8wy3dlcrv001wynzmms"))))
     (properties `((upstream-name . "R.filesets")))
     (build-system r-build-system)
     (arguments
@@ -23227,14 +23605,14 @@ variable observed over time.")
 (define-public r-fda
   (package
     (name "r-fda")
-    (version "6.0.4")
+    (version "6.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fda" version))
        (sha256
         (base32
-         "0r2a1rsg904gz6vwcw5jrji7a7pspkfcxmnl9dswpglkn2dsans2"))))
+         "1wdq35acxavarh7qrxxmdpcjc9jcs56mp3p9rbb4qa35ziv5fi0l"))))
     (properties `((upstream-name . "fda")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23459,14 +23837,14 @@ API; see the package vignette for details.")
 (define-public r-actuar
   (package
     (name "r-actuar")
-    (version "3.2-2")
+    (version "3.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "actuar" version))
        (sha256
         (base32
-         "0dhpaivyga0jwvw1csagbx74biy9jfkw4a8sa871579njxl1x7p1"))))
+         "1qi9y2x93pxxbynwl06rbiasm86vb0jh7sckw1dw3s21rsx1f5c5"))))
     (properties `((upstream-name . "actuar")))
     (build-system r-build-system)
     (propagated-inputs (list r-expint))
@@ -24354,14 +24732,14 @@ OpenMP.")
 (define-public r-emplik
   (package
     (name "r-emplik")
-    (version "1.1-1")
+    (version "1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emplik" version))
        (sha256
         (base32
-         "1kw8g8j075bsicdvgkjf4870rfv5c30gvmw6qkkaz3ki22x74w77"))))
+         "039kz7703ri91j2i93dr8ixap7i63sr72id9zp74cm7ws9pd1b27"))))
     (properties `((upstream-name . "emplik")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24613,19 +24991,20 @@ Raftery, Appl.Statistics, 1989); it includes inference and basic methods.")
 (define-public r-forecast
   (package
     (name "r-forecast")
-    (version "8.16")
+    (version "8.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "forecast" version))
        (sha256
         (base32
-         "0zvn44k7npxai8kj0hgxaaqv1hgd8rxicnvj4cg7wfl8ba4yn0cz"))))
+         "01633q2fg4cl8zg61dvsnrk8nk1iknk9jqk7p7xnkypxjckm7zl9"))))
     (properties `((upstream-name . "forecast")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-colorspace
            r-fracdiff
+           r-generics
            r-ggplot2
            r-lmtest
            r-magrittr
@@ -24697,14 +25076,14 @@ programming} (OOP) using R Reference Class.")
 (define-public r-proxyc
   (package
     (name "r-proxyc")
-    (version "0.2.4")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "proxyC" version))
        (sha256
         (base32
-         "1mcimswrx1cjjm7wsgkzfrgh3jpf4sncwfvdvg2f14fzfzy7afd6"))))
+         "0n3rjc64b3cbccwjajpzd9gr1frgji6rsylw67xswrr9qxkrm0fd"))))
     (properties `((upstream-name . "proxyC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24811,14 +25190,14 @@ Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
 (define-public r-quanteda
   (package
     (name "r-quanteda")
-    (version "3.2.1")
+    (version "3.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quanteda" version))
        (sha256
         (base32
-         "102wlx6481fskgdr5wv467n29f666q0qg9kjm0ivqfg9xsbvza12"))))
+         "0qb5yl2bxh6mq4xnjviqv8hfy9fxnx4hmxf06icwldpgx15afa31"))))
     (properties `((upstream-name . "quanteda")))
     (build-system r-build-system)
     (propagated-inputs
@@ -25033,13 +25412,13 @@ actuarial models such as pension mathematics.")
 (define-public r-matrixextra
   (package
     (name "r-matrixextra")
-    (version "0.1.10")
+    (version "0.1.11")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MatrixExtra" version))
        (sha256
-        (base32 "00f6sgw6p2709gs3df68yr59nvsr429pk9xql71id3kachjzh618"))))
+        (base32 "0d32b8l28ds7162rgbwbg9g206hds1zzv1mqq7aa9m6f9gg8x3am"))))
     (properties `((upstream-name . "MatrixExtra")))
     (build-system r-build-system)
     (propagated-inputs
@@ -25275,14 +25654,14 @@ importation and recoding.")
 (define-public r-rockchalk
   (package
     (name "r-rockchalk")
-    (version "1.8.152")
+    (version "1.8.157")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rockchalk" version))
        (sha256
         (base32
-         "1d15jlgcy35pvaicaddd4zrhwm5ajb9yc3jk6dyxm99gc5wcn6h3"))))
+         "13g2rdnxazqfgy653d7vj6w79b2vgnd7bbz0sqn9k4qiig59jh41"))))
     (properties `((upstream-name . "rockchalk")))
     (build-system r-build-system)
     (propagated-inputs
@@ -25322,14 +25701,14 @@ output in R.")
 (define-public r-bdgraph
   (package
     (name "r-bdgraph")
-    (version "2.67")
+    (version "2.68")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "BDgraph" version))
        (sha256
         (base32
-         "0s2j4462zlgyjnqvvvxg4lynhmwwnjaw1cr1chzmagfvaj94qhhz"))))
+         "1mixzkk8shcbyrxydhchq483j2jh2icgmdshmrl79a8vsnz9mmrm"))))
     (properties `((upstream-name . "BDgraph")))
     (build-system r-build-system)
     (propagated-inputs
@@ -25628,14 +26007,14 @@ and reproducible way.")
 (define-public r-rsconnect
   (package
     (name "r-rsconnect")
-    (version "0.8.26")
+    (version "0.8.27")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rsconnect" version))
        (sha256
         (base32
-         "1vazdgpha7545h4riz11njbl8azg38i1y1a5nfckfx03v2zapbzs"))))
+         "170niwxcmyvad7qw8k115i5a48x3wiidcd82x9anikf7bxhdai0a"))))
     (properties `((upstream-name . "rsconnect")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28482,21 +28861,21 @@ model.")
 (define-public r-igraph
   (package
     (name "r-igraph")
-    (version "1.3.2")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "igraph" version))
        (sha256
         (base32
-         "0863gr9k7rvjrm7gz4l35q827jh8802m1q6f51ficgi21qc6cl0g"))))
+         "1kyic5xmwgw5lm30rsvsf1x3m0yxysdlrnw63xn4fh8j4vcc66ms"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran))
     (inputs
      (list gmp glpk libxml2 zlib))
     (propagated-inputs
-     (list r-magrittr r-matrix r-pkgconfig))
+     (list r-magrittr r-matrix r-pkgconfig r-rlang))
     (home-page "https://igraph.org")
     (synopsis "Network analysis and visualization")
     (description
@@ -28509,14 +28888,14 @@ more.")
 (define-public r-workflows
   (package
     (name "r-workflows")
-    (version "0.2.6")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "workflows" version))
        (sha256
         (base32
-         "0xhc1j25fjipw8hvcpdbvfm640kp0flwvifj5f7g4n6b3wb8cm6a"))))
+         "0bsizgqin5cya0xibs1nqzadrrxcph8n4bh5vlcfbqqzzkv7cx1b"))))
     (properties `((upstream-name . "workflows")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28730,14 +29109,14 @@ pipeline friendly so that data processing with lists can be chained.")
 (define-public r-rsample
   (package
     (name "r-rsample")
-    (version "1.0.0")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rsample" version))
        (sha256
         (base32
-         "0n3pzjxdb6s0cbpalhi1sjba6ifrvjjb448dczvryrqjk7pqvby5"))))
+         "1iy61riwjch9z4m6k7whsrkl80sk9sww5lf1np4iq4vdfq6w01jb"))))
     (properties `((upstream-name . "rsample")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28821,14 +29200,14 @@ for creating, simulating, or validating values for such parameters.")
 (define-public r-tune
   (package
     (name "r-tune")
-    (version "0.2.0")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tune" version))
        (sha256
         (base32
-         "05gxlsaqv6sjk11r5g4nkdd6hlb3bnfmc29cx4vln1blha37jx4i"))))
+         "0jh29dy4gwa1fyi01fp1305hkxw1mpkx704j6kydplh8h09rv80p"))))
     (properties `((upstream-name . "tune")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28849,6 +29228,7 @@ for creating, simulating, or validating values for such parameters.")
            r-rsample
            r-tibble
            r-tidyr
+           r-tidyselect
            r-vctrs
            r-withr
            r-workflows
@@ -28865,14 +29245,14 @@ methods, and post-processing steps.")
 (define-public r-workflowsets
   (package
     (name "r-workflowsets")
-    (version "0.2.1")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "workflowsets" version))
        (sha256
         (base32
-         "0q42nhnw0mbivadcfb07v71fp39x8fcnjipvn5l5yhjzc56cfxi8"))))
+         "12wj0m6kqnjh8k5k14kqh40wf14gzyg5l3shhbpr2lvk87l9ssqq"))))
     (properties `((upstream-name . "workflowsets")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28881,7 +29261,10 @@ methods, and post-processing steps.")
            r-hardhat
            r-generics
            r-ggplot2
+           r-glue
            r-lifecycle
+           r-parsnip
+           r-pillar
            r-prettyunits
            r-purrr
            r-rlang
@@ -29216,16 +29599,22 @@ expressive statistical grammar that coheres with the Tidy design framework.")
 (define-public r-modeldata
   (package
     (name "r-modeldata")
-    (version "0.1.1")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "modeldata" version))
        (sha256
         (base32
-         "0jgrwf9k8p9j3ywg3yv2wzwsx3snlwm3dd9vfqwhlr7j63jg3cm4"))))
+         "16ad8g86alahirgmp8bhb6v1ghayw965bdz5mrpnq7nnncazaqcm"))))
     (properties `((upstream-name . "modeldata")))
     (build-system r-build-system)
+    (propagated-inputs
+     (list r-dplyr
+           r-mass
+           r-purrr
+           r-rlang
+           r-tibble))
     (home-page "https://modeldata.tidymodels.org")
     (synopsis "Data sets useful for modeling packages")
     (description
@@ -29262,14 +29651,14 @@ use.")
 (define-public r-tidymodels
   (package
     (name "r-tidymodels")
-    (version "0.2.0")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidymodels" version))
        (sha256
         (base32
-         "1xkv4s4kn7k9137svb39zrm5302gxpxyp1jv5bb6z0xrvj5wwa4i"))))
+         "1zqdq7zwmhc19zs77x27l5ja01rhj01v8dw182j8jhy49h0alyz3"))))
     (properties `((upstream-name . "tidymodels")))
     (build-system r-build-system)
     (propagated-inputs
@@ -29454,14 +29843,14 @@ covariate (usually group indicator) and the scores.")
 (define-public r-qtl
   (package
     (name "r-qtl")
-    (version "1.50")
+    (version "1.52")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "qtl" version))
        (sha256
         (base32
-         "1mcy9wlp5lj5f3z4mf3n5li7x32vj67rmhjnzsp8fhfw0ipnaf1d"))))
+         "0q49g3ar1451whsl6ig7kz4mg8s9zxlcvgkj4ivyw4995wbwc2ij"))))
     (build-system r-build-system)
     (home-page "https://rqtl.org/")
     (synopsis "R package for analyzing QTL experiments in genetics")
@@ -30054,13 +30443,13 @@ well as email and push notifications.")
 (define-public r-mlr3measures
   (package
     (name "r-mlr3measures")
-    (version "0.4.1")
+    (version "0.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3measures" version))
               (sha256
                (base32
-                "1kbw3xd7c9x65v9zzs8i5skmrvl0mf2wsbyssmiif0lvrbzfhcmb"))))
+                "0k0i1xx63lds1870p2ljy1dlp2i376gdd0sq9s4xiqljqjb8va57"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-checkmate r-prroc))
@@ -30161,13 +30550,13 @@ performing ordinal regression.")
 (define-public r-paradox
   (package
     (name "r-paradox")
-    (version "0.9.0")
+    (version "0.10.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "paradox" version))
               (sha256
                (base32
-                "0fzq59903fklgj3kblnpzasy13a82s72c1qjsy7d1m0fyj28ahdw"))))
+                "08h92wk8splf0w3rach9zbk3xz13phgcd1yybmgbs0sj4vx93whd"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-backports r-checkmate r-data-table r-mlr3misc r-r6))
@@ -30182,13 +30571,13 @@ implemented as @code{R6} classes.")
 (define-public r-mlr3
   (package
     (name "r-mlr3")
-    (version "0.13.3")
+    (version "0.13.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3" version))
               (sha256
                (base32
-                "010kl51zsgpc0qv63g1fg9kiw9m0wzqskcr14f1j8b9zi1lwi0bf"))))
+                "13g0krjry0da1yfm6hrdq63ga5rwag5lkgp375394michiipnbwk"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-r6
@@ -30596,14 +30985,14 @@ AGG to use as alternative to the raster devices provided through the
 (define-public r-downlit
   (package
     (name "r-downlit")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "downlit" version))
        (sha256
         (base32
-         "1h9jjrrfm1k4lz7hlg9qvqny5s1qq3p4l9pzsy6vqg4zmh2nb85v"))))
+         "0g3yncj3gmaqsc6cw7g9slgvd0kfk2414yz5m1dilk8h15lzdprk"))))
     (properties `((upstream-name . "downlit")))
     (build-system r-build-system)
     (propagated-inputs
@@ -30630,21 +31019,21 @@ in output to the equivalent HTML.")
 (define-public r-pkgdown
   (package
     (name "r-pkgdown")
-    (version "2.0.5")
+    (version "2.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgdown" version))
        (sha256
         (base32
-         "1bk10jh01v4yqzmpvhs2iw9hwwj0nldskbm2942hjx3xf08y1q4i"))))
+         "0sbz3kzd0hbdnszylsb281arldn2z1c9yxifhj4zv2dilp46b6nj"))))
     (properties `((upstream-name . "pkgdown")))
     (build-system r-build-system)
     (inputs (list pandoc))
     (propagated-inputs
      (list r-bslib
            r-callr
-           r-crayon
+           r-cli
            r-desc
            r-digest
            r-downlit
@@ -31101,14 +31490,14 @@ data you need the @code{pdftools} package.")
 (define-public r-pdftools
   (package
     (name "r-pdftools")
-    (version "3.2.1")
+    (version "3.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pdftools" version))
        (sha256
         (base32
-         "1b9ppdndvlf8nl0i3xy1rx4f9j0j8ic6q9n0c4zn3rv6jdy8zqfi"))))
+         "151f7vaznxigwka4qhp17v4gnahm245rfgcvb8j132vix7md44q9"))))
     (properties `((upstream-name . "pdftools")))
     (build-system r-build-system)
     (inputs (list zlib poppler))
@@ -31256,14 +31645,14 @@ light-weight geometry library used by @url{http://postgis.net/,PostGIS}.")
 (define-public r-stars
   (package
     (name "r-stars")
-    (version "0.5-5")
+    (version "0.5-6")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "stars" version))
         (sha256
           (base32
-            "0hcbzr8c7wk30qjwrvx6bflzwkjpms79pavaxawnq1h8kry5fngk"))))
+            "0qcli9bangpym4yp96yfibd5f4li5qw1622jnbvzfd9n8aakqhg0"))))
     (properties `((upstream-name . "stars")))
     (build-system r-build-system)
     (propagated-inputs
@@ -31340,31 +31729,32 @@ supply the workflow to create thematic maps.  This package also facilitates
 (define-public r-rtweet
   (package
     (name "r-rtweet")
-    (version "0.7.0")
+    (version "1.0.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "rtweet" version))
-        (sha256
-          (base32
-            "05pbvxm2vmf6935b9s6663k3aifnkr3m52wh2jvnplmrwyrfpn9n"))))
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rtweet" version))
+       (sha256
+        (base32
+         "1dhdq2c2zl88h29caqpm7zh2i5970q7rfg98zf2xb7x4zak7bq9x"))))
     (properties `((upstream-name . "rtweet")))
     (build-system r-build-system)
     (propagated-inputs
-      (list r-httpuv
-            r-httr
-            r-jsonlite
-            r-magrittr
-            r-progress
-            r-rcpp
-            r-tibble))
+     (list r-bit64
+           r-curl
+           r-httr
+           r-jsonlite
+           r-lifecycle
+           r-progress
+           r-rlang
+           r-tibble
+           r-withr))
     (native-inputs (list r-knitr))
-    (home-page
-      "https://docs.ropensci.org/rtweet/")
-    (synopsis "Collecting Twitter Data")
+    (home-page "https://docs.ropensci.org/rtweet/")
+    (synopsis "Collect Twitter data")
     (description
-      "An implementation of calls designed to collect and organize Twitter data
-via @url{https://developer.twitter.com/en/docs,Twitter's REST and stream
+     "This package implements tools designed to collect and organize Twitter
+data via @url{https://developer.twitter.com/en/docs,Twitter's REST and stream
 Application Program Interfaces (API)}.")
     (license license:expat)))
 
@@ -31544,14 +31934,14 @@ quantitative real-time polymerase chain reaction (qPCR).")
 (define-public r-textplot
   (package
     (name "r-textplot")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "textplot" version))
         (sha256
           (base32
-            "10nxh9axhy6kyp6f3rz7smq08yl35ydx9jx47bs7i0bmcl2kwxvl"))))
+            "1ag2h365zsx0fxbl05s2yfhf1q13p40akvbqg4qwsb5ynh2a56bf"))))
     (properties `((upstream-name . "textplot")))
     (build-system r-build-system)
     (propagated-inputs
@@ -32013,14 +32403,14 @@ the @code{raster} package that is suitable for extracting raster values using
 (define-public r-rapiserialize
   (package
     (name "r-rapiserialize")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RApiSerialize" version))
        (sha256
         (base32
-         "0gm2j8kh40imhncwwx1sx9kmraaxcxycvgwls53lcyy2ap344k9j"))))
+         "0gkix6s5hb7pdbb8miyz36hghx59hhwxql0slqnlr5nakh31klxp"))))
     (properties `((upstream-name . "RApiSerialize")))
     (build-system r-build-system)
     (home-page
@@ -32389,14 +32779,14 @@ to archive and assign DOIs to data, software, figures, and more.")
 (define-public r-dismo
   (package
     (name "r-dismo")
-    (version "1.3-5")
+    (version "1.3-8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dismo" version))
        (sha256
         (base32
-         "1rqf6h4imbqvs7hjd1k4my6154wg0qnmnp5byan403rcshr1jbl1"))))
+         "17dwk4fv9l903fp38ab9arc4dfyrj1sbllfxlybkdwm9lpsn1qv6"))))
     (properties `((upstream-name . "dismo")))
     (build-system r-build-system)
     (propagated-inputs
@@ -32447,18 +32837,18 @@ fully reproducible.")
 (define-public r-paws-common
   (package
     (name "r-paws-common")
-    (version "0.3.17")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.common" version))
        (sha256
         (base32
-         "1dg18hwnrjd6m1vjcxfs2vm1zxciivf4vzhq0z76dmmiqz2yjm28"))))
+         "1zlv0ahv633z1fwx1syajzqg49zd9hs537df53gm2qch8b66y4bh"))))
     (properties `((upstream-name . "paws.common")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-base64enc r-digest r-httr r-jsonlite r-xml2))
+     (list r-base64enc r-curl r-digest r-httr r-jsonlite r-xml2))
     (home-page "https://cran.r-project.org/package=paws.common")
     (synopsis "Paws low-level Amazon Web Services API")
     (description
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2e71a89e6b..db820a3d24 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -27945,7 +27945,7 @@ HTTP request or response body.")
 (define-public rust-httparse-1
   (package
     (name "rust-httparse")
-    (version "1.5.1")
+    (version "1.7.1")
     (source
      (origin
        (method url-fetch)
@@ -27953,11 +27953,11 @@ HTTP request or response body.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "00smbrgb9vyzbbj3j5d66iarjl5x2wpfwkmhcy5nizylw7dlzndc"))))
+        (base32 "0k60q1hx96cvmjn6k3yjkff87fz0ga2a4z0g9ss8a9x5nndy4v29"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
-       (("rust-pico-sys" ,rust-pico-sys-0.0))))
+       (("rust-criterion" ,rust-criterion-0.3))))
     (home-page "https://github.com/seanmonstar/httparse")
     (synopsis "Zero-copy HTTP/1.x parser")
     (description
@@ -42995,29 +42995,6 @@ function data structures.")
      "Support code shared by PHF libraries.")
     (license license:expat)))
 
-(define-public rust-pico-sys-0.0
-  (package
-    (name "rust-pico-sys")
-    (version "0.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "pico-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1q5pg0ms6szz6b5h26h4k40zb76zbwwjgyigac4wly9qngdj4yl5"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc-0.2)
-        ("rust-gcc" ,rust-gcc-0.3))))
-    (home-page "https://github.com/reem/rust-pico-sys")
-    (synopsis "Bindings to the PicoHTTPParser")
-    (description
-     "This package provides bindings to the PicoHTTPParser.")
-    (license license:expat)))
-
 (define-public rust-pin-project-1
   (package
     (name "rust-pin-project")
@@ -72752,6 +72729,23 @@ library.")
 for locating fonts.")
     (license license:expat)))
 
+(define-public rust-yeslogic-fontconfig-sys-2
+  (package
+    (inherit rust-yeslogic-fontconfig-sys-3)
+    (name "rust-yeslogic-fontconfig-sys")
+    (version "2.11.2")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "yeslogic-fontconfig-sys" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "13bzwn12dmxnc8iqd6za6q3j2ililnqjcplnlrfblbca4ia73r1q"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-const-cstr" ,rust-const-cstr-0.3)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))))
+
 (define-public rust-zbase32-0.1
   (package
     (name "rust-zbase32")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 3df417e13b..0158e03032 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1295,15 +1295,15 @@ Trusted comments are signed, thus verified, before being displayed.")
 (define-public libolm
   (package
     (name "libolm")
-    (version "3.2.3")
+    (version "3.2.12")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://git.matrix.org/git/olm")
+                    (url "https://gitlab.matrix.org/matrix-org/olm")
                     (commit version)))
               (sha256
                (base32
-                "0bixly6jqpwfx3p37c1qp1j685yg6m429r1nazwh43w4n527bs3y"))
+                "1k8v9ig32vmjm58rbris621d7mvp4q91qa5p79vc51p41sz91yhj"))
               (file-name (git-file-name name version))
               ;; Delete the bundled blob.  It's free, but unauditable,
               ;; and apparently only required for android.
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 43a62cf116..ad425cb617 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@@ -122,6 +122,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages onc-rpc)
+  #:use-module (gnu packages openstack)
   #:use-module (gnu packages pantheon)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages pcre)
@@ -2295,7 +2296,7 @@ Driver.")
 (define-public nanodbc
   (package
     (name "nanodbc")
-    (version "2.13.0")
+    (version "2.14.0")
     (source (origin
               (method git-fetch)
               (uri
@@ -2305,7 +2306,7 @@ Driver.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1q80p7yv9mcl4hyvnvcjdr70y8nc940ypf368lp97vpqn5yckkgm"))))
+                "1253bnrmchga3ra99jqkd2p29bc5h2ip79xd8afblz6b1v00wmbm"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -4754,7 +4755,7 @@ a Gtk.Grid Widget.")
            qscintilla
            qtbase-5
            sqlite))
-    (native-inputs (list qttools))
+    (native-inputs (list qttools-5))
     (home-page "https://sqlitebrowser.org/")
     (synopsis "Database browser for SQLite")
     (description "Sqlitebrowser is a high quaility, visual, open source tool to
@@ -4795,3 +4796,31 @@ create design, and edit database file compatible with SQLite.")
     (description
      "This package implements the @acronym{LSP, Language Server Protocol} for SQL.")
     (license license:expat)))
+
+(define-public python-dogpile.cache
+  (package
+    (name "python-dogpile.cache")
+    (version "1.1.8")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "dogpile.cache" version))
+              (sha256
+               (base32
+                "0kpx42vxzss4sz5ic6mp01a97zinzm6q76n8li2gbi4ccfxyhi6q"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest")))))))
+    (native-inputs (list python-mako python-pytest))
+    (propagated-inputs (list python-decorator python-stevedore))
+    (home-page "https://github.com/sqlalchemy/dogpile.cache")
+    (synopsis "Caching front-end based on the Dogpile lock")
+    (description "@code{dogpile.cache} is a caching API which provides a
+generic interface to caching backends of any variety, and additionally
+provides API hooks which integrate these cache backends with the locking
+mechanism of @code{dogpile}.")
+    (license license:expat)))
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index 4fa38ee3d4..d40051506f 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;; Copyright © 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +28,7 @@
   #:use-module (gnu packages perl)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
@@ -134,6 +135,29 @@ that have sequences of identical bytes in the same order, even though bytes
 in between these sequences may be different in both content and length.")
     (license license:gpl2+)))
 
+(define-public libcuckoo
+  (package
+    (name "libcuckoo")
+    (version "0.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/efficient/libcuckoo")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0h9yhpkhk813dk66y6bs2csybw3pbpfnp3cakr2xism02vjwy19l"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~'("-DBUILD_TESTS=1")))
+    (home-page "https://efficient.github.io/libcuckoo/")
+    (synopsis "Concurrent hash table")
+    (description
+     "@code{libcuckoo} provides a high-performance, compact hash table that
+allows multiple concurrent reader and writer threads.")
+    (license license:asl2.0)))
+
 (define-public liburcu
   (package
     (name "liburcu")
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index f7190a32a0..5648c03a3e 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -74,7 +74,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "219")
+    (version "220")
     (source
      (origin
        (method git-fetch)
@@ -83,7 +83,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0n6dn53paxi1316fnv5abw5rlvpfd2kpfn3b08wfzrcb6chsx7br"))
+        (base32 "0lkwbyf1z93skgqp1w4p0d7y8wwqf0bs53i43micwaq8p8xjs1ph"))
        (patches
         (search-patches "diffoscope-fix-llvm-test.patch"))))
     (build-system python-build-system)
@@ -241,7 +241,7 @@ install.")
 (define-public reprotest
   (package
     (name "reprotest")
-    (version "0.7.20")
+    (version "0.7.21")
     (source
      (origin
        (method git-fetch)
@@ -251,7 +251,7 @@ install.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0c3nyiha9gh1xzl0dn9ji2yqa8y06d83v84pz0dqanihm40ljjsm"))))
+         "1jmnp6dwd91w00vfvph89cvgxwk0nvij8his9az5b72265jf9bxz"))))
     (inputs
      (list python-debian python-distro python-libarchive-c python-rstr))
     (native-inputs
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 90035f7255..69c02347c3 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -1357,7 +1357,7 @@ reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
 (define-public duc
   (package
     (name "duc")
-    (version "1.4.4")
+    (version "1.4.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1366,7 +1366,7 @@ reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1i7ry25xzy027g6ysv6qlf09ax04q4vy0kikl8h0aq5jbxsl9q52"))))
+                "0sglcn38rgn6y3m5ahngizyn3x2rzhqjphs7g0ppnlinkz56rcv4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1383,7 +1383,19 @@ reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (doc (string-append out "/share/doc/" ,name "-" ,version)))
-               (copy-recursively "examples" (string-append doc "/examples"))))))))
+               (copy-recursively "examples" (string-append doc "/examples")))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (substitute* "test.sh"
+               ;; Keep the test logs where --keep-failed can see them.
+               (("^(DUC_TEST_DIR=).*" _ assign)
+                (format #f "~a~a/test-directory~%" assign (getcwd)))
+               ;; XXX ‘actual size’ differed on my system (a consistent 348160
+               ;; bytes where the tests expect 540672).  However, the ‘apparent
+               ;; size’ matches, as does the actual test output.  Good enough…?
+               ((" [0-9]*B actual") " [0-9]*B actual"))
+             (when tests?
+               (invoke "./test.sh"))))))) ; no ‘check’ target
     (native-inputs
      (list autoconf automake libtool pkg-config))
     (inputs
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 64375b8cfc..6c1c5b6c25 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net>
-;;; Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2018, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
@@ -78,7 +78,7 @@
                 "0hcdysw8ibr66vk8i7v56l0v5ijvhlq67v4460mc2xf2910g2m72"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list elogind
            glib
@@ -86,14 +86,14 @@
            libxkbcommon
            linux-pam
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            ;; Some user-defined themes use QtQuick components internally.  Adding
            ;; QtQuick & co. here; they end up in QML2_IMPORT_PATH thanks to
            ;; 'wrap-qt-program'.
            qtgraphicaleffects
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5
            shadow
            wayland))
     (arguments
@@ -255,86 +255,84 @@ experience for your users, your family and yourself")
     (license license:gpl3+)))
 
 (define-public lightdm
-  ;; Use the latest commit, as the current official release doesn't build with
-  ;; glib >= 2.33.
-  (let ((revision "0")
-        (commit "b7fc3214cbaed09c73e963847443a0d648dfd896"))
-    (package
-      (name "lightdm")
-      (version (git-version "1.30.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/canonical/lightdm")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0378jacazpmdgdjkiilk3mbikz3iysb4s9q40hg9zv4yngwsix1m"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:parallel-tests? #f           ; fails when run in parallel
-         #:configure-flags
-         (list "--localstatedir=/var"
-               ;; Otherwise the test suite fails on such a warning.
-               "CFLAGS=-Wno-error=missing-prototypes")
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'fix-paths
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "src/shared-data-manager.c"
-                 (("/bin/rm")
-                  (search-input-file inputs "bin/rm")))
-               (substitute* '("data/users.conf"
-                              "common/user-list.c")
-                 (("/bin/false")
-                  (search-input-file inputs "bin/false"))
-                 (("/usr/sbin/nologin")
-                  (search-input-file inputs "sbin/nologin")))
-               (substitute* "src/seat.c"
-                 (("/bin/sh")
-                  (search-input-file inputs "bin/sh")))))
-           (add-before 'check 'pre-check
-             ;; Run test-suite under a dbus session.
-             (lambda _
-               (wrap-program "tests/src/test-python-greeter"
-                 `("GUIX_PYTHONPATH"      ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-                 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
-
-               ;; Avoid printing locale warnings, which trip up the text
-               ;; matching tests.
-               (unsetenv "LC_ALL"))))))
-      (inputs
-       (list audit
-             coreutils                  ;for cross-compilation
-             linux-pam
-             shadow                     ;for sbin/nologin
-             libgcrypt
-             libxcb))
-      (native-inputs
-       (list autoconf
-             automake
-             gobject-introspection
-             gtk-doc
-             pkg-config
-             itstool
-             intltool
-             libtool
-             vala                       ;for Vala bindings
-             ;; For tests
-             dbus
-             python-wrapper
-             python-pygobject
-             which
-             yelp-tools))
-      ;; Required by liblightdm-gobject-1.pc.
-      (propagated-inputs
-       (list glib libx11 libxklavier))
-      (home-page "https://www.freedesktop.org/wiki/Software/LightDM/")
-      (synopsis "Lightweight display manager")
-      (description "The Light Display Manager (LightDM) is a cross-desktop
+  (package
+    (name "lightdm")
+    (version "1.32.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/canonical/lightdm")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wr60c946p8jz9kb8zi4cd8d4mkcy7infbvlfzwajiglc22nblxn"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:parallel-tests? #f             ; fails when run in parallel
+       #:configure-flags
+       (list "--localstatedir=/var"
+             "--enable-gtk-doc"
+             ;; Otherwise the test suite fails on such a warning.
+             "CFLAGS=-Wno-error=missing-prototypes")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/shared-data-manager.c"
+               (("/bin/rm")
+                (search-input-file inputs "bin/rm")))
+             (substitute* '("data/users.conf"
+                            "common/user-list.c")
+               (("/bin/false")
+                (search-input-file inputs "bin/false"))
+               (("/usr/sbin/nologin")
+                (search-input-file inputs "sbin/nologin")))
+             (substitute* "src/seat.c"
+               (("/bin/sh")
+                (search-input-file inputs "bin/sh")))))
+         (add-before 'check 'pre-check
+           (lambda _
+             (wrap-program "tests/src/test-python-greeter"
+               `("GUIX_PYTHONPATH"      ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+               `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
+             ;; Avoid printing locale warnings, which trip up the text
+             ;; matching tests.
+             (unsetenv "LC_ALL"))))))
+    (inputs
+     (list audit
+           bash-minimal                           ;for cross-compilation
+           coreutils-minimal                      ;ditto
+           linux-pam
+           shadow                       ;for sbin/nologin
+           libgcrypt
+           libxcb
+           libxdmcp))
+    (native-inputs
+     (list accountsservice
+           autoconf
+           automake
+           gobject-introspection
+           gtk-doc
+           pkg-config
+           itstool
+           intltool
+           libtool
+           vala                         ;for Vala bindings
+           ;; For tests
+           dbus
+           python-wrapper
+           python-pygobject
+           which
+           yelp-tools))
+    ;; Required by liblightdm-gobject-1.pc.
+    (propagated-inputs
+     (list glib libx11 libxklavier))
+    (home-page "https://www.freedesktop.org/wiki/Software/LightDM/")
+    (synopsis "Lightweight display manager")
+    (description "The Light Display Manager (LightDM) is a cross-desktop
 display manager which supports different greeters.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public lightdm-gtk-greeter
   (package
@@ -351,43 +349,51 @@ display manager which supports different greeters.")
                 "04q62mvr97l9gv8h37hfarygqc7p0498ig7xclcg4kxkqw0b7yxy"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "--enable-at-spi-command="
-                            (assoc-ref %build-inputs "at-spi2-core")
-                            "/libexec/at-spi-bus-launcher"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'fix-.desktop-file
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* (string-append
-                             out "/share/xgreeters/lightdm-gtk-greeter.desktop")
-                 (("Exec=lightdm-gtk-greeter")
-                  (string-append "Exec=" out "/sbin/lightdm-gtk-greeter")))
-               #t)))
-         (add-after 'fix-.desktop-file 'wrap-program
-           ;; Mimic glib-or-gtk build system
-           ;; which doesn't wrap files in /sbin
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let ((gtk (assoc-ref inputs "gtk+")))
-               (wrap-program (string-append (assoc-ref outputs "out")
-                                            "/sbin/lightdm-gtk-greeter")
-                 `("XDG_DATA_DIRS" ":" prefix
-                   ,(cons "/run/current-system/profile/share"
-                          (map (lambda (pkg)
-                                 (string-append (assoc-ref inputs pkg) "/share"))
-                               '("gtk+" "shared-mime-info" "glib"))))
-                 `("GTK_PATH" ":" prefix (,gtk))
-                 `("GIO_EXTRA_MODULES" ":" prefix (,gtk))))
-             #t)))))
+     (list
+      #:configure-flags
+      #~(list "--disable-indicator-services-command" ;requires upstart
+              (string-append "--enable-at-spi-command="
+                             (search-input-file
+                              %build-inputs "libexec/at-spi-bus-launcher")))
+
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'fix-.desktop-file
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* (search-input-file
+                            outputs
+                            "share/xgreeters/lightdm-gtk-greeter.desktop")
+                (("Exec=lightdm-gtk-greeter")
+                 (string-append "Exec="
+                                (search-input-file
+                                 outputs "sbin/lightdm-gtk-greeter"))))))
+          (add-after 'fix-.desktop-file 'wrap-program
+            ;; Mimic glib-or-gtk build system which doesn't wrap files in
+            ;; /sbin.
+            (lambda* (#:key outputs inputs #:allow-other-keys)
+              (let ((gtk #$(this-package-input "gtk+"))
+                    (shared-mime-info #$(this-package-input "shared-mime-info"))
+                    (glib #$(this-package-input "glib")))
+                (wrap-program (search-input-file
+                               outputs "sbin/lightdm-gtk-greeter")
+                  `("XDG_DATA_DIRS" ":" prefix
+                    ,(cons "/run/current-system/profile/share"
+                           (map (lambda (pkg)
+                                  (string-append pkg "/share"))
+                                (list gtk shared-mime-info glib))))
+                  `("GTK_PATH" ":" prefix (,gtk))
+                  `("GIO_EXTRA_MODULES" ":" prefix (,gtk))
+                  '("XCURSOR_PATH" ":" prefix
+                    ("/run/current-system/profile/share/icons")))))))))
     (native-inputs
      (list exo intltool pkg-config xfce4-dev-tools))
     (inputs
-     `(("bash" ,bash-minimal) ; for wrap-program
-       ("lightdm" ,lightdm)
-       ("shared-mime-info" ,shared-mime-info)
-       ("at-spi2-core" ,at-spi2-core)
-       ("gtk+" ,gtk+)))
+     (list bash-minimal                 ;for wrap-program
+           lightdm
+           shared-mime-info
+           at-spi2-core
+           glib
+           gtk+))
     (synopsis "GTK+ greeter for LightDM")
     (home-page "https://github.com/xubuntu/lightdm-gtk-greeter")
     (description "This package provides a LightDM greeter implementation using
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 0aea058355..b9144f32bc 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -54,13 +54,13 @@
 (define-public python-django-4.0
   (package
     (name "python-django")
-    (version "4.0.6")
+    (version "4.0.7")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "1bn3lg68r2bz6rzwnd7y2sin6fi9vahdqdsmamrx6zw2yqzpjym6"))))
+                "0qblhh7s7fcznqr79919yp2d7wiz3ixv39navmifb677dg9mlvcw"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -141,13 +141,13 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
 (define-public python-django-3.2
   (package
     (inherit python-django-4.0)
-    (version "3.2.14")
+    (version "3.2.15")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "1krg0bfd78mnqly1gzbprssz3bz6xryc2fig0x75la2vifx84wb7"))))
+                "0asqhsw73555wjnvd7769b89q9w96q2k95mcr634mw92m2qk86gp"))))
     (native-search-paths '())           ;no need for TZDIR
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-django-4.0)
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 4f4f40db1b..245e5858cf 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -107,7 +107,7 @@ utilities.")
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
-     (list autoconf automake libtool pkg-config qttools))
+     (list autoconf automake libtool pkg-config qttools-5))
     (inputs
      (list djvulibre glib libxt libtiff qtbase-5))
     (arguments
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index f71461f572..4e0612a460 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -374,7 +374,7 @@ local system.")
                (let* ((out (assoc-ref outputs "out"))
                       (bin (string-append out "/bin/zeal"))
                       (qt-process-path (string-append
-                                        (assoc-ref inputs "qtwebengine")
+                                        (assoc-ref inputs "qtwebengine-5")
                                         "/lib/qt5/libexec/QtWebEngineProcess")))
                  (wrap-program bin
                    `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
@@ -385,10 +385,10 @@ local system.")
        `(("libarchive" ,libarchive)
          ("sqlite" ,sqlite)
          ("qtbase" ,qtbase-5)
-         ("qtdeclarative" ,qtdeclarative)
-         ("qtwebchannel" ,qtwebchannel)
-         ("qtwebengine" ,qtwebengine)
-         ("qtquickcontrols" ,qtquickcontrols)
+         ("qtdeclarative-5" ,qtdeclarative-5)
+         ("qtwebchannel-5" ,qtwebchannel-5)
+         ("qtwebengine-5" ,qtwebengine-5)
+         ("qtquickcontrols-5" ,qtquickcontrols-5)
          ("qtx11extras" ,qtx11extras)
          ("xcb-util-keyms" ,xcb-util-keysyms)))
       (home-page "https://zealdocs.org/")
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 339a72ef91..ccc0bdf88d 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -202,7 +202,7 @@ with Microsoft Compiled HTML (CHM) files")
            python-regex
            speech-dispatcher
            python-zeroconf
-           qtwebengine
+           qtwebengine-5
            sqlite))
     (arguments
      (list
@@ -293,7 +293,7 @@ sip-include-dirs = [\""
               (setenv "CI" "true")
               ;; The Qt test complains about being unable to load all image
               ;; plugins, and I notice the available plugins list it shows
-              ;; lacks 'svg'. Adding qtsvg doesn't fix it, so I'm not sure how
+              ;; lacks 'svg'. Adding qtsvg-5 doesn't fix it, so I'm not sure how
               ;; to fix it.  TODO: Fix test and remove this.
               (setenv "SKIP_QT_BUILD_TEST" "true")))
           (add-after 'install 'install-rapydscript
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 9e5a17a6ae..c5666fb02e 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -174,18 +174,18 @@ of categories with some of the activities available in that category.
            gettext-minimal
            kdoctools
            perl
-           qttools
+           qttools-5
            xorg-server-for-tests))
     (inputs
      (list openssl
            python-wrapper
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtmultimedia
-           qtquickcontrols
+           qtmultimedia-5
+           qtquickcontrols-5
            qtsensors
-           qtsvg
+           qtsvg-5
            qtxmlpatterns))
     (home-page "https://gcompris.net/index-en.html")
     (synopsis "Educational games for small children")
@@ -302,7 +302,7 @@ frequently used words in American English.")
                ;; Recreate Makefile
                (invoke "qmake")))))))
     (inputs
-     (list qtbase-5 qtmultimedia))
+     (list qtbase-5 qtmultimedia-5))
     (home-page "https://www.tipp10.com/")
     (synopsis "Touch typing tutor")
     (description "Tipp10 is a touch typing tutor.  The ingenious thing about
@@ -448,7 +448,7 @@ specialized device.")
 (define-public openboard
   ;; The last release builds from qtwebkit, which is planned for removal in
   ;; Guix, so use the latest commit of the 1.7-dev branch, which builds with
-  ;; qtwebengine.
+  ;; qtwebengine-5.
   (let ((commit "39e914f600d26565706f0e5b6ea2482b8b4038c7") ;1.6.2-rc0311
         (revision "1"))
     (package
@@ -540,7 +540,7 @@ specialized device.")
                     (symlink (string-append openboard "/OpenBoard")
                              (string-append bin "/openboard")))))))))
       (native-inputs
-       (list qttools))
+       (list qttools-5))
       (inputs
        (list alsa-lib
              coreutils-minimal          ;for patched 'env' shebang
@@ -558,11 +558,11 @@ specialized device.")
              opus
              poppler
              qtbase-5
-             qtdeclarative
-             qtmultimedia
-             qtsvg
-             qtwebchannel
-             qtwebengine
+             qtdeclarative-5
+             qtmultimedia-5
+             qtsvg-5
+             qtwebchannel-5
+             qtwebengine-5
              qtxmlpatterns
              quazip-0
              sdl
@@ -672,9 +672,9 @@ language and very flexible regarding to new or unknown keyboard layouts.")
            libxcb
            libxkbfile
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtquickcontrols2
+           qtquickcontrols2-5
            qtx11extras
            qtxmlpatterns))
     (home-page "https://edu.kde.org/ktouch/")
@@ -807,9 +807,9 @@ stored and user can review his performance in any time.")
        ("python-requests" ,python-requests)
        ("python-send2trash" ,python-send2trash)
        ("python-sip" ,python-sip)
-       ;; `qtwebengine' is included in `pyqtwebengine', included here for easy
+       ;; `qtwebengine-5' is included in `pyqtwebengine', included here for easy
        ;; wrapping.
-       ("qtwebengine" ,qtwebengine)))
+       ("qtwebengine-5" ,qtwebengine-5)))
     (home-page "https://apps.ankiweb.net/")
     (synopsis "Powerful, intelligent flash cards")
     (description "Anki is a program which makes remembering things
@@ -991,15 +991,15 @@ formats.")
     (arguments
      '(#:tests? #f)) ; no test target
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
      (list libeb
            qtbase-5
-           qtmultimedia
-           qtquickcontrols2
-           qtdeclarative
-           qtwebchannel
-           qtwebengine
+           qtmultimedia-5
+           qtquickcontrols2-5
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5
            zlib))
     (synopsis "EPWING dictionary reader")
     (description "qolibri is a dictionary viewer for the EPWING dictionary
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index 70d960aaab..15e7318926 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -373,7 +373,7 @@ such as:
                  (rmdir "doc/pulseview")
                  (rmdir "doc"))))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list boost
            glib
@@ -381,7 +381,7 @@ such as:
            libsigrok
            libsigrokdecode
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (home-page "https://www.sigrok.org/wiki/PulseView")
     (synopsis "Qt based logic analyzer, oscilloscope and MSO GUI for sigrok")
     (description "PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index f2799681d2..acb9164e34 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -133,14 +133,14 @@ object or archive file), @command{eu-strip} (for discarding symbols),
   (package
     (name "libabigail")
     (home-page "https://sourceware.org/libabigail/")
-    (version "1.8")
+    (version "2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/pub/libabigail/"
                                   "libabigail-" version ".tar.gz"))
               (sha256
                (base32
-                "0p363mkgypcklgf8iylxpbdnfgqc086a6fv7n9hzrjjci45jdgqw"))))
+                "1nkg7fsqvdr453hrskscy6xqz6fv45mylpgv1357dw3blnbsw11p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static"
@@ -177,10 +177,7 @@ object or archive file), @command{eu-strip} (for discarding symbols),
                                 (find-files "bash-completion" ".*abi.*"))
                       #t)))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("makeinfo" ,texinfo)
-       ("python-sphinx" ,python-sphinx)
-       ("python" ,python)))             ;for tests
+     (list pkg-config texinfo python-sphinx python))
     (propagated-inputs
      (list elfutils ;libabigail.la says -lelf
            libxml2))           ;in Requires.private of libabigail.pc
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 702378c206..3c1d322db3 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -115,6 +115,7 @@
 ;;; Copyright © 2022 Thomas Albers Raviola <thomas@thomaslabs.org>
 ;;; Copyright © 2022 Haider Mirza <haider@haider.gq>
 ;;; Copyright © 2022 Jose G Perez Taveras <josegpt27@gmail.com>
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3723,14 +3724,14 @@ the previous session
 (define-public emacs-pabbrev
   (package
     (name "emacs-pabbrev")
-    (version "4.2.1")
+    (version "4.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
-                           "pabbrev-" version ".el"))
+                           "pabbrev-" version ".tar"))
        (sha256
-        (base32 "19v5adk61y8fpigw7k6wz6dj79jwr450hnbi7fj0jvb21cvjmfxh"))))
+        (base32 "0iydz8yz866krxv1qv32k88w4464xpymh0wxgrxv6nvniwvhvd0s"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/pabbrev.html")
     (synopsis "Predictive abbreviation expansion")
@@ -8707,7 +8708,7 @@ built-in custom themes.")
 (define-public emacs-gruvbox-theme
   (package
     (name "emacs-gruvbox-theme")
-    (version "1.28.0")
+    (version "1.29.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8716,7 +8717,7 @@ built-in custom themes.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "00qq92gp1g55pzm97rh7k0dgxy44pxziridl8kqm4rbpi31r7k9p"))))
+                "0ydwr2l3jhqbs3gk5qajirl54vfb8i65qrlzrs04jnsj1pkzq5xa"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-autothemer))
@@ -10178,7 +10179,7 @@ allowing unprefixed keys to insert their respective characters as expected.")
 (define-public emacs-clojure-mode
   (package
     (name "emacs-clojure-mode")
-    (version "5.14.0")
+    (version "5.15.1")
     (source
      (origin
        (method git-fetch)
@@ -10187,7 +10188,7 @@ allowing unprefixed keys to insert their respective characters as expected.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0n7v6hx21f8x37gj388wnff38aqpzxxv5g8vxavp74vr3cbagsnn"))))
+        (base32 "12m3yjhy4q0x3ri4xxb9raqg9lmw4hk4jgn436d9zvsk4fr3h1nd"))))
     (build-system emacs-build-system)
     (native-inputs
      (list emacs-buttercup emacs-dash emacs-paredit emacs-s))
@@ -11011,7 +11012,7 @@ much easier.")
 (define-public emacs-elfeed-protocol
   (package
     (name "emacs-elfeed-protocol")
-    (version "0.8.0")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -11020,7 +11021,7 @@ much easier.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07r1qlldgd0kfikd0y737y5n42ab3nkw2s5jx7frimj41yandbdp"))))
+        (base32 "0k9rkghp9rg7aidmx7q0n4wpb9z5cwr7j8z167yzaqgf9s3y4jj2"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-elfeed))
@@ -11805,7 +11806,7 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.8.6")
+    (version "3.8.7")
     (source
      (origin
        (method git-fetch)
@@ -11814,7 +11815,7 @@ ack, ag, helm and pt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "02z5jxjkqspj6f6j2a87l9bzl2b4mh1560bzl8ia72w2vxg15m8z"))))
+        (base32 "1a8zkp00ahb84ww5072naxwllzbjhi7ccarkk2d7xsykn5lig54c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-async emacs-popup))
@@ -13111,7 +13112,7 @@ programming and reproducible research.")
        (sha256
         (base32 "17aca4mc3gbdh6nhlcaa5ymh1yy76nwysrvy9sfcqkzvd5lgagzc"))
        ;; XXX: ob-sclang.el is packaged separately to avoid the dependency on
-       ;; SuperCollider and qtwebengine.  This will be unnecessary in 0.4+
+       ;; SuperCollider and qtwebengine-5.  This will be unnecessary in 0.4+
        ;; release as the file is going to be removed from the repository.
 
        ;; XXX: org-contacts.el is now maintained in a separate repository and
@@ -16613,7 +16614,7 @@ an elisp expression.")
 (define-public emacs-taxy
   (package
     (name "emacs-taxy")
-    (version "0.9")
+    (version "0.10")
     (source
      (origin
        (method url-fetch)
@@ -16621,7 +16622,7 @@ an elisp expression.")
              "https://elpa.gnu.org/packages/taxy-" version ".tar"))
        (sha256
         (base32
-         "1nzafs3yvcnmg07zi345n2yvjsw9wixlybzibnhf5k6jnd0vvpjh"))))
+         "1jamry2p3qhswq8prd2g7ljh4yqk0wwblyd9fhnaclakahrn5vi3"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-magit))
@@ -18865,7 +18866,7 @@ files to be expanded upon opening them.")
 (define-public emacs-parsebib
   (package
     (name "emacs-parsebib")
-    (version "4.1")
+    (version "4.2")
     (source
      (origin
        (method git-fetch)
@@ -18874,7 +18875,7 @@ files to be expanded upon opening them.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bsxhizwhri8ayryfq59ghkybrql611q2bnjd45hpj7armwq3s8m"))))
+        (base32 "0da4b6d65bq9xhyhq7h9g315zg6g5q9435vz870la966rgav5szd"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joostkremers/parsebib")
     (synopsis "Library for parsing @file{.bib} files")
@@ -24780,7 +24781,7 @@ well as providing an interface to attach and interact with the processes.")
 (define-public emacs-dtrt-indent
   (package
     (name "emacs-dtrt-indent")
-    (version "1.7")
+    (version "1.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -24789,7 +24790,7 @@ well as providing an interface to attach and interact with the processes.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ihwmkxgbd0mgfvzisjiwvyypa9z21ckyxdnkf9y5lxywjyr39zh"))))
+                "16g4bv2py423l19n0kaz18a41wk5fsrpnqzifdss6amqh0dqyvmf"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/jscheid/dtrt-indent")
     (synopsis "Minor mode that guesses the indentation offset")
@@ -26589,7 +26590,7 @@ through Dash docsets.")
 (define-public emacs-devdocs
   (package
     (name "emacs-devdocs")
-    (version "0.4")
+    (version "0.5")
     (source
      (origin
        (method url-fetch)
@@ -26597,7 +26598,7 @@ through Dash docsets.")
              "https://elpa.gnu.org/packages/"
              "devdocs-" version ".tar"))
        (sha256
-        (base32 "05xmxqpp1cpf03y7idpqdsmbj30cissscy80ng5hqc3028kr2jqm"))))
+        (base32 "0qyp8lhf76yv2ym7cryvygvf2m9jah5nsl1g79gqjrsin6vlhqka"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/astoff/devdocs.el")
     (synopsis "Emacs viewer for DevDocs")
@@ -26776,14 +26777,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.5.3")
+    (version "2.5.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "16bs90h7b1d188v6glhfp0y4wgxvwn3dl6l4sbswlf1zq3y61zy7"))))
+        (base32 "0dqc5gmp20isrlanccvj6nhalmmsfg7bmm690gxfgrbqcc2vj69a"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -27839,7 +27840,7 @@ contains a track position, playback will start at the specified position.")
 (define-public emacs-org-jira
   (package
    (name "emacs-org-jira")
-   (version "4.3.3")
+   (version "4.4.0")
    (source
     (origin
      (method git-fetch)
@@ -27849,7 +27850,7 @@ contains a track position, playback will start at the specified position.")
      (file-name (git-file-name name version))
      (sha256
       (base32
-       "0awfz4c70pxfj401p4h4j1lxic4pqpgigkldy9wvdkcyhqbphswj"))))
+       "1s91l4ibjvvc7rfvd8gldxqrcgjq00q83fdww217ck2ps5yrzyjl"))))
    (build-system emacs-build-system)
    (propagated-inputs
     (list emacs-request emacs-s emacs-dash emacs-org))
@@ -28080,7 +28081,7 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-themes
   (package
     (name "emacs-modus-themes")
-    (version "2.4.1")
+    (version "2.5.0")
     (source
      (origin
        (method git-fetch)
@@ -28089,7 +28090,7 @@ Emacs that integrate with major modes like Org-mode.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0b4y8dzyc9qwwaf2ngqiwyfcnhwlr49kxhc96laqk20lvjlfsrnx"))))
+        (base32 "0ng85240zabw87ac53xnrlrafp10ns5wn6dgv9d1jxvnq40p7zqz"))))
     (native-inputs (list texinfo))
     (build-system emacs-build-system)
     (arguments
@@ -31946,3 +31947,23 @@ can bind a popon to a specific buffer to only show on that buffer.")
 be useful when working with the bitbake files in Yocto and OpenEmbedded
 projects.")
    (license license:gpl3+)))
+
+(define-public emacs-vundo
+  (package
+    (name "emacs-vundo")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://elpa.gnu.org/packages/vundo-"
+                                  version ".tar"))
+              (sha256
+               (base32
+                "032aqcqq2xhh12qcpp8p3qldv0r9cnqr2y11jk1m5cvgal1cbb68"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/casouri/vundo")
+    (synopsis "Visualize the undo tree")
+    (description
+     "Vundo (visual undo) displays the undo history as a tree and lets you move in the
+tree to go back to previous buffer states.  To use vundo, type @kbd{M-x vundo RET} in
+the buffer you want to undo.  An undo tree buffer should pop up.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0de4b7a5d5..ffd1eda08e 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -69,6 +70,7 @@
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages selinux)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)       ; for jansson
@@ -340,6 +342,9 @@ languages.")
          (sha256
           (base32
            "0dqmrawkvbypxp8gcnspnhhmfamzp3l62gfgp1pw2l6svz58v991"))))
+      (inputs
+       (modify-inputs (package-inputs emacs)
+         (prepend sqlite)))
       (native-inputs
        (modify-inputs (package-native-inputs emacs)
          (prepend autoconf))))))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 5cff92ac89..92af9adced 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -744,7 +744,7 @@ The following systems are supported:
        (list "-DUSE_LZMA=OFF"           ;do not use bundled LZMA
              "-DUSE_LIBZIP=OFF")))      ;use "zlib" instead
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list ffmpeg
            libedit
@@ -755,7 +755,7 @@ The following systems are supported:
            minizip
            ncurses
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            sdl2
            sqlite
            zlib))
@@ -1505,14 +1505,14 @@ multi-system game/emulator system.")
 (define-public scummvm
   (package
     (name "scummvm")
-    (version "2.5.1")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://downloads.scummvm.org/frs/scummvm/" version
                            "/scummvm-" version ".tar.xz"))
        (sha256
-        (base32 "00az0dm85kh8rq0yqj74x0c5zrq4ybvwvnilijzl8qa5whwdpn4z"))))
+        (base32 "05zw9xqdix88f8p3py2rfnyiaxr2sbifkqi9s5gy3nf9s3l3h50w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                                 ;require "git"
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index bf32187dde..ed87cd8d6a 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -213,7 +213,7 @@
                (copy-recursively "unix/resources" share))
              #t)))))
     (inputs
-     (list boost muparser freetype qtbase-5 qtsvg))
+     (list boost muparser freetype qtbase-5 qtsvg-5))
     (native-inputs
      (list pkg-config which))
     (home-page "https://librecad.org/")
@@ -710,7 +710,7 @@ multipole-accelerated algorithm.")
     (inputs
      `(("qtbase" ,qtbase-5)
        ("qtserialport" ,qtserialport)
-       ("qtsvg" ,qtsvg)
+       ("qtsvg-5" ,qtsvg-5)
        ("libgit2" ,libgit2)
        ("boost" ,boost)
        ("zlib" ,zlib)
@@ -762,9 +762,9 @@ ready for production.")
                (substitute* "qelectrotech.pro" (("\\/usr\\/local") out))
                (invoke "qmake")))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
-     (list kcoreaddons kwidgetsaddons qtbase-5 qtsvg sqlite))
+     (list kcoreaddons kwidgetsaddons qtbase-5 qtsvg-5 sqlite))
     (home-page "https://qelectrotech.org/")
     (synopsis "CAD/CAE editor focusing on schematics drawing features")
     (description "QElectroTech, or QET in short, is a desktop application to
@@ -945,7 +945,7 @@ Emacs).")
 (define-public kicad
   (package
     (name "kicad")
-    (version "6.0.6")
+    (version "6.0.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -953,7 +953,7 @@ Emacs).")
                     (commit version)))
               (sha256
                (base32
-                "0cb9zba812dlmn2w27s1q38mjpfdwhv0nnbilwsxchpvwg8j4k2j"))
+                "10bqn99nif9zyi5v0lkic3na2vac5lgacw01ayil359vaw7d0pzy"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
@@ -1007,17 +1007,17 @@ Emacs).")
             (variable "KICAD") ;to find kicad-doc
             (files '("")))
            (search-path-specification
-            (variable "KICAD_TEMPLATE_DIR")
+            (variable "KICAD6_TEMPLATE_DIR")
             (files '("share/kicad/template")))
            (search-path-specification
-            (variable "KICAD_SYMBOL_DIR") ;symbol path
-            (files '("share/kicad/library")))
+            (variable "KICAD6_SYMBOL_DIR")
+            (files '("share/kicad/symbols")))
            (search-path-specification
-            (variable "KISYSMOD") ;footprint path
-            (files '("share/kicad/modules")))
+            (variable "KICAD6_FOOTPRINT_DIR")
+            (files '("share/kicad/footprints")))
            (search-path-specification
-            (variable "KISYS3DMOD") ;3D model path
-            (files '("share/kicad/modules/packages3d")))))
+            (variable "KICAD6_3DMODEL_DIR")
+            (files '("share/kicad/3dmodels")))))
     (native-inputs (list boost
                          desktop-file-utils
                          gettext-minimal
@@ -1060,7 +1060,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kxv0j3nx6zn45znrhqq6bdqrsd60mgmgvr1gjv5p8g3cbkkslrx"))))
+                "15arkjjbzd4k09crhsrizmj8ljwpv6xjm59k58pfbd5pmqkklh2d"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DBUILD_FORMATS=html")
@@ -1094,7 +1094,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "02z3vqhz1rlf57zi8vyrlxvvdl1hpsh447p41qdgcpn5dyjycb9d"))))
+                "006ksx8r6cm6q7v701nalggivp21cmysj8p9zc18y3sch8n1mj4g"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests exist
@@ -1123,7 +1123,7 @@ libraries.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1phynxisha2pq2knbx5l1hkdz1bmjm0qxl3lcb4ab82h8d35r37c"))))
+                "0c5fm4hlkka0ms43j02kbv7s9yrlkffn0jz6649ac3gpx6pk8lbf"))))
     (synopsis "Official KiCad footprint libraries")
     (description "This package contains the official KiCad footprint libraries.")))
 
@@ -1140,7 +1140,7 @@ libraries.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ci9gxbpfnfqwah95ki4qcwlca78s1z6s7hckisnp58a1cm9siya"))))
+                "0rdhwyhknrc63sc5ykmq097rzrl36zibnkls7q5hf54lrhn0n3k4"))))
     (synopsis "Official KiCad 3D model libraries")
     (description "This package contains the official KiCad 3D model libraries.")))
 
@@ -1246,7 +1246,7 @@ the 'showing the effect of'-style of operation.")
          mpfr
          openssl
          qtbase-5
-         qtsvg))
+         qtsvg-5))
   (home-page "https://github.com/ccoors/Valeronoi")
   (synopsis "WiFi mapping companion application for Valetudo")
   (description
@@ -2118,9 +2118,9 @@ parallel computing platforms.  It also supports serial execution.")
         (base32 "0smp1p7wnrj0vh4rmz1cr2krfawc2lzx0pbzmgyay7xdp6jxympr"))))
     (build-system gnu-build-system)
     (inputs
-     (list qtbase-5 qtsvg zlib))
+     (list qtbase-5 qtsvg-5 zlib))
     (native-inputs
-     (list qttools ; for lrelease
+     (list qttools-5 ; for lrelease
            unzip))
     (arguments
      `(#:phases
@@ -2278,7 +2278,7 @@ simulation.")
      (list pkg-config))
     (inputs
      (list qtbase-5
-           qtsvg
+           qtsvg-5
            openssl
            ;; Depends on radare2 4.5.1 officially, builds and works fine with
            ;; radare2 5.0.0 but fails to build with radare2 5.1.1.
@@ -2356,7 +2356,7 @@ specification can be downloaded at @url{http://3mf.io/specification/}.")
        ("opencsg" ,opencsg)
        ("qscintilla" ,qscintilla)
        ("qtbase" ,qtbase-5)
-       ("qtmultimedia" ,qtmultimedia)))
+       ("qtmultimedia-5" ,qtmultimedia-5)))
     (native-inputs
      `(("bison" ,bison)
        ("flex" ,flex)
@@ -2452,7 +2452,7 @@ comments.")))
     (native-inputs
      (list doxygen
            graphviz
-           qttools
+           qttools-5
            pkg-config
            python-pyside-2-tools
            swig))
@@ -2490,10 +2490,10 @@ comments.")))
            python-shiboken-2
            python-wrapper
            qtbase-5
-           qtdeclarative
-           qtsvg
-           qtwebchannel
-           qtwebengine
+           qtdeclarative-5
+           qtsvg-5
+           qtwebchannel-5
+           qtwebengine-5
            qtx11extras
            qtxmlpatterns
            sqlite
@@ -3222,7 +3222,7 @@ visualization, matrix manipulation.")
      (list pkg-config))
     (inputs
      (list boost
-           cereal
+           cereal-1.3.0
            cgal
            curl
            dbus
@@ -3422,11 +3422,11 @@ compiled translations.  Prebuilt Firmware files are removed.")
            python-trimesh
            python-zeroconf
            qtbase
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg))
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5))
     (arguments
      `(;; FIXME: tests are disabled, because they cause an infinite loop.
        #:tests? #f
@@ -3715,7 +3715,7 @@ netlists from the drawn schematic, allowing the simulation of the circuit.")
                  (base32
                   "08rqhl6a5a8s67a8yl16944zgcsnnb08xfv4klzyqwlvaqgfp783"))))
       (build-system gnu-build-system)
-      (native-inputs (list qttools))
+      (native-inputs (list qttools-5))
       (inputs (list qtbase-5 qtserialport))
       (arguments
        (list #:tests? #f                      ; no tests.
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index ca2d8f6827..00648ea963 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -392,9 +392,9 @@ the Anthy input method.")
        ("opencc" ,opencc)
        ("qtbase" ,qtbase-5)
        ("fcitx5-qt" ,fcitx5-qt)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtwebchannel" ,qtwebchannel)
-       ("qtwebengine" ,qtwebengine)))
+       ("qtdeclarative-5" ,qtdeclarative-5)
+       ("qtwebchannel-5" ,qtwebchannel-5)
+       ("qtwebengine-5" ,qtwebengine-5)))
     (native-inputs
      (list extra-cmake-modules pkg-config))
     (outputs '("out" "gui"))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index adceb98f83..4b5ab2924b 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -143,7 +143,7 @@
            pkg-config
            python ; for the tests
            util-linux ; provides the hexdump command for tests
-           qttools))
+           qttools-5))
     (inputs
      (list bdb-4.8 ; 4.8 required for compatibility
            boost
@@ -159,7 +159,7 @@
                        (assoc-ref %build-inputs "boost"))
         ;; XXX: The configure script looks up Qt paths by
         ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick
-        ;; up executables residing in 'qttools', so we specify them here.
+        ;; up executables residing in 'qttools-5', so we specify them here.
         (string-append "ac_cv_path_LRELEASE="
                        (assoc-ref %build-inputs "qttools")
                        "/bin/lrelease")
@@ -651,7 +651,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
            python-requests
            python-stem
            python-trezor
-           qtsvg
+           qtsvg-5
            zlib))
     (home-page "https://electroncash.org/")
     (synopsis "Bitcoin Cash wallet")
@@ -671,7 +671,7 @@ blockchain.")
   ;; the system's dynamically linked library.
   (package
     (name "monero")
-    (version "0.17.3.2")
+    (version "0.18.0.0")
     (source
      (origin
        (method git-fetch)
@@ -687,10 +687,9 @@ blockchain.")
            ;; Delete bundled dependencies.
            (for-each
             delete-file-recursively
-            '("external/miniupnp" "external/rapidjson"
-              "external/unbound"))))
+            '("external/miniupnp" "external/rapidjson"))))
        (sha256
-        (base32 "19sgcbli7fc1l6ms7ma6hcz1mmpbnd296lc8a19rl410acpv45zy"))))
+        (base32 "1jq2v2dg50gl3cf9s61jssny5rraclxqj4cc4y0sl00ip8icj08v"))))
     (build-system cmake-build-system)
     (native-inputs
      (list doxygen
@@ -698,7 +697,7 @@ blockchain.")
            pkg-config
            protobuf
            python
-           qttools))
+           qttools-5))
     (inputs
      (list boost
            cppzmq
@@ -716,57 +715,57 @@ blockchain.")
            xz
            zeromq))
     (arguments
-     `(#:out-of-source? #t
-       #:configure-flags
-       (list "-DARCH=default"
-             "-DBUILD_TESTS=ON"
-             (string-append "-DReadline_ROOT_DIR="
-                            (assoc-ref %build-inputs "readline")))
-       #:phases
-       (modify-phases %standard-phases
-         ;; tests/core_tests need a valid HOME
-         (add-before 'configure 'set-home
-           (lambda _
-             (setenv "HOME" (getcwd))))
-         (add-after 'set-home 'change-log-path
-           (lambda _
-             (substitute* "contrib/epee/src/mlog.cpp"
-               (("epee::string_tools::get_current_module_folder\\(\\)")
-                "\".bitmonero\"")
-               (("return \\(")
-                "return ((std::string(getenv(\"HOME\"))) / "))))
-         (add-after 'change-log-path 'fix-file-permissions-for-tests
-           (lambda _
-             (for-each make-file-writable
-                       (find-files "tests/data/" "wallet_9svHk1.*"))))
-         ;; Only try tests that don't need access to network or system
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             ;; Core tests sometimes fail, at least on i686-linux.
-             ;; Let's disable them for now and just try hash tests
-             ;; and unit tests.
-             ;; (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
-             (when tests?
-               (invoke "make" "ARGS=-R 'hash' --verbose" "test"))))
-         (add-after 'check 'unit-tests
-           (lambda _
-             (let ((excluded-unit-tests
-                    (string-join
-                     '("AddressFromURL.Success"
-                       "AddressFromURL.Failure"
-                       "DNSResolver.IPv4Success"
-                       "DNSResolver.DNSSECSuccess"
-                       "DNSResolver.DNSSECFailure"
-                       "DNSResolver.GetTXTRecord"
-                       "is_hdd.linux_os_root")
-                     ":")))
-               (invoke "tests/unit_tests/unit_tests"
-                       (string-append "--gtest_filter=-"
-                                      excluded-unit-tests)))))
-         (add-after 'install 'delete-unused-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (delete-file-recursively (string-append out "/include"))))))))
+     (list #:out-of-source? #t
+           #:configure-flags
+           #~(list "-DARCH=default"
+                   "-DBUILD_TESTS=ON"
+                   (string-append "-DReadline_ROOT_DIR="
+                                  #$(this-package-input "readline")))
+           #:phases
+           #~(modify-phases %standard-phases
+               ;; tests/core_tests need a valid HOME
+               (add-before 'configure 'set-home
+                 (lambda _
+                   (setenv "HOME" (getcwd))))
+               (add-after 'set-home 'change-log-path
+                 (lambda _
+                   (substitute* "contrib/epee/src/mlog.cpp"
+                     (("epee::string_tools::get_current_module_folder\\(\\)")
+                      "\".bitmonero\"")
+                     (("return \\(")
+                      "return ((std::string(getenv(\"HOME\"))) / "))))
+               (add-after 'change-log-path 'fix-file-permissions-for-tests
+                 (lambda _
+                   (for-each make-file-writable
+                             (find-files "tests/data/" "wallet_9svHk1.*"))))
+               ;; Only try tests that don't need access to network or system
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   ;; Core tests sometimes fail, at least on i686-linux.
+                   ;; Let's disable them for now and just try hash tests
+                   ;; and unit tests.
+                   ;; (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
+                   (when tests?
+                     (invoke "make" "ARGS=-R 'hash' --verbose" "test"))))
+               (add-after 'check 'unit-tests
+                 (lambda _
+                   (let ((excluded-unit-tests
+                          (string-join
+                           '("AddressFromURL.Success"
+                             "AddressFromURL.Failure"
+                             "DNSResolver.IPv4Success"
+                             "DNSResolver.DNSSECSuccess"
+                             "DNSResolver.DNSSECFailure"
+                             "DNSResolver.GetTXTRecord"
+                             "is_hdd.linux_os_root")
+                           ":")))
+                     (invoke "tests/unit_tests/unit_tests"
+                             (string-append "--gtest_filter=-"
+                                            excluded-unit-tests)))))
+               (add-after 'install 'delete-unused-files
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (delete-file-recursively
+                    (string-append #$output "/include")))))))
     (home-page "https://web.getmonero.org/")
     (synopsis "Command-line interface to the Monero currency")
     (description
@@ -777,7 +776,7 @@ the Monero command line client and daemon.")
 (define-public monero-gui
   (package
     (name "monero-gui")
-    (version "0.17.3.2")
+    (version "0.18.0.0")
     (source
      (origin
        (method git-fetch)
@@ -793,60 +792,59 @@ the Monero command line client and daemon.")
            ;; See the 'extract-monero-sources' phase.
            (delete-file-recursively "monero")))
        (sha256
-        (base32 "12x0d981fkb43inx7zqjr3ny53dih9g8k03cmaflxqwviinb1k4b"))))
+        (base32 "14rbw9803h3g7ld3d24vc3i9n55n09x13frkmd128xx5jw17v5sr"))))
     (build-system qt-build-system)
     (native-inputs
      `(,@(package-native-inputs monero)
        ("monero-source" ,(package-source monero))))
     (inputs
-     `(,@(package-inputs monero)
-       ("libgcrypt" ,libgcrypt)
-       ("monero" ,monero)
-       ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtgraphicaleffects" ,qtgraphicaleffects)
-       ("qtquickcontrols" ,qtquickcontrols)
-       ("qtquickcontrols2",qtquickcontrols2)
-       ("qtsvg" ,qtsvg)
-       ("qtxmlpatterns" ,qtxmlpatterns)))
+     (modify-inputs (package-inputs monero)
+       (append libgcrypt
+               monero
+               qtbase-5
+               qtdeclarative-5
+               qtgraphicaleffects
+               qtquickcontrols-5
+               qtquickcontrols2-5
+               qtsvg-5
+               qtxmlpatterns)))
     (arguments
-     `(#:tests? #f ; No tests
-       #:configure-flags
-       ,#~(list "-DARCH=default"
-                "-DENABLE_PASS_STRENGTH_METER=ON"
-                (string-append "-DReadline_ROOT_DIR="
-                               #$(this-package-input "readline")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'extract-monero-sources
-           ;; Some of the monero package source code is required
-           ;; to build the GUI.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir-p "monero")
-             (copy-recursively (assoc-ref inputs "monero-source")
-                               "monero")))
-         (add-after 'extract-monero-sources 'fix-build
-           (lambda _
-             (substitute* "src/version.js.in"
-               (("@VERSION_TAG_GUI@")
-                ,version))
-             (substitute* "external/CMakeLists.txt"
-               (("add_library\\(quirc" all)
-                (string-append
-                 "set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fPIC\")\n"
-                 all)))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-               (mkdir-p bin)
-               (install-file "../build/bin/monero-wallet-gui" bin))))
-         (add-after 'qt-wrap 'install-monerod-link
-           ;; The monerod program must be available so that monero-wallet-gui
-           ;; can start a Monero daemon if necessary.
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (symlink (search-input-file inputs "/bin/monerod")
-                      (string-append (assoc-ref outputs "out")
-                                     "/bin/monerod")))))))
+     (list #:tests? #f ; No tests
+           #:configure-flags
+           #~(list "-DARCH=default"
+                   "-DENABLE_PASS_STRENGTH_METER=ON"
+                   (string-append "-DReadline_ROOT_DIR="
+                                  #$(this-package-input "readline")))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'extract-monero-sources
+                 ;; Some of the monero package source code is required
+                 ;; to build the GUI.
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (mkdir-p "monero")
+                   (copy-recursively (assoc-ref inputs "monero-source")
+                                     "monero")))
+               (add-after 'extract-monero-sources 'fix-build
+                 (lambda _
+                   (substitute* "src/version.js.in"
+                     (("@VERSION_TAG_GUI@")
+                      #$version))
+                   (substitute* "external/CMakeLists.txt"
+                     (("add_library\\(quirc" all)
+                      (string-append
+                       "set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fPIC\")\n"
+                       all)))))
+               (replace 'install
+                 (lambda _
+                   (let ((bin (string-append #$output "/bin")))
+                     (mkdir-p bin)
+                     (install-file "../build/bin/monero-wallet-gui" bin))))
+               (add-after 'qt-wrap 'install-monerod-link
+                 ;; The monerod program must be available so that
+                 ;; monero-wallet-gui can start a Monero daemon if necessary.
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (symlink (search-input-file inputs "/bin/monerod")
+                            (string-append #$output "/bin/monerod")))))))
     (home-page "https://web.getmonero.org/")
     (synopsis "Graphical user interface for the Monero currency")
     (description
@@ -1543,7 +1541,7 @@ Trezor wallet.")
      (list pkg-config
            python ; for the tests
            util-linux ; provides the hexdump command for tests
-           qttools))
+           qttools-5))
     (inputs
      (list bdb-5.3
            boost
@@ -1657,7 +1655,7 @@ following three utilities are included with the library:
            pkg-config
            python ; for the tests
            util-linux ; provides the hexdump command for tests
-           qttools))
+           qttools-5))
     (inputs
      (list bdb-4.8
            boost
@@ -1677,7 +1675,7 @@ following three utilities are included with the library:
                        (assoc-ref %build-inputs "boost"))
         ;; XXX: The configure script looks up Qt paths by
         ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick
-        ;; up executables residing in 'qttools', so we specify them here.
+        ;; up executables residing in 'qttools-5', so we specify them here.
         (string-append "ac_cv_path_LRELEASE="
                        (assoc-ref %build-inputs "qttools")
                        "/bin/lrelease")
@@ -1731,7 +1729,7 @@ a Qt GUI.")
               (string-append "PREFIX=" %output)
               "features="))))))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
      (list python qtbase-5 rocksdb zlib))
     (home-page "https://gitlab.com/FloweeTheHub/fulcrum/")
@@ -1798,7 +1796,7 @@ like Flowee the Hub, which Fulcrum connects to over RPC.")
            openssl
            qtbase-5))
     (native-inputs
-     (list pkg-config qttools util-linux))       ; provides the hexdump command for tests
+     (list pkg-config qttools-5 util-linux))       ; provides the hexdump command for tests
     (home-page "https://flowee.org")
     (synopsis "Flowee infrastructure tools and services")
     (description
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index a381f061af..20b55bce96 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -50,6 +50,7 @@
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2022 Jose G Perez Taveras <josegpt27@gmail.com>
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1578,7 +1579,7 @@ programming.  Iosevka is completely generated from its source code.")
 (define-public font-sarasa-gothic
   (package
     (name "font-sarasa-gothic")
-    (version "0.36.0")
+    (version "0.36.8")
     (source
      (origin
        (method url-fetch)
@@ -1586,7 +1587,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/sarasa-gothic-ttc-" version ".7z"))
        (sha256
-        (base32 "0rr6qrf49zx3cl1pv7063l12nnj2nm9p4di3frp0p4ci9l7b4xmw"))))
+        (base32 "01fn5mzr1rcz0c8nbhabwbv1pq1c3ylf2msxldc9adks1pi45fmh"))))
     (build-system font-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1598,7 +1599,7 @@ programming.  Iosevka is completely generated from its source code.")
     (native-inputs (list p7zip))
     (home-page "https://github.com/be5invis/Sarasa-Gothic")
     (license license:silofl1.1)
-    (synopsis "Sarasa Gothic / 更纱黑体 / 更紗黑體 / 更紗ゴシック / 사라사 고딕")
+    (synopsis "CJK programming font based on Iosevka and Source Han Sans")
     (description
      "Sarasa Gothic is a programming font based on Iosevka and Source Han Sans,
 most CJK characters are same height, and double width as ASCII characters.")))
@@ -2709,3 +2710,88 @@ This package contains the following outputs:
 icon is designed on a 24x24 grid with an emphasis on simplicity, consistency,
 and readability.  This package bundles those icons into a font.")
       (license license:expat))))
+
+(define-public font-lxgw-wenkai
+  (package
+    (name "font-lxgw-wenkai")
+    (version "1.235.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/lxgw/LxgwWenKai/releases/download/v"
+                    version "/lxgw-wenkai-v" version ".tar.gz"))
+              (sha256
+               (base32
+                "17li3xry4j4ccdnwz2pcnf0gv7c5mwq0h5fwvl7ar28brn2qgdbk"))))
+    (build-system font-build-system)
+    (home-page "https://lxgw.github.io/2021/01/28/Klee-Simpchin/")
+    (synopsis "Simplified Chinese Imitation Song typeface")
+    (description
+     "LXGW Wenkai is a Simplified Chinese Imitation Song typeface covering the
+CJK Unified Ideographs (base block) and commonly used Hangul.  For characters
+within GB 2312, standard glyphs for Mainland China is used.")
+    (license license:silofl1.1)))
+
+(define-public font-lxgw-wenkai-tc
+  (package
+    (inherit font-lxgw-wenkai)
+    (name "font-lxgw-wenkai-tc")
+    (version "0.920")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/lxgw/LxgwWenKaiTC/releases/download/v"
+                    version "/lxgw-wenkai-tc-v" version ".tar.gz"))
+              (sha256
+               (base32
+                "1kysqzi19ldd1a3pd9axmggcbm1719myq6i6q6fdb1afscn272cp"))))
+    (home-page "https://github.com/lxgw/LxgwWenKaitc")
+    (synopsis "Traditional Chinese Imitation Song typeface")
+    (description
+     "LXGW Wenkai TC is a Traditional Chinese inherited glyphs form Imitation
+Song typeface covering commonly used characters as well as written form of
+dialects in Hong Kong and Taiwan.")))
+
+(define-public font-chiron-sung-hk
+  (package
+    (name "font-chiron-sung-hk")
+    (version "1.005")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/chiron-fonts/chiron-sung-hk")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0iqlnb7825kisg2avhr9hwwvb4jw8f642vvmms5dw6m9czzydpgw"))))
+    (build-system font-build-system)
+    (home-page "https://chiron-fonts.github.io/")
+    (synopsis "Traditional Chinese Song typeface")
+    (description
+     "Chiron Sung HK is a Traditional Chinese Song typeface based on the Hong
+Kong variant of Adobe’s Source Han Serif.  The font aims at providing a modern,
+region-agnostic glyph set adopting the “modern” glyph style that is similar to
+prevalent typefaces in Traditional Chinese regions.")
+    (license license:silofl1.1)))
+
+(define-public font-chiron-hei-hk
+  (package
+    (inherit font-chiron-sung-hk)
+    (name "font-chiron-hei-hk")
+    (version "2.503")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/chiron-fonts/chiron-hei-hk")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00av598lcsvbwfxabs8m1bfvlk3zq98nziynsrg5p2s5mhz2pkvk"))))
+    (synopsis "Traditional Chinese Gothic typeface")
+    (description
+     "Chiron Hei HK is a Traditional Chinese Gothic typeface based on the Hong
+Kong variant of Adobe’s Source Han Sans.  The font aims at providing a modern,
+region-agnostic glyph set adopting the “modern” glyph style that is similar to
+prevalent typefaces in Traditional Chinese regions.")))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 57141ad7d8..a7d9472425 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -25,7 +25,7 @@
 ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me>
-;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2021, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
@@ -78,6 +78,7 @@
   #:use-module (gnu packages disk)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
@@ -416,7 +417,15 @@ inappropriate content.")
      (list docbook-xsl docbook-xml-4.1.2 libxslt w3m xmlto))
     (inputs
      `(("awk" ,gawk)
+       ;; TODO(staging): Make this unconditional, to avoid canonical packages,
+       ;; see <https://lists.gnu.org/archive/html/guix-devel/2020-02/msg00148.html>.
+       ,@(if (%current-target-system)
+             `(("bash-minimal" ,bash-minimal)) ; for 'wrap-program'
+             '())
        ("coreutils" ,coreutils)
+       ,@(if (%current-target-system)
+             `(("file" ,file))
+             '())
        ("grep" ,grep)
        ("inetutils" ,inetutils) ; xdg-screensaver uses `hostname'
        ("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
@@ -430,19 +439,44 @@ inappropriate content.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-hardcoded-paths
-           (lambda _
-             (substitute* "scripts/xdg-mime.in"
-               (("/usr/bin/file") (which "file")))
-             (substitute* "scripts/xdg-open.in"
-               (("/usr/bin/printf") (which "printf")))
-             #t))
+           ;; TODO(staging): make unconditional
+           (,@(if (%current-target-system)
+                 '(lambda* (#:key inputs #:allow-other-keys))
+                 '(lambda _))
+            (substitute* "scripts/xdg-mime.in"
+              (("/usr/bin/file")
+               (,@(if (%current-target-system)
+                      '(search-input-file inputs "bin/file")
+                      '(which "file")))))
+            (substitute* "scripts/xdg-open.in"
+              (("/usr/bin/printf")
+               (,@(if (%current-target-system)
+                      '(search-input-file inputs "bin/printf")
+                      '(which "printf")))))
+            #t))
          (add-before 'build 'locate-catalog-files
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
-                                          "/xml/dtd/docbook"))
-                   (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
-                                          "/xml/xsl/docbook-xsl-"
-                                          ,(package-version docbook-xsl))))
+           ;; TODO(staging): Make unconditional for simplicity.
+           (lambda* (#:key inputs ,@(if (%current-target-system)
+                                        '(native-inputs)
+                                        '()) #:allow-other-keys)
+             ;; TODO(staging): Make unconditional for simplicity and
+             ;; to avoid depending on input labels.
+             (let ,(if (%current-target-system)
+                       `((native-inputs (or native-inputs inputs))
+                         (xmldoc (search-input-directory native-inputs
+                                                         "xml/dtd/docbook"))
+                         (xsldoc
+                          (search-input-directory
+                           native-inputs
+                           (string-append "xml/xsl/docbook-xsl-"
+                                          ,(package-version docbook-xsl)))))
+                       `((xmldoc
+                          (string-append (assoc-ref inputs "docbook-xml")
+                                         "/xml/dtd/docbook"))
+                         (xsldoc
+                          (string-append (assoc-ref inputs "docbook-xsl")
+                                         "/xml/xsl/docbook-xsl-"
+                                         ,(package-version docbook-xsl)))))
                (for-each (lambda (file)
                            (substitute* file
                              (("http://.*/docbookx\\.dtd")
@@ -458,6 +492,8 @@ inappropriate content.")
                                  "/manpages/docbook.xsl man")))
                (setenv "STYLESHEET"
                        (string-append xsldoc "/html/docbook.xsl"))
+               ;; TODO(staging): Might as well remove the #t while we are at
+               ;; it.
                #t)))
          (add-after 'install 'wrap-executables
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -1321,13 +1357,17 @@ Analysis and Reporting Technology) functionality.")
     (propagated-inputs
      (list glib)) ; required by udisks2.pc
     (inputs
-     (list acl
-           cryptsetup
-           libatasmart
-           libblockdev
-           libgudev
-           polkit
-           util-linux))
+     `(,acl
+       ;; TODO(staging): Make unconditional.
+       ,@(if (%current-target-system)
+             (list bash-minimal) ; for wrap-program
+             '())
+       ,cryptsetup
+       ,libatasmart
+       ,libblockdev
+       ,libgudev
+       ,polkit
+       ,util-linux))
     (outputs '("out"
                "doc"))                            ;5 MiB of gtk-doc HTML
     (arguments
@@ -1938,6 +1978,11 @@ applications define in those files.")
         (base32
          "1i5iw6ri0w9clwpqf40xmsh4isc8xvx2lyf2r5g34886i6rsdgpn"))))
     (build-system perl-build-system)
+    (inputs
+     ;; TODO(staging): Make unconditional.
+     (if (%current-target-system)
+         (list bash-minimal) ; for wrap-program
+         '()))
     ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
     ;; perl-test-tiny as native-inputs.
     (propagated-inputs
@@ -1945,19 +1990,31 @@ applications define in those files.")
     (arguments
      ;; Some tests fail due to requiring the mimetype of perl files to be
      ;; text/plain when they are actually application/x-perl.
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-programs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each (lambda (prog)
-                           (wrap-program (string-append out "/bin/" prog)
-                             `("PERL5LIB" ":" prefix
-                               (,(string-append (getenv "PERL5LIB") ":" out
-                                                "/lib/perl5/site_perl")))))
-                         '("mimeopen" "mimetype")))
-             #t)))))
+     (list #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'wrap-programs
+                 ;; TODO(staging): Make unconditional.
+                 (lambda* (#:key #$@(if (%current-target-system)
+                                        #~(inputs)
+                                        #~()) outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     (for-each
+                      (lambda (prog)
+                        (wrap-program (string-append out "/bin/" prog)
+                          `("PERL5LIB" ":" prefix
+                            ;; PERL5LIB looks in 'native-inputs', not 'inputs',
+                            ;; whereas the latter is required for
+                            ;; cross-compilation.
+                            #$(if (%current-target-system)
+                                  #~,(search-path-as-list
+                                      '("lib/perl5/site_perl")
+                                      (map cdr (append inputs outputs)))
+                                  #~(,(string-append
+                                       (getenv "PERL5LIB")
+                                       ":" out "/lib/perl5/site_perl"))))))
+                      '("mimeopen" "mimetype")))
+                   #t)))))
     (home-page "https://metacpan.org/release/File-MimeInfo")
     (synopsis "Determine file type from the file name")
     (description
@@ -2034,7 +2091,15 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
        ("gettext" ,gettext-minimal)
        ("gobject-introspection" ,gobject-introspection)))
     (inputs
-     (list gobject-introspection gtk+ libappindicator libnotify udisks))
+     ;; TODO(staging): Make unconditional.
+     `(,@(if (%current-target-system)
+             (list bash-minimal)
+             '())
+       ,gobject-introspection
+       ,gtk+
+       ,libappindicator
+       ,libnotify
+       ,udisks))
     (propagated-inputs
      (list python-docopt python-pygobject python-keyutils python-pyxdg
            python-pyyaml))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 30512dcc80..3e0301a199 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019, 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2019 Jethro Cao <jethrocao@gmail.com>
@@ -520,9 +520,9 @@ formats such as PNG.")
                 "05gczsywkk45bh0z1vv8l6cmrlncc2qj8agavj5ryxpnxkzy69r1"))))
     (build-system gnu-build-system)
     (inputs
-     (list qtbase-5 qtdeclarative qtsvg zlib))
+     (list qtbase-5 qtdeclarative-5 qtsvg-5 zlib))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -531,8 +531,8 @@ formats such as PNG.")
              (substitute* "translations/translations.pro"
                (("LRELEASE =.*")
                 (string-append "LRELEASE = "
-                               (assoc-ref inputs "qttools")
-                               "/bin/lrelease\n")))
+                               (search-input-file inputs "/bin/lrelease")
+                               "\n")))
              (let ((out (assoc-ref outputs "out")))
                (invoke "qmake"
                        (string-append "PREFIX=" out))))))))
@@ -2467,13 +2467,23 @@ rigid body physics library written in C.")
        (modules '((guix build utils)))
        (snippet
         '(begin
-           ;; Bundled code only used for the testbed.
-           (delete-file-recursively "extern")))))
+           ;; Remove bundled code only used for the testbed.
+           (delete-file-recursively "extern")
+           ;; Remove bundled copy of doctest, and adjust tests accordingly.
+           (delete-file "unit-test/doctest.h")
+           (substitute* "unit-test/CMakeLists.txt"
+             (("doctest\\.h")
+              ""))
+           (substitute* (find-files "unit-test" "\\.cpp$")
+             (("include \"doctest\\.h\"")
+              "include <doctest/doctest.h>"))))))
     (build-system cmake-build-system)
     (arguments
      `(#:test-target "unit_test"
        #:configure-flags '("-DBUILD_SHARED_LIBS=ON"
                            "-DBOX2D_BUILD_TESTBED=OFF")))
+    (native-inputs
+     (list doctest))                    ;for tests
     (inputs
      (list libx11))
     (home-page "https://box2d.org/")
@@ -2623,7 +2633,7 @@ utilities frequently used in roguelikes.")
          ("openal" ,openal)
          ("pulseaudio" ,pulseaudio)
          ("qtbase" ,qtbase-5)
-         ("qtdeclarative" ,qtdeclarative)
+         ("qtdeclarative-5" ,qtdeclarative-5)
          ("sdl2" ,sdl2)
          ("uuid.h" ,util-linux "lib")
          ("zlib" ,zlib)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index d55a2ee867..99eccca04d 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -504,6 +504,60 @@ regret their insolence.")
     ;; BY-SA 4.0, and fonts to OFL1.1.
     (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
 
+(define-public barony
+  (package
+    (name "barony")
+    (version "3.3.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TurningWheel/Barony")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y72k6zrqqhib3p05zkdklays2d218v51n87k7k68m0s7nnxa4vy"))
+       ;; Fix textures for SDL 2.0.14.
+       ;; See <https://github.com/TurningWheel/Barony/pull/582>.
+       (patches (search-patches "barony-fix-textures.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DOPENAL_ENABLED=ON" ; enable sound
+             "-DEDITOR_EXE_NAME=barony-editor") ; instead of generic "editor"
+       #:tests? #f ; there are no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-installation
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/lang")
+                "${CMAKE_SOURCE_DIR}/lang")))))))
+    (inputs
+     (list glu
+           libpng
+           libvorbis
+           openal
+           physfs
+           rapidjson
+           sdl2
+           sdl2-image
+           sdl2-net
+           sdl2-ttf
+           zlib))
+    (native-inputs
+     (list pkg-config))
+    (home-page "http://baronygame.com")
+    (synopsis "3D first-person roguelike game")
+    (description
+     "Barony is a first-person roguelike role-playing game with cooperative
+play.  The player must descend a dark dungeon and destroy an undead lich while
+avoiding traps and fighting monsters.  The game features randomly generated
+dungeons, 13 character classes, hundreds of items and artifacts, and
+cooperative multiplayer for up to four players.  This package does @emph{not}
+provide the game assets.")
+    (license license:bsd-2)))
+
 (define-public bastet
   (package
     (name "bastet")
@@ -993,10 +1047,10 @@ want what you have.")
       (inputs
        (list protobuf
              qtbase-5
-             qtmultimedia
-             qtsvg
-             qttools
-             qtwebsockets
+             qtmultimedia-5
+             qtsvg-5
+             qttools-5
+             qtwebsockets-5
              xz
              zlib))
       (home-page "https://cockatrice.github.io")
@@ -2504,7 +2558,7 @@ and defeat them with your bubbles!")
              (setenv "XDG_RUNTIME_DIR" (getcwd))
              #t)))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      `(("glm" ,glm)
        ("libmodplug" ,libmodplug)
@@ -7199,11 +7253,11 @@ making Yamagi Quake II one of the most solid Quake II implementations available.
        ;; with multiple "QPainter:: ... Painter not active" warnings.
        #:tests? #f))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtbase-5 qtsvg-5))
     (native-inputs
      `(("cmake" ,cmake-minimal)
        ("gettext-minimal" ,gettext-minimal)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (synopsis "Realistic physics puzzle game")
     (description "The Butterfly Effect (tbe) is a game that uses
 realistic physics simulations to combine lots of simple mechanical
@@ -7949,7 +8003,7 @@ open-source FPS of its kind.")
 (define-public frotz
   (package
     (name "frotz")
-    (version "2.44")
+    (version "2.54")
     (source (origin
               (method url-fetch)
               (uri (list (string-append
@@ -7960,28 +8014,25 @@ open-source FPS of its kind.")
                           "frotz/frotz-" version ".tar.gz")))
               (sha256
                (base32
-                "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
+                "1vsfq9ryyb4nvzxpnnn40k423k9pdy8k67i8390qz5h0vmxw0fds"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before 'build 'curses
-           (lambda _
-             (substitute* "Makefile"
-               (("lcurses") "lncurses"))
-             #t))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (man (string-append out "/share/man/man6")))
-               (install-file "frotz" bin)
-               (mkdir-p man)
-               (install-file "doc/frotz.6" man)
-               #t))))))
-    (inputs (list libmodplug libsamplerate libsndfile libvorbis ncurses))
+     (list #:tests? #f                  ; there are no tests
+           #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target)))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)      ; no configure-script
+               (replace 'install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (bin (string-append out "/bin"))
+                          (man (string-append out "/share/man/man6")))
+                     (install-file "frotz" bin)
+                     (mkdir-p man)
+                     (install-file "doc/frotz.6" man)))))))
+    (native-inputs (list pkg-config which))
+    (inputs (list ao libmodplug libsamplerate libsndfile libvorbis ncurses))
     (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
     (description "Frotz is an interpreter for Infocom games and other Z-machine
 games in the text adventure/interactive fiction genre.  This version of Frotz
@@ -7994,7 +8045,7 @@ ncurses for text display.")
 (define-public naev
   (package
     (name "naev")
-    (version "0.9.3")
+    (version "0.9.4")
     (source
      (origin
        (method git-fetch)
@@ -8004,7 +8055,7 @@ ncurses for text display.")
              (recursive? #t))) ; for game data
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hvgxzvph9s5gdzlj5kjnz2d2j7bi8s11k7i6540837mnppah18j"))))
+        (base32 "0isswidhxhs2q5c4cxryjr8y8ibfxckpfyccly3b4lg1nxvm5gjv"))))
     (build-system meson-build-system)
     (arguments
      ;; XXX: Do not add debugging symbols, which cause the build to fail.
@@ -9270,8 +9321,8 @@ and also provides the base for the FlightGear Flight Simulator.")
            openscenegraph
            plib
            qtbase-5
-           qtdeclarative
-           qtsvg
+           qtdeclarative-5
+           qtsvg-5
            simgear
            speexdsp
            sqlite
@@ -9279,7 +9330,7 @@ and also provides the base for the FlightGear Flight Simulator.")
     (native-inputs
      `(("cppunit" ,cppunit)
        ("pkg-config" ,pkg-config)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("flightgear-data"
         ,(origin
            (method url-fetch)
@@ -9407,7 +9458,7 @@ play with up to four players simultaneously.  It has network support.")
        ("sdl" ,(sdl-union
                 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
     (native-inputs
-     (list clang-9 ghc pkg-config qttools))
+     (list clang-9 ghc pkg-config qttools-5))
     (home-page "https://hedgewars.org/")
     (synopsis "Turn-based artillery game featuring fighting hedgehogs")
     (description
@@ -9740,54 +9791,51 @@ Skorl.  Maybe it would be an idea to try and escape...")
                            file-prefix release ".zip"))
        (sha256
         (base32 hash))))
-    (build-system trivial-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (share (string-append out "/share"))
-                (data (string-append share "/" ,name))
-                (apps (string-append share "/applications"))
-                (bin (string-append out "/bin"))
-                (executable (string-append bin "/" ,name))
-                (scummvm (assoc-ref %build-inputs "scummvm")))
-           (let ((unzip (search-input-file %build-inputs "/bin/unzip")))
-             (invoke unzip "-j" (assoc-ref %build-inputs "source")))
-           (let ((doc (string-append share "/doc/" ,name "-" ,version)))
-             (install-file "readme.txt" doc))
-           (install-file "queen.1c" data)
-           (mkdir-p bin)
-           (let ((bash (assoc-ref %build-inputs "bash")))
-             (with-output-to-file executable
-               (lambda ()
-                 (format #t "#!~a/bin/bash~%" bash)
-                 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
-                         scummvm data))))
-           (chmod executable #o755)
-           ;; Create desktop file.  There is no dedicated
-           ;; icon for the game, so we borrow SCUMMVM's.
-           (mkdir-p apps)
-           (with-output-to-file (string-append apps "/" ,name ".desktop")
-             (lambda _
-               (format #t
-                       "[Desktop Entry]~@
-                       Name=Flight of the Amazon Queen~@
-                       GenericName=Queen~@
-                       Comment=Embark on a quest to rescue a kidnapped princess and in the process, discover the true sinister intentions of a suspiciously located Lederhosen company~@
-                       Comment[de]=Begib dich auf ein Abenteuer, um eine entführte Prinzessin zu retten und entdecke die wahren, finsteren Absichten eines verdächtig erscheinenden Lederhosen-Unternehmens~@
-                       Type=Application~@
-                       Exec=~a~@
-                       Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
-                       Categories=AdventureGame;Game;RolePlaying;~@
-                       Keywords=adventure;game;roleplaying;fantasy;~%"
-                       executable scummvm))))
-         #t)))
-    (native-inputs
-     (list unzip))
-    (inputs
-     (list bash scummvm))
+     (list
+      #:install-plan
+      #~'(("queen.1c" #$(string-append "share/" name "/"))
+          (#$name "bin/")
+          (#$(string-append name ".desktop") "share/applications/")
+          ("." #$(string-append "share/doc/" name "-" version)
+           #:include-regexp ("README" "readme")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'build
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (with-output-to-file #$name
+                (lambda ()
+                  (format #t "#!~a~%" (search-input-file inputs "bin/sh"))
+                  (format #t "exec ~a -q ~a -p ~a queen~%"
+                          (search-input-file inputs "bin/scummvm")
+                          #$language
+                          (string-append (assoc-ref outputs "out")
+                                         "/share/" #$name))))
+              (chmod #$name #o755)
+              (with-output-to-file #$(string-append name ".desktop")
+                (lambda ()
+                  (format
+                   #t
+                   "[Desktop Entry]~@
+                    Name=Flight of the Amazon Queen~@
+                    GenericName=Queen~@
+                    Comment=Embark on a quest to rescue a kidnapped princess~
+                    and in the process, discover the true sinister intentions~
+                    of a suspiciously located Lederhosen company~@
+                    Comment[de]=Begib dich auf ein Abenteuer, um eine entführte~
+                    Prinzessin zu retten und entdecke die wahren, finsteren~
+                    Absichten eines verdächtig erscheinenden~
+                    Lederhosen-Unternehmens~@
+                    Type=Application~@
+                    Exec=~a~@
+                    Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
+                    Categories=AdventureGame;Game;RolePlaying;~@
+                    Keywords=adventure;game;roleplaying;fantasy;~%"
+                   (string-append (assoc-ref outputs "out") "/bin/" #$name)
+                   (search-input-file inputs "bin/scummvm")))))))))
+    (native-inputs (list unzip))
+    (inputs (list bash scummvm))
     (home-page "https://www.scummvm.org/")
     (synopsis "Classic 2D point and click adventure game")
     (description "Flight of the Amazon Queen is a 2D point-and-click
@@ -10153,7 +10201,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
    (native-inputs
     (list pkg-config))
    (inputs
-    (list qtbase-5 qtmultimedia qtsvg))
+    (list qtbase-5 qtmultimedia-5 qtsvg-5))
    (arguments
     '(#:phases
       (modify-phases %standard-phases
@@ -10247,9 +10295,9 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
            libkdegames
            python-wrapper
            qtbase-5
-           qtmultimedia
-           qtdeclarative
-           qtsvg))
+           qtmultimedia-5
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Stamp drawing toy")
     (description "KTuberling is a drawing toy intended for small children and
@@ -10294,8 +10342,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Number logic game")
     (description "Picmi is a number logic game in which cells in a grid have
@@ -10332,7 +10380,7 @@ This package is part of the KDE games module.")
            ktextwidgets
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Miniature golf game")
     (description "Kolf is a miniature golf game for one to ten players.  The
@@ -10376,7 +10424,7 @@ This package is part of the KDE games module.")
            ki18n
            kwidgetsaddons
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Shared library for kmahjongg and kshisen")
     (description "Shared library and common files for kmahjongg, kshisen and
@@ -10408,8 +10456,8 @@ other Mah Jongg like games.")
            libkdegames
            libkmahjongg
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Tile laying patience")
     (description "In KMahjongg the tiles are scrambled and staked on top of
@@ -10451,7 +10499,7 @@ This package is part of the KDE games module.")
            libkdegames
            libkmahjongg
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Shisen-Sho solitaire game")
     (description "KShisen is a solitaire-like game played using the standard
@@ -10506,7 +10554,7 @@ This package is part of the KDE games module.")
            python-pyqt
            python-zope-interface
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Classical Mah Jongg game for 4 players")
     (description "Kajongg is the ancient Chinese board game for 4 players.
@@ -10548,7 +10596,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Breakout like game")
     (description "KBreakout is similar to the classics breakout and xboing,
@@ -10586,7 +10634,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Classical mine sweeper game")
     (description "KMines is a classic Minesweeper game.  The idea is to
@@ -10622,8 +10670,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Simple turn-based strategy game")
     (description "Konquest is the KDE version of Gnu-Lactic Konquest.  Players
@@ -10661,8 +10709,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Jezzball arcade game")
     (description "KBounce is a single player arcade game with the elements of
@@ -10699,8 +10747,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Single player falling blocks puzzle game")
     (description "KBlocks is the classic Tetris-like falling blocks game.
@@ -10742,8 +10790,8 @@ This package is part of the KDE games module.")
            libkdegames
            glu
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Sudoku puzzle game and solver")
     (description "KSudoku is a Sudoku game and solver, supporting a range of
@@ -10798,7 +10846,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
     (description "KLines is a simple but highly addictive one player game.
@@ -10841,7 +10889,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Action and puzzle solving game")
     (description "KGoldrunner is an action game where the hero runs through a
@@ -10884,7 +10932,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Three-in-a-row game")
     (description "KDiamond is a three-in-a-row game like Bejeweled.  It
@@ -10919,8 +10967,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Place 4 pieces in a row")
     (description "KFourInLine is a board game for two players based on the
@@ -10958,8 +11006,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Find atoms in a grid by shooting electrons")
     (description "KBlackbox is a game of hide and seek played on a grid of
@@ -10999,7 +11047,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Turn the board pieces to get all computers connected")
     (description "KNetWalk is a small game where you have to build up a
@@ -11037,7 +11085,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Arcade bombing game")
     (description "Bomber is a single player arcade game.
@@ -11081,8 +11129,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Bomberman clone")
     (description "Granatier is a clone of the classic Bomberman game,
@@ -11117,8 +11165,8 @@ This package is part of the KDE games module.")
            phonon
            qca
            qtbase-5
-           qtdeclarative
-           qtsvg
+           qtdeclarative-5
+           qtsvg-5
            zlib))
     (home-page "https://games.kde.org/")
     (synopsis "Computerized version of the well known strategy board game
@@ -11178,8 +11226,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg
+           qtdeclarative-5
+           qtsvg-5
            shared-mime-info))
     (home-page "https://games.kde.org/")
     (synopsis "Jigsaw puzzle game")
@@ -11219,7 +11267,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Yahtzee dice game")
     (description "Kiriki is an addictive and fun dice game, designed to be
@@ -11258,8 +11306,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Go board game")
     (description "Kigo is an open-source implementation of the popular Go
@@ -11303,8 +11351,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Game based on Rubik's Cube")
     (description "Kubrick is a game based on the Rubik's Cube puzzle.
@@ -11343,8 +11391,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Lieutnant Skat card game")
     (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
@@ -11381,8 +11429,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Pac-Man clone")
     (description "Kapman is a clone of the well known game Pac-Man.
@@ -11420,8 +11468,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Two player game with shooting spaceships flying around a sun")
     (description "KSpaceduel is a space battle game for one or two players,
@@ -11453,8 +11501,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Classic pen and paper game: five in a line")
     (description "Bovo is a Gomoku (from Japanese 五目並べ - lit.  \"five
@@ -11492,7 +11540,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Port of the classic BSD console game robots")
     (description "Killbots is a simple game of evading killer robots.
@@ -11533,8 +11581,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Snake race played against the computer")
     (description "KSnakeDuel is a fast action game where you steer a snake
@@ -11570,7 +11618,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Simple ball dodging game")
     (description "In Kollision you use mouse to control a small blue ball in a
@@ -11610,7 +11658,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Battleship board game with built-in game server")
     (description "KBattleship is a Battle Ship game for KDE.
@@ -11649,8 +11697,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Old reversi board game, also known as othello")
     (description "KReversi is a simple one player strategy game played
@@ -11690,7 +11738,7 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://games.kde.org/")
     (synopsis "Dots and Boxes game")
     (description "KSquares is an implementation of the popular paper based
@@ -11726,8 +11774,8 @@ This package is part of the KDE games module.")
            kxmlgui
            libkdegames
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Simple tactical game for number-crunchers")
     (description "KJumpingcube is a simple tactical game for one or two
@@ -11883,9 +11931,9 @@ and chess engines.")
         (base32 "01fjchil2h6ry2ywr0dwjw2g7zd29580cr4c74d5z74h999lp6nh"))))
     (build-system qt-build-system)
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtmultimedia qtspeech qtsvg zlib))
+     (list qtbase-5 qtmultimedia-5 qtspeech qtsvg-5 zlib))
     (arguments
      `(#:tests? #f
        #:phases
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index aa9e479e46..7d8416c7c5 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -149,6 +149,18 @@ the program is running to try to fix bugs.  It can be used to debug programs
 written in C, C++, Ada, Objective-C, Pascal and more.")
     (license gpl3+)))
 
+(define-public gdb-12
+  (package
+    (inherit gdb-11)
+    (version "12.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gdb/gdb-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1vczsqcbh5y0gx7qrclpna0qzx26sk7lra6y8qzxam1biyzr65qf"))))))
+
 (define-public gdb
   ;; This is the fixed version that packages depend on.  Update it rarely
   ;; enough to avoid massive rebuilds.
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index a05b86219e..fe2174b106 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -1495,7 +1495,7 @@ map display.  Downloads map data from a number of websites, including
                   (string-append "\"" font "/share/fonts/\"")))))))
        #:tests? #f)) ; no tests
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
      (list bzip2
            font-liberation
@@ -1952,16 +1952,16 @@ using the dataset of topographical information collected by
         (base32 "184fqmsfzr3b333ssizjk6gvv7mncmygq8dj5r7rsvs5md26z2ys"))))
     (build-system qt-build-system)
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list gdal
            libjpeg-turbo
            proj
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtlocation
-           qtwebchannel
-           qtwebengine
+           qtwebchannel-5
+           qtwebengine-5
            quazip
            routino
            sqlite ; See wrap phase
@@ -2199,7 +2199,7 @@ track your position right from your laptop.")
        ("zlib" ,zlib)))
     (native-inputs
      `(("doxygen" ,doxygen)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (home-page "https://www.openorienteering.org/apps/mapper/")
     (synopsis "OpenOrienteering Mapper (OOM)")
     (description
@@ -2618,11 +2618,11 @@ growing set of geoscientific methods.")
            qca
            qscintilla
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtkeychain
            qtlocation
            qtserialport
-           qtsvg
+           qtsvg-5
            qwt
            ;;("saga" ,saga)
            sqlite))
@@ -2634,7 +2634,7 @@ growing set of geoscientific methods.")
            pkg-config
            python-mock
            python-nose2
-           qttools
+           qttools-5
            shellcheck
            xorg-server-for-tests))
     (home-page "https://qgis.org")
@@ -2764,7 +2764,7 @@ using third-party geocoders and other data sources.")
            python-3
            python-numpy
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtxmlpatterns
            qwt
            zlib))
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 1cf4793ba7..c37ae27cc5 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -305,7 +305,7 @@ takes advantage of modern hardware using OpenGL.")
 (define-public gnome-shell-extension-appindicator
   (package
     (name "gnome-shell-extension-appindicator")
-    (version "33")
+    (version "42")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -314,13 +314,11 @@ takes advantage of modern hardware using OpenGL.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "0qm77s080nbf4gqnfzpwp8a7jf7lliz6fxbsd3lasvrr11pgsk87"))
+                "1lf3aqb924nzhj87rhy2zvm5pcfqcklhfw21m6ic3i7wzd9r7cnc"))
               (file-name (git-file-name name version))))
-    (build-system copy-build-system)
-    (arguments
-     `(#:install-plan
-       '(("." ,(string-append "share/gnome-shell/extensions/"
-                              "appindicatorsupport@rgcjonas.gmail.com")))))
+    (build-system meson-build-system)
+    (native-inputs (list jq gnu-gettext
+                         `(,glib "bin")))
     (synopsis "Adds KStatusNotifierItem support to GNOME Shell")
     (description "This extension integrates Ubuntu AppIndicators
 and KStatusNotifierItems (KDE's successor of the systray) into
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2456434d62..d5a7f71635 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3204,6 +3204,98 @@ the GNOME desktop environment.")
                                 (variable "GLADE_MODULE_SEARCH_PATH")
                                 (files '("lib/glade/modules")))))))
 
+(define-public cambalache
+  (package
+   (name "cambalache")
+   (version "0.10.2")
+   (source (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "https://gitlab.gnome.org/jpu/cambalache")
+                  (commit version)))
+            (file-name (git-file-name name version))
+            (sha256
+             (base32 "1mw5gk98zx03yal3p8slaqwhwkc9p2vnh0cssnmg6ivxsjscqhgz"))))
+   (build-system meson-build-system)
+   (arguments
+    (list
+     #:glib-or-gtk? #t
+     #:imported-modules `((guix build python-build-system)
+                          ,@%meson-build-system-modules)
+     #:modules '((guix build meson-build-system)
+                 ((guix build python-build-system) #:prefix python:)
+                 (guix build utils))
+     #:phases
+     #~(modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "cambalache/cmb_view.py"
+               (("GLib\\.find_program_in_path\\('(.*)'\\)" all cmd)
+                (string-append "'"
+                               (search-input-file inputs
+                                                  (string-append "/bin/" cmd))
+                               "'")))))
+         (add-after 'unpack 'patch-build
+           (lambda _
+             (substitute* "postinstall.py"
+               (("update-desktop-database") "true"))))
+         (add-after 'wrap 'python-wrap (assoc-ref python:%standard-phases 'wrap))
+         (delete 'check)
+         (add-after 'install 'add-install-to-pythonpath
+           (assoc-ref python:%standard-phases 'add-install-to-pythonpath))
+         (add-after 'add-install-to-pythonpath 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")))
+         (add-after 'pre-check 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (with-directory-excursion ".."
+                 (invoke "python3" "-m" "pytest")))))
+         (add-after 'glib-or-gtk-wrap 'wrap-typelib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each
+                (lambda (prog)
+                  (unless (wrapped-program? prog)
+                    (wrap-program prog
+                      `("GI_TYPELIB_PATH" suffix
+                        (,(string-append out "/lib/girepository-1.0")
+                         ,(getenv "GI_TYPELIB_PATH")))
+                      ;; icons and schemas
+                      `("XDG_DATA_DIRS" suffix
+                        #$(map
+                           (lambda (input)
+                             (file-append (this-package-input input) "/share"))
+                           '("adwaita-icon-theme" "hicolor-icon-theme"
+                             "gsettings-desktop-schemas")))
+                      ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Cambalache to
+                      ;; load its own icons in pure environments.
+                      `("GDK_PIXBUF_MODULE_FILE" =
+                        (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))
+                (find-files (string-append out "/bin")))))))))
+   (inputs (list bash-minimal
+                 adwaita-icon-theme hicolor-icon-theme
+                 gsettings-desktop-schemas
+                 gtk
+                 `(,gtk+ "bin")         ; broadwayd
+                 `(,gtk "bin")
+                 libadwaita
+                 libhandy
+                 (librsvg-for-system)
+                 python python-pygobject python-lxml
+                 webkitgtk-with-libsoup2))
+   (native-inputs (list `(,glib "bin") gobject-introspection
+                        gettext-minimal pkg-config
+                        python-pytest xorg-server-for-tests))
+   (home-page "https://gitlab.gnome.org/jpu/cambalache")
+   (synopsis "Rapid application development tool")
+   (description "Cambalache is a rapid application development (RAD) tool for
+Gtk 4 and 3 with a clear model-view-controller (MVC) design and
+data model first philosophy.")
+   (license (list license:lgpl2.1
+                  license:gpl2)))) ; tools
+
 (define-public libcroco
   (package
     (name "libcroco")
@@ -4229,42 +4321,6 @@ engineering.")
      "Drawing is a basic image editor aiming at the GNOME desktop.")
     (license license:gpl3+)))
 
-(define-public gnome-themes-standard
-  (package
-    (name "gnome-themes-standard")
-    (version "3.22.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/"
-                           (version-major+minor version) "/" name "-"
-                           version ".tar.xz"))
-       (sha256
-        (base32
-         "0smmiamrgcgf5sa88bsn8hwmvsyx4gczzs359nwxbkv14b2qgp31"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags
-       ;; Don't create 'icon-theme.cache'.
-       (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
-              (true      (string-append coreutils "/bin/true")))
-         (list (string-append "GTK_UPDATE_ICON_CACHE=" true)))))
-    (inputs
-     `(("gtk+" ,gtk+)
-       ("gtk+-2" ,gtk+-2)
-       ("librsvg" ,librsvg)
-       ("libxml2" ,libxml2)
-       ("glib" ,glib)))
-    (native-inputs
-     `(("intltool" ,intltool)
-       ("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)))
-    (home-page "https://launchpad.net/gnome-themes-standard")
-    (synopsis "Default GNOME 3 themes")
-    (description
-     "The default GNOME 3 themes (Adwaita and some accessibility themes).")
-    (license license:lgpl2.1+)))
-
 (define-public seahorse
   (package
     (name "seahorse")
@@ -8823,7 +8879,7 @@ easy, safe, and automatic.")
 (define-public tracker
   (package
     (name "tracker")
-    (version "3.3.1")
+    (version "3.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/tracker/"
@@ -8831,7 +8887,7 @@ easy, safe, and automatic.")
                                   "tracker-" version ".tar.xz"))
               (sha256
                (base32
-                "1lkf353xvwc0hfyi03aq2qjikx3zmva7r56nxiavy7kqjyygbmjs"))))
+                "0r144kdqxdzs51qn495vablzf1zxkhkk6imrlrzj9wiqwc2gg520"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -8862,7 +8918,8 @@ easy, safe, and automatic.")
                (invoke "dbus-run-session" "--" "meson" "test"
                        "--print-errorlogs")))))))
     (native-inputs
-     (list `(,glib "bin")
+     (list gettext-minimal
+           `(,glib "bin")
            gobject-introspection
            docbook-xsl
            docbook-xml
@@ -8872,7 +8929,6 @@ easy, safe, and automatic.")
            cmake-minimal
            python-pygobject
            gtk-doc/stable
-           intltool
            dbus
            pkg-config
            python
@@ -9464,7 +9520,6 @@ world.")
        ("dconf"                     ,dconf)
        ("desktop-file-utils"        ,desktop-file-utils)
        ("gnome-default-applications" ,gnome-default-applications)
-       ("gnome-themes-standard"     ,gnome-themes-standard)
        ("gst-plugins-base"          ,gst-plugins-base)
        ("gst-plugins-good"          ,gst-plugins-good)
        ("gucharmap"                 ,gucharmap)
@@ -9935,7 +9990,7 @@ functionality and behavior.")
 (define-public folks
   (package
     (name "folks")
-    (version "0.15.3")
+    (version "0.15.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9944,7 +9999,7 @@ functionality and behavior.")
                     "folks-" version ".tar.xz"))
               (sha256
                (base32
-                "19a4qp9ry8y24jx1v5456qn9lnw843571vkkah3bxx4ky3x3gmr1"))))
+                "11lhfn6b7gml4ckj2dkm6g889j21wpvj90srwjp85k9hcf4qmzqg"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
@@ -9963,10 +10018,10 @@ functionality and behavior.")
            readline
            telepathy-glib))
     (native-inputs
-     (list `(,glib "bin")
+     (list gettext-minimal
+           `(,glib "bin")
            gobject-introspection
            python-dbusmock
-           intltool
            pkg-config
            python
            vala))
@@ -10287,7 +10342,7 @@ Bluefish supports many programming and markup languages.")
 (define-public gnome-system-monitor
   (package
     (name "gnome-system-monitor")
-    (version "41.0")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -10296,7 +10351,7 @@ Bluefish supports many programming and markup languages.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0pwy2c95rm0ym3x5pr6rqg7zh58crjxyns4r52q99ds937349z67"))))
+         "1p3mq32pfd9260aql5nys806g0c4nrswacwqs8ms40920ci9s8qk"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -10842,7 +10897,7 @@ configurable file renaming.")
 (define-public workrave
   (package
     (name "workrave")
-    (version "1.10.48")
+    (version "1.10.50")
     (source
      (origin
        (method git-fetch)
@@ -10853,7 +10908,7 @@ configurable file renaming.")
                                          version)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0qcknxylk9mr0xzszsd1rkgh2zpnix20m998dfclkm9x8zh9pvyr"))))
+        (base32 "0fj3fqmdn4nsjgvbbvzpxw2mgiihcr1zpb08amg2p6hg9n11y9bx"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      ;; The only tests are maintainer tests (in po/), which fail.
@@ -11478,6 +11533,9 @@ versions of Adwaita, Adwaita-dark and HighContrast themes.  It also provides
 index files needed for Adwaita to be used outside of GNOME.")
     (license license:lgpl2.1+)))
 
+(define-public gnome-themes-standard
+  (deprecated-package "gnome-themes-standard" gnome-themes-extra))
+
 (define-public gnote
   (package
     (name "gnote")
@@ -12336,7 +12394,7 @@ profiler via Sysprof, debugging support, and more.")
 (define-public komikku
   (package
     (name "komikku")
-    (version "0.39.0")
+    (version "0.40.0")
     (source
      (origin
        (method git-fetch)
@@ -12346,7 +12404,7 @@ profiler via Sysprof, debugging support, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1g765kbgimfpvma67j1gscj046n2q9a9nr2pczlw65qwlm0418c5"))))
+         "12l6qks4kwi75ss61yx1f515nb30d987qw3yhi4a36w5xz721p5z"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 349cd58bcb..27d053c94b 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -362,6 +362,15 @@ libskba (working with X.509 certificates and CMS data).")
     (properties '((ftp-server . "ftp.gnupg.org")
                   (ftp-directory . "/gcrypt/gnupg")))))
 
+(define gnupg/fixed
+  (package
+    (inherit gnupg)
+    (source (origin
+              (inherit (package-source gnupg))
+              (patches
+                (append (origin-patches (package-source gnupg))
+                        (search-patches "gnupg-CVE-2022-34903.patch")))))))
+
 (define-public gnupg-1
   (package (inherit gnupg)
     (version "1.4.23")
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 2d23022503..faebb2c349 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -973,11 +973,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20220624000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20220726000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "91.11.0")
+    (version "91.12.0")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1256,7 +1256,7 @@ standards of the IceCat project.")
         ;; in the Thunderbird release tarball.  We don't use the release
         ;; tarball because it duplicates the Icecat sources and only adds the
         ;; "comm" directory, which is provided by this repository.
-        ,(let ((changeset "da48e7ecf800ec7761a3b6e0ca81e0c90adc30f7"))
+        ,(let ((changeset "bd3da11e22d0070699026cb5f4e31b44b35580f0"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1265,7 +1265,7 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "0lg8z0zk05w8jah364lm7vkc95j1nkg93gf46byz0kd4nslg05nx")))))
+               "14na1n37sqjqcxmhbp0c56a1j70gnyqgrhlrk5jkblml47x4i35w")))))
        ("cargo" ,rust "cargo")
        ("clang" ,clang)
        ("llvm" ,llvm)
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 853361bd61..e528807de7 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -84,7 +84,7 @@
     (inputs
      (list expat libusb qtbase-5 zlib))
     (native-inputs
-     (list which qttools libxml2))              ;'xmllint' needed for the KML tests
+     (list which qttools-5 libxml2))              ;'xmllint' needed for the KML tests
     (home-page "https://www.gpsbabel.org/")
     (synopsis "Convert and exchange data with GPS and map programs")
     (description
@@ -194,9 +194,9 @@ coordinates as well as partial support for adjustments in global coordinate syst
                      (string-append "PREFIX="
                                     (assoc-ref outputs "out"))))))))
     (inputs
-     (list qtbase-5 qtlocation qtsvg))
+     (list qtbase-5 qtlocation qtsvg-5))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (home-page "https://www.gpxsee.org")
     (synopsis "GPS log file viewer and analyzer")
     (description
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4fd16d7ce5..a777d19d65 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -31,6 +31,7 @@
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2022 Tobias Kortkamp <tobias.kortkamp@gmail.com>
+;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -571,6 +572,45 @@ vertices, sorting by primitive type, merging of redundant materials and many
 more.")
     (license license:bsd-3)))
 
+(define-public mikktspace
+  ;; The latest commit is used as there is no release.
+  (let ((commit   "3e895b49d05ea07e4c2133156cfa94369e19e409")
+        (revision "0"))
+    (package
+      (name "mikktspace")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mmikk/MikkTSpace")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1rjh9zflx51hdhnfadal87v4hhkrbprkv692hjkg9wkxx0ch39zi"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:tests? #f
+             #:phases
+             #~(modify-phases %standard-phases
+                 (delete 'configure)
+                 (replace 'build
+                   (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
+                     (invoke #$(cc-for-target) "mikktspace.c" "-O2" "-g" "-fPIC"
+                             "-shared" "-o" "libmikktspace.so")))
+                 (replace 'install
+                   (lambda _
+                     (install-file "mikktspace.h"
+                                   (string-append #$output "/include"))
+                     (install-file "libmikktspace.so"
+                                   (string-append #$output "/lib")))))))
+      (home-page "http://www.mikktspace.com/")
+      (synopsis "Library for a common standard for tangent spaces")
+      (description
+       "This package provides a common standard tangent space library used in
+baking tools to produce normal maps.")
+      (license license:zlib))))
+
 (define-public openshadinglanguage
   (package
     (name "openshadinglanguage")
@@ -797,6 +837,20 @@ basic geometries.")
     ;; https://gitlab.com/inkscape/inkscape/issues/784).
     (license license:gpl3+)))
 
+(define-public lib2geom-1.2
+  (package
+    (inherit lib2geom)
+    (version "1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/inkscape/lib2geom")
+                    (commit version)))
+              (file-name (git-file-name "lib2geom" version))
+              (sha256
+               (base32
+                "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))))
+
 (define-public python-booleanoperations
   (package
     (name "python-booleanoperations")
@@ -1425,7 +1479,7 @@ exec -a \"$0\" ~a/.brdf-real~%"
                             (chmod "brdf" #o555)))
                         #t)))))
       (native-inputs
-       (list qttools)) ;for 'qmake'
+       (list qttools-5)) ;for 'qmake'
       (inputs
        (list qtbase-5 mesa glew freeglut zlib))
       (home-page "https://www.disneyanimation.com/technology/brdf.html")
@@ -1952,8 +2006,8 @@ Automated palette selection is supported.")
              ;; ("miniupnpc" ,miniupnpc) ;segfaults for some reason
              qtbase-5
              qtkeychain
-             qtmultimedia
-             qtsvg
+             qtmultimedia-5
+             qtsvg-5
              qtx11extras))
       (home-page "https://drawpile.net")
       (synopsis "Collaborative drawing program")
@@ -2107,3 +2161,73 @@ Features include:
 @end itemize
 ")
     (license license:gpl3+)))
+
+(define-public f3d
+  ;; There have been many improvements since the last tagged version (1.2.1,
+  ;; released in December 2021), including support for the Alembic file
+  ;; format.
+  (let ((commit "9cc79b65ed750b178f58012dbba091aa24722dab")
+        (revision "0"))
+    (package
+      (name "f3d")
+      (version (git-version "1.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/f3d-app/f3d")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "041gqi2wfny2br4j68vhifg0bd18kbl0qsaallkz7yywk47njxfi"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; Many tests require files supplied by git-lfs.
+        ;; Also, some tests segfault (after an exception?) but the tested
+        ;; behavior, i.e., when the program is run manually, does not (for
+        ;; example, TestNonExistentConfigFile and TestInvalidConfigFile).
+        ;; Upstream is aware of occasionally flaky tests (see
+        ;; https://github.com/f3d-app/f3d/issues/92) but the tests run in CI
+        ;; seem to be passing.
+        ;; Anyway, the program runs and is able to open at least STL files
+        ;; without issue.
+        #:tests? #f
+        #:configure-flags
+        #~(list "-DBUILD_TESTING=OFF"
+                "-DF3D_MODULE_ALEMBIC=ON"
+                "-DF3D_MODULE_ASSIMP=ON"
+                "-DF3D_MODULE_OCCT=ON"
+                ;; Prefer Guix's versioned documentation directory to F3D's
+                ;; unversioned one.
+                (string-append "-DCMAKE_INSTALL_DOCDIR=" #$output
+                               "/share/doc/" #$name "-" #$version))))
+      (inputs
+       (list alembic
+             assimp
+             double-conversion
+             eigen
+             expat
+             fontconfig
+             freetype
+             glew
+             hdf5
+             imath
+             jsoncpp
+             libjpeg-turbo
+             libpng
+             libtiff
+             libx11
+             lz4
+             netcdf
+             opencascade-occt
+             vtk
+             zlib))
+      (home-page "https://f3d-app.github.io/f3d/")
+      (synopsis "VTK based 3D viewer")
+      (description "F3D (pronounced @samp{/fɛd/}) is a VTK-based 3D viewer, it
+has simple interaction mechanisms and is fully controllable using arguments on
+the command line.  It supports a range of file formats (including animated
+glTF, STL, STEP, PLY, OBJ, FBX), and provides numerous rendering and texturing
+options.")
+      (license license:bsd-3))))
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 68d0741957..a49fe348e8 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
 ;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
+;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -350,7 +351,7 @@ Graphviz and LaTeX.")
                  (,(dirname (search-input-file inputs "bin/dot"))))))))))
     (inputs
      (list atk
-           librsvg
+           (librsvg-for-system)
            harfbuzz
            graphviz
            gtk+
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
index 787bbae2bb..70624f9c59 100644
--- a/gnu/packages/gsasl.scm
+++ b/gnu/packages/gsasl.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,13 +54,13 @@
 (define-public gss
   (package
    (name "gss")
-   (version "1.0.3")
+   (version "1.0.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gss/gss-" version
                                 ".tar.gz"))
             (sha256 (base32
-                     "1syyvh3k659xf1hdv9pilnnhbbhs6vfapayp4xgdcc8mfgf9v4gz"))))
+                     "0www841ax21f5f61pdjk9fjdn9s2xf1wnblb47kzrqyaykgapkpc"))))
    (build-system gnu-build-system)
    (inputs (list nettle shishi zlib))
    (synopsis "Generic Security Service library")
@@ -77,14 +77,14 @@ the underlying security implementation.")
 (define-public gsasl
   (package
    (name "gsasl")
-   (version "1.10.0")
+   (version "2.0.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gsasl/gsasl-" version
                                 ".tar.gz"))
             (sha256
              (base32
-              "1lv8fp01aq4jjia9g4vkx90zacl8rgmjhfi6f1wdwnh9ws7bvg45"))))
+              "0yhvq3n6smgnc7fp0smmly8d248248xr7q2apbcbqhc80117ab1j"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags '("--with-gssapi-impl=mit"
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index a1503602ad..ba05591dae 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -29,6 +29,7 @@
 (define-module (gnu packages gstreamer)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
@@ -404,7 +405,7 @@ arrays of data.")
 (define-public gstreamer-docs
   (package
     (name "gstreamer-docs")
-    (version "1.18.5")
+    (version "1.20.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -412,7 +413,7 @@ arrays of data.")
                     "/gstreamer-docs-" version ".tar.xz"))
               (sha256
                (base32
-                "1xvqrqv1zxqdpvd02dvr0xspk30c8b940vvnr9x75a08nx0x75xh"))))
+                "1gziccq5f4fy23q6dm8nwbmzh68gn9rfbqw0xcn4r8yn82545z3k"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -464,7 +465,7 @@ the GStreamer multimedia framework.")
 (define-public gstreamer
   (package
     (name "gstreamer")
-    (version "1.18.5")
+    (version "1.20.3")
     (source
      (origin
        (method url-fetch)
@@ -473,33 +474,12 @@ the GStreamer multimedia framework.")
              version ".tar.xz"))
        (sha256
         (base32
-         "02p8my6dzmm4rvd93s3qnh8w5bm9bh4f7gdydbsvnn9llqr251jm"))))
+         "0aisl8nazcfi4b5j6fz8zwpp0k9csb022zniz65b2pxxpdjayzb0"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ,@%common-gstreamer-phases
-         ;; FIXME: Since switching to the meson-build-system, two tests
-         ;; started failing on i686.  See
-         ;; <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/499>.
-         ,@(if (string-prefix? "i686" (or (%current-target-system)
-                                          (%current-system)))
-               `((add-after 'unpack 'disable-some-tests
-                   (lambda _
-                     (substitute* "tests/check/gst/gstsystemclock.c"
-                       (("tcase_add_test \\(tc_chain, test_stress_cleanup_unschedule.*")
-                        "")
-                       (("tcase_add_test \\(tc_chain, test_stress_reschedule.*")
-                        "")))))
-               '())
-         (add-after 'unpack 'disable-problematic-tests
-           (lambda _
-             ;; Disable the 'pipelines-seek' test, which appears to be load
-             ;; sensitive (see:
-             ;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/854).
-             (substitute* "tests/check/meson.build"
-               ((".*'pipelines/seek.c'.*")
-                "")))))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               #$@%common-gstreamer-phases)))
     (propagated-inputs
      ;; In gstreamer-1.0.pc:
      ;;   Requires: glib-2.0, gobject-2.0
@@ -507,15 +487,14 @@ the GStreamer multimedia framework.")
      (list elfutils ; libdw
            glib libunwind))
     (native-inputs
-     `(("bash-completion" ,bash-completion)
-       ("bison" ,bison)
-       ("flex" ,flex)
-       ("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python-wrapper" ,python-wrapper)))
+     (list bash-completion
+           bison flex
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           perl
+           pkg-config
+           python-wrapper))
     (inputs
      (list gmp libcap
            ;; For tests.
@@ -542,7 +521,7 @@ This package provides the core library and elements.")
 (define-public gst-plugins-base
   (package
     (name "gst-plugins-base")
-    (version "1.18.5")
+    (version "1.20.3")
     (source
      (origin
       (method url-fetch)
@@ -550,75 +529,76 @@ This package provides the core library and elements.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "18vg8kk7p2p8za8zaqg0v7z6898yw5a3b12vvl7xn02pb3s7l2wn"))))
+        "17rw8wj1x1bg153m9z76pdvgz5k93m3riyalfpzq00x7h7fv6c3y"))))
     (build-system meson-build-system)
     (propagated-inputs
-     `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
-       ("gstreamer" ,gstreamer)    ;required by gstreamer-plugins-base-1.0.pc
-       ;; wayland-client.h is referred to in
-       ;; include/gstreamer-1.0/gst/gl/wayland/gstgldisplay_wayland.h
-       ("wayland" ,wayland)
-       ;; XXX: Do not enable Orc optimizations on ARM systems because
-       ;; it leads to two test failures.
-       ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683
-       ,@(if (string-prefix? "arm" (or (%current-target-system)
-                                       (%current-system)))
-             '()
-             `(("orc" ,orc)))))         ;required by gstreamer-audio-1.0.pc
+     (cons* glib                    ;required by gstreamer-sdp-1.0.pc
+            gstreamer               ;required by gstreamer-plugins-base-1.0.pc
+            ;; wayland-client.h is referred to in
+            ;; include/gstreamer-1.0/gst/gl/wayland/gstgldisplay_wayland.h
+            wayland
+            ;; XXX: Do not enable Orc optimizations on ARM systems because
+            ;; it leads to two test failures.
+            ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683
+            (if (string-prefix? "arm" (or (%current-target-system)
+                                          (%current-system)))
+                '()
+                (list orc))))           ;required by gstreamer-audio-1.0.pc
     (inputs
      ;; TODO: Add libvorbisidec
-     `(("cdparanoia" ,cdparanoia)
-       ("pango" ,pango)
-       ("libogg" ,libogg)
-       ("libtheora" ,libtheora)
-       ("libvorbis" ,libvorbis)
-       ("libx11" ,libx11)
-       ("zlib" ,zlib)
-       ("libXext" ,libxext)
-       ("libxv" ,libxv)
-       ("alsa-lib" ,alsa-lib)
-       ("opus" ,opus)
-       ("graphene" ,graphene)
-       ("iso-codes" ,iso-codes)
-       ("libgudev" ,libgudev)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libvisual" ,libvisual)
-       ("mesa" ,mesa)
-       ("wayland-protocols" ,wayland-protocols)))
+     (list alsa-lib
+           cdparanoia
+           graphene
+           iso-codes
+           libgudev
+           libjpeg-turbo
+           libogg
+           libpng
+           libtheora
+           libvisual
+           libvorbis
+           libx11
+           libxext
+           libxv
+           mesa
+           opus
+           pango
+           wayland-protocols
+           zlib))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("python-wrapper" ,python-wrapper)
-       ("gettext" ,gettext-minimal)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list pkg-config
+           `(,glib "bin")
+           gobject-introspection
+           python-wrapper
+           gettext-minimal
+           xorg-server-for-tests))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ,@%common-gstreamer-phases
-         (add-after 'unpack 'disable-problematic-tests
-           (lambda _
-             (substitute* "tests/check/meson.build"
-               ;; This test causes nondeterministic failures (see:
-               ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/950).
-               ((".*'elements/appsrc.c'.*")
-                ""))))
-         (add-before 'configure 'patch
-           (lambda _
-             (substitute* "tests/check/libs/pbutils.c"
-               (("/bin/sh") (which "sh")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@%common-gstreamer-phases
+          (add-after 'unpack 'disable-problematic-tests
+            (lambda _
+              (substitute* "tests/check/meson.build"
+                ;; This test causes nondeterministic failures (see:
+                ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/950).
+                ((".*'elements/appsrc.c'.*")
+                 ""))))
+          (add-before 'configure 'patch
+            (lambda _
+              (substitute* "tests/check/libs/pbutils.c"
+                (("/bin/sh") (which "sh")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0"))))))
     (home-page "https://gstreamer.freedesktop.org/")
     (synopsis
      "Plugins for the GStreamer multimedia library")
@@ -629,7 +609,7 @@ for the GStreamer multimedia library.")
 (define-public gst-plugins-good
   (package
     (name "gst-plugins-good")
-    (version "1.18.5")
+    (version "1.20.3")
     (source
      (origin
        (method url-fetch)
@@ -637,74 +617,87 @@ for the GStreamer multimedia library.")
         (string-append
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
-       (patches (search-patches "gst-plugins-good-fix-test.patch"))
        (sha256
-        (base32 "0svrapawych2s3lm4lx3x023zxq5kcx50jnfmh0qigszfskyxbis"))))
+        (base32 "1dv8b2md1xk6d45ir1wzbvqhxbvm6mxv881rjl0brnjwpw3c5wzq"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:phases
-       (modify-phases %standard-phases
-         ,@%common-gstreamer-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             #t)))))
+     (list
+      #:glib-or-gtk? #t              ; To wrap binaries and/or compile schemas
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@%common-gstreamer-phases
+          (add-after 'unpack 'absolutize-libsoup-library
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define libsoup
+                (search-input-file inputs "lib/libsoup-3.0.so"))
+
+              (substitute* "ext/soup/gstsouploader.c"
+                (("(#define LIBSOUP_3_SONAME ).+$" _ prefix)
+                 (string-append prefix "\"" libsoup "\"\n")))))
+          (add-after 'unpack 'skip-failing-tests
+            (lambda _
+              (substitute* "tests/check/meson.build"
+                ;; Reported as shaky upstream, see
+                ;; <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/785>
+                (("\\[ 'elements/flvmux' \\]") "[ 'elements/flvmux', true ]"))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0"))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python-wrapper" ,python-wrapper)
-       ("xmllint" ,libxml2)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           gsettings-desktop-schemas
+           libxml2
+           perl
+           pkg-config
+           python-wrapper
+           xorg-server-for-tests))
     (inputs
-     `(("aalib" ,aalib)
-       ("bzip2" ,bzip2)
-       ("cairo" ,cairo)
-       ("flac" ,flac)
-       ("librsvg" ,(librsvg-for-system))
-       ("glib" ,glib)
-       ("glib-networking" ,glib-networking)
-       ("glu" ,glu)
-       ("gtk+" ,gtk+)
-       ("jack" ,jack-2)
-       ("lame" ,lame)
-       ("libavc1394" ,libavc1394)
-       ("libcaca" ,libcaca)
-       ("libdv" ,libdv)
-       ("libgudev" ,libgudev)
-       ("libiec61883" ,libiec61883)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libshout" ,libshout)
-       ("libsoup" ,libsoup)
-       ("libvpx" ,libvpx)
-       ("libx11" ,libx11)
-       ("libxdamage" ,libxdamage)
-       ("libxfixes" ,libxfixes)
-       ("libxext" ,libxext)
-       ("libxshm" ,libxshmfence)
-       ("mesa" ,mesa)
-       ("mpg123" ,mpg123)
-       ("orc" ,orc)
-       ("pulseaudio" ,pulseaudio)
-       ("speex" ,speex)
-       ("taglib" ,taglib)
-       ("twolame" ,twolame)
-       ("v4l-utils" ,v4l-utils)
-       ("wavpack" ,wavpack)
-       ("zlib" ,zlib)))
+     (list aalib
+           bzip2
+           cairo
+           flac
+           (librsvg-for-system)
+           glib
+           glib-networking
+           glu
+           gtk+
+           jack-2
+           lame
+           libavc1394
+           libcaca
+           libdv
+           libgudev
+           libiec61883
+           libjpeg-turbo
+           libpng
+           libshout
+           libsoup
+           libvpx
+           libx11
+           libxdamage
+           libxfixes
+           libxext
+           libxshmfence
+           mesa
+           mpg123
+           orc
+           pulseaudio
+           speex
+           taglib
+           twolame
+           v4l-utils
+           wavpack
+           zlib))
     (propagated-inputs
      (list gstreamer gst-plugins-base))
     (synopsis "GStreamer plugins and helper libraries")
@@ -719,14 +712,14 @@ model to base your own plug-in on, here it is.")
 (define-public gst-plugins-bad
   (package
     (name "gst-plugins-bad")
-    (version "1.18.5")
+    (version "1.20.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gstreamer.freedesktop.org/src/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13k7mm2wmsbhd04a20v9lj4afpf0w33ambpwlrw8bl7hjhxr4r51"))
+                "0kys6m5hg5bc30wfg8qa3s7dmkdz3kj1j8lhvn3267fxalxw24bs"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -734,179 +727,177 @@ model to base your own plug-in on, here it is.")
                   (delete-file-recursively "ext/sctp/usrsctp")))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Dsctp-internal-usrsctp=disabled")
-       #:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:phases
-       (modify-phases %standard-phases
-         ,@%common-gstreamer-phases
-         ,@(if (string-prefix? "arm" (or (%current-target-system)
-                                         (%current-system)))
-               ;; Disable test that fails on ARMv7.
-               ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1188
-               `((add-after 'unpack 'disable-asfmux-test
-                   (lambda _
-                     (substitute* "tests/check/meson.build"
-                       (("\\[\\['elements/asfmux\\.c'\\]\\],")
-                        "")))))
-               '())
-         (add-after 'unpack 'adjust-tests
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (let ((gst-plugins-good (assoc-ref (or native-inputs inputs)
-                                                "gst-plugins-good")))
-               (substitute* "tests/check/meson.build"
-                 ;; Make gst-plugin-good available for tests, see
-                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1426
-                 (("'GST_PLUGIN_SYSTEM_PATH_1_0', ''")
-                  (string-append "'GST_PLUGIN_SYSTEM_PATH_1_0', '"
-                                 gst-plugins-good "/lib/gstreamer-1.0'"))
+     (list
+      #:configure-flags #~(list "-Dsctp-internal-usrsctp=disabled")
+      #:glib-or-gtk? #t              ; To wrap binaries and/or compile schemas
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@%common-gstreamer-phases
+          #$@(if (string-prefix? "arm" (or (%current-target-system)
+                                           (%current-system)))
+                 ;; Disable test that fails on ARMv7.
+                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1188
+                 `((add-after 'unpack 'disable-asfmux-test
+                     (lambda _
+                       (substitute* "tests/check/meson.build"
+                         (("\\[\\['elements/asfmux\\.c'\\]\\],")
+                          "")))))
+                 '())
+          (add-after 'unpack 'adjust-tests
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (let ((gst-plugins-good (assoc-ref (or native-inputs inputs)
+                                                 "gst-plugins-good")))
+                (substitute* "tests/check/meson.build"
+                  ;; Make gst-plugin-good available for tests, see
+                  ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1426
+                  (("'GST_PLUGIN_SYSTEM_PATH_1_0', ''")
+                   (string-append "'GST_PLUGIN_SYSTEM_PATH_1_0', '"
+                                  gst-plugins-good "/lib/gstreamer-1.0'"))
 
-                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136
-                 ((".*elements/msdkh264enc\\.c.*") "")
-                 ((".*elements/svthevcenc\\.c.*") "")
+                  ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136
+                  ((".*elements/msdkh264enc\\.c.*") "")
+                  ((".*elements/svthevcenc\\.c.*") "")
 
-                 ;; The 'elements_shm.test_shm_live' test sometimes times out
-                 ;; (see:
-                 ;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/790).
-                 ((".*'elements/shm\\.c'.*") "")
+                  ;; The 'elements_shm.test_shm_live' test sometimes times out
+                  ;; (see:
+                  ;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/790).
+                  ((".*'elements/shm\\.c'.*") "")
 
-                 ;; FIXME: Why is this failing.
-                 ((".*elements/dash_mpd\\.c.*") "")
+                  ;; FIXME: Why is this failing.
+                  ((".*elements/dash_mpd\\.c.*") "")
 
-                 ;; These tests are flaky and occasionally time out:
-                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/932
-                 ((".*elements/curlhttpsrc\\.c.*") "")
-                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1412
-                 ((".*elements/dtls\\.c.*") ""))
-               (substitute* "tests/check/elements/zxing.c"
-                 ;; zxing 1.2.0 seemingly changed the type representation of
-                 ;; the EAN_13 structure; disable it.
-                 ((".*\"EAN_13\".*")
-                  "")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0"))))))
+                  ;; These tests are flaky and occasionally time out:
+                  ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/932
+                  ((".*elements/curlhttpsrc\\.c.*") "")
+                  ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1412
+                  ((".*elements/dtls\\.c.*") ""))
+                (substitute* "tests/check/elements/zxing.c"
+                  ;; zxing 1.2.0 seemingly changed the type representation of
+                  ;; the EAN_13 structure; disable it.
+                  ((".*\"EAN_13\".*")
+                   "")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0"))))))
     (propagated-inputs
      (list gstreamer gst-plugins-base))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")         ; for glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gst-plugins-good" ,gst-plugins-good) ;for tests
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list gettext-minimal
+           `(,glib "bin")               ; for glib-mkenums, etc.
+           gobject-introspection
+           gsettings-desktop-schemas
+           gst-plugins-good             ;for tests
+           perl
+           pkg-config
+           python-wrapper
+           xorg-server-for-tests))
     (inputs
-     `(("bluez" ,bluez)
-       ("bzip2" ,bzip2)
-       ("cairo" ,cairo)
-       ;; ("ccextractor" ,ccextractor)
-       ("chromaprint" ,chromaprint)
-       ("curl" ,curl)
-       ("directfb" ,directfb)
-       ;;("dssim" ,dssim)
-       ("faac" ,faac)
-       ("faad2" ,faad2)
-       ("flite" ,flite)
-       ("fluidsynth" ,fluidsynth)
-       ("glib" ,glib)
-       ("glib-networking" ,glib-networking)
-       ("glu" ,glu)
-       ("gsm" ,gsm)
-       ("gtk+" ,gtk+)
-       ("iqa" ,iqa)
-       ("ladspa" ,ladspa)
-       ("lcms" ,lcms)
-       ("libaom" ,libaom)
-       ("libass" ,libass)
-       ("libbs2b" ,libbs2b)
-       ("libdc1394" ,libdc1394)
-       ("libdca" ,libdca)
-       ("libde265" ,libde265)
-       ("libdrm" ,libdrm)
-       ("libdvdnav" ,libdvdnav)
-       ("libdvdread" ,libdvdread)
-       ("libexif" ,libexif)
-       ("libfdk" ,libfdk)
-       ("libgcrypt" ,libgcrypt)
-       ("libgme" ,libgme)
-       ("libgudev" ,libgudev)
-       ("libkate" ,libkate)
-       ,@(if (target-x86?)
-           `(("libmfx" ,mediasdk))
-           '())
-       ("libmms" ,libmms)
-       ("libmodplug" ,libmodplug)
-       ("libmpcdec" ,libmpcdec)
-       ("libnice" ,libnice)
-       ("libofa" ,libofa)
-       ("libopenmpt" ,libopenmpt)
-       ("librsvg" ,librsvg)
-       ("libsndfile" ,libsndfile)
-       ("libsrtp" ,libsrtp)
-       ("libssh2" ,libssh2)
-       ("libtiff" ,libtiff)
-       ("libusb" ,libusb)
-       ("libva" ,libva)
-       ("libvdpau" ,libvdpau)
-       ("libwebp" ,libwebp)
-       ("libx11" ,libx11)
-       ("libxcb" ,libxcb)
-       ("libxext" ,libxext)
-       ("libxkbcommon" ,libxkbcommon)
-       ("libxml2" ,libxml2)
-       ("libxshm" ,libxshmfence)
-       ("lilv" ,lilv)
-       ("lrdf" ,lrdf)
-       ("lv2" ,lv2)
-       ("mesa" ,mesa)
-       ("mjpegtools" ,mjpegtools)
-       ("neon" ,neon)
-       ("nettle" ,nettle)
-       ("openal" ,openal)
-       ;; ("opencv" ,opencv)
-       ("openexr" ,openexr)
-       ("openh264" ,openh264)
-       ("openjpeg" ,openjpeg)
-       ;; ("openni2" ,openni2)
-       ("opensles" ,opensles)
-       ("openssl" ,openssl)
-       ("opus" ,opus)
-       ("orc" ,orc)
-       ("pango" ,pango)
-       ("rtmp" ,rtmpdump)
-       ("sbc" ,sbc)
-       ("sctp" ,lksctp-tools)
-       ("soundtouch" ,soundtouch)
-       ("spandsp" ,spandsp)
-       ("srt" ,srt)
-       ,@(if (target-x86?)
-           `(("svthevcenc" ,svt-hevc))
-           '())
-       ("tinyalsa" ,tinyalsa)
-       ("transcode" ,transcode)
-       ("usrsctp" ,usrsctp)
-       ("v4l" ,v4l-utils)
-       ("voaacenc" ,vo-aacenc)
-       ("voamrwbenc" ,vo-amrwbenc)
-       ("vulkan-headers" ,vulkan-headers)
-       ("vulkan-loader" ,vulkan-loader)
-       ("x265" ,x265)
-       ("wayland" ,wayland)
-       ("webrtcdsp" ,webrtc-audio-processing)
-       ("wildmidi" ,wildmidi)
-       ("wpebackend-fdo" ,wpebackend-fdo)
-       ("zbar" ,zbar)
-       ("zxing" ,zxing-cpp-1.2)))
+     (append
+      (if (target-x86?) (list mediasdk svt-hevc) '())
+      (list bluez
+            bzip2
+            cairo
+            ;; ccextractor
+            chromaprint
+            curl
+            directfb
+            ;; dssim
+            faac
+            faad2
+            flite
+            fluidsynth
+            glib
+            glib-networking
+            glu
+            gsm
+            gtk+
+            iqa
+            ladspa
+            lcms
+            libaom
+            libass
+            libbs2b
+            libdc1394
+            libdca
+            libde265
+            libdrm
+            libdvdnav
+            libdvdread
+            libexif
+            libfdk
+            libgcrypt
+            libgme
+            libgudev
+            libkate
+            mediasdk
+            libmms
+            libmodplug
+            libmpcdec
+            libnice
+            libofa
+            libopenmpt
+            librsvg
+            libsndfile
+            libsrtp
+            libssh2
+            libtiff
+            libusb
+            libva
+            libvdpau
+            libwebp
+            libx11
+            libxcb
+            libxext
+            libxkbcommon
+            libxml2
+            libxshmfence
+            lilv
+            lrdf
+            lv2
+            mesa
+            mjpegtools
+            neon
+            nettle
+            openal
+            ;; opencv
+            openexr
+            openh264
+            openjpeg
+            ;; openni2
+            opensles
+            openssl
+            opus
+            orc
+            pango
+            rtmpdump
+            sbc
+            lksctp-tools
+            soundtouch
+            spandsp
+            srt
+            tinyalsa
+            transcode
+            usrsctp
+            v4l-utils
+            vo-aacenc
+            vo-amrwbenc
+            vulkan-headers
+            vulkan-loader
+            x265
+            wayland
+            webrtc-audio-processing
+            wildmidi
+            wpebackend-fdo
+            zbar
+            zxing-cpp-1.2)))
     (home-page "https://gstreamer.freedesktop.org/")
     (synopsis "Plugins for the GStreamer multimedia library")
     (description
@@ -917,7 +908,7 @@ par compared to the rest.")
 (define-public gst-plugins-ugly
   (package
     (name "gst-plugins-ugly")
-    (version "1.18.5")
+    (version "1.20.3")
     (source
      (origin
        (method url-fetch)
@@ -925,33 +916,33 @@ par compared to the rest.")
         (string-append "https://gstreamer.freedesktop.org/src/"
                        name "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1nb6kz3gbn8r0sld6xkm16qpgyb2bvhafb7sff9rgagqk0z80cnz"))))
+        (base32 "1zdfsq0zm1d3wj3w3z44bf3v28clr8yd6qzmkjs09hq9k9w21alc"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:phases
-       (modify-phases %standard-phases
-         ,@%common-gstreamer-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0"))))))
+     (list #:glib-or-gtk? #t         ; To wrap binaries and/or compile schemas
+           #:phases
+           #~(modify-phases %standard-phases
+               #$@%common-gstreamer-phases
+               (add-before 'check 'pre-check
+                 (lambda _
+                   ;; Tests require a running X server.
+                   (system "Xvfb :1 +extension GLX &")
+                   (setenv "DISPLAY" ":1")
+                   ;; Tests write to $HOME.
+                   (setenv "HOME" (getcwd))
+                   ;; Tests look for $XDG_RUNTIME_DIR.
+                   (setenv "XDG_RUNTIME_DIR" (getcwd))
+                   ;; For missing '/etc/machine-id'.
+                   (setenv "DBUS_FATAL_WARNINGS" "0"))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python-wrapper" ,python-wrapper)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           gsettings-desktop-schemas
+           perl
+           pkg-config
+           python-wrapper
+           xorg-server-for-tests))
     (inputs
      (list glib
            glib-networking
@@ -974,7 +965,7 @@ think twice about shipping them.")
 (define-public gst-libav
   (package
     (name "gst-libav")
-    (version "1.18.5")
+    (version "1.20.3")
     (source
      (origin
        (method url-fetch)
@@ -983,7 +974,7 @@ think twice about shipping them.")
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
        (sha256
-        (base32 "0j55jgk9sbhinfx2gsg21q609x6yzrixrn5xxlxd378fj6500bl2"))))
+        (base32 "1zkxybdzdkn07wwmj0rrgxyvbry472dggjv2chdsmpzwc02x3v9z"))))
     (build-system meson-build-system)
     (native-inputs
      (list perl pkg-config python-wrapper ruby))
@@ -1000,7 +991,7 @@ decoders, muxers, and demuxers provided by FFmpeg.")
 (define-public gst-editing-services
   (package
     (name "gst-editing-services")
-    (version "1.18.5")
+    (version "1.20.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1008,27 +999,27 @@ decoders, muxers, and demuxers provided by FFmpeg.")
                     "gst-editing-services-" version ".tar.xz"))
               (sha256
                (base32
-                "1x8db4021qv4ypq1g6n5q2awrb7glr4xp1h650c3w7q59lwsix4a"))))
+                "18msiadg6wi1636ylp02yfiwphxlz39gh3vbxchl9qpvd7g9dn2z"))))
     (build-system meson-build-system)
     (arguments
-     ;; FIXME: 16/22 failing tests.
-     `(#:tests? #f
-       #:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:phases (modify-phases %standard-phases
-                  ,@%common-gstreamer-phases)))
+     (list
+      #:tests? #f                    ; FIXME: 16/23 failing tests.
+      #:glib-or-gtk? #t              ; To wrap binaries and/or compile schemas
+      #:phases #~(modify-phases %standard-phases
+                   #$@%common-gstreamer-phases)))
     (propagated-inputs
      (list gstreamer gst-plugins-base))
     (inputs
      (list glib glib-networking gtk+ libxml2))
     (native-inputs
-     `(("flex" ,flex)
-       ("gobject-introspection" ,gobject-introspection)
-       ("glib:bin" ,glib "bin")
-       ("gst-plugins-bad" ,gst-plugins-bad)
-       ("gst-plugins-good" ,gst-plugins-good)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list flex
+           gobject-introspection
+           `(,glib "bin")
+           gst-plugins-bad
+           gst-plugins-good
+           perl
+           pkg-config
+           python-wrapper))
     (home-page "https://gstreamer.freedesktop.org/")
     (synopsis "GStreamer library for non-linear editors")
     (description
@@ -1043,25 +1034,32 @@ given, also pass them to the build system instead of the ones used by PKG."
     (package/inherit pkg
       (arguments
        (substitute-keyword-arguments (package-arguments pkg)
-         ((#:configure-flags flags `(,@(or configure-flags '())))
-          `(append
+         ((#:configure-flags flags #~'())
+         #~(append
             (list
-             ,@(map (lambda (plugin)
-                      (string-append "-D" plugin "=enabled"))
-                    plugins))
-            (list ,@(or configure-flags flags))))
-          ((#:phases phases)
-           `(modify-phases ,phases
-              (add-after 'unpack 'disable-auto-plugins
-                (lambda _
-                  (substitute* "meson_options.txt"
-                    (("'auto'") "'disabled'"))
-                  #t)))))))))
+             #$@(map (lambda (plugin)
+                       (string-append "-D" plugin "=enabled"))
+                     plugins))
+            #$(or configure-flags flags)))
+         ((#:phases phases)
+           #~(modify-phases #$phases
+               (add-after 'unpack 'disable-auto-plugins
+                 (lambda _
+                   (substitute* "meson_options.txt"
+                     (("'auto'") "'disabled'")))))))))))
+
+(define-public gst-plugins-bad-minimal
+  (package
+    (inherit (gst-plugins/selection gst-plugins-bad #:plugins '()))
+    (name "gst-plugins-bad-minimal")
+    (description "This package provides the smallest selection of GStreamer's
+\"bad\" plugin set, essentially containing libraries and the gst-transcoder
+binary, but none of the actual plugins.")))
 
 (define-public python-gst
   (package
     (name "python-gst")
-    (version "1.18.5")
+    (version "1.20.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1069,18 +1067,19 @@ given, also pass them to the build system instead of the ones used by PKG."
                     "gst-python-" version ".tar.xz"))
               (sha256
                (base32
-                "0lmwwmr3wm56qlrdrb0d5cpmqxkcmarz61wmp1nrv5852f3qadjk"))))
+                "1p6g05k88nbbv5x9madsvphxcdkfl1z0lmp39p6bhmg9x8h82d6v"))))
     (build-system meson-build-system)
     (arguments
-     `(#:modules ((guix build meson-build-system)
+     (list
+      #:modules `((guix build meson-build-system)
                   (guix build utils)
                   ((guix build python-build-system) #:prefix python:))
-       #:imported-modules (,@%meson-build-system-modules
+      #:imported-modules `(,@%meson-build-system-modules
                            (guix build python-build-system))
-       #:configure-flags
-       (list (string-append
-              "-Dpygi-overrides-dir="
-              (python:site-packages %build-inputs %outputs) "/gi/overrides"))))
+      #:configure-flags
+      #~(list (string-append
+               "-Dpygi-overrides-dir="
+               (python:site-packages %build-inputs %outputs) "/gi/overrides"))))
     (native-inputs
      (list pkg-config python))
     (propagated-inputs
@@ -1090,7 +1089,8 @@ given, also pass them to the build system instead of the ones used by PKG."
     (description
      "This package contains GObject Introspection overrides for Python that can
 be used by Python applications using GStreamer.")
-    (license license:lgpl2.1+)))
+    (license license:lgpl2.1+)
+    (properties `((upstream-name . "gst-python")))))
 
 (define-public gst123
   (package
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 0717acf83b..8e8a73ad30 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -32,7 +32,7 @@
 ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
 ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
 ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
-;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net>
+;;; Copyright © 2020, 2021, 2022 pukkamustard <pukkamustard@posteo.net>
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
@@ -43,6 +43,7 @@
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
+;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1329,7 +1330,7 @@ format.")
 (define-public guile-newt
   (package
     (name "guile-newt")
-    (version "0.0.2")
+    (version "0.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1338,7 +1339,7 @@ format.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
+                "0hbznqigdkyh0kdkpnkp7sz2qd0g5dvmibcdi1rki02zg78mzypv"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
@@ -1346,7 +1347,7 @@ format.")
     (inputs
      (list guile-3.0 newt))
     (native-inputs
-     (list autoconf automake pkg-config))
+     (list autoconf automake pkg-config guile-3.0))
     (synopsis "Guile bindings to Newt")
     (description
      "This package provides bindings for Newt, a programming library for
@@ -1392,7 +1393,7 @@ microblogging service.")
 (define-public guile-parted
   (package
     (name "guile-parted")
-    (version "0.0.5")
+    (version "0.0.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1401,20 +1402,18 @@ microblogging service.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ar6n38br3h1jm54yy6d54rpqdgsy7pmnj3nqdzqrfk8z0kx0rm9"))
+                "12ygz0dw8zjr8g3z4g3sh4d1yw3fiphh0ssyqd4nllqa3sfwv21f"))
               (modules '((guix build utils)))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
        '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+    (native-inputs
+     (list autoconf automake guile-3.0 guile-bytestructures pkg-config))
     (inputs
-     ;; XXX: Use Parted 3.4 to work around issues when using 3.5 in the Guix
-     ;; System installer: <https://issues.guix.gnu.org/55549>.
-     (list guile-3.0 parted-3.4))
+     (list guile-3.0 parted))
     (propagated-inputs
      (list guile-bytestructures))
-    (native-inputs
-     (list autoconf automake pkg-config))
     (synopsis "Guile bindings to GNU Parted")
     (description
      "This package provides bindings for GNU Parted library, a C library
@@ -3117,32 +3116,33 @@ denote the invalidity of certain code paths in a Scheme program.")
     (license license:gpl3+)))
 
 (define-public guile-srfi-158
-  (package
-    (name "guile-srfi-158")
-    (version "0.0.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
-             (commit version)))
-       (sha256
-        (base32
-         "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
-       (file-name (git-file-name name version))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list autoconf automake pkg-config))
-    (inputs
-     (list guile-3.0))
-    (home-page "https://gitlab.com/samplet/guile-srfi-158")
-    (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
-    (description "This package provides an implementation of SRFI 158
+  (let ((commit "13126d1ed37892c864337a600a43d6876625fb99")
+        (revision "0"))
+    (package
+      (name "guile-srfi-158")
+      (version (git-version "0.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "0hg57l3w5qamip1clkab0q01np5nqln9y054q39smm4ki0svdl8w"))
+         (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (native-inputs
+       (list guile-3.0 autoconf automake pkg-config))
+      (inputs (list guile-3.0))
+      (home-page "https://gitlab.com/samplet/guile-srfi-158")
+      (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
+      (description "This package provides an implementation of SRFI 158
 for Guile.  SRFI 158 defines utility procedures that create,
 transform, and consume generators.  It also defines procedures that
 return accumulators.  It is implemented by wrapping the sample
 implementation in a thin Guile compatibility layer.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public guile-srfi-159
   (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
@@ -3944,7 +3944,7 @@ as signed sessions, multipart message support, etc.")
            (add-after 'unpack 'run-hall
              (lambda _
                (setenv "HOME" "/tmp")   ; for ~/.hall
-               (invoke "hall" "dist" "-x"))))))
+               (invoke "hall" "build-system" "-x"))))))
       (native-inputs
        (list autoconf
              automake
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 8ba4711ca0..92ab20ff08 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -718,7 +718,7 @@ Guile's foreign function interface.")
 (define-public guile-sqlite3
   (package
     (name "guile-sqlite3")
-    (version "0.1.2")
+    (version "0.1.3")
     (home-page "https://notabug.org/guile-sqlite3/guile-sqlite3.git")
     (source (origin
               (method git-fetch)
@@ -727,7 +727,7 @@ Guile's foreign function interface.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1nryy9j3bk34i0alkmc9bmqsm0ayz92k1cdf752mvhyjjn8nr928"))
+                "0qqygvlpz63phdi2p5p8ncp80dci230qfa3pwds8yfxqqaablmhb"))
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (native-inputs (list autoconf automake guile-3.0 pkg-config))
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 27567bb38e..68c4667662 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -453,7 +453,7 @@ support.")
                  (wrap-qt-program "ckb-next"
                                   #:output out
                                   #:inputs inputs)))))))
-      (native-inputs (list qttools pkg-config))
+      (native-inputs (list qttools-5 pkg-config))
       (inputs (list qtbase-5
                     zlib
                     libdbusmenu-qt
@@ -534,7 +534,7 @@ calibrated, and restored when the calibration is applied.")
     (arguments
      '(#:tests? #f))                    ; No test suite
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list ddcutil glib qtbase-5))
     (home-page "https://www.ddcutil.com/")
diff --git a/gnu/packages/haxe.scm b/gnu/packages/haxe.scm
new file mode 100644
index 0000000000..6876dbdc6f
--- /dev/null
+++ b/gnu/packages/haxe.scm
@@ -0,0 +1,284 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages haxe)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages apr)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages graphics)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages mp3)
+  #:use-module (gnu packages ocaml)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xiph)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system dune)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
+
+(define-public neko
+  (package
+    (name "neko")
+    (version "2.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/HaxeFoundation/neko")
+             (commit (string-append
+                      "v"
+                      (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xgw646pghsjjbzd8qlaq17vq96swlrazpivrvyrhdj36vb3sci3"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'prefix
+                 (lambda _
+                   (substitute* "CMakeLists.txt"
+                     (("\\\\\\$ORIGIN")
+                      (string-append #$output "/lib"))))))))
+    (inputs (list apr
+                  apr-util
+                  gtk+-2
+                  httpd
+                  libgc
+                  mbedtls-apache
+                  mysql
+                  openssl
+                  pcre
+                  sqlite
+                  zlib))
+    (native-inputs (list git pkg-config)) ; git for source_archive and applying patch
+    (home-page "https://nekovm.org/")
+    (synopsis "High-level dynamically typed programming language and virtual
+machine")
+    (description
+     "The Neko programming language is a high-level dynamically typed
+programming language.  It can be used as an embedded scripting language.  It
+has been designed to provide a common runtime for several different languages.
+You can easily extend the language with C libraries.  You can also write
+generators from your own language to Neko and then use the Neko Runtime to
+compile, run, and access existing libraries.
+
+Neko has a compiler and a virtual machine.  The Virtual Machine is both very
+lightweight and well optimized, so it can run very quickly.  The VM can be
+easily embedded into any application and your libraries can be accessed using
+the C foreign function interface.
+
+You can use the compiler as standalone command line executable separate from
+the VM, or as a Neko library to perform compile-and-run funtions for
+interactive languages.")
+    (license license:expat)))
+
+(define haxelib-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/HaxeFoundation/haxelib")
+          ;; This should match the haxelib submodule in haxe.
+          (commit "4b27f91d8a4ff279d9903091680fee2c93a0d574")
+          ;; This repo includes some Haxe libs as well.
+          (recursive? #t)))
+    (sha256
+     (base32
+      "0mwrm6gxgclwziiprfiswmjbz6z3dnvdwl8gq3gaym18pvx4p3ny"))))
+
+(define-public haxe
+  (package
+    (name "haxe")
+    (version "4.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/HaxeFoundation/haxe")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0pl8vpyb7gl2yqjg85yc4zxq9c3ipvw4yrrpliaxs25ynrj3l51n"))))
+    (build-system dune-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               ;; Needs the haxelib sources for haxelib client
+               (add-after 'unpack 'copy-haxelib-src
+                 (lambda _
+                   (copy-recursively #$haxelib-src
+                                     "extra/haxelib_src")))
+               ;; Change the default directory for the haxelib package
+               ;; manager to be something writeable for a user.
+               (add-after 'copy-haxelib-src 'change-default-dir
+                 (lambda _
+                   (substitute* "extra/haxelib_src/src/haxelib/client/Main.hx"
+                     (("'/usr/lib/haxe/\\$REPNAME'")
+                      "Path.addTrailingSlash( getHomePath() ) + '.haxe/$REPNAME'"))))
+               (add-after 'unpack 'prefix
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("/usr/local")
+                      (string-append #$output)))))
+               ;; Haxe uses a straight forward make, dune runtest, and make
+               ;; install process.
+               (replace 'build
+                 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
+                   (invoke "make" "-j" (if parallel-build?
+                                           (number->string (parallel-job-count))
+                                           "1"))))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "dune" "runtest"))))
+               (replace 'install
+                 (lambda _
+                   (invoke "make" "install"))))))
+    (inputs (list libuv
+                  mbedtls-apache
+                  neko
+                  ocaml-extlib
+                  ocaml-luv
+                  ocaml-ptmap
+                  ocaml-sedlex
+                  ocaml-sha
+                  ocaml-xml-light
+                  pcre
+                  zlib))
+    (native-inputs (list ocaml-findlib camlp5))
+    (home-page "https://haxe.org/")
+    (synopsis "Multi-target universal programming language")
+    (description
+     "Haxe is a toolkit based on a modern, high level, static-typed
+programming language, a cross-compiler, a complete cross-platform standard
+library and ways to access each platform's native capabilities.  This package
+includes the compiler and library manager.")
+    (license (list license:gpl2+     ; the compiler itself
+                   license:expat)))) ; the standard library
+
+(define-public hashlink
+  (package
+    (name "hashlink")
+    (version "1.12")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/HaxeFoundation/hashlink")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0i5f1mxpgjcdirx60kxrw0r0y15qh3j16a6fj8mzkq3k7j2hc982"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled libraries (mainly used for Windows build).
+           (delete-file-recursively "include")
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; Looks like there are tests with CMake, but there is confusion if this
+     ;; is a supported way to build on Linux.  See, e.g.
+     ;; https://github.com/HaxeFoundation/hashlink/issues/397.  Also, the
+     ;; CMake build requires running the library manager haxelib in the build
+     ;; process for the tests, likely requiring network access.
+     ;; TODO: Use cmake-build-system instead and enable tests?
+     (list #:tests? #f
+           #:make-flags
+           ;; The built hdll libraries need help finding libhl.so.
+           #~(list (string-append "LIBFLAGS=-Wl,-rpath=" #$output "/lib"))
+           #:phases
+           #~(modify-phases %standard-phases
+               ;; Don't try to build the (removed) bundled libraries pcre,
+               ;; minimp3, and mikktspace.  Provide the approriate paths and
+               ;; linking options.
+               (add-after 'unpack 'use-system-libs
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("\\$\\{PCRE\\}") "")
+                     (("-lpthread") "-lpthread -lpcre16")
+                     (("include/minimp3")
+                      (string-append #$(this-package-input "minimp3") "/include"))
+                     (("include/mikktspace ")
+                      (string-append #$(this-package-input "mikktspace") "/include "))
+                     (("include/mikktspace/mikktspace.o") "")
+                     (("-lpng") "-lpng -lmikktspace"))))
+               (replace 'configure
+                 (lambda* _
+                   (setenv "CC" #$(cc-for-target))
+                   (setenv "PREFIX" #$output)))
+               (replace 'build
+                 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
+                   (apply invoke "make" "-j" (if parallel-build?
+                                                 (number->string (parallel-job-count))
+                                                 "1")
+                          make-flags))))))
+    (inputs (list glu
+                  haxe
+                  libjpeg-turbo
+                  libpng
+                  libuv
+                  libvorbis
+                  mbedtls-apache
+                  mikktspace
+                  minimp3
+                  openal
+                  pcre
+                  sdl2
+                  sqlite
+                  zlib))
+    (native-inputs (list pkg-config))
+    (home-page "https://hashlink.haxe.org/")
+    (synopsis "Virtual machine for the Haxe language")
+    (description
+     "HashLink (HL) is a virtual machine for the Haxe language.  It can run
+bytecode produced by the Haxe compiler, or converted to C by HL.  The HashLink runtime
+includes the following features:
+@itemize
+@item Fully compatible with the Haxe specification
+@item Support file I/O, regular expressions, network, etc.
+@item Unicode strings by default
+@item Mark-and-not-sweep Garbage Collector
+@item x86 and x86-64 HL/C compilation
+@item x86 and x86-64 HL/JIT compilation
+@end itemize
+
+While the standard HL runtime provides support for Haxe standard library,
+HashLink also provides several libraries that can optionally be used to build
+HL-specific applications.  This includes the FMT library for compression and
+image support and SDL for mouse, keyboard, and game controller support,
+OpenGL, and more.")
+    (license license:expat)))
diff --git a/gnu/packages/hunspell.scm b/gnu/packages/hunspell.scm
index aa4ab7d783..65ff90b4b9 100644
--- a/gnu/packages/hunspell.scm
+++ b/gnu/packages/hunspell.scm
@@ -46,7 +46,7 @@
               (string-append "libreoffice-" version))))
        (file-name (git-file-name "libreoffice-dictionaries" version))
        (sha256
-        (base32 "0h1sz8haqwpis4af1vy7jvivl4rr9g53l4l680qa7yn0691gkiv3"))))
+        (base32 "1qyn56kcn2scdlssjgi5b33hnsh20mmnd60w78z0gp7bs0mv0wcs"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("source" ,source)))
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index bcb1d7a2f6..3dfe086af8 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -358,6 +358,7 @@ many popular formats.")
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_theora=ON"
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON"
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON"
+                           "-DVTK_MODULE_ENABLE_VTK_RenderingExternal=YES" ; For F3D
                            "-DVTK_WRAP_PYTHON=ON"
                            "-DVTK_PYTHON_VERSION:STRING=3"
                            )
@@ -770,7 +771,7 @@ including 2D color images.")
             (add-after 'unpack 'qt-chdir
               (lambda _ (chdir "gmic-qt") #t))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (modify-inputs (package-inputs gmic)
        (prepend gmic qtbase-5)))
@@ -1091,7 +1092,7 @@ combine the information contained in both.")
                    ,(map (lambda (label)
                            (string-append (assoc-ref inputs label)
                                           "/lib/qt5/plugins"))
-                         '("qtbase" "qtdeclarative"))))))))))
+                         '("qtbase" "qtdeclarative-5"))))))))))
     (inputs
      (list curl
            fftw
@@ -1104,12 +1105,12 @@ combine the information contained in both.")
            insight-toolkit-4.12
            vtk-7
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            vxl-1
            zlib))
     (native-inputs
      `(("googletest" ,googletest)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("pkg-config" ,pkg-config)
        ("c3d-src"
         ,(let* ((commit "f521358db26e00002c911cc47bf463b043942ad3")
@@ -1224,14 +1225,14 @@ substituted by matching images.")
            "0kixwjb2x457dq7927hkh34c803p7yh1pmn6n61rk9shqrcg492h"))))
       (build-system qt-build-system)
       (native-inputs
-       (list qttools))
+       (list qttools-5))
       (inputs
        `(("boost" ,boost)
          ("libjpeg" ,libjpeg-turbo)
          ("libpng" ,libpng)
          ("libtiff" ,libtiff)
          ("qtbase" ,qtbase-5)
-         ("qtsvg" ,qtsvg)
+         ("qtsvg-5" ,qtsvg-5)
          ("zlib" ,zlib)))
       (arguments
        `(#:phases
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 8d4d2351c3..88dbba866b 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -516,11 +516,11 @@ It supports JPEG, PNG and GIF formats.")
                 "188q0l63nfasqfvwbq4mwx2vh7wsfi2bq9n5nksddspl1qz01lnp"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list qtbase-5
-           qtdeclarative
-           qtsvg
+           qtdeclarative-5
+           qtsvg-5
            boost
            eigen
            ;; gtest
@@ -531,9 +531,9 @@ It supports JPEG, PNG and GIF formats.")
            libjpeg-turbo
            lcms
            openexr-2
-           qtwebengine
-           qtdeclarative
-           qtwebchannel
+           qtwebengine-5
+           qtdeclarative-5
+           qtwebchannel-5
            fftwf
            gsl
            libtiff))
@@ -671,9 +671,9 @@ For PDF support, install the @emph{mupdf} package.")
                   (invoke "qmake" "tests.pro")
                   (invoke "make" "tests"))))))))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtimageformats qtsvg))
+     (list qtbase-5 qtimageformats qtsvg-5))
     (home-page "https://interversehq.com/qview/")
     (synopsis "Convenient and minimal image viewer")
     (description "qView is a Qt image viewer designed with visually
@@ -921,10 +921,10 @@ archives.")
        ("python" ,python-wrapper)
        ("quazip" ,quazip-0)
        ("qtbase" ,qtbase-5)
-       ("qtsvg" ,qtsvg)))
+       ("qtsvg-5" ,qtsvg-5)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)))
+       ("qtlinguist" ,qttools-5)))
     (synopsis "Image viewer supporting all common formats")
     (description "Nomacs is a simple to use image lounge featuring
 semi-transparent widgets that display additional information such as metadata,
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 7db53f3e22..7c23b308fd 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018-2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
@@ -1058,89 +1058,89 @@ supplies a generic doubly-linked list and some string functions.")
 
 (define-public freeimage
   (package
-   (name "freeimage")
-   (version "3.18.0")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "mirror://sourceforge/freeimage/Source%20Distribution/"
-                  version "/FreeImage"
-                  (string-concatenate (string-split version #\.))
-                  ".zip"))
-            (sha256
-             (base32
-              "1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl"))
-            (modules '((guix build utils)))
-            (snippet
-             '(begin
-                (for-each
-                  (lambda (dir)
-                    (delete-file-recursively (string-append "Source/" dir)))
-                  '("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite"
-                    "LibJXR" "LibWebP" "OpenEXR" "ZLib"))))
-            (patches
-             (append
-              (search-patches "freeimage-unbundle.patch")
-              ;; Take one patch from Arch Linux that adds LibRaw 0.20 compatibility.
-              (list (origin
-                      (method url-fetch)
-                      (uri "https://raw.githubusercontent.com/archlinux\
+    (name "freeimage")
+    (version "3.18.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/freeimage/Source%20Distribution/"
+                    version "/FreeImage"
+                    (string-concatenate (string-split version #\.))
+                    ".zip"))
+              (sha256
+               (base32
+                "1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each
+                   (lambda (dir)
+                     (delete-file-recursively (string-append "Source/" dir)))
+                   '("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite"
+                     "LibJXR" "LibWebP" "OpenEXR" "ZLib"))))
+              (patches
+               (append
+                (search-patches "freeimage-unbundle.patch")
+                ;; Take one patch from Arch Linux that adds LibRaw 0.20 compatibility.
+                (list (origin
+                        (method url-fetch)
+                        (uri "https://raw.githubusercontent.com/archlinux\
 /svntogit-community/ca3e6a52f5a46dec87cbf85e9d84fe370e282c8c/trunk\
 /freeimage-libraw-0.20.patch")
-                      (file-name "freeimage-libraw-compat.patch")
-                      (sha256
-                       (base32
-                        "0cwjxjz0f4gs6igvwqg0p99mnrsrwzkal1l2n08yvz2xq9s5khki"))))))))
-   (build-system gnu-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        ;; According to Fedora these files depend on private headers, but their
-        ;; presence is required for building, so we replace them with empty files.
-        (add-after 'unpack 'delete-unbuildable-files
-          (lambda _
-            (for-each (lambda (file)
-                        (delete-file file)
-                        (close (open file O_CREAT)))
-                      '("Source/FreeImage/PluginG3.cpp"
-                        "Source/FreeImageToolkit/JPEGTransform.cpp"))
-            #t))
-        ;; These scripts generate the Makefiles.
-        (replace 'configure
-          (lambda _
-            (invoke "sh" "gensrclist.sh")
-            (invoke "sh" "genfipsrclist.sh")))
-        (add-before 'build 'patch-makefile
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* "Makefile.gnu"
-              (("/usr") (assoc-ref outputs "out"))
-              (("-o root -g root") ""))
-            #t)))
+                        (file-name "freeimage-libraw-compat.patch")
+                        (sha256
+                         (base32
+                          "0cwjxjz0f4gs6igvwqg0p99mnrsrwzkal1l2n08yvz2xq9s5khki"))))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; According to Fedora these files depend on private headers, but their
+          ;; presence is required for building, so we replace them with empty files.
+          (add-after 'unpack 'delete-unbuildable-files
+            (lambda _
+              (for-each (lambda (file)
+                          (delete-file file)
+                          (close (open file O_CREAT)))
+                        '("Source/FreeImage/PluginG3.cpp"
+                          "Source/FreeImageToolkit/JPEGTransform.cpp"))))
+          ;; These scripts generate the Makefiles.
+          (replace 'configure
+            (lambda _
+              (invoke "sh" "gensrclist.sh")
+              (invoke "sh" "genfipsrclist.sh")))
+          (add-before 'build 'patch-makefile
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "Makefile.gnu"
+                (("/usr") (assoc-ref outputs "out"))
+                (("-o root -g root") "")))))
       #:make-flags
-      (list ,(string-append "CC=" (cc-for-target))
-            ;; We need '-fpermissive' for Source/FreeImage.h.
-            ;; libjxr doesn't have a pkg-config file.
-            (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive "
-                           "-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib"))
-      #:tests? #f)) ; no check target
-   (native-inputs
-    (list pkg-config unzip))
-   (inputs
-    `(("libjpeg" ,libjpeg-turbo)
-      ("libjxr" ,libjxr)
-      ("libpng" ,libpng)
-      ("libraw" ,libraw)
-      ("libtiff" ,libtiff)
-      ("libwebp" ,libwebp)
-      ("openexr" ,openexr-2)
-      ("openjpeg" ,openjpeg)
-      ("zlib" ,zlib)))
-   (synopsis "Library for handling popular graphics image formats")
-   (description
-    "FreeImage is a library for developers who would like to support popular
+      #~(let ((jxrlib (search-input-directory %build-inputs "include/jxrlib")))
+          (list (string-append "CC=" #$(cc-for-target))
+                ;; We need '-fpermissive' for Source/FreeImage.h.
+                ;; libjxr doesn't have a pkg-config file.
+                (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden "
+                               "-fpermissive -I" jxrlib)))
+      #:tests? #f))                     ; no check target
+    (native-inputs
+     (list pkg-config unzip))
+    (inputs
+     (list libjpeg-turbo
+           libjxr
+           libpng
+           libraw
+           libtiff
+           libwebp
+           openexr-2
+           openjpeg
+           zlib))
+    (synopsis "Library for handling popular graphics image formats")
+    (description
+     "FreeImage is a library for developers who would like to support popular
 graphics image formats like PNG, BMP, JPEG, TIFF and others.")
-   (license license:gpl2+)
-   (home-page "http://freeimage.sourceforge.net")))
+    (license license:gpl2+)
+    (home-page "https://freeimage.sourceforge.io/")))
 
 (define-public vigra
     (let ((commit "9b514fa00a136f5fd81bb57ee9f6293c333ffc1f")
@@ -1331,7 +1331,7 @@ channels.")
         (base32 "1qm6bvj28l42km009nc60gffn1qhngc0m2wjlhf90si3mcc8d99m"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:test-target "tests"
+     `(#:test-target "tests"
        #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON"
                                ;; darktable needs BMFF to support
                                ;; CR3 files.
@@ -1342,7 +1342,19 @@ channels.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (lib (string-append out "/lib")))
-               (for-each delete-file (find-files lib "\\.a$"))))))))
+               (for-each delete-file (find-files lib "\\.a$")))))
+
+         ,@(if (or (target-ppc64le?) (target-aarch64?))
+               '((add-after 'unpack 'adjust-tests
+                   (lambda _
+                     ;; Adjust test on ppc64 and aarch64, where no exception
+                     ;; is raised and thus the return value is different.  See
+                     ;; <https://github.com/Exiv2/exiv2/issues/365> and
+                     ;; <https://github.com/Exiv2/exiv2/issues/933>.
+                     (substitute* "tests/bugfixes/github/test_CVE_2018_12265.py"
+                       (("\\$uncaught_exception \\$addition_overflow_message\n") "")
+                       (("retval = \\[1\\]") "retval = [0]")))))
+               '()))))
     (propagated-inputs
      (list expat zlib))
     (native-inputs
@@ -1808,9 +1820,9 @@ parsing, viewing, modifying, and saving this metadata.")
          "1p7gqs5vqzbddlgl38lbanchwb14m6lx8f2cn2c5p0vyqwvqqv52"))))
     (build-system qt-build-system)
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtbase-5 qtsvg-5))
     (arguments
      `(#:tests? #f))                    ;no tests
     (home-page "https://github.com/flameshot-org/flameshot")
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index ad9552e049..2e43835e4f 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -244,7 +244,7 @@ as the native format.")
   (package
     (inherit inkscape/stable)
     (name "inkscape")
-    (version "1.2")
+    (version "1.2.1")
     (source
      (origin
        (inherit (package-source inkscape/stable))
@@ -253,22 +253,12 @@ as the native format.")
                            "resources/file/"
                            "inkscape-" version ".tar.xz"))
        (sha256
-        (base32 "1bg6rlflzhq726kpcwazfscm02liammjvzpyxmj5d52l4la336wd"))))
+        (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))))
     (build-system cmake-build-system)
     (arguments
      (substitute-keyword-arguments (package-arguments inkscape/stable)
        ((#:phases phases)
         `(modify-phases ,phases
-           (add-after 'unpack 'disable-problematic-tests
-             ;; The UnionOutside and UnionOutsideSwap tests fail, comparing
-             ;; e.g. the result "M 0 1.5 V 0 H 2 V 2 H 0.5 V 2.5 H 0 V 2 V 1.5 H
-             ;; 0.5 V 2 z" to the expected string "M 0 0 V 1.5 V 2 V 2.5 H 0.5 V
-             ;; 2 H 2 V 0 z" (see:
-             ;; https://gitlab.com/inkscape/inkscape/-/issues/3689).
-             (lambda _
-               (substitute* "testfiles/src/path-boolop-test.cpp"
-                 (("PathBoolopTest, UnionOutside(Swap)?.*" all)
-                  (string-append all "    GTEST_SKIP();\n")))))
            (replace 'wrap-program
              ;; Ensure Python is available at runtime.
              (lambda* (#:key outputs #:allow-other-keys)
@@ -281,6 +271,7 @@ as the native format.")
                    `("GDK_PIXBUF_MODULE_FILE" =
                      (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))))
     (inputs (modify-inputs (package-inputs inkscape/stable)
+              (replace "lib2geom" lib2geom-1.2)
               (append bash-minimal
                       librsvg)))        ;for the pixbuf loader
     (properties (alist-delete 'hidden? (package-properties inkscape/stable)))))
diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm
index 01ad03e6af..30cd0e4e6c 100644
--- a/gnu/packages/installers.scm
+++ b/gnu/packages/installers.scm
@@ -34,16 +34,15 @@
          (xgcc (cross-gcc triplet #:libc xlibc)))
     (package
       (name (string-append "nsis-" machine))
-      (version "3.05")
+      (version "3.08")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "http://prdownloads.sourceforge.net/nsis/nsis-"
                                     version "-src.tar.bz2"))
                 (sha256
                  (base32
-                  "1sbwx5vzpddharkb7nj4q5z3i5fbg4lan63ng738cw4hmc4v7qdn"))
-                (patches (search-patches "nsis-env-passthru.patch"
-                                         "nsis-source-date-epoch.patch"))))
+                  "11qy1n1qdcqwal9hn8cmzm7gxjdyx7by6w14rfz2l646afnp0lm8"))
+                (patches (search-patches "nsis-env-passthru.patch"))))
       (build-system scons-build-system)
       (native-inputs `(("xgcc" ,xgcc)
                        ("xbinutils" ,xbinutils)
@@ -125,7 +124,7 @@
                       (lambda _
                         ;; NSIS target detection is screwed up, manually change
                         ;; it ourselves
-                        (substitute* "Source/build.cpp" (("m_target_type=TARGET_X86ANSI")
+                        (substitute* "Source/build.cpp" (("m_target_type=TARGET_X86UNICODE")
                                                          (string-append "m_target_type=" ,nsis-target-type))))))))
       (home-page "https://nsis.sourceforge.io/Main_Page")
       (synopsis "System to create Windows installers")
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm
index 4e23e9bed4..f52cf11505 100644
--- a/gnu/packages/instrumentation.scm
+++ b/gnu/packages/instrumentation.scm
@@ -18,13 +18,17 @@
 
 (define-module (gnu packages instrumentation)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages commencement)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages engineering)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages libunwind)
@@ -290,6 +294,60 @@ line for tracing control, a @code{lttng-ctl} library for tracing control and a
 @code{lttng-relayd} for network streaming.")
     (license (list  license:gpl2 license:lgpl2.1))))
 
+(define-public perf-tools
+  (package
+    (name "perf-tools")
+    (version "1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/brendangregg/perf-tools")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1ab735idi0h62yvhzd7822jj3555vygixv4xjrfrdvi8d2hhz6qn"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       ',(append
+          (map (cut list <> "bin/")
+               '("disk/bitesize"
+                 "fs/cachestat"
+                 "execsnoop"
+                 "kernel/funccount"
+                 "kernel/funcgraph"
+                 "kernel/funcslower"
+                 "kernel/functrace"
+                 "iolatency"
+                 "iosnoop"
+                 "killsnoop"
+                 "kernel/kprobe"
+                 "opensnoop"
+                 "misc/perf-stat-hist"
+                 "tools/reset-ftrace"
+                 "syscount"
+                 "net/tcpretrans"
+                 "system/tpoint"
+                 "user/uprobe"))
+          '(("man/man8/" "share/man/man8")))))
+    (propagated-inputs
+     (list
+      bash
+      coreutils                         ; cat + rm
+      gawk
+      gcc-toolchain                     ; objdump + ldconfig
+      file
+      perf
+      perl
+      procps                            ; sysctl
+      which))
+    (home-page "https://github.com/brendangregg/perf-tools")
+    (synopsis "Performance analysis tools")
+    (description "Perf-tools is a collection of scripts for performance
+analysis and instrumentation based on Linux perf_events (aka perf) and
+ftrace.")
+    (license (list license:gpl2))))
+
 (define-public uftrace
   (package
     (name "uftrace")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 5fc69cab3b..efb32a39e0 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -126,7 +126,7 @@
              (let ((inxi (search-input-file inputs "/bin/inxi")))
                (symlink inxi "data/scripts/inxi")))))))
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list boost
            inxi-minimal
@@ -134,9 +134,9 @@
            perl
            qca
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            qtscript
-           qtsvg
+           qtsvg-5
            snorenotify
            sonnet
            zlib))
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index b8210bcc1e..95c0052841 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -51,7 +51,9 @@
   #:use-module (gnu packages upnp)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages vulkan)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages)
@@ -64,7 +66,7 @@
   #:use-module (guix packages)
   #:use-module (guix utils))
 
-(define %jami-version "20211223.2.37be4c3")
+(define %jami-version "20220726.1515.da8d1da")
 
 (define %jami-sources
   ;; Return an origin object of the tarball release sources archive of the
@@ -85,14 +87,11 @@
         (for-each delete-file-recursively '("client-android"
                                             "client-ios"
                                             "client-macosx"
-                                            "client-uwp"))))
-    (patches (search-patches "jami-libclient-audio-managers.patch"
-                             "jami-fix-crash-on-quit.patch"
-                             "jami-images-loading.patch"
-                             "jami-memory-usage.patch"))
+                                            "plugins"))))
     (sha256
      (base32
-      "12h4a0nj3gh05w64gkywrrb64agrhn6y3q4b9cqnhvr1vdkzlj0h"))))
+      "1zx0i9aw8jsba3bjc5r4pkkybm8c0lyz420ciq89vsswd48gfdhg"))
+    (patches (search-patches "jami-fix-esc-bug.patch"))))
 
 ;; Jami maintains a set of patches for some key dependencies (currently
 ;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
@@ -104,7 +103,7 @@
         (invoke "tar" "-xvf" #$%jami-sources
                 "-C" patches-directory
                 "--strip-components=5"
-                (string-append "ring-project/daemon/contrib/src/"
+                (string-append "jami-project/daemon/contrib/src/"
                                dep-name))
         (for-each
          (lambda (file)
@@ -178,6 +177,8 @@
     "--disable-muxers"
     "--enable-muxer=rtp"
     "--enable-muxer=g722"
+    "--enable-muxer=g726"
+    "--enable-muxer=g726le"
     "--enable-muxer=h263"
     "--enable-muxer=h264"
     "--enable-muxer=hevc"
@@ -202,6 +203,9 @@
     "--enable-demuxer=wav"
     "--enable-demuxer=ac3"
     "--enable-demuxer=g722"
+    "--enable-demuxer=g723_1"
+    "--enable-demuxer=g726"
+    "--enable-demuxer=g726le"
     "--enable-demuxer=pcm_mulaw"
     "--enable-demuxer=pcm_alaw"
     "--enable-demuxer=pcm_s16be"
@@ -222,6 +226,13 @@
     ;; Encoders/decoders.
     "--enable-encoder=adpcm_g722"
     "--enable-decoder=adpcm_g722"
+    "--enable-encoder=adpcm_g726"
+    "--enable-decoder=adpcm_g726"
+    "--enable-encoder=adpcm_g726le"
+    "--enable-decoder=adpcm_g726le"
+    "--enable-decoder=g729"
+    "--enable-encoder=g723_1"
+    "--enable-decoder=g723_1"
     "--enable-encoder=rawvideo"
     "--enable-decoder=rawvideo"
     "--enable-encoder=libx264"
@@ -387,7 +398,7 @@
                              "change-RTCP-ratio"
                              "rtp_ext_abs_send_time"
                              "libopusdec-enable-FEC"
-                             "libopusenc-enable-FEC"
+                             "libopusenc-reload-packet-loss-at-encode"
                              "screen-sharing-x11-fix"))))))))))
 
 (define-public libjami
@@ -399,18 +410,21 @@
     (build-system gnu-build-system)
     (arguments
      (list
-      ;; The test suite fails to link when building libjami as a shared library:
-      ;; "testAccount_factory.cpp:(.text+0xc52): undefined reference to
-      ;; `jami::AccountFactory::AccountFactory()'.
+      ;; The test suite fails to link when building libjami as a shared
+      ;; library: "sip_account/sip_empty_offer.cpp:228:1: error: no
+      ;; declaration matches ‘void
+      ;; jami::test::SipEmptyOfferTest::onCallStateChange(const string&, const
+      ;; string&, jami::test::CallData&)’".
       #:tests? #f
       ;; The agent links the daemon binary with libguile, which enables the
       ;; execution of test plans described in Scheme.  It may be useful in
-      ;; user scripts too, until more generalized Scheme bindings are made
-      ;; (see: test/agent/README.md).
-      ;; FIXME: Fails to link when building libjami as a shared library:
-      ;; bindings.cpp:(.text+0x24): undefined reference to `jami::Logger::log
-      ;; [...].
-      #:configure-flags #~(list "--disable-agent" "--enable-debug")
+      ;; user scripts too, until more general purpose Scheme bindings are made
+      ;; available (see: test/agent/README.md).
+      #:configure-flags #~(list "--enable-agent"
+                                "--enable-debug"
+                                ;; Disable static libraries to avoid
+                                ;; installing a 98 MiB archive.
+                                "--disable-static")
       #:make-flags #~(list "V=1")       ;build verbosely
       #:phases
       #~(modify-phases %standard-phases
@@ -461,157 +475,76 @@ protocols, as well as decentralized calling using P2P-DHT.")
 (define-public libring
   (deprecated-package "libring" libjami))
 
-;;; Note: this package will eventually be absorbed into jami itself (the Qt
-;;; client).
-(define-public jami-libclient
+(define-public jami
   (package
-    (name "jami-libclient")
+    (name "jami")
     (version %jami-version)
     (source %jami-sources)
-    (build-system cmake-build-system)
+    (build-system qt-build-system)
     (outputs '("out" "debug"))
     (arguments
      (list
-      #:tests? #f                       ;no test suite
+      #:qtbase qtbase
+      #:tests? #f                       ;see comment below
       #:configure-flags
-      #~(list (string-append "-DRING_XML_INTERFACES_DIR="
+      ;; The test suite fails to build with:
+      ;; "../../../client-qt/src/app/utils.h:29:10: fatal error: QLabel: No
+      ;; such file or directory".
+      #~(list "-DENABLE_TESTS=OFF"
+              "-DWITH_WEBENGINE=OFF" ;reduce transitive closure size by 450 MiB
+              ;; Use libwrap to link directly to libjami instead of
+              ;; communicating via D-Bus to jamid, the Jami daemon.
+              "-DENABLE_LIBWRAP=ON"
+              (string-append "-DLIBJAMI_XML_INTERFACES_DIR="
                              #$(this-package-input "libjami")
                              "/share/dbus-1/interfaces")
-              (string-append "-DRING_BUILD_DIR="
-                             #$(this-package-input "libjami")
-                             "/include")
-              ;; Call to the libraries directly instead of going through DBus
-              ;; to avoid issues (see: https://issues.guix.gnu.org/48538).
-              "-DENABLE_LIBWRAP=true")
+              (string-append "-DLIBJAMI_INCLUDE_DIR="
+                             #$(this-package-input "libjami") "/include/jami"))
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'change-directory/maybe
             (lambda _
               ;; Allow building from the tarball or a git checkout.
-              (false-if-exception (chdir "lrc")))))))
-    (inputs
-     (list libjami network-manager))
-    (propagated-inputs
-     (list qtbase-5))             ;Qt is included in several installed headers
-    (synopsis "Jami client library")
-    (description "This package provides a library common to all Jami clients.
-Jami is a secure and distributed voice, video and chat communication platform
-that requires no centralized server and leaves the power of privacy in the
-hands of the user.  It supports the SIP and IAX protocols, as well as
-decentralized calling using P2P-DHT.")
-    (home-page "https://jami.net")
-    (license license:gpl3+)))
-
-;;; Remove when 2023 comes.
-(define-public libringclient
-  (deprecated-package "libringclient" jami-libclient))
-
-(define-public jami-gnome
-  (package
-    (name "jami-gnome")
-    (version %jami-version)
-    (source %jami-sources)
-    (outputs '("out" "debug"))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f                      ;no test suite
-       #:imported-modules (,@%cmake-build-system-modules
-                           (guix build glib-or-gtk-build-system))
-       #:modules ((guix build cmake-build-system)
-                  ((guix build glib-or-gtk-build-system) #:prefix gtk:)
-                  (guix build utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'change-directory/maybe
-           (lambda _
-             ;; Allow building from the tarball or a git checkout.
-             (false-if-exception (chdir "client-gnome"))))
-         (add-after 'change-directory/maybe 'fix-webkit-detection
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("WEBKIT webkit2gtk-4.0")
-                "WEBKIT webkit2gtk-4.1"))))
-         (add-after 'change-directory/maybe 'fix-version-string
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("^# Set VERSION.*" anchor)
-                (string-append anchor
-                               "set(PROJECT_VERSION \"" ,version "\")\n")))))
-         (add-after 'install 'glib-or-gtk-compile-schemas
-           (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas))
-         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
-           (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap)))))
-    (inputs
-     (list clutter
-           clutter-gtk
-           gtk+
-           jami-libclient
-           libcanberra
-           libappindicator
-           libnotify
-           network-manager
-           qrencode
-           sqlite
-           webkitgtk))
-    (native-inputs
-     (list pkg-config
-           gettext-minimal
-           `(,glib "bin")))             ;for glib-compile-resources
-    (synopsis "Jami client for GNOME")
-    (description "This package provides a Jami client for the GNOME desktop.
-Jami is a secure and distributed voice, video and chat communication platform
-that requires no centralized server and leaves the power of privacy in the
-hands of the user.  It supports the SIP and IAX protocols, as well as
-decentralized calling using P2P-DHT.")
-    (home-page "https://jami.net")
-    (license license:gpl3+)))
-
-(define-public jami
-  (package
-    (name "jami")
-    (version %jami-version)
-    (source %jami-sources)
-    (build-system qt-build-system)
-    (outputs '("out" "debug"))
-    (arguments
-     `(#:tests? #f                      ;no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'change-directory/maybe
-           (lambda _
-             ;; Allow building from the tarball or a git checkout.
-             (false-if-exception (chdir "client-qt"))))
-         (add-after 'change-directory/maybe 'fix-version-string
-           (lambda _
-             (substitute* "src/version.h"
-               (("VERSION_STRING")
-                "BUILD_DATE")           ;to avoid a redefinition error
-               (("// clang-format on.*" anchor)
-                (string-append "const char VERSION_STRING[] = \""
-                               ,version "\";\n"
-                               anchor)))))
-         (add-after 'change-directory/maybe 'use-desktop-opengl
-           ;; TODO: Remove after next release; this is no longer specified in
-           ;; the source following the update to Qt 6.
-           (lambda _
-             (substitute* "src/main.cpp"
-               (("Qt::AA_UseOpenGLES")
-                "Qt::AA_UseDesktopOpenGL")))))))
+              (false-if-exception (chdir "client-qt"))))
+          (add-after 'change-directory/maybe 'fix-version-string
+            (lambda _
+              (substitute* "src/app/version.h"
+                (("VERSION_STRING")
+                 "BUILD_DATE")          ;to avoid a redefinition error
+                (("// clang-format on.*" anchor)
+                 (string-append "const char VERSION_STRING[] = \""
+                                #$version "\";\n"
+                                anchor)))))
+          (add-after 'change-directory/maybe 'patch-source
+            (lambda _
+              (substitute* "src/libclient/CMakeLists.txt"
+                ;; Fix submitted upstream (see:
+                ;; https://review.jami.net/c/jami-client-qt/+/21830).
+                (("target_link_libraries\\(\\$\\{LIBCLIENT_NAME} qtwrapper.*" all)
+                 (string-append
+                  all "  target_link_libraries(${LIBCLIENT_NAME} avutil)\n"))))))))
     (native-inputs
-     (list pkg-config python qttools doxygen graphviz))
+     (list googletest
+           pkg-config
+           python
+           qttools
+           doxygen
+           graphviz
+           vulkan-headers))
     (inputs
-     (list jami-libclient
+     (list ffmpeg-jami
+           libjami
            libnotify
+           libxkbcommon
            network-manager
            qrencode
-           qtsvg
-           qtwebengine
-           qtwebchannel
-           qtmultimedia
+           qt5compat
            qtdeclarative
-           qtgraphicaleffects
-           qtquickcontrols
-           qtquickcontrols2))
+           qtmultimedia
+           qtnetworkauth
+           qtpositioning
+           qtsvg
+           vulkan-loader))
     (home-page "https://jami.net")
     (synopsis "Qt Jami client")
     (description "This package provides the Jami Qt client.  Jami is a secure
@@ -622,5 +555,9 @@ P2P-DHT.")
     (license license:gpl3+)))
 
 ;;; Remove when 2023 comes.
+(define-public jami-gnome
+  (deprecated-package "jami-gnome" jami))
+
+;;; Remove when 2023 comes.
 (define-public jami-qt
   (deprecated-package "jami-qt" jami))
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 9f957692cb..391db94f3a 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -185,7 +185,7 @@ common build settings used in software produced by the KDE community.")
     (native-inputs
      ;; TODO: Think about adding pulseaudio. Is it required for sound?
      ;; TODO: Add building the super experimental QML support
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list qtbase-5))
     (arguments
@@ -222,7 +222,7 @@ common build settings used in software produced by the KDE community.")
                 "1wk1ip2w7fkh65zk6rilj314dna0hgsv2xhjmpr5w08xa8sii1y5"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list qtbase-5
            phonon
@@ -304,7 +304,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
     (native-inputs
      (list dbus extra-cmake-modules))
     (inputs
-     ;; TODO: qtdeclarative (yields one failing test)
+     ;; TODO: qtdeclarative-5 (yields one failing test)
      (list qtbase-5))
     (arguments
      (list #:configure-flags
@@ -489,7 +489,7 @@ and the older vCalendar.")
                 "0y9n2a5n18pasdmrp0xb84hla9l27yj2x3k4p1c041sd9nkwixpk"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules gperf qttools))
+     (list extra-cmake-modules gperf qttools-5))
     (inputs
      (list qtbase-5))
     (home-page "https://community.kde.org/Frameworks")
@@ -523,7 +523,7 @@ Internet).")
                 "1s3h4hfpw7c0894cifj66bj1yhx8g94ckvl71jm7qqsb5x5h6y9n"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list dbus extra-cmake-modules inetutils qttools
+     (list dbus extra-cmake-modules inetutils qttools-5
            xorg-server-for-tests))
     (inputs
      (list qtbase-5))
@@ -585,7 +585,7 @@ propagate their changes to their respective configuration files.")
                 "10a7zys3limsawl7lk9ggymk3msk2bp0y8hp0jmsvk3l405pd1ps"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools shared-mime-info
+     (list extra-cmake-modules qttools-5 shared-mime-info
            ;; TODO: FAM: File alteration notification http://oss.sgi.com/projects/fam
            xorg-server-for-tests)) ; for the tests
     (inputs
@@ -641,7 +641,7 @@ many more.")
               (patches (search-patches "kdbusaddons-kinit-file-name.patch"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules dbus qttools))
+     (list extra-cmake-modules dbus qttools-5))
     (inputs
      (list qtbase-5 qtx11extras kinit-bootstrap)) ;; kinit-bootstrap: kinit package which does not depend on kdbusaddons.
     (arguments
@@ -681,7 +681,7 @@ as well as an API to create KDED modules.")
                 "0wadknnf472rqg2xnqzs5v23qzqfr336wj6d96yg2ayqm0chbppy"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list avahi ; alternativly dnssd could be used
            qtbase-5))
@@ -712,7 +712,7 @@ infrastructure.")
            graphviz
            kiconthemes
            kparts
-           qtsvg))
+           qtsvg-5))
     (native-inputs
      (list pkg-config extra-cmake-modules kdoctools))
     (home-page "https://apps.kde.org/en/kgraphviewer")
@@ -773,9 +773,9 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.")
                  (display "[testDefaultRegions]\n*\n")))
              #t)))))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (home-page "https://invent.kde.org/frameworks/kholidays")
     (synopsis "Library for regional holiday information")
     (description "This library provides a C++ API that determines holiday and
@@ -802,7 +802,7 @@ other special events for a geographical region.")
     (native-inputs
      (list extra-cmake-modules))
     (inputs
-     (list qtbase-5 qtdeclarative qtscript))
+     (list qtbase-5 qtdeclarative-5 qtscript))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -868,16 +868,16 @@ or user activity.")
     (properties `((upstream-name . "kirigami2")))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kwindowsystem
            ;; TODO: Find a way to activate this optional include without
            ;; introducing a recursive dependency.
            ;;("plasma-frameworks" ,plasma-framework) ;; Tier 3!
            qtbase-5
-           qtdeclarative
-           qtquickcontrols2
-           qtsvg
+           qtdeclarative-5
+           qtquickcontrols2-5
+           qtsvg-5
            ;; Run-time dependency
            qtgraphicaleffects))
     (home-page "https://community.kde.org/Frameworks")
@@ -904,7 +904,7 @@ of applications that follow the Kirigami Human Interface Guidelines.")
     (native-inputs
      (list extra-cmake-modules))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Set of item models extending the Qt model-view framework")
     (description "KItemModels provides the following models:
@@ -952,7 +952,7 @@ model to observers
                 "04vlmkvc3y5h7cpb6kdv9gha5axxkimhqh44mdg2ncyn4sas6j68"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list qtbase-5))
     (home-page "https://community.kde.org/Frameworks")
@@ -977,7 +977,7 @@ to flat and hierarchical lists.")
                 "1wj4n2a8iz9ml1y0012xkpsx3dfp5gl2dn80sifrzvkxjxrhwach"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list qtbase-5))
     (home-page "https://community.kde.org/Frameworks")
@@ -1004,7 +1004,7 @@ pixel units.")
                 "12jn7lqsp86329spai7n1n8i65nwhxh8gp33wkq543h7w3i2a3jb"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules perl qttools
+     (list extra-cmake-modules perl qttools-5
            ;; Optional, for compile-time validation of syntax definition files:
            qtxmlpatterns))
     (inputs
@@ -1088,7 +1088,7 @@ represented by a QPoint or a QSize.")
                 "03l37lh219np7pqfa56r2v7n5s5xg4rjq005qng4b5izd95ri56j"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools xorg-server-for-tests))
+     (list extra-cmake-modules qttools-5 xorg-server-for-tests))
     (inputs
      (list qtbase-5))
     (arguments
@@ -1127,7 +1127,7 @@ configuration pages, message boxes, and password requests.")
            pkg-config
            dbus ; for the tests
            openbox ; for the tests
-           qttools
+           qttools-5
            xorg-server-for-tests)) ; for the tests
     (inputs
      `(("libxrender" ,libxrender)
@@ -1306,7 +1306,7 @@ provides uniform access to generation of barcodes with data.")
     (native-inputs
      (list extra-cmake-modules pkg-config))
     (inputs
-     (list glib pulseaudio qtdeclarative qtbase-5))
+     (list glib pulseaudio qtdeclarative-5 qtbase-5))
     (home-page "https://invent.kde.org/libraries/pulseaudio-qt/")
     (synopsis "Qt bindings for PulseAudio")
     (description
@@ -1341,8 +1341,8 @@ libpulse.")
            kiconthemes ; optional
            kirigami
            qtbase-5
-           qtdeclarative
-           qtquickcontrols2))
+           qtdeclarative-5
+           qtquickcontrols2-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "QtQuickControls2 style that integrates with the desktop")
     (description "This is a style for QtQuickControls2 which is using
@@ -1373,10 +1373,10 @@ feel.")
              (setenv "DBUS_FATAL_WARNINGS" "0")
              (invoke "dbus-launch" "ctest" "."))))))
     (native-inputs
-     (list bison dbus extra-cmake-modules flex qttools))
+     (list bison dbus extra-cmake-modules flex qttools-5))
     (inputs
      `(("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("udev" ,eudev)))
     ;; TODO: Add runtime-only dependency MediaPlayerInfo
     (home-page "https://community.kde.org/Frameworks")
@@ -1401,7 +1401,7 @@ system.")
                 "0b88h5fw1n8zyrg0vq3lj2jbjjyh0mk64lj6ab3643kxzqxbn30w"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list hunspell
            ;; TODO: hspell (for Hebrew), Voikko (for Finish)
@@ -1476,7 +1476,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way."
            kwindowsystem
            kxmlgui
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Core components for the KDE Activity concept")
@@ -1503,7 +1503,7 @@ with other frameworks.")
                 "0nmdz7ra3hpg0air4lfkzilv7cwx3zxs29k7sh8l3i1fs3qpjwxm"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list dbus extra-cmake-modules qttools))
+     (list dbus extra-cmake-modules qttools-5))
     (inputs
      (list kcoreaddons polkit-qt qtbase-5))
     (arguments
@@ -1546,7 +1546,7 @@ utilities.")
                 "1pjgya8wi28jx63hcdi9v5f5487gzbkw2j1iganhd7bhcb8s7zpy"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kconfig kwidgetsaddons qtbase-5))
     (home-page "https://community.kde.org/Frameworks")
@@ -1715,7 +1715,7 @@ from DocBook files.")
            karchive
            kcoreaddons
            ki18n
-           qtmultimedia
+           qtmultimedia-5
            qtbase-5
            ;; Required run-time packages
            catdoc
@@ -1800,7 +1800,7 @@ formats.")
                 "13kdczzyyh17hf6vlhh4li5bn4yq5bab5xa8mm63r9rynxihgclf"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kcoreaddons kwidgetsaddons qtbase-5 qtx11extras))
     (home-page "https://community.kde.org/Frameworks")
@@ -1824,7 +1824,7 @@ asynchronous jobs.")
                 "01bn23xw2n53h9nl99lm3cjnqs8s66bmwkzf6fkpg9rzkykizbyc"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules dbus qttools))
+     (list extra-cmake-modules dbus qttools-5))
     (inputs
      (list kcodecs
            kconfig
@@ -2053,7 +2053,7 @@ between feed formats.")
            kxmlgui
            lmdb
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid))
     (arguments
      `(#:phases
@@ -2108,7 +2108,7 @@ maintaining an index of the contents of your files.")
     (native-inputs
      (list extra-cmake-modules))
     (inputs
-     (list boost kactivities kconfig qtbase-5 qtdeclarative))
+     (list boost kactivities kconfig qtbase-5 qtdeclarative-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Access usage statistics collected by the activity manager")
     (description "The KActivitiesStats library provides a querying mechanism for
@@ -2134,7 +2134,7 @@ by which applications, and what documents have been linked to which activity.")
     (propagated-inputs
      (list kwidgetsaddons))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kauth
            kcodecs
@@ -2205,7 +2205,7 @@ using the XBEL format.")
            kwidgetsaddons
            kxmlgui
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Utilities for KDE System Settings modules")
     (description "KCMUtils provides various classes to work with KCModules.
@@ -2236,7 +2236,7 @@ KCModules can be created with the KConfigWidgets framework.")
            ki18n
            ;; todo: PythonModuleGeneration
            qtbase-5
-           qttools))
+           qttools-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -2293,7 +2293,7 @@ their settings.")
            kxmlgui
            libepoxy
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid))
     (arguments
      `(#:phases
@@ -2362,7 +2362,7 @@ started on demand.")
                 "0dr6gcag2yzx8fvxis4x403jrcisywds95cywmiyz3pb5727cak2"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kconfig
            kcoreaddons
@@ -2431,7 +2431,7 @@ with su and ssh respectively.")
                 "0y9ja3znkvzdbjfs91dwr4cmvl9fk97zpz2lkf0f9zhm2nw6q008"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kconfig
            kcoreaddons
@@ -2500,7 +2500,7 @@ emoticons coming from different providers.")
                 "0hmqigc8myiwwh7m6y2cm4vn0d3kmrhia179hyb84vpvvn3lm93z"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list kconfig
            kcrash
@@ -2534,7 +2534,7 @@ window does not need focus for them to be activated.")
                 "09bqpf3drqyfc81vgab9bsh1wm5qbzdwqjlczhax38660nnvh0r9"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools shared-mime-info))
+     (list extra-cmake-modules qttools-5 shared-mime-info))
     (inputs
      (list karchive
            kauth
@@ -2546,7 +2546,7 @@ window does not need focus for them to be activated.")
            kitemviews
            kwidgetsaddons
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -2661,7 +2661,7 @@ consumption.")
            kxmlgui
            solid))
     (native-inputs
-     (list dbus qttools extra-cmake-modules))
+     (list dbus qttools-5 extra-cmake-modules))
     (inputs
      `(;; TODO:  LibACL , <ftp://oss.sgi.com/projects/xfs/cmd_tars>
        ("krb5" ,mit-krb5)
@@ -2761,7 +2761,7 @@ KIO enabled infrastructure.")
            ktextwidgets
            kwidgetsaddons
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid
            sonnet))
     (arguments
@@ -2897,7 +2897,7 @@ widgets with a user-interface defined in terms of actions.")
            kservice
            kwidgetsaddons
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (arguments
      `(#:tests? #f)) ; FIXME: 1/3 tests fail.
     (home-page "https://community.kde.org/Frameworks")
@@ -2947,7 +2947,7 @@ to easily extend the contacts collection.")
            kwindowsystem
            kxmlgui
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid
            threadweaver))
     (arguments
@@ -3078,7 +3078,7 @@ types or handled by application specific code.")
            libgit2
            perl
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtscript
            qtxmlpatterns
            solid
@@ -3133,7 +3133,7 @@ library.")
     (propagated-inputs
      (list ki18n sonnet))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list kauth
            kcodecs
@@ -3213,7 +3213,7 @@ the passwords on KDE work spaces.")
     (propagated-inputs
      (list kconfig kconfigwidgets))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list attica
            kauth
@@ -3337,9 +3337,9 @@ setUrl, setUserAgent and call.")
        ("kxmlgui" ,kxmlgui)
        ("phonon" ,phonon)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtquickcontrols2" ,qtquickcontrols2)
-       ("qtsvg" ,qtsvg)
+       ("qtdeclarative-5" ,qtdeclarative-5)
+       ("qtquickcontrols2-5" ,qtquickcontrols2-5)
+       ("qtsvg-5" ,qtsvg-5)
        ("qtx11extras" ,qtx11extras)
        ("solid" ,solid)))
     (arguments
@@ -3384,7 +3384,7 @@ script engines.")
            kio
            kirigami
            qtbase-5
-           qtdeclarative))
+           qtdeclarative-5))
     (arguments
      `(#:tests? #f  ;; seem to require network; don't find QTQuick components
        #:phases
@@ -3548,8 +3548,8 @@ workspace.")
            libsm
            networkmanager-qt
            openssl
-           qtsvg
-           qttools
+           qtsvg-5
+           qttools-5
            qtx11extras))
     ;; FIXME: Use Guix ca-bundle.crt in etc/xdg/ksslcalist and
     ;; share/kf5/kssl/ca-bundle.crt
@@ -3698,9 +3698,9 @@ support.")
         (base32 "0976faazhxhhi1wpvpcs8hwb2knz0z7j44v3ay3hw73rq4p3bipm"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules kdoctools qttools))
+     (list extra-cmake-modules kdoctools qttools-5))
     (inputs
-     (list ki18n kjs qtbase-5 qtsvg))
+     (list ki18n kjs qtbase-5 qtsvg-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "KDE Frameworks 5 embedded Javascript engine for Qt")
     (description "KJSEmbed provides a method of binding Javascript objects to
@@ -3722,7 +3722,7 @@ QObjects, so you can script your applications.")
         (base32 "0lrm4y727nhwaivl37zpmnrwx048gfhyjw19m6q5z9p37lk43jja"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules kdoctools qttools))
+     (list extra-cmake-modules kdoctools qttools-5))
     (inputs
      (list kcompletion
            kcoreaddons
@@ -3758,7 +3758,7 @@ KParts instead.")
         (base32 "12b527l12rcf421p613ydbacilp9v9iy90ma35w21sdf9a15k675"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules kdoctools qttools))
+     (list extra-cmake-modules kdoctools qttools-5))
     (inputs
      (list kcompletion
            kcoreaddons
diff --git a/gnu/packages/kde-internet.scm b/gnu/packages/kde-internet.scm
index 9de2c54ad3..35d41887c2 100644
--- a/gnu/packages/kde-internet.scm
+++ b/gnu/packages/kde-internet.scm
@@ -88,7 +88,7 @@
            qca
            qoauth
            qtbase-5
-           qtnetworkauth
+           qtnetworkauth-5
            sonnet))
     (home-page "https://kde.org/applications/internet/org.kde.choqok")
     (synopsis "Micro-Blogging Client")
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 265dcef625..39295f589d 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -172,12 +172,12 @@ This package is part of the KDE multimedia module.")
            oxygen-icons ; default icon set
            phonon
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects ; not listed as dependency
-           qtmultimedia
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5
            qtx11extras
            ;; TODO: upnpqt https://gitlab.com/homeautomationqt/upnp-player-qt
            vlc))
@@ -269,7 +269,7 @@ This package is part of the KDE multimedia module.")
            phonon
            phonon-backend-gstreamer
            qtbase-5
-           qtsvg
+           qtsvg-5
            taglib))
     (home-page "https://kde.org/applications/multimedia/org.kde.juk")
     (synopsis "Music jukebox / music player")
@@ -322,7 +322,7 @@ This package is part of the KDE multimedia module.")
            kdoctools
            libxslt
            python-wrapper
-           qttools))
+           qttools-5))
     (inputs
      (list chromaprint
            flac
@@ -335,8 +335,8 @@ This package is part of the KDE multimedia module.")
            kxmlgui
            libvorbis
            qtbase-5
-           qtdeclarative
-           qtmultimedia
+           qtdeclarative-5
+           qtmultimedia-5
            readline
            taglib
            zlib))
@@ -529,10 +529,10 @@ autoloading of subtitle files for use while playing video.")
            oxygen-icons ; default icon set
            purpose
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtquickcontrols
-           qtquickcontrols2 ; not listed as dependency
+           qtquickcontrols-5
+           qtquickcontrols2-5 ; not listed as dependency
            qtx11extras))
     (arguments
      (list #:tests? #f ; test program gets built, but is not found
@@ -625,7 +625,7 @@ This package is part of the KDE multimedia module.")
            phonon
            qtbase-5
            cairo
-           qtsvg
+           qtsvg-5
            qtx11extras
            xcb-util
            xcb-util-cursor
@@ -698,7 +698,7 @@ Some features:
            oxygen-icons ; default icon set
            pulseaudio
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            zlib))
     (home-page "https://kde.org/applications/multimedia/org.kde.kwave")
     (synopsis "Sound editor for KDE")
diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm
index a5acbb0da8..f5b0c008ce 100644
--- a/gnu/packages/kde-pim.scm
+++ b/gnu/packages/kde-pim.scm
@@ -58,7 +58,7 @@
                  "akonadi-not-relocatable.patch"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools shared-mime-info))
+     (list extra-cmake-modules qttools-5 shared-mime-info))
     (inputs
      (list boost
            kconfig
@@ -537,7 +537,7 @@ one of the APIs mentioned above.")
     (properties `((upstream-name . "calendarsupport")))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list akonadi
            akonadi-calendar
@@ -724,11 +724,11 @@ for KDE PIM.")
            ;; TODO: libkolab
            qca
            qtbase-5
-           qtdeclarative
-           qtnetworkauth
+           qtdeclarative-5
+           qtnetworkauth-5
            qtspeech
-           qtwebchannel
-           qtwebengine
+           qtwebchannel-5
+           qtwebengine-5
            qtxmlpatterns))
     (arguments
       ;; TODO: 5/45 tests fail for quite different reasons, even with
@@ -769,7 +769,7 @@ package.")
     (properties `((upstream-name . "eventviews")))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list akonadi
            akonadi-calendar
@@ -1070,9 +1070,9 @@ and retrieving certificates from LDAP servers.")
            oxygen-icons ; default icon set, required for tests
            qgpgme
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5
            sonnet))
     (arguments
      `(#:phases
@@ -1108,7 +1108,7 @@ manager from KDE.")
     (properties `((upstream-name . "mailcommon")))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules dbus gnupg qttools))
+     (list extra-cmake-modules dbus gnupg qttools-5))
     (inputs
      (list akonadi
            akonadi-contacts
@@ -1322,9 +1322,9 @@ using a Qt/KMime C++ API.")
            qca
            qgpgme
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5
            qtwebkit
            sonnet))
     (arguments
@@ -1496,7 +1496,7 @@ application \"Parts\" to be embedded as a Kontact component (or plugin).")
         (base32 "04lz3ldrr0lpy9zpsg9ja1i9gxzlcjpqcwn3g7l4jjdky4frcr2r"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules dbus qttools kdoctools))
+     (list extra-cmake-modules dbus qttools-5 kdoctools))
     (inputs
      (list akonadi
            akonadi-calendar
@@ -1620,7 +1620,7 @@ Virtual Contact File}) files to the KPeople contact management library.")
     (properties `((upstream-name . "pimcommon")))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list karchive
            akonadi
@@ -1656,7 +1656,7 @@ Virtual Contact File}) files to the KPeople contact management library.")
            libxslt
            purpose
            qtbase-5
-           qtwebengine))
+           qtwebengine-5))
     (arguments
      `(#:tests? #f)) ;; TODO tests hang
     (home-page "https://invent.kde.org/pim/pimcommon")
@@ -1678,7 +1678,7 @@ Virtual Contact File}) files to the KPeople contact management library.")
         (base32 "0j6d4sv405c3x0ww75qsww94apidsb8aaqf59akhv96zmv0vx5wy"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list grantlee
            kcodecs
@@ -1791,7 +1791,7 @@ and allows one to view/extract message formatted text in Rich Text Format.")
         (base32 "0bask561laxgkgm3rxfpyxqs6jx1l9xjk058lhycq0pik6vwhdha"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list akonadi
            akonadi-contacts
@@ -1838,7 +1838,7 @@ and allows one to view/extract message formatted text in Rich Text Format.")
         (base32 "0nvd5fqrvyb7c3g7rf1lxbbv38q9sqnhd6irgx7awwgw92inxky4"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
      (list cyrus-sasl
            ki18n
@@ -1848,9 +1848,9 @@ and allows one to view/extract message formatted text in Rich Text Format.")
            kwallet
            kwindowsystem
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine))
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5))
     (arguments
      `(#:tests? #f)) ;; TODO 6/48 tests fail
     (home-page "https://invent.kde.org/pim/libkgapi")
@@ -1873,7 +1873,7 @@ various Google services.")
         (base32 "0rijpmqyx4mrr7csik3vkfcra7kfywk6yz548fmq3ha8wa9ax8fv"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules kdoctools qttools))
+     (list extra-cmake-modules kdoctools qttools-5))
     (inputs
      (list boost
            gpgme
@@ -1931,9 +1931,9 @@ KDE using certificate-based crypto.")
            kwindowsystem
            libkdepim
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine))
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index 2317cbec5a..da6912affe 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -78,7 +78,7 @@
            kwayland ; optional
            kwindowsystem
            qtbase-5
-           qtdeclarative ; optional
+           qtdeclarative-5 ; optional
            qtx11extras))
     (home-page "https://invent.kde.org/plasma/breeze")
     (synopsis "Default KDE Plasma theme")
@@ -209,7 +209,7 @@ call it if it is not associated to a terminal.")
        ("linux-pam" ,linux-pam)
        ("logind" ,elogind)        ;optional loginctl support
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtx11extras" ,qtx11extras)
        ("solid" ,solid)
        ("wayland" ,wayland)
@@ -276,7 +276,7 @@ basic needs and easy to configure for those who want special setups.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kservice" ,kservice)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtscript" ,qtscript)
        ("qtwebkit" ,qtwebkit)
        ("qtx11extras" ,qtx11extras)
diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm
index 3fab9089f3..4e6cd1d6e1 100644
--- a/gnu/packages/kde-systemtools.scm
+++ b/gnu/packages/kde-systemtools.scm
@@ -346,7 +346,7 @@ This package is part of the KDE administration module.")
            kwidgetsaddons
            kwindowsystem
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (home-page "https://www.kde.org/applications/system/yakuake/")
     (synopsis "Quad-style terminal emulator for KDE")
diff --git a/gnu/packages/kde-utils.scm b/gnu/packages/kde-utils.scm
index ec3470aa0a..98bc8f7b86 100644
--- a/gnu/packages/kde-utils.scm
+++ b/gnu/packages/kde-utils.scm
@@ -407,7 +407,7 @@ either be created or generated from a image.")
         (base32 "03wsv83l1cay2dpcsksad124wzan7kh8zxdw1h0yicn398kdbck4"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules kdoctools qttools shared-mime-info))
+     (list extra-cmake-modules kdoctools qttools-5 shared-mime-info))
     (inputs
      (list kbookmarks
            kcmutils
@@ -531,7 +531,7 @@ remind you to take a break now and then.")
            oxygen-icons ;; default icon set
            plasma-framework
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            solid))
     (home-page "https://kde.org/applications/utilities/org.kde.smb4k")
     (synopsis "Samba (SMB) share advanced browser")
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index b56b63e784..aa742df80f 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -170,7 +170,7 @@ This package contains GUI widgets for baloo.")
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin/akregator"))
                     (qt-process-path (string-append
-                                       (assoc-ref inputs "qtwebengine")
+                                       (assoc-ref inputs "qtwebengine-5")
                                        "/lib/qt5/libexec/QtWebEngineProcess")))
                (wrap-program bin
                  `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
@@ -205,9 +205,9 @@ This package contains GUI widgets for baloo.")
            libkleo
            qgpgme
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5
            syndication))
     (home-page "https://apps.kde.org/en/akregator")
     (synopsis "KDE Feed Reader")
@@ -261,7 +261,7 @@ browser for easy news reading.")
                   `("MLT_PREFIX" ":" =
                     (,#$(this-package-input "mlt"))))))))))
     (native-inputs
-     (list extra-cmake-modules pkg-config qttools))
+     (list extra-cmake-modules pkg-config qttools-5))
     (inputs
      (list bash-minimal
            breeze                       ; make dark them available easily
@@ -285,14 +285,14 @@ browser for easy news reading.")
            mlt
            purpose
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtmultimedia
-           qtnetworkauth
-           qtquickcontrols
-           qtquickcontrols2
+           qtmultimedia-5
+           qtnetworkauth-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
            qtscript
-           qtsvg
+           qtsvg-5
            shared-mime-info))
     (home-page "https://kdenlive.org")
     (synopsis "Non-linear video editor")
@@ -318,7 +318,7 @@ projects.")
          (base32 "02ip5r67hjfpywkm3mz86n6wbqcr7996ifzfd2fyzsvm4998hi4y"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules pkg-config shared-mime-info qttools))
+     (list extra-cmake-modules pkg-config shared-mime-info qttools-5))
     (inputs
      `(("boost" ,boost)
        ("clang" ,clang)
@@ -345,9 +345,9 @@ projects.")
        ("libkomparediff2" ,libkomparediff2)
        ("oxygen-icons" ,oxygen-icons)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtquickcontrols" ,qtquickcontrols)  ;; not checked as requirement
-       ("qtquickcontrols2" ,qtquickcontrols2)  ;; not checked as requirement
+       ("qtdeclarative-5" ,qtdeclarative-5)
+       ("qtquickcontrols-5" ,qtquickcontrols-5)  ;; not checked as requirement
+       ("qtquickcontrols2-5" ,qtquickcontrols2-5)  ;; not checked as requirement
        ("qtwebkit" ,qtwebkit)
        ("threadweaver" ,threadweaver)
 
@@ -436,9 +436,9 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
                  "kdiagram-Fix-missing-link-libraries.patch"))))
     (build-system qt-build-system)
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtbase-5 qtsvg-5))
     (home-page "https://invent.kde.org/graphics/kdiagram")
     (synopsis "Libraries for creating business diagrams")
     (description "This package provides libraries for integrating business
@@ -539,9 +539,9 @@ expression library, that is used in Krita.")
            perl
            poppler-qt5
            qtbase-5
-           qtdeclarative
-           qtmultimedia
-           qtsvg
+           qtdeclarative-5
+           qtmultimedia-5
+           qtsvg-5
            qtx11extras
            quazip-0
            zlib))
@@ -577,7 +577,7 @@ features include brush stabilizers, brush engines and wrap-around mode.")
            kio
            ki18n
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtxmlpatterns))
     (home-page "https://apps.kde.org/en/massif-visualizer")
     (synopsis "Visualize massif data generated by Valgrind")
@@ -690,7 +690,7 @@ cards.")
     (inputs
      (list qtbase-5))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     (home-page "https://techbase.kde.org/Projects/Snorenotify")
     (synopsis "Qt notification framework")
     (description "Snorenotify is a multi platform Qt notification framework.
@@ -745,11 +745,11 @@ different notification systems.")
            pulseaudio-qt
            qca
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtmultimedia
-           qtquickcontrols
-           qtquickcontrols2
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
            qtx11extras))
     (home-page "https://community.kde.org/KDEConnect")
     (synopsis "Enable your devices to communicate with each other")
@@ -804,7 +804,7 @@ communicate with each other.  Here's a few things KDE Connect can do:
        ("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (inputs
      (list breeze ;for dark themes
            breeze-icons ;for icons
@@ -828,7 +828,7 @@ communicate with each other.  Here's a few things KDE Connect can do:
            kwidgetsaddons
            kxmlgui
            qtbase-5
-           qtsvg
+           qtsvg-5
            shared-mime-info
            ;; Optional.
            cfitsio
@@ -863,7 +863,7 @@ to perform data analysis.")
     (native-inputs
      (list extra-cmake-modules))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (home-page "https://phabricator.kde.org/source/kqtquickcharts/")
     (synopsis "Interactive charts for Qt Quick")
     (description
@@ -917,7 +917,7 @@ unmount drives and view them in a file manager.")
                 "0fx17s6fj1pxl1mgfrqhchk8sihkbji1x8y3nhb1r0971wzd1nsc"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list extra-cmake-modules perl python qttools kdoctools))
+     (list extra-cmake-modules perl python qttools-5 kdoctools))
     (inputs
      (list qtbase-5 karchive ki18n kio kdbusaddons))
     ;; Note: The 'hotshot2calltree' and 'pprof2calltree' scripts depend on
@@ -977,8 +977,8 @@ Python, PHP, and Perl.")
            libsndfile
            openal
            qtbase-5
-           qtdeclarative
-           qtsvg))
+           qtdeclarative-5
+           qtsvg-5))
     (home-page "https://games.kde.org/")
     (synopsis "Runtime library for kdegames")
     (description "Runtime library for kdegames")
@@ -1007,7 +1007,7 @@ Python, PHP, and Perl.")
              "-DBUILD_TOUCH=YES"
              "-DBUILD_MARBLE_TESTS=FALSE")))
     (native-inputs
-     (list extra-cmake-modules qttools))
+     (list extra-cmake-modules qttools-5))
     ;; One optional dependency missing: libwlocate.
     (inputs
      (list gpsd
@@ -1024,12 +1024,12 @@ Python, PHP, and Perl.")
            phonon
            protobuf
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtlocation
            qtserialport
-           qtsvg
-           qtwebchannel
-           qtwebengine
+           qtsvg-5
+           qtwebchannel-5
+           qtwebengine-5
            shapelib
            shared-mime-info
            zlib))
@@ -1094,8 +1094,8 @@ creating routes by drag and drop and more.")
            phonon
            poppler-qt5
            qca
-           qtdeclarative
-           qtsvg
+           qtdeclarative-5
+           qtsvg-5
            threadweaver
            kcrash
            kjs))
@@ -1216,7 +1216,7 @@ or Bonjour by other projects).")
     (build-system qt-build-system)
     (native-inputs
      (list extra-cmake-modules
-           qttools
+           qttools-5
            ;; For optional component "Survey target expression parser"
            bison
            flex
@@ -1225,7 +1225,7 @@ or Bonjour by other projects).")
            ;;("phpunit" ,phpunit)
            ))
     (inputs
-     (list qtbase-5 qtcharts qtdeclarative qtsvg))
+     (list qtbase-5 qtcharts qtdeclarative-5 qtsvg-5))
     (arguments
      `(#:tests? #f))  ;; 4/17 fail
     (home-page "https://api.kde.org/frameworks/kuserfeedback/html/")
diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm
index d96fa661d9..9f258009c6 100644
--- a/gnu/packages/kerberos.scm
+++ b/gnu/packages/kerberos.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2012, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -124,37 +124,34 @@ cryptography.")
 (define-public shishi
   (package
     (name "shishi")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/shishi/shishi-"
                           version ".tar.gz"))
-      (patches (search-patches "shishi-fix-libgcrypt-detection.patch"))
       (sha256
        (base32
-        "032qf72cpjdfffq1yq54gz3ahgqf2ijca4vl31sfabmjzq9q370d"))))
+        "14kyj7rdki2g1sj5k42y9v5ya9jar81yw483ivwa80fx2byqyycm"))))
     (build-system gnu-build-system)
     (arguments
-     '(;; This is required since we patch some of the build scripts.
-       ;; Remove first two items for the next Shishi release after 1.0.2 or
-       ;; when removing 'shishi-fix-libgcrypt-detection.patch'.
+     (list
        #:configure-flags
-       '("ac_cv_libgcrypt=yes" "--disable-static"
-         "--with-key-dir=/etc/shishi" "--with-db-dir=/var/shishi")
+       #~(list "--disable-static"
+               "--with-key-dir=/etc/shishi"
+               "--with-db-dir=/var/shishi")
        #:phases
-       (modify-phases %standard-phases
-        (add-after 'configure 'disable-automatic-key-generation
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* "Makefile"
-             (("^install-data-hook:")
-              "install-data-hook:\nx:\n"))
-            #t)))))
+       #~(modify-phases %standard-phases
+           (add-after 'configure 'disable-automatic-key-generation
+             (lambda _
+               (substitute* "Makefile"
+                (("^install-data-hook:")
+                 "install-data-hook:\nx:\n")))))))
     (native-inputs (list pkg-config))
     (inputs
      (list gnutls
            libidn
-           linux-pam-1.2
+           linux-pam
            zlib
            libgcrypt
            libtasn1))
diff --git a/gnu/packages/lego.scm b/gnu/packages/lego.scm
index 19a4a5eba0..39823dfee8 100644
--- a/gnu/packages/lego.scm
+++ b/gnu/packages/lego.scm
@@ -113,7 +113,7 @@ restrictions that stem from limitations of the standard RCX firmware.")
                 "1ifbxngkbmg6d8vv08amxbnfvlyjdwzykrjp98lbwvgb0b843ygq"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list qttools))           ; for lrelease
+     (list qttools-5))           ; for lrelease
     (inputs
      (list mesa qtbase-5 zlib))
     (arguments
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 77527b909a..f3d24343c6 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
@@ -34,6 +34,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -53,6 +54,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
@@ -89,7 +91,7 @@
 (define-public ixion
   (package
     (name "ixion")
-    (version "0.16.1")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
@@ -97,7 +99,7 @@
                            version ".tar.xz"))
        (sha256
         (base32
-         "17q84mhy4rb3masvjw24x549irdjmccnc8n04xh58v9l7hxn8v22"))))
+         "07hhqkvns4da8xv990gr1smqz1zf40m531lg95nphfrz48wp3jak"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
@@ -114,7 +116,7 @@ their dependencies automatically upon calculation.")
 (define-public orcus
   (package
     (name "orcus")
-    (version "0.16.1")
+    (version "0.17.2")
     (source
      (origin
        (method url-fetch)
@@ -122,7 +124,7 @@ their dependencies automatically upon calculation.")
                            "orcus-" version ".tar.xz"))
        (sha256
         (base32
-         "1bps34sqz7wlrl01ssywjd5fbmssplifs0rskivgrg801lr6pcm4"))))
+         "1as04qb74jnlnwy4wh5jwaw2nnzgn2s3230ymvh3kx1w9r0rsl1h"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -348,35 +350,48 @@ working with graphics in the WPG (WordPerfect Graphics) format.")
 (define-public libcmis
   (package
     (name "libcmis")
-    (version "0.5.2")
+    ;; Note: Use an unreleased version because libreoffice requires it and
+    ;; is the only user (see <https://github.com/tdf/libcmis/pull/43>).
+    (version "0.5.2-46-gf264a61")
+    (home-page "https://github.com/tdf/libcmis")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/tdf/libcmis/releases/download/v"
-                          version "/libcmis-" version ".tar.xz"))
-      (sha256
-       (base32
-        "18h0a2gsfxvlv03nlcfvw9bzsflq5sin9agq6za103hr0ab8vcfp"))))
+       (method git-fetch)
+       (uri (git-reference (url home-page)
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "06ff5vw0xrymvvna18wlaayyk20755sk2541i1gh7zpbmncs2ni6"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list cppunit pkg-config))
-    (propagated-inputs ; in Requires field of .pkg
+     (list autoconf automake libtool cppunit pkg-config))
+    (propagated-inputs                  ;in Requires field of .pkg
      (list curl libxml2))
     (inputs
      (list boost cyrus-sasl openssl))
     (arguments
-     `(#:configure-flags
-        (list
-          ;; FIXME: Man pages generation requires docbook-to-man; reenable
-          ;; it once this is available.
-          "--without-man"
-          ;; XXX: A configure test fails with GCC7 when including Boost headers.
-          "--disable-werror"
-          ;; During configure, the boost headers are found, but linking
-          ;; fails without the following flag.
-          (string-append "--with-boost="
-                         (assoc-ref %build-inputs "boost")))))
-    (home-page "https://github.com/tdf/libcmis")
+     (list
+      #:configure-flags
+      #~(list
+         ;; FIXME: Man pages generation requires docbook-to-man; reenable
+         ;; it once this is available.
+         "--without-man"
+         ;; XXX: A configure test fails with GCC7 when including Boost headers.
+         "--disable-werror"
+         ;; During configure, the boost headers are found, but linking
+         ;; fails without the following flag.
+         (string-append "--with-boost="
+                        (dirname (dirname
+                                  (search-input-directory %build-inputs
+                                                          "include/boost")))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'bootstrap
+            (lambda _
+              ;; Override the bootstrap phase as the ancient autogen.sh
+              ;; script exits with a non-zero code when NOCONFIGURE=1.
+              (invoke "autoreconf" "-vif"))))))
     (synopsis "CMIS client library")
     (description "LibCMIS is a C++ client library for the CMIS interface.  It
 allows C++ applications to connect to any ECM behaving as a CMIS server such
@@ -445,7 +460,11 @@ CorelDRAW documents of all versions.")
                "16hy60ws29pb4pz3z5l4920yn9hnk2vlij0xfs5qi1w4drd46c5l"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--with-mdds=1.5")))
+     (list #:configure-flags
+           #~(list (string-append "--with-mdds="
+                                  #$(version-major+minor
+                                     (package-version
+                                      (this-package-input "mdds")))))))
     (native-inputs
      (list cppunit doxygen gperf pkg-config))
     (propagated-inputs ; in Requires or Requires.private field of .pkg
@@ -1026,12 +1045,19 @@ and to return information on pronunciations, meanings and synonyms.")
 converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
     (license license:mpl2.0)))
 
+(define dtoa
+  (origin
+    (method url-fetch)
+    (uri "https://dev-www.libreoffice.org/src/dtoa-20180411.tgz")
+    (sha256
+     (base32 "1d0iwy0q5sjznv23d3nbwmy0r7m1mdzlnv5pc4izddkx9xld10h0"))))
+
 ;; When updating libreoffice, also make sure to update the
 ;; hunspell dictionaries! They use the libreoffice version.
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "7.1.4.2")
+    (version "7.3.5.2")
     (source
      (origin
        (method url-fetch)
@@ -1040,190 +1066,184 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
          "https://download.documentfoundation.org/libreoffice/src/"
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
        (sha256
-        (base32 "1jsskhnlyra7q6d12kkc8dxq5fgrnd8grl32bdck7j9hkwv6d13m"))))
+        (base32 "14g9873x8m5yakpq7v9f7lhc5fkxh6yhjhgh0pm30cqmxsqhsglv"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
-     `(("bison" ,bison)
-       ("cppunit" ,cppunit)
-       ("flex" ,flex)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("which" ,which)
-       ("ziptime" ,ziptime)))
+     (list bison
+           cppunit
+           flex
+           pkg-config
+           python-wrapper
+           which
+           ziptime))
     (inputs
-     `(("bluez" ,bluez)
-       ("boost" ,boost)
-       ("box2d" ,box2d)
-       ("clucene" ,clucene)
-       ("cups" ,cups)
-       ("dbus-glib" ,dbus-glib)
-       ("firebird" ,firebird)
-       ("fontconfig" ,fontconfig)
-       ("fontforge" ,fontforge)
-       ("gconf" ,gconf)
-       ("glew" ,glew)
-       ("glm" ,glm)
-       ("gnupg" ,gnupg)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gperf" ,gperf)
-       ("gpgme" ,gpgme)
-       ("graphite2" ,graphite2)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("gtk+" ,gtk+)
-       ("harfbuzz" ,harfbuzz)
-       ("hunspell" ,hunspell)
-       ("hyphen" ,hyphen)
-       ("libabw" ,libabw)
-       ("libcdr" ,libcdr)
-       ("libcmis" ,libcmis)
-       ("libjpeg-turbo" ,libjpeg-turbo)
-       ("libe-book" ,libe-book)
-       ("libepubgen" ,libepubgen)
-       ("libetonyek" ,libetonyek)
-       ("libexttextcat" ,libexttextcat)
-       ("libfreehand" ,libfreehand)
-       ("liblangtag" ,liblangtag)
-       ;; XXX: Perhaps this should be propagated from xmlsec.
-       ("libltdl" ,libltdl)
-       ("libmspub" ,libmspub)
-       ("libmwaw" ,libmwaw)
-       ("libnumbertext" ,libnumbertext)
-       ("libodfgen" ,libodfgen)
-       ("libpagemaker" ,libpagemaker)
-       ("libqxp" ,libqxp)
-       ("libstaroffice" ,libstaroffice)
-       ("libvisio" ,libvisio)
-       ("libwpg" ,libwpg)
-       ("libwps" ,libwps)
-       ("libxrandr" ,libxrandr)
-       ("libxrender" ,libxrender)
-       ("libxslt" ,libxslt)
-       ("libxt" ,libxt)
-       ("libzmf" ,libzmf)
-       ("lpsolve" ,lpsolve)
-       ("mariadb" ,mariadb "dev")
-       ("mdds" ,mdds)
-       ("mythes" ,mythes)
-       ("neon" ,neon)
-       ("nspr" ,nspr)
-       ("nss" ,nss)
-       ("openldap" ,openldap)
-       ("openssl" ,openssl)
-       ("orcus" ,orcus)
-       ("perl" ,perl)
-       ("perl-archive-zip" ,perl-archive-zip)
-       ("poppler" ,poppler)
-       ("postgresql" ,postgresql)
-       ("python" ,python)
-       ("python-lxml" ,python-lxml)
-       ("qrcodegen-cpp" ,qrcodegen-cpp)
-       ("redland" ,redland)
-       ("sane-backends" ,sane-backends)
-       ("unixodbc" ,unixodbc)
-       ("unzip" ,unzip)
-       ("vigra" ,vigra)
-       ("xdg-utils" ,xdg-utils)
-       ("xmlsec" ,xmlsec-nss)
-       ("zip" ,zip)
-       ("dtoa"              ; needed after version 6.4.7.2.
-        ,(origin
-           (method url-fetch)
-           (uri "https://dev-www.libreoffice.org/src/dtoa-20180411.tgz")
-           (sha256
-            (base32 "1d0iwy0q5sjznv23d3nbwmy0r7m1mdzlnv5pc4izddkx9xld10h0"))))))
+     (list bluez
+           boost
+           box2d
+           clucene
+           cups
+           dbus-glib
+           firebird
+           fontconfig
+           fontforge
+           gconf
+           glew
+           glm
+           gnupg
+           gobject-introspection
+           gperf
+           gpgme
+           graphite2
+           gst-plugins-base
+           gtk+
+           harfbuzz
+           hunspell
+           hyphen
+           libabw
+           libcdr
+           libcmis
+           libcuckoo
+           libjpeg-turbo
+           libe-book
+           libepubgen
+           libetonyek
+           libexttextcat
+           libfreehand
+           liblangtag
+           ;; XXX: Perhaps this should be propagated from xmlsec.
+           libltdl
+           libmspub
+           libmwaw
+           libnumbertext
+           libodfgen
+           libpagemaker
+           libqxp
+           libstaroffice
+           libvisio
+           libwpg
+           libwps
+           libxrandr
+           libxrender
+           libxslt
+           libxt
+           libzmf
+           lpsolve
+           `(,mariadb "dev")
+           mdds
+           mythes
+           neon
+           nspr
+           nss
+           openldap
+           openssl
+           orcus
+           perl
+           perl-archive-zip
+           poppler
+           postgresql
+           python
+           python-lxml
+           qrcodegen-cpp
+           redland
+           sane-backends
+           unixodbc
+           unzip
+           vigra
+           xdg-utils
+           xmlsec-nss
+           zip
+           zxing-cpp))
     (arguments
-     `(#:tests? #f                     ; Building the tests already fails.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'insert-external-tarballs
-           (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir-p "external/tarballs")
-             (copy-file (assoc-ref inputs "dtoa")
-                        "external/tarballs/dtoa-20180411.tgz")
-             #t))
-         (add-before 'configure 'prepare-src
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute*
-                 (list "sysui/CustomTarget_share.mk"
-                       "solenv/gbuild/gbuild.mk"
-                       "solenv/gbuild/platform/unxgcc.mk")
-               (("/bin/sh") (which "sh")))
+     (list
+      #:tests? #f                       ; Building the tests already fails.
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'insert-external-tarballs
+            (lambda _
+              (mkdir-p "external/tarballs")
+              (copy-file #$dtoa "external/tarballs/dtoa-20180411.tgz")))
+          (add-before 'configure 'prepare-src
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute*
+                  (list "sysui/CustomTarget_share.mk"
+                        "solenv/gbuild/gbuild.mk"
+                        "solenv/gbuild/platform/unxgcc.mk")
+                (("/bin/sh") (which "sh")))
 
-             ;; Use store references for strictly necessary commands,
-             ;; but not for optional tools like ‘gdb’ and ‘valgrind’.
-             (for-each (lambda (command)
-                         (substitute* "desktop/scripts/soffice.sh"
-                           (((format #f"~a " command))
-                            (format #f "~a " (which command)))))
-                       (list "dirname" "grep" "uname"))
+              ;; Use store references for strictly necessary commands,
+              ;; but not for optional tools like ‘gdb’ and ‘valgrind’.
+              (for-each (lambda (command)
+                          (substitute* "desktop/scripts/soffice.sh"
+                            (((format #f "~a " command))
+                             (format #f "~a " (which command)))))
+                        (list "dirname" "grep" "uname"))
 
-             ;; GPGME++ headers are installed in a gpgme++ subdirectory, but
-             ;; configure is hardcoded to use FHS directories.
-             (substitute* "configure"
-               (("GPGMEPP_CFLAGS=-I/usr")
-                (string-append "GPGMEPP_CFLAGS=-I"
-                               (assoc-ref inputs "gpgme"))))
+              ;; GPGME++ headers are installed in a gpgme++ subdirectory, but
+              ;; configure is hardcoded to use FHS directories.
+              (substitute* "configure"
+                (("GPGMEPP_CFLAGS=-I/usr/include/gpgme\\+\\+")
+                 (string-append "GPGMEPP_CFLAGS=-I"
+                                (search-input-directory inputs
+                                                        "include/gpgme++"))))
 
-             ;; /usr/bin/xdg-open doesn't exist on Guix System.
-             (substitute* '("shell/source/unix/exec/shellexec.cxx"
-                            "shell/source/unix/misc/senddoc.sh")
-               (("/usr/bin/xdg-open")
-                (search-input-file inputs "/bin/xdg-open")))))
-         (add-after 'install 'reset-zip-timestamps
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each (lambda (file)
-                           (invoke "ziptime" file))
-                         ;; So many different extensions for .zip files.
-                         (find-files out "\\.(bau|dat|otp|ott|zip)$")))))
-         (add-after 'install 'bin-and-desktop-install
-           ;; Create 'soffice' and 'libreoffice' symlinks to the executable
-           ;; script.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (define (symlink-output src dst)
-                 (mkdir-p (dirname (string-append out dst)))
-                 (symlink (string-append out src) (string-append out dst)))
-               (define (install src dst)
-                 (let ((dst (string-append out dst)))
-                   (mkdir-p (dirname dst))
-                   (copy-file src dst)))
-               (define (install-desktop-file app)
-                 (let ((src (string-append "/lib/libreoffice/share/xdg/"
-                                           app ".desktop"))
-                       (dst (string-append "/share/applications/libreoffice-"
-                                           app ".desktop")))
-                   (substitute* (string-append out src)
-                     (("Exec=libreoffice[0-9]+\\.[0-9]+ ")
-                      (string-append "Exec=" out "/bin/libreoffice "))
-                     (("Icon=libreoffice.*")
-                      (string-append "Icon=" app "\n"))
-                     (("LibreOffice [0-9]+\\.[0-9]+")
-                      "LibreOffice"))
-                   (symlink-output src dst)))
-               (define (install-appdata app)
-                 (install-file (string-append
-                                "sysui/desktop/appstream-appdata/"
-                                "libreoffice-" app ".appdata.xml")
-                               (string-append out "/share/appdata")))
-               (symlink-output "/lib/libreoffice/program/soffice"
-                               "/bin/soffice")
-               (symlink-output "/lib/libreoffice/program/soffice"
-                               "/bin/libreoffice")
-               (install
-                "workdir/CustomTarget/sysui/share/libreoffice/openoffice.org.xml"
-                "/share/mime/packages/libreoffice.xml")
-               (for-each install-desktop-file
-                         '("base" "calc" "draw" "impress" "writer"
-                           "math" "startcenter"))
-               (for-each install-appdata
-                         '("base" "calc" "draw" "impress" "writer"))
-               (mkdir-p (string-append out "/share/icons/hicolor"))
-               (copy-recursively "sysui/desktop/icons/hicolor"
-                                 (string-append out "/share/icons/hicolor")))
-             #t)))
-       #:configure-flags
-       (list
+              ;; /usr/bin/xdg-open doesn't exist on Guix System.
+              (substitute* '("shell/source/unix/exec/shellexec.cxx"
+                             "shell/source/unix/misc/senddoc.sh")
+                (("/usr/bin/xdg-open")
+                 (search-input-file inputs "/bin/xdg-open")))))
+          (add-after 'install 'reset-zip-timestamps
+            (lambda _
+              (for-each (lambda (file)
+                          (invoke "ziptime" file))
+                        ;; So many different extensions for .zip files.
+                        (find-files #$output "\\.(bau|dat|otp|ott|zip)$"))))
+      (add-after 'install 'bin-and-desktop-install
+        ;; Create 'soffice' and 'libreoffice' symlinks to the executable
+        ;; script.
+        (lambda _
+          (let ((out #$output))
+            (define (symlink-output src dst)
+              (mkdir-p (dirname (string-append out dst)))
+              (symlink (string-append out src) (string-append out dst)))
+            (define (install src dst)
+              (let ((dst (string-append out dst)))
+                (mkdir-p (dirname dst))
+                (copy-file src dst)))
+            (define (install-desktop-file app)
+              (let ((src (string-append "/lib/libreoffice/share/xdg/"
+                                        app ".desktop"))
+                    (dst (string-append "/share/applications/libreoffice-"
+                                        app ".desktop")))
+                (substitute* (string-append out src)
+                  (("Exec=libreoffice[0-9]+\\.[0-9]+ ")
+                   (string-append "Exec=" out "/bin/libreoffice "))
+                  (("Icon=libreoffice.*")
+                   (string-append "Icon=" app "\n"))
+                  (("LibreOffice [0-9]+\\.[0-9]+")
+                   "LibreOffice"))
+                (symlink-output src dst)))
+            (define (install-appdata app)
+              (install-file (string-append
+                             "sysui/desktop/appstream-appdata/"
+                             "libreoffice-" app ".appdata.xml")
+                            (string-append out "/share/appdata")))
+            (symlink-output "/lib/libreoffice/program/soffice"
+                            "/bin/soffice")
+            (symlink-output "/lib/libreoffice/program/soffice"
+                            "/bin/libreoffice")
+            (install
+             "workdir/CustomTarget/sysui/share/libreoffice/openoffice.org.xml"
+             "/share/mime/packages/libreoffice.xml")
+            (for-each install-desktop-file
+                      '("base" "calc" "draw" "impress" "writer"
+                        "math" "startcenter"))
+            (for-each install-appdata
+                      '("base" "calc" "draw" "impress" "writer"))
+            (mkdir-p (string-append out "/share/icons/hicolor"))
+            (copy-recursively "sysui/desktop/icons/hicolor"
+                              (string-append out "/share/icons/hicolor"))))))
+     #:configure-flags
+     #~(list
         "--enable-release-build"
         "--with-vendor=GNU Guix"
         ;; Avoid using all cpu cores by default
@@ -1231,7 +1251,9 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
         "--disable-fetch-external"      ; disable downloads
         "--with-system-libs"            ; enable all --with-system-* flags
         (string-append "--with-boost-libdir="
-                       (assoc-ref %build-inputs "boost") "/lib")
+                       (dirname
+                        (search-input-file %build-inputs
+                                           "lib/libboost_system.so")))
         ;; Avoid undefined symbols required by boost::spirit
         "LDFLAGS=-lboost_system"
         ;; Avoid a dependency on ucpp.
@@ -1253,11 +1275,11 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
         "--disable-pdfium"
         "--without-doxygen"
         "--enable-build-opensymbol")))
-    (home-page "https://www.libreoffice.org/")
-    (synopsis "Office suite")
-    (description "LibreOffice is a comprehensive office suite.  It contains
+  (home-page "https://www.libreoffice.org/")
+  (synopsis "Office suite")
+  (description "LibreOffice is a comprehensive office suite.  It contains
 a number of components: Writer, a word processor; Calc, a spreadsheet
 application; Impress, a presentation engine; Draw, a drawing and
 flowcharting application; Base, a database and database frontend;
 Math for editing mathematics.")
-    (license license:mpl2.0)))
+  (license license:mpl2.0)))
diff --git a/gnu/packages/libunwind.scm b/gnu/packages/libunwind.scm
index 8b9f800711..5e690cf21c 100644
--- a/gnu/packages/libunwind.scm
+++ b/gnu/packages/libunwind.scm
@@ -54,4 +54,6 @@ state of each call-frame and to resume execution at any point in the
 call-chain (non-local goto).  The API supports both local (same-process) and
 remote (across-process) operation.  As such, the API is useful in a number of
 applications.")
-    (license x11)))
+    ;; Do not believe <https://savannah.nongnu.org/projects/libunwind/>:
+    ;; see <https://github.com/libunwind/libunwind/issues/372>.
+    (license expat)))
diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 504b494563..7b5efeb588 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -843,7 +843,7 @@ and video calls or instant messaging capabilities to an application.")
                (symlink (string-append liblinphone "/share/belr/grammars")
                         grammar-dest)))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list bctoolbox
            belcard
@@ -852,11 +852,11 @@ and video calls or instant messaging capabilities to an application.")
            mediastreamer2
            ortp
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg))
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5))
     (synopsis "Desktop client for the Linphone SIP softphone")
     (description "Linphone is a SIP softphone for voice and video over IP calling
 (VoIP) and instant messaging.  Amongst its features are:
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7c900b21dd..3de751e789 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -60,7 +60,7 @@
 ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
 ;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca>
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;; Copyright © 2022 Rene Saavedra <nanuui@protonmail.com>
 
@@ -352,7 +352,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The current "stable" kernels. That is, the most recently released major
 ;; versions that are still supported upstream.
 
-(define-public linux-libre-5.18-version "5.18.14")
+(define-public linux-libre-5.18-version "5.18.16")
 (define-public linux-libre-5.18-gnu-revision "gnu")
 (define deblob-scripts-5.18
   (linux-libre-deblob-scripts
@@ -362,7 +362,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0vjpn8iw9yg39sr6jfhzyvivf159h9zfgnjamwa283zfll0h0a53")))
 (define-public linux-libre-5.18-pristine-source
   (let ((version linux-libre-5.18-version)
-        (hash (base32 "1bsnk2rskdkimciij5q3hjs00lc7ks1h1qh9kc4s7lrk252lczg1")))
+        (hash (base32 "1khi1npn8d8jimwdy8bf3r7l780mxdmvk5azdv419pk33qjqdxgi")))
    (make-linux-libre-source version
 
                             (%upstream-linux-source version hash)
@@ -371,7 +371,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.15-version "5.15.57")
+(define-public linux-libre-5.15-version "5.15.59")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
@@ -381,12 +381,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "129qlhwdv2mfb85gbvq03kkbdfp73b444rryr4rrbvi0jmq4cp24")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "1zgh43pgn8fsyxzksfw6llxqw6fc8qassfn9a18k2xn83xd0kqv2")))
+        (hash (base32 "1jxw6fnc7yaw7r6193wy6l8wdlpy3frw48drnc3dnh3k0m1cdpg6")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.133")
+(define-public linux-libre-5.10-version "5.10.135")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
@@ -396,12 +396,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1981axxswghza3iadp94q54y8w30h9w9vyq4cbjiiv9alvbv0pb8")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "03i84g3pfh24f10zsdyyqyv9fhy01ah9lk02y48hqwnabdylqp1v")))
+        (hash (base32 "0i1kahv739qpyyml7d7sx306nv7gp55i5d97vlb0fryfx4dsd6g4")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.207")
+(define-public linux-libre-5.4-version "5.4.209")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
@@ -411,12 +411,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1vnjbdyssa7dwyjl9kg35alwvf7yh597cl74yr1wy2gk5bc9paw6")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1wwpd26qhv6i00p0yxjisns6qiz9bfrxvn1xb4ylwr8ls7zyx78v")))
+        (hash (base32 "1kdnz99k7zspzaxqaxahbf6hncigy4cvjlb79jsy7a95qxxr31qf")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.253")
+(define-public linux-libre-4.19-version "4.19.254")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
@@ -426,12 +426,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "1jc2j0wskgr1bdzpz6sn2bvafpviiin6mwr93yykcczzfjijr8yz")))
+        (hash (base32 "1rd40wmdaymbly2zvf60mjqsflkd4n1y232qz0ixn1rfl28yz62i")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.289")
+(define-public linux-libre-4.14-version "4.14.290")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
@@ -441,12 +441,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1v24mv49skgijcbafgai0glrzwiv2j1hndkz7v6ygc18jxh5fqg6")))
+        (hash (base32 "0zyxb99a7fa2l85vnzmvg2nry99clj20d4j38piqm921iqxak2j4")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.324")
+(define-public linux-libre-4.9-version "4.9.325")
 (define-public linux-libre-4.9-gnu-revision "gnu1")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
@@ -456,7 +456,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0bib3641dbcqdkx3anna3caxnsg3nw9cnmhcklq0s93g3m57041h")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0g51vfp0g3py82l3q66p7nvl03h6l1nlny18gangji75a3c39yh4")))
+        (hash (base32 "04msx0x0d8v93zjr3jj0qqkgg7m4hb7rj6hk5vzrzasmgbjmb3dl")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
@@ -1342,6 +1342,37 @@ battery charging thresholds, keyboard backlight, fans and thermal monitors,
 and the notification, WiFi, and Bluetooth LED.")
     (license license:gpl2)))
 
+(define-public lkrg
+  (package
+    (name "lkrg")
+    (version "0.9.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lkrg-org/lkrg")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0yirb7n4mqv8cn0gziz1m7ymq00dhhy79j59jdgrx00b8rj57cfw"))))
+    (build-system linux-module-build-system)
+    (arguments
+     (list #:linux linux-libre
+           #:tests? #f
+           #:make-flags #~(list (string-append "CC="
+                                               #$(cc-for-target))
+                                (string-append "SYSSRC="
+                                               (assoc-ref %build-inputs
+                                                "linux-module-builder")
+                                               "/lib/modules/build"))))
+    (inputs (list bash-minimal))
+    (home-page "https://lkrg.org/")
+    (synopsis "Linux Kernel Runtime Guard")
+    (description
+     "This package performs runtime integrity checking of the Linux kernel and
+detection of security vulnerability exploits against the kernel.")
+    (license license:gpl2)))
+
 (define-public rtl8821ce-linux-module
   (let ((commit "be733dc86781c68571650b395dd0fa6b53c0a039")
         (revision "6"))
@@ -1630,21 +1661,6 @@ be used through the PAM API to perform tasks, like authenticating a user
 at login.  Local and dynamic reconfiguration are its key features.")
     (license license:bsd-3)))
 
-(define-public linux-pam-1.2
-  (package
-    (inherit linux-pam)
-    (version "1.2.1")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append
-            "http://www.linux-pam.org/library/"
-            "Linux-PAM-" version ".tar.bz2"))
-      (sha256
-       (base32
-        "1n9lnf9gjs72kbj1g354v1xhi2j27aqaah15vykh7cnkq08i4arl"))
-      (patches (search-patches "linux-pam-no-setfsuid.patch"))))))
-
 (define-public python-pamela
   (package
     (name "python-pamela")
@@ -2344,7 +2360,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 (define-public strace
   (package
     (name "strace")
-    (version "5.15")
+    (version "5.18")
     (home-page "https://strace.io")
     (source (origin
              (method url-fetch)
@@ -2352,7 +2368,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
                                  "/strace-" version ".tar.xz"))
              (sha256
               (base32
-               "1p3jipp6mj5fwfcjdnp6xhxk84z07jy5qhjlqr6jjdbk54pw5jpb"))
+               "11qi7pdm0ldycsg9qhsa50icm219mmvy16yw1ih3s9f9kakkwab0"))
              (patches (search-patches "strace-readlink-tests.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -2382,6 +2398,8 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
     (description
      "strace is a system call tracer, i.e. a debugging tool which prints out a
 trace of all the system calls made by a another process/program.")
+    (properties
+     '((release-monitoring-url . "https://github.com/strace/strace/releases")))
     (license license:lgpl2.1+)))
 
 (define-public ltrace
@@ -3254,8 +3272,11 @@ or kill them altogether.")
               (sha256
                (base32
                 "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh"))
-              (patches (search-patches "fuse-overlapping-headers.patch"))))
+              (patches (search-patches "fuse-overlapping-headers.patch"
+                                       "fuse-glibc-2.34.patch"))))
     (build-system gnu-build-system)
+    (native-inputs
+     (list autoconf automake gettext-minimal libtool))
     (inputs
      (list bash-minimal util-linux))
     (arguments
@@ -3272,6 +3293,10 @@ or kill them altogether.")
                                               "/lib/udev/rules.d"))
        #:phases
        (modify-phases %standard-phases
+         (add-before 'bootstrap 'force-bootstrap
+           (lambda _
+             ;; Force a bootstrap to make the patch changes effective.
+             (delete-file "configure")))
          (add-before 'build 'set-file-names
            (lambda* (#:key inputs #:allow-other-keys)
              ;; libfuse calls out to mount(8) and umount(8).  Make sure
@@ -3451,20 +3476,25 @@ UnionFS-FUSE additionally supports copy-on-write.")
 (define-public sshfs
   (package
     (name "sshfs")
-    (version "2.10")
+    (version "3.7.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libfuse/sshfs/releases/"
                                   "download/sshfs-" version "/sshfs-" version
-                                  ".tar.gz"))
+                                  ".tar.xz"))
               (sha256
                (base32
-                "00fir2iykdx11g8nv5gijg0zjrp2g3ldypnv0yi6lq3h5pg5v13h"))))
-    (build-system gnu-build-system)
+                "169fkilv060afgp9h7hvsbkg02bd1y77kmx06x0s7q1cvmxww62j"))))
+    (build-system meson-build-system)
+    (arguments
+     ;; XXX: tests are skipped: FUSE kernel module does not seem to be loaded
+     '(#:tests? #f))
     (inputs
-     (list fuse glib))
+     (list fuse-3 glib))
     (native-inputs
-     (list pkg-config))
+     (list pkg-config
+           ;; man page
+           python-docutils))
     (home-page "https://github.com/libfuse/sshfs")
     (synopsis "Mount remote file systems over SSH")
     (description
@@ -5159,16 +5189,15 @@ arrays when needed.")
 (define-public multipath-tools
   (package
     (name "multipath-tools")
-    (version "0.8.5")
+    (version "0.9.0")
+    (home-page "https://github.com/opensvc/multipath-tools")
     (source (origin
               (method git-fetch)
-              (uri (git-reference
-                    (url "https://git.opensvc.com/multipath-tools/.git")
-                    (commit version)))
+              (uri (git-reference (url home-page) (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gipg0z79h76j0f449cx4wcrfsv69ravjlpphsac11h302g3nrvg"))
+                "09m3vs798qb3xk0v7s3hy0nhw0dznkxjb56671kqj961h7zhg47b"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -5177,80 +5206,64 @@ arrays when needed.")
                   (substitute* '("multipathd/main.c"
                                  "libmultipath/debug.c")
                     (("#include \"../third-party/")
-                     "#include \""))
-                  #t))))
+                     "#include \""))))))
     (build-system gnu-build-system)
     (arguments
-     '(#:test-target "test"
-       #:parallel-build? #f             ;XXX: broken in 0.8.4
-       #:make-flags (list "CC=gcc"
-                          (string-append "DESTDIR="
-                                         (assoc-ref %outputs "out"))
-                          ;; Install Udev rules below this directory, relative
-                          ;; to the prefix.
-                          "SYSTEMDPATH=lib"
-                          (string-append "LDFLAGS=-Wl,-rpath="
-                                         (assoc-ref %outputs "out")
-                                         "/lib"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((lvm2 (assoc-ref inputs "lvm2"))
-                   (udev (assoc-ref inputs "udev")))
-               (substitute* "Makefile.inc"
-                 (("\\$\\(prefix\\)/usr") "$(prefix)")
-                 ;; Do not save timestamp to avoid gzip "timestamp
-                 ;; out-of-range" warnings.
-                 (("gzip -9") "gzip -9n"))
-               (substitute* '("kpartx/Makefile" "libmultipath/Makefile")
-                 (("/usr/include/libdevmapper.h")
-                  (string-append lvm2 "/include/libdevmapper.h"))
-                 (("/usr/include/libudev.h")
-                  (string-append udev "/include/libudev.h")))
-               #t)))
-         (add-after 'unpack 'fix-maybe-uninitialized-variable
-           (lambda _
-             ;; This variable gets initialized later if needed, but GCC 7
-             ;; fails to notice.  Should be fixed for > 0.8.4.
-             ;; https://www.redhat.com/archives/dm-devel/2020-March/msg00137.html
-             (substitute* "libmultipath/structs_vec.c"
-               (("bool is_queueing;")
-                "bool is_queueing = false;"))
-             #t))
-         (add-after 'unpack 'fix-linking-tests
-           (lambda _
-             ;; Add missing linker flag for -lmpathcmd.  This should be fixed
-             ;; for versions > 0.8.4.
-             (substitute* "tests/Makefile"
-               (("-lmultipath -lcmocka")
-                "-lmultipath -L$(mpathcmddir) -lmpathcmd -lcmocka"))
-             #t))
-         (add-after 'unpack 'skip-failing-tests
-           (lambda _
-             ;; This test and the module's setup() test an arbitrary block
-             ;; device node name, but the build environment has none.
-             (substitute* "tests/devt.c"
-               (("return get_one_devt.*") "return 0;\n")
-               (("cmocka_unit_test\\(test_devt2devname_devt_good\\),") ""))
-             ;; The above triggers -Werror=unused-function.  Ignore it.
-             (substitute* "tests/Makefile"
-               (("CFLAGS \\+= " match)
-                (string-append match "-Wno-error=unused-function ")))
-             #t))
-         (delete 'configure))))         ; no configure script
+     (list
+      #:test-target "test"
+      #:parallel-build? #f              ;XXX: broken since 0.8.4
+      #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                           (string-append "DESTDIR=" #$output)
+                           ;; Install Udev rules below this directory, relative
+                           ;; to the prefix.
+                           "SYSTEMDPATH=lib")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((libdevmapper.h
+                     (search-input-file inputs "include/libdevmapper.h"))
+                    (libudev.h
+                     (search-input-file inputs "include/libudev.h")))
+                (substitute* "Makefile.inc"
+                  (("/bin/echo") "echo")
+                  (("\\$\\(prefix\\)/usr") "$(prefix)")
+                  ;; Do not save timestamp to avoid gzip "timestamp
+                  ;; out-of-range" warnings.
+                  (("gzip -9") "gzip -9n"))
+                (substitute* '("kpartx/Makefile" "libmultipath/Makefile")
+                  (("/usr/include/libdevmapper.h") libdevmapper.h)
+                  (("/usr/include/libudev.h") libudev.h)))))
+          (add-after 'unpack 'skip-failing-tests
+            (lambda _
+              ;; This test and the module's setup() test an arbitrary block
+              ;; device node name, but the build environment has none.
+              (substitute* "tests/devt.c"
+                (("return get_one_devt.*") "return 0;\n")
+                (("cmocka_unit_test\\(test_devt2devname_devt_good\\),") ""))
+              ;; The above triggers -Werror=unused-function.  Ignore it.
+              (substitute* "tests/Makefile"
+                (("CFLAGS \\+= " match)
+                 (string-append match "-Wno-error=unused-function ")))))
+          (delete 'configure)           ;no configure script
+          (add-before 'build 'set-LDFLAGS
+            (lambda _
+              ;; Note: this cannot be passed as a make flag because that will
+              ;; override the build system LDFLAGS.
+              (setenv "LDFLAGS"
+                      (string-append "-Wl,-rpath=" #$output "/lib")))))))
+
     (native-inputs
      (list perl pkg-config valgrind
            ;; For tests.
            cmocka))
     (inputs
-     `(("json-c" ,json-c)
-       ("libaio" ,libaio)
-       ("liburcu" ,liburcu)
-       ("lvm2" ,lvm2)
-       ("readline" ,readline)
-       ("udev" ,eudev)))
-    (home-page "http://christophe.varoqui.free.fr/")
+     (list json-c
+           libaio
+           liburcu
+           lvm2
+           readline
+           eudev))
     (synopsis "Access block devices through multiple paths")
     (description
      "This package provides the following binaries to drive the
@@ -5262,8 +5275,8 @@ Linux Device Mapper multipathing driver:
 @code{dm} multipath devices.
 @item @command{kpartx} - Create device maps from partition tables.
 @end enumerate")
-    (license (list license:gpl2+             ; main distribution
-                   license:lgpl2.0+))))      ; libmpathcmd/mpath_cmd.h
+    (license (list license:gpl2+        ;main distribution
+                   license:lgpl2.0+)))) ;libmpathcmd/mpath_cmd.h
 
 (define-public libaio
   (package
@@ -6078,14 +6091,14 @@ invocations of itself.")
 (define-public ntfs-3g
   (package
     (name "ntfs-3g")
-    (version "2021.8.22")
+    (version "2022.5.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://tuxera.com/opensource/"
                                   "ntfs-3g_ntfsprogs-" version ".tgz"))
               (sha256
                (base32
-                "1yrf42xr92qv3pads8lzp5nyssz6875ncfgg8v3jwjyr0nm87f2m"))
+                "14zbsl7m32f796dkr334zbkj5rba7xa8smxb2ysf3095jyvgp284"))
               (modules '((guix build utils)))
               (snippet '(begin
                           ;; Install under $prefix.
@@ -6124,6 +6137,9 @@ invocations of itself.")
      "NTFS-3G provides read-write access to NTFS file systems, which are
 commonly found on Microsoft Windows.  It is implemented as a FUSE file system.
 The package provides additional NTFS tools.")
+    (properties
+     '((release-monitoring-url . "https://github.com/tuxera/ntfs-3g/releases")
+       (upstream-name . "ntfs-3g_ntfsprogs")))
     (license license:gpl2+)))
 
 (define-public ntfs-3g/static
@@ -6584,6 +6600,65 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
 @code{modprobe}, @code{insmod}, @code{lsmod}, and more.")
     (license license:gpl2+)))
 
+(define-public mce-inject
+  (let ((revision "0")                  ; no git tags :-/
+        (commit "4cbe46321b4a81365ff3aafafe63967264dbfec5"))
+    (package
+      (name "mce-inject")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0gjapg2hrlxp8ssrnhvc19i3r1xpcnql7xv0zjgbv09zyha08g6z"))))
+      (build-system gnu-build-system)
+      (arguments
+       ;; There is no test suite.  There's a test/ directory, but it just holds
+       ;; example text files you could feed to the programme to crash something.
+       (list #:tests? #f
+             #:make-flags
+             #~(list (string-append "prefix=" #$output)
+                     (string-append "CC=" #$(cc-for-target)))
+             #:phases
+             #~(modify-phases %standard-phases
+                 (delete 'configure)    ; no configure script
+                 (add-after 'install 'install-examples
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let* ((out (assoc-ref outputs "out"))
+                            (doc (string-append out "/share/doc/" #$name))
+                            (dir (string-append doc "/examples")))
+                       (copy-recursively "test" dir )))))))
+      (native-inputs
+       (list bison flex))
+      (supported-systems (list "i686-linux" "x86_64-linux"))
+      (home-page
+       "https://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git/about/")
+      (synopsis
+       "Inject x86 @acronym{MCEs, machine-check exceptions} into Linux")
+      (description
+       "This simple tool injects fake @acronym{MCEs, machine-check exceptions}
+into a running Linux kernel, to debug or test the kernel's @acronym{EDAC, error
+detection and correction}-handling code specific to x86 and x86_64 platforms.
+
+Real MCEs are internal CPU errors.  Handling them correctly can be important to
+system stability and even prevent physical damage.  In contrast, simulated MCEs
+produced by @command{mce-inject} are purely synthetic: injection happens only at
+the software level, inside the kernel, and is not visible to the platform
+hardware or firmware.
+
+A convenient feature of @command{mce-inject} is that the input language used to
+describe MCEs is similar to the format used in Linux panic messages, with a few
+extensions.  In general, you should be able to pipe in any logged MCE panic to
+simulate that same MCE.
+
+The target kernel must have the @code{CONFIG_X86_MCE_INJECT} option enabled and
+the @code{mce-inject} module loaded if it exists.")
+      (license license:gpl2))))
+
 (define-public mcelog
   (package
     (name "mcelog")
@@ -6630,7 +6705,7 @@ exceeded.")
 (define-public mtd-utils
   (package
     (name "mtd-utils")
-    (version "2.1.2")
+    (version "2.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -6638,12 +6713,14 @@ exceeded.")
                     "mtd-utils-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a"))))
+                "168vyzpfa0n66i8lcf626b9jczjr81rqbdk7735lfb18bp8i2rrc"))))
     (arguments
      (list #:configure-flags
            (if (%current-target-system) ; When cross-compiling.
              #~(list)
-             #~(list "--enable-unit-tests"))))
+             #~(list "--enable-unit-tests"))
+
+           #:parallel-tests? #f))     ;tests may fail when running in parallel
     (native-inputs
      (list cmocka pkg-config))
     (inputs
@@ -8249,7 +8326,7 @@ IP addresses and routes, and configure IPsec.")
 (define-public libinih
   (package
     (name "libinih")
-    (version "55")
+    (version "56")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8258,7 +8335,7 @@ IP addresses and routes, and configure IPsec.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0g6dkcphlzgxvh9zyf6rj82gigccca6x5acjxn01gz6rykfg0lnn"))))
+                "1fjqvf56yij15lgwj58dcmxlq5n98gzpbss0nnn1d2i5j7gf4kgf"))))
     (build-system meson-build-system)
     ;; Install static libraries for use by the initrd's xfsprogs/static.
     (outputs (list "out" "static"))
@@ -8793,7 +8870,7 @@ persistent over reboots.")
 (define-public libbpf
   (package
     (name "libbpf")
-    (version "0.1.1")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -8803,28 +8880,26 @@ persistent over reboots.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ilnnm4q22f8fagwp8kb37licy4ks861i2iqh2djsypqhnxvx3fv"))))
+         "1zzpkk4x3f20483dzw43b3ml03d63vvkmqf4j8y3b61b67wm59bm"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
     (propagated-inputs
      ;; In Requires.private of libbpf.pc.
-     (list libelf zlib))
+     (list elfutils zlib))
     (arguments
      `(#:tests? #f                      ; no tests
        #:make-flags
        (list
         (string-append "PREFIX=" (assoc-ref %outputs "out"))
         (string-append "LIBDIR=$(PREFIX)/lib")
-        (string-append
-         "CC=" (assoc-ref %build-inputs "gcc") "/bin/gcc"))
+        (string-append "CC=" ,(cc-for-target)))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before 'build 'pre-build
            (lambda _
-             (chdir "src")
-             #t)))))
+             (chdir "src"))))))
     (home-page "https://github.com/libbpf/libbpf")
     (synopsis "BPF CO-RE (Compile Once – Run Everywhere)")
     (description
@@ -8836,7 +8911,7 @@ headers.")
 (define-public bcc
   (package
     (name "bcc")
-    (version "0.16.0")
+    (version "0.24.0")
     (source
      (origin
        (method git-fetch)
@@ -8846,7 +8921,7 @@ headers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1367c0bzrpclvjvmk0sxgi49rh7j2f9izqk5a7g3yvawh1fmvvjh"))))
+         "1i6xikkxf2nasfkqa91hjzdq0a88mgyzrvia4fi2i2v1d8pbmnp4"))))
     (build-system cmake-build-system)
     (native-inputs
      (list bison flex))
@@ -8916,7 +8991,7 @@ and above.")
 (define-public bpftrace
   (package
     (name "bpftrace")
-    (version "0.11.4")
+    (version "0.15.0")
     (source
      (origin
        (method git-fetch)
@@ -8925,13 +9000,13 @@ and above.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0y4qgm2cpccrsm20rnh92hqplddqsc5q5zhw9nqn2igm3h9i0z7h"))
+        (base32 "022fg0kiz0liahj82wvlxmivkwyp86shs5fwr2v4blx7lh05k9zm"))
        (patches (search-patches "bpftrace-disable-bfd-disasm.patch"))))
     (build-system cmake-build-system)
     (native-inputs
      (list bison flex))
     (inputs
-     (list bcc clang-toolchain-9 elfutils libbpf))
+     (list bcc clang-toolchain-9 elfutils libbpf cereal))
     (arguments
      `(#:tests? #f ;Tests require googletest sources.
        #:configure-flags
@@ -9021,7 +9096,7 @@ then IP sets may be the proper tool for you.")
 (define-public liburing
   (package
     (name "liburing")
-    (version "0.7")
+    (version "2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9030,7 +9105,7 @@ then IP sets may be the proper tool for you.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15z44l7y4c6s6dlf7v8lq4znlsjbja2r4ifbni0l8cdcnq0w3zh3"))))
+                "1677zqqbd9nw9hrdaxqbd1zwy54cxfsv2z0bjipn23mrkz2xzy1k"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Tests are dependent on kernel version and features
@@ -9237,3 +9312,57 @@ libraries are found or why they cannot be located.")
 gestures you make on your touchpad or touchscreen into visible actions in your
 desktop.")
     (license license:gpl3+)))
+
+(define-public evtest
+  (package
+    (name "evtest")
+    (version "1.35")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.freedesktop.org/libevdev/evtest")
+                    (commit (string-append "evtest-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "164prnw35kda6jfykl7h52lfzy99ma2lk029zscyqk766k19spf4"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f ;No tests exist
+           #:make-flags #~(list (string-append "CC="
+                                               #$(cc-for-target))
+                                (string-append "PREFIX="
+                                               #$output))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'generate-doc
+                          (lambda _
+                            (invoke "asciidoc" "-d" "manpage"
+                                    "-b" "docbook"
+                                    "-o" "evtest.1.xml"
+                                    "evtest.txt")
+                            (invoke "xsltproc" "--nonet"
+                                    (string-append
+                                     #$(this-package-native-input "docbook-xsl")
+                                     "/xml/xsl/docbook-xsl-"
+                                     #$(package-version
+                                        (this-package-native-input "docbook-xsl"))
+                                     "/manpages/docbook.xsl")
+                                    "evtest.1.xml")))
+                        (replace 'bootstrap
+                          (lambda _
+                            (setenv "CONFIG_SHELL" (which "sh"))
+                            (invoke "autoreconf" "-fi"))))))
+    (native-inputs (list autoconf
+                         automake
+                         bash-minimal
+                         xmlto
+                         docbook-xsl
+                         libxslt
+                         asciidoc))
+    (home-page "https://gitlab.freedesktop.org/libevdev/evtest")
+    (synopsis "Kernel evdev device information and monitor")
+    (description
+     "@code{evtest} is a tool to print @code{evdev} kernel events.  It reads
+directly from the kernel device and prints a device description and the events
+with the value and the symbolic name.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/lisp-check.scm b/gnu/packages/lisp-check.scm
index 39f7d8ca61..8c850ee850 100644
--- a/gnu/packages/lisp-check.scm
+++ b/gnu/packages/lisp-check.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2019, 2020, 2021 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
@@ -116,8 +116,7 @@ designed to embed randomized tests in whatever framework you like.")
        ;; Error while trying to load definition for system checkl-test from
        ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
        ;; is undefined.
-       '(#:asd-files '("checkl.asd")
-         #:tests? #f))
+       '(#:tests? #f))
       (native-inputs
        (list sbcl-fiveam))
       (inputs
@@ -881,8 +880,7 @@ interactive development.")
              sbcl-mgl-pax
              sbcl-trivial-gray-streams))
       (arguments
-       `(#:asd-files '("try.asdf.asd" "try.asd")
-         ;; FIXME: Get tests to work
+       `(;; FIXME: Get tests to work
          #:tests? #f))
       (home-page "https://github.com/melisgl/try")
       (synopsis "Common Lisp test framework")
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 51d74bd8af..03e474831d 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2018, 2020, 2021 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018, 2020, 2021, 2022 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
@@ -266,12 +266,6 @@ implementation with no external dependencies.")
       (native-inputs
        `(("fare-utils" ,sbcl-fare-utils)
          ("hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
-      (arguments
-       `(#:asd-files '("asdf-finalizers.asd"
-                       "list-of.asd"
-                       "asdf-finalizers-test.asd")
-         #:asd-systems '("asdf-finalizers"
-                         "list-of")))
       (home-page "https://gitlab.common-lisp.net/asdf/asdf-finalizers")
       (synopsis "Enforced calling of finalizers for Lisp code")
       (description "This library allows you to implement and enforce proper
@@ -366,7 +360,6 @@ or cl-launch for portable processing of command-line arguments.")
           (base32 "1b3nqbb4pj377lxl47rfgrs82pidadnrc65l48bk553c2f59b52w"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
-       ;; Tests only.
        (list sbcl-rt))
       (inputs
        `(("cl+ssl" ,sbcl-cl+ssl)
@@ -374,10 +367,7 @@ or cl-launch for portable processing of command-line arguments.")
          ("split-sequence" ,sbcl-split-sequence)
          ("usocket" ,sbcl-usocket)))
       (arguments
-       `(#:asd-systems '("cl-irc") ;; Some inexisting "c" system is
-                                   ;; found by guix otherwise.
-         #:asd-files '("cl-irc.asd")
-         #:test-asd-file "test/cl-irc-test.asd"))
+       `(#:asd-test-systems '("cl-irc-test")))
       (synopsis "IRC client library for Common Lisp")
       (description "@code{cl-irc} is a Common Lisp IRC client library that
 features (partial) DCC, CTCP and all relevant commands from the IRC
@@ -868,8 +858,7 @@ ANSI-compliant Common Lisp implementations.")
     (inputs
      (list sbcl-cl-ppcre sbcl-cl-unicode))
     (arguments
-     `(#:tests? #f ; tests fail with "Component :CL-PPCRE-TEST not found"
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'disable-ppcre
            ;; cl-ppcre and cl-ppcre-unicode are put in different packages
@@ -997,8 +986,11 @@ anti-aliased vectorial paths.")
            "11rhc6h501dwcik2igkszz7b9n515cr99m5pjh4r2qfwgiri6ysa"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       '(#:tests? #f           ; spatial-trees.test requires spatial-trees.nns
-         #:test-asd-file "spatial-trees.test.asd"))
+       ;; We cannot build "spatial-trees-viz" here because it depends on
+       ;; mcclim which depends on spatial-trees.  FIXME: Break the circle.
+       '(#:asd-systems '("spatial-trees" "spatial-trees.nns")))
+      (inputs
+       (list sbcl-alexandria sbcl-optima sbcl-iterate))
       (native-inputs
        (list sbcl-fiveam))
       (home-page "https://github.com/rpav/spatial-trees")
@@ -1450,8 +1442,7 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
         (base32 "0jsqah1znzqilxnw5vannb083ayk0d7phkackqzwwqkyg5hpn6pq"))))
     (build-system asdf-build-system/sbcl)
     (arguments
-     '(#:asd-files '("trivial-features.asd")
-       ;; FIXME: Tests disabled because of a circular dependency between
+     '(;; FIXME: Tests disabled because of a circular dependency between
        ;; trivial-features and cffi.
        #:tests? #f))
     ;; (native-inputs
@@ -2383,9 +2374,7 @@ processes that doesn't run under Emacs.  Lisp processes created by
              sbcl-pythonic-string-reader
              sbcl-slime-swank))
       (arguments
-       `(#:asd-files '("mgl-pax.asdf.asd"
-                       "mgl-pax.asd")
-         #:asd-systems '("mgl-pax"
+       `(#:asd-systems '("mgl-pax"
                          "mgl-pax/navigate"
                          "mgl-pax/document"
                          "mgl-pax/transcribe")
@@ -3032,11 +3021,6 @@ is statically typed so there are differences.")
                            (string-append
                             (assoc-ref outputs "out")
                             "/include/grovel")))))
-       #:asd-files '("cffi.asd"
-                     "cffi-toolchain.asd"
-                     "cffi-grovel.asd"
-                     "cffi-libffi.asd"
-                     "cffi-uffi-compat.asd")
        #:asd-systems '("cffi"
                        "cffi-libffi"
                        "cffi-uffi-compat")))
@@ -3397,16 +3381,7 @@ Lisp implementations.")
          ("trivial-features" ,sbcl-trivial-features)
          ("trivial-garbage" ,sbcl-trivial-garbage)))
       (arguments
-       `(#:asd-files '("gtk/cl-cffi-gtk.asd"
-                       "glib/cl-cffi-gtk-glib.asd"
-                       "gobject/cl-cffi-gtk-gobject.asd"
-                       "gio/cl-cffi-gtk-gio.asd"
-                       "cairo/cl-cffi-gtk-cairo.asd"
-                       "pango/cl-cffi-gtk-pango.asd"
-                       "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
-                       "gdk/cl-cffi-gtk-gdk.asd")
-         #:test-asd-file "test/cl-cffi-gtk-test.asd"
-         ;; TODO: Tests fail with memory fault.
+       `(;; TODO: Tests fail with memory fault.
          ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
          #:tests? #f
          #:phases
@@ -4534,12 +4509,6 @@ addition, removal, and random selection.")
        (sha256
         (base32 "1wrrhbj3r4lph5y3hhfbv4g2pvg24hbgl06irq9lyiycy3bgai4w"))))
     (build-system asdf-build-system/sbcl)
-    (arguments
-     ;; Test system must be loaded before, otherwise tests fail with:
-     ;; Component QURI-ASD::QURI-TEST not found, required by #<SYSTEM
-     ;; "quri">.
-     '(#:asd-systems '("quri-test"
-                       "quri")))
     (native-inputs (list sbcl-prove))
     (inputs (list sbcl-babel sbcl-split-sequence sbcl-cl-utilities
                   sbcl-alexandria))
@@ -4777,8 +4746,7 @@ Only minimal changes required to make your CLOS objects serializable.")
       ;; Error while trying to load definition for system fast-io-test from
       ;; pathname [...]/fast-io-test.asd: The function CHECKL:DEFINE-TEST-OP
       ;; is undefined.
-      '(#:tests? #f
-        #:asd-files '("fast-io.asd")))
+      '(#:tests? #f))
      (native-inputs
       (list sbcl-fiveam sbcl-checkl))
      (inputs
@@ -4797,6 +4765,45 @@ streams (though primarily the former, while wrapping the latter).")
 (define-public ecl-fast-io
   (sbcl-package->ecl-package sbcl-fast-io))
 
+(define-public sbcl-legion
+  (let ((commit "599cca19f0e34246814621f7fe90322221c2e263")
+        (revision "1"))
+    (package
+     (name "sbcl-legion")
+     (version (git-version "0.1.1" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/legion/")
+             (commit commit)))
+       (file-name (git-file-name "cl-legion" version))
+       (sha256
+        (base32 "0583pw0mf8bd4dj42w2xrlzcwfkl8q28n1bh8dpxxfg93crx4si6"))))
+     (build-system asdf-build-system/sbcl)
+     (native-inputs
+      (list sbcl-prove sbcl-local-time))
+     (inputs
+      (list
+       sbcl-bordeaux-threads
+       sbcl-cl-speedy-queue
+       sbcl-vom))
+     (home-page "https://github.com/fukamachi/legion")
+     (synopsis "Simple multithreading worker mechanism for Common Lisp")
+     (description
+      "This library provides a simple multithreading worker mechanism.")
+     (license license:bsd-3))))
+
+(define-public cl-legion
+  (sbcl-package->cl-source-package sbcl-legion))
+
+(define-public ecl-legion
+  (package
+    (inherit (sbcl-package->ecl-package sbcl-legion))
+    (arguments
+     ;; Tests get stuck forever
+     (list #:tests? #f))))
+
 (define-public sbcl-jonathan
   (let ((commit "1f448b4f7ac8265e56e1c02b32ce383e65316300")
         (revision "1"))
@@ -4813,12 +4820,8 @@ streams (though primarily the former, while wrapping the latter).")
        (sha256
         (base32 "14x4iwz3mbag5jzzzr4sb6ai0m9r4q4kyypbq32jmsk2dx1hi807"))))
      (build-system asdf-build-system/sbcl)
-     (arguments
-      ;; Tests fail with: Component JONATHAN-ASD::JONATHAN-TEST not found,
-      ;; required by #<SYSTEM "jonathan">. Why?
-      `(#:tests? #f))
      (native-inputs
-      (list sbcl-prove))
+      (list sbcl-prove sbcl-legion))
      (inputs
       (list sbcl-cl-syntax sbcl-fast-io sbcl-proc-parse sbcl-cl-ppcre))
      (home-page "https://rudolph-miller.github.io/jonathan/overview.html")
@@ -4947,7 +4950,6 @@ reset to 0 and you're able to read it again.")
                          "lack-util"
                          "lack-middleware-backtrace"
                          "lack-middleware-static")
-         #:test-asd-file "t-lack.asd"
          ;; XXX: Component :CLACK not found
          #:tests? #f))
       (home-page "https://github.com/fukamachi/lack")
@@ -5675,8 +5677,6 @@ whole lot more into a single form.")
           (base32
            "01wsr1aap3jdzhn4hrqjbhsjx6qci9dbd3gh4gayv1p49rbg8aqr"))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       `(#:test-asd-file "test/fare-utils-test.asd"))
       (native-inputs
        (list sbcl-hu.dwim.stefil))
       (synopsis "Collection of utilities and data structures")
@@ -5887,12 +5887,7 @@ formats.")
        ("split-sequence" ,sbcl-split-sequence)
        ("swap-bytes" ,sbcl-swap-bytes)))
     (arguments
-     '(#:asd-files '("iolib.asdf.asd"
-                     "iolib.conf.asd"
-                     "iolib.common-lisp.asd"
-                     "iolib.base.asd"
-                     "iolib.asd")
-       #:asd-systems '("iolib"
+     '(#:asd-systems '("iolib"
                        "iolib/os")
        #:phases
        (modify-phases %standard-phases
@@ -6075,11 +6070,6 @@ XSD type library.")
        (list sbcl-alexandria))
       (native-inputs
        (list sbcl-prove))
-      (arguments
-       ;; FIXME: Test fails with the following, why?
-       ;; Component "cl-reexport-test" not found, required by
-       ;; #<SYSTEM "cl-reexport-test">
-       `(#:tests? #f))
       (synopsis "Reexport external symbols in other Common Lisp packages")
       (description
        "Cl-reexport makes a package reexport symbols which are external
@@ -6223,10 +6213,6 @@ neat APIs and connection-pooling.  It is meant to supersede Drakma.")
        `(("alexandria" ,sbcl-alexandria)))
       (native-inputs
        (list sbcl-fiveam))
-      (arguments
-       `(#:test-asd-file "lisp-namespace.test.asd"
-        ;; XXX: Component LISP-NAMESPACE-ASD::LISP-NAMESPACE.TEST not found
-         #:tests? #f))
       (synopsis "LISP-N, or extensible namespaces in Common Lisp")
       (description "Common Lisp already has major 2 namespaces, function
 namespace and value namespace (or variable namespace), but there are actually
@@ -6378,8 +6364,6 @@ to support this, especially for reasoning on types, are also included.")
          ("trivia.trivial" ,sbcl-trivia.trivial)))
       (native-inputs
        (list sbcl-fiveam))
-      (arguments
-       `(#:test-asd-file "type-i.test.asd"))
       (synopsis "Type inference utility on unary predicates for Common Lisp")
       (description "This library tries to provide a way to detect what kind of
 type the given predicate is trying to check.  This is different from inferring
@@ -6421,8 +6405,7 @@ the return type of a function.")
        (list sbcl-eos))
       (arguments
        ;; XXX: Circular dependencies: tests depend on optima.ppcre which depends on optima.
-       `(#:tests? #f
-         #:test-asd-file "optima.test.asd"))
+       `(#:tests? #f))
       (synopsis "Optimized pattern matching library for Common Lisp")
       (description "Optima is a fast pattern matching library which uses
 optimizing techniques widely used in the functional programming world.")
@@ -6560,7 +6543,6 @@ be faster and more extensible than Optima.")
                        "trivia.quasiquote"
                        "trivia.cffi"
                        "trivia.fset")
-       #:test-asd-file "trivia.test.asd"
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-build
@@ -6635,8 +6617,7 @@ various string metrics in Common Lisp:
     (native-inputs
      (list sbcl-prove))
     (arguments
-     `(#:asd-systems '("str")
-       #:test-asd-file "str.test.asd"))
+     `(#:asd-systems '("str")))
     (synopsis "Modern, consistent and terse Common Lisp string manipulation library")
     (description "A modern and consistent Common Lisp string manipulation
 library that focuses on modernity, simplicity and discoverability:
@@ -7032,8 +7013,7 @@ which implements a set of utilities.")
       (inputs
        `(("metatilities-base" ,sbcl-metatilities-base)))
       (arguments
-       '(#:asd-files '("cl-containers.asd")
-         #:phases
+       '(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'relax-version-checks
              (lambda _
@@ -7085,9 +7065,6 @@ decisions becomes significantly easier.")
          ("cl-containers" ,sbcl-cl-containers)
          ("local-time" ,sbcl-local-time)
          ("periods" ,sbcl-periods)))
-      (arguments
-       '(#:asd-files '("fprog.asd"
-                       "cambl.asd")))
       (synopsis "Commoditized amounts and balances for Common Lisp")
       (description
        "CAMBL is a Common Lisp library providing a convenient facility for
@@ -7429,9 +7406,6 @@ of C+GObject libraries without the need of writing dedicated bindings.")
          (sha256
           (base32 "1asdq6xllmsvfw5fky9wblqcx9isac9jrrlkfl7vyxcq1wxrnflx"))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       `(#:asd-files '("cl-slug-test.asd" "cl-slug.asd")
-         #:asd-systems '("cl-slug-test" "cl-slug")))
       (native-inputs
        (list sbcl-prove))
       (inputs
@@ -7790,7 +7764,7 @@ forms in parallel.")
     (native-inputs
      (list sbcl-xlunit))
     (arguments
-     `(#:test-asd-file "cl-heap-tests.asd"))
+     '(#:asd-test-systems '("cl-heap-tests")))
     (synopsis "Heap and priority queue data structures for Common Lisp")
     (description
      "CL-HEAP provides various implementations of heap data structures (a
@@ -8762,7 +8736,17 @@ continuations of the @code{cl-cont} library.")
           (base32 "11fcnd03ybzz37rkg3z0wsb727yqgcd9gn70sccfb34l89ia279k"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       `(#:test-asd-file "test.vas-string-metrics.asd"))
+       '(#:asd-test-systems '("test.vas-string-metrics")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-test-asd
+             (lambda _
+               (substitute* "test.vas-string-metrics.asd"
+                 ((":depends-on")
+                  (string-append
+                   ":perform (test-op (op c) (symbol-call :vas-string-metrics :run-tests))"
+                   "\n"
+                   "  :depends-on"))))))))
       (home-page "https://github.com/vsedach/vas-string-metrics")
       (synopsis "String distance algorithms for Common Lisp")
       (description
@@ -9595,12 +9579,7 @@ them as PNG files.")
       (native-inputs
        (list sbcl-fiveam))
       (arguments
-       `(#:test-asd-file "hdf5-cffi.test.asd"
-         ;; Tests depend on hdf5-cffi.examples.asd in addition to hdf5-cffi.asd,
-         ;; I don't know if there is a way to tell asdf-build-system to load
-         ;; an additional system first, so tests are disabled.
-         #:tests? #f
-         #:phases
+       `(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'fix-paths
              (lambda* (#:key inputs #:allow-other-keys)
@@ -9782,9 +9761,7 @@ the elements in compound type specifier, e.g. @code{dimensions} in
        `(("trivia" ,sbcl-trivia)
          ("alexandria" ,sbcl-alexandria)))
       (native-inputs
-       (list sbcl-fiveam))
-      (arguments
-       `(#:test-asd-file "type-r.test.asd")))))
+       (list sbcl-fiveam)))))
 
 (define-public cl-type-r
   (sbcl-package->cl-source-package sbcl-type-r))
@@ -9824,8 +9801,7 @@ correctly.")
       (native-inputs
        (list sbcl-fiveam))
       (arguments
-       `(#:asd-systems '("trivialib.type-unify")
-         #:test-asd-file "trivialib.type-unify.test.asd")))))
+       `(#:asd-systems '("trivialib.type-unify"))))))
 
 (define-public cl-trivialib-type-unify
   (sbcl-package->cl-source-package sbcl-trivialib-type-unify))
@@ -9907,10 +9883,7 @@ code.  The main target of this macro is speed.")
          ("trivial-cltl2" ,sbcl-trivial-cltl2)
          ("type-r" ,sbcl-type-r)))
       (native-inputs
-       (list sbcl-fiveam))
-      (arguments
-       `(#:asd-files '("specialized-function.asd")
-         #:test-asd-file "specialized-function.test.asd")))))
+       (list sbcl-fiveam)))))
 
 (define-public cl-specialized-function
   (sbcl-package->cl-source-package sbcl-specialized-function))
@@ -9947,10 +9920,7 @@ additional form that is considered as a candidate for a constant.")
          ("iterate" ,sbcl-iterate)
          ("lisp-namespace" ,sbcl-lisp-namespace)))
       (native-inputs
-       (list sbcl-fiveam))
-      (arguments
-       `(#:asd-files '("constantfold.asd")
-         #:test-asd-file "constantfold.test.asd")))))
+       (list sbcl-fiveam)))))
 
 (define-public cl-constantfold
   (sbcl-package->cl-source-package sbcl-constantfold))
@@ -9988,10 +9958,7 @@ type correctness in Common Lisp.  It is based on CLtL2 extensions.")
          ("iterate" ,sbcl-iterate)
          ("type-r" ,sbcl-type-r)))
       (native-inputs
-       (list sbcl-fiveam))
-      (arguments
-       `(#:asd-files '("gtype.asd")
-         #:test-asd-file "gtype.test.asd")))))
+       (list sbcl-fiveam)))))
 
 (define-public cl-gtype
   (sbcl-package->cl-source-package sbcl-gtype))
@@ -10022,9 +9989,7 @@ type correctness in Common Lisp.  It is based on CLtL2 extensions.")
           (base32 "15m4spbgayawnw5jjz04zfp0jnk9g6hgq5fmr648hzjzj50j1d78"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       `(#:test-asd-file "numcl.test.asd"
-         #:asd-files '("numcl.asd")
-         ;; Tests often fail because they require a dynamic-space-size much
+       `(;; Tests often fail because they require a dynamic-space-size much
          ;; bigger than the default one. Disable them for now.
          #:tests? #f))
       (native-inputs
@@ -10099,8 +10064,8 @@ lightweight messaging kernel.")
   (sbcl-package->ecl-package sbcl-pzmq))
 
 (define-public sbcl-clss
-  (let ((revision "1")
-        (commit "2a8e8615ab55870d4ca01928f3ed3bbeb4e75c8d"))
+  (let ((revision "2")
+        (commit "f62b849189c5d1be378f0bd3d403cda8d4fe310b"))
     (package
       (name "sbcl-clss")
       (version (git-version "0.3.1" revision commit))
@@ -10112,7 +10077,7 @@ lightweight messaging kernel.")
            (url "https://github.com/Shinmera/clss")
            (commit commit)))
          (sha256
-          (base32 "0la4dbcda78x29szanylccrsljqrn9d1mhh569sqkyp44ni5fv91"))
+          (base32 "1033dchpanhcgxl5qfhr80aw9adbp9bvllhzvvy5p9mrfnidd1fv"))
          (file-name (git-file-name name version))))
       (inputs
        (list sbcl-array-utils sbcl-plump))
@@ -10412,7 +10377,6 @@ interface for MySQL, PostgreSQL and SQLite.")
     (build-system asdf-build-system/sbcl)
     (arguments
      `(#:tests? #f ; TODO: Fix use of deprecated ASDF functions
-       #:asd-files '("uffi.asd")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-permissions
@@ -10487,13 +10451,8 @@ interface for MySQL, PostgreSQL and SQLite.")
        ("uffi" ,sbcl-uffi)
        ("zlib" ,zlib)))
     (arguments
-     `(#:asd-files '("clsql.asd"
-                     "clsql-uffi.asd"
-                     "clsql-sqlite3.asd"
-                     "clsql-postgresql.asd"
-                     "clsql-postgresql-socket3.asd"
-                     "clsql-mysql.asd")
-       #:asd-systems '("clsql"
+     `(#:asd-systems '("clsql"
+                       "clsql-uffi"
                        "clsql-sqlite3"
                        "clsql-postgresql"
                        "clsql-postgresql-socket3"
@@ -10596,8 +10555,8 @@ interfaces as well as a functional and an object oriented interface.")
        (alist-delete "uffi" (package-inputs pkg)))
       (arguments
        (substitute-keyword-arguments (package-arguments pkg)
-         ((#:asd-files asd-files '())
-          `(cons "clsql-cffi.asd" ,asd-files)))))))
+         ((#:asd-systems asd-systems '())
+          `(cons "clsql-cffi" ,asd-systems)))))))
 
 (define-public sbcl-sycamore
   (let ((commit "fd2820fec165ad514493426dea209728f64e6d18"))
@@ -10788,10 +10747,6 @@ camelCase, PascalCase, snake_case, param-case, CONSTANT_CASE and more.")
          (sha256
           (base32 "1zys29rfkb649rkgl3snxhajk8d5yf7ryxkrwy020kwdh7zdsg7d"))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       `(#:test-asd-file "modularize-test-module.asd"
-         #:asd-files '("modularize.asd" "modularize-test-module.asd")
-         #:asd-systems '("modularize" "modularize-test-module")))
       (inputs
        `(("documentation-utils" ,sbcl-documentation-utils)
          ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames)))
@@ -10996,6 +10951,58 @@ accompaniment to the standard ANSI facilities.")
 (define-public ecl-clx-xembed
   (sbcl-package->ecl-package sbcl-clx-xembed))
 
+(define-public sbcl-mw-equiv
+  (let ((commit "3ae871458685b1ef7cd6a996ee22c8c5e738a03d")
+        (revision "1"))
+    (package
+      (name "sbcl-mw-equiv")
+      (version (git-version "0.1.2" revision commit))
+      (home-page "https://github.com/sharplispers/mw-equiv/")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sharplispers/mw-equiv/")
+               (commit commit)))
+         (file-name (git-file-name "cl-mw-equiv" version))
+         (sha256
+          (base32 "1fl90wp0jp7l90mps53fq0kzb28f10qfr739527h03xwqccyylad"))))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "Extensible object equivalence protocol for Common Lisp")
+      (description "Common Lisp comes with quite some functions to compare
+objects for equality, yet none is applicable in every situation and in general
+this is hard, as equality of objects depends on the semantics of operations on
+them.  As consequence, users find themselves regularly in a situation where
+they have to roll their own specialized equality test.
+
+This module provides one of many possible equivalence relations between
+standard Common Lisp objects.  However, it can be extended for new objects
+through a simple CLOS protocol.  The rules when two objects are considered
+equivalent distinguish between @emph{mutating} and @emph{frozen objects}.  A
+frozen object is promised not to be mutated in the future in a way that
+operations on it can notice the difference.
+
+We have chosen to compare mutating objects only for identity (pointer
+equality), to avoid various problems.  Equivalence for frozen objects on the
+other hand is established by recursing on the objects' constituent parts and
+checking their equivalence.  Hence, two objects are equivalent under the
+@code{OBJECT=} relation, if they are either identical, or if they are frozen
+and structurally equivalent, i.e. their constituents are point-wise
+equivalent.
+
+Since many objects are potentially mutable, but are not necessarily mutated
+from a certain point in their life time on, it is possible to promise to the
+equivalence relation that they remain frozen for the rest of their life time,
+thus enabling coarser equivalence than the often too fine-grained pointer
+equality.")
+      (license license:bsd-2))))
+
+(define-public cl-mw-equiv
+  (sbcl-package->cl-source-package sbcl-mw-equiv))
+
+(define-public ecl-mw-equiv
+  (sbcl-package->ecl-package sbcl-mw-equiv))
+
 (define-public sbcl-quantile-estimator
   (package
     (name "sbcl-quantile-estimator")
@@ -11012,9 +11019,11 @@ accompaniment to the standard ANSI facilities.")
          "0rlswkf0siaabsvvch3dgxmg45fw5w8pd9b7ri2w7a298aya52z9"))))
     (build-system asdf-build-system/sbcl)
     (arguments
-     '(#:asd-files '("quantile-estimator.asd")))
+     '(#:asd-test-systems '("quantile-estimator.test")))
     (inputs
-     `(("alexandria" ,sbcl-alexandria)))
+     (list sbcl-alexandria))
+    (native-inputs
+     (list sbcl-mw-equiv sbcl-prove sbcl-log4cl))
     (home-page "https://github.com/deadtrickster/quantile-estimator.cl")
     (synopsis
      "Effective computation of biased quantiles over data streams")
@@ -11059,13 +11068,7 @@ Streams in ICDE’05.")
        ("split-sequence" ,sbcl-split-sequence)
        ("trivial-utf-8" ,sbcl-trivial-utf-8)))
     (arguments
-     '(#:asd-files '("prometheus.asd"
-                     "prometheus.collectors.sbcl.asd"
-                     "prometheus.collectors.process.asd"
-                     "prometheus.formats.text.asd"
-                     "prometheus.exposers.hunchentoot.asd"
-                     "prometheus.pushgateway.asd")
-       #:asd-systems '("prometheus"
+     '(#:asd-systems '("prometheus"
                        "prometheus.collectors.sbcl"
                        "prometheus.collectors.process"
                        "prometheus.formats.text"
@@ -11459,10 +11462,6 @@ format.")
       (inputs
        `(("cl-libsvm-format" ,sbcl-cl-libsvm-format)
          ("cl-store" ,sbcl-cl-store)))
-      (arguments
-       `(#:test-asd-file "cl-online-learning-test.asd"
-         #:asd-systems '("cl-online-learning-test"
-                         "cl-online-learning")))
       (home-page "https://github.com/masatoi/cl-online-learning")
       (synopsis "Online Machine Learning for Common Lisp")
       (description
@@ -11499,8 +11498,7 @@ online linear classification written in Common Lisp.")
              #t))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       `(#:asd-files '("cl-mpg123.asd" "cl-mpg123-example.asd")
-         #:asd-systems '("cl-mpg123" "cl-mpg123-example")
+       `(#:asd-systems '("cl-mpg123" "cl-mpg123-example")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'fix-paths
@@ -12099,8 +12097,6 @@ both from files on disk, or streams in memory.")
              sbcl-retrospectiff
              sbcl-skippy
              sbcl-zpng))
-      (arguments
-       '(#:asd-files '("opticl.asd")))
       (home-page "https://github.com/slyrus/opticl")
       (synopsis "Image processing library for Common Lisp")
       (description
@@ -12477,8 +12473,7 @@ hu.dwim systems.")
              ;; ("hu.dwim.stefil" ,cl-hu.dwim.stefil)
              sbcl-hu.dwim.asdf))
       (arguments
-       `(#:test-asd-file "hu.dwim.defclass-star.test.asd"
-         ;; Tests require a circular dependency: hu.dwim.stefil -> hu.dwim.def
+       `(;; Tests require a circular dependency: hu.dwim.stefil -> hu.dwim.def
          ;; -> hu.dwim.util -> hu.dwim.defclass-star.
          #:tests? #f))
       (home-page "https://github.com/hu-dwim/hu.dwim.defclass-star")
@@ -12820,8 +12815,7 @@ that and not limited to a certain server or text format.")
          ("prove" ,sbcl-prove)))
       (arguments
        ;; Tests depend on caveman, which in turns depends on cl-project.
-       '(#:tests? #f
-         #:asd-files '("cl-project.asd")))
+       '(#:tests? #f))
       (synopsis "Generate a skeleton for modern Common Lisp projects")
       (description "This library provides a modern project skeleton generator.
 In contract with other generators, CL-Project generates one package per file
@@ -12868,12 +12862,7 @@ can begin writing unit tests as soon as the project is generated.")
          ("trivial-types" ,sbcl-trivial-types)
          ("prove" ,sbcl-prove)))
       (arguments
-       `(#:asd-files '("caveman2.asd"
-                       "caveman2-db.asd"
-                       "caveman2-test.asd"
-                       "caveman-middleware-dbimanager.asd")
-         #:test-asd-file "caveman2-test.asd"
-         #:asd-systems '("caveman2"
+       `(#:asd-systems '("caveman2"
                          "caveman2-db"
                          "caveman2-test"
                          "caveman-middleware-dbimanager")
@@ -13127,8 +13116,7 @@ mostly not found in other utility packages.")
           (base32 "1k4mvrpbqqds2fwjxp1bxmrfmr8ch4dkwhnkbw559knbqshvrlj5"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       '(#:asd-files '("cl-custom-hash-table.asd")
-         #:asd-systems '("cl-custom-hash-table")))
+       '(#:asd-systems '("cl-custom-hash-table")))
       (home-page "https://github.com/metawilm/cl-custom-hash-table")
       (synopsis "Custom hash tables for Common Lisp")
       (description "This library allows creation of hash tables with arbitrary
@@ -13391,10 +13379,6 @@ predictable cross-platform behavior and some utilities useful for versioning.")
          (sha256
           (base32 "07pfkibaridihg8lbq2czwa4iqifqk24n6rx7bfnv7i49p1ppja1"))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       `(#:test-asd-file "deploy-test.asd"
-         #:asd-files '("deploy.asd"
-                       "deploy-test.asd")))
       (native-inputs
        `(("cl-mpg123" ,sbcl-cl-mpg123)
          ("cl-out123" ,sbcl-cl-out123)))
@@ -15098,8 +15082,7 @@ attributes not supported by the Common Lisp standard functions.")
       ;; Due to the age of this library tests use some deprecated
       ;; functionality and keep failing.
       (arguments
-       '(#:tests? #f
-         #:asd-files '("cl-difflib.asd")))
+       '(#:tests? #f))
       (home-page "https://github.com/wiseman/cl-difflib")
       (synopsis "Compute differences between pairs of sequences")
       (description
@@ -15715,8 +15698,6 @@ immediately.")
     (inputs
      `(("cl-fad" ,sbcl-cl-fad)
        ("html-template" ,sbcl-html-template)))
-    (arguments
-     '(#:asd-files '("quickproject.asd")))
     (home-page "https://xach.com/lisp/quickproject/")
     (synopsis "Create Common Lisp project skeletons")
     (description
@@ -15821,7 +15802,7 @@ compiled foreign library collection.")
      ;; failing test where it's in use.
      (arguments
       '(#:tests? #f
-        #:asd-files '("cl-conspack.asd")))
+        #:asd-test-systems '("cl-conspack-test")))
      (native-inputs
       (list sbcl-checkl))
      (inputs
@@ -16971,8 +16952,7 @@ Common Lisp without any C library bindings.")
       (arguments
        ;; FIXME: (Sharlatan-20210523T184237+0100): Tests require `femlisp', which
        ;; is quite chunky not packaged system yet, enable them when it's packed.
-       `(#:tests? #f
-         #:test-asd-file "parser-combinators-tests.asd"))
+       `(#:tests? #f))
       ;; (native-inputs
       ;;  `(("hu.dwim.stefil" ,sbcl-hu.dwim.stefil)
       ;;    ("infix" ,sbcl-femlisp)))
@@ -17277,11 +17257,9 @@ needed.  The low-level command API is fully mapped however.")
          (sha256
           (base32 "0ysw1kwiqlf8kzllhnz8v3q40dmvwf83fzq8bfkbmwy5hfjh3pxp"))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       ;; FIXME: (Sharlatan-20210527T203118+0100): FLOW-VISUALIZER requires
-       ;; COMMONQT which is not packed yet and required tweaks with QT. Remove
-       ;; this when it's ready.
-       `(#:asd-files '("flow.asd")))
+      ;; FIXME: (Sharlatan-20210527T203118+0100): FLOW-VISUALIZER requires
+      ;; COMMONQT which is not packed yet and required tweaks with QT. Remove
+      ;; this when it's ready.
       (inputs
        `(("closer-mop" ,sbcl-closer-mop)
          ("documentation-utils" ,sbcl-documentation-utils)))
@@ -17410,8 +17388,6 @@ coverage.")
        (sha256
         (base32 "0izbw2advqm3wailj3dpq6zqfrfirwn14pw5qmqh8i71r51xwmm2"))))
      (build-system asdf-build-system/sbcl)
-     (arguments
-      `(#:asd-files '("cepl.asd" "cepl.build.asd")))
      (inputs
       `(("alexandria" ,sbcl-alexandria)
         ("bordeaux-threads" ,sbcl-bordeaux-threads)
@@ -17809,8 +17785,7 @@ Lisp.")
           (base32 "04519rg8vc782z097dzlb8nx0skab2fy2zd0m60r6mz2nw8xdvh6"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       `(#:test-asd-file "cl-posix-mqueue-tests.asd"
-         #:phases
+       `(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'patch-librt-path
              (lambda* (#:key inputs #:allow-other-keys)
@@ -17857,8 +17832,7 @@ to setup.")
           (base32 "1nm35kvigflfjlmsa8zwdajc61f02fh4sq08jv0wnqylhx8yg2bv"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       (list #:test-asd-file "glop-test.asd"
-             #:phases
+       (list #:phases
              #~(modify-phases %standard-phases
                  (add-after 'unpack 'patch-lib-paths
                    (lambda* (#:key inputs #:allow-other-keys)
@@ -18072,35 +18046,7 @@ tested (as shown in the examples).")
                (substitute* "evdev-cffi.lisp"
                  (("libevdev.so" all)
                   (string-append (assoc-ref inputs "libevdev")
-                                 "/lib/" all)))))
-           ;; Here we use a custom build phase to work around a compilation bug.
-           ;; Using 'asdf:compile-system' fails, but using 'asdf:load-system'
-           ;; succeeds (and also compiles the system).
-           ;; See https://github.com/Shirakumo/cl-gamepad/issues/8
-           (replace 'build
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (source-path (string-append out
-                                                  "/share/common-lisp/"
-                                                  (%lisp-type)))
-                      (translations `((,source-path
-                                       :**/ :*.*.*)
-                                      (,(string-append out
-                                                       "/lib/common-lisp/"
-                                                       (%lisp-type))
-                                       :**/ :*.*.*))))
-                 (setenv "ASDF_OUTPUT_TRANSLATIONS"
-                         (format #f "~S" `(:output-translations
-                                           ,translations
-                                           :inherit-configuration)))
-                 (setenv "HOME" (assoc-ref outputs "out"))
-                 (with-directory-excursion (string-append source-path
-                                                          "/cl-gamepad")
-                   (invoke (%lisp-type)
-                           "--eval" "(require :asdf)"
-                           "--eval" "(asdf:load-asd (truename \"cl-gamepad.asd\"))"
-                           "--eval" "(asdf:load-system :cl-gamepad)"
-                           "--eval" "(quit)"))))))))
+                                 "/lib/" all))))))))
       (inputs
        `(("cffi" ,sbcl-cffi)
          ("documentation-utils" ,sbcl-documentation-utils)
@@ -20158,10 +20104,6 @@ reference.")
       (inputs
        `(("cl-base64" ,sbcl-cl-base64)
          ("cl-base58" ,sbcl-cl-base58)))
-      ;; Load order matters for tests, both for file reading and evaluation.
-      (arguments
-       `(#:asd-systems '("bit-smasher-test" "bit-smasher")
-         #:asd-files '("bit-smasher.asd" "bit-smasher-test.asd")))
       (home-page "https://github.com/thephoeron/bit-smasher/")
       (synopsis "Handle bit vectors, bit vector arithmetic, and type conversions")
       (description
@@ -20215,8 +20157,7 @@ decimals, and hexadecimal notation.")
       (native-inputs
        (list sbcl-fiveam))
       (arguments
-       `(#:asd-files '("overlord.asd")
-         #:phases
+       `(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'include-overlord/net
              (lambda _
@@ -20974,9 +20915,6 @@ rendering of the XML Infoset.")
            (base32 "0yiybl7b9x1f85v0drj0yw9821y3yfhya4n6gycnv5vvx6jp9by4"))
           (file-name (git-file-name "cl-asd-generator" commit))))
       (build-system asdf-build-system/sbcl)
-      (arguments
-       `(#:asd-systems '("asd-generator")
-         #:asd-files '("asd-generator.asd")))
       (inputs
        (list sbcl-cl-fad
              sbcl-iterate
@@ -21456,8 +21394,19 @@ implementation for Common Lisp.")
           (base32 "1048f6prz2lp859nxwcgghn6n38pc2pb580azzxpdhfcdi0034mj"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       '(#:asd-files '("src/com.inuoe.jzon.asd" "test/com.inuoe.jzon-tests.asd")
-         #:asd-systems '("com.inuoe.jzon" "com.inuoe.jzon-tests")))
+       '(#:asd-systems '("com.inuoe.jzon")
+         #:asd-test-systems '("com.inuoe.jzon-tests")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-test-asd
+             (lambda _
+               (substitute* "test/com.inuoe.jzon-tests.asd"
+                 ((":depends-on")
+                  (string-append
+                   ":perform (test-op (op c) (symbol-call :fiveam :run!"
+                   " (find-symbol \"JZON\" :com.inuoe.jzon-tests)))"
+                   "\n"
+                   "  :depends-on"))))))))
       (native-inputs
         (list sbcl-alexandria
               sbcl-fiveam
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 141a1ef5b1..6e7c5a6e05 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -485,7 +485,7 @@ code analysis tools.")
               "znver3")
             '())))))
 
-(define* (make-clang-toolchain clang #:optional (libomp libomp-13))
+(define (make-clang-toolchain clang libomp)
   (package
     (name (string-append (package-name clang) "-toolchain"))
     (version (package-version clang))
@@ -663,7 +663,7 @@ of programming tools as well as libraries with equivalent functionality.")
 (define-public libomp-14
   (package
     (name "libomp")
-    (version "14.0.6")
+    (version (package-version llvm-14))
     (source (origin
               (method url-fetch)
               (uri (llvm-uri "openmp" version))
@@ -744,7 +744,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
 (define-public libomp-13
   (package
     (inherit libomp-14)
-    (version "13.0.1")
+    (version (package-version llvm-13))
     (source (origin
               (method url-fetch)
               (uri (llvm-uri "openmp" version))
@@ -767,7 +767,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
        (replace "llvm" llvm-13)))))
 
 (define-public clang-toolchain-13
-  (make-clang-toolchain clang-13))
+  (make-clang-toolchain clang-13 libomp-13))
 
 (define-public llvm-12
   (package
@@ -855,8 +855,29 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                       (base32
                        "1r9a4fdz9ci58b5z2inwvm4z4cdp6scrivnaw05dggkxz7yrwrb5")))))
 
+(define-public libomp-12
+  (package
+    (inherit libomp-13)
+    (version (package-version llvm-12))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "14dh0r6h2xh747ffgnsl4z08h0ri04azi9vf79cbz7ma1r27kzk0"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (arguments
+     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
+                           "-DOPENMP_TEST_C_COMPILER=clang"
+                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:test-target "check-libomp"))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-13)
+       (replace "clang" clang-12)
+       (replace "llvm" llvm-12)))))
+
 (define-public clang-toolchain-12
-  (make-clang-toolchain clang-12))
+  (make-clang-toolchain clang-12 libomp-12))
 
 (define-public llvm-11
   (package
@@ -889,8 +910,24 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                       (base32
                        "02bcwwn54661madhq4nxc069s7p7pj5gpqi8ww50w3anbpviilzy")))))
 
+(define-public libomp-11
+  (package
+    (inherit libomp-12)
+    (version (package-version llvm-11))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "0k389d0g9zlfyzh1kpb3i5jdawzpn0hrdxzbjinpvdv7rbw4sw1d"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-12)
+       (replace "clang" clang-11)
+       (replace "llvm" llvm-11)))))
+
 (define-public clang-toolchain-11
-  (make-clang-toolchain clang-11))
+  (make-clang-toolchain clang-11 libomp-11))
 
 (define-public llvm-10
   (package
@@ -930,8 +967,24 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                       (base32
                        "06n1yp638rh24xdxv9v2df0qajxbjz4w59b7dd4ky36drwmpi4yh")))))
 
+(define-public libomp-10
+  (package
+    (inherit libomp-11)
+    (version (package-version llvm-10))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "0i4bn84lkpm5w3qkpvwm5z6jdj8fynp7d3bcasa1xyq4is6757yi"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-11)
+       (replace "clang" clang-10)
+       (replace "llvm" llvm-10)))))
+
 (define-public clang-toolchain-10
-  (make-clang-toolchain clang-10))
+  (make-clang-toolchain clang-10 libomp-10))
 
 (define-public llvm-9
   (package
@@ -976,8 +1029,24 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0ls2h3iv4finqyflyhry21qhc9cm9ga7g1zq21020p065qmm2y2p"
                    #:patches '("clang-9.0-libc-search-path.patch")))
 
+(define-public libomp-9
+  (package
+    (inherit libomp-10)
+    (version (package-version llvm-9))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "1knafnpp0f7hylx8q20lkd6g1sf0flly572dayc5d5kghh7hd52w"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-10)
+       (replace "clang" clang-9)
+       (replace "llvm" llvm-9)))))
+
 (define-public clang-toolchain-9
-  (make-clang-toolchain clang-9))
+  (make-clang-toolchain clang-9 libomp-9))
 
 (define-public llvm-8
   (package
@@ -1004,8 +1073,25 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0ihnbdl058gvl2wdy45p5am55bq8ifx8m9mhcsgj9ax8yxlzvvvh"
                    #:patches '("clang-8.0-libc-search-path.patch")))
 
+(define-public libomp-8
+  (package
+    (inherit libomp-9)
+    (version (package-version llvm-8))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "0b3jlxhqbpyd1nqkpxjfggm5d9va5qpyf7d4i5y7n4a1mlydv19y"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-9)
+       (replace "clang" clang-8)
+       (replace "llvm" llvm-8)))
+    (license license:ncsa)))
+
 (define-public clang-toolchain-8
-  (make-clang-toolchain clang-8))
+  (make-clang-toolchain clang-8 libomp-8))
 
 (define-public llvm-7
   (package
@@ -1029,8 +1115,24 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0vc4i87qwxnw9lci4ayws9spakg0z6w5w670snj9f8g5m9rc8zg9"
                    #:patches '("clang-7.0-libc-search-path.patch")))
 
+(define-public libomp-7
+  (package
+    (inherit libomp-8)
+    (version (package-version llvm-7))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "openmp" version))
+              (sha256
+               (base32
+                "1dg53wzsci2kra8lh1y0chh60h2l8h1by93br5spzvzlxshkmrqy"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-8)
+       (replace "clang" clang-7)
+       (replace "llvm" llvm-7)))))
+
 (define-public clang-toolchain-7
-  (make-clang-toolchain clang-7))
+  (make-clang-toolchain clang-7 libomp-7))
 
 (define-public llvm-6
   (package
@@ -1054,8 +1156,26 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
                    #:patches '("clang-6.0-libc-search-path.patch")))
 
+(define-public libomp-6
+  (package
+    (inherit libomp-7)
+    (version (package-version llvm-6))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://releases.llvm.org/"
+                                  version  "/openmp-" version
+                                  ".src.tar.xz"))
+              (sha256
+               (base32
+                "0nhwfba9c351r16zgyjyfwdayr98nairky3c2f0b2lc360mwmbv6"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs libomp-7)
+       (replace "clang" clang-6)
+       (replace "llvm" llvm-6)))))
+
 (define-public clang-toolchain-6
-  (make-clang-toolchain clang-6))
+  (make-clang-toolchain clang-6 libomp-6))
 
 (define-public llvm-3.9.1
   (package (inherit llvm-6)
@@ -1209,6 +1329,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 ;; Default LLVM and Clang version.
+(define-public libomp libomp-13)
 (define-public llvm llvm-13)
 (define-public clang-runtime clang-runtime-13)
 (define-public clang clang-13)
@@ -1378,21 +1499,22 @@ misuse of libraries outside of the store.")
 (define-public lldb
   (package
     (name "lldb")
-    (version "13.0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (llvm-uri "lldb" version))
-              (sha256
-               (base32
-                "05nvcbgb4rx860r3jzsbpvcbzpd0i7nsm5qrpkyfhg5vrh5mj32a"))))
+    (version "14.0.6")
+    (source (llvm-monorepo version))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags '("-DCMAKE_CXX_COMPILER=clang++")))
+     (list
+       #:configure-flags #~(list "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:phases
+       #~(modify-phases %standard-phases
+         (add-after 'unpack 'chdir-to-source
+           (lambda _
+             (chdir "lldb"))))))
     (native-inputs
      (list pkg-config swig))
     (inputs
-     (list clang-13
-           llvm-13
+     (list clang-14
+           llvm-14
            ;; Optional (but recommended) inputs.
            ncurses
            libedit
@@ -1586,8 +1708,6 @@ requirements according to version 1.1 of the OpenCL specification.")
     ;; Apache license 2.0 with LLVM exception
     (license license:asl2.0)))
 
-(define-public libomp libomp-13)
-
 (define-public python-llvmlite
   (package
     (name "python-llvmlite")
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 9e7cfe613a..099b6a9509 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -220,7 +220,14 @@ output in multiple windows in a terminal.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "02xz017ba9fssm1rp1fcfld7h79awbr6fqai9dxaqp02akp3davk"))))
+        (base32 "02xz017ba9fssm1rp1fcfld7h79awbr6fqai9dxaqp02akp3davk"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Prevent race on busy hardware.  Remove snippet for versions
+        ;; > 1.10.0; see <https://github.com/gabime/spdlog/issues/2363>.
+        '(substitute* "tests/test_misc.cpp"
+           (("spdlog::details::os::sleep_for_millis\\(10\\)")
+            "spdlog::details::os::sleep_for_millis(100)")))))
     (build-system cmake-build-system)
     ;; TODO run benchmark. Currently not possible, as adding
     ;; (gnu packages benchmark) forms a dependency cycle
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index a0a3a0f15b..eab9a24d1d 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -187,7 +187,7 @@ itself as well as other components maintained by the LXQt project.")
              #t)))))
     (propagated-inputs
      ;; required by Qt5XdgIconLoader.pc
-     (list glib qtbase-5 qtsvg))
+     (list glib qtbase-5 qtsvg-5))
     (native-inputs
      (list lxqt-build-tools pkg-config))
     (home-page "https://github.com/lxqt/libqtxdg")
@@ -231,10 +231,10 @@ in Qt.")
            libqtxdg
            libxscrnsaver
            polkit-qt
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (home-page "https://lxqt-project.org")
     (synopsis "Core utility library for all LXQt components")
     (description "liblxqt provides the basic libraries shared by the
@@ -284,10 +284,10 @@ and memory usage or network traffic.")
            liblxqt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -326,10 +326,10 @@ LXQt and the system it's running on.")
            liblxqt
            libqtxdg
            polkit-qt
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -375,14 +375,14 @@ the operating system LXQt is running on.")
            libxcursor
            libxi
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            solid
            xf86-input-libinput
            xkeyboard-config
            zlib))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     ;; XXX: This is a workaround so libkscreen can find the backends as we
     ;; dont have a way specify them. We may want to  patch like Nix does.
     (propagated-inputs
@@ -443,10 +443,10 @@ configuration of both LXQt and the underlying operating system.")
            liblxqt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list pkg-config qttools lxqt-build-tools))
+     (list pkg-config qttools-5 lxqt-build-tools))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -489,10 +489,10 @@ as a whole and are not limited to distinct applications.")
            liblxqt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no test target
        #:phases
@@ -534,10 +534,10 @@ according to the Desktop Notifications Specification.")
            liblxqt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -584,13 +584,13 @@ of other programs.")
            pcre
            pulseaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            solid
            xcb-util
            xkeyboard-config))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     (propagated-inputs
      ;; Propagating KWINDOWSYSTEM so that the list of opened applications
      ;; shows up in lxqt-panel's taskbar plugin.
@@ -646,10 +646,10 @@ of other programs.")
            pcre
            polkit-qt
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list pkg-config polkit lxqt-build-tools qttools))
+     (list pkg-config polkit lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no test target
        #:phases
@@ -692,11 +692,11 @@ LXQt.")
            libqtxdg
            lxqt-globalkeys
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            solid))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -739,10 +739,10 @@ when laptop batteries are low on power.")
            libfm-qt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -779,10 +779,10 @@ Qt with LXQt.")
            muparser
            pcre
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras))
     (native-inputs
-     (list pkg-config qttools lxqt-build-tools))
+     (list pkg-config qttools-5 lxqt-build-tools))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -825,11 +825,11 @@ allows for launching applications or shutting down the system.")
            libqtxdg
            procps
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            xdg-user-dirs))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     (arguments
      `(#:tests? #f
        #:phases
@@ -893,11 +893,11 @@ for the LXQt desktop environment.")
            liblxqt
            libqtxdg
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            sudo))
     (native-inputs
-     (list pkg-config qttools lxqt-build-tools))
+     (list pkg-config qttools-5 lxqt-build-tools))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -978,7 +978,7 @@ for LXQt.")
            qtbase-5
            qtx11extras))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     (home-page "https://lxqt-project.org")
     (synopsis "Qt binding for libfm")
     (description "libfm-qt is the Qt port of libfm, a library providing
@@ -1000,7 +1000,7 @@ components to build desktop file managers which belongs to LXDE.")
     (inputs
      (list libfm-qt qtbase-5 qtx11extras))
     (native-inputs
-     (list pkg-config qttools lxqt-build-tools))
+     (list pkg-config qttools-5 lxqt-build-tools))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -1038,7 +1038,7 @@ LXDE.")
     (inputs
      (list libconfig qtbase-5))
     (native-inputs
-     (list lxqt-build-tools pkg-config qttools))
+     (list lxqt-build-tools pkg-config qttools-5))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -1068,9 +1068,9 @@ manager Compton.")
         (base32 "0g6hs41xfw2ghhwpj0rqr2ciri0x9v984689yrnmnvah88zlya1f"))))
     (build-system cmake-build-system)
     (inputs
-     (list libexif libfm-qt qtbase-5 qtsvg qtx11extras))
+     (list libexif libfm-qt qtbase-5 qtsvg-5 qtx11extras))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1103,7 +1103,7 @@ image viewer.")
            qtbase-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools pkg-config qttools))
+     (list lxqt-build-tools pkg-config qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1127,7 +1127,7 @@ window manager OpenBox.")
     (inputs
      (list glib pcre pulseaudio qtbase-5 qtx11extras))
     (native-inputs
-     (list pkg-config lxqt-build-tools qttools))
+     (list pkg-config lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1156,7 +1156,7 @@ window manager OpenBox.")
            qtbase-5
            qtx11extras))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1180,7 +1180,7 @@ processes currently in existence, much like code{top} or code{ps}.")
     (inputs
      (list qtbase-5 utf8proc))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1203,7 +1203,7 @@ processes currently in existence, much like code{top} or code{ps}.")
     (inputs
      (list qtbase-5 qtx11extras qtermwidget))
     (native-inputs
-     (list lxqt-build-tools qttools))
+     (list lxqt-build-tools qttools-5))
     (arguments
      '(#:tests? #f))                      ; no tests
     (home-page "https://lxqt-project.org")
@@ -1225,9 +1225,9 @@ QTermWidget.")
         (base32 "0cilzw7rz5m2klzpax7rrs5rr6whfda2svwzsn2jvmrirmh5by7r"))))
     (build-system cmake-build-system)
     (inputs
-     (list kwindowsystem libqtxdg qtbase-5 qtsvg qtx11extras))
+     (list kwindowsystem libqtxdg qtbase-5 qtsvg-5 qtx11extras))
     (native-inputs
-     (list pkg-config perl qttools))
+     (list pkg-config perl qttools-5))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt-project.org")
@@ -1252,7 +1252,7 @@ easily publishing them on internet image hosting services.")
     (inputs
       (list glib json-glib libfm-qt qtbase-5 qtx11extras))
     (native-inputs
-      (list pkg-config lxqt-build-tools qttools))
+      (list pkg-config lxqt-build-tools qttools-5))
     (arguments
       '(#:tests? #f))
     (home-page "https://lxqt-project.org")
@@ -1283,13 +1283,13 @@ like @command{tar} and @command{zip}.")
       (inputs
         (list kwindowsystem
               qtbase-5
-              qtsvg
+              qtsvg-5
               liblxqt
               qtx11extras
               libqtxdg))
       (native-inputs
         `(("lxqt-build-tools" ,lxqt-build-tools)
-          ("qtlinguist" ,qttools)))
+          ("qtlinguist" ,qttools-5)))
       (arguments
         `(#:tests? #f                   ; no tests
           #:phases
@@ -1332,9 +1332,9 @@ desktop.")
            xdg-user-dirs
            xdg-utils
            ;; Base
-           ;; TODO: qtsvg is needed for lxqt apps to display icons. Maybe it
+           ;; TODO: qtsvg-5 is needed for lxqt apps to display icons. Maybe it
            ;; should be added to their propagated-inputs?
-           qtsvg
+           qtsvg-5
            ;; Core
            lxqt-about
            lxqt-admin
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b19af8a1d5..cd0640cd27 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -2750,11 +2750,18 @@ These include a barrier, broadcast, and allreduce.")
      (list
       #:phases
       #~(modify-phases %standard-phases
+          ;; Numba needs a writable dir to cache functions.
+          (add-before 'check 'set-numba-cache-dir
+            (lambda _
+              (setenv "NUMBA_CACHE_DIR" "/tmp")))
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
                 (setenv "HOME" "/tmp")
-                (invoke "pytest" "-vv" "umap")))))))
+                (invoke "pytest" "-vv" "umap"
+                        ;; This test can fail because trust may only be
+                        ;; 0.9679405204460967 >= 0.97
+                        "-k" "not test_densmap_trustworthiness_on_iris_supervised")))))))
     (native-inputs (list python-pytest))
     (propagated-inputs
      (list python-numba
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 556c5b4305..33dcc48e04 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li>
 ;;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
 ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -403,34 +404,32 @@ software.  GNU Mailutils provides the following commands:
      (list license:gpl3+ license:lgpl3+))))
 
 (define-public go-gitlab.com-shackra-goimapnotify
-  (let ((commit "832bc7112db9b28e28d69e90b91ea6c005244c9b")
-        (revision "0"))
-    (package
-      (name "go-gitlab.com-shackra-goimapnotify")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/shackra/goimapnotify")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1h27kshx4vwl5k6vc2szsq3d701fzs4gczjypz907f8hj0lrnjmy"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "gitlab.com/shackra/goimapnotify"))
-      (propagated-inputs
-       (list go-github-com-emersion-go-imap
-             go-github-com-emersion-go-imap-idle
-             go-github-com-emersion-go-sasl go-github-com-sirupsen-logrus
-             go-golang-org-x-text))
-      (synopsis "Execute scripts on IMAP mailbox changes")
-      (description
-       "Script to execute scripts on IMAP mailbox changes (new/deleted/updated
+  (package
+    (name "go-gitlab.com-shackra-goimapnotify")
+    (version "2.3.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/shackra/goimapnotify")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06jhxvhdvdv049qpvp8ahnhvswvbpakpw7aq2lw790f3x89px2ss"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "gitlab.com/shackra/goimapnotify"))
+    (propagated-inputs
+     (list go-github-com-emersion-go-imap
+           go-github-com-emersion-go-imap-idle
+           go-github-com-emersion-go-sasl go-github-com-sirupsen-logrus
+           go-golang-org-x-text))
+    (synopsis "Execute scripts on IMAP mailbox changes")
+    (description
+     "Script to execute scripts on IMAP mailbox changes (new/deleted/updated
 messages) using IDLE.  Implemented in Go.")
-      (home-page "https://gitlab.com/shackra/goimapnotify")
-      (license license:gpl3+))))
+    (home-page "https://gitlab.com/shackra/goimapnotify")
+    (license license:gpl3+)))
 
 (define-public guile2.2-mailutils
   (package
@@ -1161,57 +1160,42 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
 (define-public mu
   (package
     (name "mu")
-    (version "1.6.11")
+    (version "1.8.7")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/djcb/mu/releases/"
-                                  "download/" version "/"
-                                  "mu-" version ".tar.xz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/djcb/mu")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13gchks9znyw0axw1wlks7f7h4442rfagmj7kx0jm3qhvi0b5sk0"))))
-    (build-system gnu-build-system)
+                "0yfbw234yqnqfnsn5bj1hqwpy78pkxn05vl18z8nvsqdmpzal4gx"))))
+    (build-system meson-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("glib" ,glib "bin")             ; for gtester
-       ("emacs" ,emacs-minimal)
-       ("tzdata" ,tzdata-for-tests)))   ; for mu/test/test-mu-query.c
+     (list pkg-config
+           emacs-minimal
+           gnupg                        ; for tests
+           texinfo))
     (inputs
-     (list xapian guile-3.0 glib gmime))
+     (list glib gmime xapian))
     (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (guix build emacs-utils))
-       #:imported-modules (,@%gnu-build-system-modules
+     `(#:modules ((guix build meson-build-system)
+                  (guix build emacs-utils)
+                  (guix build utils))
+       #:imported-modules (,@%meson-build-system-modules
                            (guix build emacs-utils))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-configure
-           ;; By default, elisp code goes to "share/emacs/site-lisp/mu4e",
-           ;; so our Emacs package can't find it.  Setting "--with-lispdir"
-           ;; configure flag doesn't help because "mu4e" will be added to
-           ;; the lispdir anyway, so we have to modify "configure.ac".
-           (lambda _
-             (substitute* "configure"
-               (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") ""))))
-         (add-after 'unpack 'patch-bin-sh-in-tests
+         (add-after 'unpack 'patch-bin-references
            (lambda _
              (substitute* '("guile/tests/test-mu-guile.cc"
-                            "mu/test-mu-cmd.cc"
-                            "mu/test-mu-cmd-cfind.cc"
-                            "mu/test-mu-query.cc")
-               (("/bin/sh") (which "sh")))))
-         (add-before 'install 'fix-ffi
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "guile/mu.scm"
-               (("\"libguile-mu\"")
-                (format #f "\"~a/lib/libguile-mu\""
-                        (assoc-ref outputs "out"))))))
-         (add-before 'check 'check-tz-setup
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; For mu/test/test-mu-query.c
-             (setenv "TZDIR"
-                     (search-input-directory inputs "share/zoneinfo"))))
+                            "mu/tests/test-mu-cmd.cc"
+                            "mu/tests/test-mu-cmd-cfind.cc"
+                            "mu/tests/test-mu-query.cc")
+               (("/bin/sh") (which "sh")))
+             (substitute* '("lib/tests/bench-indexer.cc"
+                            "lib/utils/mu-utils.cc")
+               (("/bin/rm") (which "rm")))))
          (add-after 'install 'install-emacs-autoloads
            (lambda* (#:key outputs #:allow-other-keys)
              (emacs-generate-autoloads
@@ -1735,14 +1719,14 @@ addons which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.20")
+    (version "1.8.22")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/msmtp/releases"
                            "/msmtp-" version ".tar.xz"))
        (sha256
-        (base32 "04di9qs2bwiwidnhk3afif5mh05q3ggr9cyhr5ysyj0gzjmf4fnr"))))
+        (base32 "1rx3ksvwdfrwahsd2lwf52vnhhq72ygb0kjy6ci2df55hri2010v"))))
     (build-system gnu-build-system)
     (inputs
      (list libsecret gnutls zlib gsasl))
@@ -1750,26 +1734,24 @@ addons which can add many functionalities to the base client.")
      (list pkg-config))
     (home-page "https://marlam.de/msmtp/")
     (arguments
-     `(#:configure-flags (list "--with-libgsasl"
-                               "--with-libidn"
-                               "--with-tls=gnutls")
+     (list
+       #:configure-flags
+       #~(list "--with-libgsasl"
+               "--with-libidn"
+               "--with-tls=gnutls")
        #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-additional-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (doc (string-append out "/share/doc/msmtp"))
-                    (msmtpq "scripts/msmtpq")
-                    (vimfiles (string-append out "/share/vim/vimfiles/syntax")))
-               (install-file (string-append msmtpq "/msmtpq") bin)
-               (install-file (string-append msmtpq "/msmtp-queue") bin)
-               (install-file (string-append msmtpq "/README.msmtpq") doc)
-               (install-file "scripts/vim/msmtp.vim" vimfiles)
-               ;; Don't rely on netcat being in the PATH to test for a
-               ;; connection, instead look up and ping debian.org.
-               (substitute* (string-append bin "/msmtpq")
-                 (("EMAIL_CONN_TEST=n") "EMAIL_CONN_TEST=p"))))))))
+       #~(modify-phases %standard-phases
+           (add-after 'install 'install-additional-files
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out #$output)
+                      (bin (string-append out "/bin"))
+                      (doc (string-append out "/share/doc/msmtp"))
+                      (msmtpq "scripts/msmtpq")
+                      (vimfiles (string-append out "/share/vim/vimfiles/syntax")))
+                 (install-file (string-append msmtpq "/msmtpq") bin)
+                 (install-file (string-append msmtpq "/msmtp-queue") bin)
+                 (install-file (string-append msmtpq "/README.msmtpq") doc)
+                 (install-file "scripts/vim/msmtp.vim" vimfiles)))))))
     (properties
      '((release-monitoring-url . "https://marlam.de/msmtp/download/")))
     (synopsis
@@ -3557,14 +3539,14 @@ some configuration.")
 (define-public postorius
   (package
     (name "postorius")
-    (version "1.3.3")
+    (version "1.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "postorius" version))
        (sha256
         (base32
-         "08jn23gblbkfl09qlykbpsmp39mmach3sl69h1j5cd5kkx839rwa"))))
+         "0s0sv97nmszl5pl9rnnyzp3sxpmdhpxqrdwv7nc0ww8zs99w831b"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -3579,7 +3561,7 @@ some configuration.")
        #:tests? #f)) ; Tests try to run a mailman instance to test against.
     (inputs
      (list python-readme-renderer python-mailmanclient
-           python-django-2.2 python-django-mailman3))
+           python-django python-django-mailman3))
     (native-inputs
      (list python-beautifulsoup4 python-isort python-mock python-vcrpy))
     (home-page "https://gitlab.com/mailman/postorius")
@@ -3912,13 +3894,13 @@ servers.  The 4rev1 and 4 versions of IMAP are supported.")
 (define-public urlscan
   (package
     (name "urlscan")
-    (version "0.9.9")
+    (version "0.9.10")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "urlscan" version))
         (sha256
-         (base32 "1lc06i4r29s7qsfds4w3ip85n5fxjn65n47wxh8pvyb46fdvjrns"))))
+         (base32 "1ir6dxifkd8hv048p65jyz4wyg6ll002fzvbmajpdnvs6mvkj1md"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-urwid))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 68c811f74b..47d19eaadf 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015–2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net>
@@ -52,6 +52,9 @@
 ;;; Copyright © 2021 Pierre-Antoine Bouttier <pierre-antoine.bouttier@univ-grenoble-alpes.fr>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2022 Marek Felšöci <marek@felsoci.sk>
+;;; Copyright © 2022 vicvbcun <guix@ikherbers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -73,6 +76,7 @@
   #:use-module (ice-9 match)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -722,18 +726,31 @@ integer programming problems and computes Markov bases for statistics.")
 (define-public cddlib
   (package
     (name "cddlib")
-    (version "0.94i")
+    (version "0.94m")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-"
-                          (string-delete #\. version) ".tar.gz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/cddlib/cddlib")
+            (commit version)))
       (sha256
        (base32
-        "00zdgiqb91vx6gd2103h3ijij0llspsxc6zz3iw2bll39fvkl4xq"))))
+        "09s8323h5w9j6mpl1yc6lm770dkskfxd2ayyafkcjllmnncxzfa0"))))
     (build-system gnu-build-system)
     (inputs
      (list gmp))
+    (native-inputs (list autoconf
+                         automake
+                         libtool
+                         texlive-amsfonts
+                         texlive-dvips-l3backend
+                         texlive-latex-graphics
+                         texlive-latex-l3backend
+                         texlive-tiny))
+    (arguments
+     (list #:configure-flags
+             #~(list (string-append "--docdir=" #$output
+                                    "/share/doc/" #$name "-" #$version))))
     (home-page "https://www.inf.ethz.ch/personal/fukudak/cdd_home/index.html")
     (synopsis "Library for convex hulls and extreme rays of polyhedra")
     (description
@@ -1121,24 +1138,25 @@ in the terminal or with an external viewer.")
 (define-public gnuplot
   (package
     (name "gnuplot")
-    (version "5.4.3")
+    (version "5.4.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
                                   version "/gnuplot-"
                                   version ".tar.gz"))
        (sha256
-        (base32 "112dplskbkdbaqi935m2xlk1xsw8s5l568wm7xad75hgp6x9py2i"))))
+        (base32 "00h97y8njhvfjbdvc0njw0znxbrlfynd1iazn8w3anvzhsvh08rp"))))
     (build-system gnu-build-system)
-    (inputs (list readline cairo pango gd lua))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("texlive" ,texlive-tiny)))
-    (arguments `(#:configure-flags (list (string-append
-                                          "--with-texdir=" %output
-                                          "/texmf-local/tex/latex/gnuplot"))
-                 ;; Plot on a dumb terminal during tests.
-                 #:make-flags '("GNUTERM=dumb")))
+     (list pkg-config texlive-tiny))
+    (inputs
+     (list cairo gd lua pango readline))
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append "--with-texdir=" #$output
+                                  "/texmf-local/tex/latex/gnuplot"))
+           ;; Plot on a dumb terminal during tests.
+           #:make-flags #~'("GNUTERM=dumb")))
     (home-page "http://www.gnuplot.info")
     (synopsis "Command-line driven graphing utility")
     (description "Gnuplot is a portable command-line driven graphing
@@ -1324,7 +1342,7 @@ incompatible with HDF5.")
                (("/bin/mv") "mv"))
              (substitute* "fortran/src/Makefile.in"
                (("libhdf5_fortran_la_LDFLAGS =")
-                (string-append "libhdf5_fortran_la_LDFLAGS = -Wl-rpath="
+                (string-append "libhdf5_fortran_la_LDFLAGS = -Wl,-rpath="
                                (assoc-ref outputs "fortran") "/lib")))
              (substitute* "hl/fortran/src/Makefile.in"
                (("libhdf5hl_fortran_la_LDFLAGS =")
@@ -1738,6 +1756,58 @@ Blosc-compressed datasets.")
 HDF5 file is encoded according to the HDF File Format Specification.")
     (license (license:x11-style "file://COPYING"))))
 
+(define-public itex2mml
+  (package
+    (name "itex2mml")
+    (version "1.6.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://golem.ph.utexas.edu"
+                                  "/~distler/blog/files/itexToMML-"
+                                  version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "0pz51c0hfh2mg8xli0wj7hf92s3b7yf5r4114g8z8722lcm5gwiy"))
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (delete-file-recursively "itex-binaries")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list bison
+           flex))
+    (arguments
+     (list
+      #:make-flags #~(list (string-append "BINDIR=" #$output "/bin/")
+                           (string-append "CC=" #$(cc-for-target)))
+      #:tests? #f ;; there are none
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-before 'build 'chdir
+            (lambda args
+              (chdir "itex-src")))
+          (add-before 'install 'make-bindir
+            (lambda args
+              (mkdir-p (string-append #$output "/bin"))))
+          (add-after 'install 'install-doc
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((doc-prefix (or (assoc-ref outputs "doc")
+                                     #$output))
+                     (itex2mml+version (strip-store-file-name #$output))
+                     (doc-dir (string-append doc-prefix
+                                             "/share/doc/"
+                                             itex2mml+version)))
+                (install-file "../README" doc-dir)))))))
+    (home-page "https://golem.ph.utexas.edu/~distler/blog/itex2MML.html")
+    (synopsis "LaTeX to XHTML/MathML converter")
+    (description
+     "The @command{itex2MML} utility is a stream filter.  It takes text with
+embedded itex equations, converts the itex equations to MathML, and outputs
+the resulting text.")
+    (license (list license:lgpl2.0+ license:gpl2+ license:mpl1.1))))
+
 (define-public itpp
   (package
     (name "itpp")
@@ -2783,7 +2853,7 @@ script files.")
        ("qt" ,qtbase-5)
        ,@(package-inputs octave-cli)))
     (native-inputs
-     `(("qttools" , qttools) ;for lrelease
+     `(("qttools-5" , qttools-5) ;for lrelease
        ("texlive" ,(texlive-updmap.cfg (list texlive-epsf))) ; for texi2dvi
        ,@(package-native-inputs octave-cli)))
     (arguments
@@ -3069,14 +3139,14 @@ ASCII text files using Gmsh's own scripting language.")
     (native-inputs
      (list pkg-config
            ;;("python-astropy" ,python-astropy) ;; FIXME: Package this.
-           qttools python-sip-4))
+           qttools-5 python-sip-4))
     (inputs
      (list ghostscript ;optional, for EPS/PS output
            python-dbus
            python-h5py ;optional, for HDF5 data
            python-pyqt
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (propagated-inputs
      (list python-numpy))
     (home-page "https://veusz.github.io/")
@@ -3681,19 +3751,18 @@ language understood by many solvers.")
 (define-public mumps
   (package
     (name "mumps")
-    (version "5.2.1")
+    (version "5.5.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://mumps.enseeiht.fr/MUMPS_"
-                           version ".tar.gz"))
+       (uri (list (string-append "http://mumps.enseeiht.fr/MUMPS_"
+                                 version ".tar.gz")
+                  (string-append
+                   "https://ftp.mcs.anl.gov/pub/petsc/externalpackages"
+                   "/MUMPS_" version ".tar.gz")))
        (sha256
         (base32
-         "0jklh54x4y3ik1zkw6db7766kakjm5910diyaghfxxf8vwsgr26r"))
-       (patches (search-patches "mumps-build-parallelism.patch"
-                                "mumps-shared-libseq.patch"
-                                "mumps-shared-mumps.patch"
-                                "mumps-shared-pord.patch"))))
+         "05gs2i8b76m9flm1826fxpyfnwibjjawbmfza3ylrvj7zaag5gqs"))))
     (build-system gnu-build-system)
     (inputs
      (list gfortran
@@ -3710,58 +3779,71 @@ language understood by many solvers.")
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
-          (lambda* (#:key inputs #:allow-other-keys)
+          (lambda* (#:key inputs outputs #:allow-other-keys)
             (call-with-output-file "Makefile.inc"
               (lambda (port)
                 (format port "
-PLAT         =
-LIBEXT       = .a
-OUTC         = -o
-OUTF         = -o
-RM           = rm -f~:[
-CC           = gcc
-FC           = gfortran
-FL           = gfortran
-INCSEQ       = -I$(topdir)/libseq
-LIBSEQ       = $(topdir)/libseq/libmpiseq.a
-LIBSEQNEEDED = libseqneeded~;
-CC           = mpicc
-FC           = mpifort
-FL           = mpifort~]
-AR           = ar vr # rules require trailing space, ugh...
-RANLIB       = ranlib
-BLASDIR      = ~a
-LIBBLAS      = -Wl,-rpath=$(BLASDIR) -Wl,-rpath='$$ORIGIN' -L$(BLASDIR) -lopenblas~@[
-SCALAPDIR    = ~a
-SCALAP       = -Wl,-rpath=$(SCALAPDIR) -Wl,-rpath='$$ORIGIN' -L$(SCALAPDIR) -lscalapack~]
-LIBOTHERS    = -pthread
-CDEFS        = -DAdd_
-PIC          = -fPIC
-OPTF         = -O2 -DALLOW_NON_INIT -fallow-argument-mismatch $(PIC)
-OPTL         = -O2 $(PIC)
-OPTC         = -O2 $(PIC)
-INCS         = $(INCSEQ)
-LIBS         = $(SCALAP) $(LIBSEQ)
-LPORDDIR     = $(topdir)/PORD/lib
-IPORD        = -I$(topdir)/PORD/include
-LPORD        = $(LPORDDIR)/libpord.a
-ORDERINGSF   = -Dpord~@[
-METISDIR     = ~a
-IMETIS       = -I$(METISDIR)/include
-LMETIS       = -Wl,-rpath $(METISDIR)/lib -L$(METISDIR)/lib -lmetis
-ORDERINGSF  += -Dmetis~]~@[~:{
-SCOTCHDIR    = ~a
-ISCOTCH      = -I$(SCOTCHDIR)/include
-LSCOTCH      = -Wl,-rpath $(SCOTCHDIR)/lib -L$(SCOTCHDIR)/lib ~a-lesmumps -lscotch -lscotcherr
-ORDERINGSF  += ~a~}~]
-ORDERINGSC   = $(ORDERINGSF)
-LORDERINGS   = $(LPORD) $(LMETIS) $(LSCOTCH) $(LIBSEQ)
-IORDERINGSF  = $(ISCOTCH)
-IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
-                        (->bool (which "mpicc"))  ;MPI support enabled?
-                        (dirname
-                         (dirname (search-input-file inputs "/include/cblas.h")))
+PLAT          =
+LIBEXT        = .a
+LIBEXT_SHARED = .so
+OUTC          = -o
+OUTF          = -o
+BLASDIR       = ~a
+LIBBLAS       = -Wl,-rpath=$(BLASDIR)/lib -Wl,-rpath='$$ORIGIN'
+LIBBLAS      += -L$(BLASDIR)/lib
+LIBBLAS      += -lopenblas~@[
+SCALAPDIR     = ~a
+SCALAP        = -Wl,-rpath=$(SCALAPDIR)/lib -Wl,-rpath='$$ORIGIN'
+SCALAP       += -L$(SCALAPDIR)/lib -lscalapack~]
+RM            = rm -f~:[
+CC            = gcc
+FC            = gfortran
+FL            = gfortran
+INCSEQ        = -I$(topdir)/libseq
+LIBSEQ        = $(LAPACK) -L$(topdir)/libseq -lmpiseq
+LIBSEQNEEDED  = libseqneeded
+INCS          = $(INCSEQ)
+LIBS          = $(LIBSEQ)~;
+CC            = mpicc
+FC            = mpifort
+FL            = mpifort
+INCPAR        =
+LIBPAR        = $(SCALAP) $(LAPACK)
+LIBSEQNEEDED  = 
+INCS          = $(INCPAR)
+LIBS          = $(LIBPAR)~]
+AR            = ar vr # rules require trailing space, ugh...
+RANLIB        = ranlib
+LIBOTHERS     = -pthread
+CDEFS         = -DAdd_
+PIC           = -fPIC
+FPIC_OPT      = $(PIC)
+RPATH_OPT     = -Wl,-rpath,~a/lib
+OPTF          = -O2 -fopenmp -DALLOW_NON_INIT -DBLR_MT
+OPTF         += -fallow-argument-mismatch $(PIC)
+OPTL          = -O2 -fopenmp $(PIC)
+OPTC          = -O2 -fopenmp $(PIC)
+LPORDDIR      = $(topdir)/PORD/lib
+IPORD         = -I$(topdir)/PORD/include
+LPORD         = $(LPORDDIR)/libpord.a
+ORDERINGSF    = -Dpord~@[
+METISDIR      = ~a
+IMETIS        = -I$(METISDIR)/include
+LMETIS        = -Wl,-rpath $(METISDIR)/lib -L$(METISDIR)/lib -lmetis
+ORDERINGSF   += -Dmetis~]~@[~:{
+SCOTCHDIR     = ~a
+ISCOTCH       = -I$(SCOTCHDIR)/include
+LSCOTCH       = -Wl,-rpath $(SCOTCHDIR)/lib -L$(SCOTCHDIR)/lib ~a -lesmumps
+LSCOTCH      += -lscotch -lscotcherr
+ORDERINGSF   += ~a~}~]
+ORDERINGSC    = $(ORDERINGSF)
+LORDERINGS    = $(LPORD) $(LMETIS) $(LSCOTCH)
+IORDERINGSF   = $(ISCOTCH)
+IORDERINGSC   = $(IPORD) $(IMETIS) $(ISCOTCH)"
+                        (assoc-ref inputs "openblas")
                         (assoc-ref inputs "scalapack")
+                        (->bool (which "mpicc"))  ;; MPI support enabled?
+                        (assoc-ref outputs "out")
                         (assoc-ref inputs "metis")
                         (match (list (assoc-ref inputs "pt-scotch")
                                      (assoc-ref inputs "scotch"))
@@ -3774,11 +3856,14 @@ IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
                               "-lesmumps -lptscotch -lptscotcherr "
                               "-Dptscotch")))))))))
          (replace 'build
-          ;; By default only the d-precision library is built.  Make with "all"
-          ;; target so that all precision libraries and examples are built.
-          (lambda _
-            (invoke "make" "all"
-                    (format #f "-j~a" (parallel-job-count)))))
+           ;; By default only the d-precision library is built. Make with "all"
+           ;; target so that all precision libraries and examples are built.
+           ;; Then, "make allshared" builts equivalent shared libraries as well.
+           (lambda _
+             (invoke "make" "all"
+                     (format #f "-j~a" (parallel-job-count)))
+             (invoke "make" "allshared"
+                     (format #f "-j~a" (parallel-job-count)))))
          (replace 'check
           ;; Run the simple test drivers, which read test input from stdin:
           ;; from the "real" input for the single- and double-precision
@@ -4259,7 +4344,7 @@ to BMP, JPEG or PNG image formats.")
 (define-public maxima
   (package
     (name "maxima")
-    (version "5.45.1")
+    (version "5.46.0")
     (source
      (origin
        (method url-fetch)
@@ -4267,7 +4352,7 @@ to BMP, JPEG or PNG image formats.")
                            version "-source/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1p77nk5sz1qfkn5zr97szpbi8ib4b22k8i52l4ag5gkhd4kid47y"))
+         "01wbm8jj43p7gpdj4h55aij0b44bjydn4bwb7q1wjrfs91mz143k"))
        (patches (search-patches "maxima-defsystem-mkdir.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -4350,7 +4435,11 @@ to BMP, JPEG or PNG image formats.")
                ;; components at runtime.
                (wrap-program (string-append out "/bin/maxima")
                  `("PATH" prefix (,binutils))))
-             #t)))))
+             #t))
+         ;; The Maxima command ‘describe’ allows to pick the relevant portions
+         ;; from Maxima’s Texinfo docs.  However it does not support reading
+         ;; gzipped info files.
+         (delete 'compress-documentation))))
     (home-page "https://maxima.sourceforge.io")
     (synopsis "Numeric and symbolic expression manipulation")
     (description "Maxima is a system for the manipulation of symbolic and
@@ -4367,7 +4456,7 @@ point numbers.")
 (define-public wxmaxima
   (package
     (name "wxmaxima")
-    (version "21.05.2")
+    (version "22.05.0")
     (source
      (origin
        (method git-fetch)
@@ -4376,7 +4465,7 @@ point numbers.")
              (commit (string-append "Version-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0h7ryykh2dapcyvpp4f1j1b3vrrz80x9k8nkci2yxifgdb29vyhw"))))
+        (base32 "1va56v9dys97yln4m1z3fz3k90lpy8i3kvcq0v1cbg36689aghm5"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)))
@@ -4779,7 +4868,7 @@ Fresnel integrals, and similar related functions as well.")
 (define-public suitesparse
   (package
     (name "suitesparse")
-    (version "5.10.1")
+    (version "5.12.0")
     (source
      (origin
        (method git-fetch)
@@ -4789,7 +4878,7 @@ Fresnel integrals, and similar related functions as well.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "19gx5wlgqnqpgz6mvam9lalyzpbfwgqhppps8z3np9sh0mgaiyw9"))
+         "0zpl51pfpv7ap7z97jlryba2la1qdmzm11bhzkn55wlb03xzi6k6"))
        (patches (search-patches "suitesparse-mongoose-cmake.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -5153,111 +5242,119 @@ revised simplex and the branch-and-bound methods.")
         (base32 "0fnwlhzsh85qj38cq3igbs8nm1b2jdgr2z734sapmyyzsy21mkgp"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("gfortran" ,gfortran)
-       ;; Trilinos's repository contains several C-shell scripts, but adding
-       ;; tcsh to the native inputs does not result in the check phase running
-       ;; any more tests than without it (nor is tcsh required to build
-       ;; Trilinos).
-       ;; It seems that Trilinos has replaced its use of C-shell test scripts
-       ;; with CMake's testing facilities.
-       ;; For example,
-       ;; packages/zoltan/doc/Zoltan_html/dev_html/dev_test_script.html [1]
-       ;; states that Zoltan's C-shell test script
-       ;; packages/zoltan/test/test_zoltan has been obsoleted by the tests now
-       ;; performed through CMake.
-       ;;
-       ;; Perl is required for some Zoltan tests and Python 2 for one ML test.
-       ;;
-       ;; [1]: https://cs.sandia.gov/zoltan/dev_html/dev_test_script.html
-       ("perl" ,perl)
-       ("python" ,python-2)))
+     (list
+      ;; The build fails with the current gcc.
+      ;; Use the version from when Trilinos was added.
+      gcc-7
+      gfortran
+      ;; Trilinos's repository contains several C-shell scripts, but adding
+      ;; tcsh to the native inputs does not result in the check phase running
+      ;; any more tests than without it (nor is tcsh required to build
+      ;; Trilinos).
+      ;; It seems that Trilinos has replaced its use of C-shell test scripts
+      ;; with CMake's testing facilities.
+      ;; For example,
+      ;; packages/zoltan/doc/Zoltan_html/dev_html/dev_test_script.html [1]
+      ;; states that Zoltan's C-shell test script
+      ;; packages/zoltan/test/test_zoltan has been obsoleted by the tests now
+      ;; performed through CMake.
+      ;;
+      ;; Perl is required for some Zoltan tests and Python 2 for one ML test.
+      ;;
+      ;; [1]: https://cs.sandia.gov/zoltan/dev_html/dev_test_script.html
+      perl
+      python-2))
     (inputs
-     `(("blas" ,openblas)
-       ("lapack" ,lapack)
-       ("mumps" ,mumps-openmpi)
-       ("scalapack" ,scalapack)))
+     (list openblas
+           lapack
+           mumps-openmpi
+           scalapack))
     (propagated-inputs
-     `(("mpi" ,openmpi)))
+     (list openmpi))
     (arguments
-     `(#:build-type "Release"
-       #:configure-flags
-       `("-DBUILD_SHARED_LIBS=ON"
-         ;; Obtain the equivalent of RelWithDebInfo but with -O3 (the Release
-         ;; default) rather than -O2 (the RelWithDebInfo default), to conform
-         ;; to candi's trilinos.package's compilation flags, which are -g -O3.
-         "-DCMAKE_C_FLAGS=-g"
-         "-DCMAKE_CXX_FLAGS=-g"
-         "-DCMAKE_Fortran_FLAGS=-g"
-
-         ;; Trilinos libraries that deal.II can interface with.
-         "-DTrilinos_ENABLE_Amesos=ON"
-         "-DTrilinos_ENABLE_AztecOO=ON"
-         "-DTrilinos_ENABLE_Epetra=ON"
-         "-DTrilinos_ENABLE_EpetraExt=ON"
-         "-DTrilinos_ENABLE_Ifpack=ON"
-         "-DTrilinos_ENABLE_ML=ON"
-         "-DTrilinos_ENABLE_MueLu=ON"
-         "-DTrilinos_ENABLE_ROL=ON"
-         ;; Optional; required for deal.II's GridIn::read_exodusii, but
-         ;; depends on netcdf.
-         ;; Enable if and when someone needs it.
-         ;;"-DTrilinos_ENABLE_SEACAS=ON"
-         "-DTrilinos_ENABLE_Sacado=ON"
-         "-DTrilinos_ENABLE_Teuchos=ON"
-         "-DTrilinos_ENABLE_Tpetra=ON"
-         "-DTrilinos_ENABLE_Zoltan=ON"
-
-         ;; Third-party libraries (TPLs) that Trilinos can interface with.
-         "-DBLAS_LIBRARY_NAMES=openblas"
-         "-DTPL_ENABLE_MPI=ON"
-         "-DTPL_ENABLE_MUMPS=ON"
-         "-DTPL_ENABLE_SCALAPACK=ON"
-
-         ;; Enable the tests but not the examples (which are enabled by
-         ;; default when enabling tests).
-         ;; Although some examples are run as tests, they are otherwise
-         ;; unnecessary since this is a private package meant for
-         ;; dealii-openmpi.
-         ;; Besides, some MueLu and ROL examples require a lot of memory to
-         ;; compile.
-         ;;
-         ;; (For future reference, note that some ROL and SEACAS examples
-         ;; require removing gfortran from CPLUS_INCLUDE_PATH as in the
-         ;; dune-istl, dune-localfunctions and dune-alugrid packages.)
-         "-DTrilinos_ENABLE_TESTS=ON"
-         "-DTrilinos_ENABLE_EXAMPLES=OFF"
-         ;; MueLu tests require considerably more time and memory to compile
-         ;; than the rest of the tests.
-         "-DMueLu_ENABLE_TESTS=OFF"
-
-         ;; The following options were gleaned from candi's trilinos.package.
-         ;; (We do not enable the complex instantiations, which are anyway
-         ;; provided only as an option in trilinos.package, because they are
-         ;; costly in compilation time and memory usage, and disk space [1].)
-         ;;
-         ;; [1]: https://www.docs.trilinos.org/files/TrilinosBuildReference.html#enabling-float-and-complex-scalar-types
-         "-DTrilinos_ENABLE_Ifpack2=OFF"
-         "-DTeuchos_ENABLE_FLOAT=ON"
-         "-DTpetra_INST_INT_LONG=ON"
-         "-DTPL_ENABLE_Boost=OFF")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'fix-kokkos-config
-           (lambda _
-             ;; GNU Make 4.3 accidentally leaves the backslash preceding the
-             ;; number sign in strings containing a literal backslash–number
-             ;; sign (\#) [1, 2].
-             ;; This is still an issue in Trilinos 13.0.1, but should be fixed
-             ;; in the following version.
-             ;; (The latest versions of Kokkos incorporate the fix [2].)
-             ;;
-             ;; [1]: https://github.com/GEOSX/thirdPartyLibs/issues/136
-             ;; [2]: https://github.com/kokkos/kokkos/blob/3.4.00/Makefile.kokkos#L441
-             (substitute* "KokkosCore_config.h"
-               (("\\\\#") "#"))
-             #t))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+     (list #:build-type "Release"
+           #:configure-flags
+           #~(list "-DBUILD_SHARED_LIBS=ON"
+                   ;; Obtain the equivalent of RelWithDebInfo but with -O3
+                   ;; (the Release default) rather than -O2 (the
+                   ;; RelWithDebInfo default), to conform to candi's
+                   ;; trilinos.package's compilation flags, which are -g -O3.
+                   "-DCMAKE_C_FLAGS=-g"
+                   "-DCMAKE_CXX_FLAGS=-g"
+                   "-DCMAKE_Fortran_FLAGS=-g"
+
+                   ;; Trilinos libraries that deal.II can interface with.
+                   "-DTrilinos_ENABLE_Amesos=ON"
+                   "-DTrilinos_ENABLE_AztecOO=ON"
+                   "-DTrilinos_ENABLE_Epetra=ON"
+                   "-DTrilinos_ENABLE_EpetraExt=ON"
+                   "-DTrilinos_ENABLE_Ifpack=ON"
+                   "-DTrilinos_ENABLE_ML=ON"
+                   "-DTrilinos_ENABLE_MueLu=ON"
+                   "-DTrilinos_ENABLE_ROL=ON"
+                   ;; Optional; required for deal.II's GridIn::read_exodusii,
+                   ;; but depends on netcdf.
+                   ;; Enable if and when someone needs it.
+                   ;;"-DTrilinos_ENABLE_SEACAS=ON"
+                   "-DTrilinos_ENABLE_Sacado=ON"
+                   "-DTrilinos_ENABLE_Teuchos=ON"
+                   "-DTrilinos_ENABLE_Tpetra=ON"
+                   "-DTrilinos_ENABLE_Zoltan=ON"
+
+                   ;; Third-party libraries (TPLs) that Trilinos can interface
+                   ;; with.
+                   "-DBLAS_LIBRARY_NAMES=openblas"
+                   "-DTPL_ENABLE_MPI=ON"
+                   "-DTPL_ENABLE_MUMPS=ON"
+                   "-DTPL_ENABLE_SCALAPACK=ON"
+
+                   ;; Enable the tests but not the examples (which are enabled
+                   ;; by default when enabling tests).
+                   ;; Although some examples are run as tests, they are
+                   ;; otherwise unnecessary since this is a private package
+                   ;; meant for dealii-openmpi.
+                   ;; Besides, some MueLu and ROL examples require a lot of
+                   ;; memory to compile.
+                   ;;
+                   ;; (For future reference, note that some ROL and SEACAS
+                   ;; examples require removing gfortran from
+                   ;; CPLUS_INCLUDE_PATH as in the dune-istl,
+                   ;; dune-localfunctions and dune-alugrid packages.)
+                   "-DTrilinos_ENABLE_TESTS=ON"
+                   "-DTrilinos_ENABLE_EXAMPLES=OFF"
+                   ;; MueLu tests require considerably more time and memory to
+                   ;; compile than the rest of the tests.
+                   "-DMueLu_ENABLE_TESTS=OFF"
+
+                   ;; The following options were gleaned from candi's
+                   ;; trilinos.package.
+                   ;; (We do not enable the complex instantiations, which are
+                   ;; anyway provided only as an option in trilinos.package,
+                   ;; because they are costly in compilation time and memory
+                   ;; usage, and disk space [1].)
+                   ;;
+                   ;; [1]: https://www.docs.trilinos.org/files/TrilinosBuildReference.html#enabling-float-and-complex-scalar-types
+                   "-DTrilinos_ENABLE_Ifpack2=OFF"
+                   "-DTeuchos_ENABLE_FLOAT=ON"
+                   "-DTpetra_INST_INT_LONG=ON"
+                   "-DTPL_ENABLE_Boost=OFF")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'configure 'fix-kokkos-config
+                 (lambda _
+                   ;; GNU Make 4.3 accidentally leaves the backslash preceding
+                   ;; the number sign in strings containing a literal
+                   ;; backslash–number sign (\#) [1, 2].
+                   ;; This is still an issue in Trilinos 13.0.1, but should be
+                   ;; fixed in the following version.
+                   ;; (The latest versions of Kokkos incorporate the fix [2].)
+                   ;;
+                   ;; [1]: https://github.com/GEOSX/thirdPartyLibs/issues/136
+                   ;; [2]: https://github.com/kokkos/kokkos/blob/3.4.00/Makefile.kokkos#L441
+                   (substitute* "KokkosCore_config.h"
+                     (("\\\\#") "#"))))
+               (add-before 'check 'mpi-setup
+                 #$%openmpi-setup))))
     (home-page "https://trilinos.github.io/")
     (synopsis "Algorithms for engineering and scientific problems")
     (description
@@ -5273,18 +5370,18 @@ A unique design feature of Trilinos is its focus on packages.")
 (define-public dealii
   (package
     (name "dealii")
-    (version "9.3.3")
+    (version "9.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/dealii/dealii/releases/"
                            "download/v" version "/dealii-" version ".tar.gz"))
        (sha256
-        (base32 "0a8s4yxcbvzmfgv5qcg27h2ss4fcnyhrhhs35glqj59l9cbmkysx"))
+        (base32 "0v73q6f35f2yrjihaq6vh9lma07qc4cdv75nwmc3c5yrdh07g1i3"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled boost, muparser, TBB and UMFPACK.
-        '(delete-file-recursively "bundled"))))
+        #~(delete-file-recursively "bundled"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -5308,36 +5405,39 @@ A unique design feature of Trilinos is its focus on packages.")
      (list boost
            hdf5
            suitesparse                  ; For UMFPACK.
-           ;; SUNDIALS 6.0.0 and later will be supported in deal.II 9.4.0.
-           sundials-5
+           sundials
            tbb))
     (arguments
-     `(#:build-type "DebugRelease" ; Supports only Debug, Release and DebugRelease.
-       ;; The tests take too long and must be explicitly enabled with "make
-       ;; setup_tests".
-       ;; See https://www.dealii.org/developer/developers/testsuite.html.
-       ;; (They can also be run for an already installed deal.II.)
-       #:tests? #f
-       #:configure-flags
-       (let ((doc (string-append (assoc-ref %outputs "doc")
-                                 "/share/doc/" ,name "-" ,version)))
-         `("-DDEAL_II_COMPONENT_DOCUMENTATION=ON"
-           ,(string-append "-DDEAL_II_DOCREADME_RELDIR=" doc)
-           ,(string-append "-DDEAL_II_DOCHTML_RELDIR=" doc "/html")
-           ;; Don't compile the examples because the source and CMakeLists.txt
-           ;; are installed anyway, allowing users to do so for themselves.
-           "-DDEAL_II_COMPILE_EXAMPLES=OFF"
-           ,(string-append "-DDEAL_II_EXAMPLES_RELDIR=" doc "/examples")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'remove-build-logs
-           ;; These build logs leak the name of the build directory by storing
-           ;; the values of CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((doc (string-append (assoc-ref outputs "doc")
-                                       "/share/doc/" ,name "-" ,version)))
-               (for-each delete-file (map (lambda (f) (string-append doc "/" f))
-                                          '("detailed.log" "summary.log")))))))))
+     (list #:build-type "DebugRelease"  ; Only Debug, Release or DebugRelease.
+           ;; The tests take too long and must be explicitly enabled with
+           ;; "make setup_tests".
+           ;; See https://www.dealii.org/developer/developers/testsuite.html.
+           ;; (They can also be run for an already installed deal.II.)
+           #:tests? #f
+           #:configure-flags
+           #~(let ((doc (string-append #$output:doc "/share/doc/"
+                                       #$name "-" #$version)))
+               (list "-DDEAL_II_COMPONENT_DOCUMENTATION=ON"
+                     (string-append "-DDEAL_II_DOCREADME_RELDIR=" doc)
+                     (string-append "-DDEAL_II_DOCHTML_RELDIR=" doc "/html")
+                     ;; Don't compile the examples because the source and
+                     ;; CMakeLists.txt are installed anyway, allowing users to
+                     ;; do so for themselves.
+                     "-DDEAL_II_COMPILE_EXAMPLES=OFF"
+                     (string-append "-DDEAL_II_EXAMPLES_RELDIR=" doc
+                                    "/examples")))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'remove-build-logs
+                 ;; These build logs leak the name of the build directory by
+                 ;; storing the values of CMAKE_SOURCE_DIR and
+                 ;; CMAKE_BINARY_DIR.
+                 (lambda _
+                   (let ((doc (string-append #$output:doc "/share/doc/"
+                                             #$name "-" #$version)))
+                     (for-each delete-file
+                               (map (lambda (f) (string-append doc "/" f))
+                                    '("detailed.log" "summary.log")))))))))
     (home-page "https://www.dealii.org/")
     (synopsis "Finite element library")
     (description
@@ -5365,12 +5465,12 @@ in finite element programs.")
                 p4est-openmpi
                 petsc-openmpi
                 slepc-openmpi
-                sundials-openmpi-5
+                sundials-openmpi
                 trilinos-for-dealii-openmpi)))
     (arguments
      (substitute-keyword-arguments (package-arguments dealii)
        ((#:configure-flags flags)
-        `(cons "-DDEAL_II_WITH_MPI=ON" ,flags))))
+        #~(cons "-DDEAL_II_WITH_MPI=ON" #$flags))))
     (synopsis "Finite element library (with MPI support)")))
 
 (define-public flann
@@ -5438,11 +5538,19 @@ FLANN is written in C++ and contains bindings for C, Octave and Python.")
         (uri (string-append "mirror://sourceforge/w-calc/Wcalc/" version "/"
                             "wcalc-" version ".tar.bz2"))
         (sha256
-          (base32
-            "1vi8dl6rccqiq1apmpwawyg2ywx6a1ic1d3cvkf2hlwk1z11fb0f"))))
+         (base32
+          "1vi8dl6rccqiq1apmpwawyg2ywx6a1ic1d3cvkf2hlwk1z11fb0f"))
+        (snippet
+         #~(begin
+             (for-each delete-file
+                       (list "src/common/scanner.c"
+                             "src/common/parser.c"
+                             "src/common/parser.h"))))))
     (build-system gnu-build-system)
     (inputs
      (list mpfr readline))
+    (native-inputs
+     (list bison flex))
     (home-page "http://w-calc.sourceforge.net/index.php")
     (synopsis "Flexible command-line scientific calculator")
     (description "Wcalc is a very capable calculator.  It has standard functions
@@ -5469,7 +5577,7 @@ evaluates expressions using the standard order of operations.")
     (build-system gnu-build-system)
     (native-inputs `(("gettext" ,gettext-minimal)
                      ("qtbase" ,qtbase-5)
-                     ("qttools" ,qttools)))
+                     ("qttools-5" ,qttools-5)))
     (inputs (list libx11 zlib libpng gsl))
     ;; The upstream project file ("XaoS.pro") and the Makefile it generates are
     ;; not enough for this package to install properly.  These phases fix that.
@@ -7148,7 +7256,7 @@ functions.")
         "0vh7cd1915bjqzkdp3sk25ngy8cq624mkh8c53c5bnzk357kb0fk"))))
     (build-system cmake-build-system)
     (inputs (list qtbase-5))
-    (native-inputs (list qttools))
+    (native-inputs (list qttools-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -7419,6 +7527,7 @@ of C, Java, or Ada programs.")
            ocaml-graph
            ocaml-yojson
            ocaml-zarith
+           lablgtk3
            why3))
     (native-search-paths
      (list (search-path-specification
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index eee082ed8e..47798c3586 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -20,7 +20,7 @@
 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
-;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
@@ -232,8 +232,8 @@ XMPP-based sessions.")
        ("libidn" ,libidn)
        ("qca" ,qca)
        ("qtbase" ,qtbase-5)
-       ("qtmultimedia" ,qtmultimedia)
-       ("qtsvg" ,qtsvg)
+       ("qtmultimedia-5" ,qtmultimedia-5)
+       ("qtsvg-5" ,qtsvg-5)
        ("qtwebkit" ,qtwebkit)
        ("qtx11extras" ,qtx11extras)
        ("x11" ,libx11)
@@ -1476,12 +1476,12 @@ default.")
     (inputs (list kirigami
                   knotifications
                   qtbase-5
-                  qtdeclarative
+                  qtdeclarative-5
                   qtgraphicaleffects
                   qtlocation
-                  qtquickcontrols2
-                  qtsvg
-                  qtmultimedia
+                  qtquickcontrols2-5
+                  qtsvg-5
+                  qtmultimedia-5
                   qtxmlpatterns
                   qqc2-desktop-style
                   qxmpp
@@ -1810,7 +1810,7 @@ instant messenger with audio and video chat capabilities.")
                          ,(list (search-input-directory
                                  inputs "lib/qt5/plugins/"))))))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list ffmpeg
            filteraudio
@@ -1826,7 +1826,7 @@ instant messenger with audio and video chat capabilities.")
            openal
            qrencode
            qtbase-5
-           qtsvg
+           qtsvg-5
            sqlcipher))
     (home-page "https://qtox.github.io/")
     (synopsis "Tox chat client using Qt")
@@ -2325,7 +2325,7 @@ notifications, and Python scripting support.")
         (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
     (build-system cmake-build-system)
     (inputs
-     (list qtbase-5 qtmultimedia))
+     (list qtbase-5 qtmultimedia-5))
     (arguments
      `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
        #:tests? #f))                    ; no tests
@@ -2340,7 +2340,7 @@ QMatrixClient project.")
 (define-public mtxclient
   (package
     (name "mtxclient")
-    (version "0.7.0")
+    (version "0.8.0")
     (source
      (origin
        (method git-fetch)
@@ -2349,7 +2349,7 @@ QMatrixClient project.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kgz9i3xgyk1a82sv48a1m8gdxg0cl5pgd5imgwy519vvjlkwv48"))))
+        (base32 "0gkzgq6rzanvgyk47d25nqz7m0lwa3kz5pc0m4w0ada38xwhy2j9"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2385,7 +2385,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
 (define-public nheko
   (package
     (name "nheko")
-    (version "0.9.3")
+    (version "0.10.0")
     (source
      (origin
        (method git-fetch)
@@ -2394,7 +2394,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1941jvk72qy9g41cs2p3d6fphkg8ccjlsiclwymvzdyi7s3ilml7"))
+        (base32 "1n7czmv8mamaphpr2cnppddpgmb914pjd7msxng0fim6w7bhil14"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -2413,13 +2413,15 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'unbundle-dependencies
-            (lambda _
-              (let ((single-app #$(this-package-input "single-application-qt5")))
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((libSingleApplication.a
+                     (search-input-file inputs "lib/libSingleApplication.a"))
+                    (httplib.h (search-input-file inputs "include/httplib.h")))
                 (substitute* "CMakeLists.txt"
                   ;; Remove include and source dirs,replace with the correct one
-                  (("third_party/blurhash/blurhash.cpp") "")
-                  (("third_party/cpp-httplib-0.5.12")
-                   (string-append "\"" single-app "/include\""))
+                  (("third_party/blurhash/blurhash\\.[ch]pp") "")
+                  (("third_party/cpp-httplib-0\\.5\\.12")
+                   (dirname httplib.h))
                   (("add_subdirectory.*third_party/SingleApplication.*") "")
                   ;; Link using the correct static/shared libs
                   (("SingleApplication::SingleApplication")
@@ -2427,7 +2429,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
                     ;; Dynamic libraries
                     "httplib" "\n" "blurhash" "\n"
                     ;; Static library
-                    single-app "/lib/libSingleApplication.a"))))))
+                    libSingleApplication.a))))))
           (add-after 'unpack 'fix-determinism
             (lambda _
               ;; Make Qt deterministic.
@@ -2457,18 +2459,18 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
            mtxclient
            openssl
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtkeychain
            qtgraphicaleffects
-           qtmultimedia
-           qtquickcontrols2
-           qtsvg
+           qtmultimedia-5
+           qtquickcontrols2-5
+           qtsvg-5
            spdlog
            single-application-qt5
            xcb-util-wm
            zlib))
     (native-inputs
-     (list asciidoc doxygen graphviz pkg-config qttools))
+     (list asciidoc doxygen graphviz pkg-config qttools-5))
     (home-page "https://github.com/Nheko-Reborn/nheko")
     (synopsis "Desktop client for Matrix using Qt and C++14")
     (description "@code{Nheko} want to provide a native desktop app for the
@@ -2497,12 +2499,12 @@ notification, emojis, E2E encryption, and voip calls.")
     (inputs
      (list libqmatrixclient
            qtbase-5
-           qtdeclarative
-           qtmultimedia
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg
-           qttools
+           qtdeclarative-5
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5
+           qttools-5
            xdg-utils))
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -2782,6 +2784,8 @@ asynchronicity.")
                     (url "https://github.com/google/libphonenumber")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
+              (patches (search-patches
+                        "libphonenumber-reproducible-build.patch"))
               (sha256
                (base32
                 "06y3mh1d1mks6d0ynxp3980g712nkf8l5nyljpybsk326b246hg9"))))
@@ -2803,20 +2807,25 @@ validating international phone numbers.")
    (home-page "https://github.com/google/libphonenumber")
    (license license:asl2.0)))
 
-
 (define-public chatty
  (package
    (name "chatty")
-   (version "0.4.0")
+   (version "0.6.7")
    (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://source.puri.sm/Librem5/chatty.git")
-                    (commit (string-append "v" version))))
+                    (commit (string-append "v" version))
+                    ;; Fetch the required subprojects, notably libcmatrix
+                    ;; which has no releases and is developed in tandem.
+                    ;; Note: this also pulls in libgd, and embeds functionality
+                    ;; from it that is not part of the public API, making
+                    ;; unbundling difficult.
+                    (recursive? #true)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "12k1a5xrwd6zk4x0m53hbzggk695z3bpbzy1wcikzy0jvch7h13d"))))
+                "11q07vjrrjf3k00kk41vm79brpq0qigz7l328br3g0li979kz32v"))))
    (build-system meson-build-system)
    (arguments
     '(#:phases
@@ -2824,12 +2833,25 @@ validating international phone numbers.")
         (add-after 'unpack 'skip-updating-desktop-database
           (lambda _
             (substitute* "meson.build"
-              (("meson.add_install_script.*") "")))))))
+              (("meson.add_install_script.*") ""))))
+        (add-before 'check 'pre-check
+          (lambda* (#:key tests? #:allow-other-keys)
+            (when tests?
+              ;; One test requires a running Xorg server.  Start one.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1")
+              ;; HOME must be writable for writing configuration files.
+              (setenv "HOME" "/tmp")))))))
    (native-inputs
-    (list gettext-minimal `(,glib "bin") pkg-config protobuf))
+    (list gettext-minimal
+          `(,glib "bin")
+          pkg-config
+          protobuf
+          xorg-server-for-tests))
    (inputs
     (list feedbackd
           folks
+          gnome-desktop
           gsettings-desktop-schemas
           gspell
           json-glib
@@ -2910,9 +2932,9 @@ as phones, embedded computers or microcontrollers.")
                   "\"../build"))
                #t)))))
       (inputs
-       (list qtbase-5 qtdeclarative qtwebchannel))
+       (list qtbase-5 qtdeclarative-5 qtwebchannel-5))
       (propagated-inputs
-       (list qtwebengine))
+       (list qtwebengine-5))
       (home-page "https://movim.eu/")
       (synopsis "Desktop Application for Movim")
       (description
@@ -3039,8 +3061,8 @@ social and chat platform.")
        ("qite" ,qite)
        ("qtbase" ,qtbase-5)
        ("qtkeychain" ,qtkeychain)
-       ("qtmultimedia" ,qtmultimedia)
-       ("qtsvg" ,qtsvg)
+       ("qtmultimedia-5" ,qtmultimedia-5)
+       ("qtsvg-5" ,qtsvg-5)
        ("qtx11extras" ,qtx11extras)
        ("usrsctp" ,usrsctp)
        ("x11" ,libx11)
diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
index 87a565059e..ae8bea1009 100644
--- a/gnu/packages/mingw.scm
+++ b/gnu/packages/mingw.scm
@@ -46,7 +46,7 @@ specified, recurse and return a mingw-w64 with support for winpthreads."
     (package
       (name (string-append "mingw-w64" "-" machine
                            (if with-winpthreads? "-winpthreads" "")))
-      (version "8.0.0")
+      (version "10.0.0")
       (source
        (origin
          (method url-fetch)
@@ -54,7 +54,7 @@ specified, recurse and return a mingw-w64 with support for winpthreads."
                "mirror://sourceforge/mingw-w64/mingw-w64/"
                "mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
          (sha256
-          (base32 "0qjpb9rviasfshk337j5r32ncmrwml8sv6qnmb1lp4mkdbm41is4"))
+          (base32 "15089y4rlj6g1m2m3cm3awndw3rbzhznl7skd0vkmikjxl546sxs"))
          (patches
           (search-patches "mingw-w64-6.0.0-gcc.patch"
                           "mingw-w64-dlltool-temp-prefix.patch"
@@ -108,6 +108,7 @@ specified, recurse and return a mingw-w64 with support for winpthreads."
                               xlibc "/lib" ":"
                               xlibc "/" ,triplet "/lib"))))))))
          #:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1")
+         #:parallel-build? #f ; parallel builds often fail with empty .a files
          #:tests? #f ; compiles and includes glibc headers
          #:strip-binaries? #f))
       (home-page "https://mingw-w64.org")
@@ -143,7 +144,7 @@ several new APIs such as DirectX and DDK, and 64-bit support.")
 (define-public mingw-w64-tools
   (package
     (name "mingw-w64-tools")
-    (version "8.0.0")
+    (version "10.0.0")
     (source
      (origin
        (method url-fetch)
@@ -151,7 +152,7 @@ several new APIs such as DirectX and DDK, and 64-bit support.")
              "mirror://sourceforge/mingw-w64/mingw-w64/"
              "mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
        (sha256
-        (base32 "0qjpb9rviasfshk337j5r32ncmrwml8sv6qnmb1lp4mkdbm41is4"))))
+        (base32 "15089y4rlj6g1m2m3cm3awndw3rbzhznl7skd0vkmikjxl546sxs"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 1694f94b98..c14d62c312 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be>
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
+;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -743,3 +744,21 @@ snapshots, without displaying anything.  When put into the foreground again,
 display resumes.
 @end itemize")
     (license license:bsd-2)))
+
+(define-public python-statsd
+  (package
+    (name "python-statsd")
+    (version "3.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "statsd" version))
+              (sha256
+               (base32
+                "07yxnlalvcglgwa9pjs1clwrmwx7a4575jai7q05jz3g4i6dprp3"))))
+    (build-system python-build-system)
+    (native-inputs (list python-mock python-nose))
+    (home-page "https://github.com/jsocol/pystatsd")
+    (synopsis "Simple StatsD client")
+    (description "StatsD is a friendly front-end to Graphite.  This package
+provides a simple Python client for the StatsD daemon.")
+    (license license:expat)))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 4a8bdad711..e2b112832b 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -10,6 +10,8 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Joeke de Graaf <joeke@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,12 +34,15 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
@@ -54,9 +59,11 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
-  #:use-module (guix build-system cmake))
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system meson))
 
 (define-public libmad
   (package
@@ -247,6 +254,35 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
     ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
     (license (list license:lgpl2.1 license:mpl1.1))))
 
+(define-public minimp3
+  ;; The latest commit is used as there is no release.
+  (let ((commit   "afb604c06bc8beb145fecd42c0ceb5bda8795144")
+        (revision "0"))
+    (package
+      (name "minimp3")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/lieff/minimp3")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0brgrbij8swhp7lac21xnnrr5l0371lkr5vz6h9x0dbz1qq2xhsj"))))
+      ;; TODO: minimp3 has many more files for at least tests with scripts to
+      ;; run them, although it is unclear how to easily package them.
+      (build-system copy-build-system)
+      (arguments
+       '(#:install-plan
+         '(("minimp3.h" "include/")
+           ("minimp3_ex.h" "include/"))))
+      (home-page "https://github.com/lieff/minimp3")
+      (synopsis "Minimalistic MP3 decoder header library")
+      (description
+       "Minimp3 is a header-only MP3 decoder library.")
+      (license license:cc0))))
+
 (define-public mp3info
   (package
     (name "mp3info")
@@ -710,3 +746,70 @@ fingerprinting library and the Acoustid API.")
 cross-platform, works with all Python versions, and is very
 simple to use yet fully featured.")
     (license license:gpl3)))
+
+(define-public wavbreaker
+  (package
+    (name "wavbreaker")
+    (version "0.15")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/thp/wavbreaker/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "16h0sfcb8av6a368giizzwv9m0lq5c3bnf4b9vyyh9nkbbsc7c3j"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:modules
+       ((guix build utils)
+        (guix build meson-build-system))
+
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           ;; This wrapping is necessary to make wavbreaker find things it
+           ;; needs in pure environments.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (adwaita-icons (assoc-ref inputs "adwaita-icon-theme"))
+                   (hicolor-icons (assoc-ref inputs "hicolor-icon-theme"))
+                   (shared-mime (assoc-ref inputs "shared-mime-info")))
+               (wrap-program (string-append out "/bin/wavbreaker")
+                 ;; Needed in order for wavbreakere to find the icons it needs
+                 `("XDG_DATA_DIRS" ":" prefix
+                   ,(map (lambda (package)
+                           (string-append package "/share"))
+                         `(,out                   ;for wavbreaker's icon
+                           ,adwaita-icons
+                           ,hicolor-icons
+                           ,shared-mime)))
+                 ;; This is necessary to load some pixbufs like Adwaita's
+                 ;; check-symbolic.svg and wavbreaker's own logo in the
+                 ;; 'about' section.
+                 `("GDK_PIXBUF_MODULE_FILE" =
+                   (,(getenv "GDK_PIXBUF_MODULE_FILE")))
+                 ;; Needed for GTK's file chooser to not crash.
+                 `("GSETTINGS_SCHEMA_DIR" =
+                 (,(string-append (assoc-ref inputs "gtk+")
+                                  "/share/glib-2.0/schemas"))))))))))
+    (native-inputs
+     (list pkg-config cmake))
+    (inputs
+     (list glib
+           gtk+
+           ao
+           bash-minimal
+           adwaita-icon-theme
+           shared-mime-info
+           hicolor-icon-theme
+           gsettings-desktop-schemas))
+    (home-page "https://wavbreaker.sourceforge.io/")
+    (synopsis "WAV and MP3 file splitter with a GUI")
+    (description
+     "Wavbreaker is a WAV and MP3 file splitter.  It can be used to break up a
+WAV or MP3 audio file into multiple WAV files.  Wavbreaker contains a helpful
+waveform display of the audio file being edited, to help the user in splitting
+the file at the right point.  Wavbreaker also supports splitting MP3 files
+without re-encoding them, to preserve their original audio quality.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 541326d5d3..046471f32d 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -108,7 +108,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.23.7")
+    (version "0.23.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -117,7 +117,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "04c2fr4akiylafb7wdjzn7r7d90rmzilbnagrifqyf3wf6ncn3cn"))))
+                "1kvq9shd6b7y02r386s1chjmvs44wij5bfzn6qgq46dmyfdmdfw6"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -226,7 +226,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.46")
+    (version "0.47")
     (source (origin
               (method url-fetch)
               (uri
@@ -235,7 +235,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "0klkjaq6n05cmgcwiawjm6d3rn6mrncy72s3x0abjjnx177pfzqp"))))
+                "1714saz8m6y2chby0c1qh3vgqc3srlr1jq98vhzmjykcpjqj7nk1"))))
     (build-system meson-build-system)
     (inputs (list boost pcre libmpdclient ncurses))
     (native-inputs
@@ -463,8 +463,8 @@ support")
            libmtp
            mpg123
            qtbase-5
-           qtmultimedia
-           qtsvg
+           qtmultimedia-5
+           qtsvg-5
            taglib
            zlib))
     (synopsis "Graphical MPD Client")
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index 6aafa1eb48..c0977f0e17 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,14 +29,14 @@
 (define-public mtools
   (package
     (name "mtools")
-    (version "4.0.37")
+    (version "4.0.40")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mtools/mtools-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0hl3zbj0lyx2m0fyydv0wcgpmyqfg4khp098jqjn2yz44dz1k6vr"))
+                "1x2xknvyrbqjb6bv0h3p5s0bvss6ici1zxd7jcids4a06m1clbx2"))
               (patches
                (search-patches "mtools-mformat-uninitialized.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 520d64d33c..dcc1a43d2d 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -253,7 +253,7 @@
     (inputs
      (list dbus
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            ;; Plugin dependencies
            alsa-lib
            curl
@@ -435,7 +435,7 @@ score, keyboard, guitar, drum and controller views.")
      `(("gettext" ,gettext-minimal)
        ("googletest" ,googletest)
        ("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)))
+       ("qtlinguist" ,qttools-5)))
     (inputs
      (list boost
            chromaprint
@@ -476,7 +476,7 @@ playing your music.")
 (define-public strawberry
   (package
     (name "strawberry")
-    (version "1.0.3")
+    (version "1.0.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -485,7 +485,7 @@ playing your music.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14fr2bm51k4n5byc9pwh3ba6v15s9jmqxigl1y9h00l7cvmfpbn1"))
+                "17mfavbbzx7hp7j5n9i7c3rajy16jicarabrl174p4gjv4zpy2sc"))
               (modules '((guix build utils)
                          (ice-9 regex)))
               (snippet
@@ -529,7 +529,7 @@ playing your music.")
      `(("gettext" ,gettext-minimal)
        ("googletest" ,googletest)
        ("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)
+       ("qtlinguist" ,qttools-5)
        ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      (list alsa-lib
@@ -768,7 +768,7 @@ settings (aliasing, linear interpolation and cubic interpolation).")
     (native-inputs
      `(("cppunit" ,cppunit)
        ("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)))
+       ("qtlinguist" ,qttools-5)))
     (inputs
      (list alsa-lib
            jack-1
@@ -2226,7 +2226,7 @@ users to select LV2 plugins and run them with jalv.")
      (list benchmark
            googletest
            python-wrapper
-           qttools
+           qttools-5
            xorg-server-for-tests))
     (inputs
      (list bash-minimal
@@ -2261,10 +2261,10 @@ users to select LV2 plugins and run them with jalv.")
            portmidi
            protobuf
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtkeychain
            qtscript
-           qtsvg
+           qtsvg-5
            qtx11extras
            rubberband
            soundtouch
@@ -2301,9 +2301,9 @@ perform creative live mixes with digital music files.")
            new-session-manager
            liblo
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://synthv1.sourceforge.io")
     (synopsis "Polyphonic subtractive synthesizer")
     (description
@@ -2334,9 +2334,9 @@ oscillators and stereo effects.")
            new-session-manager
            liblo
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://drumkv1.sourceforge.io")
     (synopsis "Drum-kit sampler synthesizer with stereo effects")
     (description
@@ -2367,9 +2367,9 @@ effects.")
            new-session-manager
            liblo
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://samplv1.sourceforge.io")
     (synopsis "Polyphonic sampler synthesizer with stereo effects")
     (description
@@ -2400,9 +2400,9 @@ effects.")
            liblo
            fftwf
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://padthv1.sourceforge.io")
     (synopsis "Polyphonic additive synthesizer")
     (description
@@ -2928,7 +2928,7 @@ browser.")
                                "/manpages/docbook.xsl")))
              #t)))))
     (inputs
-     (list qtbase-5 qtsvg qttools alsa-lib))
+     (list qtbase-5 qtsvg-5 qttools-5 alsa-lib))
     (native-inputs
      (list pkg-config
            libxslt ; for xsltproc
@@ -2972,10 +2972,10 @@ backends, including ALSA, OSS, Network and FluidSynth.")
                                "/manpages/docbook.xsl")))
              #t)))))
     (inputs
-     (list drumstick qtbase-5 qtsvg qtx11extras))
+     (list drumstick qtbase-5 qtsvg-5 qtx11extras))
     (native-inputs
      (list libxslt ;for xsltproc
-           docbook-xsl qttools pkg-config))
+           docbook-xsl qttools-5 pkg-config))
     (home-page "https://vmpk.sourceforge.io/")
     (synopsis "Virtual MIDI piano keyboard")
     (description
@@ -3316,7 +3316,7 @@ from the command line.")
            suil
            zlib))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://qtractor.org/")
     (synopsis "Audio/MIDI multi-track sequencer")
     (description
@@ -4423,7 +4423,7 @@ plugins, a switch trigger, a toggle switch, and a peakmeter.")
     (inputs
      (list qtbase-5 alsa-lib jack-1 liblo lv2))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "http://qmidiarp.sourceforge.net/")
     (synopsis "MIDI arpeggiator")
     (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
@@ -4449,7 +4449,7 @@ modules running in parallel.")
     (inputs
      (list qtbase-5 alsa-lib))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "http://alsamodular.sourceforge.net/")
     (synopsis "MIDI event router and filter")
     (description "QMidiRoute is a MIDI event router and filter.  MIDI note,
@@ -4592,7 +4592,7 @@ are a C compiler and glib.  Full API documentation and examples are included.")
                       "\"")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ;; rpmalloc is a public domain memory allocator. This version specified
        ;; below is the version required by LMMS.
        ;; To get the new commit of rpmalloc to use here, run
@@ -4757,14 +4757,14 @@ includes LV2 plugins and a JACK standalone client.")
            portmidi
            pulseaudio
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtquickcontrols2
+           qtquickcontrols2-5
            qtscript
-           qtsvg
+           qtsvg-5
            qtxmlpatterns))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (synopsis "Music composition and notation software")
     (description
      "MuseScore is a music score typesetter.  Its main purpose is the creation
@@ -4828,7 +4828,7 @@ sample library.")
            pcre
            pulseaudio                   ; required by rtaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            rtaudio
            rubberband
            sord))
@@ -4836,7 +4836,7 @@ sample library.")
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (home-page "https://muse-sequencer.github.io/")
     (synopsis "MIDI/Audio sequencer")
     (description "MusE is a MIDI/Audio sequencer with recording and editing
@@ -5021,7 +5021,7 @@ specification and header.")
            wavpack
            zlib))
     (native-inputs
-     (list pkg-config qttools))           ;for qtlinguist
+     (list pkg-config qttools-5))           ;for qtlinguist
     (synopsis "Music composition and editing environment based around a MIDI
 sequencer")
     (description "Rosegarden is a music composition and editing environment
@@ -5550,12 +5550,12 @@ discard bad quality ones.
                    ,(map (lambda (label)
                            (string-append (assoc-ref inputs label)
                                           "/lib/qt5/plugins"))
-                         '("qtbase" "qtmultimedia" "qtsvg")))
+                         '("qtbase" "qtmultimedia-5" "qtsvg-5")))
                  `("QML2_IMPORT_PATH" ":" prefix
                    ,(map (lambda (label)
                            (string-append (assoc-ref inputs label)
                                           "/lib/qt5/qml"))
-                         '("qtmultimedia"))))
+                         '("qtmultimedia-5"))))
                #t))))))
     (inputs
      (list alsa-lib
@@ -5563,13 +5563,13 @@ discard bad quality ones.
            jack-1
            portaudio
            qtbase-5
-           qtmultimedia
-           qtsvg))
+           qtmultimedia-5
+           qtsvg-5))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("hicolor-icon-theme" ,hicolor-icon-theme)
        ("itstool" ,itstool)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (synopsis "Musical instrument tuner")
     (description "FMIT is a graphical utility for tuning musical instruments,
 with error and volume history, and advanced features.")
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 40d79a508e..e77ef720db 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -31,13 +31,13 @@
 (define-public nano
   (package
     (name "nano")
-    (version "6.3")
+    (version "6.4")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz"))
       (sha256
-       (base32 "11w6dxg8159bhcap9gzv11nlcnl8mfx5ss0ga05p6wjnk2j2slzb"))))
+       (base32 "1h318vrpscfcarmq3s870cn92iyw46w426nyavg9cxwaly6ax6a1"))))
     (build-system gnu-build-system)
     (inputs
      (list gettext-minimal ncurses))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 66a8167b81..25beef8dc1 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2020, 2021 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -89,6 +89,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autogen)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
@@ -239,6 +240,98 @@ on byte-critical systems.  It supports HTTP, HTTPS, FTP and FTPS
 protocols.")
     (license license:gpl2+)))
 
+(define-public lcrq
+  (package
+    (name "lcrq")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/lcrq")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0jf7x3zcdbz5b99qz7liw4i90hn9s457zr82n0r8g9qsi81a1d8c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            (string-append "PREFIX="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"))
+    (home-page "https://librecast.net/lcrq.html")
+    (synopsis "librecast RaptorQ library")
+    (description
+     "C library implementation of RaptorQ Forward Error Correction for
+Librecast.  RFC6330 (IETF) describes the RaptorQ proposed standard, which LCRQ
+more-or-less follows. The primary focus has been on building a fast, simple
+and dependency-free FEC implementation for use with Librecast, and not on
+strict standards compliance.  The code does, however, fairly closely follow
+the RFC.")
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public lcsync
+  (package
+    (name "lcsync")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/lcsync")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0s038b4xg9nlzhrganzjyfvc6n6cgd6kilnpik4axp62j2n5q11q"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            ;; avoid running setcap in the install process
+                            "SETCAP_PROGRAM=true"
+                            (string-append "prefix="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure) ;no configure script
+                  (add-before 'check 'remove-network-tests
+                    (lambda _
+                      ;; these tests require networking
+                      (delete-file "./test/0000-0027.c")
+                      (delete-file "./test/0000-0049.c")
+                      (delete-file "./test/0000-0074.c")))
+                  (add-after 'unpack 'remove-immintrin.h
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (substitute* "Makefile"
+                        (("CFLAGS :=")
+                         (string-append "CFLAGS := -I" (search-input-directory
+                                                         inputs "include/simde"))))
+                      (substitute* (find-files "src")
+                        ((".*immintrin\\.h.*")
+                         (string-append "#include <simde-features.h>\n"
+                                        "#include <x86/ssse3.h>\n"))
+                        (("__m128i") "simde__m128i"))))
+                  (add-before 'build 'add-library-paths
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let* ((librecast (assoc-ref inputs "librecast")))
+                        (substitute* (list "./src/Makefile" "./test/Makefile")
+                          (("-llibrecast")
+                           (string-append "-L" librecast "/lib -llibrecast")))))))))
+    (inputs (list librecast libsodium))
+    (native-inputs (list simde))
+    (home-page "https://librecast.net/lcsync.html")
+    (synopsis "librecast file and data syncing tool")
+    (description
+     "lcsync is a tool to sync files over IPv6 multicast or the
+local filesystem.  It splits the file into blocks, hashes them, and compares
+them in order to efficiently transfer a minimal amount of data.")
+    (license (list license:gpl2 license:gpl3))))
+
 ;; This package does not have a release yet.
 ;; But this is required to provide a feature in PipeWire.
 (define-public libcamera
@@ -383,6 +476,54 @@ GLib-based library, libnice, as well as GStreamer elements to use it.")
         license:lgpl2.1+
         license:mpl1.1)))))
 
+(define-public librecast
+  (package
+    (name "librecast")
+    (version "0.5.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/librecast")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1zzdxawzsj0lxyxm8c2wdqx3b633f8ybvlg6szs4v0y42xg4a829"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            (string-append "PREFIX="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (add-before 'check 'remove-network-tests
+                    (lambda _
+                      ;; these tests require networking
+                      (delete-file "./test/0000-0010.c")
+                      (delete-file "./test/0000-0012.c")
+                      (delete-file "./test/0000-0013.c")
+                      (delete-file "./test/0000-0014.c")
+                      (delete-file "./test/0000-0015.c")
+                      (delete-file "./test/0000-0016.c")
+                      (delete-file "./test/0000-0018.c")
+                      (delete-file "./test/0000-0019.c")
+                      (delete-file "./test/0000-0021.c")
+                      (delete-file "./test/0000-0028.c")
+                      (delete-file "./test/0000-0036.c")
+                      (delete-file "./test/0000-0037.c")
+                      (delete-file "./test/0000-0038.c")
+                      (delete-file "./test/0000-0039.c")
+                      (delete-file "./test/0000-0040.c"))))))
+    (inputs (list libsodium lcrq))
+    (synopsis "librecast IPv6 multicast library")
+    (description "Librecast is a C library which supports IPv6 multicast
+networking.")
+    (home-page "https://librecast.net/librecast.html")
+    (license (list license:gpl2 license:gpl3))))
+
 (define-public rtmpdump
   ;; There are no tags in the repository, and the project is unlikely to
   ;; make new releases.  Take a recent commit for multiple security fixes
@@ -1636,8 +1777,8 @@ of the same name.")
            `(,nghttp2 "lib")
            minizip
            qtbase-5
-           qtmultimedia
-           qtsvg
+           qtmultimedia-5
+           qtsvg-5
            sbc
            snappy
            zlib
@@ -1650,7 +1791,7 @@ of the same name.")
            perl
            pkg-config
            python-wrapper
-           qttools))
+           qttools-5))
     (synopsis "Network traffic analyzer")
     (description "Wireshark is a network protocol analyzer, or @dfn{packet
 sniffer}, that lets you capture and interactively browse the contents of
@@ -3044,7 +3185,7 @@ networks using zeromq.  It has these key characteristics:
 (define-public libsocketcan
   (package
     (name "libsocketcan")
-    (version "0.0.11")
+    (version "0.0.12")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3053,8 +3194,13 @@ networks using zeromq.  It has these key characteristics:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "17z2y2r9xkixhr9bxr50m77fh710afl30s7jdhbxrvf56vmal2jr"))))
+                "0nrav2yqxgb7jwnhrwirnxs9ycqqh90sqgv5a8lns837jf385jvq"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               ;; Upstream already puts (more) files in share/doc/libsocketcan.
+               (delete 'install-license-files))))
     (native-inputs
      (list autoconf automake libtool))
     (home-page "https://git.pengutronix.de/cgit/tools/libsocketcan")
@@ -3174,20 +3320,19 @@ Features:
 (define-public net-snmp
   (package
     (name "net-snmp")
-    (version "5.9.1")
+    (version "5.9.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
                                   version "/net-snmp-" version ".tar.gz"))
               (sha256
                (base32
-                "0gwcyi9qk707jgfsgmdr9w2w3r892fnqaam9v7zxpkg69njd8zzb"))
+                "02pgl89s8qll5zhdp61rbn6vpl084gx55bjb1cqg3wqvgsdz55r0"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; Drop bundled libraries.
-                  (delete-file-recursively "snmplib/openssl")
-                  #t))))
+                  (delete-file-recursively "snmplib/openssl")))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -3217,8 +3362,7 @@ Features:
              ;; These tests require network access.
              (for-each delete-file
                        '("testing/fulltests/default/T070com2sec_simple"
-                         "testing/fulltests/default/T071com2sec6_simple"))
-             #t))
+                         "testing/fulltests/default/T071com2sec6_simple"))))
          (add-after 'unpack 'patch-Makefile.PL
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "Makefile.in"
@@ -3226,8 +3370,7 @@ Features:
                 (string-append "Makefile.PL PREFIX="
                                (assoc-ref outputs "out")
                                " INSTALLDIRS=site" " NO_PERLLOCAL=1"
-                               " -NET")))
-             #t)))))
+                               " -NET"))))))))
     (inputs
      (list libnl ncurses ; for the ‘apps’
            openssl perl))
@@ -3802,18 +3945,19 @@ service is available at @url{https://pagekite.net/}, or you can run your own.")
 (define-public ipcalc
   (package
     (name "ipcalc")
-    (version "0.41")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://jodies.de/ipcalc-archive/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12if9sm8h2ac0pgwkw835cgyqjxm6h27k4kfn2vfas9krrqwbafx"))))
-    (inputs `(("perl" ,perl)
-              ("tar" ,tar)
-              ("gzip" ,gzip)
-              ("tarball" ,source)))
+    (version "0.51")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             ;; This is the IPv6-capable continuation of the unmaintained
+             ;; <https://jodies.de/ipcalc-archive/>.
+             (url "https://github.com/kjokjo/ipcalc")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cnygb69vjmp3by75jcd2z4y3ybp1s7x4nl3d32xa49h8lkhdbfv"))))
+    (inputs `(("perl" ,perl)))
     (build-system trivial-build-system) ;no Makefile.PL
     (arguments
      `(#:modules ((guix build utils))
@@ -3824,25 +3968,21 @@ service is available at @url{https://pagekite.net/}, or you can run your own.")
          (let* ((source (assoc-ref %build-inputs "source"))
                 (perl (string-append (assoc-ref %build-inputs "perl")
                                      "/bin"))
-                (tar (assoc-ref %build-inputs "tar"))
-                (gz  (assoc-ref %build-inputs "gzip"))
                 (out (assoc-ref %outputs "out"))
                 (bin (string-append out "/bin"))
                 (doc (string-append out "/share/doc/ipcalc")))
-           (setenv "PATH" (string-append gz "/bin"))
-           (invoke (string-append tar "/bin/tar") "xvf" source)
-           (chdir (string-append ,name "-" ,version))
+           (copy-recursively source "source")
+           (chdir "source")
 
            (install-file "ipcalc" bin)
-           (patch-shebang (string-append bin "/ipcalc") (list perl))
-           #t))))
+           (patch-shebang (string-append bin "/ipcalc") (list perl))))))
     (synopsis "Simple IP network calculator")
     (description "ipcalc takes an IP address and netmask and calculates the
 resulting broadcast, network, Cisco wildcard mask, and host range.  By giving
 a second netmask, you can design subnets and supernets.  It is also intended
 to be a teaching tool and presents the subnetting results as
 easy-to-understand binary values.")
-    (home-page "http://jodies.de/ipcalc")
+    (home-page "https://github.com/kjokjo/ipcalc")
     (license license:gpl2+)))
 
 (define-public tunctl
@@ -4021,32 +4161,30 @@ thousands of connections is clearly realistic with today's hardware.")
 (define-public lldpd
   (package
     (name "lldpd")
-    (version "1.0.13")
+    (version "1.0.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "00a7v24qhxw80yk2v79wrkfn7br4r8pcajyrpz8j0xx2v1zq4ffn"))
+        (base32 "1s0j5p0mjh1pda1aq5wm4hd41fh1m864jgbs82y5sshi9whijj57"))
        (modules '((guix build utils)))
        (snippet
         '(begin
            ;; Drop bundled library.
-           (delete-file-recursively "libevent")
-           #t))))
+           (delete-file-recursively "libevent")))))
     (arguments
-     `(#:configure-flags
-       (list
-        "--with-privsep-user=nobody"
-        "--with-privsep-group=nogroup"
-        "--localstatedir=/var"
-        "--enable-pie"
-        "--disable-static"
-        "--without-embedded-libevent"
-        (string-append "--with-systemdsystemunitdir="
-                       (assoc-ref %outputs "out")
-                       "/lib/systemd/system"))))
+     (list #:configure-flags
+           #~(list
+              "--with-privsep-user=nobody"
+              "--with-privsep-group=nogroup"
+              "--localstatedir=/var"
+              "--enable-pie"
+              "--disable-static"
+              "--without-embedded-libevent"
+              (string-append "--with-systemdsystemunitdir="
+                             #$output "/lib/systemd/system"))))
     (build-system gnu-build-system)
     (inputs
      (list libevent libxml2 openssl readline))
diff --git a/gnu/packages/nim.scm b/gnu/packages/nim.scm
index 8d1f5d0dd0..6da382119f 100644
--- a/gnu/packages/nim.scm
+++ b/gnu/packages/nim.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
+;;; Copyright © 2022 Trevor Richards <trev@trevdev.ca>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,7 +25,13 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages certs)
+  #:use-module (gnu packages parallel)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages tls))
 
 (define-public nim
   (package
@@ -39,7 +46,7 @@
        (base32 "0lm4450ig8k4l3rzxv6kcqji5l1lzicsw76ckwxm0q9qdz713cb7"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; No tests.
+     `(#:tests? #f          ; TODO: Investigate tests failures.
        #:phases
          (modify-phases %standard-phases
            (delete 'configure)          ; no configure script
@@ -47,26 +54,99 @@
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
                  (substitute* "install.sh"
-                   (("1/nim") "1"))
-                 #t)))
+                  (("/usr/local") out)
+                  (("/opt/nimble") (string-append out "/share/nimble"))
+                  (("configdir=/etc/nim")
+                   (string-append "configdir=" out "/etc/nim"))))))
+           (add-after 'unpack 'patch-dynamic-libraries
+             (lambda* (#:key inputs native-inputs #:allow-other-keys)
+               ;(substitute* "compiler/nodejs.nim"
+               ;  (("nodejs")
+               ;   (search-input-file (or native-inputs inputs)
+               ;                      "/bin/nodejs"))
+               ;  (("node")
+               ;   (search-input-file (or native-inputs inputs)
+               ;                      "/bin/node")))
+               (substitute* "lib/system.nim"
+                 (("libgc\\.so")
+                  (search-input-file (or native-inputs inputs)
+                                     "/lib/libgc.so")))
+               ;(substitute* "lib/wrappers/mysql.nim"
+               ;  (("\(libmysqlclient|libmariadbclient\)\\.so")
+               ;   (search-input-file (or native-inputs inputs)
+               ;                      "/lib/libmariadbclient.so")))
+               (substitute* "lib/wrappers/openssl.nim"
+                 (("libssl\\.so")
+                  (search-input-file (or native-inputs inputs)
+                                     "/lib/libssl.so"))
+                 (("libcrypto\\.so")
+                  (search-input-file (or native-inputs inputs)
+                                     "/lib/libcrypto.so")))
+               (substitute* "lib/wrappers/pcre.nim"
+                 (("libpcre\\.so")
+                  (search-input-file (or native-inputs inputs)
+                                     "/lib/libpcre.so")))
+               ;(substitute* "lib/wrappers/postgres.nim"
+               ;  (("libpg\\.so")
+               ;   (search-input-file (or native-inputs inputs)
+               ;                      "/lib/libpg.so")))
+               (substitute* "lib/wrappers/sqlite3.nim"
+                 (("libsqlite3\\.so")
+                  (search-input-file (or native-inputs inputs)
+                                     "/lib/libsqlite3.so")))))
            (add-after 'patch-source-shebangs 'patch-more-shebangs
              (lambda _
                (let ((sh (which "sh")))
                  (substitute* '("tests/stdlib/tosprocterminate.nim"
-                                        "lib/pure/osproc.nim")
+                                "tests/stdlib/tstrscans.nim"
+                                "lib/pure/osproc.nim"
+                                "lib/pure/strscans.nim")
                    (("/bin/sh") sh))
-                 (substitute* (find-files "c_code" "stdlib_osproc.c")
-                   (("\"/bin/sh\", 7") (format #f "~s, ~s" sh (string-length sh)))))
-               #t))
+                 (substitute* (find-files "c_code" "stdlib_osproc\\.nim\\.c")
+                   (("\"/bin/sh\", 7") (format #f "~s, ~s" sh (string-length sh)))))))
            (replace 'build
-             (lambda _
-               (invoke "sh" "build.sh")
-               #t))
+             (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
+               (setenv "XDG_CACHE_HOME" "./cache-home")
+               (setenv "HOME" "./cache-home")
+               (mkdir-p "./cache-home")
+               (invoke "sh" "build.sh"
+                       "--parallel"
+                       (if parallel-build?
+                         (number->string (parallel-job-count))
+                         "1"))
+               (sleep 5)        ; Wait for the parallel builds to finish.
+               (invoke "./bin/nim" "c" "-d:release" "koch")
+               (invoke "./koch" "boot" "-d:release")
+               (invoke "./koch" "tools")))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (invoke "./koch" "tests"))))
            (replace 'install
              (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (invoke "./install.sh" out)
-                 #t))))))
+               (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+                 (mkdir-p bin)
+                 (invoke "./install.sh" bin)
+                 (for-each (lambda (file)
+                             (install-file file bin))
+                           (delete "testament" (find-files "bin"))))))
+           (add-after 'install 'install-completions
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((share (string-append (assoc-ref outputs "out") "/share"))
+                      (bash  (string-append share "/bash-completion/completions"))
+                      (zsh   (string-append share "/zsh/vendor_completions")))
+                 (mkdir-p bash)
+                 (mkdir-p zsh)
+                 (copy-file "tools/nim.bash-completion"
+                            (string-append bash "/nim"))
+                 (copy-file "dist/nimble/nimble.bash-completion"
+                            (string-append bash "/nimble"))
+                 (copy-file "tools/nim.zsh-completion"
+                            (string-append zsh "/_nim"))
+                 (copy-file "dist/nimble/nimble.bash-completion"
+                            (string-append zsh "/_nimble"))))))))
+    (inputs (list libgc openssl pcre sqlite))
+    (native-inputs (list nss-certs parallel))
     (home-page "https://nim-lang.org")
     (synopsis "Statically-typed, imperative programming language")
     (description "Nim (formerly known as Nimrod) is a statically-typed,
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index c757d202eb..782d109b24 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -864,7 +864,7 @@ source files.")
      (list ;; Runtime dependencies for binaries used as a bootstrap.
            c-ares-for-node
            brotli
-           icu4c-70
+           icu4c
            libuv-for-node
            `(,nghttp2-for-node "lib")
            openssl
@@ -879,7 +879,7 @@ source files.")
      (list bash-minimal
            coreutils
            c-ares-for-node
-           icu4c-70
+           icu4c
            libuv-for-node
            llhttp-bootstrap
            brotli
diff --git a/gnu/packages/notcurses.scm b/gnu/packages/notcurses.scm
index 9da298dce8..bb0086d4b3 100644
--- a/gnu/packages/notcurses.scm
+++ b/gnu/packages/notcurses.scm
@@ -1,4 +1,5 @@
 ;;; Copyright © 2021 Blake Shaw <blake@nonconstructivism.com>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,7 +21,7 @@
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix build utils)
-  #:use-module (guix git-download)
+  #:use-module (guix download)
   #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages check)
@@ -33,45 +34,49 @@
 
 (define-public notcurses
   (package
-   (name "notcurses")
-   (version "3.0.0")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-           (url "https://github.com/dankamongmen/notcurses")
-           (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-         (sha256
-          (base32 "1y9s77m1pp6syfml559d8dvif61y6zjldrdx1zri18q9sr0zqm9m"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:make-flags
-         (list (string-append "CC=" ,(cc-for-target)))
-         ;; These flags are documented in 'INSTALL.md' in the source distribution.
-         #:configure-flags
-         '(;; Do not build "coverage"
-           "-DUSE_COVERAGE=off"
-           ;; Do not build HTML documentation
-           "-DUSE_DOXYGEN=off"
-           ;; Don't include mouse support
-           "-DUSE_GPM=off"
-           ;; Use FFmpeg for multimedia support
-           "-DUSE_MULTIMEDIA=ffmpeg"
-           ;; Follow the Debian Free Software Guidelines, omitting nonfree content.
-           "-DFSG_BUILD=ON")))
-      (native-inputs
-       (list pkg-config
-             pandoc
-             doctest))
-      (inputs
-       (list ffmpeg
-             libdeflate
-             libunistring
-             ncurses
-             zlib))
-      (synopsis "Textual user interfaces")
-      (description "Notcurses is a library for building complex textual user
+    (name "notcurses")
+    (version "3.0.8")
+    (source
+     (origin
+       (method url-fetch)
+       ;; Note: the upstream git repository contains non-free media (see the
+       ;; documentation for DFSG_BUILD; but the project provides a sanitized
+       ;; tarball for distributions.  If switching to a git source, we need
+       ;; to find a way to elide the non-free demos with a source 'snippet'.
+       (uri (string-append "https://github.com/dankamongmen/notcurses/releases"
+                           "/download/v" version "/notcurses_" version
+                           "+dfsg.1.orig.tar.xz"))
+       (file-name (string-append name "-" version ".tar.xz"))
+       (sha256
+        (base32 "1nz32nqh7fn4i06hvl8ndkm0z4g08a6wzhilvv8ggx2hc5axsz89"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:make-flags
+       (list (string-append "CC=" ,(cc-for-target)))
+       ;; These flags are documented in 'INSTALL.md' in the source distribution.
+       #:configure-flags
+       '( ;; Do not build "coverage"
+         "-DUSE_COVERAGE=off"
+         ;; Do not build HTML documentation
+         "-DUSE_DOXYGEN=off"
+         ;; Don't include mouse support
+         "-DUSE_GPM=off"
+         ;; Use FFmpeg for multimedia support
+         "-DUSE_MULTIMEDIA=ffmpeg"
+         ;; Follow the Debian Free Software Guidelines, omitting nonfree content.
+         "-DDFSG_BUILD=ON")))
+    (native-inputs
+     (list pkg-config
+           pandoc
+           doctest))
+    (inputs
+     (list ffmpeg
+           libdeflate
+           libunistring
+           ncurses
+           zlib))
+    (synopsis "Textual user interfaces")
+    (description "Notcurses is a library for building complex textual user
 interfaces on modern terminals.")
-      (home-page "https://notcurses.com")
-      (license license:asl2.0)))
+    (home-page "https://notcurses.com")
+    (license license:asl2.0)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index ff24861eb0..6d4f8c8836 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -563,14 +564,14 @@ code for interfacing Caml with C from an IDL description of the C functions.")
 (define-public ocaml-extlib
   (package
     (name "ocaml-extlib")
-    (version "1.7.8")
+    (version "1.7.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ygrek.org/p/release/ocaml-extlib/"
                                   "extlib-" version ".tar.gz"))
               (sha256
                (base32
-                "0npq4hq3zym8nmlyji7l5cqk6drx2rkcx73d60rxqh5g8dla8p4k"))))
+                "1jydzw2n84cfiz9y6lk4gih4wbr8jybanmiryfs01svd07g4vpjq"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -2624,6 +2625,48 @@ process.  Also, in many cases, Lwt threads can interact without the need for
 locks or other synchronization primitives.")
     (license license:lgpl2.1)))
 
+(define-public ocaml-luv
+  (package
+    (name "ocaml-luv")
+    (version "0.5.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/aantron/luv/releases/download/"
+                                  version "/luv-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0hrsi8n2l31bcwgj847df4chjgqb9lmwkaky8fvvi15k25rz9v6c"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Remove bundled configure and libuv.
+                  (delete-file-recursively "src/c/vendor")
+                  #t))))
+    (build-system dune-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'use-system-libuv
+                 (lambda _
+                   (setenv "LUV_USE_SYSTEM_LIBUV" "yes")))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "dune" "runtest" "--no-buffer" "--force")))))))
+    (inputs (list libuv))
+    (propagated-inputs (list ocaml-ctypes ocaml-result ocaml-odoc))
+    (native-inputs (list ocaml-base ocaml-alcotest))
+    (home-page "https://github.com/aantron/luv")
+    (synopsis "Binding to libuv: cross-platform asynchronous I/O")
+    (description
+     "Luv is a binding to libuv, the cross-platform C library that does
+asynchronous I/O in Node.js and runs its main loop.  Besides asynchronous I/O,
+libuv also supports multiprocessing and multithreading.  Multiple event loops
+can be run in different threads.  libuv also exposes a lot of other
+functionality, amounting to a full OS API, and an alternative to the standard
+module Unix.")
+    (license license:expat)))
+
 (define-public ocaml-lwt-react
   (package
     (inherit ocaml-lwt)
@@ -2769,6 +2812,45 @@ environment, parse command line arguments, interact with the file system and
 run command line programs.")
     (license license:isc)))
 
+(define-public ocaml-xml-light
+  (package
+    (name "ocaml-xml-light")
+    (version "2.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ncannasse/xml-light")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "089ywjz84y4p5iln94y54vh03b5fm2zrl2dld1398dyrby96dp6s"))))
+    (build-system ocaml-build-system)
+    (arguments
+     (list #:tests? #f ; There are no tests.
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'prefix
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("`\\$\\(OCAMLC\\) -where`")
+                      (string-append #$output "/lib/ocaml/site-lib/xml-light")))))
+               (delete 'configure) ; no configure
+               (add-before 'install 'mkdir
+                 (lambda _
+                   (mkdir-p (string-append #$output "/lib/ocaml/site-lib/xml-light"))))
+               (replace 'install
+                 (lambda _
+                   (invoke "make" "install_ocamlfind"))))))
+    (home-page "https://github.com/ncannasse/xml-light")
+    (synopsis "Minimal XML parser & printer for OCaml")
+    (description
+     "Xml-Light provides functions to parse an XML document into an OCaml data
+structure, work with it, and print it back to an XML document.  It also
+supports DTD parsing and checking, and is entirely written in OCaml, hence it
+does not require additional C libraries.")
+    (license license:lgpl2.1+))) ; with linking exception
+
 (define-public ocaml-xmlm
   (package
     (name "ocaml-xmlm")
@@ -4364,6 +4446,34 @@ sensitive completion, colors, and more.")
         ("ocaml-zed" ,ocaml-zed)))
      (properties '()))))
 
+(define-public ocaml-ptmap
+  (package
+    (name "ocaml-ptmap")
+    (version "2.0.5")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://github.com/backtracking/ptmap/releases/download/"
+                              version "/ptmap-" version ".tbz"))
+              (sha256
+               (base32
+                "1apk61fc1y1g7x3m3c91fnskvxp6i0vk5nxwvipj56k7x2pzilgb"))))
+    (build-system dune-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "dune" "runtest")))))))
+    (propagated-inputs (list ocaml-stdlib-shims ocaml-seq))
+    (home-page "https://github.com/backtracking/ptmap")
+    (synopsis "Maps of integers implemented as Patricia trees")
+    (description
+     "An implementation inspired by Okasaki & Gill's paper 'Fast Mergeable
+Integer Maps.'")
+    (license license:lgpl2.1))) ; with linking exception
+
 (define-public ocaml-integers
   (package
     (name "ocaml-integers")
@@ -5859,6 +5969,28 @@ storage of large amounts of data.")
     (description "Octavius is a library to parse the `ocamldoc` comment syntax.")
     (license license:isc)))
 
+(define-public ocaml-sha
+  (package
+    (name "ocaml-sha")
+    (version "1.15.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/djs55/ocaml-sha/releases/download/"
+                                  version "/sha-" version ".tbz"))
+              (sha256
+               (base32
+                "1dzzhchknnbrpp5s81iqbvmqp4s0l75yrq8snj70ch3wkarmgg9z"))))
+    (build-system dune-build-system)
+    (propagated-inputs (list ocaml-stdlib-shims ocaml-odoc))
+    (native-inputs (list ocaml-ounit2))
+    (home-page "https://github.com/djs55/ocaml-sha")
+    (synopsis "OCaml binding to the SHA cryptographic functions")
+    (description
+     "This is the binding for SHA interface code in OCaml, offering the same
+interface as the MD5 digest included in the OCaml standard library.  It
+currently provides SHA1, SHA256 and SHA512 hash functions.")
+    (license license:isc)))
+
 (define-public ocaml-ppx-hash
   (package
     (name "ocaml-ppx-hash")
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index f1cab94e08..873dc54c30 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +39,7 @@
   (package
     (name "libtirpc")
     (version "1.3.1")
+    (replacement libtirpc/fixed)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libtirpc/libtirpc/"
@@ -74,7 +76,8 @@ IPv4 and IPv6.  ONC RPC is notably used by the network file system (NFS).")
   (package/inherit libtirpc
     (name "libtirpc-hurd")
     (source (origin (inherit (package-source libtirpc))
-                    (patches (search-patches "libtirpc-hurd.patch"))))
+                    (patches (search-patches "libtirpc-hurd.patch"
+                                             "libtirpc-CVE-2021-46828.patch"))))
     (arguments
      (substitute-keyword-arguments (package-arguments libtirpc)
        ((#:configure-flags flags ''())
@@ -83,6 +86,13 @@ IPv4 and IPv6.  ONC RPC is notably used by the network file system (NFS).")
                               (assoc-ref %build-inputs "mit-krb5")
                               "/bin/krb5-config")))))))
 
+(define libtirpc/fixed
+  (package
+    (inherit libtirpc)
+    (source (origin
+              (inherit (package-source libtirpc))
+              (patches (search-patches "libtirpc-CVE-2021-46828.patch"))))))
+
 (define-public rpcbind
   (package
     (name "rpcbind")
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 0721d27dbf..dd13404c87 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,9 @@
 (define-module (gnu packages openstack)
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages monitoring)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
@@ -251,6 +254,32 @@ to docs.openstack.org and developer.openstack.org.")
   comprehensive manner.")
     (license asl2.0)))
 
+(define-public python-os-service-types
+  (package
+    (name "python-os-service-types")
+    (version "1.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "os-service-types" version))
+              (sha256
+               (base32
+                "0v4chwr5jykkvkv4w7iaaic7gb06j6ziw7xrjlwkcf92m2ch501i"))))
+    (build-system python-build-system)
+    (arguments
+     ;; The tests are disabled to avoid a circular dependency with
+     ;; python-keystoneauth1.
+     `(#:tests? #f))
+    (native-inputs (list python-pbr))
+    (home-page "https://docs.openstack.org/os-service-types/latest/")
+    (synopsis "Library for consuming OpenStack Service Types Authority data")
+    (description "The @emph{OpenStack Service Types Authority} contains
+information about officiag OpenStack services and their historical
+service-type aliases.  The data is in JSON and the latest data should always
+be used.  This simple library exists to allow for easy consumption of the
+data, along with a built-in version of the data to use in case network access
+is for some reason not possible and local caching of the fetched data.")
+    (license asl2.0)))
+
 (define-public python-os-testr
   (package
     (name "python-os-testr")
@@ -317,6 +346,64 @@ classes for implementing common patterns for using dynamically loaded
 extensions.")
     (license asl2.0)))
 
+(define-public python-tempest
+  (package
+    (name "python-tempest")
+    (version "31.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "tempest" version))
+              (sha256
+               (base32
+                "1bh250n0cf68jm68jd7pcrgf7zbsv74cq590ar1n002sijfcb80i"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "test-requirements.txt"
+               ;; unused, code-quality checks only
+               (("hacking[<>!=]" line) (string-append "# " line))
+               (("flake8-.*[<>!=]" line) (string-append "# " line))
+               (("pycodestyle[<>!=]" line) (string-append "# " line))
+               (("coverage[<>!=]" line) (string-append "# " line)))))
+         (add-before 'check 'setup-check
+           (lambda _
+             (substitute* "tempest/tests/lib/cli/test_execute.py"
+               (("cli_base.execute\\(\"env\",")
+                (string-append "cli_base.execute('" (which "env") "',")))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "stestr" "--test-path" "./tempest/tests" "run")))))))
+    (propagated-inputs (list python-cliff
+                             python-cryptography
+                             python-debtcollector
+                             python-fixtures
+                             python-jsonschema
+                             python-netaddr
+                             python-oslo.concurrency
+                             python-oslo.config
+                             python-oslo.log
+                             python-oslo.serialization
+                             python-oslo.utils
+                             python-paramiko
+                             python-prettytable
+                             python-pyyaml
+                             python-stevedore
+                             python-subunit
+                             python-testtools
+                             python-urllib3))
+    (native-inputs (list python-oslotest python-pbr python-stestr python-hacking))
+    (home-page "https://docs.openstack.org/tempest/latest/")
+    (synopsis "OpenStack Integration Testing")
+    (description "This is a set of integration tests to be run against a live
+OpenStack cluster.  Tempest has batteries of tests for OpenStack API
+validation, scenarios, and other specific tests useful in validating an
+OpenStack deployment.")
+    (license asl2.0)))
+
 (define-public python-tempest-lib
   (package
     (name "python-tempest-lib")
@@ -333,6 +420,10 @@ extensions.")
      `(#:tests? #f ; FIXME: Requires oslo.log >= 1.14.0.
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "requirements.txt"
+               (("jsonschema[<>!=].*") "jsonschema\n"))))
          (add-before
           'check 'pre-check
           (lambda _
@@ -345,10 +436,10 @@ extensions.")
             python-jsonschema
             python-oslo.log
             python-paramiko
-            python-pbr
             python-six))
     (native-inputs
-      (list python-babel python-mock python-os-testr python-oslotest))
+      (list python-babel python-mock python-os-testr python-oslotest
+            python-pbr))
     (home-page "https://www.openstack.org/")
     (synopsis "OpenStack functional testing library")
     (description
@@ -361,6 +452,50 @@ common features used in Tempest.")
 ;;; Packages from the Oslo library
 ;;;
 
+(define-public python-oslo.concurrency
+  (package
+    (name "python-oslo.concurrency")
+    (version "5.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "oslo.concurrency" version))
+              (sha256
+               (base32
+                "0zl9wyxvs69i78wja5c3cacd6gadk8cc8ggy2ips0wlakxp98ilz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "test-requirements.txt"
+               (("hacking[<>!=]" line) (string-append "# " line))
+               (("coverage[<>!=]" line) (string-append "# " line))
+               (("bandit[<>!=]" line) (string-append "# " line))
+               (("pre-commit[<>!=]" line) (string-append "# " line)))))
+         (add-before 'check 'fix-tests
+           (lambda _
+             (substitute* "oslo_concurrency/tests/unit/test_processutils.py"
+               (("#!/bin/bash") (string-append "#!" (which "bash")))
+               (("#!/bin/sh") (string-append "#!" (which "sh")))
+               (("'/usr/bin/env'") (string-append "'" (which "env") "'"))
+               (("'/usr/bin/env ") (string-append "'" (which "env") " "))
+               (("'/bin/true'") (string-append "'" (which "true") "'"))))))))
+    (native-inputs (list python-pbr
+                         ;; for tests:
+                         python-oslotest
+                         python-fixtures
+                         python-stestr
+                         python-eventlet))
+    (propagated-inputs (list python-fasteners python-oslo.config
+                             python-oslo.i18n python-oslo.utils))
+    (home-page "https://docs.openstack.org/oslo.concurrency/latest/")
+    (synopsis "Oslo Concurrency library")
+    (description "The Oslo Concurrency Library provides utilities for safely
+running multi-thread, multi-process applications using locking mechanisms and
+for running external processes.")
+    (license asl2.0)))
+
 (define-public python-oslo.config
   (package
     (name "python-oslo.config")
@@ -392,30 +527,31 @@ common features used in Tempest.")
 (define-public python-oslo.context
   (package
     (name "python-oslo.context")
-    (version "3.1.1")
+    (version "5.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "oslo.context" version))
        (sha256
         (base32
-         "1l2z186rkd9acrb2ygf53yrdc1lgf7cy1akbhm21kgkzind4p2r6"))))
+         "091j2cjh1b60nx6s0a4amb2idh9awijnbmppc3an0738fv8cdh48"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (add-after 'unpack 'relax-requirements
                     (lambda _
                       (substitute* "test-requirements.txt"
-                        (("hacking>=3.0.1,<3.1.0")
-                         "hacking>=3.0.1"))
-                      #t)))))
+                        (("hacking[<>!=].*") "hacking\n")
+                        ;; unused, code-quality checks only
+                        (("bandit[<>!=]" line) (string-append "# " line))
+                        (("pre-commit[<>!=]" line) (string-append "# " line))))))))
     (propagated-inputs
      (list python-debtcollector))
     (native-inputs
-     (list python-bandit
-           python-coverage
+     (list python-coverage
            python-fixtures
            python-hacking
+           python-mypy
            python-oslotest
            python-pbr
            python-stestr))
@@ -456,14 +592,14 @@ in an application or library.")
 (define-public python-oslo.log
   (package
   (name "python-oslo.log")
-  (version "4.6.1")
+  (version "5.0.0")
   (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "oslo.log" version))
       (sha256
         (base32
-          "0dlnxjci9mpwhgfv19fy1z7xrdp8m95skrj5dr60all3pr7n22f6"))))
+          "00adkm465xcaxg15pncsmwxhicdj3kx4v1vcabghpmd2m0s75avk"))))
   (build-system python-build-system)
   (arguments
    '(#:phases (modify-phases %standard-phases
@@ -478,11 +614,10 @@ in an application or library.")
          python-oslo.i18n
          python-oslo.utils
          python-oslo.serialization
-         python-pbr
-         python-pyinotify
-         python-six))
+         python-pyinotify))
   (native-inputs
-    (list python-fixtures python-oslotest python-stestr python-testtools))
+   (list python-fixtures python-oslotest python-stestr python-testtools
+         python-pbr))
   (home-page "https://launchpad.net/oslo")
   (synopsis "Python logging library of the Oslo project")
   (description
@@ -654,52 +789,116 @@ functions, such as encoding, exception handling, string manipulation, and time
 handling.")
     (license asl2.0)))
 
+(define-public python-keystoneauth1
+  (package
+    (name "python-keystoneauth1")
+    (version "5.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "keystoneauth1" version))
+              (sha256
+               (base32
+                "08s36dqxrxqx37sdl28cr7fx2iwr8wfxaa53hwq2dzcx9h25zfvf"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "test-requirements.txt"
+               (("hacking[<>!=].*") "hacking\n")
+               ;; unused, code-quality checks only
+               (("flake8-.*[<>!=]" line) (string-append "# " line))
+               (("pycodestyle[<>!=]" line) (string-append "# " line))
+               (("bandit[<>!=]" line) (string-append "# " line))
+               (("coverage[<>!=]" line) (string-append "# " line))
+               (("reno[<>!=]" line) (string-append "# " line)))))
+         (add-before 'check 'check-setup
+           (lambda _
+             ;; remove code-quality checks
+             (delete-file "keystoneauth1/tests/unit/test_hacking_checks.py")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "stestr" "run")))))))
+    (propagated-inputs (list python-iso8601
+                             python-os-service-types
+                             python-requests
+                             python-six
+                             python-stevedore))
+    (native-inputs (list python-betamax
+                         python-fixtures
+                         python-hacking
+                         python-lxml
+                         python-oauthlib
+                         python-oslo.config
+                         python-oslo.utils
+                         python-oslotest
+                         python-pbr
+                         python-pyyaml
+                         python-requests-kerberos
+                         python-requests-mock
+                         python-stestr
+                         python-testresources
+                         python-testtools))
+    (home-page "https://docs.openstack.org/keystoneauth/latest/")
+    (synopsis "Authentication Library for OpenStack Identity")
+    (description "Keystoneauth provides a standard way to do authentication
+and service requests within the OpenStack ecosystem.  It is designed for use
+in conjunction with the existing OpenStack clients and for simplifying the
+process of writing new clients.")
+    (license asl2.0)))
+
 (define-public python-keystoneclient
   (package
     (name "python-keystoneclient")
-    (version "1.8.1")
+    (version "5.0.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "python-keystoneclient" version))
         (sha256
          (base32
-          "1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
+          "0gza5fx3xl3l6vrc6pnhbzhipz1fz9h98kwxqp7mmd90pwrxll0g"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; FIXME: Many tests are failing.
+     '(#:tests? #f   ; FIXME: Many tests are failing.
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'relax-requirements
+                    (lambda _
+                      (substitute* "test-requirements.txt"
+                        ;; unused, code-quality checks only
+                        (("hacking[<>!=]" line) (string-append "# " line))
+                        (("flake8-.*[<>!=]" line) (string-append "# " line))
+                        (("pycodestyle[<>!=]" line) (string-append "# " line))
+                        (("bandit[<>!=]" line) (string-append "# " line))
+                        (("coverage[<>!=]" line) (string-append "# " line))
+                        (("reno[<>!=]" line) (string-append "# " line))))))))
     (native-inputs
-     `(("python-sphinx" ,python-sphinx)
-       ;; and some packages for the tests
-       ("openssl" ,openssl)
-       ("python-coverage" ,python-coverage)
-       ("python-discover" ,python-discover)
-       ("python-fixtures" ,python-fixtures)
-       ("python-hacking" ,python-hacking)
-       ("python-keyring" ,python-keyring)
-       ("python-lxml" ,python-lxml)
-       ("python-mock" ,python-mock)
-       ("python-mox3" ,python-mox3)
-       ("python-oauthlib" ,python-oauthlib)
-       ("python-oslosphinx" ,python-oslosphinx)
-       ("python-oslotest" ,python-oslotest)
-       ("python-pycrypto" ,python-pycrypto)
-       ("python-requests-mock" ,python-requests-mock)
-       ("python-temptest-lib" ,python-tempest-lib)
-       ("python-testrepository" ,python-testrepository)
-       ("python-testresources" ,python-testresources)
-       ("python-testtools" ,python-testtools)
-       ("python-webob" ,python-webob)))
+     (list openssl
+           python-fixtures
+           python-keyring
+           python-lxml
+           python-mock
+           python-oauthlib
+           python-oslotest
+           python-pbr
+           python-requests-mock
+           python-stestr
+           python-tempest-lib
+           python-testresources
+           python-testscenarios
+           python-testtools))
     (propagated-inputs
      (list python-babel
            python-debtcollector
            python-iso8601
+           python-keystoneauth1
            python-netaddr
            python-oslo.config
            python-oslo.i18n
            python-oslo.serialization
            python-oslo.utils
-           python-pbr
            python-prettytable
            python-requests
            python-six
@@ -718,29 +917,31 @@ LDAP.")
 (define-public python-swiftclient
   (package
     (name "python-swiftclient")
-    (version "2.6.0")
+    (version "4.0.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "python-swiftclient" version))
         (sha256
          (base32
-          "1j33l4z9vqh0scfncl4fxg01zr1hgqxhhai6gvcih1gccqm4nd7p"))))
+          "1zwb4zcln454fzcnbwqhyzxb68wrsr1i2vvvrn5c7yy5k4vcfs1v"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'relax-requirements
+                    (lambda _
+                      (delete-file "test-requirements.txt")))
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "stestr" "run")))))))
     (native-inputs
-     (list python-pbr
-           python-sphinx
-           ;; The folloing packages are needed for the tests.
-           python-coverage
-           python-discover
-           python-hacking
-           python-mock
-           python-oslosphinx
-           python-keystoneclient
-           python-testrepository
-           python-testtools))
+     (list python-keystoneclient
+           python-keystoneauth1
+           python-openstacksdk
+           python-stestr))
     (propagated-inputs
-     (list python-requests python-six))
+     (list python-requests))
     (home-page "https://www.openstack.org/")
     (synopsis "OpenStack Object Storage API Client Library")
     (description
@@ -793,3 +994,96 @@ permanence.")
      "Git-review is a command-line tool that helps submitting Git branches to
 Gerrit for review, or fetching existing ones.")
     (license asl2.0)))
+
+(define-public python-requestsexceptions
+  (package
+    (name "python-requestsexceptions")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "requestsexceptions" version))
+              (sha256
+               (base32
+                "0r9hp9yzgj8r81q5gc6r8sgxldqc09xi6ax0b7a6dw0qfv3wp5dh"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f))  ; no tests
+    (native-inputs (list python-pbr))
+    (home-page "https://www.openstack.org/")
+    (synopsis "Import exceptions from potentially bundled packages in requests")
+    (description "The Python requests library bundles the urllib3 library,
+however, some software distributions modify requests to remove the bundled
+library.  This makes some operations difficult, such as suppressing the
+“insecure platform warning” messages that urllib emits.  This package is a
+simple library to find the correct path to exceptions in the requests library
+regardless of whether they are bundled or not.")
+    (license asl2.0)))
+
+(define-public python-openstacksdk
+  (package
+    (name "python-openstacksdk")
+    (version "0.100.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "openstacksdk" version))
+              (sha256
+               (base32
+                "0iq7rxw59ibl6xsqh3jw56yg3zfbz3cqgx1239n6xd9iv86mcgq1"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (with-output-to-file "exclusion-list.txt"
+                          (lambda _
+	                    (display
+                             (string-append
+                              ;; tests timing out
+                              "test_create_dynamic_large_object$\n"
+                              "test_create_object_index_rax$\n"
+                              "test_create_object_skip_checksum$\n"
+                              "test_inspect_machine_inspect_failed$\n"
+                              "test_inspect_machine_wait$\n"
+                              "test_status_fails_different_attribute$\n"
+                              "test_status_match$\n"
+                              "test_status_match_different_attribute$\n"
+                              "test_status_match_with_none$\n"
+                              "test_wait_for_baremetal_node_lock_locked$\n"
+                              "test_wait_for_task_error_396$\n"
+                              "test_wait_for_task_wait$\n"))))
+                        (invoke "stestr" "run"
+                                "--exclude-list" "exclusion-list.txt")))))))
+    (native-inputs (list python-ddt
+                         python-hacking
+                         python-jsonschema
+                         python-pbr
+                         python-prometheus-client
+                         python-requests-mock
+                         python-statsd
+                         python-stestr
+                         python-testscenarios
+                         python-oslo.config
+                         python-oslotest))
+    (propagated-inputs (list python-appdirs
+                             python-cryptography
+                             python-decorator
+                             python-dogpile.cache
+                             python-importlib-metadata
+                             python-iso8601
+                             python-jmespath
+                             python-jsonpatch
+                             python-keystoneauth1
+                             python-munch
+                             python-netifaces
+                             python-os-service-types
+                             python-pbr   ; run-time dependency actually
+                             python-pyyaml
+                             python-requestsexceptions))
+    (home-page "https://docs.openstack.org/openstacksdk/latest/")
+    (synopsis "SDK for building applications to work with OpenStack")
+    (description "This package provides a client library for building
+applications to work with OpenStack clouds.  The SDK aims to provide a
+consistent and complete set of interactions with OpenStack’s many services,
+along with complete documentation, examples, and tools.")
+    (license asl2.0)))
diff --git a/gnu/packages/orange.scm b/gnu/packages/orange.scm
index d579442902..367c9cc288 100644
--- a/gnu/packages/orange.scm
+++ b/gnu/packages/orange.scm
@@ -137,7 +137,7 @@ GUI based workflow.  It is primarily used in the Orange framework.")
              (let ((out (assoc-ref outputs "out")))
                (wrap-program (string-append out "/bin/orange-canvas")
                  `("QT_PLUGIN_PATH" prefix
-                   ,(list (string-append (assoc-ref inputs "qtsvg")
+                   ,(list (string-append (assoc-ref inputs "qtsvg-5")
                                          "/lib/qt5/plugins/"))))))))))
     (native-inputs
      (list python-cython))
@@ -172,7 +172,7 @@ GUI based workflow.  It is primarily used in the Orange framework.")
            python-xlrd
            python-xlsxwriter
            qtbase-5
-           qtsvg
+           qtsvg-5
            xdg-utils))
     (home-page "https://orangedatamining.com/")
     (synopsis "Component-based data mining framework")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 474842460c..ce990a0321 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -110,6 +110,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages version-control)
+  #:autoload   (guix build-system channel) (channel-build-system)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system guile)
@@ -119,6 +120,10 @@
   #:use-module (guix download)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
+  #:autoload   (guix describe) (current-channels)
+  #:autoload   (guix channels) (channel?
+                                guix-channel?
+                                repository->guix-channel)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -489,6 +494,21 @@ the Nix package manager.")
       (license license:gpl3+)
       (properties '((ftp-server . "alpha.gnu.org"))))))
 
+(define* (channel-source->package source #:key commit)
+  "Return a package for the given channel SOURCE, a lowerable object."
+  (package
+    (inherit guix)
+    (version (string-append (package-version guix) "."
+                            (if commit (string-take commit 7) "")))
+    (build-system channel-build-system)
+    (arguments `(#:source ,source
+                 #:commit ,commit))
+    (inputs '())
+    (native-inputs '())
+    (propagated-inputs '())))
+
+(export channel-source->package)
+
 (define-public guix-for-cuirass
   ;; Known-good revision before commit
   ;; bd86bbd300474204878e927f6cd3f0defa1662a5, which introduced
@@ -584,45 +604,37 @@ the Nix package manager.")
       (modify-inputs (package-propagated-inputs guix)
         (delete "guile-ssh"))))))
 
-(define (source-file? file stat)
-  "Return true if FILE is likely a source file, false if it is a typical
-generated file."
-  (define (wrong-extension? file)
-    (or (string-suffix? "~" file)
-        (member (file-extension file)
-                '("o" "a" "lo" "so" "go"))))
-
-  (match (basename file)
-    ((or ".git" "autom4te.cache" "configure" "Makefile" "Makefile.in" ".libs")
-     #f)
-    ((? wrong-extension?)
-     #f)
-    (_
-     #t)))
-
 (define-public current-guix-package
   ;; This parameter allows callers to override the package that 'current-guix'
   ;; returns.  This is useful when 'current-guix' cannot compute it by itself,
   ;; for instance because it's not running from a source code checkout.
-  (make-parameter #f))
+  ;;
+  ;; The default value is obtained by creating a package from the 'guix'
+  ;; channel returned by 'current-channels' or, if that's the empty list, that
+  ;; returned by 'repository->guix-channel' for the current directory (which
+  ;; assumes that we're running from a Git checkout).  Delay computation so
+  ;; that the relevant modules can be loaded lazily.
+  (make-parameter
+   (delay (match (or (find guix-channel? (current-channels))
+                     (repository->guix-channel
+                      (current-source-directory)))
+            ((? channel? source)
+             (package
+               (inherit guix)
+               (source source)
+               (build-system channel-build-system)
+               (inputs '())
+               (native-inputs '())
+               (propagated-inputs '())))
+            (#f #f)))))
 
 (define-public current-guix
-  (let* ((repository-root (delay (canonicalize-path
-                                  (string-append (current-source-directory)
-                                                 "/../.."))))
-         (select? (delay (or (git-predicate (force repository-root))
-                             source-file?))))
-    (lambda ()
-      "Return a package representing Guix built from the current source tree.
-This works by adding the current source tree to the store (after filtering it
-out) and returning a package that uses that as its 'source'."
-      (or (current-guix-package)
-          (package
-            (inherit guix)
-            (version (string-append (package-version guix) "+"))
-            (source (local-file (force repository-root) "guix-current"
-                                #:recursive? #t
-                                #:select? (force select?))))))))
+  (lambda ()
+    "Return a package representing the currently-used Guix.  It can be
+overridden by setting the 'current-guix-package' parameter."
+    (match (current-guix-package)
+      ((? promise? package) (force package))
+      (package package))))
 
 (define-public guix-icons
   (package
@@ -850,7 +862,7 @@ features of Stow with some extensions.")
 (define-public rpm
   (package
     (name "rpm")
-    (version "4.17.0")
+    (version "4.17.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://ftp.rpm.org/releases/rpm-"
@@ -858,7 +870,7 @@ features of Stow with some extensions.")
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0sjyqs6hc57k46f45b68dfxnp985s0gar0fi1s0ig6vl4h5j439f"))))
+                "0pbfj94ha59lbnd8dk0aqyxjv37xixfdcazq3y2mhwkf8s9vf48c"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--with-external-db" ;use the system's bdb
@@ -887,11 +899,13 @@ features of Stow with some extensions.")
            lua
            nspr
            nss
-           popt
            python
            sqlite
            xz
            zlib))
+    (propagated-inputs
+     ;; popt is listed in the 'Requires' of rpm.pc.
+     (list popt))
     (home-page "https://rpm.org/")
     (synopsis "The RPM Package Manager")
     (description
@@ -1138,7 +1152,7 @@ written entirely in Python.")
 (define-public conan
   (package
     (name "conan")
-    (version "1.47.0")
+    (version "1.50.0")
     (source
      (origin
        (method git-fetch)               ;no tests in PyPI archive
@@ -1148,7 +1162,7 @@ written entirely in Python.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1zs2xb22rsy5fsc0fd7c95vrx1mfz7vasyg1lqkzyfimvn5zah6n"))))
+         "1jjrinz5wkcxfvwdpldrv4h7vacdyz88cc4af5vi3sdnjra0i0m5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1217,8 +1231,9 @@ written entirely in Python.")
                         ;; This one fails for unknown reasons (see:
                         ;; https://github.com/conan-io/conan/issues/9671).
                         "and not test_build "
-                        ;; This test expects the 'apt' command to be available.
+                        ;; These tests expect the 'apt' command to be available.
                         "and not test_apt_check "
+                        "and not test_apt_install_substitutes "
                         (if (not (string-prefix? "x86_64" system))
                             ;; These tests either assume the machine is
                             ;; x86_64, or require a cross-compiler to target
@@ -1823,7 +1838,7 @@ for packaging and deployment of cross-compiled Windows applications.")
 (define-public libostree
   (package
     (name "libostree")
-    (version "2022.3")
+    (version "2022.5")
     (source
      (origin
        (method url-fetch)
@@ -1831,7 +1846,7 @@ for packaging and deployment of cross-compiled Windows applications.")
              "https://github.com/ostreedev/ostree/releases/download/v"
              (version-major+minor version) "/libostree-" version ".tar.xz"))
        (sha256
-        (base32 "04pn4ibak8k7qlm0722im5ng8gyn1r5y5ggyz75ca0smrnfzs8xq"))))
+        (base32 "0gq53g601x09gc4ips6n3zmmdaz8zyv235xf63fxf4f17fclsk4i"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index f4ba6c3c9b..d2fb340d26 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -43,6 +43,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages freeipmi)
@@ -62,14 +63,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20220622")
+    (version "20220722")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "186mbzz5dn2ka8fqk9r8v8fpmh17clh2c6xln0czs81vynl1bgd4"))
+       (base32 "06gh7bj274qzxdlr5bx36b4jrpdnyfcbzpy6k12l63451nn86h0f"))
       (snippet
        '(begin
           (use-modules (guix build utils))
@@ -112,7 +113,7 @@
     (native-inputs
      (list perl))
     (inputs
-     (list perl procps))
+     (list bash-minimal perl procps))
     (home-page "https://www.gnu.org/software/parallel/")
     (synopsis "Build and execute command lines in parallel")
     (description
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index da140b29ad..0069fdd74c 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -165,7 +165,7 @@ human.")
             (lambda* (#:key inputs #:allow-other-keys)
               (wrap-qt-program "keepassxc" #:output #$output #:inputs inputs))))))
     (native-inputs
-     (list qttools ruby-asciidoctor))
+     (list qttools-5 ruby-asciidoctor))
     (inputs
      (list argon2
            botan
@@ -179,7 +179,7 @@ human.")
            pcsc-lite
            qrencode
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            quazip-0                     ; XC_KEESHARE
            readline
@@ -697,9 +697,9 @@ key URIs using the standard otpauth:// scheme.")
              (setenv "QT_QPA_PLATFORM" "offscreen")
              #t)))))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtbase-5 qtsvg-5))
     (home-page "https://qtpass.org")
     (synopsis "GUI for password manager password-store")
     (description
diff --git a/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch b/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch
new file mode 100644
index 0000000000..76bc52a4ba
--- /dev/null
+++ b/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch
@@ -0,0 +1,38 @@
+This patch was borrowed from Debian's package:
+https://salsa.debian.org/debian-astro-team/aoflagger/-/blob/0484ef75a663e3e07738550cdade46f433a53dac/debian/patches/Use-system-provided-pybind11.patch
+Description: Use system provided pybind11
+Author: Ole Streicher <olebole@debian.org>
+Origin: Debian
+Last-Update: Mon, 30 Aug 2021 11:05:37 +0200
+---
+ CMakeLists.txt | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 655ea5e..824ee2a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -62,11 +62,6 @@ foreach(ExternalSubmodule IN LISTS ExternalSubmoduleDirectories)
+   endif()
+ endforeach()
+ 
+-# Include aocommon/pybind11 headers
+-include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include")
+-add_subdirectory("${CMAKE_SOURCE_DIR}/external/pybind11")
+-include_directories(SYSTEM ${pybind11_INCLUDE_DIR})
+-
+ find_package(
+   HDF5
+   COMPONENTS C CXX
+@@ -101,6 +96,11 @@ find_package(PythonInterp REQUIRED)
+ message(STATUS "Using python version ${PYTHON_VERSION_STRING}")
+ include_directories(SYSTEM ${PYTHON_INCLUDE_DIRS})
+ 
++# Include pybind11 headers
++find_package(pybind11 REQUIRED)
++include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include")
++include_directories(${pybind11_INCLUDE_DIR})
++
+ # boost::alignment requires Boost 1.56
+ find_package(Boost 1.56.0 REQUIRED COMPONENTS date_time filesystem system
+                                               unit_test_framework)
diff --git a/gnu/packages/patches/aspell-CVE-2019-25051.patch b/gnu/packages/patches/aspell-CVE-2019-25051.patch
new file mode 100644
index 0000000000..a7471dacd4
--- /dev/null
+++ b/gnu/packages/patches/aspell-CVE-2019-25051.patch
@@ -0,0 +1,99 @@
+https://github.com/gnuaspell/aspell/commit/0718b375425aad8e54e1150313b862e4c6fd324a
+https://nvd.nist.gov/vuln/detail/CVE-2019-25051
+
+From 0718b375425aad8e54e1150313b862e4c6fd324a Mon Sep 17 00:00:00 2001
+From: Kevin Atkinson <kevina@gnu.org>
+Date: Sat, 21 Dec 2019 20:32:47 +0000
+Subject: [PATCH] objstack: assert that the alloc size will fit within a chunk
+ to prevent a buffer overflow
+
+Bug found using OSS-Fuze.
+---
+ common/objstack.hpp | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/common/objstack.hpp b/common/objstack.hpp
+index 3997bf7..bd97ccd 100644
+--- a/common/objstack.hpp
++++ b/common/objstack.hpp
+@@ -5,6 +5,7 @@
+ #include "parm_string.hpp"
+ #include <stdlib.h>
+ #include <assert.h>
++#include <stddef.h>
+ 
+ namespace acommon {
+ 
+@@ -26,6 +27,12 @@ class ObjStack
+   byte * temp_end;
+   void setup_chunk();
+   void new_chunk();
++  bool will_overflow(size_t sz) const {
++    return offsetof(Node,data) + sz > chunk_size;
++  }
++  void check_size(size_t sz) {
++    assert(!will_overflow(sz));
++  }
+ 
+   ObjStack(const ObjStack &);
+   void operator=(const ObjStack &);
+@@ -56,7 +63,7 @@ class ObjStack
+   void * alloc_bottom(size_t size)  {
+     byte * tmp = bottom;
+     bottom += size;
+-    if (bottom > top) {new_chunk(); tmp = bottom; bottom += size;}
++    if (bottom > top) {check_size(size); new_chunk(); tmp = bottom; bottom += size;}
+     return tmp;
+   }
+   // This alloc_bottom will insure that the object is aligned based on the
+@@ -66,7 +73,7 @@ class ObjStack
+     align_bottom(align);
+     byte * tmp = bottom;
+     bottom += size;
+-    if (bottom > top) {new_chunk(); goto loop;}
++    if (bottom > top) {check_size(size); new_chunk(); goto loop;}
+     return tmp;
+   }
+   char * dup_bottom(ParmString str) {
+@@ -79,7 +86,7 @@ class ObjStack
+   // always be aligned as such.
+   void * alloc_top(size_t size) {
+     top -= size;
+-    if (top < bottom) {new_chunk(); top -= size;}
++    if (top < bottom) {check_size(size); new_chunk(); top -= size;}
+     return top;
+   }
+   // This alloc_top will insure that the object is aligned based on
+@@ -88,7 +95,7 @@ class ObjStack
+   {loop:
+     top -= size;
+     align_top(align);
+-    if (top < bottom) {new_chunk(); goto loop;}
++    if (top < bottom) {check_size(size); new_chunk(); goto loop;}
+     return top;
+   }
+   char * dup_top(ParmString str) {
+@@ -117,6 +124,7 @@ class ObjStack
+   void * alloc_temp(size_t size) {
+     temp_end = bottom + size;
+     if (temp_end > top) {
++      check_size(size);
+       new_chunk();
+       temp_end = bottom + size;
+     }
+@@ -131,6 +139,7 @@ class ObjStack
+     } else {
+       size_t s = temp_end - bottom;
+       byte * p = bottom;
++      check_size(size);
+       new_chunk();
+       memcpy(bottom, p, s);
+       temp_end = bottom + size;
+@@ -150,6 +159,7 @@ class ObjStack
+     } else {
+       size_t s = temp_end - bottom;
+       byte * p = bottom;
++      check_size(size);
+       new_chunk();
+       memcpy(bottom, p, s);
+       temp_end = bottom + size;
diff --git a/gnu/packages/patches/barony-fix-textures.patch b/gnu/packages/patches/barony-fix-textures.patch
new file mode 100644
index 0000000000..712f0d63c6
--- /dev/null
+++ b/gnu/packages/patches/barony-fix-textures.patch
@@ -0,0 +1,237 @@
+From: Sylvain <sylvain.becker@gmail.com>
+Date: Sat, 10 Apr 2021 21:33:29 +0200
+Subject: [PATCH] Fixed bug 580 - Use 'userdata' instead of 'refcount'
+ 'refcount' is a private SDL_Surface field
+
+---
+ src/draw.cpp    | 22 +++++++++++-----------
+ src/files.cpp   |  2 +-
+ src/opengl.cpp  | 26 +++++++++++++-------------
+ src/savepng.cpp |  2 +-
+ 4 files changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/src/draw.cpp b/src/draw.cpp
+index 08f95343f..4e62c751a 100644
+--- a/src/draw.cpp
++++ b/src/draw.cpp
+@@ -443,7 +443,7 @@ void drawImageRotatedAlpha( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, re
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, alpha / 255.1);
+ 	glBegin(GL_QUADS);
+ 	glTexCoord2f(1.0 * ((real_t)src->x / image->w), 1.0 * ((real_t)src->y / image->h));
+@@ -492,7 +492,7 @@ void drawImageColor( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint32 co
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+ 	real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+ 	real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -546,7 +546,7 @@ void drawImageAlpha( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint8 alp
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, alpha / 255.1);
+ 	glPushMatrix();
+ 	glBegin(GL_QUADS);
+@@ -596,7 +596,7 @@ void drawImage( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos )
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, 1);
+ 	glPushMatrix();
+ 	glBegin(GL_QUADS);
+@@ -646,7 +646,7 @@ void drawImageRing(SDL_Surface* image, SDL_Rect* src, int radius, int thickness,
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, alpha / 255.f);
+ 	glPushMatrix();
+ 
+@@ -771,7 +771,7 @@ void drawImageScaled( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos )
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, 1);
+ 	glPushMatrix();
+ 	glBegin(GL_QUADS);
+@@ -826,7 +826,7 @@ void drawImageScaledPartial(SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, fl
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	glColor4f(1, 1, 1, 1);
+ 	glPushMatrix();
+ 	glBegin(GL_QUADS);
+@@ -889,7 +889,7 @@ void drawImageScaledColor(SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+ 	real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+ 	real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -985,7 +985,7 @@ void drawImageFancy( SDL_Surface* image, Uint32 color, real_t angle, SDL_Rect* s
+ 	}
+ 
+ 	// draw a textured quad
+-	glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+ 	real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+ 	real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+ 	real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -2186,7 +2186,7 @@ void drawWindowFancy(int x1, int y1, int x2, int y2)
+ 	glVertex2f(x2 - 1, yres - y1 - 1);
+ 	glEnd();
+ 	glColor3f(.75, .75, .75);
+-	glBindTexture(GL_TEXTURE_2D, texid[fancyWindow_bmp->refcount]); // wood texture
++	glBindTexture(GL_TEXTURE_2D, texid[(long int)fancyWindow_bmp->userdata]); // wood texture
+ 	glBegin(GL_QUADS);
+ 	glTexCoord2f(0, 0);
+ 	glVertex2f(x1 + 2, yres - y1 - 2);
+@@ -2322,7 +2322,7 @@ SDL_Rect ttfPrintTextColor( TTF_Font* font, int x, int y, Uint32 color, bool out
+ 		SDL_BlitSurface(textSurf, NULL, surf, &pos);
+ 		// load the text outline surface as a GL texture
+ 		allsurfaces[imgref] = surf;
+-		allsurfaces[imgref]->refcount = imgref;
++		allsurfaces[imgref]->userdata = (void*) imgref;
+ 		glLoadTexture(allsurfaces[imgref], imgref);
+ 		imgref++;
+ 		// store the surface in the text surface cache
+diff --git a/src/files.cpp b/src/files.cpp
+index 2beb9a6b9..389ade6d1 100644
+--- a/src/files.cpp
++++ b/src/files.cpp
+@@ -591,7 +591,7 @@ SDL_Surface* loadImage(char const * const filename)
+ 
+ 	// load the new surface as a GL texture
+ 	allsurfaces[imgref] = newSurface;
+-	allsurfaces[imgref]->refcount = imgref + 1;
++	allsurfaces[imgref]->userdata = (void *)(imgref);
+ 	glLoadTexture(allsurfaces[imgref], imgref);
+ 
+ 	// free the translated surface
+diff --git a/src/opengl.cpp b/src/opengl.cpp
+index f5b81e77a..3ac225825 100644
+--- a/src/opengl.cpp
++++ b/src/opengl.cpp
+@@ -500,7 +500,7 @@ void glDrawSprite(view_t* camera, Entity* entity, int mode)
+ 	}
+ 	if ( mode == REALCOLORS )
+ 	{
+-		glBindTexture(GL_TEXTURE_2D, texid[sprite->refcount]);
++		glBindTexture(GL_TEXTURE_2D, texid[(long int)sprite->userdata]);
+ 	}
+ 	else
+ 	{
+@@ -586,7 +586,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
+ 	//int x, y;
+ 	real_t s = 1;
+ 	SDL_Surface* image = sprites[0];
+-	GLuint textureId = texid[sprites[0]->refcount];
++	GLuint textureId = texid[(long int)sprites[0]->userdata];
+ 	char textToRetrieve[128];
+ 
+ 	if ( text.compare("") == 0 )
+@@ -603,7 +603,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
+ 	textToRetrieve[std::min(static_cast<int>(strlen(text.c_str())), 22)] = '\0';
+ 	if ( (image = ttfTextHashRetrieve(ttfTextHash, textToRetrieve, ttf12, true)) != NULL )
+ 	{
+-		textureId = texid[image->refcount];
++		textureId = texid[(long int)image->userdata];
+ 	}
+ 	else
+ 	{
+@@ -627,7 +627,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
+ 		SDL_BlitSurface(textSurf, NULL, image, &pos);
+ 		// load the text outline surface as a GL texture
+ 		allsurfaces[imgref] = image;
+-		allsurfaces[imgref]->refcount = imgref;
++		allsurfaces[imgref]->userdata = (void *)((long int)imgref);
+ 		glLoadTexture(allsurfaces[imgref], imgref);
+ 		imgref++;
+ 		// store the surface in the text surface cache
+@@ -635,7 +635,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
+ 		{
+ 			printlog("warning: failed to store text outline surface with imgref %d\n", imgref - 1);
+ 		}
+-		textureId = texid[image->refcount];
++		textureId = texid[(long int)image->userdata];
+ 	}
+ 	// setup projection
+ 	glMatrixMode(GL_PROJECTION);
+@@ -864,7 +864,7 @@ void glDrawWorld(view_t* camera, int mode)
+ 
+ 		// first (higher) sky layer
+ 		glColor4f(1.f, 1.f, 1.f, .5);
+-		glBindTexture(GL_TEXTURE_2D, texid[tiles[cloudtile]->refcount]); // sky tile
++		glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[cloudtile]->userdata]); // sky tile
+ 		glBegin( GL_QUADS );
+ 		glTexCoord2f((real_t)(ticks % 60) / 60, (real_t)(ticks % 60) / 60);
+ 		glVertex3f(-CLIPFAR * 16, 64, -CLIPFAR * 16);
+@@ -881,7 +881,7 @@ void glDrawWorld(view_t* camera, int mode)
+ 
+ 		// second (closer) sky layer
+ 		glColor4f(1.f, 1.f, 1.f, .5);
+-		glBindTexture(GL_TEXTURE_2D, texid[tiles[cloudtile]->refcount]); // sky tile
++		glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[cloudtile]->userdata]); // sky tile
+ 		glBegin( GL_QUADS );
+ 		glTexCoord2f((real_t)(ticks % 240) / 240, (real_t)(ticks % 240) / 240);
+ 		glVertex3f(-CLIPFAR * 16, 32, -CLIPFAR * 16);
+@@ -954,13 +954,13 @@ void glDrawWorld(view_t* camera, int mode)
+ 						{
+ 							if ( map.tiles[index] < 0 || map.tiles[index] >= numtiles )
+ 							{
+-								new_tex = texid[sprites[0]->refcount];
+-								//glBindTexture(GL_TEXTURE_2D, texid[sprites[0]->refcount]);
++								new_tex = texid[(long int)sprites[0]->userdata];
++								//glBindTexture(GL_TEXTURE_2D, texid[(long int)sprites[0]->userdata]);
+ 							}
+ 							else
+ 							{
+-								new_tex = texid[tiles[map.tiles[index]]->refcount];
+-								//glBindTexture(GL_TEXTURE_2D, texid[tiles[map.tiles[index]]->refcount]);
++								new_tex = texid[(long int)tiles[map.tiles[index]]->userdata];
++								//glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[map.tiles[index]]->userdata]);
+ 							}
+ 						}
+ 						else
+@@ -1282,8 +1282,8 @@ void glDrawWorld(view_t* camera, int mode)
+ 						// bind texture
+ 						if ( mode == REALCOLORS )
+ 						{
+-							new_tex = texid[tiles[mapceilingtile]->refcount];
+-							//glBindTexture(GL_TEXTURE_2D, texid[tiles[50]->refcount]); // rock tile
++							new_tex = texid[(long int)tiles[mapceilingtile]->userdata];
++							//glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[50]->userdata]); // rock tile
+ 							if (cur_tex!=new_tex)
+ 							{
+ 								glEnd();
+diff --git a/src/savepng.cpp b/src/savepng.cpp
+index fa7a5d4e2..59e052a5c 100644
+--- a/src/savepng.cpp
++++ b/src/savepng.cpp
+@@ -59,7 +59,7 @@ SDL_Surface* SDL_PNGFormatAlpha(SDL_Surface* src)
+ 	/* NO-OP for images < 32bpp and 32bpp images that already have Alpha channel */
+ 	if (src->format->BitsPerPixel <= 24 || src->format->Amask)
+ 	{
+-		src->refcount++;
++		src->userdata = (void *)((long int) src->userdata + 1);
+ 		return src;
+ 	}
+ 
diff --git a/gnu/packages/patches/fail2ban-0.11.2_CVE-2021-32749.patch b/gnu/packages/patches/fail2ban-0.11.2_CVE-2021-32749.patch
new file mode 100644
index 0000000000..d3c677918c
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-0.11.2_CVE-2021-32749.patch
@@ -0,0 +1,155 @@
+From 410a6ce5c80dd981c22752da034f2529b5eee844 Mon Sep 17 00:00:00 2001
+From: sebres <serg.brester@sebres.de>
+Date: Mon, 21 Jun 2021 17:12:53 +0200
+Subject: [PATCH] fixed possible RCE vulnerability, unset escape variable
+ (default tilde) stops consider "~" char after new-line as composing escape
+ sequence
+
+---
+ config/action.d/complain.conf         | 2 +-
+ config/action.d/dshield.conf          | 2 +-
+ config/action.d/mail-buffered.conf    | 8 ++++----
+ config/action.d/mail-whois-lines.conf | 2 +-
+ config/action.d/mail-whois.conf       | 6 +++---
+ config/action.d/mail.conf             | 6 +++---
+ 6 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/config/action.d/complain.conf b/config/action.d/complain.conf
+index 3a5f882c9f..4d73b05859 100644
+--- a/config/action.d/complain.conf
++++ b/config/action.d/complain.conf
+@@ -102,7 +102,7 @@ logpath = /dev/null
+ # Notes.:  Your system mail command. Is passed 2 args: subject and recipient
+ # Values:  CMD
+ #
+-mailcmd = mail -s
++mailcmd = mail -E 'set escape' -s
+ 
+ # Option:  mailargs
+ # Notes.:  Additional arguments to mail command. e.g. for standard Unix mail:
+diff --git a/config/action.d/dshield.conf b/config/action.d/dshield.conf
+index c128bef348..3d5a7a53a9 100644
+--- a/config/action.d/dshield.conf
++++ b/config/action.d/dshield.conf
+@@ -179,7 +179,7 @@ tcpflags =
+ # Notes.:  Your system mail command. Is passed 2 args: subject and recipient
+ # Values:  CMD
+ #
+-mailcmd = mail -s
++mailcmd = mail -E 'set escape' -s
+ 
+ # Option:  mailargs
+ # Notes.:  Additional arguments to mail command. e.g. for standard Unix mail:
+diff --git a/config/action.d/mail-buffered.conf b/config/action.d/mail-buffered.conf
+index 325f185b2f..79b841049c 100644
+--- a/config/action.d/mail-buffered.conf
++++ b/config/action.d/mail-buffered.conf
+@@ -17,7 +17,7 @@ actionstart = printf %%b "Hi,\n
+               The jail <name> has been started successfully.\n
+               Output will be buffered until <lines> lines are available.\n
+               Regards,\n
+-              Fail2Ban"|mail -s "[Fail2Ban] <name>: started on <fq-hostname>" <dest>
++              Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: started on <fq-hostname>" <dest>
+ 
+ # Option:  actionstop
+ # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)
+@@ -28,13 +28,13 @@ actionstop = if [ -f <tmpfile> ]; then
+                  These hosts have been banned by Fail2Ban.\n
+                  `cat <tmpfile>`
+                  Regards,\n
+-                 Fail2Ban"|mail -s "[Fail2Ban] <name>: Summary from <fq-hostname>" <dest>
++                 Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: Summary from <fq-hostname>" <dest>
+                  rm <tmpfile>
+              fi
+              printf %%b "Hi,\n
+              The jail <name> has been stopped.\n
+              Regards,\n
+-             Fail2Ban"|mail -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
++             Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
+ 
+ # Option:  actioncheck
+ # Notes.:  command executed once before each actionban command
+@@ -55,7 +55,7 @@ actionban = printf %%b "`date`: <ip> (<failures> failures)\n" >> <tmpfile>
+                 These hosts have been banned by Fail2Ban.\n
+                 `cat <tmpfile>`
+                 \nRegards,\n
+-                Fail2Ban"|mail -s "[Fail2Ban] <name>: Summary" <dest>
++                Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: Summary" <dest>
+                 rm <tmpfile>
+             fi
+ 
+diff --git a/config/action.d/mail-whois-lines.conf b/config/action.d/mail-whois-lines.conf
+index 3a3e56b2c7..d2818cb9b9 100644
+--- a/config/action.d/mail-whois-lines.conf
++++ b/config/action.d/mail-whois-lines.conf
+@@ -72,7 +72,7 @@ actionunban =
+ # Notes.:  Your system mail command. Is passed 2 args: subject and recipient
+ # Values:  CMD
+ #
+-mailcmd = mail -s
++mailcmd = mail -E 'set escape' -s
+ 
+ # Default name of the chain
+ #
+diff --git a/config/action.d/mail-whois.conf b/config/action.d/mail-whois.conf
+index 7fea34c40d..ab33b616dc 100644
+--- a/config/action.d/mail-whois.conf
++++ b/config/action.d/mail-whois.conf
+@@ -20,7 +20,7 @@ norestored = 1
+ actionstart = printf %%b "Hi,\n
+               The jail <name> has been started successfully.\n
+               Regards,\n
+-              Fail2Ban"|mail -s "[Fail2Ban] <name>: started on <fq-hostname>" <dest>
++              Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: started on <fq-hostname>" <dest>
+ 
+ # Option:  actionstop
+ # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)
+@@ -29,7 +29,7 @@ actionstart = printf %%b "Hi,\n
+ actionstop = printf %%b "Hi,\n
+              The jail <name> has been stopped.\n
+              Regards,\n
+-             Fail2Ban"|mail -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
++             Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
+ 
+ # Option:  actioncheck
+ # Notes.:  command executed once before each actionban command
+@@ -49,7 +49,7 @@ actionban = printf %%b "Hi,\n
+             Here is more information about <ip> :\n
+             `%(_whois_command)s`\n
+             Regards,\n
+-            Fail2Ban"|mail -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <dest>
++            Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <dest>
+ 
+ # Option:  actionunban
+ # Notes.:  command executed when unbanning an IP. Take care that the
+diff --git a/config/action.d/mail.conf b/config/action.d/mail.conf
+index 5d8c0e154c..f4838ddcb6 100644
+--- a/config/action.d/mail.conf
++++ b/config/action.d/mail.conf
+@@ -16,7 +16,7 @@ norestored = 1
+ actionstart = printf %%b "Hi,\n
+               The jail <name> has been started successfully.\n
+               Regards,\n
+-              Fail2Ban"|mail -s "[Fail2Ban] <name>: started  on <fq-hostname>" <dest>
++              Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: started  on <fq-hostname>" <dest>
+ 
+ # Option:  actionstop
+ # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)
+@@ -25,7 +25,7 @@ actionstart = printf %%b "Hi,\n
+ actionstop = printf %%b "Hi,\n
+              The jail <name> has been stopped.\n
+              Regards,\n
+-             Fail2Ban"|mail -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
++             Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: stopped on <fq-hostname>" <dest>
+ 
+ # Option:  actioncheck
+ # Notes.:  command executed once before each actionban command
+@@ -43,7 +43,7 @@ actionban = printf %%b "Hi,\n
+             The IP <ip> has just been banned by Fail2Ban after
+             <failures> attempts against <name>.\n
+             Regards,\n
+-            Fail2Ban"|mail -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <dest>
++            Fail2Ban"|mail -E 'set escape' -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <dest>
+ 
+ # Option:  actionunban
+ # Notes.:  command executed when unbanning an IP. Take care that the
diff --git a/gnu/packages/patches/fail2ban-0.11.2_fix-setuptools-drop-2to3.patch b/gnu/packages/patches/fail2ban-0.11.2_fix-setuptools-drop-2to3.patch
new file mode 100644
index 0000000000..b0b14364b1
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-0.11.2_fix-setuptools-drop-2to3.patch
@@ -0,0 +1,64 @@
+From 5ac303df8a171f748330d4c645ccbf1c2c7f3497 Mon Sep 17 00:00:00 2001
+From: sebres <info@sebres.de>
+Date: Sun, 19 Sep 2021 18:49:18 +0200
+Subject: [PATCH] fix gh-3098: build fails with error in fail2ban setup
+ command: use_2to3 is invalid (setuptools 58+)
+
+---
+ setup.py | 16 +---------------
+ 1 file changed, 1 insertion(+), 15 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index f4c2550f6f..98413273c5 100755
+--- a/setup.py
++++ b/setup.py
+@@ -48,7 +48,7 @@
+ from glob import glob
+ 
+ from fail2ban.setup import updatePyExec
+-
++from fail2ban.version import version
+ 
+ source_dir = os.path.realpath(os.path.dirname(
+ 	# __file__ seems to be overwritten sometimes on some python versions (e.g. bug of 2.6 by running under cProfile, etc.):
+@@ -112,22 +112,12 @@ def update_scripts(self, dry_run=False):
+ # Wrapper to specify fail2ban own options:
+ class install_command_f2b(install):
+ 	user_options = install.user_options + [
+-		('disable-2to3', None, 'Specify to deactivate 2to3, e.g. if the install runs from fail2ban test-cases.'),
+ 		('without-tests', None, 'without tests files installation'),
+ 	]
+ 	def initialize_options(self):
+-		self.disable_2to3 = None
+ 		self.without_tests = not with_tests
+ 		install.initialize_options(self)
+ 	def finalize_options(self):
+-		global _2to3
+-		## in the test cases 2to3 should be already done (fail2ban-2to3):
+-		if self.disable_2to3:
+-			_2to3 = False
+-		if _2to3:
+-			cmdclass = self.distribution.cmdclass
+-			cmdclass['build_py'] = build_py_2to3
+-			cmdclass['build_scripts'] = build_scripts_2to3
+ 		if self.without_tests:
+ 			self.distribution.scripts.remove('bin/fail2ban-testcases')
+ 
+@@ -178,7 +168,6 @@ def run(self):
+ if setuptools:
+ 	setup_extra = {
+ 		'test_suite': "fail2ban.tests.utils.gatherTests",
+-		'use_2to3': True,
+ 	}
+ else:
+ 	setup_extra = {}
+@@ -202,9 +191,6 @@ def run(self):
+ 		('/usr/share/doc/fail2ban', doc_files)
+ 	)
+ 
+-# Get version number, avoiding importing fail2ban.
+-# This is due to tests not functioning for python3 as 2to3 takes place later
+-exec(open(join("fail2ban", "version.py")).read())
+ 
+ setup(
+ 	name = "fail2ban",
diff --git a/gnu/packages/patches/fail2ban-0.11.2_fix-test-suite.patch b/gnu/packages/patches/fail2ban-0.11.2_fix-test-suite.patch
new file mode 100644
index 0000000000..91d973e72e
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-0.11.2_fix-test-suite.patch
@@ -0,0 +1,48 @@
+From 747d4683221b5584f9663695fb48145689b42ceb Mon Sep 17 00:00:00 2001
+From: sebres <info@sebres.de>
+Date: Mon, 4 Jan 2021 02:42:38 +0100
+Subject: [PATCH] fixes century selector of %ExY and %Exy in datepattern for
+ tests, considering interval from 2005 (alternate now) to now; + better
+ grouping algorithm for resulting century RE
+
+---
+ fail2ban/server/strptime.py | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/fail2ban/server/strptime.py b/fail2ban/server/strptime.py
+index 1464a96d1f..39fc795865 100644
+--- a/fail2ban/server/strptime.py
++++ b/fail2ban/server/strptime.py
+@@ -36,10 +36,30 @@ def _getYearCentRE(cent=(0,3), distance=3, now=(MyTime.now(), MyTime.alternateNo
+ 	Thereby respect possible run in the test-cases (alternate date used there)
+ 	"""
+ 	cent = lambda year, f=cent[0], t=cent[1]: str(year)[f:t]
++	def grp(exprset):
++		c = None
++		if len(exprset) > 1:
++			for i in exprset:
++				if c is None or i[0:-1] == c:
++					c = i[0:-1]
++				else:
++					c = None
++					break
++			if not c:
++				for i in exprset:
++					if c is None or i[0] == c:
++						c = i[0]
++					else:
++						c = None
++						break
++			if c:
++				return "%s%s" % (c, grp([i[len(c):] for i in exprset]))
++		return ("(?:%s)" % "|".join(exprset) if len(exprset[0]) > 1 else "[%s]" % "".join(exprset)) \
++			if len(exprset) > 1 else "".join(exprset)
+ 	exprset = set( cent(now[0].year + i) for i in (-1, distance) )
+ 	if len(now) and now[1]:
+-		exprset |= set( cent(now[1].year + i) for i in (-1, distance) )
+-	return "(?:%s)" % "|".join(exprset) if len(exprset) > 1 else "".join(exprset)
++		exprset |= set( cent(now[1].year + i) for i in xrange(-1, now[0].year-now[1].year+1, distance) )
++	return grp(sorted(list(exprset)))
+ 
+ timeRE = TimeRE()
+ 
diff --git a/gnu/packages/patches/fail2ban-paths-guix-conf.patch b/gnu/packages/patches/fail2ban-paths-guix-conf.patch
new file mode 100644
index 0000000000..8c2a5747ba
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-paths-guix-conf.patch
@@ -0,0 +1,32 @@
+From ef28dcf7a5bdbfd8ba586bb066d5ec53188a6bf9 Mon Sep 17 00:00:00 2001
+From: muradm <mail@muradm.net>
+Date: Fri, 15 Jul 2022 20:08:14 +0300
+Subject: [PATCH] Add paths-guix.conf file.
+
+---
+ config/paths-guix.conf | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+ create mode 100644 config/paths-guix.conf
+
+diff --git a/config/paths-guix.conf b/config/paths-guix.conf
+new file mode 100644
+index 00000000..b4a2e9f5
+--- /dev/null
++++ b/config/paths-guix.conf
+@@ -0,0 +1,13 @@
++# Guix
++
++[INCLUDES]
++
++before = paths-common.conf
++after = paths-overrides.local
++
++
++[DEFAULT]
++
++syslog_authpriv = /var/log/secure
++syslog_mail = /var/log/maillog
++syslog_mail_warn = /var/log/maillog
+-- 
+2.36.1
+
diff --git a/gnu/packages/patches/fail2ban-python310-server-action.patch b/gnu/packages/patches/fail2ban-python310-server-action.patch
new file mode 100644
index 0000000000..723d7f7aa6
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-python310-server-action.patch
@@ -0,0 +1,27 @@
+From 2b6bb2c1bed8f7009631e8f8c306fa3160324a49 Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Mon, 8 Feb 2021 17:19:24 +0100
+Subject: [PATCH] follow bpo-37324: :ref:`collections-abstract-base-classes`
+ moved to the :mod:`collections.abc` module
+
+(since 3.10-alpha.5 `MutableMapping` is missing in collections module)
+---
+ fail2ban/server/action.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fail2ban/server/action.py b/fail2ban/server/action.py
+index 3bc48fe046..f0f1e6f59a 100644
+--- a/fail2ban/server/action.py
++++ b/fail2ban/server/action.py
+@@ -30,7 +30,10 @@
+ import threading
+ import time
+ from abc import ABCMeta
+-from collections import MutableMapping
++try:
++	from collections.abc import MutableMapping
++except ImportError:
++	from collections import MutableMapping
+ 
+ from .failregex import mapTag2Opt
+ from .ipdns import DNSUtils
diff --git a/gnu/packages/patches/fail2ban-python310-server-actions.patch b/gnu/packages/patches/fail2ban-python310-server-actions.patch
new file mode 100644
index 0000000000..e31316d28b
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-python310-server-actions.patch
@@ -0,0 +1,25 @@
+From 42dee38ad2ac5c3f23bdf297d824022923270dd9 Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Mon, 8 Feb 2021 17:25:45 +0100
+Subject: [PATCH] amend for `Mapping`
+
+---
+ fail2ban/server/actions.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fail2ban/server/actions.py b/fail2ban/server/actions.py
+index b7b95b445a..897d907c1a 100644
+--- a/fail2ban/server/actions.py
++++ b/fail2ban/server/actions.py
+@@ -28,7 +28,10 @@
+ import os
+ import sys
+ import time
+-from collections import Mapping
++try:
++	from collections.abc import Mapping
++except ImportError:
++	from collections import Mapping
+ try:
+ 	from collections import OrderedDict
+ except ImportError:
diff --git a/gnu/packages/patches/fail2ban-python310-server-jails.patch b/gnu/packages/patches/fail2ban-python310-server-jails.patch
new file mode 100644
index 0000000000..e5873c415e
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-python310-server-jails.patch
@@ -0,0 +1,25 @@
+From 9f1d1f4fbd0804695a976beb191f2c49a2739834 Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Mon, 8 Feb 2021 17:35:59 +0100
+Subject: [PATCH] amend for `Mapping` (jails)
+
+---
+ fail2ban/server/jails.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fail2ban/server/jails.py b/fail2ban/server/jails.py
+index 972a8c4bd2..27e12ddf65 100644
+--- a/fail2ban/server/jails.py
++++ b/fail2ban/server/jails.py
+@@ -22,7 +22,10 @@
+ __license__ = "GPL"
+ 
+ from threading import Lock
+-from collections import Mapping
++try:
++	from collections.abc import Mapping
++except ImportError:
++	from collections import Mapping
+ 
+ from ..exceptions import DuplicateJailException, UnknownJailException
+ from .jail import Jail
diff --git a/gnu/packages/patches/fuse-glibc-2.34.patch b/gnu/packages/patches/fuse-glibc-2.34.patch
new file mode 100644
index 0000000000..5f973e2491
--- /dev/null
+++ b/gnu/packages/patches/fuse-glibc-2.34.patch
@@ -0,0 +1,49 @@
+Don't redefine 'closefrom' if available through glibc.
+
+Shamelessly stolen from Gentoo:
+
+  https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-fs/fuse/files/fuse-2.9.9-closefrom-glibc-2-34.patch
+
+diff --git a/configure.ac b/configure.ac
+index 9946a0efa..a2d481aa9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,6 +55,7 @@ fi
+ 
+ AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat])
+ AC_CHECK_FUNCS([posix_fallocate])
++AC_CHECK_FUNCS([closefrom])
+ AC_CHECK_MEMBERS([struct stat.st_atim])
+ AC_CHECK_MEMBERS([struct stat.st_atimespec])
+ 
+diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c
+index 273c7d923..a04dac5c6 100644
+--- a/util/ulockmgr_server.c
++++ b/util/ulockmgr_server.c
+@@ -22,6 +22,10 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ 
++#ifdef HAVE_CONFIG_H
++	#include "config.h"
++#endif
++
+ struct message {
+ 	unsigned intr : 1;
+ 	unsigned nofd : 1;
+@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp,
+ 	return res;
+ }
+ 
++#if !defined(HAVE_CLOSEFROM)
+ static int closefrom(int minfd)
+ {
+ 	DIR *dir = opendir("/proc/self/fd");
+@@ -141,6 +146,7 @@ static int closefrom(int minfd)
+ 	}
+ 	return 0;
+ }
++#endif
+ 
+ static void send_reply(int cfd, struct message *msg)
+ {
diff --git a/gnu/packages/patches/gnupg-CVE-2022-34903.patch b/gnu/packages/patches/gnupg-CVE-2022-34903.patch
new file mode 100644
index 0000000000..19c055282a
--- /dev/null
+++ b/gnu/packages/patches/gnupg-CVE-2022-34903.patch
@@ -0,0 +1,54 @@
+https://dev.gnupg.org/T6027
+https://www.openwall.com/lists/oss-security/2022/06/30/1
+https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=34c649b3601383cd11dbc76221747ec16fd68e1b
+
+From 34c649b3601383cd11dbc76221747ec16fd68e1b Mon Sep 17 00:00:00 2001
+From: Werner Koch <wk@gnupg.org>
+Date: Tue, 14 Jun 2022 11:33:27 +0200
+Subject: [PATCH] g10: Fix garbled status messages in NOTATION_DATA
+
+* g10/cpr.c (write_status_text_and_buffer): Fix off-by-one
+--
+
+Depending on the escaping and line wrapping the computed remaining
+buffer length could be wrong.  Fixed by always using a break to
+terminate the escape detection loop.  Might have happened for all
+status lines which may wrap.
+
+GnuPG-bug-id: T6027
+---
+ g10/cpr.c | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/g10/cpr.c b/g10/cpr.c
+index 9bfdd3c34..fa8005d6f 100644
+--- a/g10/cpr.c
++++ b/g10/cpr.c
+@@ -372,20 +372,15 @@ write_status_text_and_buffer (int no, const char *string,
+             }
+           first = 0;
+         }
+-      for (esc=0, s=buffer, n=len; n && !esc; s++, n--)
++      for (esc=0, s=buffer, n=len; n; s++, n--)
+         {
+           if (*s == '%' || *(const byte*)s <= lower_limit
+               || *(const byte*)s == 127 )
+             esc = 1;
+           if (wrap && ++count > wrap)
+-            {
+-              dowrap=1;
+-              break;
+-            }
+-        }
+-      if (esc)
+-        {
+-          s--; n++;
++            dowrap=1;
++          if (esc || dowrap)
++            break;
+         }
+       if (s != buffer)
+         es_fwrite (buffer, s-buffer, 1, statusfp);
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/gst-plugins-good-fix-test.patch b/gnu/packages/patches/gst-plugins-good-fix-test.patch
deleted file mode 100644
index 38ec0ba802..0000000000
--- a/gnu/packages/patches/gst-plugins-good-fix-test.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Fix a broken test:
-
-https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/803
-
-Patches copied from upstream source repository:
-
-https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/commit/2ce5909f3a0b0da3abb7b794215d6b8b72a3b7fa
-https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/commit/f5310ce346180a717f091f2f09bcbb3ddfb15436
-
-From 2ce5909f3a0b0da3abb7b794215d6b8b72a3b7fa Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
-Date: Thu, 12 Nov 2020 23:38:21 +0000
-Subject: [PATCH 1/2] tests: qtdemux: fix crash on 32-bit architectures
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/803
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/815>
----
- tests/check/elements/qtdemux.c | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/tests/check/elements/qtdemux.c b/tests/check/elements/qtdemux.c
-index 5271c6576..0c748278b 100644
---- a/tests/check/elements/qtdemux.c
-+++ b/tests/check/elements/qtdemux.c
-@@ -797,9 +797,10 @@ GST_START_TEST (test_qtdemux_pad_names)
-       "protection-system", G_TYPE_STRING,
-       "9a04f079-9840-4286-ab92-e65be0885f95", NULL);
-   caps =
--      gst_caps_new_simple ("video/quicktime", "variant", G_TYPE_STRING,
--      "mss-fragmented", "timesacle", G_TYPE_UINT64, 10000000, "media-caps",
--      GST_TYPE_CAPS, mediacaps, NULL);
-+      gst_caps_new_simple ("video/quicktime",
-+      "variant", G_TYPE_STRING, "mss-fragmented",
-+      "timesacle", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-+      "media-caps", GST_TYPE_CAPS, mediacaps, NULL);
- 
-   /* Send segment event* */
-   event = gst_event_new_caps (caps);
-@@ -852,9 +853,10 @@ GST_START_TEST (test_qtdemux_pad_names)
-       "protection-system", G_TYPE_STRING,
-       "9a04f079-9840-4286-ab92-e65be0885f95", NULL);
-   caps =
--      gst_caps_new_simple ("video/quicktime", "variant", G_TYPE_STRING,
--      "mss-fragmented", "timesacle", G_TYPE_UINT64, 10000000, "media-caps",
--      GST_TYPE_CAPS, mediacaps, NULL);
-+      gst_caps_new_simple ("video/quicktime",
-+      "variant", G_TYPE_STRING, "mss-fragmented",
-+      "timesacle", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-+      "media-caps", GST_TYPE_CAPS, mediacaps, NULL);
- 
-   /* Send segment event* */
-   event = gst_event_new_caps (caps);
--- 
-2.30.0
-
-
-From f5310ce346180a717f091f2f09bcbb3ddfb15436 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
-Date: Thu, 12 Nov 2020 23:39:21 +0000
-Subject: [PATCH 2/2] tests: qtdemux: fix typo in caps field
-
-timesacle -> timescale
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/815>
----
- tests/check/elements/qtdemux.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/check/elements/qtdemux.c b/tests/check/elements/qtdemux.c
-index 0c748278b..4a14c45c0 100644
---- a/tests/check/elements/qtdemux.c
-+++ b/tests/check/elements/qtdemux.c
-@@ -799,7 +799,7 @@ GST_START_TEST (test_qtdemux_pad_names)
-   caps =
-       gst_caps_new_simple ("video/quicktime",
-       "variant", G_TYPE_STRING, "mss-fragmented",
--      "timesacle", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-+      "timescale", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-       "media-caps", GST_TYPE_CAPS, mediacaps, NULL);
- 
-   /* Send segment event* */
-@@ -855,7 +855,7 @@ GST_START_TEST (test_qtdemux_pad_names)
-   caps =
-       gst_caps_new_simple ("video/quicktime",
-       "variant", G_TYPE_STRING, "mss-fragmented",
--      "timesacle", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-+      "timescale", G_TYPE_UINT64, G_GUINT64_CONSTANT (10000000),
-       "media-caps", GST_TYPE_CAPS, mediacaps, NULL);
- 
-   /* Send segment event* */
--- 
-2.30.0
-
diff --git a/gnu/packages/patches/jami-fix-crash-on-quit.patch b/gnu/packages/patches/jami-fix-crash-on-quit.patch
deleted file mode 100644
index c25bce588a..0000000000
--- a/gnu/packages/patches/jami-fix-crash-on-quit.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Retrieved from:
-https://git.jami.net/savoirfairelinux/jami-client-qt/-/commit/83f68573324a453a6d26e025fd6439f175a79d1b.diff.
-
-With the 'client-qt' prefix added to match the file hierarchy of the release tarball.
-
-diff --git a/client-qt/src/mainapplication.cpp b/client-qt/src/mainapplication.cpp
-index 0c3209fc6fa7c528bec197f1cf9332758170441c..278f19287b86dd2c916935ab0930cbe0abb35d26 100644
---- a/client-qt/src/mainapplication.cpp
-+++ b/client-qt/src/mainapplication.cpp
-@@ -155,7 +155,11 @@ MainApplication::MainApplication(int& argc, char** argv)
-     QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
- }
- 
--MainApplication::~MainApplication() {}
-+MainApplication::~MainApplication()
-+{
-+    engine_.reset();
-+    lrcInstance_.reset();
-+}
- 
- bool
- MainApplication::init()
-diff --git a/src/mainapplication.h b/src/mainapplication.h
-index 51306be829478b9fbc1c61a08aeb96938be26dac..4047e3abb3cfd3e6250387a37fa5a896e9bc4161 100644
---- a/client-qt/src/mainapplication.h
-+++ b/client-qt/src/mainapplication.h
-@@ -80,7 +80,6 @@ private:
- private:
-     QScopedPointer<QFile> debugFile_;
-     QScopedPointer<QQmlApplicationEngine> engine_;
--
-     QScopedPointer<LRCInstance> lrcInstance_;
- 
-     QScopedPointer<ConnectivityMonitor> connectivityMonitor_;
diff --git a/gnu/packages/patches/jami-fix-esc-bug.patch b/gnu/packages/patches/jami-fix-esc-bug.patch
new file mode 100644
index 0000000000..6d78542f1e
--- /dev/null
+++ b/gnu/packages/patches/jami-fix-esc-bug.patch
@@ -0,0 +1,24 @@
+This fixes the issue where pressing the ESC key would hide the Jami
+GUI on systems lacking a notification tray.
+
+From 47fd4c38ddd8bd350319ce9bb750ca496826e655 Mon Sep 17 00:00:00 2001
+From: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
+Date: Fri, 29 Jul 2022 21:24:01 -0400
+Subject: [PATCH] layoutmanager: fix popFullScreenItem
+
+Change-Id: I79780d4ad570846e6f3c52734dd627bcd0e11327
+---
+
+diff --git a/src/app/LayoutManager.qml b/src/app/LayoutManager.qml
+index 98516ce..87f13ac 100644
+--- a/client-qt/src/app/LayoutManager.qml
++++ b/client-qt/src/app/LayoutManager.qml
+@@ -176,7 +176,7 @@
+
+         // Only leave fullscreen mode if our window isn't in fullscreen
+         // mode already.
+-        if (priv.fullScreenItems.length === 0) {
++        if (priv.fullScreenItems.length === 0 && priv.windowedVisibility !== Window.Hidden) {
+             // Simply recall the last visibility state.
+             visibility = priv.windowedVisibility
+         }
diff --git a/gnu/packages/patches/jami-images-loading.patch b/gnu/packages/patches/jami-images-loading.patch
deleted file mode 100644
index caf9e1e198..0000000000
--- a/gnu/packages/patches/jami-images-loading.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From be9dd0d0d8cb4556cd930edd783c0a1699565ac0 Mon Sep 17 00:00:00 2001
-From: kkostiuk <kateryna.kostiuk@savoirfairelinux.com>
-Date: Mon, 1 Nov 2021 17:39:23 -0400
-Subject: [PATCH] conversation: fix long loading time for images
-
-Change-Id: Id88cfbd571f4b504f258758bd13b4e4a91bf1b49
----
- .../DataTransferMessageDelegate.qml           | 52 +++++++++++++++++--
- src/messagesadapter.cpp                       | 20 +++++--
- src/messagesadapter.h                         |  2 +-
- 3 files changed, 66 insertions(+), 8 deletions(-)
-
-diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-index 7875e01..2e7dcc0 100644
---- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-@@ -252,10 +252,11 @@ Loader {
-                 Loader {
-                     id: localMediaCompLoader
-                     anchors.right: isOutgoing ? parent.right : undefined
-+                    asynchronous: true
-                     width: sourceComponent.width
-                     height: sourceComponent.height
-                     sourceComponent: mediaInfo.isImage !== undefined ?
--                                         imageComp :
-+                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
-                                          avComp
-                     Component {
-                         id: avComp
-@@ -302,9 +303,9 @@ Loader {
-                         }
-                     }
-                     Component {
--                        id: imageComp
-+                        id: animatedImageComp
-                         AnimatedImage {
--                            id: img
-+                            id: animatedImg
-                             anchors.right: isOutgoing ? parent.right : undefined
-                             property real minSize: 192
-                             property real maxSize: 256
-@@ -327,6 +328,51 @@ Loader {
-                                 anchors.fill: parent
-                             }
-                             layer.enabled: true
-+                            layer.effect: OpacityMask {
-+                                maskSource: MessageBubble {
-+                                    out: isOutgoing
-+                                    type: seq
-+                                    width: animatedImg.width
-+                                    height: animatedImg.height
-+                                    radius: msgRadius
-+                                }
-+                            }
-+                            HoverHandler {
-+                                target : parent
-+                                onHoveredChanged: {
-+                                    localMediaMsgItem.hoveredLink = hovered ? animatedImg.source : ""
-+                                }
-+                                cursorShape: Qt.PointingHandCursor
-+                            }
-+                        }
-+                    }
-+
-+                    Component {
-+                        id: imageComp
-+                        Image {
-+                            id: img
-+                            anchors.right: isOutgoing ? parent.right : undefined
-+                            property real minSize: 192
-+                            property real maxSize: 256
-+                            cache: true
-+                            fillMode: Image.PreserveAspectCrop
-+                            mipmap: true
-+                            antialiasing: true
-+                            autoTransform: false
-+                            asynchronous: true
-+                            source: "file:///" + Body
-+                            property real aspectRatio: implicitWidth / implicitHeight
-+                            property real adjustedWidth: Math.min(maxSize,
-+                                                                  Math.max(minSize,
-+                                                                           innerContent.width - senderMargin))
-+                            width: adjustedWidth
-+                            height: Math.ceil(adjustedWidth / aspectRatio)
-+                            Rectangle {
-+                                color: JamiTheme.previewImageBackgroundColor
-+                                z: -1
-+                                anchors.fill: parent
-+                            }
-+                            layer.enabled: true
-                             layer.effect: OpacityMask {
-                                 maskSource: MessageBubble {
-                                     out: isOutgoing
-diff --git a/client-qt/src/messagesadapter.cpp b/client-qt/src/messagesadapter.cpp
-index 91f8eed..ba38e53 100644
---- a/client-qt/src/messagesadapter.cpp
-+++ b/client-qt/src/messagesadapter.cpp
-@@ -458,13 +458,24 @@ MessagesAdapter::conversationTypersUrlToName(const QSet<QString>& typersSet)
-     return nameList;
- }
- 
--bool
-+QVariantMap
- MessagesAdapter::isLocalImage(const QString& msg)
- {
-     QImageReader reader;
-     reader.setDecideFormatFromContent(true);
-     reader.setFileName(msg);
--    return !reader.read().isNull();
-+    QByteArray fileFormat = reader.format();
-+    if (fileFormat == "gif") {
-+        return {{"isAnimatedImage", true}};
-+    }
-+    QList<QByteArray> supportedFormats = reader.supportedImageFormats();
-+    auto iterator = std::find_if(supportedFormats.begin(),
-+                                 supportedFormats.end(),
-+                                 [fileFormat](QByteArray format) { return format == fileFormat; });
-+    if (iterator != supportedFormats.end()) {
-+        return {{"isImage", true}};
-+    }
-+    return {{"isImage", false}};
- }
- 
- QVariantMap
-@@ -476,8 +487,9 @@ MessagesAdapter::getMediaInfo(const QString& msg)
-           "<%1 style='width:100%;height:%2;outline:none;background-color:#f1f3f4;"
-           "object-fit:cover;' "
-           "controls controlsList='nodownload' src='file://%3' type='%4'/></body>";
--    if (isLocalImage(msg)) {
--        return {{"isImage", true}};
-+    QVariantMap fileInfo = isLocalImage(msg);
-+    if (fileInfo["isImage"].toBool() || fileInfo["isAnimatedImage"].toBool()) {
-+        return fileInfo;
-     }
-     QRegularExpression vPattern("[^\\s]+(.*?)\\.(avi|mov|webm|webp|rmvb)$",
-                                 QRegularExpression::CaseInsensitiveOption);
-diff --git a/client-qt/src/messagesadapter.h b/client-qt/src/messagesadapter.h
-index bfa4e62..1965c5e 100644
---- a/client-qt/src/messagesadapter.h
-+++ b/client-qt/src/messagesadapter.h
-@@ -101,7 +101,7 @@ protected:
-     Q_INVOKABLE void deleteInteraction(const QString& interactionId);
-     Q_INVOKABLE void copyToDownloads(const QString& interactionId, const QString& displayName);
-     Q_INVOKABLE void userIsComposing(bool isComposing);
--    Q_INVOKABLE bool isLocalImage(const QString& msg);
-+    Q_INVOKABLE QVariantMap isLocalImage(const QString& msg);
-     Q_INVOKABLE QVariantMap getMediaInfo(const QString& msg);
-     Q_INVOKABLE bool isRemoteImage(const QString& msg);
-     Q_INVOKABLE QString getFormattedTime(const quint64 timestamp);
--- 
-GitLab
-
diff --git a/gnu/packages/patches/jami-libclient-audio-managers.patch b/gnu/packages/patches/jami-libclient-audio-managers.patch
deleted file mode 100644
index 1f8a5585e6..0000000000
--- a/gnu/packages/patches/jami-libclient-audio-managers.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From f5e4619d02526d961c14012a6cae1a091aa149d4 Mon Sep 17 00:00:00 2001
-From: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
-Date: Thu, 27 Jan 2022 13:48:32 -0500
-Subject: [PATCH] misc: link getSupportedAudioManagers
-q
-Change-Id: I897e49cd131d3cbffef9fb1d5c9be3c0bc9bcb3f
-GitLab: #495
----
-
-diff --git a/lrc/src/qtwrapper/configurationmanager_wrap.h b/lrc/src/qtwrapper/configurationmanager_wrap.h
-index a680138..2807f8a 100644
---- a/lrc/src/qtwrapper/configurationmanager_wrap.h
-+++ b/lrc/src/qtwrapper/configurationmanager_wrap.h
-@@ -526,8 +526,7 @@
- 
-     QStringList getSupportedAudioManagers()
-     {
--        QStringList temp;
--        return temp;
-+        return convertStringList(DRing::getSupportedAudioManagers());
-     }
- 
-     QStringList getSupportedTlsMethod()
diff --git a/gnu/packages/patches/jami-memory-usage.patch b/gnu/packages/patches/jami-memory-usage.patch
deleted file mode 100644
index 75fcde8d0a..0000000000
--- a/gnu/packages/patches/jami-memory-usage.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From e796b3325d95b5ddd6162b5513c8325210f41fc5 Mon Sep 17 00:00:00 2001
-From: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
-Date: Wed, 26 Jan 2022 11:37:07 -0500
-Subject: [PATCH] datatransferimage: improve memory usage
-
-+ Reduce listview caching' size by 50%
-+ use sourceSize to compress images and speedup loading
-+ use autoTransform: true to rotate images when needed
-
-Change-Id: Idf1babdc73f43aa6a79b89428c25c5d06856c0ef
-GitLab: #649
----
-
-diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-index d017c03..ca5913e 100644
---- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-@@ -255,9 +255,13 @@
-                     asynchronous: true
-                     width: sourceComponent.width
-                     height: sourceComponent.height
--                    sourceComponent: mediaInfo.isImage !== undefined ?
--                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
--                                         avComp
-+                    sourceComponent: {
-+                        if (mediaInfo.isImage)
-+                            return imageComp
-+                        if (mediaInfo.isAnimatedImage)
-+                            return animatedImageComp
-+                        return avComp
-+                    }
-                     Component {
-                         id: avComp
-                         WebEngineView {
-@@ -316,7 +320,7 @@
-                             fillMode: Image.PreserveAspectCrop
-                             mipmap: true
-                             antialiasing: true
--                            autoTransform: false
-+                            autoTransform: true
-                             asynchronous: true
-                             source: "file:///" + Body
-                             property real aspectRatio: implicitWidth / implicitHeight
-@@ -361,8 +365,10 @@
-                             fillMode: Image.PreserveAspectCrop
-                             mipmap: true
-                             antialiasing: true
--                            autoTransform: false
-+                            autoTransform: true
-                             asynchronous: true
-+                            sourceSize.width: width
-+                            sourceSize.height: height
-                             source: "file:///" + Body
-                             property real aspectRatio: implicitWidth / implicitHeight
-                             property real adjustedWidth: Math.min(maxSize,
-diff --git a/client-qt/src/mainview/components/MessageListView.qml b/client-qt/src/mainview/components/MessageListView.qml
-index 2b7c326..f65e67b 100644
---- a/client-qt/src/mainview/components/MessageListView.qml
-+++ b/client-qt/src/mainview/components/MessageListView.qml
-@@ -174,8 +174,8 @@
-     width: parent.width
-     // this offscreen caching is pretty huge
-     // displayMarginEnd may be removed
--    displayMarginBeginning: 4096
--    displayMarginEnd: 4096
-+    displayMarginBeginning: 2048
-+    displayMarginEnd: 2048
-     maximumFlickVelocity: 2048
-     verticalLayoutDirection: ListView.BottomToTop
-     boundsBehavior: Flickable.StopAtBounds
diff --git a/gnu/packages/patches/libphonenumber-reproducible-build.patch b/gnu/packages/patches/libphonenumber-reproducible-build.patch
new file mode 100644
index 0000000000..6d8cf5a628
--- /dev/null
+++ b/gnu/packages/patches/libphonenumber-reproducible-build.patch
@@ -0,0 +1,25 @@
+Author: Antero Mejr <antero@mailbox.org>
+Upstream status: I didn't report upstream because they don't have an issue tracker and
+PRs require signing the Google CLA. If someone willing to sign the CLA
+wants to submit the patch, please go ahead.
+
+diff --git a/tools/cpp/src/cpp-build/generate_geocoding_data.cc b/tools/cpp/src/cpp-build/generate_geocoding_data.cc
+index 021cf5c8..5948e140 100644
+--- a/tools/cpp/src/cpp-build/generate_geocoding_data.cc
++++ b/tools/cpp/src/cpp-build/generate_geocoding_data.cc
+@@ -88,6 +88,7 @@ class DirEntry {
+
+   const std::string& name() const { return name_; }
+   DirEntryKinds kind() const { return kind_; }
++  bool operator<(const DirEntry& d) { return name_ < d.name(); }
+ 
+  private:
+   std::string name_;
+@@ -115,6 +116,7 @@ bool ListDirectory(const string& path, vector<DirEntry>* entries) {
+     errno = 0;
+     entry = readdir(dir);
+     if (entry == NULL) {
++      std::sort(entries->begin(), entries->end());
+       return errno == 0;
+     }
+     if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
diff --git a/gnu/packages/patches/libtirpc-CVE-2021-46828.patch b/gnu/packages/patches/libtirpc-CVE-2021-46828.patch
new file mode 100644
index 0000000000..d7ecbd239d
--- /dev/null
+++ b/gnu/packages/patches/libtirpc-CVE-2021-46828.patch
@@ -0,0 +1,567 @@
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-46828
+https://nvd.nist.gov/vuln/detail/CVE-2021-46828
+
+http://git.linux-nfs.org/?p=steved/libtirpc.git;a=commit;h=86529758570cef4c73fb9b9c4104fdc510f701ed
+
+From 86529758570cef4c73fb9b9c4104fdc510f701ed Mon Sep 17 00:00:00 2001
+From: Dai Ngo <dai.ngo@oracle.com>
+Date: Sat, 21 Aug 2021 13:16:23 -0400
+Subject: [PATCH] Fix DoS vulnerability in libtirpc
+
+Currently svc_run does not handle poll timeout and rendezvous_request
+does not handle EMFILE error returned from accept(2 as it used to.
+These two missing functionality were removed by commit b2c9430f46c4.
+
+The effect of not handling poll timeout allows idle TCP conections
+to remain ESTABLISHED indefinitely. When the number of connections
+reaches the limit of the open file descriptors (ulimit -n) then
+accept(2) fails with EMFILE. Since there is no handling of EMFILE
+error this causes svc_run() to get in a tight loop calling accept(2).
+This resulting in the RPC service of svc_run is being down, it's
+no longer able to service any requests.
+
+RPC service rpcbind, statd and mountd are effected by this
+problem.
+
+Fix by enhancing rendezvous_request to keep the number of
+SVCXPRT conections to 4/5 of the size of the file descriptor
+table. When this thresold is reached, it destroys the idle
+TCP connections or destroys the least active connection if
+no idle connnction was found.
+
+Fixes: 44bf15b8 rpcbind: don't use obsolete svc_fdset interface of libtirpc
+Signed-off-by: dai.ngo@oracle.com
+Signed-off-by: Steve Dickson <steved@redhat.com>
+---
+ INSTALL      | 371 +----------------------------------------------------------
+ src/svc.c    |  17 ++-
+ src/svc_vc.c |  62 +++++++++-
+ 3 files changed, 78 insertions(+), 372 deletions(-)
+ mode change 100644 => 120000 INSTALL
+
+diff --git a/INSTALL b/INSTALL
+deleted file mode 100644
+index 2099840..0000000
+--- a/INSTALL
++++ /dev/null
+@@ -1,370 +0,0 @@
+-Installation Instructions
+-*************************
+-
+-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+-Inc.
+-
+-   Copying and distribution of this file, with or without modification,
+-are permitted in any medium without royalty provided the copyright
+-notice and this notice are preserved.  This file is offered as-is,
+-without warranty of any kind.
+-
+-Basic Installation
+-==================
+-
+-   Briefly, the shell command `./configure && make && make install'
+-should configure, build, and install this package.  The following
+-more-detailed instructions are generic; see the `README' file for
+-instructions specific to this package.  Some packages provide this
+-`INSTALL' file but do not implement all of the features documented
+-below.  The lack of an optional feature in a given package is not
+-necessarily a bug.  More recommendations for GNU packages can be found
+-in *note Makefile Conventions: (standards)Makefile Conventions.
+-
+-   The `configure' shell script attempts to guess correct values for
+-various system-dependent variables used during compilation.  It uses
+-those values to create a `Makefile' in each directory of the package.
+-It may also create one or more `.h' files containing system-dependent
+-definitions.  Finally, it creates a shell script `config.status' that
+-you can run in the future to recreate the current configuration, and a
+-file `config.log' containing compiler output (useful mainly for
+-debugging `configure').
+-
+-   It can also use an optional file (typically called `config.cache'
+-and enabled with `--cache-file=config.cache' or simply `-C') that saves
+-the results of its tests to speed up reconfiguring.  Caching is
+-disabled by default to prevent problems with accidental use of stale
+-cache files.
+-
+-   If you need to do unusual things to compile the package, please try
+-to figure out how `configure' could check whether to do them, and mail
+-diffs or instructions to the address given in the `README' so they can
+-be considered for the next release.  If you are using the cache, and at
+-some point `config.cache' contains results you don't want to keep, you
+-may remove or edit it.
+-
+-   The file `configure.ac' (or `configure.in') is used to create
+-`configure' by a program called `autoconf'.  You need `configure.ac' if
+-you want to change it or regenerate `configure' using a newer version
+-of `autoconf'.
+-
+-   The simplest way to compile this package is:
+-
+-  1. `cd' to the directory containing the package's source code and type
+-     `./configure' to configure the package for your system.
+-
+-     Running `configure' might take a while.  While running, it prints
+-     some messages telling which features it is checking for.
+-
+-  2. Type `make' to compile the package.
+-
+-  3. Optionally, type `make check' to run any self-tests that come with
+-     the package, generally using the just-built uninstalled binaries.
+-
+-  4. Type `make install' to install the programs and any data files and
+-     documentation.  When installing into a prefix owned by root, it is
+-     recommended that the package be configured and built as a regular
+-     user, and only the `make install' phase executed with root
+-     privileges.
+-
+-  5. Optionally, type `make installcheck' to repeat any self-tests, but
+-     this time using the binaries in their final installed location.
+-     This target does not install anything.  Running this target as a
+-     regular user, particularly if the prior `make install' required
+-     root privileges, verifies that the installation completed
+-     correctly.
+-
+-  6. You can remove the program binaries and object files from the
+-     source code directory by typing `make clean'.  To also remove the
+-     files that `configure' created (so you can compile the package for
+-     a different kind of computer), type `make distclean'.  There is
+-     also a `make maintainer-clean' target, but that is intended mainly
+-     for the package's developers.  If you use it, you may have to get
+-     all sorts of other programs in order to regenerate files that came
+-     with the distribution.
+-
+-  7. Often, you can also type `make uninstall' to remove the installed
+-     files again.  In practice, not all packages have tested that
+-     uninstallation works correctly, even though it is required by the
+-     GNU Coding Standards.
+-
+-  8. Some packages, particularly those that use Automake, provide `make
+-     distcheck', which can by used by developers to test that all other
+-     targets like `make install' and `make uninstall' work correctly.
+-     This target is generally not run by end users.
+-
+-Compilers and Options
+-=====================
+-
+-   Some systems require unusual options for compilation or linking that
+-the `configure' script does not know about.  Run `./configure --help'
+-for details on some of the pertinent environment variables.
+-
+-   You can give `configure' initial values for configuration parameters
+-by setting variables in the command line or in the environment.  Here
+-is an example:
+-
+-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+-
+-   *Note Defining Variables::, for more details.
+-
+-Compiling For Multiple Architectures
+-====================================
+-
+-   You can compile the package for more than one kind of computer at the
+-same time, by placing the object files for each architecture in their
+-own directory.  To do this, you can use GNU `make'.  `cd' to the
+-directory where you want the object files and executables to go and run
+-the `configure' script.  `configure' automatically checks for the
+-source code in the directory that `configure' is in and in `..'.  This
+-is known as a "VPATH" build.
+-
+-   With a non-GNU `make', it is safer to compile the package for one
+-architecture at a time in the source code directory.  After you have
+-installed the package for one architecture, use `make distclean' before
+-reconfiguring for another architecture.
+-
+-   On MacOS X 10.5 and later systems, you can create libraries and
+-executables that work on multiple system types--known as "fat" or
+-"universal" binaries--by specifying multiple `-arch' options to the
+-compiler but only a single `-arch' option to the preprocessor.  Like
+-this:
+-
+-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+-                 CPP="gcc -E" CXXCPP="g++ -E"
+-
+-   This is not guaranteed to produce working output in all cases, you
+-may have to build one architecture at a time and combine the results
+-using the `lipo' tool if you have problems.
+-
+-Installation Names
+-==================
+-
+-   By default, `make install' installs the package's commands under
+-`/usr/local/bin', include files under `/usr/local/include', etc.  You
+-can specify an installation prefix other than `/usr/local' by giving
+-`configure' the option `--prefix=PREFIX', where PREFIX must be an
+-absolute file name.
+-
+-   You can specify separate installation prefixes for
+-architecture-specific files and architecture-independent files.  If you
+-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+-PREFIX as the prefix for installing programs and libraries.
+-Documentation and other data files still use the regular prefix.
+-
+-   In addition, if you use an unusual directory layout you can give
+-options like `--bindir=DIR' to specify different values for particular
+-kinds of files.  Run `configure --help' for a list of the directories
+-you can set and what kinds of files go in them.  In general, the
+-default for these options is expressed in terms of `${prefix}', so that
+-specifying just `--prefix' will affect all of the other directory
+-specifications that were not explicitly provided.
+-
+-   The most portable way to affect installation locations is to pass the
+-correct locations to `configure'; however, many packages provide one or
+-both of the following shortcuts of passing variable assignments to the
+-`make install' command line to change installation locations without
+-having to reconfigure or recompile.
+-
+-   The first method involves providing an override variable for each
+-affected directory.  For example, `make install
+-prefix=/alternate/directory' will choose an alternate location for all
+-directory configuration variables that were expressed in terms of
+-`${prefix}'.  Any directories that were specified during `configure',
+-but not in terms of `${prefix}', must each be overridden at install
+-time for the entire installation to be relocated.  The approach of
+-makefile variable overrides for each directory variable is required by
+-the GNU Coding Standards, and ideally causes no recompilation.
+-However, some platforms have known limitations with the semantics of
+-shared libraries that end up requiring recompilation when using this
+-method, particularly noticeable in packages that use GNU Libtool.
+-
+-   The second method involves providing the `DESTDIR' variable.  For
+-example, `make install DESTDIR=/alternate/directory' will prepend
+-`/alternate/directory' before all installation names.  The approach of
+-`DESTDIR' overrides is not required by the GNU Coding Standards, and
+-does not work on platforms that have drive letters.  On the other hand,
+-it does better at avoiding recompilation issues, and works well even
+-when some directory options were not specified in terms of `${prefix}'
+-at `configure' time.
+-
+-Optional Features
+-=================
+-
+-   If the package supports it, you can cause programs to be installed
+-with an extra prefix or suffix on their names by giving `configure' the
+-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+-
+-   Some packages pay attention to `--enable-FEATURE' options to
+-`configure', where FEATURE indicates an optional part of the package.
+-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+-is something like `gnu-as' or `x' (for the X Window System).  The
+-`README' should mention any `--enable-' and `--with-' options that the
+-package recognizes.
+-
+-   For packages that use the X Window System, `configure' can usually
+-find the X include and library files automatically, but if it doesn't,
+-you can use the `configure' options `--x-includes=DIR' and
+-`--x-libraries=DIR' to specify their locations.
+-
+-   Some packages offer the ability to configure how verbose the
+-execution of `make' will be.  For these packages, running `./configure
+---enable-silent-rules' sets the default to minimal output, which can be
+-overridden with `make V=1'; while running `./configure
+---disable-silent-rules' sets the default to verbose, which can be
+-overridden with `make V=0'.
+-
+-Particular systems
+-==================
+-
+-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+-CC is not installed, it is recommended to use the following options in
+-order to use an ANSI C compiler:
+-
+-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+-
+-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+-
+-   HP-UX `make' updates targets which have the same time stamps as
+-their prerequisites, which makes it generally unusable when shipped
+-generated files such as `configure' are involved.  Use GNU `make'
+-instead.
+-
+-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+-parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+-a workaround.  If GNU CC is not installed, it is therefore recommended
+-to try
+-
+-     ./configure CC="cc"
+-
+-and if that doesn't work, try
+-
+-     ./configure CC="cc -nodtk"
+-
+-   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+-directory contains several dysfunctional programs; working variants of
+-these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+-in your `PATH', put it _after_ `/usr/bin'.
+-
+-   On Haiku, software installed for all users goes in `/boot/common',
+-not `/usr/local'.  It is recommended to use the following options:
+-
+-     ./configure --prefix=/boot/common
+-
+-Specifying the System Type
+-==========================
+-
+-   There may be some features `configure' cannot figure out
+-automatically, but needs to determine by the type of machine the package
+-will run on.  Usually, assuming the package is built to be run on the
+-_same_ architectures, `configure' can figure that out, but if it prints
+-a message saying it cannot guess the machine type, give it the
+-`--build=TYPE' option.  TYPE can either be a short name for the system
+-type, such as `sun4', or a canonical name which has the form:
+-
+-     CPU-COMPANY-SYSTEM
+-
+-where SYSTEM can have one of these forms:
+-
+-     OS
+-     KERNEL-OS
+-
+-   See the file `config.sub' for the possible values of each field.  If
+-`config.sub' isn't included in this package, then this package doesn't
+-need to know the machine type.
+-
+-   If you are _building_ compiler tools for cross-compiling, you should
+-use the option `--target=TYPE' to select the type of system they will
+-produce code for.
+-
+-   If you want to _use_ a cross compiler, that generates code for a
+-platform different from the build platform, you should specify the
+-"host" platform (i.e., that on which the generated programs will
+-eventually be run) with `--host=TYPE'.
+-
+-Sharing Defaults
+-================
+-
+-   If you want to set default values for `configure' scripts to share,
+-you can create a site shell script called `config.site' that gives
+-default values for variables like `CC', `cache_file', and `prefix'.
+-`configure' looks for `PREFIX/share/config.site' if it exists, then
+-`PREFIX/etc/config.site' if it exists.  Or, you can set the
+-`CONFIG_SITE' environment variable to the location of the site script.
+-A warning: not all `configure' scripts look for a site script.
+-
+-Defining Variables
+-==================
+-
+-   Variables not defined in a site shell script can be set in the
+-environment passed to `configure'.  However, some packages may run
+-configure again during the build, and the customized values of these
+-variables may be lost.  In order to avoid this problem, you should set
+-them in the `configure' command line, using `VAR=value'.  For example:
+-
+-     ./configure CC=/usr/local2/bin/gcc
+-
+-causes the specified `gcc' to be used as the C compiler (unless it is
+-overridden in the site shell script).
+-
+-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+-an Autoconf limitation.  Until the limitation is lifted, you can use
+-this workaround:
+-
+-     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+-
+-`configure' Invocation
+-======================
+-
+-   `configure' recognizes the following options to control how it
+-operates.
+-
+-`--help'
+-`-h'
+-     Print a summary of all of the options to `configure', and exit.
+-
+-`--help=short'
+-`--help=recursive'
+-     Print a summary of the options unique to this package's
+-     `configure', and exit.  The `short' variant lists options used
+-     only in the top level, while the `recursive' variant lists options
+-     also present in any nested packages.
+-
+-`--version'
+-`-V'
+-     Print the version of Autoconf used to generate the `configure'
+-     script, and exit.
+-
+-`--cache-file=FILE'
+-     Enable the cache: use and save the results of the tests in FILE,
+-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+-     disable caching.
+-
+-`--config-cache'
+-`-C'
+-     Alias for `--cache-file=config.cache'.
+-
+-`--quiet'
+-`--silent'
+-`-q'
+-     Do not print messages saying which checks are being made.  To
+-     suppress all normal output, redirect it to `/dev/null' (any error
+-     messages will still be shown).
+-
+-`--srcdir=DIR'
+-     Look for the package's source code in directory DIR.  Usually
+-     `configure' can determine that directory automatically.
+-
+-`--prefix=DIR'
+-     Use DIR as the installation prefix.  *note Installation Names::
+-     for more details, including other options available for fine-tuning
+-     the installation locations.
+-
+-`--no-create'
+-`-n'
+-     Run the configure checks, but stop before creating any output
+-     files.
+-
+-`configure' also accepts some other, not widely useful, options.  Run
+-`configure --help' for more details.
+diff --git a/INSTALL b/INSTALL
+new file mode 120000
+index 0000000..e3f22c0
+--- /dev/null
++++ b/INSTALL
+@@ -0,0 +1 @@
++/usr/share/automake-1.16/INSTALL
+\ No newline at end of file
+diff --git a/src/svc.c b/src/svc.c
+index 6db164b..3a8709f 100644
+--- a/src/svc.c
++++ b/src/svc.c
+@@ -57,7 +57,7 @@
+ 
+ #define max(a, b) (a > b ? a : b)
+ 
+-static SVCXPRT **__svc_xports;
++SVCXPRT **__svc_xports;
+ int __svc_maxrec;
+ 
+ /*
+@@ -194,6 +194,21 @@ __xprt_do_unregister (xprt, dolock)
+     rwlock_unlock (&svc_fd_lock);
+ }
+ 
++int
++svc_open_fds()
++{
++	int ix;
++	int nfds = 0;
++
++	rwlock_rdlock (&svc_fd_lock);
++	for (ix = 0; ix < svc_max_pollfd; ++ix) {
++		if (svc_pollfd[ix].fd != -1)
++			nfds++;
++	}
++	rwlock_unlock (&svc_fd_lock);
++	return (nfds);
++}
++
+ /*
+  * Add a service program to the callout list.
+  * The dispatch routine will be called when a rpc request for this
+diff --git a/src/svc_vc.c b/src/svc_vc.c
+index f1d9f00..3dc8a75 100644
+--- a/src/svc_vc.c
++++ b/src/svc_vc.c
+@@ -64,6 +64,8 @@
+ 
+ 
+ extern rwlock_t svc_fd_lock;
++extern SVCXPRT **__svc_xports;
++extern int svc_open_fds();
+ 
+ static SVCXPRT *makefd_xprt(int, u_int, u_int);
+ static bool_t rendezvous_request(SVCXPRT *, struct rpc_msg *);
+@@ -82,6 +84,7 @@ static void svc_vc_ops(SVCXPRT *);
+ static bool_t svc_vc_control(SVCXPRT *xprt, const u_int rq, void *in);
+ static bool_t svc_vc_rendezvous_control (SVCXPRT *xprt, const u_int rq,
+ 				   	     void *in);
++static int __svc_destroy_idle(int timeout);
+ 
+ struct cf_rendezvous { /* kept in xprt->xp_p1 for rendezvouser */
+ 	u_int sendsize;
+@@ -313,13 +316,14 @@ done:
+ 	return (xprt);
+ }
+ 
++
+ /*ARGSUSED*/
+ static bool_t
+ rendezvous_request(xprt, msg)
+ 	SVCXPRT *xprt;
+ 	struct rpc_msg *msg;
+ {
+-	int sock, flags;
++	int sock, flags, nfds, cnt;
+ 	struct cf_rendezvous *r;
+ 	struct cf_conn *cd;
+ 	struct sockaddr_storage addr;
+@@ -379,6 +383,16 @@ again:
+ 
+ 	gettimeofday(&cd->last_recv_time, NULL);
+ 
++	nfds = svc_open_fds();
++	if (nfds >= (_rpc_dtablesize() / 5) * 4) {
++		/* destroy idle connections */
++		cnt = __svc_destroy_idle(15);
++		if (cnt == 0) {
++			/* destroy least active */
++			__svc_destroy_idle(0);
++		}
++	}
++
+ 	return (FALSE); /* there is never an rpc msg to be processed */
+ }
+ 
+@@ -820,3 +834,49 @@ __svc_clean_idle(fd_set *fds, int timeout, bool_t cleanblock)
+ {
+ 	return FALSE;
+ }
++
++static int
++__svc_destroy_idle(int timeout)
++{
++	int i, ncleaned = 0;
++	SVCXPRT *xprt, *least_active;
++	struct timeval tv, tdiff, tmax;
++	struct cf_conn *cd;
++
++	gettimeofday(&tv, NULL);
++	tmax.tv_sec = tmax.tv_usec = 0;
++	least_active = NULL;
++	rwlock_wrlock(&svc_fd_lock);
++
++	for (i = 0; i <= svc_max_pollfd; i++) {
++		if (svc_pollfd[i].fd == -1)
++			continue;
++		xprt = __svc_xports[i];
++		if (xprt == NULL || xprt->xp_ops == NULL ||
++			xprt->xp_ops->xp_recv != svc_vc_recv)
++			continue;
++		cd = (struct cf_conn *)xprt->xp_p1;
++		if (!cd->nonblock)
++			continue;
++		if (timeout == 0) {
++			timersub(&tv, &cd->last_recv_time, &tdiff);
++			if (timercmp(&tdiff, &tmax, >)) {
++				tmax = tdiff;
++				least_active = xprt;
++			}
++			continue;
++		}
++		if (tv.tv_sec - cd->last_recv_time.tv_sec > timeout) {
++			__xprt_unregister_unlocked(xprt);
++			__svc_vc_dodestroy(xprt);
++			ncleaned++;
++		}
++	}
++	if (timeout == 0 && least_active != NULL) {
++		__xprt_unregister_unlocked(least_active);
++		__svc_vc_dodestroy(least_active);
++		ncleaned++;
++	}
++	rwlock_unlock(&svc_fd_lock);
++	return (ncleaned);
++}
+-- 
+1.8.3.1
+
diff --git a/gnu/packages/patches/libvirt-add-install-prefix.patch b/gnu/packages/patches/libvirt-add-install-prefix.patch
index 1331fa9b6f..9ad339d82f 100644
--- a/gnu/packages/patches/libvirt-add-install-prefix.patch
+++ b/gnu/packages/patches/libvirt-add-install-prefix.patch
@@ -1,7 +1,8 @@
-Patch from NixOS: 
-https://raw.githubusercontent.com/NixOS/nixpkgs/b98031a49c66095dd1eb9185ecdaeeb5e3cd752d/pkgs/development/libraries/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
+Patch from NixOS:
 
-From a896b0be849455edb83a9305dfec9b41447ef3e4 Mon Sep 17 00:00:00 2001
+  https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
+
+From ad42041cfedcf25716429d2aad16641e0e2a012f Mon Sep 17 00:00:00 2001
 From: Euan Kemp <euank@euank.com>
 Date: Thu, 14 Jan 2021 00:32:00 -0800
 Subject: [PATCH] meson: patch in an install prefix for building on nix
@@ -9,22 +10,9 @@ Subject: [PATCH] meson: patch in an install prefix for building on nix
 Used in the nixpkgs version of libvirt so that we can install things in
 the nix store, but read them from the root filesystem.
 ---
- meson.build                       |  9 +++++++++
- meson_options.txt                 |  2 ++
- src/libxl/meson.build             |  6 +++---
- src/locking/meson.build           |  8 ++++----
- src/lxc/meson.build               |  6 +++---
- src/meson.build                   | 18 +++++++++---------
- src/network/meson.build           | 12 ++++++------
- src/nwfilter/xml/meson.build      |  2 +-
- src/qemu/meson.build              | 14 +++++++-------
- src/remote/meson.build            |  6 +++---
- src/security/apparmor/meson.build |  8 ++++----
- tools/meson.build                 |  4 ++--
- 12 files changed, 53 insertions(+), 42 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index b5164f6..33719f1 100644
+index 9016c0458a..b26e690194 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -39,6 +39,8 @@ if host_machine.system() == 'windows'
@@ -51,7 +39,7 @@ index b5164f6..33719f1 100644
  # sysconfdir as this makes a lot of things break in testing situations
  if prefix == '/usr'
 diff --git a/meson_options.txt b/meson_options.txt
-index e5d79c2..081cd32 100644
+index 5b43cdbd6b..e9dff18441 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -1,3 +1,5 @@
@@ -60,27 +48,67 @@ index e5d79c2..081cd32 100644
  option('no_git', type: 'boolean', value: false, description: 'Disable git submodule update')
  option('packager', type: 'string', value: '', description: 'Extra packager name')
  option('packager_version', type: 'string', value: '', description: 'Extra packager version')
+diff --git a/src/ch/meson.build b/src/ch/meson.build
+index 66b77907b0..6aa9bbc548 100644
+--- a/src/ch/meson.build
++++ b/src/ch/meson.build
+@@ -64,8 +64,8 @@ if conf.has('WITH_CH')
+   }
+ 
+   virt_install_dirs += [
+-    localstatedir / 'lib' / 'libvirt' / 'ch',
+-    localstatedir / 'log' / 'libvirt' / 'ch',
+-    runstatedir / 'libvirt' / 'ch',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'ch',
++    install_prefix + localstatedir / 'log' / 'libvirt' / 'ch',
++    install_prefix + runstatedir / 'libvirt' / 'ch',
+   ]
+ endif
+diff --git a/src/interface/meson.build b/src/interface/meson.build
+index 828f274422..2a6b1f8c5e 100644
+--- a/src/interface/meson.build
++++ b/src/interface/meson.build
+@@ -56,6 +56,6 @@ if conf.has('WITH_INTERFACE')
+   }
+ 
+   virt_install_dirs += [
+-    runstatedir / 'libvirt' / 'interface',
++    install_prefix + runstatedir / 'libvirt' / 'interface',
+   ]
+ endif
 diff --git a/src/libxl/meson.build b/src/libxl/meson.build
-index 3bb6cc5..78d7be0 100644
+index 0cc277db82..48d8c5b962 100644
 --- a/src/libxl/meson.build
 +++ b/src/libxl/meson.build
-@@ -84,8 +84,8 @@ if conf.has('WITH_LIBXL')
+@@ -79,14 +79,14 @@ if conf.has('WITH_LIBXL')
    }
  
    virt_install_dirs += [
+-    confdir / 'libxl',
+-    confdir / 'libxl' / 'autostart',
 -    localstatedir / 'lib' / 'libvirt' / 'libxl',
--    runstatedir / 'libvirt' / 'libxl',
+-    localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel',
+-    localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel' / 'target',
+-    localstatedir / 'lib' / 'libvirt' / 'libxl' / 'dump',
+-    localstatedir / 'lib' / 'libvirt' / 'libxl' / 'save',
 -    localstatedir / 'log' / 'libvirt' / 'libxl',
+-    runstatedir / 'libvirt' / 'libxl',
++    install_prefix + confdir / 'libxl',
++    install_prefix + confdir / 'libxl' / 'autostart',
 +    install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl',
-+    install_prefix + runstatedir / 'libvirt' / 'libxl',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel' / 'target',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'dump',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'save',
 +    install_prefix + localstatedir / 'log' / 'libvirt' / 'libxl',
++    install_prefix + runstatedir / 'libvirt' / 'libxl',
    ]
  endif
 diff --git a/src/locking/meson.build b/src/locking/meson.build
-index 8a28310..9da81cc 100644
+index 72f7780438..abe70d20d5 100644
 --- a/src/locking/meson.build
 +++ b/src/locking/meson.build
-@@ -243,14 +243,14 @@ if conf.has('WITH_LIBVIRTD')
+@@ -238,14 +238,14 @@ if conf.has('WITH_LIBVIRTD')
    }
  
    virt_install_dirs += [
@@ -100,26 +128,39 @@ index 8a28310..9da81cc 100644
    endif
  endif
 diff --git a/src/lxc/meson.build b/src/lxc/meson.build
-index f8e2a88..96d6687 100644
+index 99d4a34213..aae477c1ee 100644
 --- a/src/lxc/meson.build
 +++ b/src/lxc/meson.build
-@@ -182,8 +182,8 @@ if conf.has('WITH_LXC')
+@@ -176,10 +176,10 @@ if conf.has('WITH_LXC')
    }
  
    virt_install_dirs += [
+-    confdir / 'lxc',
+-    confdir / 'lxc' / 'autostart',
 -    localstatedir / 'lib' / 'libvirt' / 'lxc',
--    runstatedir / 'libvirt' / 'lxc',
 -    localstatedir / 'log' / 'libvirt' / 'lxc',
+-    runstatedir / 'libvirt' / 'lxc',
++    install_prefix + confdir / 'lxc',
++    install_prefix + confdir / 'lxc' / 'autostart',
 +    install_prefix + localstatedir / 'lib' / 'libvirt' / 'lxc',
-+    install_prefix + runstatedir / 'libvirt' / 'lxc',
 +    install_prefix + localstatedir / 'log' / 'libvirt' / 'lxc',
++    install_prefix + runstatedir / 'libvirt' / 'lxc',
    ]
  endif
 diff --git a/src/meson.build b/src/meson.build
-index 7c47821..d33d16a 100644
+index b2d951d36c..305716010f 100644
 --- a/src/meson.build
 +++ b/src/meson.build
-@@ -669,7 +669,7 @@ endforeach
+@@ -210,7 +210,7 @@ openrc_init_files = []
+ 
+ # virt_install_dirs:
+ #   list of directories to create during installation
+-virt_install_dirs = [ confdir ]
++virt_install_dirs = [ install_prefix + confdir ]
+ 
+ # driver_source_files:
+ #   driver source files to check
+@@ -663,7 +663,7 @@ endforeach
  
  virt_conf_files += 'libvirt.conf'
  
@@ -128,7 +169,7 @@ index 7c47821..d33d16a 100644
  install_data(virt_aug_files, install_dir: virt_aug_dir)
  
  # augeas_test_data:
-@@ -729,7 +729,7 @@ foreach data : virt_daemon_confs
+@@ -723,7 +723,7 @@ foreach data : virt_daemon_confs
      output: '@0@.conf'.format(data['name']),
      configuration: daemon_conf,
      install: true,
@@ -137,15 +178,16 @@ index 7c47821..d33d16a 100644
    )
  
    if data.get('with_ip', false)
-@@ -853,14 +853,14 @@ if conf.has('WITH_LIBVIRTD')
+@@ -847,7 +847,7 @@ if conf.has('WITH_LIBVIRTD')
  
        install_data(
          init_file,
 -        install_dir: sysconfdir / 'init.d',
 +        install_dir: install_prefix + sysconfdir / 'init.d',
+         install_mode: 'rwxr-xr-x',
          rename: [ init['name'] ],
        )
- 
+@@ -855,7 +855,7 @@ if conf.has('WITH_LIBVIRTD')
        if init.has_key('confd')
          install_data(
            init['confd'],
@@ -154,16 +196,7 @@ index 7c47821..d33d16a 100644
            rename: [ init['name'] ],
          )
        endif
-@@ -872,7 +872,7 @@ if init_script != 'none'
-   foreach sysconf : sysconf_files
-     install_data(
-       sysconf['file'],
--      install_dir: sysconfdir / 'sysconfig',
-+      install_dir: install_prefix + sysconfdir / 'sysconfig',
-       rename: [ sysconf['name'] ],
-     )
-   endforeach
-@@ -897,10 +897,10 @@ endif
+@@ -882,10 +882,10 @@ endif
  # Install empty directories
  
  virt_install_dirs += [
@@ -179,23 +212,27 @@ index 7c47821..d33d16a 100644
  
  meson.add_install_script(
 diff --git a/src/network/meson.build b/src/network/meson.build
-index 3ec598c..b02040b 100644
+index b5eff0c3ab..a0f26d624e 100644
 --- a/src/network/meson.build
 +++ b/src/network/meson.build
-@@ -79,9 +79,9 @@ if conf.has('WITH_NETWORK')
+@@ -73,11 +73,11 @@ if conf.has('WITH_NETWORK')
    }
  
    virt_install_dirs += [
+-    confdir / 'qemu' / 'networks',
+-    confdir / 'qemu' / 'networks' / 'autostart',
 -    localstatedir / 'lib' / 'libvirt' / 'network',
 -    localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
 -    runstatedir / 'libvirt' / 'network',
++    install_prefix + confdir / 'qemu' / 'networks',
++    install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
 +    install_prefix + localstatedir / 'lib' / 'libvirt' / 'network',
 +    install_prefix + localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
 +    install_prefix + runstatedir / 'libvirt' / 'network',
    ]
  
    configure_file(
-@@ -89,12 +89,12 @@ if conf.has('WITH_NETWORK')
+@@ -85,12 +85,12 @@ if conf.has('WITH_NETWORK')
      output: '@BASENAME@',
      copy: true,
      install: true,
@@ -210,8 +247,37 @@ index 3ec598c..b02040b 100644
      '../default.xml', 'default.xml',
    )
  
+diff --git a/src/node_device/meson.build b/src/node_device/meson.build
+index 1c95975c37..a7831242db 100644
+--- a/src/node_device/meson.build
++++ b/src/node_device/meson.build
+@@ -64,6 +64,6 @@ if conf.has('WITH_NODE_DEVICES')
+   }
+ 
+   virt_install_dirs += [
+-    runstatedir / 'libvirt' / 'nodedev',
++    install_prefix + runstatedir / 'libvirt' / 'nodedev',
+   ]
+ endif
+diff --git a/src/nwfilter/meson.build b/src/nwfilter/meson.build
+index 55cf8fcce4..d331086f2e 100644
+--- a/src/nwfilter/meson.build
++++ b/src/nwfilter/meson.build
+@@ -62,9 +62,9 @@ if conf.has('WITH_NWFILTER')
+   }
+ 
+   virt_install_dirs += [
+-    confdir / 'nwfilter',
+-    runstatedir / 'libvirt' / 'nwfilter-binding',
+-    runstatedir / 'libvirt' / 'nwfilter',
++    install_prefix + confdir / 'nwfilter',
++    install_prefix + runstatedir / 'libvirt' / 'nwfilter-binding',
++    install_prefix + runstatedir / 'libvirt' / 'nwfilter',
+   ]
+ 
+   subdir('xml')
 diff --git a/src/nwfilter/xml/meson.build b/src/nwfilter/xml/meson.build
-index 0d96c54..66c92a1 100644
+index 0d96c54ebe..66c92a1016 100644
 --- a/src/nwfilter/xml/meson.build
 +++ b/src/nwfilter/xml/meson.build
 @@ -25,4 +25,4 @@ nwfilter_xml_files = [
@@ -221,43 +287,71 @@ index 0d96c54..66c92a1 100644
 -install_data(nwfilter_xml_files, install_dir: sysconfdir / 'libvirt' / 'nwfilter')
 +install_data(nwfilter_xml_files, install_dir: install_prefix + sysconfdir / 'libvirt' / 'nwfilter')
 diff --git a/src/qemu/meson.build b/src/qemu/meson.build
-index 90640b0..8802cec 100644
+index 39f0f615cc..5f6f30f82b 100644
 --- a/src/qemu/meson.build
 +++ b/src/qemu/meson.build
-@@ -171,12 +171,12 @@ if conf.has('WITH_QEMU')
-   }
+@@ -175,24 +175,24 @@ if conf.has('WITH_QEMU')
+   endif
  
    virt_install_dirs += [
--    localstatedir / 'lib' / 'libvirt' / 'qemu',
--    runstatedir / 'libvirt' / 'qemu',
+-    confdir / 'qemu',
+-    confdir / 'qemu' / 'autostart',
 -    localstatedir / 'cache' / 'libvirt' / 'qemu',
--    localstatedir / 'log' / 'libvirt' / 'qemu',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel' / 'target',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'checkpoint',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'dump',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'nvram',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'ram',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'save',
+-    localstatedir / 'lib' / 'libvirt' / 'qemu' / 'snapshot',
 -    localstatedir / 'lib' / 'libvirt' / 'swtpm',
--    runstatedir / 'libvirt' / 'qemu' / 'swtpm',
+-    localstatedir / 'log' / 'libvirt' / 'qemu',
 -    localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
-+    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
-+    install_prefix + runstatedir / 'libvirt' / 'qemu',
+-    runstatedir / 'libvirt' / 'qemu',
+-    runstatedir / 'libvirt' / 'qemu' / 'dbus',
+-    runstatedir / 'libvirt' / 'qemu' / 'slirp',
+-    runstatedir / 'libvirt' / 'qemu' / 'swtpm',
++    install_prefix + confdir / 'qemu',
++    install_prefix + confdir / 'qemu' / 'autostart',
 +    install_prefix + localstatedir / 'cache' / 'libvirt' / 'qemu',
-+    install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel' / 'target',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'checkpoint',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'dump',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'nvram',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'ram',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'save',
++    install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'snapshot',
 +    install_prefix + localstatedir / 'lib' / 'libvirt' / 'swtpm',
-+    install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
++    install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
 +    install_prefix + localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
++    install_prefix + runstatedir / 'libvirt' / 'qemu',
++    install_prefix + runstatedir / 'libvirt' / 'qemu' / 'dbus',
++    install_prefix + runstatedir / 'libvirt' / 'qemu' / 'slirp',
++    install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
    ]
  endif
 diff --git a/src/remote/meson.build b/src/remote/meson.build
-index 9ad2f6a..429a15b 100644
+index b2aafe6320..6972d254ca 100644
 --- a/src/remote/meson.build
 +++ b/src/remote/meson.build
-@@ -245,7 +245,7 @@ if conf.has('WITH_REMOTE')
+@@ -235,9 +235,9 @@ if conf.has('WITH_REMOTE')
      }
  
      virt_install_dirs += [
 -      localstatedir / 'log' / 'libvirt',
+-      runstatedir / 'libvirt',
+-      runstatedir / 'libvirt' / 'common',
 +      install_prefix + localstatedir / 'log' / 'libvirt',
++      install_prefix + runstatedir / 'libvirt',
++      install_prefix + runstatedir / 'libvirt' / 'common',
      ]
  
      logrotate_conf = configuration_data()
-@@ -259,7 +259,7 @@ if conf.has('WITH_REMOTE')
+@@ -251,7 +251,7 @@ if conf.has('WITH_REMOTE')
        )
        install_data(
          log_file,
@@ -266,7 +360,7 @@ index 9ad2f6a..429a15b 100644
          rename: [ name ],
        )
      endforeach
-@@ -309,7 +309,7 @@ endif
+@@ -301,7 +301,7 @@ endif
  if conf.has('WITH_SASL')
    install_data(
      'libvirtd.sasl',
@@ -275,11 +369,25 @@ index 9ad2f6a..429a15b 100644
      rename: [ 'libvirt.conf' ],
    )
  endif
+diff --git a/src/secret/meson.build b/src/secret/meson.build
+index 1bda59849b..392bc2cb2e 100644
+--- a/src/secret/meson.build
++++ b/src/secret/meson.build
+@@ -45,7 +45,7 @@ if conf.has('WITH_SECRETS')
+   }
+ 
+   virt_install_dirs += [
+-    confdir / 'secrets',
+-    runstatedir / 'libvirt' / 'secrets',
++    install_prefix + confdir / 'secrets',
++    install_prefix + runstatedir / 'libvirt' / 'secrets',
+   ]
+ endif
 diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
-index af43780..e2d6c81 100644
+index 990f00b4f3..e5a7a14e1d 100644
 --- a/src/security/apparmor/meson.build
 +++ b/src/security/apparmor/meson.build
-@@ -17,22 +17,22 @@ foreach name : apparmor_gen_profiles
+@@ -19,22 +19,22 @@ foreach name : apparmor_gen_profiles
      output: name,
      configuration: apparmor_gen_profiles_conf,
      install: true,
@@ -306,11 +414,28 @@ index af43780..e2d6c81 100644
 +  install_dir: install_prefix + apparmor_dir / 'local',
    rename: 'usr.lib.libvirt.virt-aa-helper',
  )
+diff --git a/src/storage/meson.build b/src/storage/meson.build
+index 26e7ff1a1a..ad5c6eddc3 100644
+--- a/src/storage/meson.build
++++ b/src/storage/meson.build
+@@ -127,9 +127,9 @@ if conf.has('WITH_STORAGE')
+   }
+ 
+   virt_install_dirs += [
+-    confdir / 'storage',
+-    confdir / 'storage' / 'autostart',
+-    runstatedir / 'libvirt' / 'storage',
++    install_prefix + confdir / 'storage',
++    install_prefix + confdir / 'storage' / 'autostart',
++    install_prefix + runstatedir / 'libvirt' / 'storage',
+   ]
+ endif
+ 
 diff --git a/tools/meson.build b/tools/meson.build
-index b8c6802..dacd0ff 100644
+index f4b4a16c29..059c73a955 100644
 --- a/tools/meson.build
 +++ b/tools/meson.build
-@@ -115,7 +115,7 @@ if conf.has('WITH_LOGIN_SHELL')
+@@ -120,7 +120,7 @@ if conf.has('WITH_LOGIN_SHELL')
      install_rpath: libvirt_rpath,
    )
  
@@ -319,11 +444,6 @@ index b8c6802..dacd0ff 100644
  endif
  
  if host_machine.system() == 'windows'
-@@ -274,7 +274,7 @@ configure_file(
- if init_script == 'systemd'
-   install_data(
-     'libvirt-guests.sysconf',
--    install_dir: sysconfdir / 'sysconfig',
-+    install_dir: install_prefix + sysconfdir / 'sysconfig',
-     rename: 'libvirt-guests',
-   )
+-- 
+2.35.1
+
diff --git a/gnu/packages/patches/mumps-build-parallelism.patch b/gnu/packages/patches/mumps-build-parallelism.patch
deleted file mode 100644
index 26dd330311..0000000000
--- a/gnu/packages/patches/mumps-build-parallelism.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Building sublibraries in parallel can lead to race conditions on the libseq
-and lipord targets.
-
---- MUMPS_5.0.0/Makefile.orig	2015-06-15 10:08:54.523146562 -0500
-+++ MUMPS_5.0.0/Makefile	2015-06-15 10:19:44.074367512 -0500
-@@ -11,6 +11,7 @@
- 	sexamples dexamples cexamples zexamples \
- 	mumps_lib requiredobj libseqneeded clean
- 
-+.NOTPARALLEL:
- alllib:		c z s d
- all:		cexamples zexamples sexamples dexamples
- 
diff --git a/gnu/packages/patches/mumps-shared-libseq.patch b/gnu/packages/patches/mumps-shared-libseq.patch
deleted file mode 100644
index eccf528f7a..0000000000
--- a/gnu/packages/patches/mumps-shared-libseq.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Create a shared version of the sequential library, MUST BE LAST IN SERIES
-
-Index: mumps/libseq/Makefile
-===================================================================
---- mumps.orig/libseq/Makefile
-+++ mumps/libseq/Makefile
-@@ -8,15 +8,17 @@ all: libmpiseq
- 
- include ../Makefile.inc
- 
--libmpiseq: libmpiseq$(PLAT)$(LIBEXT)
-+libmpiseq: libmpiseq$(PLAT).a libmpiseq$(PLAT).so
- 
--libmpiseq$(PLAT)$(LIBEXT): mpi.o mpic.o elapse.o
--	$(AR)$@ mpi.o mpic.o elapse.o
-+libmpiseq$(PLAT).a: mpi.o mpic.o elapse.o
-+	$(AR) $@ mpi.o mpic.o elapse.o
- 	$(RANLIB) $@
-+libmpiseq$(PLAT).so: mpi.o mpic.o elapse.o
-+	$(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.2.1.so -o libmpiseq$(PLAT)-5.2.1.so -Wl,-z,defs
- .f.o:
--	$(FC) $(OPTF)              -c $*.f $(OUTF)$*.o
-+	$(FC) $(OPTF)              -fPIC -c $*.f $(OUTF)$*.o
- .c.o:
--	$(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC)$*.o
-+	$(CC) $(OPTC) $(CDEFS) -I. -fPIC -c $*.c $(OUTC)$*.o
- 
- clean:
--	$(RM) *.o *$(LIBEXT)
-+	$(RM) *.o *.a *.so
-Index: mumps/Makefile
-===================================================================
---- mumps.orig/Makefile
-+++ mumps/Makefile
-@@ -60,6 +60,7 @@ requiredobj: Makefile.inc $(LIBSEQNEEDED
- 
- libseqneeded:
- 	(cd libseq; $(MAKE))
-+	cp libseq/lib* $(libdir)
- 
- # Build the libpord.a library and copy it into $(topdir)/lib
- $(libdir)/libpord$(PLAT).a:
diff --git a/gnu/packages/patches/mumps-shared-mumps.patch b/gnu/packages/patches/mumps-shared-mumps.patch
deleted file mode 100644
index d94ccf6ce9..0000000000
--- a/gnu/packages/patches/mumps-shared-mumps.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Create a shared version of the MUMPS library.
-
-Index: mumps/src/Makefile
-===================================================================
---- mumps.orig/src/Makefile
-+++ mumps/src/Makefile
-@@ -23,8 +23,10 @@ z:
- 
- include $(topdir)/Makefile.inc
- 
--mumps_lib:    $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
--              $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
-+mumps_lib:    $(libdir)/libmumps_common$(PLAT).a \
-+              $(libdir)/libmumps_common$(PLAT).so \
-+              $(libdir)/lib$(ARITH)mumps$(PLAT).a \
-+              $(libdir)/lib$(ARITH)mumps$(PLAT).so
- 
- OBJS_COMMON_MOD = \
-         lr_common.o \
-@@ -167,14 +169,22 @@ OBJS_OTHER = \
-         $(ARITH)tools.o\
-         $(ARITH)type3_root.o
- 
--$(libdir)/libmumps_common$(PLAT)$(LIBEXT):      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
--	$(AR)$@ $?
-+$(libdir)/libmumps_common$(PLAT).a:      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
-+	$(AR) $@ $?
- 	$(RANLIB) $@
- 
--$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT):    $(OBJS_MOD) $(OBJS_OTHER)
--	$(AR)$@ $?
-+$(libdir)/libmumps_common$(PLAT).so:      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
-+	$(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.2.1.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.2.1.so -Wl,-z,defs
-+	ln -s libmumps_common$(PLAT)-5.2.1.so $@
-+
-+$(libdir)/lib$(ARITH)mumps$(PLAT).a:    $(OBJS_MOD) $(OBJS_OTHER)
-+	$(AR) $@ $?
- 	$(RANLIB) $@
- 
-+$(libdir)/lib$(ARITH)mumps$(PLAT).so:    $(OBJS_MOD) $(OBJS_OTHER)
-+	$(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.2.1.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.2.1.so -Wl,-z,defs
-+	ln -s lib$(ARITH)mumps$(PLAT)-5.2.1.so $@
-+
- # Dependencies between modules:
- $(ARITH)mumps_load.o:		$(ARITH)mumps_comm_buffer.o \
- 				$(ARITH)mumps_struc_def.o \
-@@ -290,13 +300,13 @@ $(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_
- 
- .SUFFIXES: .c .F .o
- .F.o:
--	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -c $*.F $(OUTF)$*.o
-+	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -fPIC -c $*.F $(OUTF)$*.o
- .c.o:
--	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o
-+	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -fPIC -c $*.c $(OUTC)$*.o
- 
- $(ARITH)mumps_c.o:	mumps_c.c
- 	$(CC) $(OPTC) $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
--	      $(IORDERINGSC) $(ORDERINGSC) -I../include -c mumps_c.c $(OUTC)$@
-+	      $(IORDERINGSC) $(ORDERINGSC) -I../include -fPIC -c mumps_c.c $(OUTC)$@
- 
- 
- clean:
diff --git a/gnu/packages/patches/mumps-shared-pord.patch b/gnu/packages/patches/mumps-shared-pord.patch
deleted file mode 100644
index d3915b0ad9..0000000000
--- a/gnu/packages/patches/mumps-shared-pord.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-Create static and shared versions of the PORD library.
-
-Index: mumps/PORD/lib/Makefile
-===================================================================
---- mumps.orig/PORD/lib/Makefile
-+++ mumps/PORD/lib/Makefile
-@@ -9,7 +9,7 @@
- 
- INCLUDES = -I../include
- 
--COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS)
-+COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS) -fPIC
- 
- OBJS = graph.o gbipart.o gbisect.o ddcreate.o ddbisect.o nestdiss.o \
-        multisector.o gelim.o bucket.o tree.o \
-@@ -24,12 +24,16 @@ OBJS = graph.o gbipart.o gbisect.o ddcre
- .c.o:
- 	$(CC) $(COPTIONS) -c $*.c $(OUTC)$*.o
- 
--libpord$(LIBEXT):$(OBJS)
--	$(AR)$@ $(OBJS)
-+libpord$(PLAT).a:$(OBJS)
-+	$(AR) $@ $(OBJS)
- 	$(RANLIB) $@
- 
-+libpord$(PLAT).so: $(OBJS)
-+	$(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.2.1.so -o libpord$(PLAT)-5.2.1.so -Wl,-z,defs
-+	ln -s libpord$(PLAT)-5.2.1.so $@
-+
- clean:
- 	rm -f *.o
- 
- realclean:
--	rm -f *.o libpord.a
-+	rm -f *.o libpord*.a *.so
-Index: mumps/Makefile
-===================================================================
---- mumps.orig/Makefile
-+++ mumps/Makefile
-@@ -54,7 +54,7 @@ dexamples:	d
- multi_example:	s d c z
- 	(cd examples ; $(MAKE) multi)
- 
--requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT)
-+requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT).a $(libdir)/libpord$(PLAT).so
- 
- # dummy MPI library (sequential version)
- 
-@@ -62,19 +62,25 @@ libseqneeded:
- 	(cd libseq; $(MAKE))
- 
- # Build the libpord.a library and copy it into $(topdir)/lib
--$(libdir)/libpord$(PLAT)$(LIBEXT):
-+$(libdir)/libpord$(PLAT).a:
- 	if [ "$(LPORDDIR)" != "" ] ; then \
- 	  cd $(LPORDDIR); \
- 	  $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \
- 	fi;
- 	if [ "$(LPORDDIR)" != "" ] ; then \
--	  cp $(LPORDDIR)/libpord$(LIBEXT) $@; \
-+	  cp $(LPORDDIR)/libpord$(PLAT).a $@; \
- 	fi;
- 
-+$(libdir)/libpord$(PLAT).so:
-+	if [ "$(LPORDDIR)" != "" ] ; then \
-+	cd $(LPORDDIR); make CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" ARFUNCT= RANLIB="$(RANLIB)" libpord$(PLAT).so; fi;
-+	if [ "$(LPORDDIR)" != "" ] ; then \
-+	cp -a $(LPORDDIR)/libpord*.so lib/; fi;
-+
- clean:
- 	(cd src; $(MAKE) clean)
- 	(cd examples; $(MAKE) clean)
--	(cd $(libdir); $(RM) *$(PLAT)$(LIBEXT))
-+	(cd $(libdir); $(RM) *$(PLAT).a *$(PLAT).so)
- 	(cd libseq; $(MAKE) clean)
- 	if [ "$(LPORDDIR)" != "" ] ; then \
- 	  cd $(LPORDDIR); $(MAKE) realclean; \
diff --git a/gnu/packages/patches/nsis-env-passthru.patch b/gnu/packages/patches/nsis-env-passthru.patch
index 36b4092230..22b186f55a 100644
--- a/gnu/packages/patches/nsis-env-passthru.patch
+++ b/gnu/packages/patches/nsis-env-passthru.patch
@@ -1,12 +1,11 @@
---- nsis-3.04-src/SConstruct	2019-05-30 14:53:30.276775332 -0400
-+++ nsis-3.04-src/SConstruct	2019-05-30 14:54:17.901232914 -0400
-@@ -77,6 +77,9 @@
- if not toolset and not path:
- 	defenv = Environment(TARGET_ARCH = arch)
+--- nsis-3.08-src/SConstruct	2021-01-15 17:31:10.000000000 +0100
++++ nsis-3.08-src/SConstruct-passthru	2022-08-02 17:11:12.414702282 +0200
+@@ -71,7 +71,7 @@
  
-+import os;
-+defenv['ENV'] = os.environ
-+
- Export('defenv')
+ defenv = {
+ 	'TARGET_ARCH': ARGUMENTS.get('TARGET_ARCH', 'x86'),
+-	'ENV': {}
++	'ENV': os.environ.copy()
+ }
  
  ######################################################################
diff --git a/gnu/packages/patches/nsis-source-date-epoch.patch b/gnu/packages/patches/nsis-source-date-epoch.patch
deleted file mode 100644
index 744c2a8011..0000000000
--- a/gnu/packages/patches/nsis-source-date-epoch.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Honour SOURCE_DATE_EPOCH for VERSION default
-
-Merged upstream as cd3f1024a37a332f1d4fa96a817ca80dfa2a478c, but not yet in a
-release. GitHub PR: https://github.com/kichik/nsis/pull/13
-
-Python snippet from: https://reproducible-builds.org/docs/source-date-epoch/#python
-
-
-diff --git a/SConstruct b/SConstruct
-index e8252c9..41786f2 100755
---- a/SConstruct
-+++ b/SConstruct
-@@ -95,8 +95,8 @@ default_doctype = 'html'
- if defenv.WhereIs('hhc', os.environ['PATH']):
- 	default_doctype = 'chm'
- 
--from time import strftime, gmtime
--cvs_version = strftime('%d-%b-%Y.cvs', gmtime())
-+import time
-+cvs_version = time.strftime('%d-%b-%Y.cvs', time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))))
- 
- opts = Variables()
- 
diff --git a/gnu/packages/patches/qtwayland-gcc-11.patch b/gnu/packages/patches/qtwayland-gcc-11.patch
new file mode 100644
index 0000000000..06983ff2f3
--- /dev/null
+++ b/gnu/packages/patches/qtwayland-gcc-11.patch
@@ -0,0 +1,18 @@
+Add missing import for newer libstdc++.
+
+Taken from upstream:
+
+  https://github.com/qt/qtwayland/commit/1aa6ec2c778504d96543f6cdc2b9199a7b066fc1
+
+diff --git a/tests/auto/client/shared/corecompositor.cpp b/tests/auto/client/shared/corecompositor.cpp
+index 5c6c83baa..fa9b7662a 100644
+--- a/tests/auto/client/shared/corecompositor.cpp
++++ b/tests/auto/client/shared/corecompositor.cpp
+@@ -27,6 +27,7 @@
+ ****************************************************************************/
+ 
+ #include "corecompositor.h"
++#include <thread>
+ 
+ namespace MockCompositor {
+ 
diff --git a/gnu/packages/patches/ruby-anystyle-data-immutable-install.patch b/gnu/packages/patches/ruby-anystyle-data-immutable-install.patch
new file mode 100644
index 0000000000..d5d7149a67
--- /dev/null
+++ b/gnu/packages/patches/ruby-anystyle-data-immutable-install.patch
@@ -0,0 +1,40 @@
+From a6f5b37cd22daa6069d8fbef8cba9dc60a6731f6 Mon Sep 17 00:00:00 2001
+From: Philip McGrath <philip@philipmcgrath.com>
+Date: Sun, 24 Jul 2022 23:54:19 -0400
+Subject: [PATCH] `AnyStyle::Data.setup()`: adjust for immutable install
+
+Don't override the default paths for `Dictionary::Marshal`,
+`Dictionary::GDBM`, and `Dictionary:LDBM` to point to this gem: we can't
+populate such files without the 'anystyle' gem (which depends on this
+one), and we won't be able to write to the directory where this gem is
+installed later, so the files will never exist at those locations.
+---
+ lib/anystyle/data/setup.rb | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/lib/anystyle/data/setup.rb b/lib/anystyle/data/setup.rb
+index 17efdf8..08246fa 100644
+--- a/lib/anystyle/data/setup.rb
++++ b/lib/anystyle/data/setup.rb
+@@ -4,18 +4,6 @@ module AnyStyle
+ 
+     def self.setup
+       Dictionary.defaults[:source] = File.join(ROOT, 'dict.txt.gz')
+-
+-      if defined? Dictionary::Marshal
+-        Dictionary::Marshal.defaults[:path] = File.join(ROOT, 'dict.marshal')
+-      end
+-
+-      if defined? Dictionary::GDBM
+-        Dictionary::GDBM.defaults[:path] = File.join(ROOT, 'dict.db')
+-      end
+-
+-      if defined? Dictionary::LDBM
+-        Dictionary::LDBM.defaults[:path] = ROOT
+-      end
+     end
+   end
+ end
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/ruby-anystyle-fix-dictionary-populate.patch b/gnu/packages/patches/ruby-anystyle-fix-dictionary-populate.patch
new file mode 100644
index 0000000000..b2e0498e8d
--- /dev/null
+++ b/gnu/packages/patches/ruby-anystyle-fix-dictionary-populate.patch
@@ -0,0 +1,94 @@
+From fae622c8b77feebac66a538d76e4211de8bd8eb3 Mon Sep 17 00:00:00 2001
+From: Philip McGrath <philip@philipmcgrath.com>
+Date: Sun, 24 Jul 2022 21:50:44 -0400
+Subject: [PATCH] fix saving `AnyStyle::Dictionary` after `populate!`
+
+Some of these fixes are more generally applicable.
+
+A more robust solution might find data files using
+e.g. `Gem.find_files()`.
+---
+ lib/anystyle/dictionary/gdbm.rb    |  6 ++++++
+ lib/anystyle/dictionary/marshal.rb | 31 ++++++++++++++++++++++++------
+ 2 files changed, 31 insertions(+), 6 deletions(-)
+
+diff --git a/lib/anystyle/dictionary/gdbm.rb b/lib/anystyle/dictionary/gdbm.rb
+index 754903c..c814df2 100644
+--- a/lib/anystyle/dictionary/gdbm.rb
++++ b/lib/anystyle/dictionary/gdbm.rb
+@@ -1,5 +1,6 @@
+ module AnyStyle
+   require 'gdbm'
++  require 'fileutils'
+ 
+   class Dictionary
+     class GDBM < Dictionary
+@@ -17,8 +18,13 @@ module AnyStyle
+ 
+       def open
+         close
++        FileUtils.mkdir_p(File.dirname(options[:path]))
+         @db = ::GDBM.new(*options.values_at(:path, :mode, :flags))
+         self
++      rescue Errno::EACCES
++        # GDBM.new tries this if :flags is nil, but not necessarily otherwise
++        @db = ::GDBM.new(options[:path],options[:mode],::GDBM::READER)
++        self
+       ensure
+         populate! if empty?
+       end
+diff --git a/lib/anystyle/dictionary/marshal.rb b/lib/anystyle/dictionary/marshal.rb
+index 761ca36..b9529d0 100644
+--- a/lib/anystyle/dictionary/marshal.rb
++++ b/lib/anystyle/dictionary/marshal.rb
+@@ -1,4 +1,6 @@
+ module AnyStyle
++  require 'fileutils'
++  require 'tempfile'
+   class Dictionary
+     class Marshal < Dictionary
+       @defaults = {
+@@ -10,17 +12,34 @@ module AnyStyle
+       end
+ 
+       def open
+-        if File.exists?(options[:path])
+-          @db = ::Marshal.load(File.open(options[:path]))
+-        else
+-          @db = {}
++        File.open(options[:path]) do |file|
++          @db = ::Marshal.load(file)
+         end
+         self
++      rescue Errno::ENOENT
++        @db = {}
++        self
+       ensure
+         if empty?
+           populate!
+-          if File.writable?(options[:path])
+-            ::Marshal.dump(db, File.open(options[:path], 'wb'))
++          tmp = nil
++          begin
++            FileUtils.mkdir_p(File.dirname(options[:path]))
++            tmp = Tempfile.create(File.basename(options[:path]),
++                                  File.dirname(options[:path]),
++                                  mode: File::Constants::BINARY)
++            pth = tmp.path()
++            ::Marshal.dump(db, tmp)
++            tmp.close()
++            File.rename(tmp.path, options[:path]) # will overwrite if exists
++            tmp = nil
++          rescue SystemCallError => e
++            warn(e.message)
++          ensure
++            if tmp then
++              tmp.close()
++              tmp.unlink()
++            end
+           end
+         end
+       end
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch b/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch
new file mode 100644
index 0000000000..7b338ca03e
--- /dev/null
+++ b/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch
@@ -0,0 +1,11 @@
+Description: Avoid dependency on byebug to reduce package closure
+  significantly, see https://issues.guix.gnu.org/55997
+diff --git a/lib/hydra.rb b/lib/hydra.rb
+index 29fbad2..6b5058a 100644
+--- a/lib/hydra.rb
++++ b/lib/hydra.rb
+@@ -1,4 +1,3 @@
+-require 'byebug' unless ENV['RACK_ENV'] == "production"
+ require 'pp'
+ 
+ module CoreExt
diff --git a/gnu/packages/patches/ruby-latex-decode-fix-test.patch b/gnu/packages/patches/ruby-latex-decode-fix-test.patch
new file mode 100644
index 0000000000..58d7d16258
--- /dev/null
+++ b/gnu/packages/patches/ruby-latex-decode-fix-test.patch
@@ -0,0 +1,66 @@
+From 698e39a251d433e2cd2934586a2dfc5e6582c4f9 Mon Sep 17 00:00:00 2001
+From: Philip McGrath <philip@philipmcgrath.com>
+Date: Sun, 24 Jul 2022 09:12:55 -0400
+Subject: [PATCH] Improve readability of whitespace tests
+
+This change fixes the test for `~x` in some environments in which it
+was previously failing.
+
+Related to https://github.com/inukshuk/latex-decode/issues/13
+---
+ features/step_definitions/latex.rb |  5 +++++
+ features/symbols.feature           |  7 -------
+ features/whitespace.feature        | 13 +++++++++++++
+ 3 files changed, 18 insertions(+), 7 deletions(-)
+ create mode 100644 features/whitespace.feature
+
+diff --git a/features/step_definitions/latex.rb b/features/step_definitions/latex.rb
+index 4b1b595..fca63c0 100644
+--- a/features/step_definitions/latex.rb
++++ b/features/step_definitions/latex.rb
+@@ -5,3 +5,8 @@ end
+ Then /^the result should be ('|")(.*)\1$/ do |quote,value|
+   expect(@result).to eq(value)
+ end
++
++# For whitespace or other characters that are hard to read in source code:
++Then /^I should get '([^']*)' \+ U\+(\h{4,}) \+ '([^']*)'$/ do |pre,code,post|
++  expect(@result).to eq(pre + code.hex.chr(Encoding::UTF_8) + post)
++end
+diff --git a/features/symbols.feature b/features/symbols.feature
+index 46d9a51..f8a5e84 100644
+--- a/features/symbols.feature
++++ b/features/symbols.feature
+@@ -12,10 +12,3 @@ Feature: Decode LaTeX symbol directives
+     | \\uparrow            | ↑       |
+     | \\downarrow          | ↓       |
+     | \\rightarrow         | →       |
+-
+-  Scenarios: Whitespace
+-    | latex | unicode | description        |
+-    | x\\,x | x x     | small space        |
+-    | x~x   | x x     | non-breaking space |
+-    | ~x    |  x      | non-breaking space |
+-
+diff --git a/features/whitespace.feature b/features/whitespace.feature
+new file mode 100644
+index 0000000..fe5b208
+--- /dev/null
++++ b/features/whitespace.feature
+@@ -0,0 +1,13 @@
++Feature: Decode LaTeX whitespace directives
++  As a hacker who works with LaTeX
++  I want to be able to decode LaTeX whitespace
++
++  Scenario Outline: LaTeX to Unicode transformation
++    When I decode the string '<latex>'
++    Then I should get <pre> + U+<code> + <post>
++
++  Scenarios: Whitespace
++    | latex | pre | code | post | description                |
++    | x~x   | 'x' | 00A0 | 'x'  | non-breaking space         |
++    | ~y    | ''  | 00A0 | 'y'  | leading non-breaking space |
++    | z\\,z | 'z' | 2009 | 'z'  | small space                |
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/shishi-fix-libgcrypt-detection.patch b/gnu/packages/patches/shishi-fix-libgcrypt-detection.patch
deleted file mode 100644
index 3db42feac9..0000000000
--- a/gnu/packages/patches/shishi-fix-libgcrypt-detection.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Fix building of Shishi with libgcrypt 1.6 and later.
-
-Patch copied from Debian:
-
-https://anonscm.debian.org/cgit/collab-maint/shishi.git/tree/debian/patches/fix_gcrypt_detection.diff?id=948301ae648a542a408da250755aeed58a6e3542
-
-Description: Fix autoconf gnutls detection to also accept gcrypt 1.6.
-Author: Andreas Metzler <ametzler@debian.org>
-Bug-Debian: http://bugs.debian.org/753150
-Origin: vendor
-Forwarded: no
-Last-Update: 2014-07-18
-
---- shishi-1.0.2.orig/gl/m4/gc.m4
-+++ shishi-1.0.2/gl/m4/gc.m4
-@@ -12,10 +12,12 @@ AC_DEFUN([gl_GC],
-   if test "$libgcrypt" != no; then
-     AC_LIB_HAVE_LINKFLAGS([gcrypt], [gpg-error], [
- #include <gcrypt.h>
--/* GCRY_MODULE_ID_USER was added in 1.4.4 and gc-libgcrypt.c
--   will fail on startup if we don't have 1.4.4 or later, so
--   test for it early. */
--#if !defined GCRY_MODULE_ID_USER
-+/* gc-libgcrypt.c will fail on startup if we don't have libgcrypt 1.4.4 or
-+   later, test for it early. by checking for either
-+   - GCRY_MODULE_ID_USER which was added in 1.4.4 and dropped in 1.6 or
-+   - GCRYPT_VERSION_NUMBER which was added in 1.6.
-+   */
-+#if !defined GCRY_MODULE_ID_USER && !defined GCRYPT_VERSION_NUMBER
- error too old libgcrypt
- #endif
- ])
diff --git a/gnu/packages/patches/texlive-hyph-utf8-no-byebug.patch b/gnu/packages/patches/texlive-hyph-utf8-no-byebug.patch
new file mode 100644
index 0000000000..fb29b76ef2
--- /dev/null
+++ b/gnu/packages/patches/texlive-hyph-utf8-no-byebug.patch
@@ -0,0 +1,13 @@
+Description: Avoid dependency on byebug to reduce package closure
+  significantly, see https://issues.guix.gnu.org/55997
+diff --git a/lib/tex/hyphen/language.rb b/lib/tex/hyphen/language.rb
+index 12831417..df6daa39 100644
+--- a/lib/tex/hyphen/language.rb
++++ b/lib/tex/hyphen/language.rb
+@@ -1,6 +1,5 @@
+ require 'yaml'
+ require 'hydra'
+-require 'byebug'
+ 
+ require_relative 'path'
+ 
diff --git a/gnu/packages/patches/unzip-CVE-2022-0529+CVE-2022-0530.patch b/gnu/packages/patches/unzip-CVE-2022-0529+CVE-2022-0530.patch
new file mode 100644
index 0000000000..e3fe2314ac
--- /dev/null
+++ b/gnu/packages/patches/unzip-CVE-2022-0529+CVE-2022-0530.patch
@@ -0,0 +1,177 @@
+https://nvd.nist.gov/vuln/detail/CVE-2022-0529
+https://nvd.nist.gov/vuln/detail/CVE-2022-0530
+https://sources.debian.org/src/unzip/6.0-27/debian/patches/28-cve-2022-0529-and-cve-2022-0530.patch/
+
+From: Steven M. Schweda <sms@antinode.info>
+Subject: Fix for CVE-2022-0529 and CVE-2022-0530
+Bug-Debian: https://bugs.debian.org/1010355
+X-Debian-version: 6.0-27
+
+--- a/fileio.c
++++ b/fileio.c
+@@ -171,8 +171,10 @@
+ static ZCONST char Far FilenameTooLongTrunc[] =
+   "warning:  filename too long--truncating.\n";
+ #ifdef UNICODE_SUPPORT
++   static ZCONST char Far UFilenameCorrupt[] =
++     "error: Unicode filename corrupt.\n";
+    static ZCONST char Far UFilenameTooLongTrunc[] =
+-     "warning:  Converted unicode filename too long--truncating.\n";
++     "warning:  Converted Unicode filename too long--truncating.\n";
+ #endif
+ static ZCONST char Far ExtraFieldTooLong[] =
+   "warning:  extra field too long (%d).  Ignoring...\n";
+@@ -2361,16 +2363,30 @@
+                   /* convert UTF-8 to local character set */
+                   fn = utf8_to_local_string(G.unipath_filename,
+                                             G.unicode_escape_all);
+-                  /* make sure filename is short enough */
+-                  if (strlen(fn) >= FILNAMSIZ) {
+-                    fn[FILNAMSIZ - 1] = '\0';
++
++                  /* 2022-07-22 SMS, et al.  CVE-2022-0530
++                   * Detect conversion failure, emit message.
++                   * Continue with unconverted name.
++                   */
++                  if (fn == NULL)
++                  {
+                     Info(slide, 0x401, ((char *)slide,
+-                      LoadFarString(UFilenameTooLongTrunc)));
+-                    error = PK_WARN;
++                     LoadFarString(UFilenameCorrupt)));
++                    error = PK_ERR;
++                  }
++                  else
++                  {
++                    /* make sure filename is short enough */
++                    if (strlen(fn) >= FILNAMSIZ) {
++                      fn[FILNAMSIZ - 1] = '\0';
++                      Info(slide, 0x401, ((char *)slide,
++                        LoadFarString(UFilenameTooLongTrunc)));
++                      error = PK_WARN;
++                    }
++                    /* replace filename with converted UTF-8 */
++                    strcpy(G.filename, fn);
++                    free(fn);
+                   }
+-                  /* replace filename with converted UTF-8 */
+-                  strcpy(G.filename, fn);
+-                  free(fn);
+                 }
+ # endif /* UNICODE_WCHAR */
+                 if (G.unipath_filename != G.filename_full)
+--- a/process.c
++++ b/process.c
+@@ -222,6 +222,8 @@
+      "\nwarning:  Unicode Path version > 1\n";
+    static ZCONST char Far UnicodeMismatchError[] =
+      "\nwarning:  Unicode Path checksum invalid\n";
++   static ZCONST char Far UFilenameTooLongTrunc[] =
++     "warning:  filename too long (P1) -- truncating.\n";
+ #endif
+ 
+ 
+@@ -1915,7 +1917,7 @@
+     Sets both local header and central header fields.  Not terribly clever,
+     but it means that this procedure is only called in one place.
+ 
+-    2014-12-05 SMS.
++    2014-12-05 SMS.  (oCERT.org report.)  CVE-2014-8141.
+     Added checks to ensure that enough data are available before calling
+     makeint64() or makelong().  Replaced various sizeof() values with
+     simple ("4" or "8") constants.  (The Zip64 structures do not depend
+@@ -1947,9 +1949,10 @@
+               ef_len - EB_HEADSIZE));
+             break;
+         }
++
+         if (eb_id == EF_PKSZ64)
+         {
+-          int offset = EB_HEADSIZE;
++          unsigned offset = EB_HEADSIZE;
+ 
+           if ((G.crec.ucsize == Z64FLGL) || (G.lrec.ucsize == Z64FLGL))
+           {
+@@ -2046,7 +2049,7 @@
+         }
+         if (eb_id == EF_UNIPATH) {
+ 
+-          int offset = EB_HEADSIZE;
++          unsigned offset = EB_HEADSIZE;
+           ush ULen = eb_len - 5;
+           ulg chksum = CRCVAL_INITIAL;
+ 
+@@ -2504,16 +2507,17 @@
+   int state_dependent;
+   int wsize = 0;
+   int max_bytes = MB_CUR_MAX;
+-  char buf[9];
++  char buf[ MB_CUR_MAX+ 1];             /* ("+1" not really needed?) */
+   char *buffer = NULL;
+   char *local_string = NULL;
++  size_t buffer_size;                   /* CVE-2022-0529 */
+ 
+   for (wsize = 0; wide_string[wsize]; wsize++) ;
+ 
+   if (max_bytes < MAX_ESCAPE_BYTES)
+     max_bytes = MAX_ESCAPE_BYTES;
+-
+-  if ((buffer = (char *)malloc(wsize * max_bytes + 1)) == NULL) {
++  buffer_size = wsize * max_bytes + 1;          /* Reused below. */
++  if ((buffer = (char *)malloc( buffer_size)) == NULL) {
+     return NULL;
+   }
+ 
+@@ -2551,8 +2555,28 @@
+     } else {
+       /* no MB for this wide */
+         /* use escape for wide character */
+-        char *escape_string = wide_to_escape_string(wide_string[i]);
+-        strcat(buffer, escape_string);
++        size_t buffer_len;
++        size_t escape_string_len;
++        char *escape_string;
++        int err_msg = 0;
++
++        escape_string = wide_to_escape_string(wide_string[i]);
++        buffer_len = strlen( buffer);
++        escape_string_len = strlen( escape_string);
++
++        /* Append escape string, as space allows. */
++        /* 2022-07-18 SMS, et al.  CVE-2022-0529 */
++        if (escape_string_len > buffer_size- buffer_len- 1)
++        {
++            escape_string_len = buffer_size- buffer_len- 1;
++            if (err_msg == 0)
++            {
++                err_msg = 1;
++                Info(slide, 0x401, ((char *)slide,
++                 LoadFarString( UFilenameTooLongTrunc)));
++            }
++        }
++        strncat( buffer, escape_string, escape_string_len);
+         free(escape_string);
+     }
+   }
+@@ -2604,9 +2628,18 @@
+   ZCONST char *utf8_string;
+   int escape_all;
+ {
+-  zwchar *wide = utf8_to_wide_string(utf8_string);
+-  char *loc = wide_to_local_string(wide, escape_all);
+-  free(wide);
++  zwchar *wide;
++  char *loc = NULL;
++
++  wide = utf8_to_wide_string( utf8_string);
++
++  /* 2022-07-25 SMS, et al.  CVE-2022-0530 */
++  if (wide != NULL)
++  {
++    loc = wide_to_local_string( wide, escape_all);
++    free( wide);
++  }
++
+   return loc;
+ }
+ 
diff --git a/gnu/packages/patches/xygrib-fix-finding-data.patch b/gnu/packages/patches/xygrib-fix-finding-data.patch
index 0b718b0eff..d1db2d8807 100644
--- a/gnu/packages/patches/xygrib-fix-finding-data.patch
+++ b/gnu/packages/patches/xygrib-fix-finding-data.patch
@@ -124,7 +124,7 @@ index 2c9d3ab4da03..1190cc780182 100644
 +- GEN_TRANSLATION (DEFAULT: ON)
 +```
 +Create targets to generate translation files.
-+Turning this off removes the need for qt-linguist, part of qttools qt5 submodule, during build.
++Turning this off removes the need for qt-linguist, part of qttools-5 qt5 submodule, during build.
 +```
  ### macOS
  
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 68d0dde8b8..2a24751f55 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -874,7 +874,7 @@ program capable of converting PDF into other formats.")
            libspectre
            poppler-qt5
            qtbase-5
-           qtsvg))
+           qtsvg-5))
     (arguments
      `(#:tests? #f ; no tests
        #:phases
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index eda9eadca2..19c171a9bb 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -347,7 +347,7 @@ and a wide variety of other metadata.")
 (define-public libpano13
   (package
     (name "libpano13")
-    (version "2.9.20_rc3")
+    (version "2.9.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/panotools/libpano13/"
@@ -356,8 +356,10 @@ and a wide variety of other metadata.")
                                   "/libpano13-" version ".tar.gz"))
               (sha256
                (base32
-                "12cv4886l1czfjwy7k6ipgf3zjksgwhdjzr2s9fdg33vqcv2hlrv"))))
+                "141mccp4klj0qdpvki97q5wjf5a1b7pj09s6c4lmwc4r452s3rbr"))))
     (build-system cmake-build-system)
+    (native-inputs
+     (list perl))                       ; for pod2man
     (inputs
      (list libjpeg-turbo libpng libtiff zlib))
     (home-page "http://panotools.sourceforge.net/")
@@ -607,7 +609,7 @@ and enhance them.")
                        (string-append "PREFIX=" out)
                        "Photoflare.pro")))))))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list graphicsmagick libomp qtbase-5))
     (home-page "https://photoflare.io")
@@ -688,7 +690,7 @@ off' shooting directly from the controlling computer.")
 (define-public hugin
   (package
     (name "hugin")
-    (version "2020.0.0")
+    (version "2021.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/hugin/hugin/hugin-"
@@ -696,32 +698,31 @@ off' shooting directly from the controlling computer.")
                                   "/hugin-" version ".tar.bz2"))
               (sha256
                (base32
-                "1jyazc0mbr9g7vrichpqqnfl72lj21244csk0z5i8ycs4l0pcgi8"))))
+                "1ngadsv22ii05kmvpzdivhwlks4pnv9ijz7j9srl8y54gy5flyh4"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal pkg-config))
     (inputs
-     `(("boost" ,boost)
-       ("enblend-enfuse" ,enblend-enfuse)
-       ("exiv2" ,exiv2)
-       ("fftw" ,fftw)
-       ("flann" ,flann)
-       ("freeglut" ,freeglut)
-       ("glew" ,glew)
-       ("lcms" ,lcms)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpano13" ,libpano13)
-       ("libpng" ,libpng)
-       ("libtiff" ,libtiff)
-       ("libxi" ,libxi)
-       ("libxmu" ,libxmu)
-       ("mesa" ,mesa)
-       ("openexr" ,openexr-2)
-       ("sqlite" ,sqlite)
-       ("vigra" ,vigra)
-       ("wxwidgets" ,wxwidgets)
-       ("zlib" ,zlib)))
+     (list boost
+           enblend-enfuse
+           exiv2
+           fftw
+           flann
+           freeglut
+           glew
+           lcms
+           libjpeg-turbo
+           libpano13
+           libpng
+           libtiff
+           libxi
+           libxmu
+           mesa
+           openexr-2
+           sqlite
+           vigra
+           wxwidgets
+           zlib))
     (arguments
      `(#:tests? #f                      ; no check target
        #:configure-flags
@@ -745,8 +746,7 @@ off' shooting directly from the controlling computer.")
                (("wxT\\(\"enblend\"\\)")
                 (string-append "wxT(\"" (which "enblend") "\")"))
                (("wxT\\(\"enfuse\"\\)")
-                (string-append "wxT(\"" (which "enfuse") "\")")))
-             #t)))))
+                (string-append "wxT(\"" (which "enfuse") "\")"))))))))
     (home-page "http://hugin.sourceforge.net/")
     (synopsis "Panorama photo stitcher")
     (description
diff --git a/gnu/packages/printers.scm b/gnu/packages/printers.scm
index f78923966c..e7761070e0 100644
--- a/gnu/packages/printers.scm
+++ b/gnu/packages/printers.scm
@@ -58,7 +58,7 @@
     (inputs
      `(("libusb" ,libusb)
        ("qt" ,qtbase-5)
-       ("qtsvg" ,qtsvg)))
+       ("qtsvg-5" ,qtsvg-5)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("qmake" ,qtbase-5)))
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index 559dc75288..1fb64fd8a6 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -48,8 +48,8 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
-  #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages freedesktop)
@@ -370,7 +370,7 @@ curses-style interfaces.")
 (define-public pamixer
   (package
     (name "pamixer")
-    (version "1.5")
+    (version "1.6")
     (source
      (origin
        (method git-fetch)
@@ -379,20 +379,12 @@ curses-style interfaces.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1d5arjbsh3q9z693pi2rq553ai9b18iz36ss7q8ff29m0hf62lzd"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f                      ; no test suite
-       #:make-flags
-       (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-before 'install 'mkdir-bin
-           (lambda _
-             (mkdir-p (string-append (assoc-ref %outputs "out") "/bin")))))))
+        (base32 "0d0fcqv9fri1y2701lasscgmvljxzpyg95vy90b3d2ccdnqn3d1d"))))
+    (build-system meson-build-system)
+    (native-inputs
+     (list pkg-config))
     (inputs
-     (list boost pulseaudio))
+     (list cxxopts pulseaudio))
     (home-page "https://github.com/cdemoulins/pamixer")
     (synopsis "PulseAudio command line mixer")
     (description
@@ -436,15 +428,14 @@ README.md for a detailed list of features.")
 (define-public paprefs
   (package
     (name "paprefs")
-    (version "1.1")
+    (version "1.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.freedesktop.org/software/pulseaudio/"
-                           name "/" name "-" version ".tar.xz"))
+                           "paprefs/paprefs-" version ".tar.xz"))
        (sha256
-        (base32
-         "189z5p20hk0xv9vwvym293503j4pwl03xqk9hl7cl6dwgv0l7wkf"))))
+        (base32 "0czn71vc2j59ass1axr8ij7bh53wq2q0z4gw7xgd2dirvi01xwmk"))))
     (build-system meson-build-system)
     (native-inputs
      (list gettext-minimal pkg-config))
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index fa382f6f35..1522bdf758 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1976,14 +1976,14 @@ behavior-driven development (TDD and BDD).")
 (define-public python-stestr
   (package
     (name "python-stestr")
-    (version "3.0.1")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "stestr" version))
        (sha256
         (base32
-         "0adhqp9c9338wlvlq776k57k04lyxp38bv591afdm9gjsn2qn1zm"))))
+         "1kg9gfdr4bj2m7s1r44z530a0ba4p17j4jlhcn1xha0j8jmyfgn2"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ;to avoid circular dependencies
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 57c9325f49..95f60aae7b 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -544,6 +544,49 @@ region of practical equivalence (rope), or that the second classifier has
 higher scores.")
     (license license:expat)))
 
+(define-public python-fbpca
+  (package
+    (name "python-fbpca")
+    (version "1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "fbpca" version))
+              (sha256
+               (base32
+                "1lbjqhqsdmqk86lb86q3ywf7561zmdny1dfvgwqkyrkr4ij7f1hm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-numpy python-scipy))
+    (home-page "https://fbpca.readthedocs.io/")
+    (synopsis "Functions for principal component analysis and accuracy checks")
+    (description
+     "This package provides fast computations for @dfn{principal component
+analysis} (PCA), SVD, and eigendecompositions via randomized methods")
+    (license license:bsd-3)))
+
+(define-public python-geosketch
+  (package
+    (name "python-geosketch")
+    (version "1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "geosketch" version))
+              (sha256
+               (base32
+                "0knch5h0p8xpm8bi3b5mxyaf1ywwimrsdmbnc1xr5icidcv9gzmv"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #false)) ;there are none
+    (propagated-inputs (list python-fbpca python-numpy python-scikit-learn))
+    (home-page "https://github.com/brianhie/geosketch")
+    (synopsis "Geometry-preserving random sampling")
+    (description "geosketch is a Python package that implements the geometric
+sketching algorithm described by Brian Hie, Hyunghoon Cho, Benjamin DeMeo,
+Bryan Bryson, and Bonnie Berger in \"Geometric sketching compactly summarizes
+the single-cell transcriptomic landscape\", Cell Systems (2019).  This package
+provides an example implementation of the algorithm as well as scripts
+necessary for reproducing the experiments in the paper.")
+    (license license:expat)))
+
 (define-public python-xarray
   (package
     (name "python-xarray")
@@ -1183,7 +1226,7 @@ aggregated sum and more.")
 (define-public python-pyvista
   (package
     (name "python-pyvista")
-    (version "0.35.1")
+    (version "0.35.2")
     (source
      ;; The PyPI tarball does not contain the tests.
      ;; (However, we don't yet actually run the tests.)
@@ -1194,7 +1237,7 @@ aggregated sum and more.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1rwwn8a4j3i22il6dxr2qzrnnz3n1gjbpa2p8gfzrjmzp5lzzk81"))))
+        (base32 "1qmxrhqm3ag736yb761jy1himwlr3p676xyqbry61h97dj11n6sq"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-appdirs
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 3239086dc3..da5a22e395 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2019, 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
@@ -2805,6 +2805,25 @@ APIs.")
 than Python’s urllib2 library.")
     (license license:asl2.0)))
 
+(define-public python-requests-kerberos
+  (package
+    (name "python-requests-kerberos")
+    (version "0.14.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "requests-kerberos" version))
+              (sha256
+               (base32
+                "1lbgjs779cjxhz07lfl9dbyp3qfh8a3ir2393042wfg518jd3afd"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-cryptography python-pyspnego
+                             python-requests))
+    (home-page "https://github.com/requests/requests-kerberos")
+    (synopsis "Kerberos authentication handler for python-requests")
+    (description "This package provides a Kerberos authentication handler for
+python-requests.")
+    (license license:isc)))
+
 (define-public python-requests-unixsocket
   (package
     (name "python-requests-unixsocket")
@@ -7666,3 +7685,79 @@ resources using Web Application Description Language (WADL) files as guides.")
 SendGrid Web API v3.  Version 3+ of the library provides full support for all
 SendGrid Web API v3 endpoints, including the new v3 /mail/send.")
     (license license:expat)))
+
+(define-public python-starlette
+  (package
+    (name "python-starlette")
+    (version "0.20.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "starlette" version))
+              (sha256
+               (base32
+                "112hmwk4fh4dl21nlr2xd37h43xzxpjxfnic7v7fz3wr5w9g7z22"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-anyio
+                             python-typing-extensions
+                             ;; [all] extra dependencies:
+                             python-itsdangerous
+                             python-jinja2
+                             python-multipart
+                             python-pyyaml
+                             python-requests))
+    (home-page "https://github.com/encode/starlette")
+    (synopsis "Little ASGI library")
+    (description
+     "Starlette is a lightweight ASGI (Asynchronous Server Gateway
+Interface) framework/toolkit for building async web services in Python.")
+    (license license:bsd-3)))
+
+(define-public python-pyactiveresource
+  (package
+    (name "python-pyactiveresource")
+    (version "2.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pyactiveresource" version))
+              (sha256
+               (base32
+                "1n7xvzh1j8fxal0gx9bgg1ayrp3q9mb1a2vb12d6s86wa93880rg"))))
+    (build-system python-build-system)
+    (native-inputs (list python-dateutil python-pyyaml))
+    (propagated-inputs (list python-six))
+    (home-page "https://github.com/Shopify/pyactiveresource/")
+    (synopsis "ActiveResource for Python")
+    (description "This package provides a Python port of the ActiveResource
+project.
+
+Active Resource attempts to provide a coherent wrapper object-relational
+mapping for REST web services.  It follows the same philosophy as Active
+Record, in that one of its prime aims is to reduce the amount of code needed
+to map to these resources.  This is made possible by relying on a number of
+code- and protocol-based conventions that make it easy for Active Resource to
+infer complex relations and structures.")
+    (license license:expat)))
+
+(define-public python-shopifyapi
+  (package
+    (name "python-shopifyapi")
+    (version "12.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "ShopifyAPI" version))
+              (sha256
+               (base32
+                "03np9mkycqbw5l5vk0srmq353q3vmbycbbarzv0cg3z703p81gnb"))))
+    (build-system python-build-system)
+    (native-inputs (list python-mock))
+    (propagated-inputs (list python-pyactiveresource python-pyjwt
+                             python-pyyaml python-six))
+    (home-page "https://github.com/Shopify/shopify_python_api")
+    (synopsis "Shopify API for Python")
+    (description "This package provides the Shopify API for Python.
+
+The ShopifyAPI library allows Python developers to programmatically access the
+admin section of stores using an ActiveResource-like interface similar the
+ruby Shopify API gem.  The library makes HTTP requests to Shopify in order to
+list, create, update, or delete resources (e.g. Order, Product, Collection).")
+    (license license:expat)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 46b62ab932..68d4ae8687 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -59,7 +59,7 @@
 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019 Sam <smbaines8@gmail.com>
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
-;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019, 2020, 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
@@ -124,6 +124,9 @@
 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
+;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2022 Marek Felšöci <marek@felsoci.sk>
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -690,6 +693,32 @@ project documentation.  Documentation source files are written in Markdown, and
 configured with a single YAML configuration file.")
     (license license:bsd-3)))
 
+(define-public python-mkdocs-markdownextradata-plugin
+  (package
+    (name "python-mkdocs-markdownextradata-plugin")
+    (version "0.2.5")
+    (source (origin
+       ;; Use git, as there are some test files missing from the PyPI release,
+       ;; see https://github.com/rosscdh/mkdocs-markdownextradata-plugin/issues/41.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rosscdh/mkdocs-markdownextradata-plugin")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1a3868s9m7pzyfncpjbjsa9vw5nihssl2v47pxj7h6qa67kvlk3g"))))
+    (build-system python-build-system)
+    (native-inputs (list python-pytest))
+    (propagated-inputs (list python-mkdocs python-pyyaml))
+    (home-page "https://github.com/rosscdh/mkdocs-markdownextradata-plugin/")
+    (synopsis "Inject mkdocs.yml extra variables into the MkDocs markdown
+template")
+    (description
+     "This package provides a MkDocs plugin that injects the mkdocs.yml extra
+variables into the markdown template")
+    (license license:expat)))
+
 (define-public python-pymdown-extensions
   (package
     (name "python-pymdown-extensions")
@@ -1182,20 +1211,13 @@ iotop, uptime, pidof, tty, taskset, pmap.")
 (define-public python-shapely
   (package
     (name "python-shapely")
-    (version "1.7.1")
+    (version "1.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Shapely" version))
        (sha256
-        (base32
-         "0adiz4jwmwxk7k1awqifb1a9bj5x4nx4gglb5dz9liam21674h8n"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (delete-file "shapely/speedups/_speedups.c")
-           (delete-file "shapely/vectorized/_vectorized.c")
-           #t))))
+        (base32 "1dpbjw0w2l1r9s5drmi4cyr1yd5h2a4m9vip7qhy7mbg03azjajp"))))
     (build-system python-build-system)
     (native-inputs
      (list python-cython python-matplotlib python-pytest
@@ -1481,6 +1503,37 @@ NetCDF files can also be read and modified.  Python-HDF4 is a fork of
 @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
    (license license:expat)))
 
+(define-public python-h5netcdf
+  (package
+    (name "python-h5netcdf")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "h5netcdf" version))
+       (sha256
+        (base32 "1b2dcgf5rwy7pb7hr4prkc5vgcw9qc2was20dmnj90lbrpx08rvp"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "pytest" "-vv" "h5netcdf/tests")))))))
+    (native-inputs
+     (list python-netcdf4
+           python-pytest
+           python-setuptools-scm))
+    (propagated-inputs
+     (list python-h5py python-packaging))
+    (home-page "https://h5netcdf.org")
+    (synopsis "Python interface for the netCDF4 file-format based on h5py")
+    (description "This package provides Python interface for the netCDF4
+file-format that reads and writes local or remote HDF5 files directly via h5py
+or h5pyd, without relying on the Unidata netCDF library")
+    (license license:bsd-3)))
+
 (define-public python-h5py
   (package
     (name "python-h5py")
@@ -1646,14 +1699,14 @@ of the netcdf4 package before.")
 (define-public python-netcdf4
   (package
     (name "python-netcdf4")
-    (version "1.5.3")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "netCDF4" version))
        (sha256
         (base32
-         "1gn35mb2yc263pci720aik8ymz41lrvxlrn3z83vyjwghiashg1a"))))
+         "0qxs8r1qmsmg760wm5q0wqlcm7hdd3k7cghryw6wvqd3v5rs7vwm"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -2754,20 +2807,20 @@ Python 3.3+.")
 (define-public python-pyicu
   (package
     (name "python-pyicu")
-    (version "2.7.4")
+    (version "2.9")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "PyICU" version))
       (sha256
        (base32
-        "0mkz1673qxldxs4mrqg9882xgmz5fhpia17yrsd6z8dfw8156rf0"))))
+        "0y2qhh443vydi3y7kmhyb6kz3z6d7qq7ld0sg88mfqalcp7dca9w"))))
     (build-system python-build-system)
     (inputs
      (list icu4c))
     (native-inputs
      (list python-pytest python-six))
-    (home-page "https://github.com/ovalhub/pyicu")
+    (home-page "https://gitlab.pyicu.org/main/pyicu")
     (synopsis "Python extension wrapping the ICU C++ API")
     (description
      "PyICU is a python extension wrapping the ICU C++ API.")
@@ -3736,34 +3789,23 @@ memory usage and transliteration quality.")
 (define-public python-pyjwt
   (package
     (name "python-pyjwt")
-    (version "1.7.1")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyJWT" version))
        (sha256
         (base32
-         "15hflax5qkw1v6nssk1r0wkj83jgghskcmn875m3wgvpzdvajncd"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (for-each delete-file-recursively
-                     (find-files "." "\\.pyc$"))
-           #t))))
+         "1fmbcwfw1463wjzwbcgg3s16rad6kfb1mc5y7jbkp6v9ihh0hafl"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
                   (replace 'check
-                    (lambda _
-                      ;; Mimic upstream commit 3a20892442b34c7 to get
-                      ;; rid of dependency on pytest-runner < 5.0.
-                      ;; Remove substitution for PyJWT > 1.7.1.
-                      (substitute* "setup.py"
-                        ((".*pytest-runner.*")
-                         ""))
-                      (invoke "pytest" "-vv"))))))
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "pytest" "-vv")))))))
     (native-inputs
-     (list python-pytest python-pytest-cov))
+     (list python-cryptography python-pytest))
     (home-page "https://github.com/progrium/pyjwt")
     (synopsis "JSON Web Token implementation in Python")
     (description
@@ -4573,7 +4615,7 @@ to deprecate classes, functions or methods.")
 (define-public python-pygithub
   (package
     (name "python-pygithub")
-    (version "1.54.1")
+    (version "1.55")
     (source
      ;; We fetch from the Git repo because there are no tests in the PyPI
      ;; archive.
@@ -4584,7 +4626,7 @@ to deprecate classes, functions or methods.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1nl74bp5ikdnrc8xq0qr25ryl1mvarf0xi43k8w5jzlrllhq0nkq"))))
+        (base32 "082bxffpy4h97dsay3l75cpgfjj10kywkvicnm6xscwvah285q9y"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -4596,7 +4638,7 @@ to deprecate classes, functions or methods.")
              #t)))))
     (propagated-inputs
      (list python-cryptography python-deprecated python-pyjwt
-           python-requests))
+           python-pynacl python-requests))
     (native-inputs
      (list python-httpretty python-pytest))
     (home-page "https://pygithub.readthedocs.io/en/latest/")
@@ -5700,15 +5742,17 @@ the Texinfo, HTML, and PDF formats.")))
 (define-public python-munch
   (package
     (name "python-munch")
-    (version "2.0.4")
+    (version "2.5.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "munch" version))
         (sha256
          (base32
-          "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
+          "1lnvlic9g68hcmgdnv5bzp0nx2bf1kjclj54gx0s7nyl4ipmywrd"))))
     (build-system python-build-system)
+    (native-inputs (list python-pbr python-pytest))
+    (propagated-inputs (list python-six))
     (home-page "https://github.com/Infinidat/munch")
     (synopsis "Dot-accessible dictionary")
     (description "Munch is a dot-accessible dictionary similar to JavaScript
@@ -9898,13 +9942,13 @@ function signatures.")
 (define-public python-sympy
   (package
     (name "python-sympy")
-    (version "1.7.1")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sympy" version))
        (sha256
-        (base32 "0bkb4jf24yv5i4kjpsmg1xjjccfhqyi0syv0p0xvhdbmx5hr5pm3"))))
+        (base32 "0yvqb2fhrm81skl8s9znbkkjfb1a09n64qqlc1r225cyvzzywfar"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -10841,6 +10885,42 @@ extensions, and several HTML output formats.  A command line wrapper
 markdown_py is also provided to convert Markdown files to HTML.")
     (license license:bsd-3)))
 
+(define-public python-mdx-include
+  (package
+    (name "python-mdx-include")
+    (version "1.4.1")
+    (source (origin
+              ;; Use git, as there are some test files missing from the PyPI
+              ;; release, see https://github.com/neurobin/mdx_include/issues/9
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/neurobin/mdx_include")
+                    ;; Releases are not tagged on github, see
+                    ;; https://github.com/neurobin/mdx_include/issues/10
+                    (commit "683e6be7a00a1ef4d673ad0294458fa61bc97286")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0qpzgln4ybd7pl0m9s19dv60aq9cvwrk7x3yz96kjhcywaa5w386"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-test-requiring-network
+           (lambda _
+             (substitute* "mdx_include/test/test.py"
+               (("(\\s+def )test_(cache|config|default)\\(" _ pre post)
+                (string-append pre "__off__test_" post "("))))))))
+    (propagated-inputs (list python-cyclic python-markdown python-rcslice))
+    (home-page "https://github.com/neurobin/mdx_include")
+    (synopsis "Python Markdown extension to include local or remote files")
+    (description "Include extension for Python Markdown.  It lets you include
+local or remote (downloadable) files into your markdown at arbitrary
+positions.
+
+This project is motivated by markdown-include and provides the same
+functionalities with some extras.")
+    (license license:bsd-3)))
 
 (define-public python-ptyprocess
   (package
@@ -12413,32 +12493,41 @@ $ rm -rf /tmp/env
 (define-public python-tlsh
   (package
     (name "python-tlsh")
-    (version "3.4.5")
+    (version "4.11.2")
     (home-page "https://github.com/trendmicro/tlsh")
     (source
      (origin
        (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/trendmicro/tlsh")
-             (commit (string-append "v" version))))
+       (uri (git-reference (url home-page) (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll"))))
+        (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:out-of-source? #f
-       #:phases (modify-phases %standard-phases
-                  (replace
-                   'install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Build and install the Python bindings.  The underlying
-                     ;; C++ library is apparently not meant to be installed.
-                     (let ((out (assoc-ref outputs "out")))
-                       (with-directory-excursion "py_ext"
-                         (and (system* "python" "setup.py" "build")
-                              (system* "python" "setup.py" "install"
-                                       (string-append "--prefix=" out))))))))))
-    (inputs `(("python" ,python-wrapper)))        ;for the bindings
+     (list #:out-of-source? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'install
+                 (lambda _
+                   ;; Build and install the Python bindings.  The underlying
+                   ;; C++ library is apparently not meant to be installed.
+                   (with-directory-excursion "py_ext"
+                     (and (system* "python" "setup.py" "build")
+                          (system* "python" "setup.py" "install"
+                                   (string-append "--prefix=" #$output))))))
+               ;; Delay tests until the phase above has run.
+               (delete 'check)
+               (add-after 'install 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (substitute* "Testing/python_test.sh"
+                     ;; The script sets up a working PYTHONPATH, but does not
+                     ;; export it for all subsequent test commands.  Fix that.
+                     (("^PYTHONPATH=\".*" all)
+                      (string-append all "\nexport PYTHONPATH\n")))
+                   (when tests?
+                     (with-directory-excursion "Testing"
+                       (invoke "./python_test.sh"))))))))
+    (inputs (list python-wrapper))      ;for the bindings
     (synopsis "Fuzzy matching library for Python")
     (description
      "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
@@ -14050,21 +14139,36 @@ files for use with Python.")
     (license license:bsd-2)))
 
 (define-public python-args
-  (package
-    (name "python-args")
-    (version "0.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "args" version))
-              (sha256
-               (base32
-                "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
-    (build-system python-build-system)
-    (home-page "https://github.com/kennethreitz/args")
-    (synopsis "Command-line argument parser")
-    (description
-     "This library provides a Python module to parse command-line arguments.")
-    (license license:bsd-3)))
+  (let ((commit "9460f1a35eb3055e9e4de1f0a6932e0883c72d65") (revision "0"))
+    (package
+      (name "python-args")
+      (version (git-version "0.1.0" revision commit))
+      (home-page "https://github.com/kennethreitz-archive/args")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1zfxpbp9vldqdrjmd0c6y3wisl35mx5v8zlyp3nhwpy1730wrc9j"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'patch-args.py
+                      (lambda _
+                        (substitute* "args.py"
+                          (("basestring") "str"))))
+                    (replace 'check
+                      (lambda* (#:key tests? #:allow-other-keys)
+                        (when tests?
+                          (invoke "nosetests" "-v")))))))
+      (native-inputs (list python-nose))
+      (synopsis "Command-line argument parser")
+      (description
+       "This library provides a Python module to parse command-line arguments.")
+      (license license:bsd-3))))
 
 (define-public python-clint
   (package
@@ -14522,16 +14626,27 @@ document.")
 (define-public python-symengine
   (package
     (name "python-symengine")
-    (version "0.6.1")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "symengine" version))
        (sha256
-        (base32 "1kn1w4dp9mrsq6kzmhf4pjmx3wicxc3dw1mwa924q8g48g77lr4c"))))
+        (base32 "0qjgdbnb10kfk7jdhxnzfl8cpaps81k8vap7gm7q9ym3pgslazhg"))))
     (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (if tests?
+                  ;; Run tests against installed package.
+                  (with-directory-excursion "/tmp"
+                    (invoke "nosetests" "-v" "symengine.tests"))
+                  (format #t "test suite not run~%")))))))
     (native-inputs
-     (list cmake python-cython))
+     (list cmake python-cython python-nose))
     (inputs
      (list symengine))
     (home-page "https://github.com/symengine/symengine.py")
@@ -18806,6 +18921,18 @@ from the header, as well as section details and data available.")
      through a Python API.")
     (license license:lgpl2.1+)))
 
+(define-public python-pycountry@20.7.3
+  (package
+    (inherit python-pycountry)
+    (name "python-pycountry")
+    (version "20.7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pycountry" version))
+       (sha256
+        (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241"))))))
+
 (define-public python-pycosat
   (package
     (name "python-pycosat")
@@ -19643,7 +19770,7 @@ while only declaring the test-specific fields.")
      Supported metrics are:
      @itemize @bullet
      @item raw metrics: SLOC, comment lines, blank lines, &c.
-     @item Cyclomatic Complexity (i.e.  McCabe’s Complexity)
+     @item Cyclomatic Complexity (i.e., McCabe’s Complexity)
      @item Halstead metrics (all of them)
      @item the Maintainability Index (a Visual Studio metric)
      @end itemize")
@@ -22629,13 +22756,13 @@ object-oriented library such as @code{scikit-learn}.")
 (define-public python-dill
   (package
     (name "python-dill")
-    (version "0.3.1.1")
+    (version "0.3.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dill" version))
        (sha256
-        (base32 "1704g8z70d210ksgbccs2v545v9w0wc6lx15m296alb7jf0yzn22"))))
+        (base32 "11lc40x37cx2i8qqbc5qklifm65dyjl6prrqsycybvpixzrl2pnp"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -25011,7 +25138,7 @@ with features similar to the @command{wget} utility.")
             python-translation-finder
             python-watchdog))
     (native-inputs
-     (list qttools fontforge))
+     (list qttools-5 fontforge))
     (home-page "https://framagit.org/tyreunom/offlate")
     (synopsis "Offline translation interface for online translation tools")
     (description "Offlate offers a unified interface for different translation
@@ -28773,13 +28900,13 @@ development, testing, production]};
 (define-public python-pudb
   (package
     (name "python-pudb")
-    (version "2022.1.1")
+    (version "2022.1.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pudb" version))
               (sha256
                (base32
-                "0gq82hwnibby9qdyv7ri11phvg94nby4jb0w9h3jk79w89kdsfyv"))))
+                "03a7zalgdxfd2z2k6050ng087gwqgqis544n2083gdfxbf0ap0vb"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -29567,6 +29694,38 @@ sorted by priority and queues that are emptied in a round-robin
 fashion.")
     (license license:bsd-3)))
 
+(define-public python-posix-ipc
+  (package
+    (name "python-posix-ipc")
+    (version "1.0.5")
+    (source
+     (origin
+       ;; The source distributed on PyPI is prebuild.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/osvenskan/posix_ipc")
+             (commit (string-append "rel" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17y4d0pmvp199c5hbs602ailhlh9f9zv89kmpbd8jhyl6rgaxsvs"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-cc-path
+                 (lambda _
+                   (substitute* "prober.py"
+                     (("cmd = .cc")
+                      (string-append "cmd = \"" #$(cc-for-target)))))))))
+    (native-inputs
+     (list python-unittest2))
+    (home-page "http://semanchuk.com/philip/posix_ipc/")
+    (synopsis "POSIX IPC primitives for Python")
+    (description
+     "This package provides POSIX IPC primitives - semaphores, shared memory and
+message queues for Python.")
+    (license license:bsd-3))) ; BSD like Copyright (c) 2018, Philip Semanchuk
+
 (define-public python-itemadapter
   (package
     (name "python-itemadapter")
@@ -30180,3 +30339,146 @@ versa.  Extended WKB/WKT are also supported.")
 binary diff utility.  It also provides two command-line tools, @code{bsdiff4}
 and @code{bspatch4}.")
     (license license:bsd-2)))
+
+(define-public python-biblib
+  (let ((upstream-version "0.1.0")
+        (commit "ab0e857b9198fe425ec9b02fcc293b5d9fd0c406")
+        (revision "1"))
+    (package
+      (name "python-biblib")
+      (version (git-version upstream-version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/aclements/biblib")
+               (commit commit)))
+         (sha256
+          (base32 "1ym1gwxys9gl5a7fjs6xh5z9w50pnq4z3rs6fx7kpv78hlrbjlip"))
+         (file-name (git-file-name name version))))
+      (build-system python-build-system)
+      (home-page "https://github.com/aclements/biblib")
+      (synopsis "BibTeX parsing and transformation library")
+      (description
+       "Biblib provides a simple, standalone Python 3 package for parsing
+BibTeX bibliographic databases, as well as algorithms for manipulating BibTeX
+entries in BibTeX-y ways.  Biblib's parser is derived directly from the WEB
+source code for BibTeX and hence (barring bugs in translation) should be fully
+compatible with BibTeX's own parser.")
+      ;; N.B. It seems the parser was translated from WEB by hand: this
+      ;; package does not contain any generated files.
+      (license license:expat))))
+
+(define-public python-i3ipc
+  (package
+    (name "python-i3ipc")
+    (version "2.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/altdesktop/i3ipc-python")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715"))))
+    (build-system python-build-system)
+    (arguments (list #:tests? #f))      ;FIXME: some tests are unable to run
+    (propagated-inputs (list python-xlib))
+    (home-page "https://github.com/altdesktop/i3ipc-python")
+    (synopsis "Python library for controlling i3 and Sway")
+    (description
+     "This package provides a Python library for controlling the i3 and Sway
+window managers.")
+    (license license:bsd-3)))
+
+(define-public i3-autotiling
+  (package
+    (name "i3-autotiling")
+    (version "1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/nwg-piotr/autotiling")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1hjlvg7095s322gb43r9g7mqlsy3pj13l827jpnbn5x0918rq9rr"))))
+    (build-system python-build-system)
+    (arguments (list #:tests? #f))      ;no tests
+    (native-inputs (list python-wheel))
+    (propagated-inputs (list python-i3ipc))
+    (home-page "https://github.com/nwg-piotr/autotiling")
+    (synopsis "Automatically tile windows in i3 and Sway")
+    (description
+     "Script for Sway and i3 to automatically switch the horizontal/vertical
+ window split orientation.")
+    (license license:gpl3)))
+
+(define-public python-cyclic
+  (package
+    (name "python-cyclic")
+    (version "1.0.0")
+    (source (origin
+              ;; Use git, as there are some test files missing from the PyPI
+              ;; release, see https://github.com/neurobin/cyclic/issues/1
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/neurobin/cyclic")
+                    ;; Release is not tagged on github, see
+                    ;; https://github.com/neurobin/cyclic/issues/2
+                    (commit "bf616c47ea49a43500ea55a1e6f4890323be0679")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0r8zzjdv70fpxssxps62rlgpii8fr9gh8gykdygqn6mkdnfjwgjc"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/neurobin/cyclic")
+    (synopsis "Handle cyclic relations")
+    (description "This package handles cyclic relations compared by value.")
+    (license license:bsd-3)))
+
+(define-public python-rcslice
+  (package
+    (name "python-rcslice")
+    (version "1.1.0")
+    (source (origin
+              ;; Use git, as there are some test files missing from the PyPI
+              ;; release, see https://github.com/neurobin/rcslice/issues/1
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/neurobin/rcslice")
+                    ;; Releases are not tagged on github, see
+                    ;; https://github.com/neurobin/rcslice/issues/2
+                    (commit "1e1ef42cd262db76b67ded430630d5b499790f42")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lmhcgghh60kvdlx0cin1phhgfy9jivc6l0mb4ibnpa1x1md0zvv"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/neurobin/rcslice")
+    (synopsis "Slice a list of sliceables")
+    (description "This package provides Python module to slice a list of
+sliceables (1 indexed, both start and end index are inclusive).  Helps to
+slice file content line by line or column by column or a combination of
+both.")
+    (license license:bsd-3)))
+
+(define-public python-types-orjson
+  (package
+    (name "python-types-orjson")
+    (version "3.6.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "types-orjson" version))
+              (sha256
+               (base32
+                "0f66lf2qrl9d4vad42db3dmnzv89h4rr05r5zxx5qcl6kb3zr6ng"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/python/typeshed")
+    (synopsis "Typing stubs for orjson")
+    (description "This is a PEP 561 type stub package for the @code{orjson}
+package.  It can be used by type-checking tools like mypy, PyCharm, pytype
+etc. to check code that uses @code{orjson}.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3ae363b830..1c3d037d99 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -58,6 +58,7 @@
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -663,10 +664,13 @@ for more information.")))
     (synopsis "Wrapper for the Python 3 commands")
     (description
      "This package provides wrappers for the commands of Python@tie{}3.x such
-that they can be invoked under their usual name---e.g., @command{python}
+that they can also be invoked under their usual names---e.g., @command{python}
 instead of @command{python3} or @command{pip} instead of @command{pip3}.
+
 To function properly, this package should not be installed together with the
-@command{python} package.")))
+@code{python} package: this package uses the @code{python} package as a
+propagated input, so installing this package already makes both the versioned
+and the unversioned commands available.")))
 
 (define-public python-wrapper (wrap-python3 python))
 (define-public python-minimal-wrapper (wrap-python3 python-minimal))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index beba03936a..2e0ade2376 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -99,6 +99,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages sdl)
@@ -141,7 +142,7 @@
                (chdir "libqite")
                #t)))))
       (inputs
-       (list qtbase-5 qtmultimedia))
+       (list qtbase-5 qtmultimedia-5))
       (home-page "https://github.com/Ri0n/qite/")
       (synopsis "Qt Interactive Text Elements")
       (description "Qite manages interactive elements on QTextEdit.")
@@ -158,37 +159,22 @@
         (string-append "mirror://sourceforge/qt5ct/qt5ct-" version ".tar.bz2"))
        (sha256
         (base32 "14742vs32m98nbfb5mad0i8ciff5f45gfcb5v03p4hh2dvhhqgfn"))))
-    (build-system gnu-build-system)
+    (build-system qt-build-system)
     (arguments
-     `(#:tests? #f                      ; No target
-       #:imported-modules
-       (,@%qt-build-system-modules)
-       #:modules
-       ((guix build gnu-build-system)
-        ((guix build qt-build-system)
-         #:prefix qt:)
-        (guix build utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "qt5ct.pro"
-               (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
-                (search-input-file inputs "/bin/lrelease")))))
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out")))
-               (invoke "qmake"
-                       (string-append "PREFIX=" out)
-                       (string-append "BINDIR=" out "/bin")
-                       (string-append "DATADIR=" out "/share")
-                       (string-append "PLUGINDIR=" out "/lib/qt5/plugins")))))
-         (add-after 'install 'qt-wrap
-           (assoc-ref qt:%standard-phases 'qt-wrap)))))
+     (list
+      #:tests? #f                      ; No target
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* '("src/qt5ct-qtplugin/CMakeLists.txt"
+                             "src/qt5ct-style/CMakeLists.txt")
+                (("\\$\\{PLUGINDIR\\}")
+                 (string-append #$output "/lib/qt5/plugins"))))))))
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtsvg))
+     (list qtsvg-5))
     (synopsis "Qt5 Configuration Tool")
     (description "Qt5CT is a program that allows users to configure Qt5
 settings (such as icons, themes, and fonts) in desktop environments or
@@ -259,7 +245,7 @@ applications on Wayland.")
      ;; Optional: lcov and cccc, both are for code coverage
      (list doxygen))
     (inputs
-     (list qtbase-5 qtdeclarative qtscript))
+     (list qtbase-5 qtdeclarative-5 qtscript))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -574,14 +560,10 @@ developers using C++ or QML, a CSS & JavaScript like language.")
     (build-system cmake-build-system)
     (arguments
      (substitute-keyword-arguments (package-arguments qtbase-5)
-       ;; XXX: There are many test failures, because the test suite
-       ;; requires a real X server (a virtual one such as Xvfb is not
-       ;; enough) or a functional network.  It's also quite expensive to
-       ;; build and run.
-       ((#:tests? _ #f) #f)
        ((#:configure-flags _ ''())
         `(let ((out (assoc-ref %outputs "out")))
            (list "-GNinja"              ;the build fails otherwise
+                 "-DQT_BUILD_TESTS=ON"
                  (string-append "-DINSTALL_ARCHDATADIR=" out "/lib/qt6")
                  (string-append "-DINSTALL_DATADIR=" out "/share/qt6")
                  (string-append "-DINSTALL_DOCDIR=" out "/share/doc/qt6")
@@ -622,10 +604,34 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                  "-DFEATURE_mips_dspr2=OFF")))
        ((#:phases phases)
         #~(modify-phases #$phases
+            (add-after 'unpack 'honor-CMAKE_PREFIX_PATH
+              (lambda _
+                ;; The configuration files for other Qt packages are searched
+                ;; through a call to "find_package" in Qt5Config.cmake, which
+                ;; disables the use of CMAKE_PREFIX_PATH via the parameter
+                ;; "NO_DEFAULT_PATH".  Re-enable it so that the different
+                ;; components can be installed in different places.
+                (substitute* (find-files "." "\\.cmake(\\.in)?$")
+                  (("\\bNO_DEFAULT_PATH\\b") ""))
+                ;; Because Qt goes against the grain of CMake and set
+                ;; NO_DEFAULT_PATH, it needs to invent yet another variable
+                ;; to do what CMAKE_PREFIX_PATH could have done:
+                ;; QT_ADDITIONAL_PACKAGES_PREFIX_PATH.  Since we patch out
+                ;; the NO_DEFAULT_PATH, we can set the default value of
+                ;; QT_ADDITIONAL_PACKAGES_PREFIX_PATH to that of
+                ;; CMAKE_PREFIX_PATH to ensure tools such as
+                ;; 'qmlimportscanner' from qtdeclarative work out of the
+                ;; box.
+                (substitute* "cmake/QtConfig.cmake.in"
+                  (("(set\\(QT_ADDITIONAL_PACKAGES_PREFIX_PATH )\"\"" _ head)
+                   (string-append head "\"$ENV{CMAKE_PREFIX_PATH}\"")))))
             (delete 'patch-bin-sh)
             (delete 'patch-xdg-open)
             (add-after 'patch-paths 'patch-more-paths
               (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* (find-files "bin" "\\.in$")
+                  (("/bin/pwd")
+                   (search-input-file inputs "bin/pwd")))
                 (substitute* "src/gui/platform/unix/qgenericunixservices.cpp"
                   (("\"xdg-open\"")
                    (format #f "~s" (search-input-file inputs "bin/xdg-open"))))
@@ -644,6 +650,108 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                        (if parallel-build?
                            `("--parallel" ,(number->string (parallel-job-count)))
                            '()))))
+            (delete 'check)             ;move after patch-prl-files
+            (add-after 'patch-prl-files 'check
+              (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+                (when tests?
+                  ;; The tests expect to find the modules provided by this
+                  ;; package; extend the environment variables needed to do so.
+                  (setenv "CMAKE_PREFIX_PATH"
+                          (string-append #$output
+                                         ":" (getenv "CMAKE_PREFIX_PATH")))
+                  (setenv "QMAKEPATH" (string-append #$output "/lib/qt6"))
+                  (setenv "QML2_IMPORT_PATH"
+                          (string-append #$output "/lib/qt6/qml"))
+                  (setenv "QT_PLUGIN_PATH"
+                          (string-append #$output "/lib/qt6/plugins"))
+                  (setenv "QT_QPA_PLATFORM" "offscreen")
+                  ;; Skip tests known to fail on GNU/Linux, in a CI context or
+                  ;; due to bitness (see: https://code.qt.io/cgit/qt/qtbase.git
+                  ;; /tree/src/testlib/qtestblacklist.cpp).
+                  (setenv "QTEST_ENVIRONMENT" "linux ci 32bit")
+                  (setenv "HOME" "/tmp") ;some tests require a writable HOME
+                  (invoke
+                   "xvfb-run" "ctest" "--output-on-failure"
+                   "-j" (if parallel-tests?
+                            (number->string (parallel-job-count))
+                            "1")
+                   "-E"                 ;disable problematic tests
+                   (string-append
+                    "("
+                    (string-join
+                     (list
+                      ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
+                      "tst_moc"
+                      ;; The 'test_rcc' test fails on a comparison:
+                      ;; <<<<<< actual
+                      ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xe8,
+                      ;; ======
+                      ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+                      ;; >>>>>> expected
+                      "tst_rcc"
+                      ;; The 'tst_qtemporarydir' and 'tst_qtemporaryfile'
+                      ;; tests depend on '/home' not being writable.
+                      "tst_qtemporarydir"
+                      "tst_qtemporaryfile"
+                      ;; The 'tst_qdir' compares two directories which are
+                      ;; unexpectedly different when inside the build
+                      ;; container.
+                      "tst_qdir"
+                      ;; This checks the last modified time of '/', and fails
+                      ;; because Epoch 0 is considered to be invalid.
+                      "tst_qresourceengine"
+                      ;; The 'tst_qfilesystemwatcher' installs a watcher on
+                      ;; '/home', which doesn't exist in the build container.
+                      "tst_qfilesystemwatcher"
+                      ;; The 'mockplugins' test fail following error: "Unknown
+                      ;; platform linux-g++", and the other plugin tests
+                      ;; depend on it.
+                      "mockplugins"
+                      "test_plugin_flavor.*"
+                      ;; The 'test_import_plugins' fails with "Could NOT find
+                      ;; Qt6MockPlugins1".
+                      "test_import_plugins"
+                      ;; The 'tst_QTimeZone::systemZone' validates the
+                      ;; currently set timezone and fails.
+                      "tst_qtimezone"
+                      ;; The 'tst_qdatetime' fails with:
+                      ;; FAIL!  : tst_QDateTime::offsetFromUtc() Compared values are not the same
+                      ;; Actual   (dt5.offsetFromUtc()): 0
+                      ;; Expected (46800)              : 46800
+                      "tst_qdatetime"
+                      ;; The 'tst_QSettings::fromFile' assumes the data
+                      ;; location to be relative to the root directory and
+                      ;; fails.
+                      "tst_qsettings"
+                      ;; The 'tst_qaddpreroutine',
+                      ;; 'test_generating_cpp_exports' and
+                      ;; 'test_static_resources' tests fail with: "Unknown
+                      ;; platform linux-g++.
+                      "tst_qaddpreroutine"
+                      "test_generating_cpp_exports"
+                      "test_static_resources"
+                      ;; The 'tst_qfile' fails since there is no /home in the
+                      ;; build container.
+                      "tst_qfile"
+                      ;; The 'tst_QGlyphRun::mixedScripts' test fails with:
+                      ;; Actual   (glyphRuns.size()): 1
+                      ;; Expected (2)               : 2
+                      "tst_qglyphrun"
+                      ;; The 'tst_qx11info' test fails with "Internal error:
+                      ;; QPA plugin doesn't implement generatePeekerId",
+                      ;; likely requires a real display.
+                      "tst_qx11info"
+                      ;; The 'tst_qgraphicswidget' test fails because "This
+                      ;; plugin does not support propagateSizeHints".
+                      "tst_qgraphicswidget"
+                      ;; The 'tst_qdnslookup' test requires networking.
+                      "tst_qdnslookup"
+                      ;; The 'tst_qcompleter' and 'tst_QFiledialog::completer'
+                      ;; attempt to complete paths they assume exist, such as
+                      ;; "/home", "/etc" or "/root" and fail.
+                      "tst_qcompleter"
+                      "tst_qfiledialog") "|")
+                    ")")))))
             (replace 'install
               (lambda _
                 (invoke "cmake" "--install" ".")))
@@ -687,12 +795,12 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                     (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)))))))))
     (native-inputs
      (modify-inputs (package-native-inputs qtbase-5)
-       (prepend gtk                     ;for GTK theme support
-                ninja wayland-protocols)))
+       (prepend ninja
+                wayland-protocols
+                xvfb-run)))
     (inputs
      (modify-inputs (package-inputs qtbase-5)
-       (prepend bash-minimal libxcb md4c)
-       (replace "gtk+" gtk)                ;use latest gtk
+       (prepend bash-minimal coreutils-minimal libxcb md4c)
        (replace "postgresql" postgresql))) ;use latest postgresql
     (native-search-paths
      (list (search-path-specification
@@ -711,16 +819,46 @@ developers using C++ or QML, a CSS & JavaScript like language.")
             (variable "XDG_CONFIG_DIRS")
             (files '("etc/xdg")))))))
 
-(define-public qtsvg
-  (package (inherit qtbase-5)
+(define-public qt5compat
+  (package
+    (name "qt5compat")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "1zbcaswpl79ixcxzj85qzjq73962s4c7316pibwfrskqswmwcgm4"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'delete-installed-tests
+                     (lambda _
+                       (delete-file-recursively
+                        (string-append #$output "/tests")))))))
+    (native-inputs (list perl))
+    (inputs (list icu4c libxkbcommon qtbase qtdeclarative qtshadertools))
+    (home-page (package-home-page qtbase))
+    (synopsis "Legacy Qt 5 APIs ported to Qt 6")
+    (description "The @code{qt5compat} package includes application
+programming interfaces (APIs) from Qt 5 that were ported to Qt 6, to ease
+migration.  It provides for example the @code{GraphicalEffects} module that
+came with the @{qtgraphicaleffects} Qt 5 package.")
+    (license (list license:gpl2+ license:lgpl3+)))) ;dual licensed
+
+(define-public qtsvg-5
+  (package
+    (inherit qtbase-5)
     (name "qtsvg")
     (version "5.15.5")
     (source (origin
-             (method url-fetch)
-             (uri (qt5-urls name version))
-             (sha256
-              (base32
-               "0cdhmhxngv4y7kl5vbcii4l4anbz0hj7dvhlddy1agyl19j9xky4"))))
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "0cdhmhxngv4y7kl5vbcii4l4anbz0hj7dvhlddy1agyl19j9xky4"))))
     (propagated-inputs `())
     (native-inputs (list perl))
     (inputs
@@ -779,8 +917,39 @@ HostData=lib/qt5
     (description "The QtSvg module provides classes for displaying the
  contents of SVG files.")))
 
+(define-public qtsvg
+  (package
+    (name "qtsvg")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "1xvxz2jfpr1al85rhwss7ji5vkxa812d0b888hry5f7pwqcg86bv"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'set-display
+            (lambda _
+              ;; Make Qt render "offscreen", required for tests.
+              (setenv "QT_QPA_PLATFORM" "offscreen")))
+          (add-after 'install 'delete-installed-tests
+            (lambda _
+              (delete-file-recursively (string-append #$output "/tests")))))))
+    (native-inputs (list perl))
+    (inputs (list libxkbcommon mesa qtbase zlib))
+    (synopsis "Qt module for displaying SVGs")
+    (description "The QtSvg module provides classes for displaying the
+ contents of SVG files.")
+    (home-page (package-home-page qtbase))
+    (license (package-license qtbase))))
+
 (define-public qtimageformats
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtimageformats")
     (version "5.15.5")
     (source (origin
@@ -807,7 +976,7 @@ HostData=lib/qt5
 support for MNG, TGA, TIFF and WBMP image formats.")))
 
 (define-public qtx11extras
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtx11extras")
     (version "5.15.5")
     (source (origin
@@ -817,7 +986,7 @@ support for MNG, TGA, TIFF and WBMP image formats.")))
               (base32
                "0wxsrnnkkn68myy211rfz98brs7j3qmx3hmy097vh5avgsmw11bn"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (native-inputs (list perl))
     (inputs
@@ -827,7 +996,7 @@ support for MNG, TGA, TIFF and WBMP image formats.")))
 from within Qt 5.")))
 
 (define-public qtxmlpatterns
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtxmlpatterns")
     (version "5.15.5")
     (source (origin
@@ -837,7 +1006,7 @@ from within Qt 5.")))
               (base32
                "065vj1gk5i4cg0f9spksyb9ps4px0vssx262y77aakvw408vfmq5"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'disable-network-tests
@@ -847,15 +1016,15 @@ from within Qt 5.")))
            (add-after 'unpack 'skip-qquickxmllistmodel-test
              (lambda _ (substitute* "tests/auto/auto.pro"
                          ((".*qquickxmllistmodel.*") ""))))))))
-    (native-inputs (list perl qtdeclarative))
+    (native-inputs (list perl qtdeclarative-5))
     (inputs (list qtbase-5))
     (synopsis "Qt XML patterns module")
     (description "The QtXmlPatterns module is a XQuery and XPath engine for
 XML and custom data models.  It contains programs such as xmlpatterns and
 xmlpatternsvalidator.")))
 
-(define-public qtdeclarative
-  (package (inherit qtsvg)
+(define-public qtdeclarative-5
+  (package (inherit qtsvg-5)
     (name "qtdeclarative")
     (version "5.15.5")
     (source (origin
@@ -865,7 +1034,7 @@ xmlpatternsvalidator.")))
               (base32
                "0ji5131g7h2mrgxw1wxc5mcvmsn3fbw64j28gzpa25gv3vcnkhaw"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f)             ;TODO: Enable the tests
        ((#:phases phases)
         `(modify-phases ,phases
@@ -873,7 +1042,7 @@ xmlpatternsvalidator.")))
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
                  ;; The Qt5Core install prefix is set to qtbase, but qmlcachegen
-                 ;; is provided by qtdeclarative.
+                 ;; is provided by qtdeclarative-5.
                  (substitute*
                      "lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake"
                    (("\\$\\{_qt5Core_install_prefix\\}") out)))))))))
@@ -882,7 +1051,7 @@ xmlpatternsvalidator.")))
            pkg-config
            python
            python-wrapper
-           qtsvg
+           qtsvg-5
            vulkan-headers))
     (inputs
      (list mesa qtbase-5))
@@ -893,8 +1062,136 @@ language and engine infrastructure, and provides an API to enable application
 developers to extend the QML language with custom types and integrate QML code
 with JavaScript and C++.")))
 
+(define-public qtdeclarative
+  (package
+    (name "qtdeclarative")
+    (version "6.3.1")
+    ;; TODO: Package 'masm' and unbundle from sources.
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "1s268fha3650dn1lqxf8jfa07wxpw09f6p7rjyiwq3w24d0nkrq3"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-GNinja" ;about twice as fast!
+                                "-DQT_BUILD_TESTS=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'honor-cmake-install-rpath
+            ;; The build system goes out of its way to compute a runpath it
+            ;; thinks makes more sense, and fails.  Revert to the default
+            ;; behavior, which is to honor CMAKE_INSTALL_RPATH.
+            (lambda _
+              (substitute* "src/qml/Qt6QmlMacros.cmake"
+                (("set_target_properties.*PROPERTIES.*INSTALL_RPATH.*" all)
+                 (string-append "# " all)))))
+          (add-after 'unpack 'patch-qlibraryinfo-paths
+            (lambda _
+              ;; The QLibraryInfo paths are hard-coded to point to the qtbase
+              ;; installation, but all the tools used in the test suite come
+              ;; from this package.
+              (substitute* (find-files "tests" "\\.cpp$")
+                (("QLibraryInfo::path\\(QLibraryInfo::BinariesPath)")
+                 (string-append "QStringLiteral(\"" #$output "/bin\")"))
+                (("QLibraryInfo::path\\(QLibraryInfo::LibraryExecutablesPath)")
+                 (string-append "QStringLiteral(\"" #$output
+                                "/lib/qt6/libexec\")"))
+                (("QLibraryInfo::path\\(QLibraryInfo::QmlImportsPath)")
+                 (string-append "QStringLiteral(\"" #$output
+                                "/lib/qt6/qml\")")))))
+          (replace 'build
+            (lambda* (#:key parallel-build? #:allow-other-keys)
+              (apply invoke "cmake" "--build" "."
+                     (if parallel-build?
+                         `("--parallel" ,(number->string (parallel-job-count)))
+                         '()))))
+          (delete 'check)               ;move after the install phase
+          (replace 'install
+            (lambda _
+              (invoke "cmake" "--install" ".")))
+          (add-after 'install 'check
+            (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (when tests?
+                ;; The tests expect to find the modules provided by this
+                ;; package; extend the environment variables needed to do so.
+                                        ;(setenv "CMAKE_PREFIX_PATH" #$output)
+                (setenv "QML2_IMPORT_PATH"
+                        (string-append #$output "/lib/qt6/qml"))
+                (setenv "QT_PLUGIN_PATH"
+                        (string-append #$output "/lib/qt6/plugins:"
+                                       (getenv "QT_PLUGIN_PATH")))
+                (setenv "QT_QPA_PLATFORM" "offscreen")
+                ;; Skip tests known to fail on GNU/Linux, in a CI context or
+                ;; due to bitness (see: https://code.qt.io/cgit/qt/qtbase.git
+                ;; /tree/src/testlib/qtestblacklist.cpp).
+                (setenv "QTEST_ENVIRONMENT" "linux ci 32bit")
+                (setenv "HOME" "/tmp")  ;a few tests require a writable HOME
+                (invoke
+                 "ctest" "--output-on-failure"
+                 "-j" (if parallel-tests?
+                          (number->string (parallel-job-count))
+                          "1")
+                 "-E"                   ;exclude some tests by regex
+                 (string-append
+                  "("
+                  (string-join
+                   (list
+                    ;; This test is marked as flaky upstream (see:
+                    ;; https://bugreports.qt.io/browse/QTBUG-101488).
+                    "tst_qquickfiledialogimpl"
+                    ;; These tests all fail because 'test_overlappingHandles'
+                    ;; (see: https://bugreports.qt.io/browse/QTBUG-95750).
+                    "tst_basic"
+                    "tst_fusion"
+                    "tst_imagine"
+                    "tst_material"
+                    "tst_universal"
+                    ;; Fails due to using the wrong lib/qt6/qml prefix:
+                    ;; "Warning: Failed to find the following builtins:
+                    ;; builtins.qmltypes, jsroot.qmltypes (so will use
+                    ;; qrc). Import paths used:
+                    ;; /gnu/store/...-qtbase-6.3.1/lib/qt6/qml"
+                    "tst_qmltc_qprocess"
+                    ;; These test fail when running qmlimportscanner; perhaps
+                    ;; an extra CMAKE_PREFIX_PATH location is missing to
+                    ;; correctly locate the imports.
+                    "empty_qmldir"
+                    "qtquickcompiler"
+                    "cmake_tooling_imports"
+                    ;; This test seems to hangs for a long time, possibly
+                    ;; waiting for a killed process, which becomes a zombie in
+                    ;; the build container (perhaps solved after
+                    ;; fixing/applying #30948).
+                    "tst_qqmlpreview") "|")
+                  ")")))))
+          (add-after 'install 'delete-installed-tests
+            (lambda _
+              (delete-file-recursively (string-append #$output "/tests")))))))
+    (native-inputs
+     (list ninja
+           perl
+           pkg-config
+           python
+           qtshadertools
+           vulkan-headers))
+    (inputs
+     (list libxkbcommon
+           mesa
+           qtbase))
+    (home-page (package-home-page qtbase))
+    (synopsis "Qt QML module (Quick 2)")
+    (description "The Qt QML module provides a framework for developing
+applications and libraries with the QML language.  It defines and implements
+the language and engine infrastructure, and provides an API to enable
+application developers to extend the QML language with custom types and
+integrate QML code with JavaScript and C++.")
+    (license (package-license qtbase))))
+
 (define-public qtconnectivity
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtconnectivity")
     (version "5.15.5")
     (source (origin
@@ -904,15 +1201,15 @@ with JavaScript and C++.")))
               (base32
                "0b2dnxw1rjbp1srhgns148cwl99f50mx29588dal3avv0f73s597"))))
     (native-inputs
-     (list perl pkg-config qtdeclarative))
+     (list perl pkg-config qtdeclarative-5))
     (inputs
      (list bluez qtbase-5))
     (synopsis "Qt Connectivity module")
     (description "The Qt Connectivity modules provides modules for interacting
 with Bluetooth and NFC.")))
 
-(define-public qtwebsockets
-  (package (inherit qtsvg)
+(define-public qtwebsockets-5
+  (package (inherit qtsvg-5)
     (name "qtwebsockets")
     (version "5.15.5")
     (source (origin
@@ -922,10 +1219,10 @@ with Bluetooth and NFC.")))
               (base32
                "0f120rfqnmlffjhrm5jbpipk1qsbzp1a2v3q8gz94hz6n9dqpav6"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (native-inputs
-     (list perl qtdeclarative))
+     (list perl qtdeclarative-5))
     (inputs (list qtbase-5))
     (synopsis "Qt Web Sockets module")
     (description "WebSocket is a web-based protocol designed to enable two-way
@@ -934,8 +1231,47 @@ WebSockets module provides C++ and QML interfaces that enable Qt applications
 to act as a server that can process WebSocket requests, or a client that can
 consume data received from the server, or both.")))
 
+(define-public qtwebsockets
+  (package
+    (name "qtwebsockets")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "06hj0pkdzjicmbiinjp1dk1ziz8cb3fgcwy7a0dxxjvzr680v64z"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'check)      ;move after install
+                   (add-after 'install 'prepare-for-tests
+                     (lambda _
+                       (setenv "QT_QPA_PLATFORM" "offscreen")
+                       (setenv "QML2_IMPORT_PATH"
+                               (string-append #$output "/lib/qt6/qml:"
+                                              (getenv "QML2_IMPORT_PATH")))))
+                   (add-after 'prepare-for-tests 'check
+                     (assoc-ref %standard-phases 'check))
+                   (add-after 'check 'delete-installed-tests
+                     (lambda _
+                       (delete-file-recursively
+                        (string-append #$output "/tests")))))))
+    (native-inputs (list perl))
+    (inputs (list qtbase qtdeclarative))
+    (synopsis "Qt Web Sockets module")
+    (description "WebSocket is a web-based protocol designed to enable two-way
+communication between a client application and a remote host.  The Qt
+WebSockets module provides C++ and QML interfaces that enable Qt applications
+to act as a server that can process WebSocket requests, or a client that can
+consume data received from the server, or both.")
+    (home-page (package-home-page qtbase))
+    (license (package-license qtbase))))
+
 (define-public qtsensors
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtsensors")
     (version "5.15.5")
     (source (origin
@@ -945,7 +1281,7 @@ consume data received from the server, or both.")))
               (base32
                "0zlhm4js02niibb23rw87wf4ik0gy4ai08fwprnwy7zf4rm1ss3d"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:parallel-tests? _ #f) #f) ; can lead to race condition
        ((#:phases phases)
         `(modify-phases ,phases
@@ -955,15 +1291,16 @@ consume data received from the server, or both.")))
                  (("2000") "5000")                                      ;lengthen test timeout
                  (("QTest::newRow(\"twist\") << \"twist\"") ""))))))))  ;failing test
     (native-inputs
-     (list perl qtdeclarative))
+     (list perl qtdeclarative-5))
     (inputs (list qtbase-5))
     (synopsis "Qt Sensors module")
     (description "The Qt Sensors API provides access to sensor hardware via QML
 and C++ interfaces.  The Qt Sensors API also provides a motion gesture
 recognition API for devices.")))
 
-(define-public qtmultimedia
-  (package (inherit qtsvg)
+(define-public qtmultimedia-5
+  (package
+    (inherit qtsvg-5)
     (name "qtmultimedia")
     (version "5.15.5")
     (source (origin
@@ -981,7 +1318,7 @@ recognition API for devices.")))
                  (substitute* "examples/multimedia/multimedia.pro"
                    (("spectrum") "#"))))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (replace 'configure
@@ -992,7 +1329,7 @@ recognition API for devices.")))
                          (string-append "PREFIX=" out)))))))
        ((#:tests? _ #f) #f)))           ; TODO: Enable the tests
     (native-inputs
-     (list perl pkg-config python qtdeclarative))
+     (list perl pkg-config python qtdeclarative-5))
     (inputs
      (list alsa-lib
            mesa
@@ -1006,18 +1343,113 @@ recognition API for devices.")))
 record media, and manage a collection of media content.  It also contains a
 set of plugins for interacting with pulseaudio and GStreamer.")))
 
+(define-public qtshadertools
+  (package
+    (name "qtshadertools")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              ;; Note: the source bundles *patched* glslang and SPIRV-Cross
+              ;; sources.
+              (sha256
+               (base32
+                "0nj35s2z5n438q7nqf6bnj3slwz2am3169ck1ixwqa0mjrv73dsr"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-before 'check 'prepare-for-tests
+                     (lambda _
+                       (setenv "QT_QPA_PLATFORM" "offscreen"))))))
+    (native-inputs (list perl))
+    (inputs (list glslang libxkbcommon qtbase))
+    (home-page (package-home-page qtbase))
+    (synopsis "Shader pipeline API and and tools for Qt")
+    (description "The @code{qtshadertools} module provides APIs and tools
+supporting shader pipeline functionality as offered in Qt Quick to operate on
+Vulkan, OpenGL and other main graphic APIs.")
+    (license (package-home-page qtbase))))
+
+(define-public qtmultimedia
+  (package
+    (name "qtmultimedia")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "0dkk3lmzi2fs13cnj8q1lpcs6gghj219826gkwnzyd6nmlm280vy"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively
+                   "examples/multimedia/spectrum/3rdparty")
+                  ;; We also prevent the spectrum example from being built.
+                  (substitute* "examples/multimedia/multimedia.pro"
+                    (("spectrum") "#"))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON"
+                                "-DQT_FEATURE_pulseaudio=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-integration-tests
+            (lambda _
+              ;; XXX: The tst_qaudiodecoderbackend, tst_qaudiodevice,
+              ;; tst_qaudiosource, tst_qmediaplayerbackend and
+              ;; tst_qcamerabackend tests fail, presumably because they
+              ;; require a functional pulseaudio daemon (which requires a dbus
+              ;; session bus, which requires an X11 server, and then is still
+              ;; unhappy).
+              (substitute* "tests/auto/CMakeLists.txt"
+                (("add_subdirectory\\(integration)") ""))))
+          (add-before 'check 'prepare-for-tests
+            (lambda _
+              (setenv "QT_QPA_PLATFORM" "offscreen")))
+          (add-after 'install 'delete-installed-tests
+            (lambda _
+              (delete-file-recursively (string-append #$output "/tests")))))))
+    (native-inputs
+     (list perl
+           pkg-config
+           qtshadertools
+           vulkan-headers))
+    (inputs
+     (list alsa-lib
+           glib
+           gstreamer
+           gst-plugins-base             ;gstreamer-gl
+           gst-plugins-good             ;camera support, additional plugins
+           gst-libav                    ;ffmpeg plugin
+           libxkbcommon
+           mesa
+           qtbase
+           qtdeclarative
+           pulseaudio))
+    (home-page (package-home-page qtbase))
+    (synopsis "Qt Multimedia module")
+    (description "The Qt Multimedia module provides set of APIs to play and
+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
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtwayland")
     (version "5.15.5")
     (source (origin
              (method url-fetch)
              (uri (qt5-urls name version))
+             (patches (search-patches "qtwayland-gcc-11.patch"))
              (sha256
               (base32
                "0yy8qf9kn15iqsxi2r7jbcsc0vsdyfz7bbxmfn4i9qmz1yvg0jgr"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'disable-failing-tests
@@ -1035,26 +1467,26 @@ set of plugins for interacting with pulseaudio and GStreamer.")))
                ;; Do not fail just because /etc/machine-id is missing.
                (setenv "DBUS_FATAL_WARNINGS" "0")))))))
     (native-inputs
-     (list glib perl pkg-config qtdeclarative))
+     (list glib perl pkg-config qtdeclarative-5))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("libx11" ,libx11)
-       ("libxcomposite" ,libxcomposite)
-       ("libxext" ,libxext)
-       ("libxkbcommon" ,libxkbcommon)
-       ("libxrender" ,libxrender)
-       ("mesa" ,mesa)
-       ("mtdev" ,mtdev)
-       ("qtbase" ,qtbase-5)
-       ("vulkan-headers" ,vulkan-headers)
-       ("wayland" ,wayland)))
+     (list fontconfig
+           freetype
+           libx11
+           libxcomposite
+           libxext
+           libxkbcommon
+           libxrender
+           mesa
+           mtdev
+           qtbase-5
+           vulkan-headers
+           wayland))
     (synopsis "Qt Wayland module")
     (description "The Qt Wayland module provides the QtWayland client and
 compositor libraries.")))
 
 (define-public qtserialport
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtserialport")
     (version "5.15.5")
     (source (origin
@@ -1067,7 +1499,7 @@ compositor libraries.")))
     (inputs
      (list qtbase-5 eudev))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'patch-dlopen-paths
@@ -1083,7 +1515,7 @@ compositor libraries.")))
 interacting with serial ports from within Qt.")))
 
 (define-public qtserialbus
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtserialbus")
     (version "5.15.5")
     (source (origin
@@ -1093,7 +1525,7 @@ interacting with serial ports from within Qt.")))
               (base32
                "180gm1jvqfn0h3251zafdd1wd3af00phwaa5qljsbrj6s6ywj79j"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
            (add-after 'unpack 'patch-libsocketcan-reference
@@ -1111,8 +1543,8 @@ interacting with serial ports from within Qt.")))
 access the various industrial serial buses and protocols, such as CAN, ModBus,
 and others.")))
 
-(define-public qtwebchannel
-  (package (inherit qtsvg)
+(define-public qtwebchannel-5
+  (package (inherit qtsvg-5)
     (name "qtwebchannel")
     (version "5.15.5")
     (source (origin
@@ -1122,7 +1554,7 @@ and others.")))
               (base32
                "1w8mcpdqlphgg3a6yfq18liwlj2nkwrafv0n80h242x5l2mk3ljf"))))
     (native-inputs
-     (list perl qtdeclarative qtwebsockets))
+     (list perl qtdeclarative-5 qtwebsockets-5))
     (inputs (list qtbase-5))
     (synopsis "Web communication library for Qt")
     (description "The Qt WebChannel module enables peer-to-peer communication
@@ -1130,8 +1562,45 @@ between the host (QML/C++ application) and the client (HTML/JavaScript
 application).  The transport mechanism is supported out of the box by the two
 popular web engines, Qt WebKit 2 and Qt WebEngine.")))
 
+(define-public qtwebchannel
+  (package
+    (name "qtwebchannel")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "0s16zx3qn3byldvhmsnwijm8rmizk8vpqj7fnwhjg6c67z10m8ma"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'check)      ;move after install
+                   (add-after 'install 'prepare-for-tests
+                     (lambda _
+                       (setenv "QT_QPA_PLATFORM" "offscreen")
+                       (setenv "QML2_IMPORT_PATH"
+                               (string-append #$output "/lib/qt6/qml:"
+                                              (getenv "QML2_IMPORT_PATH")))))
+                   (add-after 'prepare-for-tests 'check
+                     (assoc-ref %standard-phases 'check))
+                   (add-after 'check 'delete-installed-tests
+                     (lambda _
+                       (delete-file-recursively
+                        (string-append #$output "/tests")))))))
+    (native-inputs (list perl))
+    (inputs (list qtbase qtdeclarative qtwebsockets))
+    (home-page (package-home-page qtbase))
+    (synopsis "Web communication library for Qt")
+    (description "The Qt WebChannel module enables peer-to-peer communication
+between the host (QML/C++ application) and the client (HTML/JavaScript
+application).")
+    (license (package-license qtbase))))
+
 (define-public qtwebglplugin
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtwebglplugin")
     (version "5.15.5")
     (source (origin
@@ -1141,7 +1610,7 @@ popular web engines, Qt WebKit 2 and Qt WebEngine.")))
               (base32
                "1m0p4ssykw07lbip2qyv6w34f8ng13bxb63j0w446f5w0492nn9f"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'disable-network-tests
@@ -1149,7 +1618,7 @@ popular web engines, Qt WebKit 2 and Qt WebEngine.")))
                          (("webgl") "# webgl"))))))))
     (native-inputs '())
     (inputs
-     (list mesa qtbase-5 qtdeclarative qtwebsockets zlib))
+     (list mesa qtbase-5 qtdeclarative-5 qtwebsockets-5 zlib))
     (synopsis "QPA plugin for running an application via a browser using
 streamed WebGL commands")
     (description "Qt back end that uses WebGL for rendering. It allows Qt
@@ -1159,7 +1628,7 @@ compatible web browser without the use of plug-ins.  The API is similar to
 OpenGL ES 2.0 and can be used in HTML5 canvas elements")))
 
 (define-public qtwebview
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtwebview")
     (version "5.15.5")
     (source (origin
@@ -1171,14 +1640,14 @@ OpenGL ES 2.0 and can be used in HTML5 canvas elements")))
     (native-inputs
      (list perl))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Display web content in a QML application")
     (description "Qt WebView provides a way to display web content in a QML
 application without necessarily including a full web browser stack by using
 native APIs where it makes sense.")))
 
 (define-public qtlocation
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtlocation")
     (version "5.15.5")
     (source (origin
@@ -1188,7 +1657,7 @@ native APIs where it makes sense.")))
               (base32
                "0mlhhhcxx3gpr9kh04c6fljxcj50c2j21r0wb9f7d7nk4flip7b2"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f)   ; TODO: Enable the tests
        ((#:phases phases)
         `(modify-phases ,phases
@@ -1196,15 +1665,47 @@ native APIs where it makes sense.")))
              (lambda _
                (setenv "HOME" "/tmp")))))))
     (native-inputs
-     (list perl qtdeclarative qtquickcontrols qtserialport))
+     (list perl qtdeclarative-5 qtquickcontrols-5 qtserialport))
     (inputs
      (list icu4c openssl qtbase-5 zlib))
     (synopsis "Qt Location and Positioning modules")
     (description "The Qt Location module provides an interface for location,
 positioning and geolocation plugins.")))
 
-(define-public qttools
-  (package (inherit qtsvg)
+(define-public qtlottie
+  (package
+    (name "qtlottie")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "1x8wmc6gwmxk92zjcsrbhrbqbfvnk7302ggghld5wk8jk5lsf2vl"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'check)               ;move after install
+          (add-after 'install 'prepare-for-tests
+            (lambda _
+              (setenv "QT_QPA_PLATFORM" "offscreen")
+              (setenv "QML2_IMPORT_PATH"
+                      (string-append #$output "/lib/qt6/qml:"
+                                     (getenv "QML2_IMPORT_PATH"))))))))
+    (native-inputs (list perl))
+    (inputs (list libxkbcommon qtbase qtdeclarative))
+    (home-page (package-home-page qtbase))
+    (synopsis "QML API for rendering Bodymovin graphics and animations")
+    (description "Qt Lottie Animation provides a QML API for rendering
+graphics and animations that are exported in JSON format by the Bodymovin
+plugin for Adobe After Effects.")
+    (license (package-license qtbase))))
+
+(define-public qttools-5
+  (package (inherit qtsvg-5)
     (name "qttools")
     (version "5.15.5")
     (source (origin
@@ -1214,10 +1715,10 @@ positioning and geolocation plugins.")))
               (base32
                "0v7wkzq9i8w3qrw0z8al7lb6clr57lfisyb1fm9cnhi73fvph1vd"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (native-inputs
-     (list perl qtdeclarative vulkan-headers))
+     (list perl qtdeclarative-5 vulkan-headers))
     (inputs
      (list mesa qtbase-5))
     (synopsis "Qt Tools and Designer modules")
@@ -1225,8 +1726,35 @@ positioning and geolocation plugins.")))
 the documentation, translate applications, generate help files and other stuff
 that helps in Qt development.")))
 
+(define-public qttools
+  (package
+    (name "qttools")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "1h96w4bzkbd80vr7lh6hnypdlmbzc1y52c2zrqzvkgm3587pa4n4"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      ;; The build system attempts to fetch online resources and fails when
+      ;; building the test suite.
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=OFF")))
+    (native-inputs (list perl qtdeclarative vulkan-headers))
+    (inputs (list 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
+the documentation, translate applications, generate help files and other stuff
+that helps in Qt development.")
+    ;; 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)
+  (package (inherit qtsvg-5)
     (name "qtscript")
     (version "5.15.5")
     (source (origin
@@ -1237,7 +1765,7 @@ that helps in Qt development.")))
                "17yk0p8ci47xlfpllc17arlycng47wrnnskimskzz85bspabc8pm"))
              (patches (search-patches "qtscript-disable-tests.patch"))))
     (native-inputs
-     (list perl qttools))
+     (list perl qttools-5))
     (inputs
      (list qtbase-5))
     (synopsis "Qt Script module")
@@ -1245,8 +1773,8 @@ that helps in Qt development.")))
 The following guides and references cover aspects of programming with
 ECMAScript and Qt.")))
 
-(define-public qtquickcontrols
-  (package (inherit qtsvg)
+(define-public qtquickcontrols-5
+  (package (inherit qtsvg-5)
     (name "qtquickcontrols")
     (version "5.15.5")
     (source (origin
@@ -1256,17 +1784,17 @@ ECMAScript and Qt.")))
               (base32
                "0mjw25wcgd2bvjz9rr4qjydb423c63615rcx1vws4jmydqdihssr"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Quick Controls and other Quick modules")
     (description "The QtScript module provides classes for making Qt
 applications scriptable.  This module provides a set of extra components that
 can be used to build complete interfaces in Qt Quick.")))
 
-(define-public qtquickcontrols2
-  (package (inherit qtsvg)
+(define-public qtquickcontrols2-5
+  (package (inherit qtsvg-5)
     (name "qtquickcontrols2")
     (version "5.15.5")
     (source (origin
@@ -1276,18 +1804,24 @@ can be used to build complete interfaces in Qt Quick.")))
               (base32
                "1cxg4ml07k1zcyi5m4lx06sz8f5l67isb5vhk7nakxm0wnn7p8y4"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Quick Controls 2 and other Quick 2 modules")
     (description "The Qt Quick Controls 2 module contains the Qt Labs Platform
 module that provides platform integration: native dialogs, menus and menu bars,
 and tray icons.  It falls back to Qt Widgets when a native implementation is
 not available.")))
 
+(define-public qtquickcontrols2
+  ;; qtquickcontrols2 still exist, but was merged into qtdeclarative.
+  ;; Unfortunately that hasn't been well communicated at all (see:
+  ;; https://bugreports.qt.io/browse/QTBUG-79454).
+  (deprecated-package "qtquickcontrols2" qtdeclarative))
+
 (define-public qtgraphicaleffects
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtgraphicaleffects")
     (version "5.15.5")
     (source (origin
@@ -1297,10 +1831,10 @@ not available.")))
               (base32
                "0xznn5zqp6xrqfgl54l8cig9asqf9m2hz0p3ga514rh8spmdazr3"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Graphical Effects module")
     (description "The Qt Graphical Effects module provides a set of QML types
 for adding visually impressive and configurable effects to user interfaces.
@@ -1310,7 +1844,7 @@ types.  The effects cover functional areas such as blending, masking, blurring,
 coloring, and many more.")))
 
 (define-public qtgamepad
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtgamepad")
     (version "5.15.5")
     (source (origin
@@ -1327,7 +1861,7 @@ coloring, and many more.")))
        ("libxrender" ,libxrender)
        ("sdl2" ,sdl2)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)))
+       ("qtdeclarative-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
@@ -1336,7 +1870,7 @@ primary target audience are embedded devices with fullscreen user interfaces,
 and mobile applications targeting TV-like form factors.")))
 
 (define-public qtscxml
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtscxml")
     (version "5.15.5")
     (source (origin
@@ -1356,7 +1890,7 @@ and mobile applications targeting TV-like form factors.")))
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt SCXML module")
     (description "The Qt SCXML module provides functionality to create state
 machines from SCXML files.  This includes both dynamically creating state
@@ -1364,8 +1898,38 @@ machines (loading the SCXML file and instantiating states and transitions) and
 generating a C++ file that has a class implementing the state machine.  It
 also contains functionality to support data models and executable content.")))
 
+(define-public qtpositioning
+  (package
+    (name "qtpositioning")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "0v78wamvdw02kf9rq7m5v24q2g6jmgq4ch0fnfa014p1r978wy06"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'delete-installed-tests
+                     (lambda _
+                       (delete-file-recursively
+                        (string-append #$output "/tests")))))))
+    (inputs (list perl qtbase))
+    (home-page (package-home-page qtbase))
+    (synopsis "QML and C++ positioning information API")
+    (description "The Qt Positioning API provides positioning information via
+QML and C++ interfaces.  The Qt Positioning API lets you to determine a
+position by using a variety of possible sources, including satellite, wifi, or
+text files.  That information can then be used to, for example, determine a
+position on a map.  In addition, you can use to the API to retrieve satellite
+information and perform area based monitoring.")
+    (license (package-license qtbase))))
+
 (define-public qtpurchasing
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtpurchasing")
     (version "5.15.5")
     (source (origin
@@ -1375,13 +1939,13 @@ also contains functionality to support data models and executable content.")))
               (base32
                "04z6mwzn73gg56hgs7gividinfgndx4kmcnp7w6h3wamrdlkfdx7"))))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Purchasing module")
     (description "The Qt Purchasing module provides and in-app API for
 purchasing goods and services.")))
 
 (define-public qtcharts
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtcharts")
     (version "5.15.5")
     (source (origin
@@ -1391,7 +1955,7 @@ purchasing goods and services.")))
               (base32
                "0y051i1837bfybkf8cm7cx8k5wjmbi47pxawaaz6wm0hd2z5b4qi"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'remove-failing-test
@@ -1400,7 +1964,7 @@ purchasing goods and services.")))
                  (("qml") "# qml")
                  (("qml-qtquicktest") "# qml-qtquicktest"))))))))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Charts module")
     (description "The Qt Charts module provides a set of easy to use chart
 components.  It uses the Qt Graphics View Framework, therefore charts can be
@@ -1410,7 +1974,7 @@ selecting one of the charts themes.")
     (license license:gpl3)))
 
 (define-public qtdatavis3d
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtdatavis3d")
     (version "5.15.5")
     (source (origin
@@ -1420,10 +1984,10 @@ selecting one of the charts themes.")
               (base32
                "0sczwqlc36jdywf7bqxz0hm6mr7fn8p1fsnc33jliiqzn9yrg77x"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Data Visualization module")
     (description "The Qt Data Visualization module provides a way to visualize
 data in 3D as bar, scatter, and surface graphs. It is especially useful for
@@ -1432,8 +1996,8 @@ data received from multiple sensors. The look and feel of graphs can be
 customized by using themes or by adding custom items and labels to them.")
     (license license:gpl3)))
 
-(define-public qtnetworkauth
-  (package (inherit qtsvg)
+(define-public qtnetworkauth-5
+  (package (inherit qtsvg-5)
     (name "qtnetworkauth")
     (version "5.15.5")
     (source (origin
@@ -1448,8 +2012,28 @@ customized by using themes or by adding custom items and labels to them.")
     (description "The Qt Network Authorization module provides an
 implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
 
+(define-public qtnetworkauth
+  (package
+    (name "qtnetworkauth")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (qt5-urls name version))
+              (sha256
+               (base32
+                "0apvsb2ip1m3kw8vi9spvf6f6q72ys8vr40rpyysi7shsjwm83yn"))))
+    (build-system cmake-build-system)
+    (arguments (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")))
+    (native-inputs (list perl))
+    (inputs (list qtbase))
+    (home-page (package-home-page qtbase))
+    (synopsis "Qt Network Authorization module")
+    (description "The Qt Network Authorization module provides an
+implementation of OAuth and OAuth2 authenticathon methods for Qt.")
+    (license (package-license qtbase))))
+
 (define-public qtremoteobjects
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtremoteobjects")
     (version "5.15.5")
     (source (origin
@@ -1459,7 +2043,7 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
               (base32
                "1m0xcqlbxsfn0cd4ajin1h3i4l51dajmkw91v0r4a61xi14i0kks"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'remove-failing-test
@@ -1473,7 +2057,7 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
                  (("integration_multiprocess proxy_multiprocess integration_external restart")
                    "integration_multiprocess"))))))))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Qt Remote Objects module")
     (description "The Qt Remote Objects module is an @dfn{inter-process
 communication} (IPC) module developed for Qt.  The idea is to extend existing
@@ -1481,7 +2065,7 @@ Qt's functionalities to enable an easy exchange of information between
 processes or computers.")))
 
 (define-public qtspeech
-  (package (inherit qtsvg)
+  (package (inherit qtsvg-5)
     (name "qtspeech")
     (version "5.15.5")
     (source (origin
@@ -1491,12 +2075,12 @@ processes or computers.")))
               (base32
                "0xskp9dzjy5nqszygk8gwvjyiylgynx5sq3nk2vi3zwgfdh5jpm4"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
      (list qtbase-5))
     (native-inputs
-     (list perl qtdeclarative qtmultimedia qtxmlpatterns))
+     (list perl qtdeclarative-5 qtmultimedia-5 qtxmlpatterns))
     (synopsis "Qt Speech module")
     (description "The Qt Speech module enables a Qt application to support
 accessibility features such as text-to-speech, which is useful for end-users
@@ -1523,7 +2107,7 @@ message.")))
     (arguments
      `(#:tests? #f))                    ;no test
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list enchant qtbase-5))
     (home-page "https://github.com/manisandro/qtspell")
@@ -1534,9 +2118,9 @@ using the Enchant spell-checking library.")
     ;; COPYING file specify GPL3, but source code files all refer to GPL2+.
     (license license:gpl2+)))
 
-(define-public qtwebengine
+(define-public qtwebengine-5
   (package
-    (inherit qtsvg)
+    (inherit qtsvg-5)
     (name "qtwebengine")
     (version "5.15.5")
     (source
@@ -1738,7 +2322,7 @@ using the Enchant spell-checking library.")
                  (_ #t)))
 
              (with-directory-excursion "src/3rdparty"
-               ;; TODO: Try removing "gn" too for future versions of qtwebengine.
+               ;; TODO: Try removing "gn" too for future versions of qtwebengine-5.
                (delete-file-recursively "ninja")
 
                (with-directory-excursion "chromium"
@@ -1834,9 +2418,9 @@ using the Enchant spell-checking library.")
            protobuf
            pulseaudio
            qtbase-5
-           qtdeclarative
-           qtmultimedia
-           qtwebchannel
+           qtdeclarative-5
+           qtmultimedia-5
+           qtwebchannel-5
            re2
            snappy
            eudev
@@ -1844,7 +2428,7 @@ using the Enchant spell-checking library.")
            vulkan-headers
            xcb-util))
     (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
+     (substitute-keyword-arguments (package-arguments qtsvg-5)
        ((#:modules modules '())
         `((guix build gnu-build-system)
           (guix build utils)
@@ -1861,7 +2445,7 @@ using the Enchant spell-checking library.")
                     (display "\ngn_args += use_system_openh264=true\n" out)))
                  ;; Qtwebengine is not installed into the same prefix as
                  ;; qtbase.  Some qtbase QTLibraryInfo constants will not
-                 ;; work.  Replace with the full path to the qtwebengine
+                 ;; work.  Replace with the full path to the qtwebengine-5
                  ;; translations and locales in the store.
                  (substitute* "src/core/web_engine_library_info.cpp"
                    (("QLibraryInfo::location\\(QLibraryInfo::TranslationsPath\\)")
@@ -1891,7 +2475,7 @@ using the Enchant spell-checking library.")
                (invoke "qmake" "QT_BUILD_PARTS = libs tools" "--"
                        "--webengine-printing-and-pdf=no"
                        "--webengine-ffmpeg=system"
-                       ;; FIXME: Building qtwebengine 5.12.2 with
+                       ;; FIXME: Building qtwebengine-5 5.12.2 with
                        ;; icu4c >= 68 fails.
                        ;;"--webengine-icu=system"
                        "--webengine-pepper-plugins=no"
@@ -1913,6 +2497,349 @@ using the Chromium browser project.  The Chromium source code has Google service
 and binaries removed, and adds modular support for using system libraries.")
     (license license:lgpl2.1+)))
 
+(define-public qtwebengine
+  (package
+    (name "qtwebengine")
+    (version "6.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (qt5-urls name version))
+       (sha256
+        (base32
+         "0ivfsqd5c0cxsnssj6z37901cf6a47w50zaqgjiysvcm3ar36ymd"))
+       (modules '((ice-9 ftw)
+                  (ice-9 match)
+                  (srfi srfi-1)
+                  (srfi srfi-26)
+                  (guix build utils)))
+       (snippet
+        '(begin
+           (let ((preserved-third-party-files
+                  '("base/third_party/double_conversion"
+                    "base/third_party/cityhash"
+                    "base/third_party/cityhash_v103"
+                    "base/third_party/dynamic_annotations"
+                    "base/third_party/icu"
+                    "base/third_party/libevent"
+                    "base/third_party/nspr"
+                    "base/third_party/superfasthash"
+                    "base/third_party/symbolize"
+                    "base/third_party/xdg_mime"
+                    "base/third_party/xdg_user_dirs"
+                    "net/third_party/mozilla_security_manager"
+                    "net/third_party/nss"
+                    "net/third_party/quiche"
+                    "net/third_party/uri_template"
+                    "third_party/abseil-cpp"
+                    "third_party/angle"
+                    "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/axe-core"
+                    "third_party/blink"
+                    "third_party/boringssl"
+                    "third_party/boringssl/src/third_party/fiat"
+                    "third_party/breakpad"
+                    "third_party/brotli"
+                    "third_party/ced"
+                    "third_party/cld_3"
+                    "third_party/closure_compiler"
+                    "third_party/crashpad"
+                    "third_party/crashpad/crashpad/third_party/lss"
+                    "third_party/crashpad/crashpad/third_party/zlib"
+                    "third_party/crc32c"
+                    "third_party/dav1d"
+                    "third_party/dawn"
+                    "third_party/devtools-frontend"
+                    "third_party/devtools-frontend/src/front_end/third_party/lighthouse"
+                    "third_party/devtools-frontend/src/front_end/third_party/wasmparser"
+                    "third_party/emoji-segmenter"
+                    "third_party/ffmpeg"
+                    "third_party/googletest"
+                    "third_party/harfbuzz-ng/utils"
+                    "third_party/hunspell"
+                    "third_party/iccjpeg"
+                    "third_party/icu"
+                    "third_party/inspector_protocol"
+                    "third_party/jinja2"
+                    "third_party/jsoncpp"
+                    "third_party/jstemplate"
+                    "third_party/khronos"
+                    "third_party/leveldatabase"
+                    "third_party/libaddressinput"
+                    "third_party/libgifcodec"
+                    "third_party/libjingle_xmpp"
+                    "third_party/libjpeg_turbo"
+                    "third_party/libpng"
+                    "third_party/libsrtp"
+                    "third_party/libsync"
+                    "third_party/libudev"
+                    "third_party/libvpx"
+                    "third_party/libwebm"
+                    "third_party/libwebp"
+                    "third_party/libxml"
+                    "third_party/libxslt"
+                    "third_party/libyuv"
+                    "third_party/lss"
+                    "third_party/mako"
+                    "third_party/markupsafe"
+                    "third_party/mesa_headers"
+                    "third_party/metrics_proto"
+                    "third_party/modp_b64"
+                    "third_party/nasm"
+                    "third_party/one_euro_filter"
+                    "third_party/openh264/src/codec/api/svc"
+                    "third_party/opus"
+                    "third_party/ots"
+                    "third_party/pdfium"
+                    "third_party/pdfium/third_party/agg23"
+                    "third_party/pdfium/third_party/base"
+                    "third_party/pdfium/third_party/freetype"
+                    "third_party/pdfium/third_party/lcms"
+                    "third_party/pdfium/third_party/libopenjpeg20"
+                    "third_party/pdfium/third_party/skia_shared"
+                    "third_party/perfetto"
+                    "third_party/pffft"
+                    "third_party/ply"
+                    "third_party/polymer"
+                    "third_party/protobuf"
+                    "third_party/protobuf/third_party/six"
+                    "third_party/pyjson5"
+                    "third_party/re2"
+                    "third_party/rnnoise"
+                    "third_party/skia"
+                    "third_party/skia/include/third_party/skcms/skcms.h"
+                    "third_party/skia/include/third_party/vulkan"
+                    "third_party/skia/third_party/skcms"
+                    "third_party/skia/third_party/vulkanmemoryallocator"
+                    "third_party/smhasher"
+                    "third_party/snappy"
+                    "third_party/sqlite"
+                    "third_party/usb_ids"
+                    "third_party/usrsctp"
+                    "third_party/web-animations-js"
+                    "third_party/webrtc"
+                    "third_party/webrtc/common_audio/third_party/ooura"
+                    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor"
+                    "third_party/webrtc/modules/third_party/fft"
+                    "third_party/webrtc/modules/third_party/g711"
+                    "third_party/webrtc/modules/third_party/g722"
+                    "third_party/webrtc/rtc_base/third_party/base64"
+                    "third_party/webrtc/rtc_base/third_party/sigslot"
+                    "third_party/webrtc_overrides"
+                    "third_party/widevine/cdm/widevine_cdm_common.h"
+                    "third_party/widevine/cdm/widevine_cdm_version.h"
+                    "third_party/woff2"
+                    "third_party/zlib"
+                    "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)))
+
+             (with-directory-excursion "src/3rdparty"
+               (delete-file-recursively "ninja")
+
+               (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)
+
+                 ;; Use relative header locations instead of hard coded ones.
+                 (substitute*
+                     "base/third_party/dynamic_annotations/dynamic_annotations.c"
+                   (("base/third_party/valgrind") "valgrind"))
+                 (substitute* "third_party/breakpad/breakpad/src/common/\
+linux/libcurl_wrapper.h"
+                   (("third_party/curl") "curl"))
+                 (substitute*
+                     '("components/viz/common/gpu/vulkan_context_provider.h"
+                       "gpu/config/gpu_util.cc")
+                   (("third_party/vulkan/include/")
+                    ""))
+
+                 ;; Replace Google Analytics bundle with an empty file and
+                 ;; hope no one notices.
+                 (mkdir-p "third_party/analytics")
+                 (call-with-output-file
+                     "third_party/analytics/google-analytics-bundle.js"
+                   (lambda (port)
+                     (const #t)))))
+             ;; Do not enable support for loading the Widevine DRM plugin.
+             (substitute* "src/core/CMakeLists.txt"
+               (("enable_widevine=true")
+                "enable_widevine=false")))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      ;; XXX: The test suite is not built by default; leave it off to save
+      ;; some build time and resources.
+      #:tests? #f
+      #:configure-flags
+      ;; Use the CMake ninja generator, otherwise the build fails (see:
+      ;; https://bugreports.qt.io/browse/QTBUG-96897).
+      #~(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).
+              (string-append "-DCMAKE_SHARED_LINKER_FLAGS=-L"
+                             (search-input-directory %build-inputs "lib/nss"))
+
+              ;; The PDF renderer plugin fails to build with errors such as
+              ;; "src/3rdparty/chromium/components/pdf
+              ;; /renderer/pdf_accessibility_tree.cc:1373:39:
+              ;; error: use of undeclared identifier 'IDS_PDF_PAGE_INDEX'";
+              ;; disable it.
+              "-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"
+              "-DQT_FEATURE_webengine_system_alsa=ON"
+              "-DQT_FEATURE_webengine_system_icu=ON"
+              "-DQT_FEATURE_webengine_system_libxml=ON"
+              "-DQT_FEATURE_webengine_system_libpci=ON"
+              "-DQT_FEATURE_webengine_system_libpng=ON"
+              "-DQT_FEATURE_webengine_system_pulseaudio=ON"
+              "-DQT_FEATURE_webengine_system_zlib=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Qtwebengine is not installed into the same prefix as qtbase.
+              ;; Some qtbase QTLibraryInfo constants will not work.  Replace
+              ;; with the full path to the qtwebengine translations and
+              ;; locales in the store.
+              (substitute* "src/core/web_engine_library_info.cpp"
+                (("QLibraryInfo::path\\(QLibraryInfo::TranslationsPath)")
+                 (string-append "QLatin1String(\"" #$output
+                                "/share/qt6/translations\")"))
+                (("QLibraryInfo::path\\(QLibraryInfo::DataPath)")
+                 (string-append "QLatin1String(\"" #$output
+                                "/share/qt6\")")))
+              ;; Substitute full dynamic library path for nss.
+              (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
+                (("libnssckbi.so")
+                 (search-input-file inputs "lib/nss/libnssckbi.so")))
+              ;; Substitute full dynamic library path for udev.
+              (substitute* "src/3rdparty/chromium/device/udev_linux/udev1_loader.cc"
+                (("libudev.so.1")
+                 (search-input-file inputs "lib/libudev.so.1")))
+              ;; Patch the location of the X11 keywoard layouts, otherwise
+              ;; webengine *crashes* at run time when the default directory,
+              ;; '/usr/share/X11/xkb' is empty (see:
+              ;; https://bugreports.qt.io/browse/QTBUG-105124).
+              (substitute* "src/3rdparty/chromium/ui/events/ozone/layout/xkb\
+/xkb_keyboard_layout_engine.cc"
+                (("/usr/share/X11/xkb")
+                 (search-input-directory inputs "share/X11/xkb")))))
+          (add-before 'configure 'prepare-build-environment
+            (lambda _
+              ;; Avoids potential race conditions.
+              (setenv "PYTHONDONTWRITEBYTECODE" "1")
+              (setenv "NINJAFLAGS"
+                      (string-append
+                       "-k1"  ;less verbose build output
+                       ;; Respect the '--cores' option of 'guix build'.
+                       " -j" (number->string (parallel-job-count))))
+              ;; Use Clang/LDD to help tame the memory requirements and hasten
+              ;; the build.
+              (setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm")
+              (setenv "CC" "clang") (setenv "CXX" "clang++")))
+          (replace 'build
+            (lambda* (#:key parallel-build? #:allow-other-keys)
+              (apply invoke "cmake" "--build" "."
+                     (if parallel-build?
+                         `("--parallel" ,(number->string (parallel-job-count)))
+                         '()))))
+          (replace 'install
+            (lambda _
+              (invoke "cmake" "--install" "."))))))
+    (native-inputs
+     (modify-inputs (package-native-inputs qtwebengine-5)
+       (delete "python2" "python2-six")
+       (append clang-14
+               lld-as-ld-wrapper
+               node-lts
+               python-wrapper
+               python-html5lib)))
+    (inputs
+     (modify-inputs (package-inputs qtwebengine-5)
+       (replace "qtbase" qtbase)
+       (replace "qtdeclarative" qtdeclarative)
+       (replace "qtmultimedia" qtmultimedia)
+       (replace "qtwebchannel" qtwebchannel)
+       (append libxkbfile xkeyboard-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (file-type 'regular)
+            (separator #f)
+            (variable "QTWEBENGINEPROCESS_PATH")
+            (files '("lib/qt5/libexec/QtWebEngineProcess")))))
+    (home-page "https://wiki.qt.io/QtWebEngine")
+    (synopsis "Qt WebEngine module")
+    (description "The Qt WebEngine module provides support for web
+applications using the Chromium browser project.  The Chromium source code has
+Google services and binaries removed, and adds modular support for using
+system libraries.")
+    (license license:lgpl2.1+)))
+
 (define-public single-application-qt5
   ;; Change in function signature, nheko requires at least this commit
   (let ((commit "dc8042b5db58f36e06ba54f16f38b16c5eea9053"))
@@ -2072,16 +2999,16 @@ module provides support functions to the automatically generated code.")
      `(("python" ,python-wrapper)
        ("qtbase" ,qtbase-5)
        ("qtconnectivity" ,qtconnectivity)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtlocation" ,qtlocation)
-       ("qtmultimedia" ,qtmultimedia)
+       ("qtmultimedia-5" ,qtmultimedia-5)
        ("qtsensors" ,qtsensors)
        ("qtserialport" ,qtserialport)
-       ("qtsvg" ,qtsvg)
-       ("qttools" ,qttools)
-       ("qtwebchannel" ,qtwebchannel)
+       ("qtsvg-5" ,qtsvg-5)
+       ("qttools-5" ,qttools-5)
+       ("qtwebchannel-5" ,qtwebchannel-5)
        ("qtwebkit" ,qtwebkit)
-       ("qtwebsockets" ,qtwebsockets)
+       ("qtwebsockets-5" ,qtwebsockets-5)
        ("qtx11extras" ,qtx11extras)
        ("qtxmlpatterns" ,qtxmlpatterns)))
     (arguments
@@ -2181,10 +3108,10 @@ contain over 620 classes.")
        ("python-sip" ,python-sip)
        ("python-pyqt" ,python-pyqt-without-qtwebkit)
        ("qtbase" ,qtbase-5)
-       ("qtsvg" ,qtsvg)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtwebchannel" ,qtwebchannel)
-       ("qtwebengine" ,qtwebengine)))
+       ("qtsvg-5" ,qtsvg-5)
+       ("qtdeclarative-5" ,qtdeclarative-5)
+       ("qtwebchannel-5" ,qtwebchannel-5)
+       ("qtwebengine-5" ,qtwebengine-5)))
     (arguments
      `(#:modules ((srfi srfi-1)
                   ((guix build python-build-system) #:select (python-version))
@@ -2423,7 +3350,7 @@ This package provides the Python bindings.")))
           "1zk6r2vc1q48qs7mw2h47bpgrfbb9r7lf9cwq4sb1a4nls87zznk"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list libsecret qtbase-5))
     (arguments
@@ -2567,7 +3494,7 @@ that can be only started once per user.
          (base32 "0hf0mpca248xlqn7xnzkfj8drf19gdyg5syzklvq8pibxiixwxj0"))))
   (build-system gnu-build-system)
   (inputs
-   (list qtbase-5 qtsvg qttools))
+   (list qtbase-5 qtsvg-5 qttools-5))
   (arguments
    `(#:phases
      (modify-phases %standard-phases
@@ -2653,11 +3580,11 @@ different kinds of sliders, and much more.")
        ("fontconfig" ,fontconfig)
        ("libxrender" ,libxrender)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtlocation" ,qtlocation)
-       ("qtmultimedia" ,qtmultimedia)
+       ("qtmultimedia-5" ,qtmultimedia-5)
        ("qtsensors" ,qtsensors)
-       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebchannel-5" ,qtwebchannel-5)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
        ("libx11" ,libx11)
@@ -2715,9 +3642,9 @@ time Web content can be enhanced with native controls.")
          "09fz6v8rp28997f235yaifj8p4vvsyv45knc1iivgdvx7msgcd0m"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (home-page "https://filcuc.github.io/DOtherSide/index.html")
     (synopsis "C language library for creating bindings for the Qt QML language")
     (description
@@ -2752,7 +3679,7 @@ a binding language:
       (build-system cmake-build-system)
       (arguments `(#:tests? #f)) ; There are no tests
       (native-inputs
-       (list qttools))
+       (list qttools-5))
       (inputs
        (list qtbase-5))
       (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
@@ -2884,19 +3811,19 @@ color-related widgets.")
            clang-toolchain
            qtbase-5
            qtdatavis3d
-           qtdeclarative
+           qtdeclarative-5
            qtlocation
-           qtmultimedia
-           qtquickcontrols
-           qtquickcontrols2
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
            qtscript
            qtscxml
            qtsensors
            qtspeech
-           qtsvg
-           qtwebchannel
-           qtwebengine
-           qtwebsockets
+           qtsvg-5
+           qtwebchannel-5
+           qtwebengine-5
+           qtwebsockets-5
            qtx11extras
            qtxmlpatterns))
     (propagated-inputs
@@ -2904,7 +3831,7 @@ color-related widgets.")
     (native-inputs
      `(("cmake" ,cmake-minimal)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("which" ,which)))
     (arguments
      `(#:tests? #f
@@ -2943,7 +3870,7 @@ color-related widgets.")
                                 "qtsensors"
                                 "qtspeech"
                                 "qtsvg"
-                                "qttools"
+                                "qttools-5"
                                 "qtwebchannel"
                                 "qtwebengine"
                                 "qtwebsockets"
@@ -3036,7 +3963,7 @@ generate Python bindings for your C or C++ code.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke (cons "qmake" make-flags)))))))
     (native-inputs
-     (list qtbase-5 qttools))
+     (list qtbase-5 qttools-5))
     (inputs
      (list glu))
     (home-page "http://libqglviewer.com")
@@ -3091,7 +4018,7 @@ being fully customizable and easy to extend.")
                            (install-file file include-dir))
                          (find-files "." "\\.h$"))))))))
     (inputs (list qtbase-5))
-    (native-inputs (list qttools))
+    (native-inputs (list qttools-5))
     (home-page "https://simsys.github.io")
     (synopsis "Binary editor widget for Qt")
     (description
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index dd9ab151ed..0417abc5b3 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -926,7 +926,7 @@ satellites.")
            portaudio
            pulseaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            spdlog
            volk))
     (arguments
@@ -1290,7 +1290,7 @@ instances over the network, and general QSO and DXpedition logging.")
         (base32 "0nciw9smrfcsirlwyny5r9h7sk2zvm40m56y1hxpgpmbnh6mqikh"))))
     (build-system qt-build-system)
     (native-inputs
-     (list asciidoc gfortran pkg-config qttools ruby-asciidoctor))
+     (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
     (inputs
      `(("boost" ,boost)
        ("fftw" ,fftw)
@@ -1298,7 +1298,7 @@ instances over the network, and general QSO and DXpedition logging.")
        ("hamlib" ,wsjtx-hamlib)
        ("libusb" ,libusb)
        ("qtbase" ,qtbase-5)
-       ("qtmultimedia" ,qtmultimedia)
+       ("qtmultimedia-5" ,qtmultimedia-5)
        ("qtserialport" ,qtserialport)))
     (arguments
      `(#:tests? #f)) ; No test suite
@@ -1327,7 +1327,7 @@ weak-signal conditions.")
         (base32 "1lw9q7ggh2jlasipl3v5pkbabysjr6baw15lnmg664ah3fwdrvnx"))))
     (build-system qt-build-system)
     (native-inputs
-     (list asciidoc gfortran pkg-config qttools ruby-asciidoctor))
+     (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
     (inputs
      (list
       boost
@@ -1336,8 +1336,8 @@ weak-signal conditions.")
       jtdx-hamlib
       libusb
       qtbase-5
-      qtwebsockets
-      qtmultimedia
+      qtwebsockets-5
+      qtmultimedia-5
       qtserialport))
     (arguments
      `(#:tests? #f)) ; No test suite
@@ -1373,7 +1373,7 @@ focused on DXing and being shaped by community of DXers.JTDX")
            #t))))
     (build-system qt-build-system)
     (native-inputs
-     (list asciidoc gfortran pkg-config qttools ruby-asciidoctor))
+     (list asciidoc gfortran pkg-config qttools-5 ruby-asciidoctor))
     (inputs
      `(("boost" ,boost)
        ("fftw" ,fftw)
@@ -1381,7 +1381,7 @@ focused on DXing and being shaped by community of DXers.JTDX")
        ("hamlib" ,wsjtx-hamlib)
        ("libusb" ,libusb)
        ("qtbase" ,qtbase-5)
-       ("qtmultimedia" ,qtmultimedia)
+       ("qtmultimedia-5" ,qtmultimedia-5)
        ("qtserialport" ,qtserialport)))
     (arguments
      `(#:tests? #f ; No test suite
@@ -1745,9 +1745,9 @@ intended for people who want to learn receiving and sending morse code.")
         (base32 "1s1aj223n57rpc95rih98z08xnyhq2zp02byzrc3f7s01fv3nj0l"))))
     (build-system qt-build-system)
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
-     (list qtbase-5 qtmultimedia))
+     (list qtbase-5 qtmultimedia-5))
     (arguments
      `(#:tests? #f)) ; No test suite
     (home-page "https://dm3mat.darc.de/kochmorse/")
@@ -1861,7 +1861,7 @@ Compatible hardware/software:
            opus
            pulseaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtwebkit
            qwt
            speexdsp
@@ -1928,10 +1928,10 @@ receiver.")
            rtl-sdr
            qtbase-5
            qtcharts
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtmultimedia
-           qtquickcontrols2
+           qtmultimedia-5
+           qtquickcontrols2-5
            soapysdr))
     (arguments
      `(#:configure-flags '("-DRTLSDR=ON"
@@ -2159,13 +2159,13 @@ voice formats.")
            pulseaudio
            qtbase-5
            qtcharts
-           qtdeclarative
+           qtdeclarative-5
            qtlocation
-           qtmultimedia
-           qtquickcontrols2
+           qtmultimedia-5
+           qtquickcontrols2-5
            qtserialport
            qtspeech
-           qtwebsockets
+           qtwebsockets-5
            rtl-sdr
            serialdv
            soapysdr
@@ -2293,7 +2293,7 @@ software-defined radio receivers.")
         (base32 "1kpkwxhcacgmprbr8xz840rj9a22513vxrh2q7d3js5i1dva8j2z"))))
     (build-system qt-build-system)
     (inputs
-     (list opus qcustomplot qtbase-5 qtmultimedia qtserialport))
+     (list opus qcustomplot qtbase-5 qtmultimedia-5 qtserialport))
     (arguments
      `(#:tests? #f  ; No test suite.
        #:phases
diff --git a/gnu/packages/robotics.scm b/gnu/packages/robotics.scm
index aedc8b8c5f..0b0ecaf027 100644
--- a/gnu/packages/robotics.scm
+++ b/gnu/packages/robotics.scm
@@ -118,8 +118,8 @@ hundred times faster than real-time.")
              enki
              protobuf-3.5 ;for logging
              qtbase-5
-             qtsvg
-             qttools ;for libQt5Help, needed by "studio"
+             qtsvg-5
+             qttools-5 ;for libQt5Help, needed by "studio"
              qtwebkit
              qtx11extras
              eudev
diff --git a/gnu/packages/rpm.scm b/gnu/packages/rpm.scm
index 96c6776d1a..0b6cacadef 100644
--- a/gnu/packages/rpm.scm
+++ b/gnu/packages/rpm.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +19,7 @@
 (define-module (gnu packages rpm)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix build-system cmake)
@@ -43,7 +44,7 @@
 (define-public drpm
   (package
     (name "drpm")
-    (version "0.5.0")
+    (version "0.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -52,7 +53,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0m269nl8s31yjyz7kknv4jl9mx12xjpx2ly6wf66zs5613m4rj1z"))))
+                "0czg69crs2idnd8zsr7p01cd02f981gb5hq15m3qkwd25zxxd1l0"))))
     (build-system cmake-build-system)
     (native-inputs
      (list cmocka pkg-config))
@@ -86,52 +87,50 @@ applying deltarpms, compatible with the original deltarpm packages.")
     (build-system meson-build-system)
     (outputs '("out" "doc"))            ;2.6 MiB of HTML documentation
     (arguments
-     `(#:configure-flags
-       (list (string-append "-Dgobject_overrides_dir_py3="
-                            (python:site-packages %build-inputs %outputs)))
-       #:imported-modules (,@%meson-build-system-modules
+     (list
+      #:configure-flags
+      #~(list (string-append "-Dgobject_overrides_dir_py3="
+                             (python:site-packages %build-inputs %outputs)))
+      #:imported-modules `(,@%meson-build-system-modules
                            (guix build python-build-system))
-       #:modules ((guix build meson-build-system)
+      #:modules '((guix build meson-build-system)
                   ((guix build python-build-system) #:prefix python:)
                   (guix build utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-glib-doc-prefix
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((glib:doc (assoc-ref inputs "glib:doc")))
-               (substitute* "meson.build"
-                 (("glib_docpath = .*")
-                  (format #f "glib_docpath = '~a'~%"
-                          (string-append glib:doc
-                                         "/share/gtk-doc/html")))))))
-         (add-after 'unpack 'fix-docbook-references
-           ;; gtk-doc doesn't seem to honor DocBook 4.1.2's docbook.cat's
-           ;; catalog file, even when adding it to XML_CATALOG_FILES.  Work
-           ;; around it by adjusting the DocBook references directly.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "modulemd/modulemd-docs.xml"
-               (("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd")
-                (string-append (assoc-ref inputs "docbook-xml")
-                               "/xml/dtd/docbook/docbookx.dtd")))))
-         (add-after 'install 'move-documentation
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc"))
-                    (src (string-append out "/share/gtk-doc"))
-                    (dst (string-append doc "/share/gtk-doc")))
-               (mkdir-p (dirname dst))
-               (rename-file src dst)))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-glib-doc-prefix
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (substitute* "meson.build"
+                (("glib_docpath = .*")
+                 (format #f "glib_docpath = '~a'~%"
+                         (search-input-directory (or native-inputs inputs)
+                                                 "share/gtk-doc/html"))))))
+          (add-after 'unpack 'fix-docbook-references
+            ;; gtk-doc doesn't seem to honor DocBook 4.1.2's docbook.cat's
+            ;; catalog file, even when adding it to XML_CATALOG_FILES.  Work
+            ;; around it by adjusting the DocBook references directly.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "modulemd/modulemd-docs.xml"
+                (("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd")
+                 (search-input-file inputs "xml/dtd/docbook/docbookx.dtd")))))
+          (add-after 'install 'move-documentation
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((dst (string-append #$output:doc "/share/gtk-doc")))
+                (mkdir-p (dirname dst))
+                (rename-file (search-input-directory outputs "share/gtk-doc")
+                             dst)))))))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.1.2)
-       ("glib:bin" ,glib "bin")
-       ("glib:doc" ,glib-with-documentation "doc")
-       ("gobject-introspection" ,gobject-introspection) ;for g-ir-scanner
-       ("gtk-doc" ,gtk-doc)
-       ("help2man" ,help2man)
-       ("pkg-config" ,pkg-config)))
+     (list docbook-xml-4.1.2
+           `(,glib "bin")
+           `(,glib-with-documentation "doc")
+           gobject-introspection        ;for g-ir-scanner
+           gtk-doc
+           help2man
+           pkg-config
+           python))                     ;for 'site-packages' call
     (inputs
-     `(("gtk" ,gtk+)
-       ("python-pygobject" ,python-pygobject)))
+     (list gtk+
+           python-pygobject))
     (propagated-inputs
      ;; glib and gobject are listed as 'Requires' in modulemd-2.0.pc.
      (list glib
@@ -147,7 +146,7 @@ information on multiple streams, default data and translations).")
 (define-public createrepo-c
   (package
     (name "createrepo-c")
-    (version "0.17.6")
+    (version "0.20.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -156,28 +155,29 @@ information on multiple streams, default data and translations).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "175na06mjyr8ws5pkknaicpziayj6p0xaanv62d54c6zxl4w484w"))))
+                "07d89s6kknf79phzan3d2vy1rq64ih49qk2w51hsmfn73qins9wy"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:imported-modules (,@%cmake-build-system-modules
+     (list
+      #:imported-modules `(,@%cmake-build-system-modules
                            (guix build python-build-system))
-       #:modules ((guix build cmake-build-system)
+      #:modules '((guix build cmake-build-system)
                   ((guix build python-build-system) #:prefix python:)
                   (guix build utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-python-site-prefix
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (substitute* "src/python/CMakeLists.txt"
-               (("EXECUTE_PROCESS.*OUTPUT_VARIABLE PYTHON_INSTALL_DIR.*")
-                (format #f "set (PYTHON_INSTALL_DIR ~a)~%"
-                        (python:site-packages inputs outputs))))))
-         (add-after 'unpack 'fix-bash-completion-prefix
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "CMakeLists.txt"
-               (("execute_process.*OUTPUT_VARIABLE BASHCOMP_DIR.*")
-                (format #f "set (BASHCOMP_DIR ~a\
-/share/bash-completion/completions)~%" (assoc-ref outputs "out")))))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-python-site-prefix
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* "src/python/CMakeLists.txt"
+                (("EXECUTE_PROCESS.*OUTPUT_VARIABLE PYTHON_INSTALL_DIR.*")
+                 (format #f "set (PYTHON_INSTALL_DIR ~a)~%"
+                         (python:site-packages inputs outputs))))))
+          (add-after 'unpack 'fix-bash-completion-prefix
+            (lambda _
+              (substitute* "CMakeLists.txt"
+                (("execute_process.*OUTPUT_VARIABLE BASHCOMP_DIR.*")
+                 (format #f "set (BASHCOMP_DIR ~a\
+/share/bash-completion/completions)~%" #$output))))))))
     (native-inputs
      (list bash-completion pkg-config python))
     (inputs
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 724a60726d..d612d1ab5b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -28,6 +28,7 @@
 ;;; Copyright © 2021 EuAndreh <eu@euandre.org>
 ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
 ;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu>
+;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +66,7 @@
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lsof)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
@@ -3124,24 +3126,40 @@ two hashes.")
     (home-page "https://github.com/liufengyun/hashdiff")
     (license license:expat)))
 
-(define-public ruby-hydra
+(define-public ruby-hydra-minimal
   ;; No releases yet.
   (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
         (revision "0"))
     (package
-      (name "ruby-hydra")
+      (name "ruby-hydra-minimal")
       (version (git-version "0.0" revision commit))
       (home-page "https://github.com/hyphenation/hydra")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference (url home-page) (commit commit)))
                 (file-name (git-file-name name version))
+                ;; byebug is a non-essential debugging utility that brings in
+                ;; many dependencies.
+                (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
                 (sha256
                  (base32
                   "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
       (build-system ruby-build-system)
       (arguments
-       '(#:phases (modify-phases %standard-phases
+       ;; Avoid rspec dependency.
+       '(#:tests? #f))
+      (synopsis "Ruby hyphenation patterns")
+      (description
+       "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
+It is a low-dependency variant of ruby-hydra.")
+      (license license:expat))))
+
+(define-public ruby-hydra
+  (package
+    (inherit ruby-hydra-minimal)
+    (name "ruby-hydra")
+    (arguments
+        '(#:phases (modify-phases %standard-phases
                     (add-after 'unpack 'make-files-writable
                       (lambda _
                         (for-each make-file-writable (find-files "."))
@@ -3149,14 +3167,12 @@ two hashes.")
                     (replace 'check
                       (lambda _
                         (invoke "rspec"))))))
-      (native-inputs
-       (list ruby-rspec))
-      (propagated-inputs
-       (list ruby-byebug))
-      (synopsis "Ruby hyphenation patterns")
-      (description
-       "ruby-hydra is a Ruby library for working with hyphenation patterns.")
-      (license license:expat))))
+    (native-inputs
+     (list ruby-rspec))
+    (propagated-inputs
+     (list ruby-byebug))
+    (description
+     "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
 
 (define-public ruby-shindo
   (package
@@ -5017,19 +5033,16 @@ to reproduce user environments.")
                (base32
                 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
 
-;; TODO: In the next rebuild cycle, provide texlive a version of ruby-hydra
-;; that does not depend on byebug and rspec, so that their dependencies can
-;; be updated more freely.  For now pin this version to avoid rebuilds.
-(define-public ruby-nokogiri-1.10
+(define-public ruby-nokogiri
   (package
     (name "ruby-nokogiri")
-    (version "1.10.9")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "nokogiri" version))
               (sha256
                (base32
-                "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
+                "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b"))))
     (build-system ruby-build-system)
     (arguments
      ;; Tests fail because Nokogiri can only test with an installed extension,
@@ -5038,28 +5051,13 @@ to reproduce user environments.")
        #:gem-flags (list "--" "--use-system-libraries"
                          (string-append "--with-xml2-include="
                                         (assoc-ref %build-inputs "libxml2")
-                                        "/include/libxml2" ))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'patch-extconf
-           ;; 'pkg-config' is not included in the GEM_PATH during
-           ;; installation, so we add it directly to the load path.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
-               (substitute* "ext/nokogiri/extconf.rb"
-                 (("gem 'pkg-config'.*")
-                  (string-append "$:.unshift '"
-                                 pkg-config "/lib/ruby/vendor_ruby"
-                                 "/gems/pkg-config-"
-                                 ,(package-version ruby-pkg-config)
-                                 "/lib'\n"))))
-             #t)))))
+                                        "/include/libxml2" ))))
     (native-inputs
      (list ruby-hoe))
     (inputs
      (list zlib libxml2 libxslt))
     (propagated-inputs
-     (list ruby-mini-portile-2 ruby-pkg-config))
+     (list ruby-mini-portile-2.6.1 ruby-pkg-config))
     (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
     (description "Nokogiri (鋸) parses and searches XML/HTML, and features
 both CSS3 selector and XPath 1.0 support.")
@@ -5078,26 +5076,6 @@ both CSS3 selector and XPath 1.0 support.")
                (base32
                 "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq"))))))
 
-(define-public ruby-nokogiri
-  (package
-    (inherit ruby-nokogiri-1.10)
-    (version "1.12.5")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "nokogiri" version))
-              (sha256
-               (base32
-                "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b"))))
-    (arguments
-     '(#:tests? #f                      ;XXX: no tests in rubygem
-       #:gem-flags (list "--" "--use-system-libraries"
-                         (string-append "--with-xml2-include="
-                                        (assoc-ref %build-inputs "libxml2")
-                                        "/include/libxml2"))))
-    (propagated-inputs
-     (modify-inputs (package-propagated-inputs ruby-nokogiri-1.10)
-       (replace "ruby-mini-portile" ruby-mini-portile-2.6.1)))))
-
 (define-public ruby-method-source
   (package
     (name "ruby-method-source")
@@ -6726,8 +6704,7 @@ tree-like structures.  It is similar to Ruby's built-in @code{TSort} module.")
       (build-system ruby-build-system)
       (propagated-inputs
        (list ruby-tdiff
-             ;; Use a fixed version to prevent rebuilds; see ruby-nokogiri TODO.
-             ruby-nokogiri-1.10))
+             ruby-nokogiri))
       (native-inputs
        (list ruby-rspec ruby-yard ruby-rubygems-tasks))
       (synopsis "Calculate the differences between two XML/HTML documents")
@@ -12984,3 +12961,754 @@ using Nokogiri.")
     (description "Blather is a XMPP DSL for Ruby written on top of EventMachine
 and Nokogiri.")
     (license license:expat)))
+
+(define-public ruby-wapiti
+  (package
+    (name "ruby-wapiti")
+    (version "2.0.0")
+    ;; the gem archive lacks tests
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/inukshuk/wapiti-ruby")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1kawqw45j7mqk5zmwbn67x1vxiapdgm2ypqqz2bs9l5s7nglzr5b"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-builder
+           ruby-rexml))
+    (native-inputs
+     (list ruby-byebug
+           ruby-pry
+           ruby-rake-compiler
+           ruby-rspec
+           ruby-simplecov))
+    (arguments
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+            (lambda args
+              (substitute* "wapiti.gemspec"
+                (("`git ls-files spec`")
+                 "`find spec -type f | sort`"))))
+          (add-before 'build 'compile
+            (lambda args
+              (invoke "rake" "compile"))))))
+    (home-page "https://github.com/inukshuk/wapiti-ruby")
+    (synopsis "Wicked fast Conditional Random Fields for Ruby")
+    (description
+     "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF,
+Conditional Random Fields} API for sequence segmentation and labelling.  It is
+based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.")
+    (license license:bsd-2)))
+
+(define-public ruby-namae
+  (package
+    (name "ruby-namae")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "namae" version))
+              (sha256
+               (base32
+                "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     (list ruby-cucumber
+           ruby-rspec
+           ruby-simplecov))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'allow-newer-cucumber
+            (lambda args
+              (substitute* "Gemfile"
+                (("'cucumber', '[^']*'")
+                 "'cucumber'"))))
+          (replace 'check
+            ;; Avoid 'rake' so we don't need jeweler.
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (apply invoke
+                       "rspec"
+                       (find-files "spec" "_spec\\.rb$"))))))))
+    (home-page "https://github.com/berkmancenter/namae")
+    (synopsis "Parser for human names")
+    (description
+     "Namae (名前) is a parser for human names.  It recognizes personal names
+of various cultural backgrounds and tries to split them into their component
+parts (e.g., given and family names, honorifics etc.).")
+    (license (list license:bsd-2 license:agpl3+))))
+
+(define-public ruby-ritex
+  (package
+    (name "ruby-ritex")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "ritex" version))
+              (sha256
+               (base32
+                "07rlm3nyz9sxzy1srxs6a31hw81r6w7swrb85fiwi393z8npwc3a"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     (list itex2mml))
+    (arguments
+     ;; thanks to the Gentoo packagers for figuring this out
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'fix-tests
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (substitute* "test/mathml.rb"
+                (("\\./itex2MML")
+                 ;; don't use the absolute path to avoid keeping a reference
+                 "itex2MML")
+                (("cmp ',\\\\,\\\\,,,\\\\,'" orig)
+                 (string-append "# " orig " # patched for Guix")))
+              (substitute* "test/answer-key.yaml"
+                (("- ,\\\\,\\\\,,,\\\\," orig)
+                 (string-append "# " orig " # patched for Guix")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "ruby" "-Ilib:." "test/all.rb")))))))
+    (home-page "https://rubygems.org/gems/ritex")
+    (synopsis "Convert expressions from WebTeX into MathML")
+    (description
+     "Ritex converts expressions from WebTeX into MathML.  WebTeX is an
+adaptation of TeX math syntax for web display.  Ritex makes inserting math
+into HTML pages easy.  It supports most TeX math syntax as well as macros.")
+    ;; doesn't clearly state -only vs -or-later
+    (license license:gpl2)))
+
+(define-public ruby-latex-decode
+  (package
+    (name "ruby-latex-decode")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/inukshuk/latex-decode")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy"))
+              (file-name (git-file-name name version))))
+    (build-system ruby-build-system)
+    (native-inputs
+     (list ruby-cucumber
+           ruby-ritex
+           ruby-rspec))
+    (arguments
+     (list
+      #:test-target "cucumber"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'avoid-bundler
+            (lambda args
+              (substitute* "Rakefile"
+                (("require 'bundler" orig)
+                 (string-append "# " orig " # patched for Guix"))
+                (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
+                 (string-append orig " do |c|\n"
+                                "  c.bundler = false # patched for Guix\n"
+                                "end"))
+                (("Bundler\\.setup" orig)
+                 (string-append "true # " orig " # patched for Guix")))
+              (substitute* "cucumber.yml"
+                ;; thanks to avoiding bundler, we can't use this option
+                ((" --publish-quiet")
+                 ""))))
+          (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+            (lambda args
+              (substitute* "latex-decode.gemspec"
+                (("`git ls-files -- [{]test,spec,features[}]/\\*`")
+                 "`find {test,spec,features} -type f | sort`")))))))
+    (home-page "https://github.com/inukshuk/latex-decode")
+    (synopsis "Convert LaTeX to Unicode")
+    (description
+     "This package provides a gem to convert LaTeX input to Unicode.  Its
+original use was as an input filter for BibTeX-Ruby, but it can be used
+independently to decode LaTeX.  Many of the patterns used by this Ruby gem are
+based on François Charette's equivalent Perl module @code{LaTeX::Decode}.")
+    (license license:gpl3+)))
+
+(define-public ruby-link-header
+  (package
+    (name "ruby-link-header")
+    (version "0.0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "link_header" version))
+              (sha256
+               (base32
+                "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"))))
+    (build-system ruby-build-system)
+    (home-page "https://github.com/asplake/link_header")
+    (synopsis "Parse and format HTTP @code{Link} headers")
+    (description
+     "This gem provides the classes @code{LinkHeader} and
+@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming
+to RFC 5988.  Objects can be constructed from and converted to text or a
+JSON-friendly @code{Array} representation.  They can also be used to generate
+corresponding HTML @code{link} elements.")
+    (license license:expat)))
+
+(define-public ruby-rdf
+  (package
+    (name "ruby-rdf")
+    (version "3.2.8")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rdf" version))
+              (sha256
+               (base32
+                "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20"))))
+    (build-system ruby-build-system)
+    (propagated-inputs (list ruby-link-header))
+    (arguments
+     (list #:tests? #f)) ;; tests have many cyclic dependencies
+    (home-page "https://ruby-rdf.github.io/")
+    (synopsis "Linked Data for Ruby")
+    (description
+     "This gem contains the core algorithms and classes used for doing basic
+programming with @acronym{RDF, Resource Description Framework} data,
+implemented in pure Ruby.")
+    (license license:unlicense)))
+
+(define-public ruby-rdf-vocab
+  (package
+    (name "ruby-rdf-vocab")
+    (version "3.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rdf-vocab" version))
+              (sha256
+               (base32
+                "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-rdf))
+    (arguments
+     (list #:tests? #f)) ;; tests have many cyclic dependencies
+    (home-page "https://github.com/ruby-rdf/rdf-vocab")
+    (synopsis "Common RDF vocabularies")
+    (description
+     "This gem extends @code{ruby-rdf} with several common @acronym{RDF,
+Resource Description Framework} vocabularies.")
+    (license license:unlicense)))
+
+(define-public ruby-bibtex-ruby
+  (package
+    (name "ruby-bibtex-ruby")
+    (version "6.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "bibtex-ruby" version))
+              (sha256
+               (base32
+                "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-latex-decode
+           ruby-rdf
+           ruby-rdf-vocab))
+    (native-inputs
+     (list ruby-byebug
+           ruby-cucumber
+           ruby-minitest
+           ruby-yard))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'avoid-bundler
+            (lambda args
+              (substitute* "Rakefile"
+                (("require 'bundler" orig)
+                 (string-append "# " orig " # patched for Guix"))
+                (("Bundler\\.setup" orig)
+                 (string-append "true # " orig " # patched for Guix"))))))))
+    (home-page "https://github.com/inukshuk/bibtex-ruby")
+    (synopsis "Rubyist's Swiss Army knife for all things BibTeX")
+    (description
+     "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX.
+It includes a parser for all common BibTeX objects and a sophisticated name
+parser that tokenizes correctly formatted names.  BibTeX-Ruby recognizes
+BibTeX string replacements, joins values containing multiple strings or
+variables, supports cross-references, and decodes common LaTeX formatting
+instructions to unicode.  If you are in a hurry, it also allows for easy
+export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).")
+    (license license:gpl3+)))
+
+(define-public ruby-unicode-scripts
+  (package
+    (name "ruby-unicode-scripts")
+    (version "1.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "unicode-scripts" version))
+              (sha256
+               (base32
+                "1k7kbfk806zam129bp7pdiqkfb5hn51x149irzvjhs4xf22m4yvi"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     (list ruby-minitest))
+    (arguments
+     (list #:test-target "spec"))
+    (home-page "https://github.com/janlelis/unicode-scripts")
+    (synopsis "Unicode script classification library")
+    (description
+     "This gem provides a simple interface for classifying Ruby strings using
+the Unicode @code{Script} and @code{Script_Extensions} properties.")
+    (license license:expat)))
+
+(define-public ruby-citeproc
+  (package
+    (name "ruby-citeproc")
+    (version "1.0.10")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "citeproc" version))
+              (sha256
+               (base32
+                "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-namae))
+    (arguments
+     (list #:tests? #f)) ;; tests have a cyclic dependency
+    (home-page "https://github.com/inukshuk/citeproc")
+    (synopsis "Interface for Ruby citation processors")
+    (description
+     "CiteProc is a citation processor interface and citation data API based
+on the @acronym{CSL, Citation Style Language} specifications.  To actually
+process citations, a dedicated processor engine is required: a pure Ruby
+engine is available in the @code{citeproc-ruby} gem.")
+    (license (list license:agpl3+ license:bsd-2))))
+
+(define-public ruby-edtf
+  (package
+    (name "ruby-edtf")
+    (version "3.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/inukshuk/edtf-ruby")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g"))
+              (snippet
+               ;; remove generated file
+               #~(delete-file "lib/edtf/parser.rb"))
+              (file-name (git-file-name name version))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-activesupport))
+    (native-inputs
+     (list ruby-cucumber
+           ruby-rspec))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'avoid-bundler
+            (lambda args
+              (substitute* "Rakefile"
+                (("require 'bundler" orig)
+                 (string-append "# " orig " # patched for Guix"))
+                (("bundle exec racc")
+                 "racc")
+                (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
+                 (string-append orig " do |c|\n"
+                                "  c.bundler = false # patched for Guix\n"
+                                "end"))
+                (("Bundler\\.setup" orig)
+                 (string-append "true # " orig " # patched for Guix")))))
+          (add-after 'avoid-bundler 'patch-cucumber-options
+            (lambda args
+              (substitute* "cucumber.yml"
+                ;; this option is not supported, at least in our configuration
+                ((" --publish-quiet")
+                 ""))))
+          (add-before 'build 'compile
+            (lambda args
+              (invoke "rake" "racc")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rake")))))))
+    (home-page "https://github.com/inukshuk/edtf-ruby")
+    (synopsis "Ruby implementation of Extended Date/Time Format")
+    (description
+     "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended
+Date/Time Format} standard, implemented as an extension to Ruby's @code{Date}
+class.")
+    (license license:bsd-2)))
+
+(define-public ruby-gli
+  (package
+    (name "ruby-gli")
+    (version "2.21.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/davetron5000/gli")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja"))
+              (file-name (git-file-name name version))))
+    (build-system ruby-build-system)
+    (native-inputs
+     (list ruby-minitest
+           ruby-rainbow
+           ruby-rdoc
+           ruby-sdoc))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'patch-gemspec-version
+            (lambda args
+              (substitute* "gli.gemspec"
+                ;; this trick fails in our build environment
+                (("require File\\.join[(]\\[" orig)
+                 (string-append "# patched for Guix # " orig))
+                (("s\\.version = GLI::VERSION")
+                 #$(string-append "s.version = '"
+                                  (package-version this-package)
+                                  "' # patched for Guix")))))
+          (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+            (lambda args
+              (substitute* "gli.gemspec"
+                (("`git ls-files -- [{]test,spec,features[}]/\\*`")
+                 "`find {test,spec,features} -type f | sort`"))))
+          (add-after 'replace-another-git-ls-files 'fix-rubyopt
+            (lambda args
+              (substitute* "Rakefile"
+                (("ENV\\[\"RUBYOPT\"]")
+                 "(ENV['RUBYOPT'] || '')")))))))
+    (home-page "https://davetron5000.github.io/gli/")
+    (synopsis "Git-Like Interface command-line parser")
+    (description
+     "GLI allows you to create command-line applications in Ruby with Git-Like
+Interfaces: that is, they take subcommands in the style of @command{git} and
+@command{gem}.  GLI uses a simple domain-specific language, but retains all
+the power of the built-in @code{OptionParser}.")
+    (license license:asl2.0)))
+
+(define-public ruby-anystyle-data
+  (package
+    (name "ruby-anystyle-data")
+    (version "1.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/inukshuk/anystyle-data")
+                    (commit version)))
+              (sha256
+               (base32
+                "025mxa7r9d7izqn6bc1wr40ijp64da0jh211prlpjl6svilgd6rm"))
+              (snippet
+               ;; remove pre-built file
+               #~(delete-file "lib/anystyle/data/dict.txt.gz"))
+              (patches
+               (search-patches "ruby-anystyle-data-immutable-install.patch"))
+              (file-name (git-file-name name version))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:tests? #f ;; there are none
+      #:modules
+      `((guix build ruby-build-system)
+        (guix build utils)
+        (srfi srfi-26))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+            (lambda args
+              (substitute* "anystyle-data.gemspec"
+                (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]")
+                 (string-append
+                  "["
+                  (string-join
+                   (map (cut string-append "\"" <> "\"")
+                        `("README.md"
+                          "LICENSE"
+                          "lib/anystyle/data.rb"
+                          "lib/anystyle/data/dict.txt.gz"
+                          "lib/anystyle/data/setup.rb"
+                          "lib/anystyle/data/version.rb"))
+                   ", ")
+                  "]")))))
+          (add-before 'build 'compile-dict
+            (lambda args
+              (invoke "rake" "compile"))))))
+    (home-page "https://anystyle.io")
+    (synopsis "AnyStyle parser dictionary data")
+    (description
+     "This gem provides parser dictionary data for AnyStyle.")
+    (license license:bsd-2)))
+
+(define-public ruby-anystyle
+  (let ((commit "50f1dd547d28ab4b830e45d70e840cb1898a37b0")
+        (revision "1"))
+    ;; Releases point to specific commits, but recent releases haven't been
+    ;; tagged in Git.  Meanwhile, the rubygems archive lacks tests.
+    (package
+      (name "ruby-anystyle")
+      (version (git-version "1.3.14" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/inukshuk/anystyle")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0f4qcrywl1kl6qysn24lj3yp85ln4i7za7b7ld2fglyzwcggxwb0"))
+                (snippet
+                 ;; There is an optional dependency on
+                 ;; <https://github.com/feedbackmine/language_detector>, which
+                 ;; seems like it was intended to be free software, but
+                 ;; doesn't have a clear license statement.  Maybe someone can
+                 ;; do more sleuthing, or else find a replacement?  See also
+                 ;; <https://github.com/inukshuk/anystyle/issues/186>.  For
+                 ;; now, patch it out, but leave a pointer to follow up.
+                 #~(begin
+                     (use-modules (guix build utils))
+                     (substitute* "Gemfile"
+                       (("gem 'language_detector', github: '[^']*'" orig)
+                        (string-append "# " orig " # unclear license")))
+                     (substitute* "spec/anystyle/parser_spec.rb"
+                       (("language: 'en'," orig)
+                        (string-append "# " orig " # no lanugage_detector")))))
+                (patches
+                 (search-patches
+                  "ruby-anystyle-fix-dictionary-populate.patch"))
+                (file-name (git-file-name name version))))
+      (build-system ruby-build-system)
+      (propagated-inputs
+       (list ruby-anystyle-data
+             ruby-bibtex-ruby
+             ruby-namae
+             ruby-wapiti))
+      (native-inputs
+       (list ruby-byebug
+             ruby-citeproc
+             ruby-edtf
+             ruby-rspec
+             ruby-unicode-scripts))
+      (arguments
+       (list
+        #:test-target "spec"
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'extract-gemspec 'avoid-bundler
+              (lambda args
+                (substitute* "Rakefile"
+                  (("require 'bundler" orig)
+                   (string-append "# " orig " # patched for Guix"))
+                  (("Bundler\\.setup" orig)
+                   (string-append "true # " orig " # patched for Guix")))))
+            (add-after 'replace-git-ls-files 'replace-another-git-ls-files
+              (lambda args
+                (substitute* "anystyle.gemspec"
+                  (("`git ls-files spec`")
+                   "`find spec -type f | sort`"))))
+            (add-after 'wrap 'populate-dictionaries
+              (lambda args
+                ;; We must initiallize these files here, or they will never be
+                ;; usable with the default settings. A more flexible approach
+                ;; might use something like `Gem.find_files()` or
+                ;; XDG_DATA_DIRS.
+                (with-output-to-file "initialize-dictionaries.rb"
+                  (lambda ()
+                    (display "
+require 'anystyle/dictionary' # must come before 'anystyle/data'
+require 'anystyle/data'
+[:marshal, :gdbm].each do |adapter|
+  AnyStyle::Dictionary.create({adapter: adapter}).open().close()
+end
+")))
+                (let* ((old-gems (getenv "GEM_PATH"))
+                       (new-gems (string-append #$output
+                                                "/lib/ruby/vendor_ruby:"
+                                                old-gems)))
+                  (dynamic-wind
+                    (lambda ()
+                      (setenv "GEM_PATH" new-gems))
+                    (lambda ()
+                      (invoke "ruby" "initialize-dictionaries.rb"))
+                    (lambda ()
+                      (setenv "GEM_PATH" old-gems)))))))))
+      (home-page "https://anystyle.io")
+      (synopsis "Fast and smart citation reference parsing (Ruby library)")
+      (description
+       "AnyStyle is a very fast and smart parser for academic reference lists
+and bibliographies.  AnyStyle uses powerful machine learning heuristics based
+on Conditional Random Fields and aims to make it easy to train the model with
+data that is relevant to your parsing needs.
+
+This package provides the Ruby module @code{AnyStyle}.  AnyStyle can also be
+used via the @command{anystyle} command-line utility or a web application,
+though the later has not yet been packaged for Guix.")
+      (license license:bsd-2))))
+
+(define-public anystyle
+  (package
+    (name "anystyle")
+    (version "1.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/inukshuk/anystyle-cli")
+                    (commit version)))
+              (sha256
+               (base32
+                "1bazzms04cra8516q7vydmcm31yd0a7si1pxk4waffqy7lh0pksg"))
+              (file-name (git-file-name name version))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-anystyle
+           ruby-bibtex-ruby
+           ruby-gli))
+    (native-inputs
+     (list txt2man))
+    (arguments
+     (list
+      #:modules
+      `((guix build ruby-build-system)
+        (ice-9 popen)
+        (srfi srfi-1)
+        (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'extract-gemspec 'less-strict-dependencies
+            (lambda args
+              (substitute* "anystyle-cli.gemspec"
+                (("'bibtex-ruby', '[^']*'")
+                 "'bibtex-ruby'"))))
+          (add-before 'build 'change-default-dictionary-adapter
+            (lambda args
+              ;; Since we always have gdbm available, using it will give a
+              ;; faster startup time, which is particularly worth-while for
+              ;; a command-line tool.
+              (substitute* "bin/anystyle"
+                (("default_value: 'ruby',")
+                 "default_value: 'gdbm', # patched for Guix"))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; There are no tests, but let's use this opportunity to do a
+              ;; basic test of our own that things run ok. It works especially
+              ;; well to test this here since we know the 'ruby-anystile'
+              ;; package is in its final, immutable installed form.
+              (when tests?
+                (let ((common
+                       `("require 'anystyle'"
+                         ,(string-append
+                           "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture"
+                           " et la différence (1 éd.). Paris: Éditions du"
+                           " Seuil.'"))))
+                  (for-each
+                   (lambda (lines)
+                     (apply invoke "ruby"
+                            (fold-right (lambda (line lst)
+                                          (cons* "-e" line lst))
+                                        '()
+                                        lines)))
+                   `(,common
+                     ("require 'anystyle/dictionary'"
+                      "AnyStyle::Dictionary.defaults[:adapter] = :gdbm"
+                      ,@common)))))))
+          (add-after 'wrap 'check-cli
+            (lambda* (#:key tests? outputs #:allow-other-keys)
+              (when tests?
+                (with-output-to-file "check-cli.in"
+                  (lambda ()
+                    (for-each
+                     display
+                     '("Derrida, J. (1967). L’écriture et la différence "
+                       "(1 éd.). Paris: Éditions du Seuil.\n"))))
+                (invoke (search-input-file outputs "/bin/anystyle")
+                        "parse"
+                        "check-cli.in"))))
+          (add-after 'wrap 'generate-man-page
+            ;; generating a man page also tests that the command actually runs
+            (lambda args
+              (define (run-with-output-file file command . args)
+                (format (current-output-port)
+                        "running: ~s\nwith output to: ~s\n"
+                        (cons command args)
+                        file)
+                (unless (zero?
+                         (with-output-to-file file
+                           (lambda ()
+                             (status:exit-val
+                              (close-pipe
+                               (apply open-pipe* OPEN_WRITE command args))))))
+                  (error "command failed")))
+              (let ((anystyle (string-append #$output "/bin/anystyle")))
+                (run-with-output-file "intro.txt"
+                                      anystyle "--help")
+                (for-each (lambda (cmd)
+                            (let ((file (string-append cmd ".txt")))
+                              (run-with-output-file file
+                                                    anystyle cmd "--help")
+                              ;; indent headings to create subsections
+                              (substitute* file
+                                (("^[A-Z]" orig)
+                                 (string-append " " orig)))
+                              ;; generate a section heading
+                              (call-with-output-file
+                                  (string-append "section-" file)
+                                (lambda (out)
+                                  (format out "\n\n~a COMMAND\n\n"
+                                          (string-upcase cmd))))))
+                          '("check" "find" "parse" "train"))
+                (substitute* `("intro.txt"
+                               "check.txt" "find.txt" "parse.txt" "train.txt")
+                  ;; format "tag list" for txt2man"
+                  ((" - ")
+                   "    ")
+                  ;; restore formatting of the "name" sections
+                  (("(anystyle|check|find|parse|train)    ([A-Z])" _ cmd post)
+                   (string-append cmd " - " post)))
+                (run-with-output-file "anystyle.txt"
+                                      "cat"
+                                      "intro.txt"
+                                      "section-check.txt" "check.txt"
+                                      "section-find.txt" "find.txt"
+                                      "section-parse.txt" "parse.txt"
+                                      "section-train.txt" "train.txt")
+                (run-with-output-file
+                 "anystyle.1"
+                 "txt2man"
+                 "-v" "General Commands Manual" "-t" "anystyle" "-s" "1"
+                 "-r" #$(string-append "anystyle-cli "
+                                       (package-version this-package))
+                 "-B" "check" "-B" "find" "-B" "parse" "-B" "train"
+                 "anystyle.txt")
+                (install-file "anystyle.1"
+                              (string-append #$output "/share/man/man1"))))))))
+    (home-page "https://anystyle.io")
+    (synopsis "Fast and smart citation reference parsing")
+    (description
+     "AnyStyle is a very fast and smart parser for academic reference lists
+and bibliographies.  AnyStyle uses powerful machine learning heuristics based
+on Conditional Random Fields and aims to make it easy to train the model with
+data that is relevant to your parsing needs.
+
+This package provides the @command{anystyle} command-line utility.  AnyStyle
+can also be used as a Ruby library or as a web application, though the later
+has not yet been packaged for Guix.")
+    (license license:bsd-2)
+    (properties `((upstream-name . "anystyle-cli")))))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 759bf9a631..8aad752054 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 (unmatched parenthesis <paren@disroot.org>
 ;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2022 Jim Newsome <jnewsome@torproject.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -540,10 +541,45 @@ safety and thread safety guarantees.")
                  (generate-all-checksums "vendor"))))))))))
 
 (define rust-1.57
-  (let ((base-rust
-         (rust-bootstrapped-package
-          rust-1.56 "1.57.0"
-          "06jw8ka2p3kls8p0gd4p0chhhb1ia1mlvj96zn78n7qvp71zjiim")))
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.55. e.g.:
+   ;; * feature `edition2021` is required
+   rust-1.56 "1.57.0" "06jw8ka2p3kls8p0gd4p0chhhb1ia1mlvj96zn78n7qvp71zjiim"))
+
+(define rust-1.58
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.56. e.g.:
+   ;; * error: attributes starting with `rustc` are reserved for use by the
+   ;;   `rustc` compiler
+   ;; * error: cannot find attribute `rustc_do_not_const_check` in this scope
+   ;; * error[E0522]: definition of an unknown language item:
+   ;;   `const_eval_select_ct`
+   rust-1.57 "1.58.1" "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8"))
+
+(define rust-1.59
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.57. e.g.:
+   ;; * error: `doc(primitive)` should never have been stable
+   ;; * error[E0522]: definition of an unknown language item:
+   ;;   `generator_return`
+   ;; * error[E0206]: the trait `Copy` may not be implemented for this type
+   rust-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57"))
+
+(define rust-1.60
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.58. e.g.:
+   ;; * error: unknown codegen option: `symbol-mangling-version`
+   rust-1.59 "1.60.0" "1drqr0a26x1rb2w3kj0i6abhgbs3jx5qqkrcwbwdlx7n3inq5ji0"))
+
+;;; Note: Only the latest versions of Rust are supported and tested.  The
+;;; intermediate rusts are built for bootstrapping purposes and should not
+;;; be relied upon.  This is to ease maintenance and reduce the time
+;;; required to build the full Rust bootstrap chain.
+;;;
+;;; Here we take the latest included Rust, make it public, and re-enable tests
+;;; and extra components such as rustfmt.
+(define-public rust
+  (let ((base-rust rust-1.60))
     (package
       (inherit base-rust)
       (outputs (cons "rustfmt" (package-outputs base-rust)))
@@ -682,12 +718,6 @@ safety and thread safety guarantees.")
                             `("procps" ,procps)
                             (package-native-inputs base-rust))))))
 
-;;; Note: Only the latest versions of Rust are supported and tested.  The
-;;; intermediate rusts are built for bootstrapping purposes and should not
-;;; be relied upon.  This is to ease maintenance and reduce the time
-;;; required to build the full Rust bootstrap chain.
-(define-public rust rust-1.57)
-
 (define-public rust-src
   (hidden-package
    (package
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index 7f76f8912b..bb80ff4db5 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -69,22 +69,17 @@ PARI/GP.  It has been spun off from the SageMath mathematics software system,
 but it can be used independently.")
     (license license:gpl2+)))
 
-;; The stable version of the following package is not young enough to be
-;; used with Sage, since it does not support cython; so we use a beta
-;; release.
 (define-public python-gmpy2
   (package
     (name "python-gmpy2")
-    (version "2.1.0b1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/aleaxit/gmpy")
-                    (commit (string-append "gmpy2-" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0ljvnmhxqdfsp0yy4c2hynhk5sggm63kkqsq4iwq4k9vsnx2xm97"))))
+    (version "2.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "gmpy2" version))
+       (sha256
+        (base32
+         "1lc29g3s4z5f1qbsc2x9i9sf6wrpni9pwiwmb1wwx3hjr85i8xfs"))))
     (build-system python-build-system)
     (native-inputs
      (list unzip))
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index 8669ed0db5..a1d81f5697 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -88,10 +88,10 @@
            poppler
            python                       ;need Python library
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            zlib))
     (native-inputs
-     (list pkg-config qttools util-linux))
+     (list pkg-config qttools-5 util-linux))
     (home-page "https://www.scribus.net")
     (synopsis "Desktop publishing and page layout program")
     (description
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 016142c7a9..2d652f5789 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -32,6 +32,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
@@ -672,23 +673,23 @@ bibliographic data and simple document and bibtex retrieval.")
 (define-public ugrep
   (package
     (name "ugrep")
-    (version "3.7.9")
+    (version "3.8.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/Genivia/ugrep")
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "0mj4da91r81drfl2nbgzl1krka6ksk7srjjvwgp55r6l265fk3b5"))
+               (base32 "03b3lahc3zzsznaqnrk47f1cnd5jwakvwrkz0r4m2crk09cpfv57"))
               (file-name (git-file-name name version))
               (modules '((guix build utils)))
               (snippet
-               '(begin
-                  (delete-file-recursively "bin") ; pre-built executables
-                  (for-each delete-file (find-files "tests" "^archive\\..*"))
-                  (for-each delete-file (find-files "tests" "^.*\\.pdf$"))
-                  (for-each delete-file (find-files "tests" "^.*\\.class$"))
-                  #t))))
+               #~(begin
+                   (delete-file-recursively "bin") ; pre-built executables
+                   (for-each (lambda (regexp)
+                               (for-each delete-file
+                                         (find-files "tests" regexp)))
+                             '("^archive" "\\.pdf$" "\\.class$"))))))
     (build-system gnu-build-system)
     (inputs
      (list bzip2
@@ -696,18 +697,20 @@ bibliographic data and simple document and bibtex retrieval.")
            lz4
            lzip ;; lzma
            pcre2
-           zlib))
+           zlib
+           `(,zstd "lib")))
     (arguments
-     `(#:tests? #f                  ; no way to rebuild the binary input files
-       #:test-target "test"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'check-setup
-           (lambda _
-             ;; Unpatch shebangs in tests.
-             (substitute* '("tests/Hello.bat"
-                            "tests/Hello.sh")
-               (("#!/gnu/store/.*/bin/sh") "#!/bin/sh")))))))
+     (list
+      #:tests? #f                  ; no way to rebuild the binary input files
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'check-setup
+            (lambda _
+              ;; Unpatch shebangs in tests.
+              (substitute* '("tests/Hello.bat"
+                             "tests/Hello.sh")
+                (("#!/gnu/store/.*/bin/sh") "#!/bin/sh")))))))
     (home-page "https://github.com/Genivia/ugrep/")
     (synopsis "Faster grep with an interactive query UI")
     (description "Ugrep is a ultra fast searcher of file systems, text
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index e70ba2ea95..3242d630d8 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2021 Ahmad Jarara <git@ajarara.io>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,13 +56,14 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
-  #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages cyrus-sasl)
@@ -119,8 +121,7 @@ readers and is needed to communicate with such devices through the
 (define-public eid-mw
   (package
     (name "eid-mw")
-    ;; When updating, remove the short-lived libbsd input and module import!
-    (version "5.0.28")
+    (version "5.1.6")
     (source
      (origin
        (method git-fetch)
@@ -129,20 +130,19 @@ readers and is needed to communicate with such devices through the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0fmpdx09a60ndbsvy3m6w77naqy3j6k2ydq6jdcmdvxnr31z7fmf"))))
+        (base32 "19sq9bs1580zrjw0cxykdvrm1rwfw8n0vbvy9kdjnykjjnb7g6g1"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("autoconf-archive" ,autoconf-archive)
-       ("automake" ,automake)
-       ("gettext" ,gettext-minimal)
-       ("libtool" ,libtool)
-       ("libassuan" ,libassuan)
-       ("pkg-config" ,pkg-config)
-       ("perl" ,perl)))
+     (list autoconf
+           autoconf-archive
+           automake
+           gettext-minimal
+           libassuan
+           libtool
+           perl
+           pkg-config))
     (inputs
      (list curl
-           libbsd
            openssl
            gtk+
            pcsc-lite
@@ -762,7 +762,7 @@ an unprivileged user.")
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags (list "-DBUILD_TESTING=on")))
-    (native-inputs (list pkg-config qttools))
+    (native-inputs (list pkg-config qttools-5))
     (inputs (list catch-framework2))
     (home-page "https://github.com/tplgy/cppcodec")
     (synopsis "Header library to encode/decode base64, base64url, etc.")
@@ -786,13 +786,13 @@ base64url, base32, base32hex and hex.")
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f)) ;no test suite
-    (native-inputs (list pkg-config qttools))
+    (native-inputs (list pkg-config qttools-5))
     (inputs (list cppcodec
                   hidapi
                   libnitrokey
                   libusb
                   qtbase-5
-                  qtsvg))
+                  qtsvg-5))
     (home-page "https://github.com/Nitrokey/nitrokey-app")
     (synopsis "GUI tool for Nitrokey devices")
     (description
@@ -856,14 +856,14 @@ devices.")
 
     (build-system cmake-build-system)
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (inputs
      (list qtbase-5
-           qtsvg
-           qtdeclarative
-           qtwebsockets
+           qtsvg-5
+           qtdeclarative-5
+           qtwebsockets-5
            qtgraphicaleffects
-           qtquickcontrols2
+           qtquickcontrols2-5
            pcsc-lite
            openssl))
     (arguments
@@ -922,3 +922,48 @@ and assertion signatures.
 libfido2 supports the FIDO U2F (CTAP 1) and FIDO 2.0 (CTAP 2) protocols.")
     (license license:bsd-2)
     (home-page "https://github.com/Yubico/libfido2")))
+
+(define-public cardpeek
+  (package
+    (name "cardpeek")
+    (version "0.8.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/L1L1/cardpeek")
+                    (commit (string-append "cardpeek-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ighpl7nvcvwnsd6r5h5n9p95kclwrq99hq7bry7s53yr57l6588"))))
+    (inputs (list curl
+                  gtk+
+                  lua-5.2
+                  openssl
+                  pcsc-lite
+                  readline))
+    (native-inputs (list autoconf
+                         automake
+                         `(,glib "bin") ;for glib-compile-resources
+                         libtool
+                         pkg-config))
+    (build-system gnu-build-system)
+    (synopsis "Tool to read the contents of various smart cards")
+    (description
+     "Cardpeek is a graphical tool to read the contents of ISO7816 smart cards.
+It is extensible with the LUA scripting language.
+
+It supports the following type of cards:
+@itemize
+@item Bank cards (VISA, MasterCard, CB and UK Post Office Account cards)
+@item Passports and the Belgian identity card
+@item Transport cards (Navigo, MOBIB, RavKav and VIVA cards)
+@item Older GSM SIM cards without USIM data
+@item Vitale 2 Health card
+@item Moneo Electronic purse card
+@item Driver Tachograph cards
+@item OpenPGP Cards (beta)
+@end itemize
+It also has limited support for Mifare Classic compatible cards (Thalys card)")
+    (license license:gpl3+)
+    (home-page "http://pannetrat.com/Cardpeek")))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 3ff90deb87..ff94a21aae 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -30,8 +30,8 @@
 
 (define-module (gnu packages serialization)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix gexp)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix hg-download)
   #:use-module (guix git-download)
@@ -134,7 +134,7 @@ implement RPC protocols.")
 (define-public cereal
   (package
     (name "cereal")
-    (version "1.3.0")
+    (version "1.3.2")
     (source
      (origin
        (method git-fetch)
@@ -144,22 +144,22 @@ implement RPC protocols.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0hc8wh9dwpc1w1zf5lfss4vg5hmgpblqxbrpp1rggicpx9ar831p"))))
+         "02sd90ynya7wg013zwzjr79fsv4bzqgfg9l2mapd4j38rv06gahx"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags '("-DSKIP_PORTABILITY_TEST=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'skip-sandbox
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("add_subdirectory\\(sandbox\\)") ""))))
-         (add-after 'install 'install-doc
-           (lambda _
-             (let ((doc (string-append %output "/share/doc/html")))
-               (invoke "make" "doc")
-               (mkdir-p doc)
-               (copy-recursively "doc/html" doc)))))))
+     (list
+      #:configure-flags #~'("-DSKIP_PORTABILITY_TEST=ON"
+                            ;; Don't bother building the sandbox examples.
+                            "-DSKIP_PERFORMANCE_COMPARISON=ON"
+                            "-DBUILD_SANDBOX=OFF")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-doc
+            (lambda _
+              (let ((doc (string-append #$output "/share/doc/html")))
+                (invoke "make" "doc")
+                (mkdir-p doc)
+                (copy-recursively "doc/html" doc)))))))
     (native-inputs
      (list doxygen))
     (home-page "https://uscilab.github.io/cereal/")
@@ -168,7 +168,44 @@ implement RPC protocols.")
      "Cereal is a header-only C++11 serialization library.  Cereal takes
 arbitrary data types and reversibly turns them into different representations,
 such as compact binary encodings, XML, or JSON.")
-    (license license:bsd-3)))
+    ;; Note: Cereal bundles forked versions of rapidxml and rapidjson
+    ;; (see include/cereal/external/), so list their licenses too.
+    (license (list license:bsd-3        ;Cereal itself
+                   ;; The bundled RapidXML is dual Boost/Expat (users choice).
+                   ;; RapidJSON is Expat licensed, and further bundles a
+                   ;; stdint.h with BSD-3.
+                   license:boost1.0 license:expat
+                   ;; Finally, include/cereal/external/base64.hpp has a
+                   ;; home-grown BSD-like license.
+                   (license:non-copyleft
+                    "file://include/cereal/external/LICENSE")))))
+
+;; Some packages fail with the latest version.  Remove this variable
+;; when unused.
+(define-public cereal-1.3.0
+  (package
+    (inherit cereal)
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/USCiLab/cereal")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cereal" version))
+       (sha256
+        (base32
+         "0hc8wh9dwpc1w1zf5lfss4vg5hmgpblqxbrpp1rggicpx9ar831p"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments cereal)
+       ((#:configure-flags flags #~'())
+        #~'("-DSKIP_PORTABILITY_TEST=ON"))
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-before 'configure 'skip-sandbox
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("add_subdirectory\\(sandbox\\)") ""))))))))))
 
 (define-public msgpack
   (package
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 1d28e6eb91..6b3acc0579 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -844,7 +844,7 @@ Shell (pdksh).")
 (define-public oil
   (package
     (name "oil")
-    (version "0.9.9")
+    (version "0.12.0")
     (source
      ;; oil's sources contain a modified version of CPython 2.7.13.
      ;; According to https://www.oilshell.org/blog/2017/05/05.html
@@ -857,7 +857,7 @@ Shell (pdksh).")
        (uri (string-append "https://www.oilshell.org/download/oil-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1ymszq0wy7sy709yqx8dpmv7b37fkc57bdg02ah2gnjbvbk6s2z1"))))
+        (base32 "1sz5xb88773ass6ip5yxmnby9p6h0bz1d02n6n0cna3hdzqn7bpv"))))
     (build-system gnu-build-system)
     (arguments
      (list #:strip-binaries? #f         ; strip breaks the binary
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index 9e92fbcc5b..b1bbb7f996 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -665,15 +665,13 @@ user interface to the FEniCS core components and external libraries.")
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (with-directory-excursion "test"
-                 ;; Note: The test test_snes_set_from_options() in the file
-                 ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
-                 ;; Limit the number of jobs to 3 as 500 MiB of memory is used
-                 ;; per process.
-                 (invoke "mpirun" "-np" (number->string
-                                         (min 3 (parallel-job-count)))
-                         "python" "-B" "-m"
-                         "pytest" "unit" "--ignore"
-                         "unit/nls/test_PETScSNES_solver.py")))))
+                 (invoke
+                  "pytest" "unit"
+                  ;; The test test_snes_set_from_options() in the file
+                  ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
+                  "--ignore" "unit/nls/test_PETScSNES_solver.py"
+                  ;; Fails with a segfault.
+                  "--ignore" "unit/io/test_XDMF.py")))))
          (add-after 'install 'install-demo-files
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((demos (string-append
diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm
index f335dc1a39..885fcf8c15 100644
--- a/gnu/packages/slang.scm
+++ b/gnu/packages/slang.scm
@@ -147,34 +147,41 @@ to inspect different parts of the same file, at the same time.")
     (inputs
      (list slang popt python fribidi))
     (arguments
-     `(#:tests? #f    ; no test suite
+     (list
+       #:tests? #f    ; no test suite
        #:configure-flags
        ;; Set the correct RUNPATH in binaries.
-       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+       #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
        #:make-flags
        ;; configure uses a hard-coded search of /usr/include/python* to set
        ;; this variable, and does not allow us to override it from the
        ;; command line.  Fortunately, the Makefile does, so provide it here.
-       (list (string-append "PYTHONVERS=python"
-                            ,(version-major+minor (package-version python))))
+       #~(list
+          (string-append "PYTHONVERS=python"
+                         #$(version-major+minor (package-version python))))
        #:phases
-       (modify-phases %standard-phases
-         (add-after
-          'unpack 'patch-/usr/bin/install
-          (lambda _
-            (substitute* "po/Makefile"
-              (("/usr/bin/install") "install"))
-            #t))
-         (add-after
-          'install 'move-python
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out  (assoc-ref outputs "out"))
-                  (py   (assoc-ref outputs "python"))
-                  (ver ,(version-major+minor (package-version python))))
-              (mkdir-p (string-append py "/lib"))
-              (rename-file (string-append out "/lib/python" ver)
-                           (string-append py  "/lib/python" ver))
-              #t))))))
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'patch-/usr/bin/install
+             (lambda _
+               (substitute* "po/Makefile"
+                 (("/usr/bin/install") "install"))))
+           (add-before 'build 'add-python-config-to-path
+             (lambda* (#:key target #:allow-other-keys)
+               ;; When cross-compiling python-config is not present in $PATH.
+               ;;
+               ;; It is a shell script without dependencies on target binaries
+               ;; so it can be run on the host to allow cross-compilation.
+               (when target
+                 (let ((path (getenv "PATH"))
+                       (py (string-append #$python "/bin")))
+                   (setenv "PATH" (string-append path ":" py))))))
+           (add-after 'install 'move-python
+             (lambda* _
+               (let ((ver #$(version-major+minor (package-version python))))
+                 (mkdir-p (string-append #$output:python "/lib"))
+                 (rename-file
+                   (string-append #$output "/lib/python" ver)
+                   (string-append #$output:python  "/lib/python" ver))))))))
     (home-page "https://pagure.io/newt")
     (synopsis "Not Erik's Windowing Toolkit - text mode windowing with slang")
     (description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index c837be2269..5ab2c5e764 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -507,14 +507,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.")
 (define-public r-mass
   (package
     (name "r-mass")
-    (version "7.3-57")
+    (version "7.3-58.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MASS" version))
        (sha256
         (base32
-         "13asg609szqq8d1a4ybr508qcanr9gvqd439vfras6mw0l0qi2xx"))))
+         "080l4gqkaw9r4s7b0q9hda489rn24p4ma5xf4g8405qkzgif817p"))))
     (properties `((upstream-name . "MASS")))
     (build-system r-build-system)
     (home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
@@ -974,13 +974,13 @@ OpenSSL should be used.")
 (define-public r-estimability
   (package
     (name "r-estimability")
-    (version "1.3")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "estimability" version))
               (sha256
                (base32
-                "0cifdaa71spkcxl4db4z884jrya865sg3dhcv4isd8fnzg2pjcd3"))))
+                "090i1xwdp4fwj8jr8nk13w49516lfkk5mq1w7l0lff9g8lgaynn6"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/estimability")
     (synopsis "Tools for assessing estimability of linear predictions")
@@ -1160,14 +1160,14 @@ solution for sending email, including attachments, from within R.")
 (define-public r-stringi
   (package
     (name "r-stringi")
-    (version "1.7.6")
+    (version "1.7.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "stringi" version))
        (sha256
         (base32
-         "1v0rj5svgvn1mlf69yzm6jm00fxmrsxazs9xymzrf0apxjpxb8qf"))))
+         "074b8wky3dhm4vcdqliwz6cqw20ah2x4dcasvnidilbfrnqii2ak"))))
     (build-system r-build-system)
     (inputs (list icu4c))
     (native-inputs (list pkg-config))
@@ -1756,13 +1756,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "1.0.3")
+    (version "1.0.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "0ghfbs0sw502hk5amxr8i5lwgv6vyqcq2a2liqf57k9dm6qlik04"))))
+                "15l65as409b3y9sn1jm7lb2019jsp19w6qxsgvimr1badka8kdqz"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1774,18 +1774,17 @@ like tidy evaluation.")
 (define-public r-tibble
   (package
     (name "r-tibble")
-    (version "3.1.7")
+    (version "3.1.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tibble" version))
        (sha256
         (base32
-         "0wn8j7slfqrdl126g536sg1xkrvjd9rlsk0bjqk3b03nyj8hi9g1"))))
+         "1spdbk5s0wlipfq8jc08p2mk5fq2ql9hm8iwwlfzdlhqbl3hxwxc"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-ellipsis
-           r-fansi
+     (list r-fansi
            r-lifecycle
            r-magrittr
            r-pkgconfig
@@ -1923,14 +1922,14 @@ side.")
 (define-public r-locfit
   (package
     (name "r-locfit")
-    (version "1.5-9.5")
+    (version "1.5-9.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "locfit" version))
        (sha256
         (base32
-         "08yywswywmvyys8380576n43h3xyiviq1p2392zcivlbknnjp7zx"))))
+         "0xilf6gp3m8xla2fvxr491j31pvim707mnhswvm9yxnb0d09xs0y"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice))
@@ -2399,13 +2398,13 @@ tables, autolinks and strikethrough text.")
 (define-public r-roxygen2
   (package
     (name "r-roxygen2")
-    (version "7.2.0")
+    (version "7.2.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "roxygen2" version))
               (sha256
                (base32
-                "12s436jn7aagjpc2lnlrhzwqgsdl8lbbwhkddih6rnxrczawzgrf"))))
+                "08fs5jw6npriqsr8pribs2yy1r8163xzcv4gmlgmcaywj4jk9w6j"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-brew
@@ -2544,33 +2543,34 @@ informative error messages when it's not available.")
 (define-public r-devtools
   (package
     (name "r-devtools")
-    (version "2.4.3")
+    (version "2.4.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "devtools" version))
               (sha256
                (base32
-                "0kvbw218jp8pd2lgdjyn94v2iji75s385hkn1qbikcm0pjlmj8g4"))))
+                "0kckjr12qi8nw498x3iw648pllz63j5p6fhpv8z8jc4z4sfpbmmc"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-callr
-           r-cli
+     (list r-cli
            r-desc
            r-ellipsis
            r-fs
-           r-httr
            r-lifecycle
            r-memoise
+           r-miniui
            r-pkgbuild
+           r-pkgdown
            r-pkgload
+           r-profvis
            r-rcmdcheck
            r-remotes
            r-rlang
            r-roxygen2
-           r-rstudioapi
            r-rversions
            r-sessioninfo
            r-testthat
+           r-urlchecker
            r-usethis
            r-withr))
     (native-inputs
@@ -2693,18 +2693,23 @@ scaling functions for R.")
 (define-public r-latticeextra
   (package
     (name "r-latticeextra")
-    (version "0.6-29")
+    (version "0.6-30")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "latticeExtra" version))
        (sha256
         (base32
-         "04fzwcqs594rk5qp98yilh3kdh3sw4xf8wld5rp94ggpaqfw7bbc"))))
+         "1vcy4xr6c53nbvnxikjnlf5kd3n5hf4d8dzj5d41hj322dlsfl65"))))
     (properties `((upstream-name . "latticeExtra")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-jpeg r-lattice r-png r-rcolorbrewer))
+     (list r-interp
+           r-jpeg
+           r-lattice
+           r-mass
+           r-png
+           r-rcolorbrewer))
     (home-page "http://latticeextra.r-forge.r-project.org/")
     (synopsis "Extra graphical utilities based on lattice")
     (description
@@ -2923,13 +2928,13 @@ a column in data frame.")
 (define-public r-rsqlite
   (package
     (name "r-rsqlite")
-    (version "2.2.14")
+    (version "2.2.15")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RSQLite" version))
               (sha256
                (base32
-                "0z307d7rx7blh2apc9dbw9vgad2ldbf9vbdjhmwlj0mwbs3nmqra"))))
+                "1cypz9i85fnp3izk0px9r8s3l1jwn5kmgs2avc0fi3fad1775029"))))
     (properties `((upstream-name . "RSQLite")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2953,13 +2958,13 @@ engine (version 3.8.8.2) is included.")
 (define-public r-rcurl
   (package
     (name "r-rcurl")
-    (version "1.98-1.7")
+    (version "1.98-1.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RCurl" version))
               (sha256
                (base32
-                "138qfkw03j0g5wby24811w9f3virz1fxlgkgnavf6gv3c00jvhia"))))
+                "0a4gr264ycy6am4849y79h3vc9vg7cgpizb88v4xw076pyn52fqy"))))
     (properties `((upstream-name . "RCurl")))
     (build-system r-build-system)
     (arguments
@@ -2976,7 +2981,7 @@ if (certs != \"\") { .opts = merge.list(.opts, list(cainfo=certs)) }
     (native-inputs
      (list libxml2))
     (inputs
-     (list curl))
+     (list curl zlib))
     (propagated-inputs
      (list r-bitops))
     (home-page "http://www.omegahat.net/RCurl")
@@ -3991,13 +3996,13 @@ developing R packages.")
 (define-public r-r-cache
   (package
     (name "r-r-cache")
-    (version "0.15.0")
+    (version "0.16.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "R.cache" version))
               (sha256
                (base32
-                "09pipn1974ivjh4sm3n5fjlh31rilf87p30qwq7y25vriyqd7d5d"))))
+                "14cja0d78mzipb94cwgdl00k5r7awjclzxl30c77j6jpc68l0lvq"))))
     (properties `((upstream-name . "R.cache")))
     (build-system r-build-system)
     (arguments
@@ -4588,14 +4593,14 @@ Zurich, including many that are related to graphics.")
 (define-public r-gtools
   (package
     (name "r-gtools")
-    (version "3.9.2.2")
+    (version "3.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gtools" version))
        (sha256
         (base32
-         "0hyqh1r9vxy7hfnir22439k4jlk4adcxdf78ryz5bk06blvqc81m"))))
+         "0criwc0jmbrgaslh2kdjirgdzbf0ycry8yjryi95fb9qgckm7yvs"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/gtools")
     (synopsis "Various R programming tools")
@@ -5218,14 +5223,14 @@ regression methodology including model selections and multivariate statistics.")
 (define-public r-pcapp
   (package
     (name "r-pcapp")
-    (version "2.0-1")
+    (version "2.0-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pcaPP" version))
        (sha256
         (base32
-         "06hjhr0dzdp5yhd421q9scbv6w6bchicbn2bl7am490ncgrf544n"))))
+         "0jxm1cl48bzfi0s0f2b0y0r5nq7x0iypgkasa3v5myhb9sbnd2x1"))))
     (properties `((upstream-name . "pcaPP")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5291,14 +5296,14 @@ generally.")
 (define-public r-robust
   (package
     (name "r-robust")
-    (version "0.7-0")
+    (version "0.7-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robust" version))
        (sha256
         (base32
-         "1fc4h19b7gn9ya2j2ia8vfgsycwlyc23frj54k11dr45w4qaq6jy"))))
+         "1pv5xvns3p8dpaadf6v0fqz099ml768ahgp271wpiclrcc6cgapg"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-fit-models r-lattice r-mass r-robustbase r-rrcov))
@@ -5368,13 +5373,13 @@ groupings.")
 (define-public r-vgam
   (package
     (name "r-vgam")
-    (version "1.1-6")
+    (version "1.1-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "VGAM" version))
        (sha256
-        (base32 "05yl1lbpambwg3i3rqn6aanaym7c3s8g7hi0bph98iyxqnx62sj4"))))
+        (base32 "0zkmj7crkkvi7ki88f6vfn7x8gf0ycrbg13wann7wirj4cwjvid4"))))
     (properties `((upstream-name . "VGAM")))
     (build-system r-build-system)
     (native-inputs
@@ -5503,13 +5508,13 @@ using modular prediction and response module classes.")
 (define-public r-quantreg
   (package
     (name "r-quantreg")
-    (version "5.93")
+    (version "5.94")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantreg" version))
        (sha256
-        (base32 "0fg5x6sa8mz2hh9nak0wajh4l6h03x216462vs94rgq0ln24kafl"))))
+        (base32 "1h8p3gzaas8gdvyh13ir8xc92hiybmizb0yhnwk7gvbjp768bmaj"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -5562,14 +5567,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-29")
+    (version "1.1-30")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "09p836an3pap7vdbhf1zkl0a7wc63ax2dc8mjrd6lw64ikj7vnc3"))))
+         "03rhg6cnsvdk06a1yxkivfvfwlx9934nd9q6jnp0bzscnv2dzazx"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-boot
@@ -5856,14 +5861,14 @@ genome-wide association studies can be analyzed efficiently.")
 (define-public r-cairo
   (package
     (name "r-cairo")
-    (version "1.5-15")
+    (version "1.6-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Cairo" version))
        (sha256
         (base32
-         "17g8s80h9kc0a4zpb153sprjm6ndjl3gkpb63aq5xh9ickzv2fmv"))))
+         "1lxpmzy6k8y9b6g7x68x0giy8bblxmbc4q136hkzajmailfsqqn7"))))
     (properties `((upstream-name . "Cairo")))
     (build-system r-build-system)
     (inputs
@@ -6624,7 +6629,7 @@ or eta squared effect size.")
     (description
       "Contains routines for logspline density estimation.  The function
 @code{oldlogspline()} uses the same algorithm as the logspline package version
-1.0.x; i.e.  the Kooperberg and Stone (1992) algorithm (with an improved
+1.0.x; i.e., the Kooperberg and Stone (1992) algorithm (with an improved
 interface).  The recommended routine @code{logspline()} uses an algorithm from
 @url{doi:10.1214/aos/1031594728,Stone et al (1997)}.")
     (license license:asl2.0)))
@@ -6632,14 +6637,14 @@ interface).  The recommended routine @code{logspline()} uses an algorithm from
 (define-public r-effects
   (package
     (name "r-effects")
-    (version "4.2-1")
+    (version "4.2-2")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "effects" version))
         (sha256
           (base32
-            "0h3n2kd43fddy29hlv1nckw3wglykwrgk1hp8khb0pnm2i12b5sk"))))
+            "0nlj79am9a1yg737dhfa8dj1kj2hly9pfknmphsbcvlgxqn35vig"))))
     (properties `((upstream-name . "effects")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6652,7 +6657,7 @@ interface).  The recommended routine @code{logspline()} uses an algorithm from
             r-nnet
             r-survey))
     (native-inputs
-      (list r-knitr r-car))
+      (list r-knitr))
     (home-page "https://www.r-project.org")
     (synopsis
       "Effect Displays for Linear, Generalized Linear, and Other Models")
@@ -6664,19 +6669,18 @@ various statistical models with linear predictors.")
 (define-public r-bayesfactor
   (package
     (name "r-bayesfactor")
-    (version "0.9.12-4.3")
+    (version "0.9.12-4.4")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "BayesFactor" version))
         (sha256
           (base32
-            "171hbr445v8mq4hqi1k8q3h8zqsccwjv0a2mj98h9b77667ziyfw"))))
+            "02bhlamnkxp9wqi2cp1i0dxmqdf3y3l872ad9z39xwripbi4kc7a"))))
     (properties `((upstream-name . "BayesFactor")))
     (build-system r-build-system)
     (propagated-inputs
       (list r-coda
-            r-gtools
             r-hypergeo
             r-matrix
             r-matrixmodels
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 8dd8f76143..dbc3537ac6 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2021 Nikolay Korotkiy <sikmir@disroot.org>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -122,7 +123,7 @@ terminal like @code{st}.")
     (synopsis "Tab interface for application supporting Xembed")
     (description "Tabbed is a generic tabbed frontend to xembed-aware
 applications.  It was originally designed for surf but also usable with many
-other applications, i.e. st, uzbl, urxvt and xterm.")
+other applications, i.e., st, uzbl, urxvt and xterm.")
     (license
      ;; Dual-licensed.
      (list
@@ -1180,3 +1181,39 @@ import and export OPML and to fetch, filter, merge and order feed items.")
 pipe and compress.")
       (home-page "https://git.suckless.org/farbfeld/")
       (license license:isc))))
+
+(define-public svkbd
+  (package
+    (name "svkbd")
+    (version "0.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://dl.suckless.org/tools/svkbd-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0nhgmr38pk1a8zrcrxd1ygh0m843a3bdchkv8phl508x7vy63hpv"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f
+           #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "PREFIX=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (substitute* "config.mk"
+                     (("/usr/local") #$output)
+                     (("/usr/X11R6") #$libx11)
+                     (("/usr/include/freetype2") (string-append #$freetype
+                                                  "/include/freetype2")))))
+               (delete 'configure)))) ;no configure script
+    (native-inputs (list pkg-config))
+    (inputs (list freetype libx11 libxft libxtst libxinerama))
+    (propagated-inputs (list glibc-utf8-locales))
+    (home-page "https://tools.suckless.org/x/svkbd/")
+    (synopsis "Virtual on-screen keyboard")
+    (description "svkbd is a simple virtual keyboard, intended to be used in
+environments, where no keyboard is available.")
+    (license license:expat)))
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 3dfaf40796..8c174c98ba 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -174,7 +174,7 @@
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("ruby" ,ruby)))
     (inputs
      (list appstream
@@ -189,19 +189,19 @@
            libzip
            openssl
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
            qtkeychain
-           qtquickcontrols2
+           qtquickcontrols2-5
            qtsolutions
-           qtsvg
-           qtwebchannel
-           qtwebsockets
+           qtsvg-5
+           qtwebchannel-5
+           qtwebsockets-5
            sqlite
            xdg-utils
            zlib))
     (propagated-inputs
-     (list qtwebengine))
+     (list qtwebengine-5))
     (synopsis "Desktop sync client for Nextcloud")
     (description "Nextcloud-Desktop is a tool to synchronize files from
 Nextcloud Server with your computer.")
@@ -347,7 +347,7 @@ See also: megacmd, the official tool set by MEGA.")
        ("extra-cmake-modules" ,extra-cmake-modules)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)))
+       ("qtlinguist" ,qttools-5)))
     (inputs
      (list qtbase-5 qtkeychain sqlite zlib))
     (home-page "https://owncloud.org")
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index df109e862b..bae784d65c 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -73,7 +73,7 @@
                  (("/usr") out))
                #t))))))
     (native-inputs
-     (list qttools))           ; for Qt5LinguistTools
+     (list qttools-5))           ; for Qt5LinguistTools
     (inputs
      `(("avahi" ,avahi)
        ("python"  ,python-wrapper)
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index f8f52a8ccd..c0b3cd963c 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -1,10 +1,13 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Hamzeh Nasajpour <h.nasajpour@pantherx.org>
 ;;; Copyright © 2021 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
+;;; Copyright © 2021 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +35,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages libreoffice)  ;for hunspell
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
@@ -39,6 +43,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (guix download)
@@ -49,7 +54,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system meson)
-  #:use-module (guix build-system python))
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system qt))
 
 (define-public clikan
   (let ((commit "55ab29e68263c6fed2844aef96fbebacda3eba9b")
@@ -281,6 +287,33 @@ to with the goal of improving your focus and enhancing your productivity.
 You can also use it to fall asleep in a noisy environment.")
     (license license:gpl3+)))
 
+(define-public feathernotes
+  (package
+    (name "feathernotes")
+    (version "0.10.0")
+    (home-page "https://github.com/tsujan/FeatherNotes")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "V" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "122pbbxvi0mmhbz8m8far71vm72090r5cafss4hvrsjmq52a0y4k"))))
+    (build-system qt-build-system)
+    (arguments (list #:tests? #f))           ; no upstream tests
+    (native-inputs (list pkg-config qttools-5))           ; for lrelease
+    (inputs (list hunspell qtsvg-5 qtx11extras qtbase-5))
+    (synopsis "GUI hierarchical notes-manager")
+    (description
+     "FeatherNotes is a GUI hierarchical notes-manager for Linux.
+It is independent of any desktop environment and has rich text formatting,
+image embedding and inserting editable tables, spell checking, searchable
+tags, drag and drop support, tray icon, node icons, hyperlinks, pdf and html
+export, password protection and auto-saving.")
+    (license license:gpl3+)))
+
 (define-public wtime
   (package
     (name "wtime")
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 6c5efc50b9..873ff6246b 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -383,7 +383,7 @@ Telegram project, for its use in telegram desktop client.")
        ("gtk+:bin" ,gtk+ "bin")
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (inputs
      `(("alsa" ,alsa-lib)
        ("c++-gsl" ,c++-gsl)
@@ -566,7 +566,7 @@ Telegram project, for its use in telegram desktop client.")
        ("pulseaudio" ,pulseaudio)
        ("qrcodegen" ,qrcodegen-cpp)
        ("qt" ,qtbase-5)
-       ("qtsvg" ,qtsvg)
+       ("qtsvg-5" ,qtsvg-5)
        ("qt5ct" ,qt5ct)
        ("qtimageformats" ,qtimageformats)
        ("qtwayland" ,qtwayland)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index e3071d9b75..14c7087125 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -120,7 +120,7 @@
     (native-inputs
      (list automake autoconf pkg-config))
     (inputs
-     (list qtbase-5 qtdeclarative))
+     (list qtbase-5 qtdeclarative-5))
     (synopsis "Phone Simulator for modem testing")
     (description
      "Phonesim is a modem emulator that oFono uses for development and
@@ -646,14 +646,14 @@ address of one of the participants.")
            protobuf
            pulseaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            speech-dispatcher
            speex ; avoid bundled
            speexdsp ; avoid bundled
            ;; xiph-rnnoise ; TODO: unbundle rnnoise
            ))
     (native-inputs
-     (list pkg-config python qttools))
+     (list pkg-config python qttools-5))
     (synopsis "Low-latency, high quality voice chat software")
     (description
      "Mumble is an low-latency, high quality voice chat
@@ -695,7 +695,7 @@ Mumble consists of two applications for separate usage:
         "-DWITH_G729=On"                ; For G729 Codec Support
         "-DWITH_SPEEX=On")))            ; For Speex Codec Support
     (native-inputs
-     (list bison flex qttools))
+     (list bison flex qttools-5))
     (inputs
      (list alsa-lib
            bcg729
@@ -706,8 +706,8 @@ Mumble consists of two applications for separate usage:
            libsndfile
            libxml2
            qtbase-5
-           qtdeclarative
-           qtquickcontrols
+           qtdeclarative-5
+           qtquickcontrols-5
            readline
            speex
            speexdsp
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 4dfc51b283..1b08ec4979 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -783,7 +783,8 @@ embedded kernel situations.")
                       (("COMMODORE_PET") "PROGGY_TINY"))))))
       (build-system gnu-build-system)
       (inputs
-       (list qtbase-5 qtdeclarative qtgraphicaleffects qtquickcontrols2 bash-minimal))
+       (list qtbase-5 qtdeclarative-5 qtgraphicaleffects
+             qtquickcontrols-5 qtquickcontrols2-5 bash-minimal))
       (arguments
        `(#:phases
          (modify-phases %standard-phases
@@ -807,6 +808,7 @@ embedded kernel situations.")
                                (string-append (assoc-ref inputs i) qml))
                              '("qtdeclarative"
                                "qtgraphicaleffects"
+                               "qtquickcontrols"
                                "qtquickcontrols2"))))))))
            (add-after 'install 'add-alternate-name
              (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 8e80f23f18..d4db2a61ac 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -22,6 +22,8 @@
 ;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
 ;;; Copyright © 2022 Simon South <simon@simonsouth.net>
 ;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2022 Fabio Natali <me@fabionatali.com>
+;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -158,6 +160,7 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
     (file-name (string-append "hyph-utf8-scripts-"
                               (number->string %texlive-revision)
                               "-checkout"))
+    (patches (search-patches "texlive-hyph-utf8-no-byebug.patch"))
     (sha256
      (base32
       "04xzf5gr3ylyh3ls09imrx4mwq3qp1k97r9njzlan6hlff875rx2"))))
@@ -187,7 +190,8 @@ files from LOCATIONS with expected checksum HASH.  CODE is not currently in use.
                          (string-append root "/tex/generic/hyph-utf8/patterns/quote")))
                    (mkdir "scripts")
                    (copy-recursively
-                    (assoc-ref inputs "hyph-utf8-scripts") "scripts")
+                    (dirname (search-input-file inputs "hyph-utf8.rb"))
+                    "scripts")
 
                    ;; Prepare target directories
                    (mkdir-p patterns)
@@ -225,9 +229,7 @@ files from LOCATIONS with expected checksum HASH.  CODE is not currently in use.
                         (string-append "File.join(\"" ptex "\"")))
                      (invoke "ruby" "generate-ptex-patterns.rb")))))))))
       (native-inputs
-       `(("ruby" ,ruby)
-         ("ruby-hydra" ,ruby-hydra)
-         ("hyph-utf8-scripts" ,hyph-utf8-scripts)))
+       (list ruby ruby-hydra-minimal hyph-utf8-scripts))
       (home-page "https://ctan.org/pkg/hyph-utf8"))))
 
 (define texlive-extra-src
@@ -985,6 +987,26 @@ LaTeX user is requesting.
 Tip: installing @code{texlive-cbfonts} will automatically propagate this one.")
     (license license:lppl1.3c+)))
 
+(define-public texlive-cite
+  (package
+    (inherit (simple-texlive-package
+              "texlive-cite"
+              (list "doc/latex/cite/" "tex/latex/cite/")
+              (base32
+               "0b1amznayxj80dmqbzcysmj7q8aksbyz98k6djsqi0mhwp1cd0fd")
+              #:trivial? #t))
+    (version (number->string %texlive-revision))
+    (home-page "https://ctan.org/pkg/cite")
+    (synopsis "Improved citation handling in LaTeX")
+    (description
+     "The package supports compressed, sorted lists of numerical citations,
+and also deals with various punctuation and other issues of representation,
+including comprehensive management of break points.  The package is compatible
+with both hyperref and backref.  The package is (unsurprisingly) part of the
+cite bundle of the author's citation-related packages.")
+    (license (license:fsf-free
+              "/share/texmf-dist/doc/latex/cite/README"))))
+
 (define-public texlive-cm
   (let ((template (simple-texlive-package
                    "texlive-cm"
@@ -8500,7 +8522,7 @@ and Karl Berry.")
            mythes
            python
            qtbase-5
-           qtsvg
+           qtsvg-5
            zlib))
     (propagated-inputs
      `(("texlive" ,(texlive-updmap.cfg (list texlive-fonts-ec)))))
@@ -11769,3 +11791,432 @@ to Norsk of standard “LaTeX names”.")
 Danish in @code{babel}.  It provides all the necessary macros, definitions and
 settings to typeset Danish documents.")
       (license license:lppl1.3c+))))
+
+(define-public texlive-mdframed
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-mdframed"
+      (list
+       "doc/latex/mdframed/"
+       "source/latex/mdframed/"
+       "tex/latex/mdframed/")
+      (base32 "1i5rm946wg43rjckxlfhx79zfx5cgd3bxk71206hd1dqkrgpdpa8")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/mdframed")
+    (synopsis "Framed environments that can split at page boundaries")
+    (description
+     "The @code{mdframed} package develops the facilities of @code{framed} in
+providing breakable framed and coloured boxes.  The user may instruct the
+package to perform its operations using default LaTeX commands, PStricks or
+TikZ.")
+    (license license:lppl)))
+
+(define-public texlive-setspace
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-setspace"
+      (list "doc/latex/setspace/" "tex/latex/setspace/")
+      (base32 "00ik8qgkw3ivh3z827zjf7gbwkbsmdcmv22c6ap543mpgaqqjcfm")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/setspace")
+    (synopsis "Set space between lines")
+    (description
+     "The @code{setspace} package provides support for setting the spacing between
+lines in a document.  Package options include @code{singlespacing},
+@code{onehalfspacing}, and @code{doublespacing}.  Alternatively the spacing
+can be changed as required with the @code{\\singlespacing},
+@code{\\onehalfspacing}, and @code{\\doublespacing} commands.  Other size
+spacings also available.")))
+
+(define-public texlive-pgfgantt
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-pgfgantt"
+      (list
+       "doc/latex/pgfgantt/"
+       "source/latex/pgfgantt/"
+       "tex/latex/pgfgantt/")
+      (base32 "0bm034iizk4sd7p5x7vkj7v57dc0bf2lswpsb32s4qlg4s7h6jqz")
+      #:trivial? #t))
+    (propagated-inputs (list texlive-pgf))
+    (home-page "https://ctan.org/graphics/pgf/contrib/pgfgantt")
+    (synopsis "Draw Gantt charts with TikZ")
+    (description
+     "The @code{pgfgantt} package provides an environment for drawing Gantt charts
+that contain various elements (titles, bars, milestones, groups and links).
+Several keys customize the appearance of the chart elements.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-pdflscape
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-pdflscape"
+      (list "doc/latex/pdflscape/"
+            "source/latex/pdflscape/"
+            "tex/latex/pdflscape/")
+      (base32 "05vvmwd8vlzs2x2rm6pfzlvrrihqf924d7krlrkvc6giiwyfsic4")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/pdflscape")
+    (synopsis "Make landscape pages display as landscape")
+    (description
+     "The @code{pdflscape} package adds PDF support to the @code{landscape}
+environment of package @code{lscape}, by setting the PDF @code{/Rotate} page
+attribute.  Pages with this attribute will be displayed in landscape
+orientation by conforming PDF viewers.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-datetime2
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-datetime2"
+      (list "doc/latex/datetime2/"
+            "source/latex/datetime2/"
+            "tex/latex/datetime2/")
+      (base32 "0yjkpfic1ni4j2g61rrjj5hjyd43shc9c0sg1aivbbsmqh30dn33")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/datetime2")
+    (synopsis "Formats for dates, times and time zones")
+    (description
+     "The @code{datetime2} package provides commands for formatting dates, times
+and time zones and redefines @code{\\today} to use the same formatting style.
+In addition to @code{\\today}, you can also use
+@code{\\DTMcurrenttime} (current time) or @code{\\DTMnow} (current date and
+time).  Dates and times can be saved for later use.  The accompanying
+@code{datetime2-calc} package can be used to convert date-times to UTC+00:00.
+Language and regional support is provided by independently maintained and
+installed modules.  The @code{datetime2-calc} package uses the
+@code{pgfcalendar} package (part of the PGF/TikZ bundle).  This package
+replaces @code{datetime.sty} which is now obsolete.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-tracklang
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-tracklang"
+      (list "doc/generic/tracklang/"
+            "source/latex/tracklang/"
+            "tex/generic/tracklang/"
+            "tex/latex/tracklang/")
+      (base32 "1386sg25y6zb4ixvrbdv6n1gp54h18mjd984bnwwqda6jafxx4zr")
+      #:trivial? #t))
+    (home-page "https://ctan.org/macros/generic/tracklang")
+    (synopsis "Language and dialect tracker")
+    (description
+     "The @code{tracklang} package is provided for package developers who want a
+simple interface to find out which languages the user has requested through
+packages such as @code{babel} or @code{polyglossia}.  This package does not
+provide any translations!  Its purpose is simply to track which languages have
+been requested by the user.  Generic TeX code is in @code{tracklang.tex} for
+non-LaTeX users.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-ltablex
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-ltablex"
+      (list "doc/latex/ltablex/" "tex/latex/ltablex/")
+      (base32 "14lmgj820j6zwj1xnd6ad38kzb9w132kp7sp55cv5bk9vhx3621w")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/ltablex")
+    (synopsis "Table package extensions")
+    (description
+     "The @code{ltablex} package modifies the @code{tabularx} environment to
+combine the features of the @code{tabularx} package (auto-sized columns in a
+fixed-width table) with those of the @code{longtable} package (multi-page
+tables).")
+    (license license:lppl)))
+
+(define-public texlive-ragged2e
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-ragged2e"
+      (list "doc/latex/ragged2e/"
+            "source/latex/ragged2e/"
+            "tex/latex/ragged2e/")
+      (base32 "1cxj5jdgvr3xk1inrb3yzpm3l386jjawgpqiwsz53k6yshb6yfml")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/ragged2e")
+    (synopsis "Alternative versions of \"ragged\"-type commands")
+    (description
+     "The @code{ragged2e} package defines new commands @code{\\Centering}, @code{\\RaggedLeft},
+and @code{\\RaggedRight} and new environments @code{Center}, @code{FlushLeft},
+and @code{FlushRight}, which set ragged text and are easily configurable to
+allow hyphenation (the corresponding commands in LaTeX, all of whose names are
+lower-case, prevent hyphenation altogether).")
+    (license license:lppl1.3c)))
+
+(define-public texlive-everysel
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-everysel"
+      (list "doc/latex/everysel/"
+            "source/latex/everysel/"
+            "tex/latex/everysel/")
+      (base32 "0skzm2qsk5vpjxgslclp4pvbbcrrnm1w3df8xfvfq252dyd7w8s5")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/everysel")
+    (synopsis "Provides hooks into @code{\\selectfont}")
+    (description
+     "The @code{everysel} package provided hooks whose arguments are executed just
+after LaTeX has loaded a new font by means of @code{\\selectfont}.  It has
+become obsolete with LaTeX versions 2021/01/05 or newer, since LaTeX now
+provides its own hooks to fulfill this task.  For newer versions of LaTeX
+@code{everysel} only provides macros using LaTeX's hook management due to
+compatibility reasons.  See @code{lthooks-doc.pdf} for instructions how to use
+@code{lthooks} instead of @code{everysel}.")
+    (license license:lppl1.3c)))
+
+(define-public texlive-everyshi
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-everyshi"
+      (list "doc/latex/everyshi/"
+            "source/latex/everyshi/"
+            "tex/latex/everyshi/")
+      (base32 "11y6xazv1nk0m2hzsainjr8ijn5cff04xfccm6a65hzg7ipggraj")
+      #:trivial? #t))
+    (home-page "https://ctan.org/pkg/everyshi")
+    (synopsis "Take action at every @code{\\shipout}")
+    (description
+     "The @code{everyshi} package provides hooks into @code{\\sshipout} called
+@code{\\EveryShipout} and @code{\\AtNextShipout} analogous to
+@code{\\AtBeginDocument}.  With the introduction of the LaTeX hook management
+this package became obsolete in 2020 and is only provided for backwards
+compatibility.  For current versions of LaTeX it is only mapping the hooks to
+the original @code{everyshi} macros.  In case you use an older LaTeX format,
+@code{everyshi} will automatically fall back to its old implementation by
+loading @code{everyshi-2001-05-15}.")
+    (license license:lppl1.3c)))
+
+(define-public texlive-abstract
+  (let ((template (simple-texlive-package
+                   "texlive-abstract"
+                   '("doc/latex/abstract/"
+                     "source/latex/abstract/"
+                     "tex/latex/abstract/")
+                   (base32
+                    "1axm78qgrpml09pkh252g1hsjx9c2w7mbdrm9rdl4yqh5ppwq4y9"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #f)
+          "latex/abstract")
+         ((#:build-targets _ #t)
+          #~(list "abstract.ins"))
+         ((#:phases std-phases)
+          #~(modify-phases #$std-phases
+              (add-after 'unpack 'chdir
+                (lambda args
+                  (chdir "source/latex/abstract")))
+              (add-before 'copy-files 'unchdir
+                (lambda args
+                  (chdir "../../..")))
+              (add-after 'copy-files 'remove-extra-files
+                (lambda args
+                  (delete-file-recursively
+                   (string-append #$output
+                                  "/share/texmf-dist"
+                                  "/source/latex/abstract/build"))))))))
+      (home-page "https://ctan.org/pkg/abstract")
+      (synopsis "Control the typesetting of the abstract environment")
+      (description "The abstract package gives you control over the typesetting
+of the abstract environment, and in particular provides for a one column
+abstract in a two column paper.")
+      (license license:lppl))))
+
+(define-public texlive-breqn
+  (let ((template (simple-texlive-package
+                   "texlive-breqn"
+                   '("/doc/latex/breqn/"
+                     "/source/latex/breqn/")
+                   (base32
+                    "186cypxiyf30fq6dxvvlbwn5yx7c8d4cd243wvvb3243n5l4rpl3"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #f)
+          "latex/breqn")
+         ((#:build-targets _ #t)
+          #~(list "breqnbundle.ins"))
+         ((#:phases std-phases)
+          #~(modify-phases #$std-phases
+              (add-after 'unpack 'chdir
+                (lambda args
+                  (chdir "source/latex/breqn")))
+              (add-before 'copy-files 'unchdir
+                (lambda args
+                  (chdir "../../..")))
+              (add-after 'copy-files 'remove-extra-files
+                (lambda args
+                  (delete-file-recursively
+                   (string-append #$output
+                                  "/share/texmf-dist"
+                                  "/source/latex/breqn/build"))))))))
+      (home-page "https://wspr.io/breqn/")
+      (synopsis "Automatic line breaking of displayed equations")
+      (description "This package provides solutions to a number of common
+difficulties in writing displayed equations and getting high-quality output.
+The single most ambitious goal of the package is to support automatic
+linebreaking of displayed equations.  Such linebreaking cannot be done without
+substantial changes under the hood in the way formulae are processed; the code
+must be watched carefully, keeping an eye on possible glitches.  The bundle
+also contains the @code{flexisym} and @code{mathstyle} packages, which are
+both designated as support for @code{breqn}.")
+      (license license:lppl1.3+))))
+
+(define-public texlive-comment
+  (package
+    (inherit (simple-texlive-package
+              "texlive-comment"
+              '("/doc/latex/comment/"
+                "/tex/latex/comment/")
+              (base32
+               "1c1mqziwxyf1bqzpw6ji65n7ypygm3lyknblxmf0c70w0ivw76pa")
+              #:trivial? #t))
+    (home-page "https://ctan.org/pkg/comment")
+    (synopsis "Selectively include/exclude portions of text")
+    (description "This package provides environments for selectively including
+or excluding pieces of text, allowing the user to define new, separately
+controlled comment versions.")
+    (license license:gpl2+)))
+
+(define-public texlive-datatool
+  (let ((template (simple-texlive-package
+                   "texlive-datatool"
+                   '("/bibtex/bst/datatool/"
+                     "/doc/latex/datatool/"
+                     "/source/latex/datatool/")
+                   (base32
+                    "0hh2623zlwgq8zb2lv4d8yfaqwzrz54dqhc1xk0jd1k4fp281kl5"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #f)
+          "latex/datatool")
+         ((#:build-targets _ #t)
+          #~(list "datatool.ins"))
+         ((#:phases std-phases)
+          #~(modify-phases #$std-phases
+              (add-after 'unpack 'chdir
+                (lambda args
+                  (chdir "source/latex/datatool")))
+              (add-before 'copy-files 'unchdir
+                (lambda args
+                  (chdir "../../..")))
+              (add-after 'copy-files 'remove-extra-files
+                (lambda args
+                  (delete-file-recursively
+                   (string-append #$output
+                                  "/share/texmf-dist"
+                                  "/source/latex/datatool/build"))))))))
+      (home-page "https://ctan.org/pkg/datatool")
+      (synopsis "Tools to load and manipulate data")
+      (description "This package provides tools to create databases using LaTeX
+commands or by importing external files.  Databases may be sorted, filtered,
+and visualized using several kinds of configurable plots.  Particular support
+is provided for mail merging, indexing, creating glossaries, manipulating
+bibliographies, and displaying personal pronouns.")
+      (license license:lppl1.3+))))
+
+(define-public texlive-physics
+  (package
+    (inherit (simple-texlive-package
+              "texlive-physics"
+              '("/doc/latex/physics/"
+                "/tex/latex/physics/")
+              (base32
+               "1wy58wwcv1pv18xs1n71abnm73dqnxqijxvhfxk0rcmvbc6wvwrb")
+              #:trivial? #t))
+    (home-page "https://ctan.org/pkg/physics")
+    (synopsis "Macros supporting the Mathematics of Physics")
+    (description "The package defines simple and flexible macros for
+typesetting equations in the languages of vector calculus and linear
+algebra, using Dirac notation.")
+    (license license:lppl)))
+
+(define-public texlive-sourcesanspro
+  (package
+    (inherit (simple-texlive-package
+              "texlive-sourcesanspro"
+              '("/doc/latex/sourcesanspro/"
+                "/fonts/enc/dvips/sourcesanspro/"
+                "/fonts/map/dvips/sourcesanspro/"
+                "/fonts/opentype/adobe/sourcesanspro/"
+                ;; ^ It would be tempting to use our
+                ;; font-adobe-source-sans-pro for these, but the version in
+                ;; texlive could differ from our version: probably the
+                ;; difference would be small, but debugging would not be fun.
+                ;; If the files are really identical, Guix will hard-link them
+                ;; anyway.
+                "/fonts/tfm/adobe/sourcesanspro/"
+                "/fonts/type1/adobe/sourcesanspro/"
+                "/fonts/vf/adobe/sourcesanspro/"
+                "/tex/latex/sourcesanspro/")
+              (base32
+               "18z7ln8dyh0sp6v0vdvc6qqxnpg3h3ix0f5magjcjbpay54kl0i3")
+              #:trivial? #t))
+    (home-page "https://ctan.org/pkg/sourcesanspro")
+    (synopsis "Use Source Sans Pro with TeX(-alike) systems")
+    (description "This package provides the Source Sans Pro font family from
+Adobe in both Adobe Type 1 and OpenType formats, plus macros supporting the
+use of the fonts in LaTeX (Type 1) and XeLaTeX/LuaLaTeX (OTF).")
+    (license (list license:lppl1.3+ license:silofl1.1))))
+
+(define-public texlive-sourceserifpro
+  (package
+    (inherit (simple-texlive-package
+              "texlive-sourceserifpro"
+              '("/doc/latex/sourceserifpro/"
+                "/fonts/enc/dvips/sourceserifpro/"
+                "/fonts/map/dvips/sourceserifpro/"
+                "/fonts/opentype/adobe/sourceserifpro/"
+                ;; ^ see comment on texlive-sourcesanspro
+                "/fonts/tfm/adobe/sourceserifpro/"
+                "/fonts/type1/adobe/sourceserifpro/"
+                "/fonts/vf/adobe/sourceserifpro/"
+                "/tex/latex/sourceserifpro/")
+              (base32
+               "18xxncg8ybv86r46zq5mvgkrfnvlhx93n55fy8nkk8vdmminrh8w")
+              #:trivial? #t))
+    (home-page "https://ctan.org/pkg/sourceserifpro")
+    (synopsis "Use Source Serif Pro with TeX(-alike) systems")
+    (description "This package provides the Source Serif Pro font family from
+Adobe in both Adobe Type 1 and OpenType formats, plus macros supporting the
+use of the fonts in LaTeX (Type 1) and XeLaTeX/LuaLaTeX (OTF).")
+    (license (list license:lppl1.3+ license:silofl1.1))))
+
+(define-public texlive-sourcecodepro
+  (package
+    (inherit (simple-texlive-package
+              "texlive-sourcecodepro"
+              '("/doc/latex/sourcecodepro/"
+                "/fonts/enc/dvips/sourcecodepro/"
+                "/fonts/map/dvips/sourcecodepro/"
+                "/fonts/opentype/adobe/sourcecodepro/"
+                ;; ^ see comment on texlive-sourcesanspro
+                "/fonts/tfm/adobe/sourcecodepro/"
+                "/fonts/type1/adobe/sourcecodepro/"
+                "/fonts/vf/adobe/sourcecodepro/"
+                "/tex/latex/sourcecodepro/")
+              (base32
+               "009v9y7d3vsljgq9nw5yx4kzyqavxbwrlvwhfjj83s6rmb9xcrmh")
+              #:trivial? #t))
+    (home-page "https://ctan.org/pkg/sourcecodepro")
+    (synopsis "Use Source Code Pro with TeX(-alike) systems")
+    (description "This package provides the Source Code Pro font family from
+Adobe in both Adobe Type 1 and OpenType formats, plus macros supporting the
+use of the fonts in LaTeX (Type 1) and XeLaTeX/LuaLaTeX (OTF).")
+    (license (list license:lppl1.3+ license:silofl1.1))))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 0c8531cc4d..485661fe6b 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -663,17 +663,17 @@ scripts/input/X11/C/Shell/HTML/Dired): 49KB.
                 "19cf55b86yj2b5hdazbyw4iyp6xq155243aiyg4m0vhwh0h79nwh"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list pkg-config qttools))           ; for lrelease
+     (list pkg-config qttools-5))       ; for lrelease
     (inputs
      (list hunspell
            qtbase-5
-           qtdeclarative
-           qtmultimedia
-           qtquickcontrols
-           qtsvg
-           qtwebchannel))
+           qtdeclarative-5
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtsvg-5
+           qtwebchannel-5))
     (propagated-inputs                  ; To get native-search-path
-     (list qtwebengine))
+     (list qtwebengine-5))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -695,7 +695,7 @@ scripts/input/X11/C/Shell/HTML/Dired): 49KB.
                    ,(map (lambda (label)
                            (string-append (assoc-ref inputs label)
                                           "/lib/qt5/plugins/"))
-                         '("qtsvg" "qtmultimedia"))))))))))
+                         '("qtsvg-5" "qtmultimedia-5"))))))))))
     (home-page "https://wereturtle.github.io/ghostwriter/")
     (synopsis "Write without distractions")
     (description
@@ -770,7 +770,7 @@ environment with Markdown markup.")
                    #:icon "manuskript"
                    #:categories "Office;WordProcessor;"))))))))
     (inputs
-     (list pandoc python-lxml python-markdown python-pyqt qtsvg))
+     (list pandoc python-lxml python-markdown python-pyqt qtsvg-5))
     (home-page "http://www.theologeek.ch/manuskript/")
     (synopsis "Tool for writers")
     (description "Manuskript provides a rich environment to help
@@ -870,7 +870,7 @@ editors.")
            perl
            python-wrapper
            qtbase-5
-           qtsvg
+           qtsvg-5
            sqlite))
     (arguments
      `(#:tests? #f                      ; no check target
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index a32677bd59..e2842cfa08 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -303,6 +303,23 @@ required structures.")
     (properties '((ftp-server . "ftp.gnutls.org")
                   (ftp-directory . "/gcrypt/gnutls")))))
 
+(define-public gnutls-latest
+  ;; Version 3.7.7 introduces 'set-session-record-port-close!', which allows
+  ;; us to get rid of the wrapper port in 'tls-wrap'.
+  (package
+    (inherit gnutls)
+    (version "3.7.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnupg/gnutls/v"
+                                  (version-major+minor version)
+                                  "/gnutls-" version ".tar.xz"))
+              (patches (search-patches "gnutls-skip-trust-store-test.patch"
+                                       "gnutls-cross.patch"))
+              (sha256
+               (base32
+                "01i1gl15k6qwvxmxx0by1mn9nlmcmym18wdpm7dn9awfsp8474dy"))))))
+
 (define-public gnutls/dane
   ;; GnuTLS with build libgnutls-dane, implementing DNS-based
   ;; Authentication of Named Entities.  This is required for GNS functionality
@@ -325,27 +342,44 @@ OpenSSL for TARGET."
   ;; Keep this code outside the build code,
   ;; such that new targets can be added
   ;; without causing rebuilds for other targets.
-  (cond ((string-prefix? "i586" target)
-         "hurd-x86")
-        ((string-prefix? "i686" target)
-         "linux-x86")
-        ((string-prefix? "x86_64" target)
-         "linux-x86_64")
-        ((string-prefix? "mips64el" target)
-         "linux-mips64")
-        ((string-prefix? "arm" target)
-         "linux-armv4")
-        ((string-prefix? "aarch64" target)
-         "linux-aarch64")
-        ((string-prefix? "powerpc64le" target)
-         "linux-ppc64le")
-        ((string-prefix? "powerpc64" target)
-         "linux-ppc64")
-        ((string-prefix? "powerpc" target)
-         "linux-ppc")
-        ((string-prefix? "riscv64" target)
-         ;; linux64-riscv64 isn't recognized until 3.0.0.
-         "linux-generic64")))
+  (if (target-mingw? target)
+      (string-append
+       "mingw"
+       (if (target-x86-64? target)
+           "64"
+           ""))
+      (let ((kernel
+             (cond ((target-hurd? target)
+                    "hurd")
+                   ((target-linux? target)
+                    "linux")
+                   (else
+                    (error "unsupported openssl target kernel"))))
+            (arch
+             (cond
+              ((target-x86-32? target)
+               "x86")
+              ((target-x86-64? target)
+               "x86_64")
+              ((target-mips64el? target)
+               "mips64")
+              ((target-arm32? target)
+               "armv4")
+              ((target-aarch64? target)
+               "aarch64")
+              ((target-ppc64le? target)
+               "ppc64le")
+              ((target-ppc32? target)
+               "ppc")
+              ((and (target-powerpc? target)
+                    (target-64bit? target))
+               "ppc64")
+              ((target-64bit? target)
+               ;; linux64-riscv64 isn't recognized until 3.0.0.
+               "generic64")
+              (else
+               (error "unsupported openssl target architecture")))))
+        (string-append kernel "-" arch))))
 
 (define-public openssl
   (package
@@ -443,7 +477,13 @@ OpenSSL for TARGET."
                (for-each (lambda (file)
                            (install-file file slib)
                            (delete-file file))
-                         (find-files lib "\\.a$")))))
+                         (find-files
+                          lib
+                          #$(if (target-mingw?)
+                                '(lambda (filename _)
+                                   (and (string-suffix? ".a" filename)
+                                        (not (string-suffix? ".dll.a" filename))))
+                                "\\.a$"))))))
          (add-after 'install 'move-extra-documentation
            (lambda _
              ;; Move man pages and full HTML documentation to "doc".
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 452e41bf83..a6a1f4edfb 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 André Batista <nandre@riseup.net>
-;;; Copyright © 2021 Danial Behzadi <dani.behzi@ubuntu.com>
+;;; Copyright © 2021-2022 Danial Behzadi <dani.behzi@ubuntu.com>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -60,14 +60,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.7.8")
+    (version "0.4.7.9")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "15g1dyk0y2lrcr039y5b10bnn1zd3xcys55yz3qdbk9ammkmr6ly"))))
+               "08lva4jrash1fhq8vim56alria5kfganmp3y3lhddx08h9cki7fk"))))
     (build-system gnu-build-system)
     (arguments
      (list #:configure-flags
@@ -427,14 +427,14 @@ Potential client and exit connections are scrubbed of sensitive information.")
 (define-public tractor
   (package
     (name "tractor")
-    (version "3.13")
+    (version "3.14")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "traxtor" version))
        (sha256
         (base32
-         "0r8zzaia1s678d39cpqjfpb72fwc46lfwnz1rb043hi6grd39jl7"))))
+         "06jhsg179rfckagrpk9r8wqp44anf1bchm3ins2saf5806f0n5lw"))))
     (build-system python-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")))       ; for glib-compile-schemas.
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index 9810a90d02..8e561cad45 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -57,18 +57,19 @@ installed in the same environments.  Collecting only paths actually containing
 (define-public trytond
   (package
     (name "trytond")
-    (version "6.0.6")
+    (version "6.2.10")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond" version))
        (sha256
-        (base32 "1jp5cadqpwkcnml8r1hj6aak5kc8an2d5ai62p96x77nn0dp3ny4"))
+        (base32 "0s53ig8snbs9936h99pwa0lwhcrd3j3cbpwlmf90mf1chrif7zca"))
        (patches (search-patches "trytond-add-egg-modules-to-path.patch"
                                 "trytond-add-guix_trytond_path.patch"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-dateutil
+           python-defusedxml
            python-genshi
            python-lxml
            python-magic
@@ -105,13 +106,13 @@ and security.")
 (define-public tryton
   (package
     (name "tryton")
-    (version "6.0.5")
+    (version "6.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tryton" version))
        (sha256
-        (base32 "15cbp2r25pkr7lp4yliqgb6d0n779z70d4gckv56bx5aw4z27f66"))))
+        (base32 "1bvwkrj2mmnddaif60g2np2jpx8lq5ka32xlhd4rlnshnbryrm5q"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -146,19 +147,19 @@ and security.")
 (define-public python-proteus
   (package
     (name "python-proteus")
-    (version "6.0.2")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "proteus" version))
        (sha256
-        (base32 "0qr7rir7ysxvy2kyfzp2d2kcw9qzq4vdkddbwswzgddxjpycksdh"))))
+        (base32 "0xx8kqzgs66rgz6bk5favnjs0akz6znz81vmjwpwp2wpq7094fsr"))))
     (build-system python-build-system)
     ;; Tests require python-trytond-party which requires python-proteus.
     (arguments
      `(#:tests? #f))
     (propagated-inputs
-     (list python-dateutil))
+     (list python-dateutil python-defusedxml))
     (home-page "http://www.tryton.org/")
     (synopsis "Library to access a Tryton server as a client")
     (description
@@ -207,13 +208,13 @@ the build system."
 (define-public trytond-account
   (package
     (name "trytond-account")
-    (version "6.0.3")
+    (version "6.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account" version))
        (sha256
-        (base32 "0j1mn8sd5n8rkwgfvcy9kf8s7s3qxvnilnc72i83ac573zj922xc"))))
+        (base32 "1jjffyfkax36v6znhdyvlrr314h3d5rn13iwv3kvhsm6paddbmwi"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -233,13 +234,13 @@ most of accounting needs.")
 (define-public trytond-account-asset
   (package
     (name "trytond-account-asset")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_asset" version))
        (sha256
-        (base32 "12qf6f4hpxi6c3mx18d07ljbzzr58h0lg8yz95nby3g3mpx2mlaz"))))
+        (base32 "0zs0bqa3crfqc39z7c5hcj60w2aws2fv2l9y59v9sfy8azi32533"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_asset"))
     (native-inputs
@@ -257,13 +258,13 @@ of fixed assets.")
 (define-public trytond-account-be
   (package
     (name "trytond-account-be")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_be" version))
        (sha256
-        (base32 "1l4zxsh9f3ndsgj3224xv23nr7gbg5kwrydwgv34nlkyxp5557dk"))))
+        (base32 "0ff27b9g1nf1gqlbv71kq7nm25r85vqpn8b0piajcxln1pbwgnmw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_be"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -275,16 +276,38 @@ of fixed assets.")
 chart of account for Belgium.")
     (license license:gpl3+)))
 
+(define-public trytond-account-budget
+  (package
+    (name "trytond-account-budget")
+    (version "6.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_account_budget" version))
+              (sha256
+               (base32 "055y9jjpx4xfrc6dlssvjzmjz7rrvfljlaljx0v6c6s87mpzi3m5"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_account_budget"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list trytond trytond-account
+                             trytond-company trytond-currency))
+    (home-page "https://docs.tryton.org/projects/modules-account-budget")
+    (synopsis "Tryton module that allows budgets to be setup for accounts")
+    (description "The @emph{Account Budget} Tryton module provides the ability
+to set budgets for accounts over a defined period of time.  These budgets can
+then be used to track the total amount from relevant transactions against the
+budgeted amount.")
+    (license license:gpl3+)))
+
 (define-public trytond-account-cash-rounding
   (package
     (name "trytond-account-cash-rounding")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_cash_rounding" version))
        (sha256
-        (base32 "15xl36929zgfw9rlwaqdqs5l4ijspfx8i060z6884p2nizhh69s5"))))
+        (base32 "0lxwz3f1p8szphvl64w8fhjnnvn30fin5k1rh47ikvcmlpq8xb67"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_cash_rounding"))
     (native-inputs
@@ -304,13 +327,13 @@ amounts to be rounded using the cash rounding factor of the currency.")
 (define-public trytond-account-credit-limit
   (package
     (name "trytond-account-credit-limit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_credit_limit" version))
        (sha256
-        (base32 "1ni4cfydypxrkdj7fc0j4js9ygfkxa22ii5db2p89z2izbg1hxd8"))))
+        (base32 "1j3krz4qm04366d1k4sdf089vwbjl29lw8wbpd002hr2lb2lppm3"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_credit_limit"))
     (native-inputs
@@ -327,13 +350,13 @@ credit limit of parties.")
 (define-public trytond-account-de-skr03
   (package
     (name "trytond-account-de-skr03")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_de_skr03" version))
        (sha256
-        (base32 "1dhgspabr2bm0y6qkzh5kz6badhf23arzkw7lra1zsn52r23j9dl"))))
+        (base32 "1igag4nbafr5il6fqw7piak0wma6mgxhzy59zpsnl8gcl96jijv1"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_de_skr03"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -348,13 +371,13 @@ Tryton.")
 (define-public trytond-account-deposit
   (package
     (name "trytond-account-deposit")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_deposit" version))
        (sha256
-        (base32 "005yw868wxv8fhp7dlqd2z19hhjlmk4cgqa36axdfjmbwxvh1r6r"))))
+        (base32 "0axp72p00fk1r6mr9pip8g4276wvb55vfbp962f3gdsijslj9mqi"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_deposit"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -374,13 +397,13 @@ the party.")
 (define-public trytond-account-dunning
   (package
     (name "trytond-account-dunning")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_dunning" version))
        (sha256
-        (base32 "0d5wabn5g1gzmllihkdhzqix934184v303pp20927qxpzb2pm3qw"))))
+        (base32 "0kzafh99055ghg5d8vs411y5c8v1xjqqf23n1sa9a4dzj10wlq97"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_dunning"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -395,13 +418,13 @@ receivable move lines.")
 (define-public trytond-account-dunning-email
   (package
     (name "trytond-account-dunning-email")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_dunning_email" version))
        (sha256
-        (base32 "0sbh2rnziw5fhlbaq4n8q9rwqcgz35rik77dbvhflyyjdxh51vfq"))))
+        (base32 "01d0cwgvl40i7zq9s3yrmf504j8s6395vs8mm1hgg0s9dpi7pl46"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_dunning_email"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -418,13 +441,13 @@ emails.")
 (define-public trytond-account-dunning-fee
   (package
     (name "trytond-account-dunning-fee")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_dunning_fee" version))
        (sha256
-        (base32 "1h8qlrdvpyyf36cdss5lv3qp4h4xs6kp3ybh9ci14mhwy0jyni75"))))
+        (base32 "0v88xkigxqr1py2l25z3qfrr1irpllsi7zzwg3sxmp12d8pi8szk"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_dunning_fee"))
     (native-inputs
@@ -441,13 +464,13 @@ accounting moves as fees when processing dunning.")
 (define-public trytond-account-dunning-letter
   (package
     (name "trytond-account-dunning-letter")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_dunning_letter" version))
        (sha256
-        (base32 "0xb0mpf7n8jjgm8sb52q5sb2fjs1ap1gc0p33csdgz2lyh66lh3b"))))
+        (base32 "1jx1ad7kwlk7cm5j2b15bf4lcy5d2c13j8ag48v0pfy3kiglr2z3"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_dunning_letter"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -464,22 +487,23 @@ letters.")
 (define-public trytond-account-es
   (package
     (name "trytond-account-es")
-    (version "6.0.2")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_es" version))
        (sha256
-        (base32 "19qflzfwbbwz7jxxbah2l8z89m1rwsgvm80w2qsjw93chzabz802"))))
+        (base32 "0wwfkqxlppaild62labldabcnzgdmiqd36sknqdb69jn4ljhw4im"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_es"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
        ("trytond-account-asset" ,trytond-account-asset)
-       ("trytond-account-payment-sepa" ,trytond-account-payment-sepa)))
+       ("trytond-account-payment-sepa" ,trytond-account-payment-sepa)
+       ("trytond-sale-advance-payment" ,trytond-sale-advance-payment)))
     (propagated-inputs
-     (list trytond trytond-account trytond-account-eu
-           trytond-account-invoice trytond-party))
+     (list trytond trytond-account trytond-account-eu trytond-account-invoice
+           trytond-company trytond-currency trytond-party))
     (home-page "https://docs.tryton.org/projects/modules-account-es")
     (synopsis "Tryton with Spanish chart of accounts")
     (description "This package provides the following Spanish charts of
@@ -501,13 +525,13 @@ A wizard allows generating the following AEAT files:
 (define-public trytond-account-eu
   (package
     (name "trytond-account-eu")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_eu" version))
        (sha256
-        (base32 "1x3w7iijkckv20q8lpqb5fnfrvddm130f51mcpnh4hlyx14q1c5i"))))
+        (base32 "1k11ncamp4cd5bdpj4va9p0vga2vcgfwd7wbivf1w4m1bzpisvm8"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_eu"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -531,13 +555,13 @@ accounting requirements in Europe.  It includes:
 (define-public trytond-account-fr
   (package
     (name "trytond-account-fr")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_fr" version))
        (sha256
-        (base32 "1zpzdnd68gsjrz4as019amygdh8yad8wvwrm22dbccwmbbnyvqpg"))))
+        (base32 "18wmijaxah125skhgpqc7iaw6a8md5mpv7m5yazcrscx9pk1z5jz"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_fr"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -552,13 +576,13 @@ for Tryton.")
 (define-public trytond-account-fr-chorus
   (package
     (name "trytond-account-fr-chorus")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_fr_chorus" version))
        (sha256
-        (base32 "13z30390zinv6ps0zr3k7mdmxrw2nhr49k248yjk0c0qh9rwifll"))))
+        (base32 "14rcfk825m7wi73a4ahps5wqrz2aws3a7spz402mmbfxz84ypvbg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_fr_chorus"))
     (native-inputs
@@ -586,13 +610,13 @@ using the credential from the accounting configuration.")
 (define-public trytond-account-invoice
   (package
     (name "trytond-account-invoice")
-    (version "6.0.3")
+    (version "6.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice" version))
        (sha256
-        (base32 "0r8zigb4qmv40kf835x8jd7049nnhk5g7g0aibvfd0y9p28lspnz"))))
+        (base32 "12hkrlni1psa5n72bvz94zqwfmzpy24814p0f2vk1cmzkbsfb6vi"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -617,13 +641,13 @@ term.")
 (define-public trytond-account-invoice-correction
   (package
     (name "trytond-account-invoice-correction")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_correction" version))
        (sha256
-        (base32 "152jxsl6v2wclk1wjhykbyvianh47cp2yg575hkx18dfynyp7nmw"))))
+        (base32 "1m95h7bnwzjbhrnbld5bka4hqygm0d8jcg1g2nmdyqakcniljv34"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_correction"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -641,13 +665,13 @@ original quantity, once with the inverted quantity.")
 (define-public trytond-account-invoice-defer
   (package
     (name "trytond-account-invoice-defer")
-    (version "6.0.0")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_defer" version))
        (sha256
-        (base32 "1ay9cpf6z8j3gamwy52z88qg31s09wkp6k5flv20f9c00hvly452"))))
+        (base32 "1jjsadia1bxx0h80aqhm0alzxdqbkg3by0i7i6qfk7wwikim6lkm"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_defer"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -664,13 +688,13 @@ deferring the expense or the revenue of an invoice line over many periods.")
 (define-public trytond-account-invoice-history
   (package
     (name "trytond-account-invoice-history")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_history" version))
        (sha256
-        (base32 "0pq1raj6v76vqsb2mk1bfv1vg1ngfk9iiai30rlzj2zcl53phcvj"))))
+        (base32 "1qg8x6kggi2f390y35m7k3mfi358zr4jwiw76vw5kkrpa3gm4lyj"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_history"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -686,13 +710,13 @@ the historization of the invoice and its related fields.")
 (define-public trytond-account-invoice-line-standalone
   (package
     (name "trytond-account-invoice-line-standalone")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_line_standalone" version))
        (sha256
-        (base32 "1affxhinyzz1lqfq621f76fixnx523fi7qrxwsqa4f1b6g31651a"))))
+        (base32 "15ld3iixh8kgil5zw3q4acci4xvdcd56lyin154qaak12f7rms0z"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_line_standalone"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -708,13 +732,13 @@ allows creating an invoice line not linked to an invoice.")
 (define-public trytond-account-invoice-secondary-unit
   (package
     (name "trytond-account-invoice-secondary-unit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_secondary_unit" version))
        (sha256
-        (base32 "0wam7v92ldajpx3529x2cfvczgwv8ayr6hi6bwj8fi736p9x2kbp"))))
+        (base32 "1wmc8zx51saqxbg26b7jnhl7ss3gjrhzxn7zqqsis9dps6l07jwf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_secondary_unit"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -730,13 +754,13 @@ a secondary unit of measure on invoice line.")
 (define-public trytond-account-invoice-stock
   (package
     (name "trytond-account-invoice-stock")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_invoice_stock" version))
        (sha256
-        (base32 "1228n6vsx0rdjsy3idvpyssa3n21nhvz9gqaacwa46c0hp2251bp"))))
+        (base32 "0q12v6xdpsw4fjm9pqp73bffdixi2hm9j2vxxx6n2p9r0c3g1gj1"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_invoice_stock"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -754,16 +778,35 @@ average price of the posted invoice lines that are linked to it.")
   (deprecated-package
    "python-trytond-account-invoice-stock" trytond-account-invoice-stock))
 
+(define-public trytond-account-move-line-grouping
+  (package
+    (name "trytond-account-move-line-grouping")
+    (version "6.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_account_move_line_grouping" version))
+              (sha256
+               (base32 "1mrh17a55hkfj89vyx1jrmgzps4ig0m03c10ngsy4my6v6rnnn2r"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_account_move_line_grouping"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-sql trytond trytond-account))
+    (home-page "https://docs.tryton.org/projects/modules-account-move-line-grouping")
+    (synopsis "Tryton module to display account move lines grouped")
+    (description "The @emph{Account Move Line Grouping} Tryton module adds a
+view that displays move lines grouped.")
+    (license license:gpl3+)))
+
 (define-public trytond-account-payment
   (package
     (name "trytond-account-payment")
-    (version "6.0.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment" version))
        (sha256
-        (base32 "006d78kcml65mxikqp80igln118vkxfs9ah03lq5j9bvnfr6bb2m"))))
+        (base32 "0gsg53fiqdmrdpckpfh5sm56ycqjdpa26calmng4p0v2rz557l1f"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment"))
     (native-inputs
@@ -781,13 +824,13 @@ payments for receivable or payable Account Move Lines.")
 (define-public trytond-account-payment-braintree
   (package
     (name "trytond-account-payment-braintree")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment_braintree" version))
        (sha256
-        (base32 "0dgw47q4m5l13bhfl1kdpajh0q94pazdrq9sqzf1vg9mggai2gvi"))))
+        (base32 "0s8li1ynb89nx5isxmg0rbbk6aw85i0218391z9nzgkj8kxgww9j"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment_braintree"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -806,13 +849,13 @@ methods.")
 (define-public trytond-account-payment-clearing
   (package
     (name "trytond-account-payment-clearing")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment_clearing" version))
        (sha256
-        (base32 "0dvjfgp0lrqn838wchkmhbbg4990xx2jv337rivnis164nw84dn0"))))
+        (base32 "037d759nzfs5qh97a5hq24argrga9i3p0b966xckss38cwyq7ixq"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment_clearing"))
     (native-inputs
@@ -833,13 +876,13 @@ journal.")
 (define-public trytond-account-payment-sepa
   (package
     (name "trytond-account-payment-sepa")
-    (version "6.0.0")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment_sepa" version))
        (sha256
-        (base32 "0clnl2lql5q0gh48lad3vw47xajgd3cdj4kbmvdi72jh775p174w"))))
+        (base32 "0c3ij24l8mxad2ppd3r24mx92l2xm52ip2syf88wlxqhsja9p945"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment_sepa"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -859,13 +902,13 @@ generating SEPA files for a Payment Group.")
 (define-public trytond-account-payment-sepa-cfonb
   (package
     (name "trytond-account-payment-sepa-cfonb")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment_sepa_cfonb" version))
        (sha256
-        (base32 "0ccn5s360w78wqnq86qfyci8wii4n1n3pd9wvwsnbrpmabj1byv1"))))
+        (base32 "1a4g2jzk8f98iy3plzanz8wfw5jixqpbsljqfigcp05nykbcfwzf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment_sepa_cfonb"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -886,13 +929,13 @@ CFONB flavors to SEPA messages.")
 (define-public trytond-account-payment-stripe
   (package
     (name "trytond-account-payment-stripe")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_payment_stripe" version))
        (sha256
-        (base32 "18hr2lrrx9asb0d3cjcpska4bv825yjln9cbqjzg0xbl36z6w3s2"))))
+        (base32 "11lmgw4ny5v7zimvx35kkmy9n2pa342j97abn25y10yrcacfjhvh"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_payment_stripe"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -910,13 +953,13 @@ checkout form to handle Setup Intent and Payment Intent by card.")
 (define-public trytond-account-product
   (package
     (name "trytond-account-product")
-    (version "6.0.2")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_product" version))
        (sha256
-        (base32 "1z0dn1p22smzb4a9v451224wrpxcw94inl7jxkarc0q088gasn7d"))))
+        (base32 "1z1ri2plsmdnhgw64r5yxk2m346zcnva8nddmcwcalis35krgjcx"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_product"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -933,16 +976,36 @@ and category.")
 (define-public python-trytond-account-product
   (deprecated-package "python-trytond-account-product" trytond-account-product))
 
+(define-public trytond-account-rule
+  (package
+    (name "trytond-account-rule")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_account_rule" version))
+              (sha256
+               (base32 "1rn0xdqk5pcjybpyw09fqag6lyha06dq9qb3v0jc31cvwmd17ckl"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_account_rule"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list trytond trytond-account
+                             trytond-company trytond-party))
+    (home-page "https://docs.tryton.org/projects/modules-account-rule")
+    (synopsis "Tryton module to change accounts based on rules")
+    (description "The @emph{Account Rule} Tryton module allows rules which
+substitute default accounts with other accounts.")
+    (license license:gpl3+)))
+
 (define-public trytond-account-statement
   (package
     (name "trytond-account-statement")
-    (version "6.0.0")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_statement" version))
        (sha256
-        (base32 "0nlak4kv2ampb5v2zbsvabnirvdi53h6vr35kp2zmrv4alpjsla0"))))
+        (base32 "1c7k1xv5jcraaa9dqdzxphqffycbc1ygy0gc49909vql1r8dpzk5"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_statement"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -963,13 +1026,13 @@ statements.  Statement can be used for bank statement, cash daybook etc.")
 (define-public trytond-account-statement-aeb43
   (package
     (name "trytond-account-statement-aeb43")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_statement_aeb43" version))
        (sha256
-        (base32 "09mkxb9m9167lpca8pb8k4rvnwhsng6b6pmhw9c21w2r4q0hppxv"))))
+        (base32 "1snjabg4qixsb99lsrirpx7zrz0f21wy46d61rar5704657yxyc9"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_statement_aeb43"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -987,13 +1050,13 @@ defined by the Spanish banking association.")
 (define-public trytond-account-statement-coda
   (package
     (name "trytond-account-statement-coda")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_statement_coda" version))
        (sha256
-        (base32 "11gryxh2b2py0h6f89nj2y42cwb8rrxjn0r5jbhrcsfhb2kh1x3w"))))
+        (base32 "0flz8rkavfcwq3przw9sq8jnpf6hdmyi3ip7vc89s3ykdx4qcrh0"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_statement_coda"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1011,13 +1074,13 @@ defined by Belgian \"febelfin\".")
 (define-public trytond-account-statement-ofx
   (package
     (name "trytond-account-statement-ofx")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_statement_ofx" version))
        (sha256
-        (base32 "1n24lwp1lfw59xdd7mqaz6ncr5b0bldr2qniqdnkvyaav0h8h5px"))))
+        (base32 "01ncqvz4nx277q7x50sqwwvcy3hcpgp7bwhbp2l5aa2habprki8x"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_statement_ofx"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1034,13 +1097,13 @@ the import of the @emph{OFX} files as statement.")
 (define-public trytond-account-statement-rule
   (package
     (name "trytond-account-statement-rule")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_statement_rule" version))
        (sha256
-        (base32 "0kg6lf2wa5scwxggr8p7r7j6jd3a34qv2dcs9w18ra1qvg6p4kmp"))))
+        (base32 "1fbn4z111k0wwsy9jr9np82yyc7xiniavyavwhf0qf3l6l8qwk6x"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_statement_rule"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1066,13 +1129,13 @@ linked to the origin.")
 (define-public trytond-account-stock-anglo-saxon
   (package
     (name "trytond-account-stock-anglo-saxon")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_stock_anglo_saxon" version))
        (sha256
-        (base32 "090a4ykrlk2xpqxqhmpa2jrbjkrvhibm60ilp1n28wisbgv9d3di"))))
+        (base32 "1jgj5kb85qj3kb1hcyb9jps1x062cqa32x5rp4rvgg64824d8hwz"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_stock_anglo_saxon"))
     (native-inputs
@@ -1098,13 +1161,13 @@ anglo-saxon accounting model for stock valuation.")
 (define-public trytond-account-stock-continental
   (package
     (name "trytond-account-stock-continental")
-    (version "6.0.1")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_stock_continental" version))
        (sha256
-        (base32 "1i7cyxqs2vxxvg5iyplhai4g8pi0nmh90i5kxqhbnhich6myfr4n"))))
+        (base32 "1dzldnasshpx2gn15scycj72z85z5xli5wq1h39y8brb49ib7nvy"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_stock_continental"))
     (native-inputs
@@ -1126,13 +1189,13 @@ continental accounting model for stock valuation.")
 (define-public trytond-account-stock-landed-cost
   (package
     (name "trytond-account-stock-landed-cost")
-    (version "6.0.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_stock_landed_cost" version))
        (sha256
-        (base32 "1p5xgd76585i55zcwvsi2gqhl0br9gbw398ap7m0cvadxfa6nxch"))))
+        (base32 "01yfkhwxw86s354y51bhs799cvfhwkmjrnmhaspbn889mkpir0wg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_stock_landed_cost"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1149,13 +1212,13 @@ allocating landed cost on Supplier Shipments after their reception.")
 (define-public trytond-account-stock-landed-cost-weight
   (package
     (name "trytond-account-stock-landed-cost-weight")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_stock_landed_cost_weight" version))
        (sha256
-        (base32 "10i0ww3k2cgdg227lv6h8ag2j6rm07maylbh3n0grwxfy8dbq34m"))))
+        (base32 "1dx5m5l1ccnffkqgwxpfk57g1wndxq1q1jrmrbf4cj6q47x1y0xx"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_stock_landed_cost_weight"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1170,16 +1233,40 @@ adds an allocation method based on weight of each line.  The Weight is taken
 from the Product Measurements")
     (license license:gpl3+)))
 
+(define-public trytond-account-stock-shipment-cost
+  (package
+    (name "trytond-account-stock-shipment-cost")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_account_stock_shipment_cost" version))
+              (sha256
+               (base32 "1iyz76cma63kp2alqr4rcrm3zjj6ifsvv9hsylbfkamfgy84brsr"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_account_stock_shipment_cost"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list trytond
+                             trytond-account
+                             trytond-account-invoice
+                             trytond-product
+                             trytond-stock
+                             trytond-stock-shipment-cost))
+    (home-page "https://docs.tryton.org/projects/modules-account-stock-shipment-cost")
+    (synopsis "Tryton module to allocate shipment cost based on invoice")
+    (description "The @emph{Account Stock Shipment Cost} Tryton module
+allocates shipment cost based on invoice.")
+    (license license:gpl3+)))
+
 (define-public trytond-account-tax-cash
   (package
     (name "trytond-account-tax-cash")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_tax_cash" version))
        (sha256
-        (base32 "1di8brrj4jpx99i0553whyh2fddayvwq06dwdshb3iibgv4357cr"))))
+        (base32 "0hy5929697lsa84xyy535gh4s2j1yv4vdfxyi93md17pjf95hwpg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_tax_cash"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1194,13 +1281,13 @@ report on cash basis.")
 (define-public trytond-account-tax-rule-country
   (package
     (name "trytond-account-tax-rule-country")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_account_tax_rule_country" version))
        (sha256
-        (base32 "0gy2zp023d2wqcivaiw5db5d8f4wrpqdnd6jywjhpkvqk4ay6i27"))))
+        (base32 "0bg831hha4j71lm9xhpv4al2qaxmk8qgli5s9hx2h4bcy1hbf5wf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "account_tax_rule_country"))
     (native-inputs
@@ -1222,13 +1309,13 @@ criteria.")
 (define-public trytond-analytic-account
   (package
     (name "trytond-analytic-account")
-    (version "6.0.2")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_analytic_account" version))
        (sha256
-        (base32 "09j9xz41n5hk3j7w63xbw1asd3p00prqvl652qcm9x1nrlmqiw3r"))))
+        (base32 "1ys9admjlgvn2m2zjp74liplzmc8q12x8i004cgb5m43x2mhrj8d"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "analytic_account"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1246,16 +1333,39 @@ required to analyse accounting using multiple different axes.")
   (deprecated-package
    "python-trytond-analytic-account" trytond-analytic-account))
 
+(define-public trytond-analytic-budget
+  (package
+    (name "trytond-analytic-budget")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_analytic_budget" version))
+              (sha256
+               (base32 "080a1s9w6n50xi2r7d3jkyk84rdqzggbqzhab9qjgppl67q85m8p"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_analytic_budget"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list trytond trytond-account-budget
+                             trytond-analytic-account
+                             trytond-company))
+    (home-page "https://docs.tryton.org/projects/modules-analytic-budget")
+    (synopsis "Allow creating budgets for analytic accounts in Tryton")
+    (description "The @emph{Analytic Budget} Tryton module provides the
+ability to set budgets for analytic accounts over a defined period of time.
+These budgets can then be used to track the total amount from relevant
+transactions against the budgeted amount.")
+    (license license:gpl3+)))
+
 (define-public trytond-analytic-invoice
   (package
     (name "trytond-analytic-invoice")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_analytic_invoice" version))
        (sha256
-        (base32 "151vwcn5sgpqma9kjxbznx4v4wlhfc97dcyb432brxnswf5glcir"))))
+        (base32 "0416knbcn7wcx4anzvl0hw7qcdn3xndlh5i0pa0xffvw6kw1ijp9"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "analytic_invoice"))
     (native-inputs
@@ -1272,13 +1382,13 @@ analytic accounts on an invoice line.")
 (define-public trytond-analytic-purchase
   (package
     (name "trytond-analytic-purchase")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_analytic_purchase" version))
        (sha256
-        (base32 "1yx3w3p98y11qw99jy02kal9393y6jpxazsfcznsffgigw2vl3y6"))))
+        (base32 "098sdhmr1idqqaxms3c05pgmvb27bykwfhgibxi9l1lr6k06d2cr"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "analytic_purchase"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1294,13 +1404,13 @@ analytic accounts on a purchase line.")
 (define-public trytond-analytic-sale
   (package
     (name "trytond-analytic-sale")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_analytic_sale" version))
        (sha256
-        (base32 "07l97jmg67468pihymfcjagqbbfdcmry3654f24zbmnljxy2qm1x"))))
+        (base32 "00b3xiykm9j0kf1f9kmsy22413rdjsmvg5li7bd4xrxk22j8v4wv"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "analytic_sale"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1316,13 +1426,13 @@ analytic accounts on a sale line.")
 (define-public trytond-attendance
   (package
     (name "trytond-attendance")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_attendance" version))
        (sha256
-        (base32 "1kwbxblpwjw9sv9axfp29vqgdkwkzf0c0vw8qx1fx8mfwv1hba5c"))))
+        (base32 "0g9b0x4zdz6djmd592ll8zj4q3lhz5gj97phc38kkzvwgvpq9xw2"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "attendance"))
     (native-inputs
@@ -1341,13 +1451,13 @@ detail of the time of entrance and exit")
 (define-public trytond-authentication-sms
   (package
     (name "trytond-authentication-sms")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_authentication_sms" version))
        (sha256
-        (base32 "1g46mimgjkz2lvh90p2ffmkfgwl7w03iqnvqlcghwpxk5vyxw3sj"))))
+        (base32 "17237qrmk8pm7lifrn5zjvsf42cs2q6p2h6qw2vk9fixdz1gxk9x"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "authentication_sms"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1364,13 +1474,13 @@ configuration file.")
 (define-public trytond-bank
   (package
     (name "trytond-bank")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_bank" version))
        (sha256
-        (base32 "0qwgp2s88n4hcqqxg1g34lmmvq5spdlkm978gzn6s96kmmzang0c"))))
+        (base32 "1gvsd8yyrba9bsql9zi4wlmg1jyjb7m13m15av0szkwxylcy0c0q"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "bank"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1385,13 +1495,13 @@ and account.")
 (define-public trytond-carrier
   (package
     (name "trytond-carrier")
-    (version "6.0.2")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_carrier" version))
        (sha256
-        (base32 "0kp08jb5f86bzfyn99qs4k1047svdrkhz3jxv3jw46vrpc2s0c1y"))))
+        (base32 "1fr12m4qi0fkxnbjq5v1sf5dkic9xb2j0bvb8y18if3hh0csfcy7"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "carrier"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1406,19 +1516,20 @@ of carrier.")
 (define-public trytond-carrier-percentage
   (package
     (name "trytond-carrier-percentage")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_carrier_percentage" version))
        (sha256
-        (base32 "0glgjf733qliqxbr1sykxn2rlphagnpixhkg84my7bv6cxfmvkh6"))))
+        (base32 "0lnahli4bc4zspr86i8qchza96k4cmsfcdg3wp7wicp1s2ki7bbw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "carrier_percentage"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
        ("trytond-purchase-shipment-cost" ,trytond-purchase-shipment-cost)
-       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)))
+       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)
+       ("trytond-stock-shipment-cost" ,trytond-stock-shipment-cost)))
     (propagated-inputs
      (list trytond trytond-carrier trytond-currency))
     (home-page "https://docs.tryton.org/projects/modules-carrier-percentage")
@@ -1430,18 +1541,19 @@ method \"on percentage\" on carrier.")
 (define-public trytond-carrier-subdivision
   (package
     (name "trytond-carrier-subdivision")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_carrier_subdivision" version))
        (sha256
-        (base32 "1mmbz541yywdgm16ij2xfvm50xad24plmqdb739ssg6jj0skmji4"))))
+        (base32 "1a4jpi6iaah3f1zsdsjz2zak6wd9jai4jcqzijl2li4pcnkc0x8a"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "carrier_subdivision"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
-       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)))
+       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)
+       ("trytond-stock-shipment-cost" ,trytond-stock-shipment-cost)))
     (propagated-inputs
      (list trytond trytond-carrier))
     (home-page "https://docs.tryton.org/projects/modules-carrier-subdivision")
@@ -1464,19 +1576,20 @@ or a specific postal code.")
 (define-public trytond-carrier-weight
   (package
     (name "trytond-carrier-weight")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_carrier_weight" version))
        (sha256
-        (base32 "0l2gg4syym7jk0vjqnw7invh0gngrfmg9zmmvc1k6110aryr77yi"))))
+        (base32 "0mvz7q2hb4bcj3abvi4dxmnqbrph1g49s2bvyf3lx9ykbmr6v3n7"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "carrier_weight"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
        ("trytond-purchase-shipment-cost" ,trytond-purchase-shipment-cost)
-       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)))
+       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)
+       ("trytond-stock-shipment-cost" ,trytond-stock-shipment-cost)))
     (propagated-inputs
      (list trytond
            trytond-carrier
@@ -1494,13 +1607,13 @@ the weight is greater or equal but smaller than the next line.")
 (define-public trytond-commission
   (package
     (name "trytond-commission")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_commission" version))
        (sha256
-        (base32 "0a5grn6gvvwn0prr5fpgyj4kz283w08a8svmv3b4a4c5pchik3hv"))))
+        (base32 "1m8cg6vb08paymi3bckqwp2vg0as36p6jadg86dc4b1axabas144"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "commission"))
     (native-inputs
@@ -1524,13 +1637,13 @@ invoice, following the agent's commission plan.")
 (define-public trytond-commission-waiting
   (package
     (name "trytond-commission-waiting")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_commission_waiting" version))
        (sha256
-        (base32 "113wzwjip8virdh9bnh14vl29wb3w7a32skk5yibja819s19ycdn"))))
+        (base32 "16y11dc33x1h55v94rab8wzbh4d1pc35vd64ys8915rvijpm6xm5"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "commission_waiting"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1547,13 +1660,13 @@ to a waiting account defined on the agent.")
 (define-public trytond-company
   (package
     (name "trytond-company")
-    (version "6.0.3")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_company" version))
        (sha256
-        (base32 "1q4qdyg32dn00pn3pj2yjl3jhxaqpv7a1cv5s5c95cpy5p46p02n"))))
+        (base32 "03ss7cwxbynn8ly5y32bj1cl2ikji9ydsby62l440jb025sn9x8v"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "company"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1572,13 +1685,13 @@ company and employee and extend the user model.")
 (define-public trytond-company-work-time
   (package
     (name "trytond-company-work-time")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_company_work_time" version))
        (sha256
-        (base32 "0aasp12l66zcys9w3qc4ysi2krd5c9x3xxaxvr29j7zl7nz05bwx"))))
+        (base32 "08nhnlxy1z5drlmxdsd6ad166qx5ckymzx94ja824n1qqac17zqw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "company_work_time"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1598,19 +1711,19 @@ month and a year of work.")
 (define-public trytond-country
   (package
     (name "trytond-country")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_country" version))
        (sha256
-        (base32 "1ksinysac7p0k8avsz8xqzfkmm21s6i93qyrsma5h4y5477cwmw7"))))
+        (base32 "1mlf6fwngdbqy6c7xi7nmg4dph3nnac61rkzhn79x5zqg2mgnv53"))))
     (build-system python-build-system)
     ;; Doctest contains one test that requires internet access.
     (arguments (tryton-arguments "country" "--no-doctest"))
     (native-inputs (%standard-trytond-native-inputs))
     (propagated-inputs
-     (list python-pycountry trytond))
+     (list python-pycountry@20.7.3 trytond))
     (home-page "http://www.tryton.org/")
     (synopsis "Tryton module with countries")
     (description
@@ -1623,13 +1736,13 @@ month and a year of work.")
 (define-public trytond-currency
   (package
     (name "trytond-currency")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_currency" version))
        (sha256
-        (base32 "0fs2wvhgvc0l4yzs5m9l8z4lbzazr42hgz0859malhnlp1sya2kq"))))
+        (base32 "1sx9wanb4r95gs5hsl6hgy0gcvsfh0yr17rnhaa908286f88wa4f"))))
     (build-system python-build-system)
     ;; Doctest 'scenario_currency_rate_update.rst' fails.
     (arguments (tryton-arguments "currency" "--no-doctest"))
@@ -1649,16 +1762,56 @@ currency and rate.")
 (define-public python-trytond-currency
   (deprecated-package "python-trytond-currency" trytond-currency))
 
+(define-public trytond-currency-ro
+  (package
+    (name "trytond-currency-ro")
+    (version "6.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_currency_ro" version))
+              (sha256
+               (base32 "1kn4bgh1gg5dcphb2afqb922myyg2012vdhixipmi7ccbv7ik46s"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_currency_ro"))
+        (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-lxml python-requests trytond
+                             trytond-currency))
+    (home-page "https://docs.tryton.org/projects/modules-currency-ro")
+    (synopsis "Fetch currency rates from the Romanian National Bank")
+    (description "The @emph{Currency RO} Tryton module adds the Romanian
+National Bank as a source for currency exchange rates.")
+    (license license:gpl3+)))
+
+(define-public trytond-currency-rs
+  (package
+    (name "trytond-currency-rs")
+    (version "6.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_currency_rs" version))
+              (sha256
+               (base32 "05admscvj5m7anhji2ni9w2d8b33vlgcifda6jbrxdw8g4c0yivn"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_currency_rs"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-lxml trytond trytond-currency
+                             python-zeep))
+    (home-page "https://docs.tryton.org/projects/modules-currency-rs")
+    (synopsis "Fetch currency rates from the Serbian National Bank")
+    (description "The @emph{Currency RS} Tryton module adds the Serbian
+National Bank as a source for currency exchange rates.")
+    (license license:gpl3+)))
+
 (define-public trytond-customs
   (package
     (name "trytond-customs")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_customs" version))
        (sha256
-        (base32 "1qilj1b9zr35z15313xbvgklf87dgxddvkcnymklwp9n7vs7hrz5"))))
+        (base32 "1zx9cwiq9q4802bj2ga3bilyjls60vpycp3cncqfqh2n4mg23xlq"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "customs"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1674,13 +1827,13 @@ duty based on the tariff code.")
 (define-public trytond-dashboard
   (package
     (name "trytond-dashboard")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_dashboard" version))
        (sha256
-        (base32 "1drqiks8r7y58wz0skfa39v9yqx9fi5x0ymrrjd87wybw9q3kv46"))))
+        (base32 "1b8dalnbj69ppk8q7znw1ljyv5515r16m6gfd9a3l25dpvj0cxz2"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "dashboard"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1695,13 +1848,13 @@ configure their dashboard.")
 (define-public trytond-edocument-uncefact
   (package
     (name "trytond-edocument-uncefact")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_edocument_uncefact" version))
        (sha256
-        (base32 "0b5qhkirfkrh5g1d7m42f7niiz86favf352i403fdi4j532sl3i2"))))
+        (base32 "0nf72c5sw33c77y87idkhf8fz39a7qlgmlrbnzz1cwcpky4hrmdg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "edocument_uncefact"))
     (native-inputs
@@ -1723,13 +1876,13 @@ electronic document from UN/CEFACT.  Supported formats are:
 (define-public trytond-edocument-unece
   (package
     (name "trytond-edocument-unece")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_edocument_unece" version))
        (sha256
-        (base32 "1ri3gjvk0h0sljbgh7h2j0rbr3953p3k21l8x6rhrnh1q2rqgi70"))))
+        (base32 "1ikrh9yk5if8v1sw1aihnysbpipmly6r6ka6zccjcywm1cmabhx0"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "edocument_unece"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1751,13 +1904,13 @@ from the UNECE.  Supported formats are:
 (define-public trytond-gis
   (package
     (name "trytond-gis")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_gis" version))
        (sha256
-        (base32 "1z6rvwyzisd62bmzhh1g56as7xyvchdsgj52w9q5x908k2jr4pl4"))))
+        (base32 "0zfvbqzxhvjja03pv9ja9rml2i2fqiir5a92rz0vj3lx9azjbkvw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "trytond_gis"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1771,13 +1924,13 @@ information system) support to Tryton.")
 (define-public trytond-google-maps
   (package
     (name "trytond-google-maps")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_google_maps" version))
        (sha256
-        (base32 "1wgcnl3r1017vicbf7rkcwv2ffrhaah90hcajn3i78bywjdag6nj"))))
+        (base32 "0g6hag2n7rc7avcawwhdkndbqxc957nyrwq4arkrlkidpbipw37n"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "trytond_google_maps"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1792,13 +1945,13 @@ default browser with the map centered on the selected address.")
 (define-public trytond-incoterm
   (package
     (name "trytond-incoterm")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_incoterm" version))
        (sha256
-        (base32 "09x53kqi7dvmr4kcri2b3f0lxyv99pi731vhk6581f3vy2bby97s"))))
+        (base32 "08sz2j3610iqqzz3qdl51pxdj8mncyjp8lg29y6sskfd0s4fhax5"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "incoterm"))
     (native-inputs
@@ -1814,7 +1967,8 @@ default browser with the map centered on the selected address.")
        ("trytond-sale-invoice-grouping" ,trytond-sale-invoice-grouping)
        ("trytond-sale-opportunity" ,trytond-sale-opportunity)
        ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)
-       ("trytond-stock" ,trytond-stock)))
+       ("trytond-stock" ,trytond-stock)
+       ("trytond-stock-shipment-cost" ,trytond-stock-shipment-cost)))
     (propagated-inputs
      (list trytond trytond-company trytond-party))
     (home-page "https://docs.tryton.org/projects/modules-incoterm")
@@ -1827,13 +1981,13 @@ versions of 2010 and 2020.")
 (define-public trytond-ldap-authentication
   (package
     (name "trytond-ldap-authentication")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_ldap_authentication" version))
        (sha256
-        (base32 "1iylbpp66qjff1mkp0w3a703pracpcv3bv25i2bafkmcjiv9b4jl"))))
+        (base32 "0c3g2y8zqh17wwg9w3bk9q1gwm4hq7h8avchmbfawi6cq3g6ch5b"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "ldap_authentication"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1848,13 +2002,13 @@ authenticating users via a LDAP server.")
 (define-public trytond-marketing
   (package
     (name "trytond-marketing")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_marketing" version))
        (sha256
-        (base32 "0mh85sx5xj06zjmf9fhcislkwlp7k54fz14k3ia1xxpw5f953y3c"))))
+        (base32 "1ljv23ldva3cd07k0knncnawwrig8q6lgsxlm392dcqkyb8gvbjg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "marketing"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1869,13 +2023,13 @@ fundamentals for marketing modules.")
 (define-public trytond-marketing-automation
   (package
     (name "trytond-marketing-automation")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_marketing_automation" version))
        (sha256
-        (base32 "0c2bjkxkpkjqm5zqk0r0gcxm1cxgixm6xxhh16j46vy7d4zssgsp"))))
+        (base32 "17x4pikw2i513wwrfv8g8xim65ksk3dwijahk1qhf3yqpa506kp2"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "marketing_automation"))
     (native-inputs
@@ -1894,13 +2048,13 @@ that are executed on selected records.")
 (define-public trytond-marketing-email
   (package
     (name "trytond-marketing-email")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_marketing_email" version))
        (sha256
-        (base32 "07zh1pni4kpm6bsgyizz0a5k64nyxc9laxxaih9py7d24p9pgvky"))))
+        (base32 "1z38c3lw8chqbm23y0wfsnp268kq2f9azly4ix6imis74zdjnzkl"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "marketing_email"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -1916,13 +2070,13 @@ mailing lists.")
 (define-public trytond-notification-email
   (package
     (name "trytond-notification-email")
-    (version "6.0.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_notification_email" version))
        (sha256
-        (base32 "12hi2p400b15vsmq2a4yifxppc08zdf5l64svv987mxxqv6403ma"))))
+        (base32 "1i0h7spdnf3gryzbzjm8khc0jxzj6g6ljsjgsd28h39kqpdxyffz"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "notification_email"))
     (native-inputs
@@ -1944,13 +2098,13 @@ to the email.")
 (define-public trytond-party
   (package
     (name "trytond-party")
-    (version "6.0.2")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_party" version))
        (sha256
-        (base32 "0aikzpr0ambc98v76dl6xqa42b08dy3b011y33lvxjp5mcha3f7y"))))
+        (base32 "1g62kzdqr4rq6k8zswil4anwhd22d8nzz0i852fmkdsb97yqg4id"))))
     (build-system python-build-system)
     ;; Doctest 'scenario_party_phone_number.rst' fails.
     (arguments (tryton-arguments "party" "--no-doctest"))
@@ -1970,13 +2124,13 @@ addresses.")
 (define-public trytond-party-avatar
   (package
     (name "trytond-party-avatar")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_party_avatar" version))
        (sha256
-        (base32 "1g0f4522bfw2ycr05yq9k570amwcfxf9sza89lhhpzg0kxx0mpq2"))))
+        (base32 "00gjjvslvcvfkdb0293n9yd9pmsnlbjvcnxrjg99vxkrn6dcwxzh"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "party_avatar"))
     (native-inputs
@@ -1993,13 +2147,13 @@ party.")
 (define-public trytond-party-relationship
   (package
     (name "trytond-party-relationship")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_party_relationship" version))
        (sha256
-        (base32 "03lkjmhinxm75schfn596vyg8459fx2spdyh372ikra3zdp8pg75"))))
+        (base32 "0vhm7zl29z8al4ay4n6gw3zazq07dsdhjc54il7sg3z9kz21xv6k"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "party_relationship"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2014,13 +2168,13 @@ different types of relations between parties.")
 (define-public trytond-party-siret
   (package
     (name "trytond-party-siret")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_party_siret" version))
        (sha256
-        (base32 "1xmfjiqn7wzwja34abrxn3bj39z0799pdxd8bcz7l5dxrnqxwc38"))))
+        (base32 "0ab5g3rs2k73wk01ykzh1s4pgrnypdv4l75lr3pn8hyxw9q4b5vk"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "party_siret"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2035,13 +2189,13 @@ identification numbers SIREN and SIRET on party and address.")
 (define-public trytond-product
   (package
     (name "trytond-product")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product" version))
        (sha256
-        (base32 "1xvvqxkvzyqy6fn2sj5h3zj0g17igzwx6s18sxkdz72vqz6kpv0l"))))
+        (base32 "1cq270ng0rav7hzxip3fswbvhs6wkjadl2j8kmiy30qa43abmpwr"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2060,13 +2214,13 @@ Template and Product.")
 (define-public trytond-product-attribute
   (package
     (name "trytond-product-attribute")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_attribute" version))
        (sha256
-        (base32 "0brvwvm3q2ik4vjb9cwd6jxddrmpp2vcafw8k675gy0xbbp1ddik"))))
+        (base32 "10656g9na098ndjhy4iv1iv0020jin7yw38bb79zxynck39vld29"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_attribute"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2081,13 +2235,13 @@ models `Attribute` and `Attribute Set` for products.")
 (define-public trytond-product-classification
   (package
     (name "trytond-product-classification")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_classification" version))
        (sha256
-        (base32 "1sq42siqq8w6dd8jnqnkzy3npaf9g2nrdzazkl6nw5dysvpsz8cr"))))
+        (base32 "1a5rdvscp3hb7jddciqmpzb095yzmyvsj5jc06jiilvynrawwzsh"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_classification"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2104,13 +2258,13 @@ reference field classification to the product template.")
 (define-public trytond-product-classification-taxonomic
   (package
     (name "trytond-product-classification-taxonomic")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_classification_taxonomic" version))
        (sha256
-        (base32 "1pkk0z4bl1pz2yxs46b18fj35zwa80dnbickjg1ad66n9yrmifk6"))))
+        (base32 "1933kqhab8ky2mman13mmg06rdmlbak3sjgm5qbk615x5fzbl4s4"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_classification_taxonomic"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2126,13 +2280,13 @@ adds the taxonomic classification to the products.")
 (define-public trytond-product-cost-fifo
   (package
     (name "trytond-product-cost-fifo")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_cost_fifo" version))
        (sha256
-        (base32 "1zksnawvnbf1l2hkyxw4m85ysjy6i8kbx103sz4p9a9bgvjn3ai6"))))
+        (base32 "1lqd960z7dmy3000fhhqqbmq7c4lk2l2dqw383sd62ka5j57kpf4"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_cost_fifo"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2147,13 +2301,13 @@ first-in-first-out option in the `Cost Method` field of the product form.")
 (define-public trytond-product-cost-history
   (package
     (name "trytond-product-cost-history")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_cost_history" version))
        (sha256
-        (base32 "01cxx1lmcxwangk3q8lhbkd97w208qxpk96mqxv2hgds77xr42cj"))))
+        (base32 "16gnqa04fv7525ax12xfmh4phk4fvm577j3c80cahxqpvsp2a0q6"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_cost_history"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2172,17 +2326,18 @@ and assets.")
 (define-public trytond-product-cost-warehouse
   (package
     (name "trytond-product-cost-warehouse")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_cost_warehouse" version))
        (sha256
-        (base32 "12fcnmcx4m5wyw1hi3k175iiis5m18fcs72b04y14km583s6jcfr"))))
+        (base32 "0anz5071j1yzg9xp00qqcc3a4wb3zvl6605bzici76558zj7fl38"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_cost_warehouse"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
+       ("trytond-account-invoice-stock" ,trytond-account-invoice-stock)
        ("trytond-account-stock-continental" ,trytond-account-stock-continental)
        ("trytond-product-cost-fifo" ,trytond-product-cost-fifo)
        ("trytond-product-cost-history" ,trytond-product-cost-history)))
@@ -2195,16 +2350,56 @@ and assets.")
 cost price of products to be calculated separately for each warehouse.")
     (license license:gpl3+)))
 
+(define-public trytond-product-image
+  (package
+    (name "trytond-product-image")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_product_image" version))
+              (sha256
+               (base32 "1xdqgc4y1sghnp5q25facdz3mnaxf8fysqlpbq3zrghsvi136mvd"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_product_image"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-pillow trytond trytond-product))
+    (home-page "https://docs.tryton.org/projects/modules-product-image")
+    (synopsis "Tryton module that adds images to products")
+    (description "The @emph{Product Image} Tryton module adds images to each
+product and variant.")
+    (license license:gpl3+)))
+
+(define-public trytond-product-image-attribute
+  (package
+    (name "trytond-product-image-attribute")
+    (version "6.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_product_image_attribute" version))
+              (sha256
+               (base32 "1ywyh158325v461qkka5svp4gygsfkkrxd6yl9dgfgypd483qjs8"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_product_image_attribute"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list trytond trytond-product
+                             trytond-product-attribute
+                             trytond-product-image))
+    (home-page "https://docs.tryton.org/projects/modules-product-image-attribute")
+    (synopsis "Tryton module to select variant images based on attributes")
+    (description "The @emph{Product Image Attribute} Tryton module adds
+attributes to product images.")
+    (license license:gpl3+)))
+
 (define-public trytond-product-kit
   (package
     (name "trytond-product-kit")
-    (version "6.0.3")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_kit" version))
        (sha256
-        (base32 "1xr1vd66lrnzj16ycbw5xnz4ai44ml77akhsvxvihf09zdz09yd7"))))
+        (base32 "1s41jng93cmf4pahz59jmza1k6nj6pb532k0mn2xnr0pgnh26w9m"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_kit"))
     (native-inputs
@@ -2227,13 +2422,13 @@ purchased using a single line.")
 (define-public trytond-product-measurements
   (package
     (name "trytond-product-measurements")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_measurements" version))
        (sha256
-        (base32 "0za3p0wxh2kb6f49455pggnpmy0vfiwj95j5c3l63x8q5yp8vdjl"))))
+        (base32 "111q382lv3yg76r7jxfhnvr35kgi2fhiyxyj07immvwm5k3z0vi1"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_measurements"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2248,13 +2443,13 @@ following measurements to Product:")
 (define-public trytond-product-price-list
   (package
     (name "trytond-product-price-list")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_price_list" version))
        (sha256
-        (base32 "1csr2g7wx89kykhm76dyrjn0nicvjmc4razqfqpj9rhdpwppdgr6"))))
+        (base32 "0x85317skmqkq12i9qqyjiny37rn2dccx7rk7lan87jj2cam70q4"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_price_list"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2269,13 +2464,13 @@ to compute prices per product or category.")
 (define-public trytond-product-price-list-dates
   (package
     (name "trytond-product-price-list-dates")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_price_list_dates" version))
        (sha256
-        (base32 "0p1n4qivj9gfhdy0357n53wswyi14rnanc2bkayiv3zfr7qkf2m1"))))
+        (base32 "0312s99fqfjwyn5lp3b8qd7j0ac0208jbalgxxazfks1h2g22nj5"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_price_list_dates"))
     (native-inputs
@@ -2293,13 +2488,13 @@ date and end date conditions to the price list lines.")
 (define-public trytond-product-price-list-parent
   (package
     (name "trytond-product-price-list-parent")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_product_price_list_parent" version))
        (sha256
-        (base32 "15jdw9qj2fffml9x4vdlzp3iz5gs2l597hpf5y5p887mmx9aa8cn"))))
+        (base32 "0w5fmr2p56p44yq33qgjxp5b8r7bpyixwpdp6xgbrd36ig9wcg3z"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "product_price_list_parent"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2316,13 +2511,13 @@ which contains the unit price computed by the parent price list.")
 (define-public trytond-production
   (package
     (name "trytond-production")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production" version))
        (sha256
-        (base32 "0ys1wg52bs3i7yjrrkm9ycn07xz7fsb2pqc4a2bj44691pvrclpk"))))
+        (base32 "1sjrpyh4cxllmcxh085nfkq4hhdaz2mcgs1x9hwcsk9scqbi8fkw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2337,13 +2532,13 @@ for production management: Bill of material and production order.")
 (define-public trytond-production-outsourcing
   (package
     (name "trytond-production-outsourcing")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production_outsourcing" version))
        (sha256
-        (base32 "08pp80d4jfw7qmhvds60i63pb2nad489xwkf2ybbzdkrzhcgrrjk"))))
+        (base32 "0ms50p42jr23v2fgm3kplacr11czx16dljmxvvn4qgxlacsf0dz0"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production_outsourcing"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2362,13 +2557,13 @@ the production.")
 (define-public trytond-production-routing
   (package
     (name "trytond-production-routing")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production_routing" version))
        (sha256
-        (base32 "0qypqsf36lf02wrbv7pwhg2vv7004g7c6vxd1z2aiwj58g8q7894"))))
+        (base32 "1a6cw0yc60ijd8bnrk84rzx4swqi294g3dsapp03hapn9rgdjbpj"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production_routing"))
     (native-inputs
@@ -2385,13 +2580,13 @@ routings for production: Routing, Step and Operation.")
 (define-public trytond-production-split
   (package
     (name "trytond-production-split")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production_split" version))
        (sha256
-        (base32 "0jl2jnm0lwybwjw2w4nb7ih2s3z7lp00l6zm5vsx4phcvfvzcxgi"))))
+        (base32 "1fcsbvmcjxriq4yllxv2h7i2p07caqgka39f04l7pvz4w9ha4s96"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production_split"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2409,13 +2604,13 @@ quantity.")
 (define-public trytond-production-work
   (package
     (name "trytond-production-work")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production_work" version))
        (sha256
-        (base32 "01a09snawlr224s5aqhrdkal14qry4hlfsglnsk09yzbw6fx196b"))))
+        (base32 "1bff8rfdrlx14ahjnmq3lw7z816qnk22cjk9wwmwkcpl99faw3bd"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production_work"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2436,13 +2631,13 @@ work cost.")
 (define-public trytond-production-work-timesheet
   (package
     (name "trytond-production-work-timesheet")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_production_work_timesheet" version))
        (sha256
-        (base32 "1r7k25wddd381g0p5pj3m8jqvbg8g6ss0ifnhhjya3b6x0d41jz9"))))
+        (base32 "19d9sasviayn4vkbwgxmgqbn2fd61qqh4sk35vzlmkbwycrbczhi"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "production_work_timesheet"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2459,13 +2654,13 @@ entering a timesheet for production works.")
 (define-public trytond-project
   (package
     (name "trytond-project")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_project" version))
        (sha256
-        (base32 "1xlqzg07csr9a89jjgmk5n4d9dd2s3qahg2x8arf3vqqnrqw1g0f"))))
+        (base32 "0rr1ar7ah753afqi16yklirwv3ikmcv4xhnbv5vixna1kqhg8n43"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "project"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2481,13 +2676,13 @@ project and task and the basis for simple project management.")
 (define-public trytond-project-invoice
   (package
     (name "trytond-project-invoice")
-    (version "6.0.0")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_project_invoice" version))
        (sha256
-        (base32 "0wxgpsn5kwfz4f51icmc0p7r615lpr286ifwyz0xnd6rrh0glvmw"))))
+        (base32 "1hdyds6k2k0hjk8za8xa64qvqx9pnyv1a6g7mq80ag8hscx2s282"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "project_invoice"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2518,13 +2713,13 @@ methods on projects.  The methods are:
 (define-public trytond-project-plan
   (package
     (name "trytond-project-plan")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_project_plan" version))
        (sha256
-        (base32 "0yanvfmg4nmbc322h6w9m7asv4bm95y2wksi4rrvlbs84njgvhnq"))))
+        (base32 "1rijwxx1sypgv3fapw7sv0i6xbci2b6h3ij42aq693yvn0wm46q4"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "project_plan"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2539,13 +2734,13 @@ on top of the Project module.")
 (define-public trytond-project-revenue
   (package
     (name "trytond-project-revenue")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_project_revenue" version))
        (sha256
-        (base32 "0gji7kpq4l1smxvj6dqdpcyp2ml4ywfhagf6xm813y71mrlfvmka"))))
+        (base32 "0hpqwjpd6d0a291yssa8f0x89xxqvdzq8a3f10csibsq7bssqzki"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "project_revenue"))
     (native-inputs
@@ -2571,13 +2766,13 @@ the linked time sheets and the linked purchase lines.")
 (define-public trytond-purchase
   (package
     (name "trytond-purchase")
-    (version "6.0.2")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase" version))
        (sha256
-        (base32 "12drjw30ik3alckn6xrny4814vzi3ysh17wgiawiy9319yahsvay"))))
+        (base32 "1lni31dhi1yrz0ga1l2268fyv564gsqiy1rjal8l765v40121q0p"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2604,13 +2799,13 @@ the linked time sheets and the linked purchase lines.")
 (define-public trytond-purchase-amendment
   (package
     (name "trytond-purchase-amendment")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_amendment" version))
        (sha256
-        (base32 "0bgk5ib7y1nzdrfx00g9qr2lxmjkascvh1caps21r12czz0iz5fx"))))
+        (base32 "0zprgfxpif2bbjbv8b4aci7s5si9sp3rjizr7nf31mvsjnwx7i06"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_amendment"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2637,13 +2832,13 @@ amendment is composed of action lines which can:
 (define-public trytond-purchase-history
   (package
     (name "trytond-purchase-history")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_history" version))
        (sha256
-        (base32 "18mb1vqmf9c934jp2qjwj4mi0sx99m8005vxc42mjj1f5qkxxsgg"))))
+        (base32 "0b72q0b41jfaahccdnya9amp5x4w90mlx4b32wdby96xvfi485ar"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_history"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2659,13 +2854,13 @@ time the purchase is reset to draft.")
 (define-public trytond-purchase-invoice-line-standalone
   (package
     (name "trytond-purchase-invoice-line-standalone")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_invoice_line_standalone" version))
        (sha256
-        (base32 "1qwa8a1vxalvb6r3d1w5wwpa9kx7w8c879x1zb4wwc9nqpdji8v0"))))
+        (base32 "169y69an6i796m8bmp8sanfn0qh7bcws8nangp96q07dsv51wrvb"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_invoice_line_standalone"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2682,13 +2877,13 @@ makes purchase to generate invoice lines instead of invoices.")
 (define-public trytond-purchase-price-list
   (package
     (name "trytond-purchase-price-list")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_price_list" version))
        (sha256
-        (base32 "0y54b677dy1jpmclgxvbzs2zsypzkyvmdbx1i58j16hs24l8h0c8"))))
+        (base32 "0xqry794l9vy5v5ck0qqy9yli57av4zzmpv1g8f9hkg7lm9ypg0v"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_price_list"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2708,13 +2903,13 @@ lists to be defined for suppliers.")
 (define-public trytond-purchase-request
   (package
     (name "trytond-purchase-request")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_request" version))
        (sha256
-        (base32 "0yhf3lh5b24qpk80r5pbmmswf5757bxa0s7ckl40vf6lkjkccv5i"))))
+        (base32 "0as8lb6bgjigpg926fjfyfy25758m45ihl1xish5vlfcxmccpyn3"))))
     (build-system python-build-system)
     ;; Doctest 'scenario_purchase_request.rst' fails.
     (arguments (tryton-arguments "purchase_request" "--no-doctest"))
@@ -2736,13 +2931,13 @@ generated by other process from Tryton.")
 (define-public trytond-purchase-request-quotation
   (package
     (name "trytond-purchase-request-quotation")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_request_quotation" version))
        (sha256
-        (base32 "12r34fawdsvxhaygs5nlnmx2a51x6yn0vgayj4qy083f4lv0mwml"))))
+        (base32 "08kcp88lfn8aa92cd07x5i5xbjznqy0x9lr34f07ky0i26nrnn72"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_request_quotation"))
     (native-inputs
@@ -2767,13 +2962,13 @@ supplier.")
 (define-public trytond-purchase-requisition
   (package
     (name "trytond-purchase-requisition")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_requisition" version))
        (sha256
-        (base32 "0hiz4q4cq7zz6xxl6bkk0vn71hc2wgasnhda5h41cmi69jphhzzk"))))
+        (base32 "0wm4xrxklwd5bbdzlwr5ca4h0zm6jx9pm08mspk15nbvf23qz5n3"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_requisition"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2798,13 +2993,13 @@ be created.")
 (define-public trytond-purchase-secondary-unit
   (package
     (name "trytond-purchase-secondary-unit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_secondary_unit" version))
        (sha256
-        (base32 "0vyvdrshlikp9m3gxn1yyi15qxgih0cccxndr9d257fap9nilip5"))))
+        (base32 "04fnrim6dimrd63rqbqginlklpih7sb4x3zai5idxjn6hc1l398y"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_secondary_unit"))
     (native-inputs
@@ -2829,13 +3024,13 @@ the product with its factor against the purchase unit.")
 (define-public trytond-purchase-shipment-cost
   (package
     (name "trytond-purchase-shipment-cost")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_purchase_shipment_cost" version))
        (sha256
-        (base32 "0n54mkw8fbhyxn8sxrkn97bkx2c1j7bngsc7isc3md5c3kyi50nf"))))
+        (base32 "1xpkqicv32vrhi89wpn073bc58x6xl189yv0f7h1i9m9q613w9ps"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "purchase_shipment_cost"))
     (native-inputs
@@ -2857,13 +3052,13 @@ shipment costs to Supplier Shipment.")
 (define-public trytond-sale
   (package
     (name "trytond-sale")
-    (version "6.0.1")
+    (version "6.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale" version))
        (sha256
-        (base32 "0wk5lhj74vl7zs4l3x176iwfqr3jnq37xhiksgnajsrjrl54bgfg"))))
+        (base32 "124cx2h93dw61rnavc2q7isjy9008qc379g82myihq9gh4z6rbpr"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2891,13 +3086,13 @@ to be generated that contain aggregated sales figures.")
 (define-public trytond-sale-advance-payment
   (package
     (name "trytond-sale-advance-payment")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_advance_payment" version))
        (sha256
-        (base32 "1h7jjh0ddfhk8b2rlmizlv5x31k14zz0xccm846kc4idvcsaqcy4"))))
+        (base32 "00rlg4jax212qha2w6acris7knj3b17a0rrlm7xyw0bp2vfzgb69"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_advance_payment"))
     (native-inputs
@@ -2916,13 +3111,13 @@ for advance payment management on the sale.")
 (define-public trytond-sale-amendment
   (package
     (name "trytond-sale-amendment")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_amendment" version))
        (sha256
-        (base32 "1vkcyfp30hng2vj1h1pvwrlvp9b59pkzzlmgnj6gvs867l8f2zva"))))
+        (base32 "0mrnqlgihkvn4z2p1k90c9cha8kqa28ss1ycjzsalxmngnw27hfg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_amendment"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2939,13 +3134,13 @@ composed of action lines which can:")
 (define-public trytond-sale-complaint
   (package
     (name "trytond-sale-complaint")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_complaint" version))
        (sha256
-        (base32 "0wbs7kawrzz39z0jw34ygdb85qja49xfb75ahbwgqd185wf3jvgz"))))
+        (base32 "172650xyn2k1ay6jd4vy6f71s9rfv8qalfx9j8jz0i4cn320z272"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_complaint"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2961,13 +3156,13 @@ composed of action lines which can:")
 (define-public trytond-sale-credit-limit
   (package
     (name "trytond-sale-credit-limit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_credit_limit" version))
        (sha256
-        (base32 "1qj4lg5gjsqg27sv6l5afb3rgw46y008ywy6742w9ab6misy57dh"))))
+        (base32 "0rx3zi0m4cbpbmjlzkii08424yz68y31nqqkgj6rl9swaqins67h"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_credit_limit"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -2988,13 +3183,13 @@ credit limit of the party when confirming a sale.")
 (define-public trytond-sale-discount
   (package
     (name "trytond-sale-discount")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_discount" version))
        (sha256
-        (base32 "0ss976dcx6k2z2gdbhcgdp6d561b2vwwgf83xdl2pc28q2d3rmh6"))))
+        (base32 "1kbfbd5rmvaaf5wwvb1akxf7zij1bqpzx2s0dahjxcihxwwra2ib"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_discount"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3009,13 +3204,13 @@ line.")
 (define-public trytond-sale-extra
   (package
     (name "trytond-sale-extra")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_extra" version))
        (sha256
-        (base32 "0n6fxv573bszhfw1ik16y9754jfp6r2rrliprm6iv7v5ld3r1yqi"))))
+        (base32 "0j9ya68p6bfyr2ixh1dqfqnmfa4mn5ayf9hn5pfm2z7nih8bys3r"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_extra"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3035,16 +3230,18 @@ on sale based on criteria.")
 (define-public trytond-sale-gift-card
   (package
     (name "trytond-sale-gift-card")
-    (version "6.0.3")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_gift_card" version))
        (sha256
-        (base32 "0bbcgm7xs5hmn3axz62jkarhl9v43nk9mk9zldlf9qrfqy89fd80"))))
+        (base32 "0r395qj178f39lip8mkwhn9lakkh3700hlpcsd208d8wqqqmbf1n"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_gift_card"))
-    (native-inputs (%standard-trytond-native-inputs))
+    (native-inputs
+     `(,@(%standard-trytond-native-inputs)
+       ("trytond-sale-point" ,trytond-sale-point)))
     (propagated-inputs
      (list trytond
            trytond-account
@@ -3062,13 +3259,13 @@ and redeeming of gift cards.")
 (define-public trytond-sale-history
   (package
     (name "trytond-sale-history")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_history" version))
        (sha256
-        (base32 "1pp5lmmpiqakcmwxv392v1miiisbb0yl55gjb618ngx6ayrd0vdv"))))
+        (base32 "0snjdbhq5mf8j7z6i6yqk3kjl3mpjsdzwnh5bzcnax2n4zrscvxq"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_history"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3084,13 +3281,13 @@ time the sale is reset to draft.")
 (define-public trytond-sale-invoice-grouping
   (package
     (name "trytond-sale-invoice-grouping")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_invoice_grouping" version))
        (sha256
-        (base32 "1h8lcm8dg3i6644c50d9y1lca9x7k8l6cvwzkabvzixm54mflqsx"))))
+        (base32 "1c70s1lnxzhg6yqv7vjxyqvxp4myh26i9hnnf1k045d6hwf80hvf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_invoice_grouping"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3106,13 +3303,13 @@ option to define how invoice lines generated from sales will be grouped.")
 (define-public trytond-sale-opportunity
   (package
     (name "trytond-sale-opportunity")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_opportunity" version))
        (sha256
-        (base32 "0rvj73382h2ha6jqhini0fzpn40w190qij1r7k2fa0c9ls15rrp5"))))
+        (base32 "05zliwc39zandn7amjzf1n7fqxq7yrwrx5b418ikh09pfz4alq21"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_opportunity"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3135,13 +3332,13 @@ lead/opportunity model.")
 (define-public trytond-sale-payment
   (package
     (name "trytond-sale-payment")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_payment" version))
        (sha256
-        (base32 "0i38766m9a0arhwybsqgk11zmmr982mmcsn0fswq695gb0zlwl0f"))))
+        (base32 "02zq3smfj55n70kqgipi2q869lp7hlfm0qbw74qx7pina28pipf4"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_payment"))
     (native-inputs
@@ -3156,16 +3353,43 @@ lead/opportunity model.")
 payments prior to the creation of any invoice.")
     (license license:gpl3+)))
 
+(define-public trytond-sale-point
+  (package
+    (name "trytond-sale-point")
+    (version "6.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_sale_point" version))
+              (sha256
+               (base32 "0brysadw75rm80yk66wq68gqkyb28zk65sw530fyacx9ma0sq0pj"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_sale_point"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-sql
+                             trytond
+                             trytond-account
+                             trytond-account-product
+                             trytond-company
+                             trytond-party
+                             trytond-product
+                             trytond-sale
+                             trytond-stock))
+    (home-page "https://docs.tryton.org/projects/modules-sale-point")
+    (synopsis "Tryton module for Point of Sales")
+    (description "The @emph{Sale Point} Tryton module allows retail sales to
+be handled and recorded.")
+    (license license:gpl3+)))
+
 (define-public trytond-sale-price-list
   (package
     (name "trytond-sale-price-list")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_price_list" version))
        (sha256
-        (base32 "0xg0i12a7billpdv13arvc3j5jsbn9gzis8snkl84315ayz3irq4"))))
+        (base32 "037h107wl3p3ig9w8db2878x80gzdf4dsa9wjrrcxdaz7yp7iwhn"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_price_list"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3181,13 +3405,13 @@ price list on sale.  A price list can be set per party or as default.")
 (define-public trytond-sale-product-customer
   (package
     (name "trytond-sale-product-customer")
-    (version "6.0.0")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_product_customer" version))
        (sha256
-        (base32 "0yys6mc52v62v51wkg3wngmz9jhqb2lq9v5jvb93j0yh5ah07a4v"))))
+        (base32 "01nyhimg00z33zzlxyg8incpfbgcqa7svmzzv5n0x2dafnx5n7wl"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_product_customer"))
     (native-inputs
@@ -3205,13 +3429,13 @@ customer's names and codes for products or variants.")
 (define-public trytond-sale-promotion
   (package
     (name "trytond-sale-promotion")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_promotion" version))
        (sha256
-        (base32 "1bvk14sjlqrlg2wakihrcbz8vl40hr6isbc3ijdsv5g1khl3j74i"))))
+        (base32 "1nd4f5j25v3g25hr0xr6kqzv0rqavnwkc5wyn8r0if1y9b2scwnc"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_promotion"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3232,13 +3456,13 @@ on a sale based on criteria.")
 (define-public trytond-sale-promotion-coupon
   (package
     (name "trytond-sale-promotion-coupon")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_promotion_coupon" version))
        (sha256
-        (base32 "1hkbsamsf6swx05ij2yh7b3nvmcnlvf9xbz9r7hfs6blx2jkxs3p"))))
+        (base32 "18086y4xszb5iq6v5ibq3kylzc3b8zbyn6pn6pm61mdbdpqav7mg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_promotion_coupon"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3254,13 +3478,13 @@ to the promotions.")
 (define-public trytond-sale-secondary-unit
   (package
     (name "trytond-sale-secondary-unit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_secondary_unit" version))
        (sha256
-        (base32 "0w7jw6ih4ypwqy83r5qrpclp3yalsrvnz65z2kn5yqaj95b4dpy8"))))
+        (base32 "0as7vc8wp2i3402h5r90zg6170y3av41a6k5ivdfbaxlhsjq8lxa"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_secondary_unit"))
     (native-inputs
@@ -3283,13 +3507,13 @@ unit is defined on the product with its factor against the sale unit.")
 (define-public trytond-sale-shipment-cost
   (package
     (name "trytond-sale-shipment-cost")
-    (version "6.0.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_shipment_cost" version))
        (sha256
-        (base32 "1h1qhp90f8mzx2px48fa8xsgwhbf2gkg8q94vghy696a3hh1xzxb"))))
+        (base32 "1r6jcsfxa2q448ks5s23apbj3b35rc5596qk7f3hzwiw6nm168k5"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_shipment_cost"))
     (native-inputs
@@ -3313,13 +3537,13 @@ cost for sale.")
 (define-public trytond-sale-shipment-grouping
   (package
     (name "trytond-sale-shipment-grouping")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_shipment_grouping" version))
        (sha256
-        (base32 "0n1h50j6c4za7a16pgn916cqjxxrd2qs16hb2h42wsp5p2bkfww2"))))
+        (base32 "0v8inxsgdhmkiaj0l3c2gjzbs96qbbxmbw67f14mx9axjvcvkkwy"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_shipment_grouping"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3335,13 +3559,13 @@ define how stock moves generated from sales will be grouped.")
 (define-public trytond-sale-shipment-tolerance
   (package
     (name "trytond-sale-shipment-tolerance")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_shipment_tolerance" version))
        (sha256
-        (base32 "0zigl695hyw7zyk86y1ng6mnvd9v8dbk05c5n6q14yvh4gz3ri5l"))))
+        (base32 "1vggdhnfg05dad2gmyi49ydhrq3sjqva4shn9zygj8fyjpkppx2y"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_shipment_tolerance"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3361,13 +3585,13 @@ raised.")
 (define-public trytond-sale-stock-quantity
   (package
     (name "trytond-sale-stock-quantity")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_stock_quantity" version))
        (sha256
-        (base32 "0xi79nmizly3hfc1ppcid622nvby50524jflisfvmjb651ixpfl8"))))
+        (base32 "0bn06a752rp16ki5xa0dr3in5xj1hry6020qgz6mji8kxl24v7sv"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_stock_quantity"))
     (native-inputs
@@ -3387,13 +3611,13 @@ stock forecasts.")
 (define-public trytond-sale-subscription
   (package
     (name "trytond-sale-subscription")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_subscription" version))
        (sha256
-        (base32 "092ljl0ywybwchp4qfki752nclqc6hkx2h99cd1h3g998jv3l72x"))))
+        (base32 "095zdy6031lqffm3yddhsrv93dl2dgqjpbskp539knvd72bdaqdd"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_subscription"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3414,13 +3638,13 @@ services and recurrence rule models.")
 (define-public trytond-sale-subscription-asset
   (package
     (name "trytond-sale-subscription-asset")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_subscription_asset" version))
        (sha256
-        (base32 "1j160sqfvzqv0ah85w2bsc4fixrxhzjq0lbin2bgasmdm3yqfqdj"))))
+        (base32 "0bkksk3l3ydxmqglsrrqgwgrak6iwc740vmj0dpw93h4f127haiv"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_subscription_asset"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3436,13 +3660,13 @@ notion of asset to the sale subscription module.")
 (define-public trytond-sale-supply
   (package
     (name "trytond-sale-supply")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_supply" version))
        (sha256
-        (base32 "0lk4pj2fr1q603wnia96i7fzym8pncpvy0hg41q4dkr380nm3qzs"))))
+        (base32 "05ik819spy8jmc5k10mki6kxdjxdqrr4x0g3rgvvlnmadn5igykf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_supply"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3462,13 +3686,13 @@ supply method.")
 (define-public trytond-sale-supply-drop-shipment
   (package
     (name "trytond-sale-supply-drop-shipment")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_supply_drop_shipment" version))
        (sha256
-        (base32 "0gm2m5zm7vrm1vb34svqby7h91ka3mhln3367zmwr17yfyqf68dk"))))
+        (base32 "1i3a8amm3nacc7wis3amr4z9pl47sjzy7gds5qv1xg3fl1awm4ic"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_supply_drop_shipment"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3494,13 +3718,13 @@ shipment is created and linked to both the purchase and the sale.")
 (define-public trytond-sale-supply-production
   (package
     (name "trytond-sale-supply-production")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_sale_supply_production" version))
        (sha256
-        (base32 "03v702r4sfmql5yv6414gi2y72psvr3zq3xmx049w5nsywc2585v"))))
+        (base32 "08ky3mqprlqyksw91mqlb7mjkfpdrgzgnc862wm2q28s0aydn3dv"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "sale_supply_production"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3520,13 +3744,13 @@ back to the default supply method.")
 (define-public trytond-stock
   (package
     (name "trytond-stock")
-    (version "6.0.6")
+    (version "6.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock" version))
        (sha256
-        (base32 "1v6pvkwj6vhjqbz2zn0609kb7kx4g0dsn1xhvax4z2dqigh7ywpx"))))
+        (base32 "02klx6qk2vrwiynxcdjnpqx593wr1wjg9sygh5zjzrqqwmjb16yi"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3552,13 +3776,13 @@ inventory to control and update stock levels.")
 (define-public trytond-stock-assign-manual
   (package
     (name "trytond-stock-assign-manual")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_assign_manual" version))
        (sha256
-        (base32 "0106x21ncxiyd4jsbdapmf6gfix6infjf59807j2lqmrblb3z25f"))))
+        (base32 "0jn5rbbgmr7jnddrbmy49r2vpfbbfsrgx1bkgjkg687d922lwnrh"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_assign_manual"))
     (native-inputs
@@ -3576,13 +3800,13 @@ location to pick products.")
 (define-public trytond-stock-consignment
   (package
     (name "trytond-stock-consignment")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_consignment" version))
        (sha256
-        (base32 "0c2wa0d8msam77nd4c79f71jaznsprnlvv1jqrmkl1qf3lvgq4a2"))))
+        (base32 "0c26gvqmh98hj7zp1kx3q30wdwnvy8j101m9kmsi21j9n2nw7maj"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_consignment"))
     (native-inputs
@@ -3606,13 +3830,13 @@ consignment stock from supplier or at customer warehouse.")
 (define-public trytond-stock-forecast
   (package
     (name "trytond-stock-forecast")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_forecast" version))
        (sha256
-        (base32 "1l3ks2jbz95qqbv9jsvakrxgazyq1kkk3fspwvrg1d10rv6xmb58"))))
+        (base32 "19w4q71rm4j0rlsdp6d2ykyjcdkrvq5mjlprsdk6890dmnxm6czx"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_forecast"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3628,13 +3852,13 @@ other stock mechanisms to anticipate customer demand.")
 (define-public trytond-stock-inventory-location
   (package
     (name "trytond-stock-inventory-location")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_inventory_location" version))
        (sha256
-        (base32 "0mvgday5qhmx89xikklr2ad2xa7zxkiysxa2bqsf76imvx4801q6"))))
+        (base32 "1x35rq6hzxb9wzsflvlsbl1fjgqcp6byrj4rk20fvgbhnv02s4x0"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_inventory_location"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3650,13 +3874,13 @@ wizard \"Create Inventories\" under the \"Inventories\" sub-menu.")
 (define-public trytond-stock-location-move
   (package
     (name "trytond-stock-location-move")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_location_move" version))
        (sha256
-        (base32 "1mljb97abwcmsl3zmz20b2kfa8wm9q405kr1lag7j5587j2b2h6f"))))
+        (base32 "07f0xq26wc0vpxf94655gsya3nxsa2xpi6v1c74q5a2qan4gkv9k"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_location_move"))
     (native-inputs
@@ -3674,13 +3898,13 @@ defining some Locations as movable
 (define-public trytond-stock-location-sequence
   (package
     (name "trytond-stock-location-sequence")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_location_sequence" version))
        (sha256
-        (base32 "0lpvgk5s7v30c0hicqc2m6apv8gzd1d6229yv1lrp2g62yp9pa9f"))))
+        (base32 "0ab2jf36mmbkg0hrhwrmpjh5m9kpl60mz1gdkb2zhv629z9bxr13"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_location_sequence"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3696,13 +3920,13 @@ ordering to location.")
 (define-public trytond-stock-lot
   (package
     (name "trytond-stock-lot")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_lot" version))
        (sha256
-        (base32 "18cwrvnrzjk1wb765gr6hp3plpdpwz1a7cwimjhxi47iw7w5c84g"))))
+        (base32 "0z0ligvgvm2py794sg2ay5r47pm30m890lmfp2jvdr3vjbq3f1a3"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_lot"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3720,13 +3944,13 @@ ordering to location.")
 (define-public trytond-stock-lot-sled
   (package
     (name "trytond-stock-lot-sled")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_lot_sled" version))
        (sha256
-        (base32 "1x8sjhgbakqbgfhrrl7b1b0961riqibs6q6lmgmyrvjyrxx0hpig"))))
+        (base32 "14bx84snw6kd896h6gdd825qrg2p7nmm341xl8qvrpn34jq3p2p1"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_lot_sled"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3743,13 +3967,13 @@ it is no more used to compute the forecast quantity of the stock.")
 (define-public trytond-stock-lot-unit
   (package
     (name "trytond-stock-lot-unit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_lot_unit" version))
        (sha256
-        (base32 "1acvrj9af83gmfcp7kgyi37kv3v5910rh1q73scd37xbv7h8dyrm"))))
+        (base32 "1m6vbz57y0yrjv4z447gggqgcwd6dzk0hrycv5zvbq4h1kscrh6z"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_lot_unit"))
     (native-inputs
@@ -3766,13 +3990,13 @@ unit and quantity on stock lot.")
 (define-public trytond-stock-package
   (package
     (name "trytond-stock-package")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_package" version))
        (sha256
-        (base32 "1jbpl141wyc19v27bcyqsph8p2zf9yqprm55yl642mvwq55bshq8"))))
+        (base32 "1jy7qz62h29rf10mjr9d9pm6g53ira26m77iccs0cwv3qlrv87rg"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_package"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3787,13 +4011,13 @@ packaging information about customer and supplier return shipments.")
 (define-public trytond-stock-package-shipping
   (package
     (name "trytond-stock-package-shipping")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_package_shipping" version))
        (sha256
-        (base32 "09j7v64wmpiw1bh9byjq4shsd5474rq0mfx7wwak8hn0v5ni7imn"))))
+        (base32 "0j902bvkmfhn353z6dgfbik7jh5yps13jz4dq785rqj2ia5az9iq"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_package_shipping"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3802,9 +4026,9 @@ packaging information about customer and supplier return shipments.")
            trytond-carrier
            trytond-product
            trytond-product-measurements
-           trytond-sale-shipment-cost
            trytond-stock
            trytond-stock-package
+           trytond-stock-shipment-cost
            trytond-stock-shipment-measurements))
     (home-page
      "https://docs.tryton.org/projects/modules-stock-package-shipping")
@@ -3816,13 +4040,13 @@ interact with shipping service providers.")
 (define-public trytond-stock-package-shipping-dpd
   (package
     (name "trytond-stock-package-shipping-dpd")
-    (version "6.0.0")
+    (version "6.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_package_shipping_dpd" version))
        (sha256
-        (base32 "11jn2i7gkxj4nck5fkp0j8n8r6vhsv26rcnmmmmdh1iqji7cv8yf"))))
+        (base32 "0q7g5qg9j32kn51yigiahd939k2x9gfsnb8k6kinyc9vhq3anbkx"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_package_shipping_dpd"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3838,16 +4062,70 @@ you to generate the DPD label using the DPD webservices.  DPD has many
 different web services, the module supports:")
     (license license:gpl3+)))
 
+(define-public trytond-stock-package-shipping-mygls
+  (package
+    (name "trytond-stock-package-shipping-mygls")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_stock_package_shipping_mygls" version))
+              (sha256
+               (base32 "0pwq720mqv473s5aqib89z5bjdl127l8nqw91prxsna82bm16kv2"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_stock_package_shipping_mygls"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-pypdf2
+                             trytond
+                             trytond-carrier
+                             trytond-stock
+                             trytond-stock-package
+                             trytond-stock-package-shipping
+                             python-zeep))
+    (home-page "https://docs.tryton.org/projects/modules-stock-package-shipping-mygls")
+    (synopsis "MyGLS connector for the Tryton application platform")
+    (description "The @emph{Stock Package Shipping MyGLS} Tryton module allows
+package labels to be generated for shipments using MyGLS webservices.")
+    (license license:gpl3+)))
+
+(define-public trytond-stock-package-shipping-sendcloud
+  (package
+    (name "trytond-stock-package-shipping-sendcloud")
+    (version "6.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_stock_package_shipping_sendcloud" version))
+              (sha256
+               (base32 "1hvlyrdz1nv1l06qrdj1np8yfyip8hhw0l7wbin1rab63hbxa8rf"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_stock_package_shipping_sendcloud"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-requests
+                             trytond
+                             trytond-company
+                             trytond-party
+                             trytond-product
+                             trytond-stock
+                             trytond-stock-package
+                             trytond-stock-package-shipping
+                             trytond-stock-shipment-measurements))
+    (home-page
+     "https://docs.tryton.org/projects/modules-stock-package-shipping-sendcloud")
+    (synopsis "Sendcloud connector for the Tryton application platform")
+    (description "The @emph{Stock Package Shipping Sendcloud} Tryton module
+allows package labels to be generated for shipments made by any of Sendcloud’s
+supported carriers.")
+    (license license:gpl3+)))
+
 (define-public trytond-stock-package-shipping-ups
   (package
     (name "trytond-stock-package-shipping-ups")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_package_shipping_ups" version))
        (sha256
-        (base32 "1dw6amd1kvpsldk14m656c0hpazf1ljzz2zri00nqq11d9x8xab5"))))
+        (base32 "198i6fdb9ghcsd7z1cb1f3m261dl9w9hxmzzvs7h51f2lbw07n58"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_package_shipping_ups"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3870,13 +4148,13 @@ you to generate the UPS labels per package using the UPS webservices.")
 (define-public trytond-stock-product-location
   (package
     (name "trytond-stock-product-location")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_product_location" version))
        (sha256
-        (base32 "1r0a9pkyjh1n0xhax583v80fawnszxaf9q8r3851325an2rmndx8"))))
+        (base32 "18r7j40zdbva8rcxyhianjwb7m30db7qf85709kivvbvbk93rabh"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_product_location"))
     (native-inputs
@@ -3897,13 +4175,13 @@ warehouse.")
 (define-public trytond-stock-quantity-early-planning
   (package
     (name "trytond-stock-quantity-early-planning")
-    (version "6.0.0")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_quantity_early_planning" version))
        (sha256
-        (base32 "05djbhz82wjkgvfvlzkhzi94nfg0cif3jfmh1jv0zixzfv87chqs"))))
+        (base32 "04fj6h21kl4ab8vl1w9vhnvsxgjg6qd1gxcf1i6r7pfsbhjz8gfj"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_quantity_early_planning"))
     (native-inputs
@@ -3921,13 +4199,13 @@ reducing stock level by proposing to consume earlier.")
 (define-public trytond-stock-quantity-issue
   (package
     (name "trytond-stock-quantity-issue")
-    (version "6.0.1")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_quantity_issue" version))
        (sha256
-        (base32 "1fk250l09l2q4jcx1vh9nkkpn419ng993bkp2bmk6dpk7xs1qv0v"))))
+        (base32 "0ig2lix5qw8ql1gax8dymwc7advmf9x3xc8djhw5sgb8v0bvknrv"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_quantity_issue"))
     (native-inputs
@@ -3944,13 +4222,13 @@ stock quantity issues.")
 (define-public trytond-stock-secondary-unit
   (package
     (name "trytond-stock-secondary-unit")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_secondary_unit" version))
        (sha256
-        (base32 "0s4nryiirdbndm2sz5aqpk2mzw9zxah92gmh6433sj5zyc6a22if"))))
+        (base32 "0ihhgf4xs5rrf12v9mfj4rpsxjrqfl7schp3r66cdmrm0ccnrj29"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_secondary_unit"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -3965,18 +4243,18 @@ secondary unit of measure on the stock move.")
 (define-public trytond-stock-shipment-cost
   (package
     (name "trytond-stock-shipment-cost")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_shipment_cost" version))
        (sha256
-        (base32 "13c940pz5ivqj9qk6b5nbid2xfkjnnijjmbz1bn7ic7ydfpiqy8j"))))
+        (base32 "0abl4lw0mz7c1chv5c5r3341cqcfz49nw00g9y12kxbxib17h3fc"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_shipment_cost"))
     (native-inputs (%standard-trytond-native-inputs))
     (propagated-inputs
-     (list trytond trytond-product trytond-stock))
+     (list trytond trytond-carrier trytond-product trytond-stock))
     (home-page "https://docs.tryton.org/projects/modules-stock-shipment-cost")
     (synopsis "Tryton module for stock shipment cost")
     (description "The @emph{Stock Shipment Cost} Tryton Module adds a shipment
@@ -3987,13 +4265,13 @@ price.  This cost is added to the product margin reports.")
 (define-public trytond-stock-shipment-measurements
   (package
     (name "trytond-stock-shipment-measurements")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_shipment_measurements" version))
        (sha256
-        (base32 "1h9ijs7yc0013w7cwa4i7ny3dndbgycxxpkai7qw0ygqf9ajmh8c"))))
+        (base32 "0a2p3c1780waa779kx24vpknjr9g6z8097ika9kl047xzdnw4n00"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_shipment_measurements"))
     (native-inputs
@@ -4013,13 +4291,13 @@ measurement and the quantity of their moves.")
 (define-public trytond-stock-split
   (package
     (name "trytond-stock-split")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_split" version))
        (sha256
-        (base32 "0ynvmmdxgzgg6mn8ckhl7jr9ircq4bpwsl0xpzk83r6mhlvlrxpm"))))
+        (base32 "1gqbkncdg084cxfsq7vc4ikvdajd2akbl2ryi3awh5xs7phrpabf"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_split"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4036,13 +4314,13 @@ there can be a move with the remaining quantity.")
 (define-public trytond-stock-supply
   (package
     (name "trytond-stock-supply")
-    (version "6.0.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_supply" version))
        (sha256
-        (base32 "1p5l3yjjy6l25kk9xnhbl691l3v8gfg9fhc87jc6qszhxlqxk730"))))
+        (base32 "1kb6rnb1xk8hnqr9znfpgh8m66590zqbar62xr7094bwaym2ymaa"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_supply"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4067,13 +4345,13 @@ mechanisms and introduces the concepts of order point.")
 (define-public trytond-stock-supply-day
   (package
     (name "trytond-stock-supply-day")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_supply_day" version))
        (sha256
-        (base32 "1b6q2zk0qnsxdhlqgsnb49prgn6sgqlpr84vy31a2p83mwiz0fqr"))))
+        (base32 "112xzrzw2k4badync2qd9aanvni43nh86qhrdh754f311km5gh7q"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_supply_day"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4090,13 +4368,13 @@ a supplying may happens at any day of the week.")
 (define-public trytond-stock-supply-forecast
   (package
     (name "trytond-stock-supply-forecast")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_supply_forecast" version))
        (sha256
-        (base32 "0i5dc9ddd6mfx3zjlcq16isw52b8qy7igaj2lv8jqvkdrc19yfha"))))
+        (base32 "0b7d8csjcn74086wgm6cydirsl1ygrd9hysd7l4kmd3jz8bb8dzs"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_supply_forecast"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4112,13 +4390,13 @@ forecast into account to compute purchase requests.")
 (define-public trytond-stock-supply-production
   (package
     (name "trytond-stock-supply-production")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_stock_supply_production" version))
        (sha256
-        (base32 "1qyvj61hwn3xgjqagnr7d28qkiniw5fp0b5vmn9wii9grf7p4m8d"))))
+        (base32 "03cs9g9yfw885ia03x2lxkpjnh919ynizimvvx1jay62i3adk7a2"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "stock_supply_production"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4135,13 +4413,13 @@ supply mechanisms via production request.")
 (define-public trytond-timesheet
   (package
     (name "trytond-timesheet")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_timesheet" version))
        (sha256
-        (base32 "0airh5jvcdjbkb71p684dr5qgsnpam2hhmq6gswclgnx3nd1lz6a"))))
+        (base32 "0lbdb0743mj33vrzrb3fq93d3ksj3395d7q0ivbplp1nn3hrh6sq"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "timesheet"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4158,13 +4436,13 @@ periods.")
 (define-public trytond-timesheet-cost
   (package
     (name "trytond-timesheet-cost")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_timesheet_cost" version))
        (sha256
-        (base32 "0pjsdgad2plbx8k6mh6mpa6qbz6lp30nnpv7ydyz0gsgb6jz7li6"))))
+        (base32 "1b1xi7fa371kdsci0naskspvznswb8z8yay7nrzzi8rv622g0cjw"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "timesheet_cost"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4179,13 +4457,13 @@ employee.")
 (define-public trytond-user-role
   (package
     (name "trytond-user-role")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_user_role" version))
        (sha256
-        (base32 "11sjz46kagrpig5n05pp52yph4z0l1zm140q9wsagjcmzkx7s6gf"))))
+        (base32 "0kx6vqmhny8xjzm2wsy0kf14ybgcdig1cjhyir9b0v11fbavhbw7"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "user_role"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4202,18 +4480,19 @@ user for a period of time only.")
 (define-public trytond-web-shop
   (package
     (name "trytond-web-shop")
-    (version "6.0.2")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_web_shop" version))
        (sha256
-        (base32 "0gnq9hyx4x681hcmqsm2d6rga7chbaf2r2k2nmnkjq6izg5ivas2"))))
+        (base32 "182mawahm74lkns2cpy9lrczhllpa8p8np1d7k9agv9kypaqq582"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "web_shop"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
-       ("trytond-product-attribute" ,trytond-product-attribute)))
+       ("trytond-product-attribute" ,trytond-product-attribute)
+       ("trytond-product-image" ,trytond-product-image)))
     (propagated-inputs
      (list trytond
            trytond-account
@@ -4229,24 +4508,59 @@ user for a period of time only.")
 configuration of an online web shop.")
     (license license:gpl3+)))
 
+(define-public trytond-web-shop-shopify
+  (package
+    (name "trytond-web-shop-shopify")
+    (version "6.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "trytond_web_shop_shopify" version))
+              (sha256
+               (base32 "1nd2wnzr6cibqcsidk0k98iy4vs7dy7crhld60wkbza8pgc23hc4"))))
+    (build-system python-build-system)
+    (arguments (tryton-arguments "trytond_web_shop_shopify"))
+    (native-inputs (%standard-trytond-native-inputs))
+    (propagated-inputs (list python-dateutil
+                             python-pyactiveresource
+                             python-shopifyapi
+                             python-sql
+                             trytond
+                             trytond-account-payment
+                             trytond-currency
+                             trytond-party
+                             trytond-product
+                             trytond-product-attribute
+                             trytond-sale
+                             trytond-sale-payment
+                             trytond-stock
+                             trytond-web-shop))
+    (home-page "https://docs.tryton.org/projects/modules-web-shop-shopify")
+    (synopsis "Integrate Tryton with Shopify")
+    (description "The @emph{Web Shop Shopify} Tryton module provides a way to
+manage @emph{Shopify} stores.  It uploads products, variants and collections
+to Shopify, and downloads orders, transactions and creates fulfilments.")
+    (license license:gpl3+)))
+
 (define-public trytond-web-shop-vue-storefront
   (package
     (name "trytond-web-shop-vue-storefront")
-    (version "6.0.2")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_web_shop_vue_storefront" version))
        (sha256
-        (base32 "0hccvk5i2qrczvbm66mnp8vcgr9zbnwqmbqmavqlkk7r7bqa1gch"))))
+        (base32 "18rc77crfdckzxcz5wryqk0iqccm3mx2a6b956274643sa8kbhvs"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "web_shop_vue_storefront"))
     (native-inputs
      `(,@(%standard-trytond-native-inputs)
        ("trytond-carrier" ,trytond-carrier)
        ("trytond-product-attribute" ,trytond-product-attribute)
+       ("trytond-product-image" ,trytond-product-image)
        ("trytond-sale-promotion-coupon" ,trytond-sale-promotion-coupon)
-       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)))
+       ("trytond-sale-shipment-cost" ,trytond-sale-shipment-cost)
+       ("trytond-stock-shipment-cost" ,trytond-stock-shipment-cost)))
     (propagated-inputs
      (list python-elasticsearch
            python-stdnum
@@ -4266,13 +4580,13 @@ Vue Storefront 1.x.")
 (define-public trytond-web-shop-vue-storefront-stripe
   (package
     (name "trytond-web-shop-vue-storefront-stripe")
-    (version "6.0.1")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_web_shop_vue_storefront_stripe" version))
        (sha256
-        (base32 "0j4yv9q0f39bkyqlcn7kpnlqi9wc4qfjs8zic69za6xw2c86zgzm"))))
+        (base32 "0qzcflcrkd35da9vb9gl9mnxg7dis1sz9kp9hb6hbnmyjbhdz17k"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "web_shop_vue_storefront_stripe"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4289,13 +4603,13 @@ provides support of Stripe payment for Vue Storefront integration.")
 (define-public trytond-web-shortener
   (package
     (name "trytond-web-shortener")
-    (version "6.0.0")
+    (version "6.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_web_shortener" version))
        (sha256
-        (base32 "0vxwnsy7xzxawn7fmm6ykdrhih6ahrwwx6fzd6kz7qbwh4nmqcpk"))))
+        (base32 "0mjcp97f5dh6lzgw4yhd7k01jlmaga1jvsc07as1snz9y7r06kpk"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "web_shortener"))
     (native-inputs (%standard-trytond-native-inputs))
@@ -4311,13 +4625,13 @@ optionally triggers action.")
 (define-public trytond-web-user
   (package
     (name "trytond-web-user")
-    (version "6.0.0")
+    (version "6.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trytond_web_user" version))
        (sha256
-        (base32 "1k07d1kcfm2hwwqcyy8k5mjbhhgrnji0hadn487zsx1zp50r6rds"))))
+        (base32 "04b3mb4kxibz073746c90i9k4gsc3vnnk47fcn4wqj2b2wq6smng"))))
     (build-system python-build-system)
     (arguments (tryton-arguments "web_user"))
     (native-inputs (%standard-trytond-native-inputs))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0e3f01ede9..9529963a85 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -589,7 +589,14 @@ everything from small to very large projects with speed and efficiency.")
     (properties '((lint-hidden-cve . ("CVE-2018-1000182"
                                       "CVE-2018-1000110"
                                       "CVE-2019-1003010"
-                                      "CVE-2020-2136"))))
+                                      "CVE-2020-2136"
+                                      "CVE-2021-21684"
+                                      "CVE-2022-30947"
+                                      "CVE-2022-30948"
+                                      "CVE-2022-30949"
+                                      "CVE-2022-36882"
+                                      "CVE-2022-36883"
+                                      "CVE-2022-36884"))))
     (license license:gpl2)
     (home-page "https://git-scm.com/")))
 
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index e9f108bde5..4e808570e7 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -339,7 +339,7 @@ efficiency.")
 (define-public mediasdk
   (package
     (name "mediasdk")
-    (version "20.1.1")
+    (version "22.4.4")
     (source
      (origin
        (method git-fetch)
@@ -349,29 +349,33 @@ efficiency.")
          (commit (string-append "intel-" name "-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0blwcxr5j8762nylx2cxrq0h53bpgnk859dbs6crq4wr9fcxlx9z"))))
+        (base32 "18mrqringyv1drswm4m8ppw7sks6x4jzp6s0ag0h9hrpd15kn5rx"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags
-       (list
-        "-DENABLE_X11=ON"
-        "-DENABLE_X11_DRI3=ON"
-        "-DENABLE_WAYLAND=ON"
-        "-DENABLE_TEXTLOG=ON"
-        "-DENABLE_STAT=ON"
-        "-DBUILD_TESTS=ON"
-        "-DBUILD_TOOLS=ON"
-        (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
-                       (assoc-ref %outputs "out") "/lib"))))
+     (list
+      #:configure-flags
+      #~(list
+         "-DENABLE_X11=ON"
+         "-DENABLE_X11_DRI3=ON"
+         "-DENABLE_WAYLAND=ON"
+         "-DENABLE_TEXTLOG=ON"
+         "-DENABLE_STAT=ON"
+         "-DBUILD_TESTS=ON"
+         "-DBUILD_TOOLS=ON"
+         (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
+                        #$output "/lib"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-embed-kernel-version
+            (lambda _
+              (substitute* "builder/FindGlobals.cmake"
+                (("set\\([[:blank:]]+?BUILD_INFO \"\\$\\{CMAKE_SYSTEM\\}\
+ \\$\\{CMAKE_SYSTEM_VERSION\\}")
+                 "set( BUILD_INFO \"Linux")))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list pkg-config python-wrapper))
     (inputs
-     `(("libdrm" ,libdrm)
-       ("libva" ,libva)
-       ("pciaccess" ,libpciaccess)
-       ("wayland" ,wayland)
-       ("x11" ,libx11)))
+     (list libdrm libva libpciaccess wayland libx11))
     (synopsis "Intel Media SDK")
     (description "MediaSDK provides a plain C API to access hardware-accelerated
 video decode, encode and filtering on Intel's Gen graphics hardware platforms.")
@@ -1000,7 +1004,7 @@ H.264 (MPEG-4 AVC) video streams.")
            pcre2
            pugixml
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            utfcpp
            zlib))
     (native-inputs
@@ -1012,7 +1016,7 @@ H.264 (MPEG-4 AVC) video streams.")
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("po4a" ,po4a)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("ruby" ,ruby)))
     (arguments
      `(#:configure-flags
@@ -1252,6 +1256,10 @@ on the Invidious instances only as a fallback method.")
                  ,@(if (target-aarch64?)
                      '("-DENABLE_ASSEMBLY=OFF")
                      '())
+                 ;; Altivec code produces many build errors.
+                 ,@(if (target-ppc64le?)
+                       '("-DENABLE_ALTIVEC=OFF")
+                       '())
                  "-DHIGH_BIT_DEPTH=ON"
                  "-DEXPORT_C_API=OFF"
                  "-DENABLE_CLI=OFF"
@@ -1272,6 +1280,10 @@ on the Invidious instances only as a fallback method.")
                  ,@(if (target-aarch64?)
                      '("-DENABLE_ASSEMBLY=OFF")
                      '())
+                 ;; Altivec code produces many build errors.
+                 ,@(if (target-ppc64le?)
+                       '("-DENABLE_ALTIVEC=OFF")
+                       '())
                  "-DHIGH_BIT_DEPTH=ON"
                  "-DEXPORT_C_API=OFF"
                  "-DENABLE_CLI=OFF"
@@ -1444,16 +1456,16 @@ libebml is a C++ library to read and write EBML files.")
 (define-public libplacebo
   (package
     (name "libplacebo")
-    (version "4.157.0")
+    (version "4.208.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://code.videolan.org/videolan/libplacebo")
+             (url "https://code.videolan.org/videolan/libplacebo.git")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08kqsd29h8wm0vz7698wh2mdgpwv6anqc5n7d1spnnamwyfwc64h"))))
+        (base32 "161dp5781s74ca3gglaxlmchx7glyshf0wg43w98pl22n1jcm5qk"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -1462,7 +1474,7 @@ libebml is a C++ library to read and write EBML files.")
                          (assoc-ref %build-inputs "vulkan-headers")
                          "/share/vulkan/registry/vk.xml"))))
     (native-inputs
-     (list python-mako pkg-config))
+     (list python python-mako pkg-config))
     (inputs
      (list lcms
            libepoxy
@@ -1968,7 +1980,7 @@ videoformats depend on the configuration flags of ffmpeg.")
            pulseaudio
            python-wrapper
            qtbase-5
-           qtsvg
+           qtsvg-5
            qtx11extras
            samba
            sdl
@@ -2239,7 +2251,7 @@ projects while introducing many more.")
                 "12nvcl0cfix1xay9hfi7856vg4lpv8y5b0a22212bsjbvl5g22rc"))))
     (build-system qt-build-system)
     (native-inputs
-     (list qttools))
+     (list qttools-5))
     (inputs
      (list bash-minimal qtbase-5 zlib mpv))
     (arguments
@@ -2471,7 +2483,7 @@ YouTube.com and many more sites.")
 (define-public yt-dlp
   (package/inherit youtube-dl
     (name "yt-dlp")
-    (version "2022.06.22.1")
+    (version "2022.07.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/yt-dlp/yt-dlp/"
@@ -2479,55 +2491,54 @@ YouTube.com and many more sites.")
                                   version "/yt-dlp.tar.gz"))
               (sha256
                (base32
-                "1nr6g3dhvjc10jzhyvgjrrxqhsgi3hiw8bswp8bi6bscimd9vhps"))
+                "1wmzfqhysx1mqdba4ikvm6nbahasihi4xgqwqad20y3vs701slyj"))
               (snippet
-               '(begin
-                  ;; Delete the pre-generated files, except for the man page
-                  ;; which requires 'pandoc' to build.
-                  (for-each delete-file '("yt-dlp"
-                                          ;;pandoc is needed to generate
-                                          ;;"yt-dlp.1"
-                                          "completions/bash/yt-dlp"
-                                          "completions/fish/yt-dlp.fish"
-                                          "completions/zsh/_yt-dlp"))))))
+               #~(begin
+                   ;; Delete the pre-generated files, except for the man page
+                   ;; which requires 'pandoc' to build.
+                   (for-each delete-file
+                             (list "yt-dlp"
+                                   ;;pandoc is needed to generate
+                                   ;;"yt-dlp.1"
+                                   "completions/bash/yt-dlp"
+                                   "completions/fish/yt-dlp.fish"
+                                   "completions/zsh/_yt-dlp"))))))
     (arguments
      (substitute-keyword-arguments (package-arguments youtube-dl)
        ((#:tests? _) #t)
        ((#:phases phases)
-        `(modify-phases ,phases
-           ;; See the comment for the corresponding phase in youtube-dl.
-           (replace 'default-to-the-ffmpeg-input
-             (lambda _
-               (substitute* "yt_dlp/postprocessor/ffmpeg.py"
-                 (("\\.get_param\\('ffmpeg_location'\\)" match)
-                  (format #f "~a or '~a'" match (which "ffmpeg"))))))
-           (replace 'build-generated-files
-             (lambda _
-               ;; Avoid the yt-dlp.1 target, which requires pandoc.
-               (invoke "make" "PYTHON=python" "yt-dlp" "completions")))
-           (replace 'fix-the-data-directories
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((prefix (assoc-ref outputs "out")))
-                 (substitute* "setup.py"
-                   (("'etc/")
-                    (string-append "'" prefix "/etc/"))
-                   (("'share/")
-                    (string-append "'" prefix "/share/"))))))
-           (delete 'install-completion)
-           (replace 'check
-             (lambda* (#:key tests? #:allow-other-keys)
-               (when tests?
-                 (invoke "pytest" "-k" "not download"))))))))
-    (inputs
-     `(("python-brotli" ,python-brotli)
-       ("python-certifi" ,python-certifi)
-       ("python-mutagen" ,python-mutagen)
-       ("python-pycryptodomex" ,python-pycryptodomex)
-       ("python-websockets" ,python-websockets)
-       ,@(package-inputs youtube-dl)))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ,@(package-native-inputs youtube-dl)))
+        #~(modify-phases #$phases
+            ;; See the comment for the corresponding phase in youtube-dl.
+            (replace 'default-to-the-ffmpeg-input
+              (lambda _
+                (substitute* "yt_dlp/postprocessor/ffmpeg.py"
+                  (("\\.get_param\\('ffmpeg_location'\\)" match)
+                   (format #f "~a or '~a'" match (which "ffmpeg"))))))
+            (replace 'build-generated-files
+              (lambda _
+                ;; Avoid the yt-dlp.1 target, which requires pandoc.
+                (invoke "make" "PYTHON=python" "yt-dlp" "completions")))
+            (replace 'fix-the-data-directories
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let ((prefix (assoc-ref outputs "out")))
+                  (substitute* "setup.py"
+                    (("'etc/")
+                     (string-append "'" prefix "/etc/"))
+                    (("'share/")
+                     (string-append "'" prefix "/share/"))))))
+            (delete 'install-completion)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "pytest" "-k" "not download"))))))))
+    (inputs (modify-inputs (package-inputs youtube-dl)
+              (append python-brotli
+                      python-certifi
+                      python-mutagen
+                      python-pycryptodomex
+                      python-websockets)))
+    (native-inputs (modify-inputs (package-native-inputs youtube-dl)
+                     (append python-pytest)))
     (description
      "yt-dlp is a small command-line program to download videos from
 YouTube.com and many more sites.  It is a fork of youtube-dl with a
@@ -2872,7 +2883,7 @@ for use with HTML5 video.")
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
-       ("qttools" ,qttools)
+       ("qttools-5" ,qttools-5)
        ("yasm" ,yasm)))
     ;; FIXME: Once packaged, add libraries not found during the build.
     (inputs
@@ -3191,7 +3202,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
            libsamplerate
            pulseaudio
            qtbase-5
-           qtsvg
+           qtsvg-5
            rtaudio
            sdl2
            sdl2-image
@@ -3239,14 +3250,14 @@ tools, XML authoring components, and an extensible plug-in based API.")
 (define-public v4l-utils
   (package
     (name "v4l-utils")
-    (version "1.20.0")
+    (version "1.22.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
                                   "/v4l-utils-" version ".tar.bz2"))
               (sha256
                (base32
-                "1xr66y6w422hil6s7n8d61a2vhwh4im8l267amf41jvw7xqihqcm"))))
+                "0cafp64b7ylxhjnp47hxm59r0b0v5hc2gc23qh2s2k5463lgpik5"))))
     (build-system gnu-build-system)
     ;; Separate graphical tools in order to save almost 1 GiB on the closure
     ;; for the common case.
@@ -3285,12 +3296,12 @@ tools, XML authoring components, and an extensible plug-in based API.")
     (native-inputs
      (list perl pkg-config))
     (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("glu" ,glu)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libx11" ,libx11)
-       ("qtbase" ,qtbase-5)
-       ("eudev" ,eudev)))
+     (list alsa-lib
+           glu
+           libjpeg-turbo
+           libx11
+           qtbase-5
+           eudev))
     (synopsis "Realtime video capture utilities for Linux")
     (description "The v4l-utils provide a series of libraries and utilities to
 be used for realtime video capture via Linux-specific APIs.")
@@ -3359,7 +3370,7 @@ be used for realtime video capture via Linux-specific APIs.")
       pipewire-0.3
       pulseaudio
       qtbase-5
-      qtsvg
+      qtsvg-5
       qtx11extras
       qtwayland
       speexdsp
@@ -3937,7 +3948,7 @@ post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
 (define-public openh264
   (package
     (name "openh264")
-    (version "2.1.1")
+    (version "2.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3946,17 +3957,20 @@ post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ffav46pz3sbj92nipd62z03fibyqgclfq9w8lgr80s6za6zdk5s"))))
+                "1yr6nsjpnazq4z6dvjfyanljwgwnyjh3ddxa0sq6hl9qc59yq91r"))))
     (build-system gnu-build-system)
     (native-inputs
      (list nasm python))
     (arguments
-     '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-                          "CC=gcc")
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  ;; no configure script
-                  (delete 'configure))))
+     (list
+      #:make-flags
+      #~(list (string-append "PREFIX=" #$output)
+                             "CC=gcc")
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; no configure script
+          (delete 'configure))))
     (home-page "https://www.openh264.org/")
     (synopsis "H264 decoder library")
     (description
@@ -4353,7 +4367,7 @@ tools for styling them, including a built-in real-time video preview.")
            (gst-plugins/selection gst-plugins-bad #:plugins
                                   '("debugutils" "transcode")
                                   #:configure-flags
-                                  '("-Dintrospection=enabled"))
+                                  #~'("-Dintrospection=enabled"))
            gst-libav
            gsound
            gtk+
@@ -4684,7 +4698,7 @@ create smoother and stable videos.")
            jsoncpp
            libopenshot-audio
            qtbase-5
-           qtmultimedia
+           qtmultimedia-5
            zeromq))
     (arguments
      `(#:configure-flags
@@ -4737,7 +4751,7 @@ API.  It includes bindings for Python, Ruby, and other languages.")
            python-pyqt
            python-pyzmq
            python-requests
-           qtsvg))
+           qtsvg-5))
     (arguments
      `(#:modules ((guix build python-build-system)
                   (guix build qt-utils)
@@ -4841,7 +4855,7 @@ transitions, and effects and then export your film to many common formats.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("python-wrapper" ,python-wrapper)
-       ("qttools" ,qttools)))
+       ("qttools-5" ,qttools-5)))
     (inputs
      (list bash-minimal
            ffmpeg
@@ -4854,14 +4868,14 @@ transitions, and effects and then export your film to many common formats.")
            mlt
            pulseaudio
            qtbase-5
-           qtdeclarative
+           qtdeclarative-5
            qtgraphicaleffects
-           qtmultimedia
-           qtquickcontrols
-           qtquickcontrols2
-           qtsvg
+           qtmultimedia-5
+           qtquickcontrols-5
+           qtquickcontrols2-5
+           qtsvg-5
            qtwebkit
-           qtwebsockets
+           qtwebsockets-5
            qtx11extras
            sdl2))
     (home-page "https://www.shotcut.org/")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 136574b270..d451b8529e 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1273,87 +1273,89 @@ pretty simple, REST API.")
 (define-public libvirt
   (package
     (name "libvirt")
-    (version "7.9.0")
+    (version "8.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://libvirt.org/sources/libvirt-"
                            version ".tar.xz"))
        (sha256
-        (base32 "131fyxb05rrcr9ih4mhhjyw3cgsxh5l12vj4y109q9vlynsz5742"))
+        (base32 "1qisvbshbcd5305mrb4vni559k52id7c8iw4dwdydbf97b24f658"))
        (patches (search-patches "libvirt-add-install-prefix.patch"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-Ddriver_qemu=enabled"
-             "-Dqemu_user=nobody"
-             "-Dqemu_group=kvm"
-             "-Dstorage_disk=enabled"
-             "-Dstorage_dir=enabled"
-             "-Dpolkit=enabled"
-             ;; XXX The default, but required to make -Dsasl ‘stick’.
-             ;; See <https://gitlab.com/libvirt/libvirt/-/issues/185>
-             "-Ddriver_remote=enabled"
-             "-Dnls=enabled"            ;translations
-             (string-append "-Ddocdir=" (assoc-ref %outputs "out") "/share/doc/"
-                            ,name "-" ,version)
-             "-Dbash_completion=enabled"
-             (string-append "-Dinstall_prefix=" (assoc-ref %outputs "out"))
-             "--sysconfdir=/etc"
-             "--localstatedir=/var")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-directory-confusion
-           (lambda _
-             ;; Don't try to install an (unused) /var outside of the store.
-             (substitute* "scripts/meson-install-dirs.py"
-               (("destdir = .*")
-                "destdir = '/tmp'"))))
-         (add-before 'configure 'disable-broken-tests
-           (lambda _
-             (let ((tests (list "commandtest"           ; hangs idly
-                                "qemuxml2argvtest"      ; fails
-                                "virnetsockettest")))   ; tries to network
-               (substitute* "tests/meson.build"
-                 (((format #f ".*'name': '(~a)'.*" (string-join tests "|")))
-                  ""))))))))
+     (list
+      #:configure-flags
+      #~(list "-Ddriver_qemu=enabled"
+              "-Dqemu_user=nobody"
+              "-Dqemu_group=kvm"
+              "-Dstorage_disk=enabled"
+              "-Dstorage_dir=enabled"
+              "-Dpolkit=enabled"
+              ;; XXX The default, but required to make -Dsasl ‘stick’.
+              ;; See <https://gitlab.com/libvirt/libvirt/-/issues/185>
+              "-Ddriver_remote=enabled"
+              "-Dnls=enabled"           ;translations
+              (string-append "-Ddocdir=" #$output "/share/doc/"
+                             #$(package-name this-package) "-"
+                             #$(package-version this-package))
+              "-Dbash_completion=enabled"
+              (string-append "-Dinstall_prefix=" #$output)
+              "--sysconfdir=/etc"
+              "--localstatedir=/var")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-directory-confusion
+            (lambda _
+              ;; Don't try to install an (unused) /var outside of the store.
+              (substitute* "scripts/meson-install-dirs.py"
+                (("destdir = .*")
+                 "destdir = '/tmp'"))))
+          (add-before 'configure 'disable-broken-tests
+            (lambda _
+              (let ((tests (list "commandtest"         ; hangs idly
+                                 "qemuxml2argvtest"    ; fails
+                                 "virnetsockettest"))) ; tries to network
+                (substitute* "tests/meson.build"
+                  (((format #f ".*'name': '(~a)'.*" (string-join tests "|")))
+                   ""))))))))
     (inputs
-     `(("acl" ,acl)
-       ("attr" ,attr)
-       ("fuse" ,fuse)
-       ("libxml2" ,libxml2)
-       ("eudev" ,eudev)
-       ("libpciaccess" ,libpciaccess)
-       ("gnutls" ,gnutls)
-       ("dbus" ,dbus)
-       ("libpcap" ,libpcap)
-       ("libnl" ,libnl)
-       ("libssh2" ,libssh2)             ;optional
-       ("libtirpc" ,libtirpc)           ;for <rpc/rpc.h>
-       ("libuuid" ,util-linux "lib")
-       ("lvm2" ,lvm2)                   ;for libdevmapper
-       ("curl" ,curl)
-       ("openssl" ,openssl)
-       ("readline" ,readline)
-       ("cyrus-sasl" ,cyrus-sasl)
-       ("libyajl" ,libyajl)
-       ("audit" ,audit)
-       ("dmidecode" ,dmidecode)
-       ("dnsmasq" ,dnsmasq)
-       ("ebtables" ,ebtables)
-       ("parted" ,parted)
-       ("iproute" ,iproute)
-       ("iptables" ,iptables)))
+     (list acl
+           attr
+           fuse
+           libxml2
+           eudev
+           libpciaccess
+           gnutls
+           dbus
+           libpcap
+           libnl
+           libssh2                      ;optional
+           libtirpc                     ;for <rpc/rpc.h>
+           `(,util-linux "lib")
+           lvm2                         ;for libdevmapper
+           curl
+           openssl
+           readline
+           cyrus-sasl
+           libyajl
+           audit
+           dmidecode
+           dnsmasq
+           ebtables
+           parted
+           iproute
+           iptables))
     (native-inputs
-     `(("bash-completion" ,bash-completion)
-       ("gettext" ,gettext-minimal)
-       ("xsltproc" ,libxslt)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("polkit" ,polkit)
-       ("python" ,python-wrapper)
-       ("python-docutils" ,python-docutils) ;for rst2html
-       ("rpcsvc-proto" ,rpcsvc-proto)))     ;for rpcgen
+     (list bash-completion
+           gettext-minimal
+           libxslt
+           perl
+           pkg-config
+           polkit
+           python-wrapper
+           python-docutils              ;for rst2html
+           rpcsvc-proto))               ;for rpcgen
     (home-page "https://libvirt.org")
     (synopsis "Simple API for virtualization")
     (description "Libvirt is a C toolkit to interact with the virtualization
@@ -1400,27 +1402,15 @@ three libraries:
 (define-public python-libvirt
   (package
     (name "python-libvirt")
-    (version "7.9.0")
+    (version "8.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://libvirt.org/sources/python/libvirt-python-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0nakisj2ady5a41k4zc95k0kp749f4ppmxgr91b1h1dzbzxcydc5"))))
+        (base32 "0wa86jliq71x60dd4vyzsj4lcrb82i5qsgxz9azvwgsgi9j9mx41"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               ;; No reason to explicity invoke Python on a wrapped pytest.
-               (substitute* "setup.py"
-                 (("sys\\.executable, pytest") "pytest"))
-               (add-installed-pythonpath inputs outputs)
-               (setenv "LIBVIRT_API_COVERAGE" "whynot")
-               (invoke "python" "setup.py" "test")))))))
     (inputs
      (list libvirt))
     (propagated-inputs
@@ -1431,6 +1421,8 @@ three libraries:
     (synopsis "Python bindings to libvirt")
     (description "This package provides Python bindings to the libvirt
 virtualization library.")
+    (properties
+     '((upstream-name . "libvirt-python")))
     (license license:lgpl2.1+)))
 
 (define-public virt-manager
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 3ab7dc6be9..c4e0287bf8 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -256,11 +256,11 @@
        ("procps" ,procps)
        ("python" ,python)
        ("qtbase" ,qtbase-5)
-       ("qtdeclarative" ,qtdeclarative)
+       ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
-       ("qtquickcontrols" ,qtquickcontrols)
-       ("qtquickcontrols2" ,qtquickcontrols2)
-       ("qtsvg" ,qtsvg)))
+       ("qtquickcontrols-5" ,qtquickcontrols-5)
+       ("qtquickcontrols2-5" ,qtquickcontrols2-5)
+       ("qtsvg-5" ,qtsvg-5)))
     (propagated-inputs
      (list go-0xacab-org-leap-shapeshifter
            go-github-com-apparentlymart-go-openvpn-mgmt
@@ -722,27 +722,26 @@ and probably others.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-openconnect
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "openconnect_sso/app.py"
                (("\"openconnect\"")
-                (string-append "\"" (which "openconnect") "\"")))
-             #t))
+                (string-append "\""
+                               (search-input-file inputs "/sbin/openconnect")
+                               "\"")))))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (invoke "pytest" "-v"))
-             #t))
+               (invoke "pytest" "-v"))))
          (add-after 'install 'wrap-qt-process-path
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin/openconnect-sso"))
-                    (qt-process-path (string-append
-                                       (assoc-ref inputs "qtwebengine")
-                                       "/lib/qt5/libexec/QtWebEngineProcess")))
+                    (qt-process-path
+                     (search-input-file inputs
+                                        "/lib/qt5/libexec/QtWebEngineProcess")))
                (wrap-program bin
                  #:sh (search-input-file inputs "bin/bash")
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
-               #t))))))
+                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
     (inputs
      (list openconnect
            python-attrs
@@ -757,7 +756,7 @@ and probably others.")
            python-pyxdg
            python-structlog
            python-toml
-           qtwebengine))
+           qtwebengine-5))
     (native-inputs
      (list python-pytest python-setuptools-scm))
     (home-page "https://github.com/vlaci/openconnect-sso")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index ad03c4fa53..37c134d067 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -453,8 +453,8 @@ access.")
              font-openmoji
              openssl
              qtbase-5
-             qtmultimedia
-             qtsvg))
+             qtmultimedia-5
+             qtsvg-5))
       (home-page "https://kristall.random-projects.net")
       (synopsis "Small-internet graphical client")
       (description "Graphical small-internet client with with many features
@@ -479,7 +479,7 @@ interface.")
         (base32 "1g7dfrnjgifvbmz1523iq9qxhrsciajr8dv3pak6dlacm235i276"))))
     (build-system python-build-system)
     (native-inputs
-     (list python-attrs)) ; for tests
+     (list python-attrs))               ; for tests
     (inputs
      (list bash-minimal
            python-colorama
@@ -493,11 +493,11 @@ interface.")
            ;; that it's __init__.py is used first.
            python-pyqtwebengine
            python-pyqt-without-qtwebkit
-           ;; While qtwebengine is provided by python-pyqtwebengine, it's
+           ;; While qtwebengine-5 is provided by python-pyqtwebengine, it's
            ;; included here so we can wrap QTWEBENGINEPROCESS_PATH.
-           qtwebengine))
+           qtwebengine-5))
     (arguments
-     `(;; FIXME: With the existance of qtwebengine, tests can now run.  But
+     `(;; FIXME: With the existance of qtwebengine-5, tests can now run.  But
        ;; they are still disabled because test phase hangs.  It's not readily
        ;; apparent as to why.
        #:tests? #f
@@ -512,9 +512,9 @@ interface.")
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "qutebrowser/commands/userscripts.py"
                (("os.path.join.*system=True)")
-               (string-append "os.path.join(\""
-                              (assoc-ref outputs "out")
-                              "\", \"share\", \"qutebrowser\"")))))
+                (string-append "os.path.join(\""
+                               (assoc-ref outputs "out")
+                               "\", \"share\", \"qutebrowser\"")))))
          (add-before 'check 'set-env-offscreen
            (lambda _
              (setenv "QT_QPA_PLATFORM" "offscreen")))
@@ -536,34 +536,20 @@ interface.")
                                          "/site-packages:"
                                          (getenv "GUIX_PYTHONPATH"))))
                (for-each
-                (lambda (i)
-                  (let ((src  (format #f "icons/qutebrowser-~dx~d.png" i i))
-                        (dest (format #f "~a/~dx~d/apps/qutebrowser.png"
-                                      hicolor i i)))
-                    (mkdir-p (dirname dest))
-                    (copy-file src dest)))
-                '(16 24 32 48 64 128 256 512))
-               (install-file "icons/qutebrowser.svg"
-                             (string-append hicolor "/scalable/apps"))
-               (substitute* "misc/org.qutebrowser.qutebrowser.desktop"
-                 (("Exec=qutebrowser")
-                  (string-append "Exec=" out "/bin/qutebrowser")))
-               (install-file "misc/org.qutebrowser.qutebrowser.desktop" app))))
-         (add-after 'install 'install-userscripts
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (scripts (string-append out "/share/qutebrowser/userscripts")))
-               (mkdir-p scripts)
-               (copy-recursively "misc/userscripts" scripts))))
+                (lambda (file)
+                  (wrap-program file
+                    `("GUIX_PYTHONPATH" ":" prefix (,path))))
+                (append
+                 (find-files
+                  (string-append out "/share/qutebrowser/scripts") "\\.py$")
+                 (find-files
+                  (string-append out "/share/qutebrowser/userscripts")))))))
          (add-after 'wrap 'wrap-qt-process-path
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/qutebrowser"))
-                    (qt-process-path (string-append
-                                      (assoc-ref inputs "qtwebengine")
-                                      "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+             (wrap-program (search-input-file outputs "bin/qutebrowser")
+               `("QTWEBENGINEPROCESS_PATH" =
+                 (,(search-input-file
+                    inputs "/lib/qt5/libexec/QtWebEngineProcess")))))))))
     (home-page "https://qutebrowser.org/")
     (synopsis "Minimal, keyboard-focused, vim-like web browser")
     (description "qutebrowser is a keyboard-focused browser with a minimal
@@ -725,7 +711,7 @@ is fully configurable and extensible in Common Lisp.")
 (define-public lagrange
   (package
     (name "lagrange")
-    (version "1.13.6")
+    (version "1.13.7")
     (source
      (origin
        (method url-fetch)
@@ -733,7 +719,7 @@ is fully configurable and extensible in Common Lisp.")
         (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
                        "download/v" version "/lagrange-" version ".tar.gz"))
        (sha256
-        (base32 "19xaw6lspl4mjx1wls0s15l97dzfkv20gph652yzwk6ia3ly92bs"))
+        (base32 "051f7ym1z1hjsxnlvk7gx7b4v12x42i3g9gi49qwy3x8rw30vrvz"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 27b3a5ce67..e00be562c2 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -381,14 +381,14 @@ the same, being completely separated from the Internet.")
     ;; Track the ‘mainline’ branch.  Upstream considers it more reliable than
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
-    (version "1.23.0")
+    (version "1.23.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1lacv4gb72n7f93smy098y122aaz9bxdxxkjksgbwwljbfiwl2l2"))))
+                "1qpibmnz5kjkd5z61abism1qn5z6dbrz2cjmlivr8fryqb8ipvjy"))))
     (build-system gnu-build-system)
     (inputs (list libxml2 libxslt openssl pcre zlib))
     (arguments
@@ -476,9 +476,9 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
 
 (define-public nginx-documentation
   ;; This documentation should be relevant for the current nginx package.
-  (let ((version "1.23.0")
-        (revision 2862)
-        (changeset "cf7551842617"))
+  (let ((version "1.23.1")
+        (revision 2869)
+        (changeset "9383e934e546"))
     (package
       (name "nginx-documentation")
       (version (simple-format #f "~A-~A-~A" version revision changeset))
@@ -490,7 +490,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
                (file-name (string-append name "-" version))
                (sha256
                 (base32
-                 "1qfrcakj6dzdypn01dngjqvsi4b4fsbpxziy5m2x1rs1z6gv7ia3"))))
+                 "0zq89cjj8vpxaanx378yaypvmcxk0my8c773acx545c5p75ghvbk"))))
       (build-system gnu-build-system)
       (arguments
        '(#:tests? #f                    ; no test suite
@@ -8102,7 +8102,7 @@ It contains the code shared by all Kiwix ports.")
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin/kiwix-desktop"))
                     (qt-process-path (string-append
-                                      (assoc-ref inputs "qtwebengine")
+                                      (assoc-ref inputs "qtwebengine-5")
                                       "/lib/qt5/libexec/QtWebEngineProcess")))
                (wrap-program bin
                  `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
@@ -8115,9 +8115,9 @@ It contains the code shared by all Kiwix ports.")
            libzim
            pugixml
            qtbase-5
-           qtdeclarative
-           qtwebchannel
-           qtwebengine
+           qtdeclarative-5
+           qtwebchannel-5
+           qtwebengine-5
            xapian
            zlib
            `(,zstd "lib")))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 5a6d49c888..d9e84b95a3 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -235,12 +235,14 @@ engine that uses Wayland for graphics output.")
            enchant
            geoclue
            gst-plugins-base
+           gst-plugins-bad-minimal
            gtk+-2
            harfbuzz
            hyphen
            icu4c
            lcms
            libgcrypt
+           libgudev
            libjpeg-turbo
            libmanette
            libnotify
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 8a1cfe3b82..584178fa61 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -1776,7 +1776,7 @@ Wlroots based compositors.")
 (define-public mako
   (package
     (name "mako")
-    (version "1.6")
+    (version "1.7.1")
     (source
      (origin
        (method git-fetch)
@@ -1785,9 +1785,9 @@ Wlroots based compositors.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vbx2r01rq3r9zc6kflah44ms1fzf4z857zmq3qxnfsyjdkz1hs5"))))
+        (base32 "0vpar1a7zafkd2plmyaackgba6fyg35s9zzyxmj8j7v2q5zxirgz"))))
     (build-system meson-build-system)
-    (inputs (list cairo elogind gdk-pixbuf pango wayland))
+    (inputs (list basu cairo gdk-pixbuf pango wayland))
     (native-inputs (list pkg-config scdoc wayland-protocols))
     (home-page "https://wayland.emersion.fr/mako")
     (synopsis "Lightweight Wayland notification daemon")
@@ -2115,6 +2115,7 @@ between windows.")
     (name "sbcl-stumpwm-kbd-layouts")
     (arguments
      '(#:asd-systems '("kbd-layouts")
+       #:asd-operation "compile-system"
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -2804,3 +2805,46 @@ Type=Application~%"
      "Avizo is a simple notification daemon for Sway, mainly intended to be
 used for multimedia keys.")
     (license license:gpl3+)))
+
+(define-public grimshot
+  (package
+    (inherit sway)
+    (name "grimshot")
+    (source (origin
+              (inherit (package-source sway))
+              (snippet #~(delete-file "contrib/grimshot.1"))))
+    (build-system copy-build-system)
+    (arguments
+     (list #:install-plan #~`(("grimshot" "bin/")
+                              ("grimshot.1" "usr/share/man/man1/"))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'chdir
+                          (lambda _
+                            (chdir "contrib")))
+                        (add-after 'chdir 'patch-script-dependencies
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (substitute* "grimshot"
+                              (("\\b(date|grim|jq|notify-send|slurp|swaymsg|wl-copy)\\b"
+                                _ binary)
+                               (search-input-file
+                                inputs (string-append "bin/" binary))))))
+                        (add-after 'patch-script-dependencies 'build-man-page
+                          (lambda _
+                            (with-input-from-file "grimshot.1.scd"
+                              (lambda _
+                                (with-output-to-file "grimshot.1"
+                                  (lambda _
+                                    (invoke "scdoc"))))))))))
+    (native-inputs (list scdoc))
+    (inputs (list coreutils
+                  grim
+                  jq
+                  libnotify
+                  slurp
+                  sway
+                  wl-clipboard))
+    (synopsis "Screenshot utility for the Sway window manager")
+    (description "Grimshot is a screenshot utility for @code{sway}.  It provides
+an interface over @code{grim}, @code{slurp} and @code{jq}, and supports storing
+the screenshot either directly to the clipboard using @code{wl-copy} or to a
+file.")))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 9157c4a9ed..8de7e97b23 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2013, 2015, 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2017-2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
@@ -55,6 +55,7 @@
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;; Copyright © 2022 Derek Chuank <derekchuank@outlook.com>
+;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -370,7 +371,7 @@ with X11 or Wayland, or in a text terminal with ncurses.")
    `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
      #:tests? #f)) ; Test suite is a rather manual process.
   (inputs
-   (list qtbase-5 qtscript qtsvg qtx11extras))
+   (list qtbase-5 qtscript qtsvg-5 qtx11extras))
   (synopsis "Clipboard manager with advanced features")
   (description "CopyQ is clipboard manager with editing and scripting
 features.  CopyQ monitors system clipboard and saves its content in customized
@@ -1627,7 +1628,7 @@ less if you are working in front of the screen at night.")
 (define-public xscreensaver
   (package
     (name "xscreensaver")
-    (version "5.45")
+    (version "6.04")
     (source
      (origin
        (method url-fetch)
@@ -1635,7 +1636,15 @@ less if you are working in front of the screen at night.")
         (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
                        version ".tar.gz"))
        (sha256
-        (base32 "03fmyjlwjinzv7mih6n07glmys8s877snd8zijk2c0ds6rkxy5kh"))))
+        (base32 "0lmiyvp3qs2gngd53f191jmlizs9l04i2gnrqbn96mqckyr18w3q"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; 'configure.ac' checks for $ac_unrecognized_opts and exits if it's
+        ;; non-empty.  Since the default 'configure' phases passes options
+        ;; that may or may not be recognized, such as '--enable-fast-install',
+        ;; these need to be tolerated, hence this snippet.
+        '(substitute* "configure"
+           (("exit 2") "true")))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -1647,7 +1656,13 @@ less if you are working in front of the screen at night.")
                (("@GTK_DATADIR@") "@datadir@")
                (("@PO_DATADIR@") "@datadir@"))
              #t)))
-       #:configure-flags '("--with-pam" "--with-proc-interrupts"
+       #:configure-flags '("--with-pam"
+
+                           ;; Don't check /proc/interrupts in the build
+                           ;; environment to avoid non-deterministic failures
+                           ;; of the 'configure' script.
+                           "--without-proc-interrupts"
+
                            "--without-readdisplay")
        #:make-flags (list (string-append "AD_DIR="
                                          (assoc-ref %outputs "out")
@@ -1655,26 +1670,27 @@ less if you are working in front of the screen at night.")
     (native-inputs
      (list pkg-config intltool))
     (inputs
-     `(("libx11" ,libx11)
-       ("libxext" ,libxext)
-       ("libxi" ,libxi)
-       ("libxt" ,libxt)
-       ("libxft" ,libxft)
-       ("libxmu" ,libxmu)
-       ("libxpm" ,libxpm)
-       ("libglade" ,libglade)
-       ("libxml2" ,libxml2)
-       ("libsm" ,libsm)
-       ("libjpeg" ,libjpeg-turbo)
-       ("linux-pam" ,linux-pam)
-       ("pango" ,pango)
-       ("gtk+" ,gtk+)
-       ("perl" ,perl)
-       ("cairo" ,cairo)
-       ("bc" ,bc)
-       ("libxrandr" ,libxrandr)
-       ("glu" ,glu)
-       ("glib" ,glib)))
+     (list libx11
+           libxext
+           libxi
+           libxt
+           libxft
+           libxmu
+           libxpm
+           libglade
+           libxml2
+           libsm
+           libjpeg-turbo
+           linux-pam
+           pango
+           gdk-pixbuf-xlib
+           gtk+
+           perl
+           cairo
+           bc
+           libxrandr
+           glu
+           glib))
     (home-page "https://www.jwz.org/xscreensaver/")
     (synopsis "Classic screen saver suite supporting screen locking")
     (description
@@ -1886,27 +1902,20 @@ natural language input and provide results.")
 (define-public tint2
   (package
     (name "tint2")
-    (version "0.14.6")
+    (version "17.0.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://gitlab.com/o9000/" name
-                                  "/repository/archive.tar.gz?ref=" version))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://gitlab.com/o9000/" name "/"))
+                    (commit version)))
               (sha256
                (base32
-                "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
+                "123apmgs6x2zfv1q57dyl4mwqf0vsw5ndh5jsg6p3fvhr66l1aja"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f                      ;no test target
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-installation-prefix
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("/etc") "${CMAKE_INSTALL_PREFIX}/etc"))
-             #t)))))
+     '(#:tests? #f))                      ;no test target
     (inputs
-     (list gtk+-2
+     (list gtk+
            imlib2
            librsvg
            libxcomposite
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 19bb18923b..12c490f622 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnome-xyz)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
@@ -1086,8 +1087,11 @@ for and start applications.")
     (inputs
      (list exo
            garcon
-           gnome-icon-theme
-           gtk-xfce-engine
+           adwaita-icon-theme
+           ;; Greybird is the recommend theme since Xfce 4.14, see:
+           ;; <https://mail.xfce.org/pipermail/xfce4-dev/2018-August/032151.html>
+           ;; TODO: Make it default via "xfconf/xfce/perchannel-xml/xsettinsg.xml"
+           greybird-gtk-theme
            hicolor-icon-theme
            mate-polkit-for-xfce
            ristretto
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 00782ce8b2..da4e4305e7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -66,6 +66,7 @@
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages anthy)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
@@ -6191,14 +6192,14 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "4.3.1")
+    (version "4.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.xpra.org/src/xpra-"
                            version ".tar.xz"))
        (sha256
-        (base32 "1adp790v9lq3v9pnkyf4skv69n2pd7fjqikzw145swhq9aginh5z"))
+        (base32 "1rh4wx4af27xjcxdxrw950wkydgkvm5p3aaiqfmdij6sh6i14xcl"))
        (patches (search-patches "xpra-4.2-systemd-run.patch"
                                 "xpra-4.2-install_libs.patch"))))
     (build-system python-build-system)
@@ -6557,7 +6558,7 @@ output.")
 (define-public console-setup
   (package
     (name "console-setup")
-    (version "1.207")
+    (version "1.209")
     (source
      (origin
        (method git-fetch)
@@ -6565,51 +6566,44 @@ output.")
              (url "https://salsa.debian.org/installer-team/console-setup.git")
              (commit version)))
        (sha256
-        (base32 "0fj93apsknx3lzbi2025pzr19q1gwnim8g4007aqqkhidc1msgx5"))
+        (base32 "0f1xac4wxkqdrqspmk803vr3z8flmjw5qiw3q31fmacp7nsjfc3x"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags
-       (let ((bash (assoc-ref %build-inputs "bash"))
-             (out (assoc-ref %outputs "out")))
-         (list (string-append "SHELL=" bash "/bin/bash")))
-       #:tests? #f                      ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'patch-file-names
-           (lambda _
-             ;; 'ckbcomp' calls out to 'cat' (!).  Give it the right file
-             ;; name.
-             (substitute* '("Keyboard/ckbcomp")
-               (("\"cat ")
-                (string-append "\"" (which "cat")
-                               " ")))))
-         (add-before 'build 'make-doubled-bdfs
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (invoke "make" "-C" "Fonts"
-                     "doubled_bdfs"
-                     (string-append "SHELL="
-                                    (assoc-ref (or native-inputs inputs)
-                                               "bash")
-                                    "/bin/bash"))))
-         (replace 'install
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref %outputs "out")))
-               (invoke "make" "install-linux"
-                       (string-append "prefix=" out)
-                       (string-append "SHELL="
-                                      (assoc-ref (or native-inputs inputs)
-                                                 "bash")
-                                      "/bin/bash"))))))))
+     (list #:make-flags
+           #~(list (string-append "SHELL=" (assoc-ref %build-inputs "bash")
+                                  "/bin/bash")
+                   (string-append "prefix=" #$output))
+           #:tests? #f                  ; no tests
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (add-after 'unpack 'patch-file-names
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; 'ckbcomp' calls out to 'cat' (!).  Give it the right file
+                   ;; name.
+                   (substitute* '("Keyboard/ckbcomp")
+                     (("\"cat ")
+                      (format #f "\"~a "
+                              (search-input-file inputs "bin/cat"))))))
+               (add-before 'build 'make-doubled-bdfs
+                 (lambda* (#:key make-flags #:allow-other-keys)
+                   (apply invoke "make" "-C" "Fonts" "doubled_bdfs"
+                          make-flags)))
+               (replace 'install
+                 (lambda* (#:key make-flags #:allow-other-keys)
+                   (apply invoke "make" "install-linux"
+                          make-flags))))))
     (native-inputs
      (list pkg-config
            bdftopcf
            bdfresize
-           sharutils ; for 'uuencode'
+           sharutils                    ; for 'uuencode'
            perl))
     (inputs
-     (list perl))                 ; used by 'ckbcomp'
+     (list bash-minimal
+           coreutils
+           perl))                       ; used by 'ckbcomp'
     (synopsis "Set up the Linux console font and keyboard")
     (description
      "console-setup provides the console with the same keyboard
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 0b4ecaeb83..252bedb0bd 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -40,6 +40,7 @@
             log-rotation-files
             log-rotation-options
             log-rotation-post-rotate
+            %default-log-rotation-options
 
             rottlog-configuration
             rottlog-configuration?
@@ -82,7 +83,12 @@
   (post-rotate log-rotation-post-rotate           ;#f | gexp
                (default #f))
   (options     log-rotation-options               ;list of strings
-               (default '())))
+               (default %default-log-rotation-options)))
+
+(define %default-log-rotation-options
+  ;; Default log rotation options: append ".gz" to file names.
+  '("storefile @FILENAME.@COMP_EXT"
+    "notifempty"))
 
 (define %rotated-files
   ;; Syslog files subject to rotation.
@@ -93,18 +99,21 @@
   (list (log-rotation                             ;syslog files
          (files %rotated-files)
 
-         (options '(;; Run post-rotate once per rotation
+         (frequency 'weekly)
+         (options `(;; These files are worth keeping for a few weeks.
+                    "rotate 16"
+                    ;; Run post-rotate once per rotation
                     "sharedscripts"
-                    ;; Append .gz to rotated files
-                    "storefile @FILENAME.@COMP_EXT"))
+
+                    ,@%default-log-rotation-options))
          ;; Restart syslogd after rotation.
          (post-rotate #~(let ((pid (call-with-input-file "/var/run/syslog.pid"
                                      read)))
                           (kill pid SIGHUP))))
         (log-rotation
          (files '("/var/log/guix-daemon.log"))
-         (options '("rotate 4"                    ;don't keep too many of them
-                    "storefile @FILENAME.@COMP_EXT")))))
+         (options `("rotate 4"                    ;don't keep too many of them
+                    ,@%default-log-rotation-options)))))
 
 (define (log-rotation->config rotation)
   "Return a string-valued gexp representing the rottlog configuration snippet
diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index e3c101d042..3007e8de35 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;;
@@ -142,8 +142,7 @@ does not have a default value" field kind)))
                                     (id #'stem #'serialize-maybe- #'stem))))
        #`(begin
            (define (maybe-stem? val)
-             (or (unspecified? val)
-                 (stem? val)))
+             (or (eq? val 'unset) (stem? val)))
            #,@(if serialize?
                   (list #'(define (serialize-maybe-stem field-name val)
                             (if (stem? val)
@@ -171,10 +170,10 @@ does not have a default value" field kind)))
      (values #'(field-type def)))
     ((field-type)
      (identifier? #'field-type)
-     (values #'(field-type *unspecified*)))
+     (values #'(field-type 'unset)))
     (field-type
      (identifier? #'field-type)
-     (values #'(field-type *unspecified*)))))
+     (values #'(field-type 'unset)))))
 
 (define (define-configuration-helper serialize? serializer-prefix syn)
   (syntax-case syn ()
@@ -262,7 +261,7 @@ does not have a default value" field kind)))
                         (lambda ()
                           (display '#,(id #'stem #'% #'stem))
                           (if (eq? (syntax->datum field-default)
-                                   '*unspecified*)
+                                   'unset)
                               (configuration-missing-default-value
                                '#,(id #'stem #'% #'stem) 'field)
                               field-default)))
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index d666d6243b..52de5ca7c0 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -305,7 +305,8 @@
          (files (list (cuirass-configuration-log-file config)
                       (cuirass-configuration-web-log-file config)))
          (frequency 'weekly)
-         (options '("rotate 40")))))              ;worth keeping
+         (options `("rotate 40"                   ;worth keeping
+                    ,@%default-log-rotation-options)))))
 
 (define cuirass-service-type
   (service-type
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 29a3722f1b..f891d1b5cc 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2017, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2017, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
@@ -971,7 +971,7 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
   (handle-lid-switch-docked         elogind-handle-lid-switch-docked
                                     (default 'ignore))
   (handle-lid-switch-external-power elogind-handle-lid-switch-external-power
-                                    (default 'ignore))
+                                    (default *unspecified*))
   (power-key-ignore-inhibited?      elogind-power-key-ignore-inhibited?
                                     (default #f))
   (suspend-key-ignore-inhibited?    elogind-suspend-key-ignore-inhibited?
@@ -1032,7 +1032,9 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
   (define handle-actions
     '(ignore poweroff reboot halt kexec suspend hibernate hybrid-sleep lock))
   (define (handle-action x)
-    (enum x handle-actions))
+    (if (unspecified? x)
+        ""                              ;empty serializer
+        (enum x handle-actions)))
   (define (sleep-list tokens)
     (unless (valid-list? tokens char-set:user-name)
       (error "invalid sleep list" tokens))
diff --git a/gnu/services/file-sharing.scm b/gnu/services/file-sharing.scm
index e32d1f145d..5df8b0d597 100644
--- a/gnu/services/file-sharing.scm
+++ b/gnu/services/file-sharing.scm
@@ -115,7 +115,7 @@ type generated and used by Transmission clients, suitable for passing to the
 (set! serialize-maybe-string
   (lambda (field-name val)
     (serialize-string field-name
-                      (if (unspecified? val)
+                      (if (eq? val 'unset)
                           ""
                           val))))
 
@@ -180,7 +180,7 @@ type generated and used by Transmission clients, suitable for passing to the
 (define-maybe file-object)
 (set! serialize-maybe-file-object
   (lambda (field-name val)
-    (if (unspecified? val)
+    (if (eq? val 'unset)
         (serialize-string field-name "")
         (serialize-file-object field-name val))))
 
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 10e6523861..43f144a42d 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu services shepherd)
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)
+  #:use-module (gnu system setuid)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages dav)
@@ -1653,7 +1654,8 @@ by @code{dovecot-configuration}.  @var{config} may also be created by
   (package     opensmtpd-configuration-package
                (default opensmtpd))
   (config-file opensmtpd-configuration-config-file
-               (default %default-opensmtpd-config-file)))
+               (default %default-opensmtpd-config-file))
+  (setgid-commands? opensmtpd-setgid-commands? (default #t)))
 
 (define %default-opensmtpd-config-file
   (plain-file "smtpd.conf" "
@@ -1714,6 +1716,43 @@ match from local for any action outbound
 (define %opensmtpd-pam-services
   (list (unix-pam-service "smtpd")))
 
+(define opensmtpd-set-gids
+  (match-lambda
+    (($ <opensmtpd-configuration> package config-file set-gids?)
+     (if set-gids?
+         (list
+          (setuid-program
+           (program (file-append package "/sbin/smtpctl"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq"))
+          (setuid-program
+           (program (file-append package "/sbin/sendmail"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq"))
+          (setuid-program
+           (program (file-append package "/sbin/send-mail"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq"))
+          (setuid-program
+           (program (file-append package "/sbin/makemap"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq"))
+          (setuid-program
+           (program (file-append package "/sbin/mailq"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq"))
+          (setuid-program
+           (program (file-append package "/sbin/newaliases"))
+           (setuid? #false)
+           (setgid? #true)
+           (group "smtpq")))
+         '()))))
+
 (define opensmtpd-service-type
   (service-type
    (name 'opensmtpd)
@@ -1727,7 +1766,9 @@ match from local for any action outbound
           (service-extension profile-service-type
                              (compose list opensmtpd-configuration-package))
           (service-extension shepherd-root-service-type
-                             opensmtpd-shepherd-service)))
+                             opensmtpd-shepherd-service)
+          (service-extension setuid-program-service-type
+                             opensmtpd-set-gids)))
    (description "Run the OpenSMTPD, a lightweight @acronym{SMTP, Simple Mail
 Transfer Protocol} server.")))
 
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm
index 651f90adb2..00a1c80a14 100644
--- a/gnu/services/messaging.scm
+++ b/gnu/services/messaging.scm
@@ -90,7 +90,7 @@
                      ((new-def ...)
                       (map (lambda (def target)
                              (if (eq? 'common (syntax->datum target))
-                                 #'*unspecified* def))
+                                 #''unset def))
                            #'(def ...) #'(target ...)))
                      ((new-doc ...)
                       (map (lambda (doc target)
@@ -200,7 +200,7 @@
 (define-maybe file-object-list)
 
 (define (raw-content? val)
-  (not (unspecified? val)))
+  (not (eq? val 'unset)))
 (define (serialize-raw-content field-name val)
   val)
 (define-maybe raw-content)
@@ -474,12 +474,12 @@ by the Prosody service.  See @url{https://prosody.im/doc/logging}."
      global)
 
     (http-max-content-size
-     (maybe-non-negative-integer *unspecified*)
+     (maybe-non-negative-integer 'unset)
      "Maximum allowed size of the HTTP body (in bytes)."
      common)
 
     (http-external-url
-     (maybe-string *unspecified*)
+     (maybe-string 'unset)
      "Some modules expose their own URL in various ways.  This URL is built
 from the protocol, host and port used.  If Prosody sits behind a proxy, the
 public URL will be @code{http-external-url} instead.  See
@@ -556,7 +556,7 @@ support.  To add an external component, you simply fill the hostname field.  See
      int-component)
 
     (mod-muc
-     (maybe-mod-muc-configuration *unspecified*)
+     (maybe-mod-muc-configuration 'unset)
      "Multi-user chat (MUC) is Prosody's module for allowing you to create
 hosted chatrooms/conferences for XMPP users.
 
@@ -573,7 +573,7 @@ See also @url{https://prosody.im/doc/modules/mod_muc}."
      ext-component)
 
     (raw-content
-     (maybe-raw-content *unspecified*)
+     (maybe-raw-content 'unset)
      "Raw content that will be added to the configuration file."
      common)))
 
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index b555c46040..3c6395b6ca 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -772,11 +772,11 @@ logging is disabled.")
 network.  A specific port value can be provided by appending the @code{:PORT}
 suffix.  By default, it uses the Jami bootstrap nodes, but any host can be
 specified here.  It's also possible to disable bootstrapping by explicitly
-setting this field to the @code{*unspecified*} value.")
+setting this field to the @code{'unset} value.")
   (port
    (maybe-number 4222)
-   "The UDP port to bind to.  When set to @code{*unspecified*}, an available
-port is automatically selected.")
+   "The UDP port to bind to.  When left unspecified, an available port is
+automatically selected.")
   (proxy-server-port
    maybe-number
    "Spawn a proxy server listening on the specified port.")
@@ -997,15 +997,10 @@ HiddenServicePort ~a ~a~%"
                 ;; 'sd_notify' though), so we're stuck with that.
                 (start #~(make-forkexec-constructor
                           (list #$tor "-f" #$torrc)
-                          #:user "tor" #:group "tor"
-                          #:log-file "/var/log/tor.log"))
+                          #:user "tor" #:group "tor"))
                 (stop #~(make-kill-destructor))
                 (documentation "Run the Tor anonymous network overlay."))))))))
 
-(define %tor-log-rotation
-  (list (log-rotation
-         (files '("/var/log/tor.log")))))
-
 (define (tor-activation config)
   "Set up directories for Tor and its hidden services, if any."
   #~(begin
@@ -1051,9 +1046,7 @@ HiddenServicePort ~a ~a~%"
                        (service-extension account-service-type
                                           (const %tor-accounts))
                        (service-extension activation-service-type
-                                          tor-activation)
-                       (service-extension rottlog-service-type
-                                          (const %tor-log-rotation))))
+                                          tor-activation)))
 
                 ;; This can be extended with hidden services.
                 (compose concatenate)
diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm
index e8bfbc88c5..7152f3b38d 100644
--- a/gnu/services/telephony.scm
+++ b/gnu/services/telephony.scm
@@ -307,7 +307,7 @@ CONFIG, a <jami-configuration> object."
          (dbus (jami-configuration-dbus config))
          (dbus-daemon (file-append dbus "/bin/dbus-daemon"))
          (accounts (jami-configuration-accounts config))
-         (declarative-mode? (not (unspecified? accounts))))
+         (declarative-mode? (not (eq? 'unset accounts))))
 
     (with-extensions (list guile-packrat ;used by guile-ac-d-bus
                            guile-ac-d-bus
@@ -649,7 +649,7 @@ argument, either a registered username or the fingerprint of the account.")
                                           account-details)
                            (let ((username (archive-name->username
                                             archive)))
-                             (when (not (unspecified? allowed-contacts))
+                             (when (not (eq? 'unset allowed-contacts))
                                ;; Reject calls from unknown contacts.
                                (set-account-details
                                 '(("DHT.PublicInCalls" . "false")) username)
@@ -659,7 +659,7 @@ argument, either a registered username or the fingerprint of the account.")
                                ;; Add allowed ones.
                                (for-each (cut add-contact <> username)
                                          allowed-contacts))
-                             (when (not (unspecified? moderators))
+                             (when (not (eq? 'unset moderators))
                                ;; Disable the 'AllModerators' property.
                                (set-all-moderators #f username)
                                ;; Remove all moderators.
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 41afe451c1..406752b35c 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -879,13 +879,11 @@ specified, the QEMU default path is used."))
       (provision '(qemu-guest-agent))
       (documentation "Run the QEMU guest agent.")
       (start #~(make-forkexec-constructor
-                `(,(string-append #$qemu "/bin/qemu-ga") "--daemon"
-                  "--pidfile=/var/run/qemu-ga.pid"
-                  "--statedir=/var/run"
-                  ,@(if #$device
-                        (list (string-append "--path=" #$device))
-                        '()))
-                #:pid-file "/var/run/qemu-ga.pid"
+                `(,(string-append #$qemu "/bin/qemu-ga")
+                  "--statedir" "/var/run"
+                  ,@(if (string-null? #$device)
+                        '()
+                        (list "--path" #$device)))
                 #:log-file "/var/log/qemu-ga.log"))
       (stop #~(make-kill-destructor))))))
 
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index ccb0b045db..d46a27978c 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -43,7 +43,9 @@ accounts.\x1b[0m
   (keyboard-layout (keyboard-layout "us" "altgr-intl"))
 
   ;; Label for the GRUB boot menu.
-  (label (string-append "GNU Guix " (package-version guix)))
+  (label (string-append "GNU Guix "
+                        (or (getenv "GUIX_DISPLAYED_VERSION")
+                            (package-version guix))))
 
   (firmware '())
 
@@ -123,7 +125,14 @@ root ALL=(ALL) ALL
                      (login-service-type config =>
                                          (login-configuration
                                           (inherit config)
-                                          (motd vm-image-motd)))))))
+                                          (motd vm-image-motd)))
+
+                     ;; Install and run the current Guix rather than an older
+                     ;; snapshot.
+                     (guix-service-type config =>
+                                        (guix-configuration
+                                         (inherit config)
+                                         (guix (current-guix))))))))
 
   ;; Allow resolution of '.local' host names with mDNS.
   (name-service-switch %mdns-host-lookup-nss))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index f8f4276283..464b76a2ca 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -121,7 +122,8 @@
     ;; Note: Keep in sync with 'mount-flags->bit-mask'.
     (let ((known-flags '(read-only
                          bind-mount no-suid no-dev no-exec
-                         no-atime strict-atime lazy-time)))
+                         no-atime strict-atime lazy-time
+                         shared)))
       (lambda (flags)
         "Return the subset of FLAGS that is invalid."
         (remove (cut memq <> known-flags) flags))))
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index a3646b1d54..a7b7c246bf 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -357,11 +357,17 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
            ;; network.  It can be faster than fetching from remote servers.
            (service avahi-service-type)
 
-           ;; The build daemon.  Register the default substitute server key(s)
-           ;; as trusted to allow the installation process to use substitutes by
-           ;; default.
+           ;; The build daemon.
            (service guix-service-type
-                    (guix-configuration (authorize-key? #t)))
+                    (guix-configuration
+                     ;; Register the default substitute server key(s) as
+                     ;; trusted to allow the installation process to use
+                     ;; substitutes by default.
+                     (authorize-key? #t)
+
+                     ;; Install and run the current Guix rather than an older
+                     ;; snapshot.
+                     (guix (current-guix))))
 
            ;; Start udev so that useful device nodes are available.
            ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
@@ -463,7 +469,8 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
                  (bootloader grub-bootloader)
                  (targets '("/dev/sda"))))
     (label (string-append "GNU Guix installation "
-                          (package-version guix)))
+                          (or (getenv "GUIX_DISPLAYED_VERSION")
+                              (package-version guix))))
 
     ;; XXX: The AMD Radeon driver is reportedly broken, which makes kmscon
     ;; non-functional:
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 24077e347a..69080bcacb 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Google LLC
+;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -202,16 +203,49 @@ that will be shared with the host system."
                          (guix build utils)
                          (guix i18n)
                          (guix diagnostics)
-                         (srfi srfi-1))
+                         (srfi srfi-1)
+                         (srfi srfi-37)
+                         (ice-9 match))
 
-            (define file-systems
-              (filter-map (lambda (spec)
-                            (let* ((fs    (spec->file-system spec))
-                                   (flags (file-system-flags fs)))
-                              (and (or (not (memq 'bind-mount flags))
-                                       (file-exists? (file-system-device fs)))
-                                   fs)))
-                          '#$specs))
+            (define (show-help)
+              (display (G_ "Usage: run-container [OPTION ...]
+Run the container with the given options."))
+              (newline)
+              (display (G_ "
+      --share=SPEC       share host file system with read/write access
+                         according to SPEC"))
+              (display (G_ "
+      --expose=SPEC      expose host file system directory as read-only
+                         according to SPEC"))
+              (newline)
+              (display (G_ "
+  -h, --help             display this help and exit"))
+              (newline))
+
+            (define %options
+              ;; Specifications of the command-line options.
+              (list (option '(#\h "help") #f #f
+                            (lambda args
+                              (show-help)
+                              (exit 0)))
+                    (option '("share") #t #f
+                            (lambda (opt name arg result)
+                              (alist-cons 'file-system-mapping
+                                          (specification->file-system-mapping arg #t)
+                                          result)))
+                    (option '("expose") #t #f
+                            (lambda (opt name arg result)
+                              (alist-cons 'file-system-mapping
+                                          (specification->file-system-mapping arg #f)
+                                          result)))))
+
+            (define (parse-options args options)
+              (args-fold args options
+                         (lambda (opt name arg . rest)
+                           (report-error (G_ "~A: unrecognized option~%") name)
+                           (exit 1))
+                         (lambda (op res) (cons op res))
+                         '()))
 
             (define (explain pid)
               ;; XXX: We can't quite call 'bindtextdomain' so there's actually
@@ -225,22 +259,35 @@ that will be shared with the host system."
               (info (G_ "or run 'sudo nsenter -a -t ~a' to get a shell into it.~%") pid)
               (newline (guix-warning-port)))
 
-            (call-with-container file-systems
-              (lambda ()
-                (setenv "HOME" "/root")
-                (setenv "TMPDIR" "/tmp")
-                (setenv "GUIX_NEW_SYSTEM" #$os)
-                (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
-                (primitive-load (string-append #$os "/boot")))
-              ;; A range of 65536 uid/gids is used to cover 16 bits worth of
-              ;; users and groups, which is sufficient for most cases.
-              ;;
-              ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
-              #:host-uids 65536
-              #:namespaces (if #$shared-network?
-                               (delq 'net %namespaces)
-                               %namespaces)
-              #:process-spawned-hook explain))))
+            (let* ((opts (parse-options (cdr (command-line)) %options))
+                   (mappings (filter-map (match-lambda
+                                           (('file-system-mapping . mapping) mapping)
+                                           (_ #f))
+                                         opts))
+                   (file-systems
+                    (filter-map (lambda (fs)
+                                  (let ((flags (file-system-flags fs)))
+                                    (and (or (not (memq 'bind-mount flags))
+                                             (file-exists? (file-system-device fs)))
+                                         fs)))
+                                (append (map file-system-mapping->bind-mount mappings)
+                                        (map spec->file-system '#$specs)))))
+              (call-with-container file-systems
+                (lambda ()
+                  (setenv "HOME" "/root")
+                  (setenv "TMPDIR" "/tmp")
+                  (setenv "GUIX_NEW_SYSTEM" #$os)
+                  (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
+                  (primitive-load (string-append #$os "/boot")))
+                ;; A range of 65536 uid/gids is used to cover 16 bits worth of
+                ;; users and groups, which is sufficient for most cases.
+                ;;
+                ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
+                #:host-uids 65536
+                #:namespaces (if #$shared-network?
+                                 (delq 'net %namespaces)
+                                 %namespaces)
+                #:process-spawned-hook explain)))))
 
     (gexp->script "run-container" script)))
 
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 3754966140..fbb97d451c 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -152,15 +152,6 @@
                                                   (guix combinators)))))
                     %base-services))))
 
-(define (operating-system-with-current-guix os)
-  "Return a variant of OS that uses the current Guix."
-  (operating-system
-    (inherit os)
-    (services (modify-services (operating-system-user-services os)
-                (guix-service-type config =>
-                                   (guix-configuration
-                                    (inherit config)
-                                    (guix (current-guix))))))))
 
 
 (define MiB (expt 2 20))
@@ -232,8 +223,7 @@ reboot\n")
                              ;; Since the image has no network access, use the
                              ;; current Guix so the store items we need are in
                              ;; the image and add packages provided.
-                             (inherit (operating-system-with-current-guix
-                                       installation-os))
+                             (inherit installation-os)
                              (kernel-arguments '("console=ttyS0")))
                            #:imported-modules '((gnu services herd)
                                                 (gnu installer tests)
@@ -1865,8 +1855,7 @@ build (current-guix) and then store a couple of full system images.")
    (operating-system
      (inherit (operating-system-with-console-syslog
                (operating-system-add-packages
-                (operating-system-with-current-guix
-                 installation-os)
+                installation-os
                 %extra-packages)))
      (kernel-arguments '("console=ttyS0")))
    #:imported-modules '((gnu services herd)
diff --git a/gnu/tests/telephony.scm b/gnu/tests/telephony.scm
index 16ee313f69..83fa7228c8 100644
--- a/gnu/tests/telephony.scm
+++ b/gnu/tests/telephony.scm
@@ -31,7 +31,8 @@
   #:use-module (guix gexp)
   #:use-module (guix modules)
   #:export (%test-jami
-            %test-jami-provisioning))
+            %test-jami-provisioning
+            %test-jami-provisioning-partial))
 
 ;;;
 ;;; Jami daemon.
@@ -67,7 +68,18 @@
                                                     "fallback.another.host"))
                              (name-server-uri "https://my.name.server")))
 
-(define* (make-jami-os #:key provisioning?)
+;;; Like %dummy-jami-account, but with allowed-contacts and moderators left
+;;; unset (thus taking the value *unspecified*).
+(define %dummy-jami-account-partial
+  (jami-account
+   (archive %dummy-jami-account-archive)
+   (rendezvous-point? #t)
+   (peer-discovery? #f)
+   (bootstrap-hostnames '("bootstrap.me"
+                          "fallback.another.host"))
+   (name-server-uri "https://my.name.server")))
+
+(define* (make-jami-os #:key provisioning? partial?)
   (operating-system
     (host-name "jami")
     (timezone "America/Montreal")
@@ -87,7 +99,10 @@
                               (if provisioning?
                                   (jami-configuration
                                    (debug? #t)
-                                   (accounts (list %dummy-jami-account)))
+                                   (accounts
+                                    (list (if partial?
+                                              %dummy-jami-account-partial
+                                              %dummy-jami-account))))
                                   (jami-configuration
                                    (debug? #t))))
                      (service dbus-root-service-type)
@@ -109,12 +124,18 @@
 (define %jami-os-provisioning
   (make-jami-os #:provisioning? #t))
 
-(define* (run-jami-test #:key provisioning?)
-  "Run tests in %JAMI-OS.  When PROVISIONING? is true, test the
-accounts provisioning feature of the service."
+(define %jami-os-provisioning-partial
+  (make-jami-os #:provisioning? #t #:partial? #t))
+
+(define* (run-jami-test #:key provisioning? partial?)
+  "Run tests in %JAMI-OS.  When PROVISIONING? is true, test the accounts
+provisioning feature of the service.  When PARTIAL? is #t, some fields of the
+jami account used as part of the jami configuration are left *unspecified*."
   (define os (marionette-operating-system
               (if provisioning?
-                  %jami-os-provisioning
+                  (if partial?
+                      %jami-os-provisioning-partial
+                      %jami-os-provisioning)
                   %jami-os)
               #:imported-modules '((gnu services herd)
                                    (guix combinators))))
@@ -202,7 +223,7 @@ accounts provisioning feature of the service."
                                                      "Account.username")))))))
                marionette))
 
-            (unless #$provisioning? (test-skip 1))
+            (unless #$(and provisioning? (not partial?)) (test-skip 1))
             (test-assert "jami accounts provisioning, allowed-contacts"
               (marionette-eval
                '(begin
@@ -224,7 +245,7 @@ accounts provisioning feature of the service."
                       (assert (lset= string-ci=? contacts '#$%allowed-contacts)))))
                marionette))
 
-            (unless #$provisioning? (test-skip 1))
+            (unless #$(and provisioning? (not partial?)) (test-skip 1))
             (test-assert "jami accounts provisioning, moderators"
               (marionette-eval
                '(begin
@@ -326,7 +347,9 @@ accounts provisioning feature of the service."
             (test-end)))))
 
   (gexp->derivation (if provisioning?
-                        "jami-provisioning-test"
+                        (if partial?
+                            "jami-provisioning-partial-test"
+                            "jami-provisioning-partial")
                         "jami-test")
     test))
 
@@ -341,3 +364,13 @@ accounts provisioning feature of the service."
    (name "jami-provisioning")
    (description "Provisioning test for the jami service.")
    (value (run-jami-test #:provisioning? #t))))
+
+;;; Thi test verifies that <jami-account> values can be left unspecified
+;;; without causing any issue (see: https://issues.guix.gnu.org/56799).
+(define %test-jami-provisioning-partial
+  (system-test
+   (name "jami-provisioning-partial")
+   (description "Provisioning test for the jami service, when some of the
+'maybe' fields aren't provided (such that their value end up being
+*unspecified*.")
+   (value (run-jami-test #:provisioning? #t #:partial? #t))))
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index 299acc4945..4bd56e5d9d 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -37,6 +37,7 @@
   #:use-module (guix records)
   #:use-module (guix store)
   #:export (%test-libvirt
+            %test-qemu-guest-agent
             %test-childhurd))
 
 
@@ -117,6 +118,89 @@
 
 
 ;;;
+;;; QEMU Guest Agent service.
+;;;
+
+(define %qemu-guest-agent-os
+  (simple-operating-system
+   (service qemu-guest-agent-service-type)))
+
+(define (run-qemu-guest-agent-test)
+  "Run tests in %QEMU-GUEST-AGENT-OS."
+  (define os
+    (marionette-operating-system
+     %qemu-guest-agent-os
+     #:imported-modules '((gnu services herd))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings '())))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (gnu build marionette)
+                       (ice-9 rdelim)
+                       (srfi srfi-64))
+
+          (define marionette
+            ;; Ensure we look for the socket in the correct place below.
+            (make-marionette (list #$vm) #:socket-directory "/tmp"))
+
+          (define* (try-read port #:optional (attempts 10))
+            ;; Try reading from a port several times before giving up.
+            (cond ((char-ready? port)
+                   (let ((response (read-line port)))
+                     (close-port port)
+                     response))
+                  ((> attempts 1)
+                   (sleep 1)
+                   (try-read port (- attempts 1)))
+                  (else "")))
+
+          (define (run command)
+            ;; Run a QEMU guest agent command and return the response.
+            (let ((s (socket PF_UNIX SOCK_STREAM 0)))
+              (connect s AF_UNIX "/tmp/qemu-ga")
+              (display command s)
+              (try-read s)))
+
+          (test-runner-current (system-test-runner #$output))
+          (test-begin "qemu-guest-agent")
+
+          (test-assert "service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'qemu-guest-agent)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-equal "ping guest"
+            "{\"return\": {}}"
+            (run "{\"execute\": \"guest-ping\"}"))
+
+          (test-assert "get network interfaces"
+            (string-contains
+             (run "{\"execute\": \"guest-network-get-interfaces\"}")
+             "127.0.0.1"))
+
+          (test-end))))
+
+  (gexp->derivation "qemu-guest-agent-test" test))
+
+(define %test-qemu-guest-agent
+  (system-test
+   (name "qemu-guest-agent")
+   (description "Run commands in a virtual machine using QEMU guest agent.")
+   (value (run-qemu-guest-agent-test))))
+
+
+;;;
 ;;; GNU/Hurd virtual machines, aka. childhurds.
 ;;;