summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/accessibility.scm2
-rw-r--r--gnu/packages/admin.scm89
-rw-r--r--gnu/packages/algebra.scm87
-rw-r--r--gnu/packages/astronomy.scm35
-rw-r--r--gnu/packages/audio.scm8
-rw-r--r--gnu/packages/aux-files/guix.vim8
-rw-r--r--gnu/packages/aux-files/linux-libre/5.10-arm.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.10-arm64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.10-i686.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.10-x86_64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.15-arm.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.15-arm64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.15-i686.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.15-x86_64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.16-arm.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.16-arm64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.16-i686.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.16-x86_64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.4-arm.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.4-arm64.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.4-i686.conf3
-rw-r--r--gnu/packages/aux-files/linux-libre/5.4-x86_64.conf3
-rw-r--r--gnu/packages/barrier.scm68
-rw-r--r--gnu/packages/base.scm106
-rw-r--r--gnu/packages/benchmark.scm188
-rw-r--r--gnu/packages/bioconductor.scm113
-rw-r--r--gnu/packages/bioinformatics.scm161
-rw-r--r--gnu/packages/bittorrent.scm5
-rw-r--r--gnu/packages/bootloaders.scm26
-rw-r--r--gnu/packages/browser-extensions.scm4
-rw-r--r--gnu/packages/c.scm78
-rw-r--r--gnu/packages/cdrom.scm54
-rw-r--r--gnu/packages/check.scm72
-rw-r--r--gnu/packages/chez.scm1264
-rw-r--r--gnu/packages/chromium.scm6
-rw-r--r--gnu/packages/commencement.scm79
-rw-r--r--gnu/packages/compression.scm13
-rw-r--r--gnu/packages/compton.scm4
-rw-r--r--gnu/packages/cpp.scm165
-rw-r--r--gnu/packages/cran.scm1221
-rw-r--r--gnu/packages/crates-graphics.scm28
-rw-r--r--gnu/packages/crates-io.scm1192
-rw-r--r--gnu/packages/cross-base.scm32
-rw-r--r--gnu/packages/crypto.scm68
-rw-r--r--gnu/packages/curl.scm5
-rw-r--r--gnu/packages/databases.scm61
-rw-r--r--gnu/packages/debian.scm4
-rw-r--r--gnu/packages/debug.scm23
-rw-r--r--gnu/packages/diffoscope.scm4
-rw-r--r--gnu/packages/disk.scm60
-rw-r--r--gnu/packages/dns.scm8
-rw-r--r--gnu/packages/docbook.scm6
-rw-r--r--gnu/packages/dunst.scm6
-rw-r--r--gnu/packages/ebook.scm384
-rw-r--r--gnu/packages/education.scm4
-rw-r--r--gnu/packages/electronics.scm27
-rw-r--r--gnu/packages/elixir.scm12
-rw-r--r--gnu/packages/emacs-xyz.scm1191
-rw-r--r--gnu/packages/embedded.scm59
-rw-r--r--gnu/packages/emulators.scm45
-rw-r--r--gnu/packages/engineering.scm259
-rw-r--r--gnu/packages/fcitx5.scm110
-rw-r--r--gnu/packages/file-systems.scm6
-rw-r--r--gnu/packages/finance.scm38
-rw-r--r--gnu/packages/fonts.scm103
-rw-r--r--gnu/packages/fontutils.scm6
-rw-r--r--gnu/packages/freedesktop.scm58
-rw-r--r--gnu/packages/ftp.scm9
-rw-r--r--gnu/packages/game-development.scm5
-rw-r--r--gnu/packages/games.scm154
-rw-r--r--gnu/packages/gcc.scm174
-rw-r--r--gnu/packages/geo.scm49
-rw-r--r--gnu/packages/gnome-xyz.scm16
-rw-r--r--gnu/packages/gnome.scm297
-rw-r--r--gnu/packages/gnuzilla.scm20
-rw-r--r--gnu/packages/golang.scm148
-rw-r--r--gnu/packages/graphics.scm216
-rw-r--r--gnu/packages/gtk.scm58
-rw-r--r--gnu/packages/guile-xyz.scm4
-rw-r--r--gnu/packages/guile.scm34
-rw-r--r--gnu/packages/hardware.scm59
-rw-r--r--gnu/packages/haskell-apps.scm6
-rw-r--r--gnu/packages/haskell-web.scm5
-rw-r--r--gnu/packages/haskell-xyz.scm21
-rw-r--r--gnu/packages/haskell.scm122
-rw-r--r--gnu/packages/hurd.scm11
-rw-r--r--gnu/packages/i2p.scm6
-rw-r--r--gnu/packages/image-viewers.scm65
-rw-r--r--gnu/packages/image.scm13
-rw-r--r--gnu/packages/irc.scm9
-rw-r--r--gnu/packages/javascript.scm110
-rw-r--r--gnu/packages/julia-xyz.scm1173
-rw-r--r--gnu/packages/kde-frameworks.scm3
-rw-r--r--gnu/packages/kde-multimedia.scm2
-rw-r--r--gnu/packages/kde.scm154
-rw-r--r--gnu/packages/lean.scm65
-rw-r--r--gnu/packages/less.scm66
-rw-r--r--gnu/packages/linphone.scm51
-rw-r--r--gnu/packages/linux.scm432
-rw-r--r--gnu/packages/lisp-check.scm45
-rw-r--r--gnu/packages/lisp-xyz.scm845
-rw-r--r--gnu/packages/lisp.scm32
-rw-r--r--gnu/packages/llvm.scm54
-rw-r--r--gnu/packages/loko.scm2
-rw-r--r--gnu/packages/machine-learning.scm51
-rw-r--r--gnu/packages/mail.scm117
-rw-r--r--gnu/packages/markup.scm9
-rw-r--r--gnu/packages/maths.scm448
-rw-r--r--gnu/packages/maven-parent-pom.scm16
-rw-r--r--gnu/packages/maven.scm95
-rw-r--r--gnu/packages/mes.scm5
-rw-r--r--gnu/packages/messaging.scm168
-rw-r--r--gnu/packages/monitoring.scm15
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/music.scm81
-rw-r--r--gnu/packages/nano.scm5
-rw-r--r--gnu/packages/ncdu.scm42
-rw-r--r--gnu/packages/networking.scm177
-rw-r--r--gnu/packages/nicotine.scm31
-rw-r--r--gnu/packages/ocaml.scm94
-rw-r--r--gnu/packages/opencl.scm4
-rw-r--r--gnu/packages/package-management.scm28
-rw-r--r--gnu/packages/parallel.scm173
-rw-r--r--gnu/packages/password-utils.scm38
-rw-r--r--gnu/packages/patches/bash-reproducible-linux-pgrp-pipe.patch34
-rw-r--r--gnu/packages/patches/calibre-fix-zeroconf.patch38
-rw-r--r--gnu/packages/patches/dunst-1.7.3-fix-crash.patch21
-rw-r--r--gnu/packages/patches/efivar-gcc-compat.patch177
-rw-r--r--gnu/packages/patches/evilwm-lost-focus-bug.patch18
-rw-r--r--gnu/packages/patches/freecad-boost-serialization.patch27
-rw-r--r--gnu/packages/patches/freecad-vtk9.patch827
-rw-r--r--gnu/packages/patches/ghc-monad-par-fix-tests.patch45
-rw-r--r--gnu/packages/patches/glibc-CVE-2018-11236.patch149
-rw-r--r--gnu/packages/patches/glibc-CVE-2018-11237.patch55
-rw-r--r--gnu/packages/patches/glibc-hurd-magic-pid.patch190
-rw-r--r--gnu/packages/patches/grocsvs-dont-use-admiral.patch69
-rw-r--r--gnu/packages/patches/guile-cross-compilation.patch55
-rw-r--r--gnu/packages/patches/guile-ssh-fix-test-suite.patch217
-rw-r--r--gnu/packages/patches/guile-ssh-read-error.patch18
-rw-r--r--gnu/packages/patches/hydra-disable-darcs-test.patch25
-rw-r--r--gnu/packages/patches/inkscape-poppler-0.76.patch36
-rw-r--r--gnu/packages/patches/libvirt-create-machine-cgroup.patch48
-rw-r--r--gnu/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch40
-rw-r--r--gnu/packages/patches/marble-qt-add-qt-headers.patch189
-rw-r--r--gnu/packages/patches/mariadb-link-libatomic.patch83
-rw-r--r--gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch177
-rw-r--r--gnu/packages/patches/mescc-tools-boot.patch222
-rw-r--r--gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt1.patch276
-rw-r--r--gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch163
-rw-r--r--gnu/packages/patches/nettle-3.5-check-_pkcs1_sec_decrypt-msg-len.patch78
-rw-r--r--gnu/packages/patches/nhc98-c-update.patch42
-rw-r--r--gnu/packages/patches/ocaml-Add-a-.file-directive.patch96
-rw-r--r--gnu/packages/patches/ocaml-CVE-2015-8869.patch72
-rw-r--r--gnu/packages/patches/ocaml-bitstring-fix-configure.patch53
-rw-r--r--gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch149
-rw-r--r--gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch34
-rw-r--r--gnu/packages/patches/openboardview-use-system-imgui.patch170
-rw-r--r--gnu/packages/patches/openjdk-14-builtins.patch11
-rw-r--r--gnu/packages/patches/openssl-c-rehash-in.patch17
-rw-r--r--gnu/packages/patches/openssl-runpath.patch15
-rw-r--r--gnu/packages/patches/passwordsafe-meson-remove-extra-argument.patch20
-rw-r--r--gnu/packages/patches/patchutils-test-perms.patch14
-rw-r--r--gnu/packages/patches/postgresql-riscv-spinlocks.patch41
-rw-r--r--gnu/packages/patches/python-CVE-2018-14647.patch61
-rw-r--r--gnu/packages/patches/python-CVE-2020-26116.patch47
-rw-r--r--gnu/packages/patches/python-axolotl-AES-fix.patch24
-rw-r--r--gnu/packages/patches/python-babel-fix-parse-future-test.patch68
-rw-r--r--gnu/packages/patches/python-matplotlib-run-under-wayland-gtk3.patch31
-rw-r--r--gnu/packages/patches/python-mypy-12332.patch68
-rw-r--r--gnu/packages/patches/python-pytest-asyncio-python-3.8.patch238
-rw-r--r--gnu/packages/patches/python-robotframework-source-date-epoch.patch104
-rw-r--r--gnu/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch19
-rw-r--r--gnu/packages/patches/python-robotframework-ug2html.patch57
-rw-r--r--gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch29
-rw-r--r--gnu/packages/patches/qt4-ldflags.patch18
-rw-r--r--gnu/packages/patches/racket-enable-scheme-backport.patch465
-rw-r--r--gnu/packages/patches/racket-gui-tethered-launcher-backport.patch26
-rw-r--r--gnu/packages/patches/rust-coresimd-doctest.patch21
-rw-r--r--gnu/packages/patches/screen-CVE-2021-26937.patch66
-rw-r--r--gnu/packages/patches/sdcc-disable-non-free-code.patch363
-rw-r--r--gnu/packages/patches/streamlink-update-test.patch70
-rw-r--r--gnu/packages/patches/tcc-boot-0.9.27.patch26
-rw-r--r--gnu/packages/patches/transfig-gcc10-fno-common.patch33
-rw-r--r--gnu/packages/patches/upower-builddir.patch34
-rw-r--r--gnu/packages/patches/vtk-8-fix-freetypetools-build-failure.patch36
-rw-r--r--gnu/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch38
-rw-r--r--gnu/packages/patches/webkitgtk-bind-all-fonts.patch17
-rw-r--r--gnu/packages/patches/webkitgtk-canonicalize-paths.patch66
-rw-r--r--gnu/packages/patches/webkitgtk-share-store.patch19
-rw-r--r--gnu/packages/pciutils.scm43
-rw-r--r--gnu/packages/pdf.scm58
-rw-r--r--gnu/packages/pep.scm13
-rw-r--r--gnu/packages/perl.scm3
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/plotutils.scm130
-rw-r--r--gnu/packages/prolog.scm76
-rw-r--r--gnu/packages/purescript.scm21
-rw-r--r--gnu/packages/python-check.scm4
-rw-r--r--gnu/packages/python-crypto.scm8
-rw-r--r--gnu/packages/python-science.scm131
-rw-r--r--gnu/packages/python-web.scm143
-rw-r--r--gnu/packages/python-xyz.scm536
-rw-r--r--gnu/packages/qt.scm91
-rw-r--r--gnu/packages/racket.scm1404
-rw-r--r--gnu/packages/radio.scm155
-rw-r--r--gnu/packages/ruby.scm38
-rw-r--r--gnu/packages/rust-apps.scm61
-rw-r--r--gnu/packages/scheme.scm13
-rw-r--r--gnu/packages/screen.scm12
-rw-r--r--gnu/packages/scsi.scm36
-rw-r--r--gnu/packages/search.scm5
-rw-r--r--gnu/packages/security-token.scm79
-rw-r--r--gnu/packages/shells.scm16
-rw-r--r--gnu/packages/shellutils.scm9
-rw-r--r--gnu/packages/sphinx.scm23
-rw-r--r--gnu/packages/ssh.scm48
-rw-r--r--gnu/packages/statistics.scm302
-rw-r--r--gnu/packages/stenography.scm8
-rw-r--r--gnu/packages/suckless.scm5
-rw-r--r--gnu/packages/syncthing.scm4
-rw-r--r--gnu/packages/syndication.scm56
-rw-r--r--gnu/packages/telegram.scm2
-rw-r--r--gnu/packages/telephony.scm155
-rw-r--r--gnu/packages/terminals.scm11
-rw-r--r--gnu/packages/tex.scm224
-rw-r--r--gnu/packages/text-editors.scm41
-rw-r--r--gnu/packages/tls.scm8
-rw-r--r--gnu/packages/toolkits.scm131
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/valgrind.scm4
-rw-r--r--gnu/packages/version-control.scm9
-rw-r--r--gnu/packages/video.scm123
-rw-r--r--gnu/packages/vim.scm8
-rw-r--r--gnu/packages/virtualization.scm47
-rw-r--r--gnu/packages/vpn.scm43
-rw-r--r--gnu/packages/weather.scm55
-rw-r--r--gnu/packages/web-browsers.scm136
-rw-r--r--gnu/packages/web.scm95
-rw-r--r--gnu/packages/webkit.scm9
-rw-r--r--gnu/packages/wget.scm18
-rw-r--r--gnu/packages/wm.scm94
-rw-r--r--gnu/packages/xdisorg.scm51
-rw-r--r--gnu/packages/xfce.scm4
-rw-r--r--gnu/packages/xfig.scm14
-rw-r--r--gnu/packages/xml.scm7
-rw-r--r--gnu/packages/xorg.scm22
-rw-r--r--gnu/packages/zig.scm4
247 files changed, 13630 insertions, 11118 deletions
diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm
index b692ec575f..36210d3e52 100644
--- a/gnu/packages/accessibility.scm
+++ b/gnu/packages/accessibility.scm
@@ -30,7 +30,6 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (gnu packages)
   #:use-module (gnu packages lisp)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages polkit)
@@ -174,7 +173,6 @@ terminals.")
            flite
            glib
            gpm
-           libiconv
            icu4c
            libbraille
            pcre2
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index daab720be5..8331c42f8b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020, 2021, 2022 Eric Bavier <bavier@posteo.net>
@@ -28,11 +28,11 @@
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -876,10 +876,27 @@ hostname.")
      "Shadow provides a number of authentication-related tools, including:
 login, passwd, su, groupadd, and useradd.")
 
+    (properties '((hidden? . #t)))                ;see below
+
     ;; The `vipw' program is GPLv2+.
     ;; libmisc/salt.c is public domain.
     (license license:bsd-3)))
 
+(define-public shadow-with-man-pages
+  ;; TODO: Merge with 'shadow' on the next core-updates cycle.
+  (package/inherit shadow
+    (properties '())                              ;not hidden
+    (arguments
+     (substitute-keyword-arguments (package-arguments shadow)
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (add-after 'install 'install-man-pages
+             (lambda _
+               ;; The top-level Makefile.am wrongfully has "SUBDIRS += man"
+               ;; under "if ENABLE_REGENERATE_MAN", even though prebuilt man
+               ;; pages are available.  Thus, install them manually.
+               (invoke "make" "-C" "man" "install")))))))))
+
 (define-public mingetty
   (package
     (name "mingetty")
@@ -1166,7 +1183,7 @@ connection alive.")
 (define-public isc-dhcp
   (let* ((bind-major-version "9")
          (bind-minor-version "11")
-         (bind-patch-version "36")
+         (bind-patch-version "37")
          (bind-release-type "")         ; for patch release, use "-P"
          (bind-release-version "")      ; for patch release, e.g. "6"
          (bind-version (string-append bind-major-version
@@ -1297,7 +1314,7 @@ connection alive.")
                            (list inetutils net-tools coreutils sed))))))))))
 
       (native-inputs
-       (list perl file))
+       (list config perl file))
 
       (inputs `(("inetutils" ,inetutils)
                 ("bash" ,(canonical-package bash-minimal)) ;for wrap-program
@@ -1315,9 +1332,8 @@ connection alive.")
                                         "/bind-" bind-version ".tar.gz"))
                     (sha256
                      (base32
-                      "108nh7hha4r0lb5hf1fn7lqaascvhsrghpz6afm5lf9vf2vgqly9"))))
+                      "1zsszgxs9043dfpxb6xs1iwk9jg7nxkl5pbawj8dlshnxkkzp3hd"))))
 
-                ("config" ,config)
                 ("coreutils*" ,coreutils)
                 ("sed*" ,sed)))
 
@@ -1708,7 +1724,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.9.8p2")
+    (version "1.9.10")
     (source (origin
               (method url-fetch)
               (uri
@@ -1718,7 +1734,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "0b8gd15l2g22w4fhhz0gzmq5c8370klanmy2c1p3px6yly6qnfwy"))
+                "1x34k8sd2msfjjsahff1q143gr5j9z19jx2rmkkbiiz7k084d8a4"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1802,7 +1818,7 @@ commands and their arguments.")
 (define-public opendoas
   (package
     (name "opendoas")
-    (version "6.8.1")
+    (version "6.8.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1811,7 +1827,7 @@ commands and their arguments.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gfcssm21vdfg6kcrcc7hz1h4jmhy2zv29rfqyrrj3a6r9b5ah8p"))))
+                "1qrin7x9vcprk5pwjbr3w8z2qj8hk6xbvxicdhlk27xr6vcr1qzn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1820,7 +1836,7 @@ commands and their arguments.")
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "GNUmakefile"
                (("^\tchown.*$") ""))
-             ;; OpenDoas look for binaries in safepath when a rule specify a
+             ;; OpenDoas looks for binaries in safepath when a rule specifies a
              ;; relative command, such as “permit keepenv :wheel cmd guix”.
              (substitute* "doas.c"
                (("safepath =" match)
@@ -1828,8 +1844,7 @@ commands and their arguments.")
                                "/run/setuid-programs:"
                                "/run/current-system/profile/bin:"
                                "/run/current-system/profile/sbin:"
-                               "\" ")))
-             #t))
+                               "\" ")))))
          (replace 'configure
            ;; The configure script doesn't accept most of the default flags.
            (lambda* (#:key configure-flags #:allow-other-keys)
@@ -2343,45 +2358,17 @@ characters (such as \"$\") get replaced with \"_\".  ISO 8859-1 (Latin-1)
 characters can be replaced as well, as can UTF-8 characters.")
     (license license:bsd-3)))
 
-(define-public testdisk
-  (package
-    (name "testdisk")
-    (version "7.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://www.cgsecurity.org/testdisk-"
-                                  version ".tar.bz2"))
-              (sha256
-               (base32
-                "1zlh44w67py416hkvw6nrfmjickc2d43v51vcli5p374d5sw84ql"))))
-    (build-system gnu-build-system)
-    (inputs
-     (list ntfs-3g
-           `(,util-linux "lib")
-           openssl
-           ;; FIXME: add reiserfs.
-           zlib
-           e2fsprogs
-           libjpeg-turbo
-           ncurses))
-    (home-page "https://www.cgsecurity.org/wiki/TestDisk")
-    (synopsis "Data recovery tool")
-    (description
-     "TestDisk is a program for data recovery, primarily designed to help
-recover lost partitions and/or make non-booting disks bootable again.")
-    (license license:gpl2+)))
-
 (define-public tree
   (package
     (name "tree")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "http://mama.indstate.edu/users/ice/tree/src/tree-"
                     version ".tgz"))
               (sha256
-               (base32 "0f92vx6gpz7v29wi9clklzah57v7lgx5kv0m1w4b9xjc35d9qcz3"))))
+               (base32 "1bzfkr3kmn2v5x7ljir691fr9hhjvjxqsfz0fc5fgi6ki0fklsbx"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -3069,13 +3056,13 @@ platform-specific methods.")
   (package
     (name "audit")
     (home-page "https://people.redhat.com/sgrubb/audit/")
-    (version "3.0.6")
+    (version "3.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "audit-" version ".tar.gz"))
               (sha256
                (base32
-                "0pnc9wzslks9p6kxw0llp1n8h8yg0frcxl3x84fl0hisa5vlvr63"))))
+                "15r5lrrkv2zj3dvpqssd46w61hmrq27y7c2rz33s20ck59iphk4b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--with-python=no"
@@ -3898,7 +3885,8 @@ hard-coded.")
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "--with-dbus-sys-dir="
                               out "/etc/dbus-1/system.d")
-               "--localstatedir=/var"))
+               "--localstatedir=/var"
+               "--disable-werror"))
        #:make-flags
        (list "V=1")                     ; log build commands
        #:phases
@@ -4912,23 +4900,20 @@ exit code reports successful or failed execution to
 (define-public udpcast
   (package
     (name "udpcast")
-    (version "20200328")
+    (version "20211207")
     (source
      (origin
        (method url-fetch)
        ;; XXX: Original server is at https://www.udpcast.linux.lu is not
        ;; reliable.
        (uri (list (string-append
-                   "http://sources.buildroot.net/udpcast/udpcast-"
-                   version ".tar.gz")
-                  (string-append
                    "https://fossies.org/linux/privat/udpcast-"
                    version ".tar.gz")
                   (string-append
                    "https://www.udpcast.linux.lu/download/udpcast-"
                    version ".tar.gz")))
        (sha256
-        (base32 "06pj86nbi9hx7abbb0z2c5ynhfq0rv89b7nmy0kq3xz2lsxfw6cw"))))
+        (base32 "0l6hck694szrrvz85nm48rwb7mzvg2z2bwa50v51pkvym3kvxkm3"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake m4 perl))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index a29451f8a2..439b3b2946 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2019, 2021 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2017, 2019, 2021, 2022 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@@ -69,6 +69,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system r)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -328,7 +329,7 @@ precision.")
 (define-public giac
   (package
     (name "giac")
-    (version "1.7.0-47")
+    (version "1.7.0-51")
     (source
      (origin
        (method url-fetch)
@@ -340,42 +341,42 @@ precision.")
                            "~parisse/debian/dists/stable/main/source/"
                            "giac_" version ".tar.gz"))
        (sha256
-        (base32 "1cbc0vm79q9z3ajn4m5sjg9931ah1wq3icj0m16jsxp52km1h7jx"))))
+        (base32 "0wgqa2nxpv652348fxpchx5zvaj6ssc403jxwsdp5ky9pdpap2zs"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules ((ice-9 ftw)
+     (list
+      #:modules '((ice-9 ftw)
                   (guix build utils)
                   (guix build gnu-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-bin-cp
-           ;; Some Makefiles contain hard-coded "/bin/cp".
-           (lambda _
-             (substitute* (cons "micropython-1.12/xcas/Makefile"
-                                (find-files "doc" "^Makefile"))
-               (("/bin/cp") (which "cp")))))
-         (add-after 'unpack 'disable-failing-test
-           ;; FIXME: Test failing.  Not sure why.
-           (lambda _
-             (substitute* "check/Makefile.in"
-               (("chk_fhan11") ""))))
-         (add-after 'install 'fix-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; Most French documentation has a non-commercial
-               ;; license, so we need to remove it.
-               (with-directory-excursion (string-append out "/share/giac/doc/fr")
-                 (for-each delete-file-recursively
-                           '("cascas" "casexo" "casgeo" "casrouge" "cassim"
-                             "castor")))
-               ;; Remove duplicate documentation in
-               ;; "%out/share/doc/giac/", where Xcas does not expect
-               ;; to find it.
-               (delete-file-recursively (string-append out "/share/doc/giac")))))
-         (add-after 'install 'remove-unnecessary-executable
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (delete-file (string-append out "/bin/xcasnew"))))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-bin-cp
+            ;; Some Makefiles contain hard-coded "/bin/cp".
+            (lambda _
+              (substitute* (cons "micropython-1.12/xcas/Makefile"
+                                 (find-files "doc" "^Makefile"))
+                (("/bin/cp") (which "cp")))))
+          (add-after 'unpack 'disable-failing-test
+            ;; FIXME: Test failing.  Not sure why.
+            (lambda _
+              (substitute* "check/Makefile.in"
+                (("chk_fhan11") ""))))
+          (add-after 'install 'fix-doc
+            (lambda _
+              ;; Most French documentation has a non-commercial license, so we
+              ;; need to remove it.
+              (with-directory-excursion
+                  (string-append #$output "/share/giac/doc/fr")
+                (for-each delete-file-recursively
+                          '("cascas" "casexo" "casgeo" "casrouge" "cassim"
+                            "castor")))
+              ;; Remove duplicate documentation in "%out/share/doc/giac/",
+              ;; where Xcas does not expect to find it.
+              (delete-file-recursively
+               (string-append #$output "/share/doc/giac"))))
+          (add-after 'install 'remove-unnecessary-executable
+            (lambda _
+              (delete-file (string-append #$output "/bin/xcasnew")))))))
     (inputs
      ;; TODO: Add libnauty, unbundle "libmicropython.a".
      (list ao
@@ -1139,7 +1140,7 @@ features, and more.")
 (define-public xtensor
   (package
     (name "xtensor")
-    (version "0.20.10")
+    (version "0.24.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1147,11 +1148,11 @@ features, and more.")
                     (commit version)))
               (sha256
                (base32
-                "1fmv2hpx610xwhxrndfsfvlbqfyk4l3gi5q5d7pa9m82kblxjj9l"))
+                "14fpzwdq26p2fqdrmc78hny9pp09k9c53jnwlh7f8x54ikzm23c2"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (native-inputs
-     (list googletest xtl))
+     (list doctest googletest xtl))
     (arguments
      `(#:configure-flags
        '("-DBUILD_TESTS=ON")
@@ -1181,7 +1182,7 @@ xtensor provides:
                   (add-after 'unpack 'remove-march=native
                     (lambda _
                       (substitute* "benchmark/CMakeLists.txt"
-                        (("-march=native") ""))))
+                        (("-march=native\"") "\""))))
                   (add-after 'unpack 'link-with-googlebenchmark
                     (lambda _
                       (substitute* "benchmark/CMakeLists.txt"
@@ -1348,14 +1349,14 @@ objects.")
 (define-public gappa
   (package
    (name "gappa")
-   (version "1.3.5")
+   (version "1.4.0")
    (source (origin
             (method url-fetch)
-            (uri (string-append "https://gforge.inria.fr/frs/download.php/latestfile/"
-                                "2699/gappa-" version ".tar.gz"))
+            (uri (string-append "https://gappa.gitlabpages.inria.fr/releases/"
+                                "gappa-" version ".tar.gz"))
             (sha256
              (base32
-              "0q1wdiwqj6fsbifaayb1zkp20bz8a1my81sqjsail577jmzwi07w"))))
+              "12x42z901pr05ldmparqdi8sq9s7fxbavhzk2dbq3l6hy247dwbb"))))
    (build-system gnu-build-system)
    (inputs
     (list boost gmp mpfr))
@@ -1382,7 +1383,7 @@ filters for CGAL and it is used to certify elementary functions in CRlibm.
 While Gappa is intended to be used directly, it can also act as a backend
 prover for the Why3 software verification platform or as an automatic tactic
 for the Coq proof assistant.")
-   (license (list license:gpl3+ license:cecill-c)))) ; either/or
+   (license (list license:gpl3+ license:cecill)))) ; either/or
 
 (define-public givaro
   (package
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 4614ac86b3..c209b1538f 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
 ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
 ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
@@ -297,7 +297,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
 (define-public gnuastro
   (package
     (name "gnuastro")
-    (version "0.16")
+    (version "0.17")
     (source
      (origin
        (method url-fetch)
@@ -305,19 +305,19 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
                            version ".tar.lz"))
        (sha256
         (base32
-         "07xr0r5dmjpnrz7ylf7k3vmjjna2jafi16lfvkqwxj9fyssmz207"))))
+         "1gq37axs9l556pxxmnh47h088gbmp7sk3xjg59qzk2bsycg3dkgh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
     (inputs
-     `(("cfitsio" ,cfitsio)
-       ("curl" ,curl-minimal)
-       ("gsl" ,gsl)
-       ("libgit2" ,libgit2)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libtiff" ,libtiff)
-       ("wcslib" ,wcslib)
-       ("zlib" ,zlib)))
+     (list cfitsio
+           curl-minimal
+           gsl
+           libgit2
+           libjpeg-turbo
+           libtiff
+           wcslib
+           zlib))
     (native-inputs
      (list libtool lzip))
     (home-page "https://www.gnu.org/software/gnuastro/")
@@ -614,13 +614,13 @@ accurately in real time at any rate desired.")
 (define-public python-astropy
   (package
     (name "python-astropy")
-    (version "5.0")
+    (version "5.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "astropy" version))
        (sha256
-        (base32 "09rr9z2kn5qw34fqpwxgcwsn9m5aw6f0dd0pm232aa8k3qakw83h"))
+        (base32 "09wh589ywjsgjvi76v2d2zqd9sri0461rrnml0b0pah5lbkcv0k3"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -826,21 +826,20 @@ of astronomical sources.")
 (define-public python-pyvo
   (package
     (name "python-pyvo")
-    (version "1.2")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyvo" version))
        (sha256
-        (base32 "1lap703wxbyxqlbk85myirp4pkdnc6cg10xhfajfsvz5k0hm5ffw"))))
+        (base32 "1ri5yp6903386lkn79mdcmlax7zsfrrrjbcvb91wxydcc9yasc1n"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     '(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+           (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (add-installed-pythonpath inputs outputs)
                (invoke "python" "-m" "pytest" "--pyargs" "pyvo" "-k"
                        (string-append   ; these tests use the network
                         "not test_access_with_string"
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index c2f85346bd..13e0f02837 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -422,13 +422,13 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
     (inputs
      `(("alsa" ,alsa-lib)
        ("flac" ,flac)
-       ("mpg123" ,mpg123)
        ("portaudio" ,portaudio)
        ("pulseaudio" ,pulseaudio)
        ("sdl2" ,sdl2)
-       ("sndfile" ,libsndfile)
-       ("vorbis" ,libvorbis)
-       ("zlib" ,zlib)))
+       ("sndfile" ,libsndfile)))
+    (propagated-inputs
+     ;; In Requires.private
+     (list libogg libvorbis mpg123 zlib))
     (synopsis "Audio tracking library")
     (description "LibOpenMPT is a cross-platform C++ and C module playback
 library.  It is based on the player code of the Open ModPlug Tracker project.")
diff --git a/gnu/packages/aux-files/guix.vim b/gnu/packages/aux-files/guix.vim
index 7dc359e52b..9397c53701 100644
--- a/gnu/packages/aux-files/guix.vim
+++ b/gnu/packages/aux-files/guix.vim
@@ -1,7 +1,13 @@
 " This appends all of the vim plugins to the end of Vim's runtimepath.
-for directory in ["/run/current-system/profile", $HOME . "/.guix-profile", $GUIX_PROFILE, $GUIX_ENVIRONMENT]
+for directory in ["/run/current-system/profile", $HOME . "/.guix-profile", $HOME ."/.guix-home/profile", $GUIX_PROFILE, $GUIX_ENVIRONMENT]
     let vimplugins = directory . "/share/vim/vimfiles"
     if isdirectory(vimplugins)
         let &rtp = join([&rtp,vimplugins], ',')
     endif
 endfor
+" Unconditionally add */after directories last, as intended by upstream
+" TODO: Remove duplicate */after directories
+for directory in [$VIM . "/vimfiles", $HOME ."/.vim"]
+    let vimplugins = directory . "/after"
+    let &rtp = join([&rtp,vimplugins], ',')
+endfor
diff --git a/gnu/packages/aux-files/linux-libre/5.10-arm.conf b/gnu/packages/aux-files/linux-libre/5.10-arm.conf
index 30c5d541f0..c4f714f5e1 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-arm.conf
@@ -9101,7 +9101,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.10-arm64.conf b/gnu/packages/aux-files/linux-libre/5.10-arm64.conf
index 0f3b9dc844..a612819ee9 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-arm64.conf
@@ -9221,7 +9221,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.10-i686.conf b/gnu/packages/aux-files/linux-libre/5.10-i686.conf
index db52c07f5c..23b159057d 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-i686.conf
@@ -9895,7 +9895,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
index 8e970b6422..4dfb742813 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
@@ -9864,7 +9864,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.15-arm.conf b/gnu/packages/aux-files/linux-libre/5.15-arm.conf
index 08f4863548..a45530711e 100644
--- a/gnu/packages/aux-files/linux-libre/5.15-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.15-arm.conf
@@ -9364,7 +9364,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.15-arm64.conf b/gnu/packages/aux-files/linux-libre/5.15-arm64.conf
index 743e6cccc9..d67461d051 100644
--- a/gnu/packages/aux-files/linux-libre/5.15-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.15-arm64.conf
@@ -9728,7 +9728,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.15-i686.conf b/gnu/packages/aux-files/linux-libre/5.15-i686.conf
index cec3941971..ab2008f3e5 100644
--- a/gnu/packages/aux-files/linux-libre/5.15-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.15-i686.conf
@@ -10159,7 +10159,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.15-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.15-x86_64.conf
index 70020ba970..abb1c98fcb 100644
--- a/gnu/packages/aux-files/linux-libre/5.15-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.15-x86_64.conf
@@ -10198,7 +10198,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.16-arm.conf b/gnu/packages/aux-files/linux-libre/5.16-arm.conf
index e2436961f2..2b31848e5f 100644
--- a/gnu/packages/aux-files/linux-libre/5.16-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.16-arm.conf
@@ -9420,7 +9420,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.16-arm64.conf b/gnu/packages/aux-files/linux-libre/5.16-arm64.conf
index dcc3db788e..eca75bd9fb 100644
--- a/gnu/packages/aux-files/linux-libre/5.16-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.16-arm64.conf
@@ -9819,7 +9819,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.16-i686.conf b/gnu/packages/aux-files/linux-libre/5.16-i686.conf
index c18e4fcfc3..74306fd525 100644
--- a/gnu/packages/aux-files/linux-libre/5.16-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.16-i686.conf
@@ -10238,7 +10238,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.16-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.16-x86_64.conf
index 0ff4eee0aa..f4746b40e2 100644
--- a/gnu/packages/aux-files/linux-libre/5.16-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.16-x86_64.conf
@@ -10274,7 +10274,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 CONFIG_IO_WQ=y
 # end of File systems
 
diff --git a/gnu/packages/aux-files/linux-libre/5.4-arm.conf b/gnu/packages/aux-files/linux-libre/5.4-arm.conf
index a680731bc8..e985f1ded8 100644
--- a/gnu/packages/aux-files/linux-libre/5.4-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.4-arm.conf
@@ -8697,7 +8697,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 # end of File systems
 
 #
diff --git a/gnu/packages/aux-files/linux-libre/5.4-arm64.conf b/gnu/packages/aux-files/linux-libre/5.4-arm64.conf
index a867660aa7..d2ba5871e0 100644
--- a/gnu/packages/aux-files/linux-libre/5.4-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.4-arm64.conf
@@ -8644,7 +8644,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 # end of File systems
 
 #
diff --git a/gnu/packages/aux-files/linux-libre/5.4-i686.conf b/gnu/packages/aux-files/linux-libre/5.4-i686.conf
index 4e2d7795c7..83019bc0c7 100644
--- a/gnu/packages/aux-files/linux-libre/5.4-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.4-i686.conf
@@ -9575,7 +9575,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 # end of File systems
 
 #
diff --git a/gnu/packages/aux-files/linux-libre/5.4-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.4-x86_64.conf
index e2509b773b..7cf92478c1 100644
--- a/gnu/packages/aux-files/linux-libre/5.4-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.4-x86_64.conf
@@ -9496,7 +9496,8 @@ CONFIG_NLS_MAC_TURKISH=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
-# CONFIG_UNICODE is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
 # end of File systems
 
 #
diff --git a/gnu/packages/barrier.scm b/gnu/packages/barrier.scm
new file mode 100644
index 0000000000..1382a0fd71
--- /dev/null
+++ b/gnu/packages/barrier.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; 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 barrier)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages avahi)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages xorg))
+
+(define-public barrier
+  (package
+    (name "barrier")
+    (version "2.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/debauchee/barrier")
+             (commit (string-append "v" version))
+             (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10xk9szxxnqgfym53mcd9hqj1cw2ipncmiixw3i3ajlj1vn88qh1"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DBARRIER_USE_EXTERNAL_GTEST=ON")
+       #:tests? #f)) ;tests require a running x server
+    (native-inputs
+     (list googletest pkg-config))
+    (inputs
+     (list avahi curl gulrak-filesystem libx11 libxtst openssl qtbase-5))
+    (synopsis "Keyboard Video Mouse switch software")
+    (description "@code{Barrier} is software that mimics the functionality of
+a KVM switch, which historically would allow you to use a single keyboard and
+mouse to control multiple computers by physically turning a dial on the box to
+switch the machine you're controlling at any given moment.  Barrier does this
+in software, allowing you to tell it which machine to control by moving your
+mouse to the edge of the screen, or by using a keypress to switch focus to a
+different system.")
+    (home-page "https://github.com/debauchee/barrier")
+    (license license:gpl2)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 32a462b545..c3b33e3751 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -85,14 +85,14 @@
 (define-public hello
   (package
     (name "hello")
-    (version "2.11")
+    (version "2.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/hello/hello-" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "1g84a3hqs4pgx3yzs99cysv3iq440ncdw77bf03fsi1w5mby174c"))))
+                "1ayhp9v4m4rdhjmnl2bq3cibrbqqkgjbl3s7yk2nhlh8vj3ay16g"))))
     (build-system gnu-build-system)
     (synopsis "Hello, GNU world: An example GNU package")
     (description
@@ -1015,105 +1015,6 @@ with the Linux kernel.")
                                        "glibc-reinstate-prlimit64-fallback.patch"
                                        "glibc-2.29-supported-locales.patch"))))))
 
-
-(define-public glibc-2.2.5
-  (package
-    (inherit glibc)
-    (version "2.2.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.gz"))
-              (patches (search-patches "glibc-boot-2.2.5.patch"
-                                       "glibc-bootstrap-system-2.2.5.patch"))
-              (sha256
-               (base32
-                "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q"))))
-    (arguments
-     (list #:system "i686-linux"
-           #:implicit-inputs? #f
-           #:tests? #f
-           #:strip-binaries? #f
-           #:validate-runpath? #f
-           #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds
-           #:make-flags
-           #~(list (string-append
-                    "SHELL=" #$(this-package-native-input "bash") "/bin/sh"))
-           #:configure-flags
-           #~(list "--enable-shared"
-                   "--enable-static"
-                   "--disable-sanity-checks"
-                   "--build=i686-unknown-linux-gnu"
-                   "--host=i686-unknown-linux-gnu"
-                   (string-append "--with-headers="
-                                  #$(this-package-native-input "kernel-headers")
-                                  "/include")
-                   "--enable-static-nss"
-                   "--without-__thread"
-                   "--without-cvs"
-                   "--without-gd"
-                   "--without-tls"
-                   (string-append "--prefix=" #$output))
-           #:phases
-           #~(modify-phases %standard-phases
-               (add-before 'configure 'setenv
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bash (assoc-ref inputs "bash"))
-                          (shell (string-append bash "/bin/bash"))
-                          (gcc (assoc-ref inputs "gcc"))
-                          (cppflags (string-append
-                                     " -D MES_BOOTSTRAP=1"
-                                     " -D BOOTSTRAP_GLIBC=1"))
-                          (cflags (string-append " -L " (getcwd))))
-                     (setenv "CONFIG_SHELL" shell)
-                     (setenv "SHELL" shell)
-                     (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
-                     (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)))))
-               (replace 'configure   ; needs classic invocation of configure
-                 (lambda* (#:key configure-flags #:allow-other-keys)
-                   (format (current-error-port)
-                           "running ./configure ~a\n" (string-join configure-flags))
-                   (apply invoke "./configure" configure-flags)))
-               (add-after 'configure 'fixup-configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bash (assoc-ref inputs "bash"))
-                          (shell (string-append bash "/bin/bash")))
-                     (substitute* "config.make"
-                       (("INSTALL = scripts/") "INSTALL = $(..)./scripts/"))
-                     (substitute* "config.make"
-                       (("INSTALL = scripts/") "INSTALL = $(..)./scripts/")
-                       (("BASH = ") (string-append
-                                     "SHELL = " shell "
-         BASH = ")))))))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (outputs '("out"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs
-     ;; Lazily resolve NAME in (gnu packages commencement) to avoid a cycle.
-     (let ((c (lambda (name)
-                (module-ref (resolve-interface
-                             '(gnu packages commencement))
-                            name))))
-       `(("bash" ,bash-minimal)
-         ("coreutils" ,coreutils)
-         ("gawk" ,gawk)
-         ("grep" ,grep)
-         ("make" ,gnu-make)
-         ("sed" ,sed)
-         ("tar" ,tar)
-         ("bzip2" ,bzip2)
-         ("gzip" ,gzip)
-         ("patch" ,patch)
-         ("xz" ,xz)
-         ("kernel-headers" ,linux-libre-headers)
-
-         ;; Old toolchain
-         ("gcc" ,(c 'gcc-mesboot0))
-         ("binutils" ,(c 'binutils-mesboot))
-         ("libc" ,(c 'glibc-mesboot0)))))))
-
 (define-public (make-gcc-libc base-gcc libc)
   "Return a GCC that targets LIBC."
   (package (inherit base-gcc)
@@ -1270,7 +1171,8 @@ test environments.")
 (define-public glibc-locales
   (make-glibc-locales glibc))
 (define-public glibc-utf8-locales
-  (make-glibc-utf8-locales glibc))
+  (hidden-package
+   (make-glibc-utf8-locales glibc)))
 
 ;; Packages provided to ease use of binaries linked against the previous libc.
 (define-public glibc-locales-2.29
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 537f6262c4..ce137d845e 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 malte Frank Gerdes <malte.f.gerdes@gmail.com>
-;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -31,22 +31,33 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages opencl)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages xml)
   #:use-module (ice-9 match))
 
 (define-public fio
@@ -383,3 +394,178 @@ and options.  With careful benchmarking, different hardware can be compared.")
         devices.  It only measures the peak metrics that can be achieved using
         vector operations and does not represent a real-world use case.")
         (license license:unlicense))))
+
+(define-public kdiskmark
+  (package
+    (name "kdiskmark")
+    (version "2.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/JonMagon/KDiskMark")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1l4sw05yx70pcnaa64arjc414mgvyz05pn3gz9nc9hga8v2d3rzn"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ;; Drop runtime dependency on KDE's KFAuth.
+      #~(list "-DPERFORM_PAGECACHE_CLEARING_USING_KF5AUTH=no")
+      #:tests? #f                       ;no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/benchmark.cpp"
+                (("\"fio\"")
+                 (format #f "~s" (search-input-file inputs "bin/fio")))))))))
+    (native-inputs (list extra-cmake-modules qttools))
+    (inputs (list fio qtbase-5))
+    (home-page "https://github.com/JonMagon/KDiskMark")
+    (synopsis "Simple disk benchmark tool")
+    (description "KDiskMark is an HDD and SSD benchmark tool.  KDiskMark
+abstracts away the complexity of the Flexible I/O Tester (@command{fio})
+command via a convenient graphical user interface (GUI) and handles its output
+to provide an easy to view and interpret benchmark result.  The application is
+written in C++ with Qt and doesn't have any runtime KDE dependencies.  Among
+its features are:
+@itemize
+@item Configurable block size, queues, and threads count for each test
+@item Many languages support
+@item Report generation.
+@end itemize")
+    (license license:gpl3+)))
+
+(define-public sysbench
+  (package
+    (name "sysbench")
+    (version "1.0.20")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/akopytov/sysbench")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Ensure no bundled libraries get used.
+                          (delete-file-recursively "third_party")
+                          (substitute* "configure.ac"
+                            (("^third_party/.*")
+                             ""))
+                          (substitute* "Makefile.am"
+                            ((".*(LUAJIT|CK)_DIR =.*")
+                             ""))))
+              (sha256
+               (base32
+                "1sanvl2a52ff4shj62nw395zzgdgywplqvwip74ky8q7s6qjf5qy"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "--with-pgsql"
+                                ;; Explicitly specify the library directory of
+                                ;; MySQL, otherwise `mysql_config` gets
+                                ;; consulted and adds unnecessary link
+                                ;; directives.
+                                (string-append "--with-mysql-libs="
+                                               #$(this-package-input "mysql")
+                                               "/lib")
+                                "--with-system-luajit"
+                                "--with-system-ck"
+                                ;; If we let the build tool select the most
+                                ;; optimal compiler architecture flag, the
+                                ;; build is not reproducible.
+                                "--without-gcc-arch")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'patch-test-runner
+                     (lambda _
+                       (substitute* "tests/test_run.sh"
+                         (("/bin/bash")
+                          (which "bash"))
+                         ;; Do not attempt to invoke the cram command via
+                         ;; Python, as on Guix it is a shell script (wrapper).
+                         (("\\$\\(command -v cram\\)")
+                          "-m cram"))))
+                   (add-after 'unpack 'disable-test-installation
+                     (lambda _
+                       (substitute* "tests/Makefile.am"
+                         (("install-data-local")
+                          "do-not-install-data-local")
+                         (("^test_SCRIPTS.*")
+                          ""))))
+                   (add-after 'unpack 'fix-docbook
+                     (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                       (substitute* "m4/ax_check_docbook.m4"
+                         (("DOCBOOK_ROOT=.*" all)
+                          (string-append
+                           all "XML_CATALOG="
+                           (search-input-file (or native-inputs inputs)
+                                              "xml/dtd/docbook/catalog.xml")
+                           "\n")))
+                       (substitute* "doc/xsl/xhtml.xsl"
+                         (("http://docbook.sourceforge.net/release/xsl\
+/current/xhtml/docbook.xsl")
+                          (search-input-file
+                           (or native-inputs inputs)
+                           (string-append "xml/xsl/docbook-xsl-"
+                                          #$(package-version docbook-xsl)
+                                          "/xhtml/docbook.xsl"))))
+                       (substitute* "doc/xsl/xhtml-chunk.xsl"
+                         (("http://docbook.sourceforge.net/release/xsl\
+/current/xhtml/chunk.xsl")
+                          (search-input-file
+                           (or native-inputs inputs)
+                           (string-append "xml/xsl/docbook-xsl-"
+                                          #$(package-version docbook-xsl)
+                                          "/xhtml/chunk.xsl")))))))))
+    (native-inputs (list autoconf
+                         automake
+                         libtool
+                         pkg-config
+                         python-cram
+                         python-wrapper
+                         which
+                         ;; For documentation
+                         libxml2        ;for XML_CATALOG_FILES
+                         libxslt
+                         docbook-xml
+                         docbook-xsl))
+    (inputs (list ck libaio luajit mysql postgresql))
+    (home-page "https://github.com/akopytov/sysbench/")
+    (synopsis "Scriptable database and system performance benchmark")
+    (description "@command{sysbench} is a scriptable multi-threaded benchmark
+tool based on LuaJIT.  It is most frequently used for database benchmarks, but
+can also be used to create arbitrarily complex workloads that do not involve a
+database server.  @command{sysbench} comes with the following bundled
+benchmarks:
+@table @file
+@item oltp_*.lua
+A collection of OLTP-like database benchmarks.
+@item fileio
+A filesystem-level benchmark.
+@item cpu
+A simple CPU benchmark.
+@item memory
+A memory access benchmark.
+@item threads
+A thread-based scheduler benchmark.
+@item mutex
+A POSIX mutex benchmark.
+@end table
+It includes features such as:
+@itemize
+@item
+Extensive statistics about rate and latency is available, including latency
+percentiles and histograms.
+@item
+Low overhead even with thousands of concurrent threads.  @command{sysbench} is
+capable of generating and tracking hundreds of millions of events per second.
+@item
+New benchmarks can be easily created by implementing pre-defined hooks in
+user-provided Lua scripts.
+@item
+@end itemize")
+    (license license:gpl2+)))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 534204a16a..55d397e5cf 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -737,6 +737,44 @@ as provided by UCSC (hg38, Dec. 2013) and stored in Biostrings objects.")
      "This package exposes an annotation database generated from Ensembl.")
     (license license:artistic2.0)))
 
+(define-public r-ensdb-hsapiens-v86
+  (package
+    (name "r-ensdb-hsapiens-v86")
+    (version "2.99.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "EnsDb.Hsapiens.v86" version 'annotation))
+       (sha256
+        (base32 "1gp7xrzddpvmh2vrcp571wyy00skxgxfl39ksj4h0hm1qay0fb2m"))))
+    (properties `((upstream-name . "EnsDb.Hsapiens.v86")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ensembldb))
+    (home-page "https://bioconductor.org/packages/EnsDb.Hsapiens.v86")
+    (synopsis "Ensembl based annotation package")
+    (description "This package exposes an annotation database generated from
+Ensembl.")
+    (license license:artistic2.0)))
+
+(define-public r-ensdb-mmusculus-v79
+  (package
+    (name "r-ensdb-mmusculus-v79")
+    (version "2.99.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "EnsDb.Mmusculus.v79" version 'annotation))
+       (sha256
+        (base32 "1zpmq7v55if6q9r0h883q9k8l70ym20b01m9hxf121wb256rl9f7"))))
+    (properties `((upstream-name . "EnsDb.Mmusculus.v79")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ensembldb))
+    (home-page "https://bioconductor.org/packages/EnsDb.Mmusculus.v79")
+    (synopsis "Ensembl based annotation package")
+    (description "This package exposes an annotation database generated from
+Ensembl.")
+    (license license:artistic2.0)))
+
 (define-public r-txdb-dmelanogaster-ucsc-dm6-ensgene
   (package
     (name "r-txdb-dmelanogaster-ucsc-dm6-ensgene")
@@ -2966,6 +3004,44 @@ testing.  The package also provides functions for the visualization and
 exploration of the results.")
     (license license:gpl3+)))
 
+(define-public r-diffcyt
+  (package
+    (name "r-diffcyt")
+    (version "1.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "diffcyt" version))
+       (sha256
+        (base32 "1yc9mlc0ifb7h6rzskq97bsdq1kwdp5qq9l9mciwyxf6yjkmv5ni"))))
+    (properties `((upstream-name . "diffcyt")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-circlize
+           r-complexheatmap
+           r-dplyr
+           r-edger
+           r-flowcore
+           r-flowsom
+           r-limma
+           r-lme4
+           r-magrittr
+           r-multcomp
+           r-reshape2
+           r-s4vectors
+           r-summarizedexperiment
+           r-tidyr))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/lmweber/diffcyt")
+    (synopsis "Differential discovery in high-dimensional cytometry")
+    (description
+     "This package provides statistical methods for differential discovery
+analyses in high-dimensional cytometry data (including flow cytometry, mass
+cytometry or CyTOF, and oligonucleotide-tagged cytometry), based on a
+combination of high-resolution clustering and empirical Bayes moderated tests
+adapted from transcriptomics.")
+    (license license:expat)))
+
 (define-public r-dirichletmultinomial
   (package
     (name "r-dirichletmultinomial")
@@ -4349,6 +4425,43 @@ differential expression analysis, RNAseq data and related problems.")
     ;; Any version of the LGPL
     (license license:lgpl3+)))
 
+(define-public r-scannotatr
+  (package
+    (name "r-scannotatr")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "scAnnotatR" version))
+       (sha256
+        (base32 "08jq04ckjw8a5y753almc5bl8vnn4j6qp2zb7bb9w3ql3ddy7b21"))))
+    (properties `((upstream-name . "scAnnotatR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-annotationhub
+           r-ape
+           r-caret
+           r-data-tree
+           r-dplyr
+           r-e1071
+           r-ggplot2
+           r-kernlab
+           r-proc
+           r-rocr
+           r-seurat
+           r-singlecellexperiment
+           r-summarizedexperiment))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/grisslab/scAnnotatR")
+    (synopsis "Pretrained models for prediction on single cell RNA-sequencing data")
+    (description
+     "This package comprises a set of pretrained machine learning models to
+predict basic immune cell types.  This enables to quickly get a first
+annotation of the cell types present in the dataset without requiring prior
+knowledge.  The package also lets you train using own models to predict new
+cell types based on specific research needs.")
+    (license license:expat)))
+
 (define-public r-scdblfinder
   (package
     (name "r-scdblfinder")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 92a299634f..ada5965e5f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -4,8 +4,8 @@
 ;;; Copyright © 2015, 2016, 2018, 2019, 2020 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016, 2020, 2021 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2018 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2021 Arun Isaac <arunisaac@systemreboot.net>
@@ -3340,7 +3340,7 @@ data and settings.")
                                              texlive-latex-ms
                                              texlive-latex-natbib
                                              texlive-bibtex ; style files used by natbib
-                                             texlive-latex-pgf ; tikz
+                                             texlive-pgf    ; tikz
                                              texlive-latex-verbatimbox)))
        ("imagemagick" ,imagemagick)))
     (home-page "https://dorina.mdc-berlin.de/public/rajewsky/discrover/")
@@ -11409,7 +11409,7 @@ version does count multisplits.")
 (define-public minimap2
   (package
     (name "minimap2")
-    (version "2.23")
+    (version "2.24")
     (source
      (origin
        (method url-fetch)
@@ -11418,7 +11418,7 @@ version does count multisplits.")
                            "minimap2-" version ".tar.bz2"))
        (sha256
         (base32
-         "00ngbz1swcgxk5apx9dz5xkh1z8abdpysx5lc7w8fbrfxp41w0j0"))))
+         "05d6h2c1h95s5vblf1fijn9g0r4g69nsvkabji42j642y0gw7m4x"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are none
@@ -11695,6 +11695,49 @@ including:
     ;; the GPL, but the license headers include the "or later" clause.
     (license license:gpl3+)))
 
+(define-public r-dyngen
+  (let ((commit "37fd1798fcbd41093fb3d7775bb2d268e2fc82b6")
+        (revision "1"))
+    (package
+      (name "r-dyngen")
+      (version (git-version "1.0.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dynverse/dyngen")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "05pr6v1b8yji1jnj3fwx0crmg8ay6yy6lp9qjmcyvhkwbmf3kvc7"))))
+      (properties `((upstream-name . "dyngen")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-assertthat
+             r-dplyr
+             r-dynutils
+             r-ggplot2
+             r-ggraph
+             r-ggrepel
+             r-gillespiessa2
+             r-igraph
+             r-lmds
+             r-matrix
+             r-patchwork
+             r-pbapply
+             r-purrr
+             r-rlang
+             r-tibble
+             r-tidygraph
+             r-tidyr
+             r-viridis))
+      (home-page "https://github.com/dynverse/dyngen")
+      (synopsis "Multi-Modal simulator for single-cell omics analyses")
+      (description
+       "This package provides a multi-modal simulation engine for studying
+dynamic cellular processes at single-cell resolution.")
+      (license license:expat))))
+
 (define-public r-circus
   (package
     (name "r-circus")
@@ -13840,6 +13883,35 @@ vast-tools, an RNA-Seq pipeline for alternative splicing analysis.  The plots
 are generated using @code{ggplot2}.")
     (license license:expat)))
 
+(define-public r-scopeloomr
+  (let ((commit "99726f5f7da794042036b73924b6a10d6e7b4d5d")
+        (revision "1"))
+    (package
+      (name "r-scopeloomr")
+      (version (git-version "0.13.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/aertslab/SCopeLoomR")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1ci17ms0c0hf7yfp9ckcg7a2y1s0nm19jj3cifsd55hwc0gdglmz"))))
+      (properties `((upstream-name . "SCopeLoomR")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-base64enc r-hdf5r r-igraph r-matrix r-plyr r-rjson r-rlist))
+      (home-page "https://github.com/aertslab/SCopeLoomR")
+      (synopsis "Build .loom files and extract data from them")
+      (description
+       "This is an R package to build generic @code{.loom} files aligning with
+the default naming convention of the @code{.loom} format and to integrate
+other data types e.g.: regulons (SCENIC), clusters from Seurat, trajectory
+information...  The package can also be used to extract data from @code{.loom}
+files.")
+      (license license:expat))))
+
 (define-public vbz-compression
   (package
     (name "vbz-compression")
@@ -14620,55 +14692,48 @@ alignments, trees and genomic annotations.")
     (license license:bsd-3)))
 
 (define-public python-gffutils
-  ;; The latest release is older more than a year than the latest commit
-  (let ((commit "4034c54600813b1402945e12faa91b3a53162cf1")
-        (revision "1"))
-    (package
-      (name "python-gffutils")
-      (version (git-version "0.9" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/daler/gffutils")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1rwafjdnbir5wnk0ap06ww4lra3p5frhy7mfs03rlldgfnwxymsn"))))
-      (build-system python-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (replace 'check
-             (lambda _
+  (package
+    (name "python-gffutils")
+    (version "0.10.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/daler/gffutils")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1gkzk7ps6w3ai2r81js9s9bzpba0jmxychnd2da6n9ggdnf2xzqz"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
                ;; Tests need to access the HOME directory
                (setenv "HOME" "/tmp")
-               (invoke "nosetests" "-a" "!slow")))
-           (add-after 'unpack 'make-gz-files-writable
-             (lambda _
-               (for-each make-file-writable
-                         (find-files "." "\\.gz"))
-               #t)))))
-      (propagated-inputs
-       (list python-argcomplete
-             python-argh
-             python-biopython
-             python-pybedtools
-             python-pyfaidx
-             python-simplejson
-             python-six))
-      (native-inputs
-       (list python-nose))
-      (home-page "https://github.com/daler/gffutils")
-      (synopsis "Tool for manipulation of GFF and GTF files")
-      (description
-       "python-gffutils is a Python package for working with and manipulating
+               (invoke "nosetests" "-a" "!slow")))))))
+    (propagated-inputs
+     (list python-argcomplete
+           python-argh
+           python-biopython
+           python-pybedtools
+           python-pyfaidx
+           python-simplejson
+           python-six))
+    (native-inputs
+     (list python-nose))
+    (home-page "https://github.com/daler/gffutils")
+    (synopsis "Tool for manipulation of GFF and GTF files")
+    (description
+     "python-gffutils is a Python package for working with and manipulating
 the GFF and GTF format files typically used for genomic annotations.  The
 files are loaded into a SQLite database, allowing much more complex
 manipulation of hierarchical features (e.g., genes, transcripts, and exons)
 than is possible with plain-text methods alone.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public indelfixer
   (package
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 0dc0bbffd8..0e939d93ac 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
 ;;; Copyright © 2022 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2022 Jacob Hart <hartja1@yahoo.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -477,7 +478,7 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.4.0")
+    (version "4.4.1")
     (source
      (origin
        (method git-fetch)
@@ -486,7 +487,7 @@ desktops.")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0aqrcwxi3s2alila3fa7fjs4hifkq7055wa4xvz17hajchs3l567"))))
+        (base32 "00whc4p209g2krsggxyq4sna01djbk1rbzkyjbq4qczvya01xn0w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 54e47059ee..7987641031 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
-;;; Copyright © 2017, 2018, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 nee <nee@cock.li>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -448,18 +448,21 @@ menu to select one of the installed operating systems.")
               (method url-fetch)
               (uri (string-append
                     "mirror://kernel.org/software/utils/dtc/"
-                    "dtc-" version ".tar.xz"))
+                    "dtc-" version ".tar.gz"))
               (sha256
                (base32
-                "0wrl43rvd8nnm1v1wyfdr17vk8q7ymib62vli6da8n9ni4lwbkk5"))))
+                "0xm38h31jb29xfh2sfyk48d8wdfq4b8lmb412zx9vjr35izjb9iq"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list bison
-           flex
-           libyaml
-           pkg-config
-           swig
-           valgrind))
+     (append
+       (list bison
+             flex
+             libyaml
+             pkg-config
+             swig)
+       (if (member (%current-system) (package-supported-systems valgrind))
+           (list valgrind)
+           '())))
     (inputs
      (list python))
     (arguments
@@ -480,10 +483,7 @@ menu to select one of the installed operating systems.")
              (substitute* '("Makefile"
                             "tests/run_tests.sh")
                (("pkg-config")
-                (or (which "pkg-config")
-                    (string-append ,(%current-target-system)
-                                   "-pkg-config"))))
-             #t))
+                ,(pkg-config-for-target)))))
          (delete 'configure))))         ; no configure script
     (home-page "https://www.devicetree.org")
     (synopsis "Compiles device tree source files")
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index 84c528fad5..1ec19c003c 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -51,7 +51,7 @@ supported content to the Kodi media center.")
 (define ublock-origin
   (package
     (name "ublock-origin")
-    (version "1.41.2")
+    (version "1.41.6")
     (home-page "https://github.com/gorhill/uBlock")
     (source (origin
               (method git-fetch)
@@ -62,7 +62,7 @@ supported content to the Kodi media center.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ga8yj2zkyngah0li3la3gslhjdayp0barch5w3y2jp9i14df9k2"))))
+                "05flr4jksa3l4cwi0fgkzmzn46rg5znaqd73615lwnxmnpr4va9d"))))
     (build-system gnu-build-system)
     (outputs '("xpi" "firefox" "chromium"))
     (arguments
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index e53a7c865f..d545d98938 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -38,6 +38,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (guix store)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bootstrap)
@@ -896,6 +897,83 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
     (home-page "https://github.com/awslabs/aws-c-mqtt")
     (license license:asl2.0)))
 
+;;; Factored out of the ck package so that it can be adjusted and called on
+;;; the host side easily, without impacting the package definition.
+(define (gnu-triplet->ck-machine target)
+  (letrec-syntax
+      ((matches (syntax-rules (=>)
+                  ((_ (target-prefix => machine) rest ...)
+                   (if (string-prefix? target-prefix target)
+                       machine
+                       (matches rest ...)))
+                  ((_)
+                   (error "unsupported target" target)))))
+    ;; This basically reproduces the logic handling the
+    ;; PLATFORM variable in the configure script of ck.
+    (matches ("x86_64"      => "x86_64")
+             ("i586"        => "x86")
+             ("i686"        => "x86")
+             ("aarch64"     => "aarch64")
+             ("arm"         => "arm")
+             ("ppc64"       => "ppc64")
+             ("ppc"         => "ppc")
+             ("s390x"       => "s390x")
+             ("sparc64"     => "sparcv9"))))
+
+(define-public ck
+  (package
+    (name "ck")
+    (version "0.7.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/concurrencykit/ck")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "020yzfpvymdc8lc44znlnxmxb8mvp42g4nb4p8k814klazqvwh0x"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            ;; ck uses a custom configure script that stumbles on
+            ;; '--enable-fast-install', among other things.
+            (lambda* (#:key parallel-build? #:allow-other-keys)
+              (define target-machine #$(and=> (%current-target-system)
+                                              gnu-triplet->ck-machine))
+              (when target-machine
+                ;; The configure script doesn't currently work for
+                ;; cross-compiling (see:
+                ;; https://github.com/concurrencykit/ck/issues/191).
+                (error "ck cannot currently be cross-compiled"))
+              ;; The custom configure script doesn't make cross-compilation
+              ;; adjustments itself, so manually set the archiver, compiler
+              ;; and linker.
+              (setenv "AR" #$(ar-for-target))
+              (setenv "CC" #$(cc-for-target))
+              (setenv "LD" #$(ld-for-target))
+              (apply invoke "./configure"
+                     `(,@(if target-machine
+                             (list (string-append "--profile=" target-machine))
+                             '())
+                       ,(string-append "--prefix=" #$output)
+                       ,(string-append "--mandir=" #$output "/share/man")
+                       ,(string-append "--cores="
+                                       (if parallel-build?
+                                           (number->string (parallel-job-count))
+                                           "1")))))))))
+    (home-page "https://github.com/concurrencykit/ck")
+    (synopsis "C library for concurrent systems")
+    (description "Concurrency Kit (@code{ck}) provides concurrency primitives,
+safe memory reclamation mechanisms and non-blocking (including lock-free) data
+structures designed to aid in the research, design and implementation of high
+performance concurrent systems developed in C99+.")
+    (license (list license:bsd-2        ;everything except...
+                   license:asl2.0))))   ;src/ck_hp.c
+
 (define-public utf8-h
   ;; The latest tag is used as there is no release.
   (let ((commit "500d4ea9f4c3449e5243c088d8af8700f7189734")
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 3f2429aeeb..56a4ab8a10 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -313,37 +313,37 @@ format, commonly used for VCDs or disks with subchannel data.")
                      (string-append
                       "actual_os := $(shell uname -o)\n"
                       "actual_arch := $(shell uname -m)\n"
-                      "VERSION_OS = _$(actual_os)_$(actual_arch)\n")))
-                  #t))
+                      "VERSION_OS = _$(actual_os)_$(actual_arch)\n")))))
               (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch"))))
     (build-system gnu-build-system)
     ;; XXX cdrtools bundles a modified, relicensed early version of cdparanoia.
     (arguments
-     `(#:make-flags
-       (list "RM=rm" "LN=ln" "SYMLINK=ln -s"
-             "CONFIG_SHELL=sh" "CCOM=gcc"
-             (string-append "INS_BASE=" (assoc-ref %outputs "out"))
-             (string-append "INS_RBASE=" (assoc-ref %outputs "out")))
-       ;; Parallel builds appear to be unsafe, see
-       ;; https://hydra.gnu.org/build/3346840/log/raw
-       #:parallel-build? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before 'build 'set-linux-headers
-           (lambda _
-             (substitute* "autoconf/configure"
-               (("/usr/src/linux")
-                (assoc-ref %build-inputs "kernel-headers")))
-             #t))
-         (add-before 'build 'substitute-dirs
-           (lambda _
-             (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
-                                  (find-files "DEFAULTS_ENG" "^Defaults\\.")
-                                  (find-files "TEMPLATES" "^Defaults\\."))
-               (("/opt/schily") (assoc-ref %outputs "out")))
-             #t)))
-       #:tests? #f))  ; no tests
+     (list #:make-flags
+        #~(list "RM=rm" "LN=ln" "SYMLINK=ln -s"
+                "CONFIG_SHELL=sh"
+                (string-append "CCOM=" #$(cc-for-target))
+                "LINKMODE=dynamic"
+                (string-append "INS_BASE=" #$output)
+                (string-append "INS_RBASE=" #$output))
+        ;; Parallel builds appear to be unsafe, see
+        ;; https://hydra.gnu.org/build/3346840/log/raw
+        #:parallel-build? #f
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (add-before 'build 'set-linux-headers
+              (lambda _
+                (substitute* "autoconf/configure"
+                  (("/usr/src/linux")
+                   (assoc-ref %build-inputs "kernel-headers")))))
+            (add-before 'build 'avoid-bogus-RPATH-entry
+              (lambda _
+                (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
+                                     (find-files "DEFAULTS_ENG" "^Defaults\\.")
+                                     (find-files "TEMPLATES" "^Defaults\\."))
+                  (("/opt/schily")
+                   #$output)))))
+        #:tests? #f))  ; no tests
    (synopsis "Command line utilities to manipulate and burn CD/DVD/BD images")
    (description "cdrtools is a collection of command line utilities to create
 CD's, DVD's or Blue Ray discs.  The most important components are
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index fec817c4f4..32aedf5b6b 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
+;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -93,7 +94,7 @@
 (define-public pict
   (package
     (name "pict")
-    (version "3.7.2")
+    (version "3.7.3")
     (source
      (origin
        (method git-fetch)
@@ -103,7 +104,7 @@
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1hpff8x49ixlh71sbyhj1rircf0mg95v5q9y0ys52rhiph99wy3n"))))
+         "0bpyl0zklw2fyxgynrc7shg0xamw8rr68zmh528niscrpavsmfpi"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -2885,13 +2886,27 @@ provides a simple way to achieve this.")
                 "0xmi24ckpps32k7hc139psgbsnsf4g106sv4l9m445m46amkxggd"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-test
-           (lambda _
-             (substitute* "tests/test-umockdev.c"
-               (("/run") "/tmp"))
-             #t)))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-test
+                 (lambda _
+                   (substitute* "tests/test-umockdev.c"
+                     (("/run") "/tmp"))))
+               ;; Avoid having to set 'LD_LIBRARY_PATH' to use umockdev
+               ;; via introspection.
+               (add-after 'unpack 'absolute-introspection-library
+                 (lambda _
+                   (substitute* "Makefile.in"
+                     (("g-ir-compiler -l libumockdev")
+                      (string-append "g-ir-compiler -l " #$output
+                                     "/lib/libumockdev")))))
+               (add-after 'install 'absolute-filenames
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; 'patch-shebangs' will take care of the shebang.
+                   (substitute* (string-append #$output "/bin/umockdev-wrapper")
+                     (("env") (search-input-file inputs "bin/env"))
+                     (("libumockdev")
+                      (string-append #$output "/lib/libumockdev"))))))))
     (native-inputs
      (list vala
            gobject-introspection
@@ -2901,7 +2916,9 @@ provides a simple way to achieve this.")
            python
            which))
     (inputs
-     (list glib eudev libgudev))
+     (list bash-minimal ;for umockdev-wrapper
+           coreutils-minimal ;for bin/env
+           glib eudev libgudev))
     (home-page "https://github.com/martinpitt/umockdev/")
     (synopsis "Mock hardware devices for creating unit tests")
     (description "umockdev mocks hardware devices for creating integration
@@ -3065,6 +3082,41 @@ to mark some tests as dependent from other tests.  These tests will then be
 skipped if any of the dependencies did fail or has been skipped.")
     (license license:asl2.0)))
 
+(define-public python-pytest-pudb
+  ;; PyPi does not include tests
+  (let ((commit "a6b3d2f4d35e558d72bccff472ecde9c9d9c69e5"))
+    (package
+      (name "python-pytest-pudb")
+      ;; Version mentioned in setup.py version field.
+      (version "0.7.0")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/wronglink/pytest-pudb")
+                      (commit commit)))
+                (file-name (git-file-name name commit))
+                (sha256
+                 (base32
+                  "1c0pypxx3y8w7s5bz9iy3w3aablnhn81rnhmb0is8hf2qpm6k3w0"))))
+      (build-system python-build-system)
+      (propagated-inputs (list pudb))
+      (native-inputs (list python-pytest))
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (replace 'check
+                      (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+                        (when tests?
+                          (add-installed-pythonpath inputs outputs)
+                          (invoke "pytest" "-v")))))))
+      (home-page "https://github.com/wronglink/pytest-pudb")
+      (synopsis "Pytest PuDB debugger integration")
+      (description
+       "@code{python-pytest-pudb} provides PuDB debugger integration based
+on pytest PDB integration.  For example, the software developer can
+call pudb by running @code{py.test --pudb} from the command line or by
+including @code{pudb.set_trace} in their test file(s).")
+      (license license:expat))))
+
 (define-public python-pytest-datadir
   (package
     (name "python-pytest-datadir")
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 47904e7b4e..d47225dbe5 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -31,226 +31,323 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix gexp)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system copy)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages racket)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages image)
   #:use-module (gnu packages xorg)
   #:use-module (ice-9 match)
-  #:use-module (srfi srfi-1))
-
-(define nanopass
-  (let ((version "1.9.2"))
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/nanopass/nanopass-framework-scheme")
-            (commit (string-append "v" version))))
-      (sha256 (base32 "16vjsik9rrzbabbhbxbaha51ppi3f9n8rk59pc6zdyffs0vziy4i"))
-      (file-name (git-file-name "nanopass" version)))))
-
-(define stex
-  ;; This commit includes a fix, which we would otherwise want to use as
-  ;; patch.  Let's revert to tagged releases as soon as one becomes available.
-  (let* ((commit "54051494434a197772bf6ca5b4e6cf6be55f39a5")
-         (version "1.2.2")
-         (version (git-version version "1" commit)))
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/dybvig/stex")
-            (commit commit)))
-      (sha256 (base32 "01jnvw8qw33gnpzwrakwhsr05h6b609lm180jnspcrb7lds2p23d"))
-      (file-name (git-file-name "stex" version)))))
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:export (chez-scheme-for-system
+            nix-system->chez-machine
+            chez-machine->nonthreaded
+            chez-machine->threaded
+            unpack-nanopass+stex))
+
+;; Commentary:
+;;
+;; The bootstrapping paths for Chez Scheme and Racket are closely
+;; entwined. Racket CS (the default Racket implementation) is based on (a fork
+;; of) Chez Scheme. Racket's variant of Chez Scheme shares sources for
+;; nanopass and stex with upstream Chez Scheme.
+;;
+;; Racket's variant of Chez Scheme can be bootstrapped by an older Racket
+;; implementation, Racket BC, which can be bootstrapped from C. Porting that
+;; code to work with upstream Chez Scheme (or finding an old version that
+;; does) is our best hope for some day bootstrapping upstream Chez Scheme from
+;; source.
+;;
+;; Code:
+
+(define* (chez-scheme-for-system #:optional
+                                 (system (or (%current-target-system)
+                                             (%current-system))))
+  "Return 'chez-scheme' unless only 'chez-scheme-for-racket' supports SYSTEM,
+including support for native threads."
+  (if (or
+       ;; full support upstream
+       (and=> (chez-upstream-features-for-system system)
+              (cut memq 'threads <>))
+       ;; no support anywhere
+       (not (nix-system->chez-machine system)))
+      chez-scheme
+      chez-scheme-for-racket))
+
+(define (chez-machine->nonthreaded machine)
+  "Given a string MACHINE naming a Chez Scheme machine type, returns a string
+naming the nonthreaded machine type for the same architecture and OS as
+MACHINE.  The returned string may share storage with MACHINE."
+  ;; Chez Scheme documentation consistently uses "nonthreaded" rather than
+  ;; e.g. "unthreaded"
+  (if (eqv? #\t (string-ref machine 0))
+      (substring machine 1)
+      machine))
+(define (chez-machine->threaded machine)
+  "Like @code{chez-machine->nonthreaded}, but returns the threaded machine
+type."
+  (if (eqv? #\t (string-ref machine 0))
+      machine
+      (string-append "t" machine)))
+
+;; Based on the implementation from raco-cross-lib/private/cross/platform.rkt
+;; in https://github.com/racket/raco-cross.
+;; For supported platforms, refer to release_notes/release_notes.stex in the
+;; upstream Chez Scheme repository or to racket/src/ChezScheme/README.md
+;; in https://github.com/racket/racket.
+(define %nix-arch-to-chez-alist
+  `(("x86_64" . "a6")
+    ("i386" . "i3")
+    ("aarch64" . "arm64")
+    ("armhf" . "arm32") ;; Chez supports ARM v6+
+    ("ppc" . "ppc32")))
+(define %nix-os-to-chez-alist
+  `(("w64-mingw32" . "nt")
+    ("darwin" . "osx")
+    ("linux" . "le")
+    ("freebsd" . "fb")
+    ("openbsd" . "ob")
+    ("netbsd" . "nb")
+    ("solaris" . "s2")))
+
+(define (chez-machine->nix-system machine)
+  "Return the Nix system type corresponding to the Chez Scheme machine type
+MACHINE.  If MACHINE is not a string representing a known machine type, an
+exception is raised.  This function does not distinguish between threaded and
+nonthreaded variants of MACHINE.
+
+Note that this function only handles Chez Scheme machine types in the
+strictest sense, not other kinds of descriptors sometimes used in place of a
+Chez Scheme machine type by Racket, such as @code{\"pb\"}, @code{#f}, or
+@code{\"racket\"}.  (When using such extensions, the Chez Scheme machine type
+for the host system is often still relevant.)"
+  (let ((machine (chez-machine->nonthreaded machine)))
+    (let find-arch ((alist %nix-arch-to-chez-alist))
+      (match alist
+        (((nix . chez) . alist)
+         (if (string-prefix? chez machine)
+             (string-append
+              nix "-" (let ((machine-os
+                             (substring machine (string-length chez))))
+                        (let find-os ((alist %nix-os-to-chez-alist))
+                          (match alist
+                            (((nix . chez) . alist)
+                             (if (equal? chez machine-os)
+                                 nix
+                                 (find-os alist)))))))
+             (find-arch alist)))))))
+
+(define* (nix-system->chez-machine #:optional
+                                   (system (or (%current-target-system)
+                                               (%current-system))))
+  "Return the Chez Scheme machine type corresponding to the Nix system
+identifier SYSTEM, or @code{#f} if the translation of SYSTEM to a Chez Scheme
+machine type is undefined.
+
+It is unspecified whether the resulting string will name a threaded or a
+nonthreaded machine type: when the distinction is relevant, use
+@code{chez-machine->nonthreaded} or @code{chez-machine->threaded} to adjust
+the result."
+  (let* ((hyphen (string-index system #\-))
+         (nix-arch (substring system 0 hyphen))
+         (nix-os (substring system (+ 1 hyphen)))
+         (chez-arch (assoc-ref %nix-arch-to-chez-alist nix-arch))
+         (chez-os (assoc-ref %nix-os-to-chez-alist nix-os)))
+    (and chez-arch chez-os (string-append chez-arch chez-os))))
+
+(define* (chez-upstream-features-for-system #:optional
+                                            (system
+                                             (or (%current-target-system)
+                                                 (%current-system))))
+  "Return a list of symbols naming features supported by upstream Chez Scheme
+for the Nix system identifier SYSTEM, or @code{#f} if upstream Chez Scheme
+does not support SYSTEM at all.
+
+If native threads are supported, the returned list will include
+@code{'threads}.  Other feature symbols may be added in the future."
+  (cond
+   ((not (nix-system->chez-machine system))
+    #f)
+   ((target-aarch64? system)
+    #f)
+   ((target-arm32? system)
+    (and (target-linux? system)
+         '()))
+   ((target-ppc32? system)
+    (and (target-linux? system)
+         '(threads)))
+   (else
+    '(threads))))
+
+;;
+;; Chez Scheme:
+;;
+
+
+(define unpack-nanopass+stex
+  #~(begin
+      (copy-recursively
+       (dirname (search-input-file %build-inputs
+                                   "lib/chez-scheme/nanopass.ss"))
+       "nanopass"
+       #:keep-mtime? #t)
+      (mkdir-p "stex")
+      (with-output-to-file "stex/Mf-stex"
+        (lambda ()
+          ;; otherwise, it will try to download submodules
+          (display "# to placate ../configure")))))
 
 (define-public chez-scheme
   (package
     (name "chez-scheme")
+    ;; The version should match `(scheme-version-number)`.
+    ;; See s/cmacros.ss c. line 360.
     (version "9.5.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/cisco/ChezScheme")
-             (commit (string-append "v" version))))
-       (sha256
-        (base32 "07s433hn1z2slfc026sidrpzxv3a8narcd40qqr1xrpb9012xdky"))
-       (file-name (git-file-name name version))
-       (snippet
-        ;; Remove bundled libraries.
-        (with-imported-modules '((guix build utils))
-          #~(begin
-              (use-modules (guix build utils))
-              (for-each (lambda (dir)
-                          (when (directory-exists? dir)
-                            (delete-file-recursively dir)))
-                        '("stex"
-                          "nanopass"
-                          "lz4"
-                          "zlib")))))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cisco/ChezScheme")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "07s433hn1z2slfc026sidrpzxv3a8narcd40qqr1xrpb9012xdky"))
+              (file-name (git-file-name name version))
+              (snippet #~(begin
+                           (use-modules (guix build utils))
+                           ;; TODO: consider putting this in a (guix ...) or
+                           ;; (guix build ...)  module so it can be shared
+                           ;; with the Racket origin without cyclic issues.
+                           (for-each (lambda (dir)
+                                       (when (directory-exists? dir)
+                                         (delete-file-recursively dir)))
+                                     '("stex"
+                                       "nanopass"
+                                       "lz4"
+                                       "zlib"))))))
     (build-system gnu-build-system)
     (inputs
-     `(("libuuid" ,util-linux "lib")
-       ("zlib" ,zlib)
-       ("zlib:static" ,zlib "static")
-       ("lz4" ,lz4)
-       ("lz4:static" ,lz4 "static")
-       ;; for expeditor:
-       ("ncurses" ,ncurses)
-       ;; for X11 clipboard support in expeditor:
-       ;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
-       ("libx11" ,libx11)))
-    (native-inputs
-     `(("nanopass" ,nanopass) ; source only
-       ;; for docs
-       ("stex" ,stex)
-       ("xorg-rgb" ,xorg-rgb)
-       ("texlive" ,(texlive-updmap.cfg (list texlive-dvips-l3backend
-                                             texlive-epsf
-                                             texlive-fonts-ec
-                                             texlive-oberdiek)))
-       ("ghostscript" ,ghostscript)
-       ("netpbm" ,netpbm)))
+     (list
+      `(,util-linux "lib") ;<-- libuuid
+      zlib
+      lz4
+      ncurses ;<-- for expeditor
+      ;; for X11 clipboard support in expeditor:
+      ;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
+      libx11))
+    (native-inputs (list chez-scheme-bootstrap-bootfiles
+                         chez-nanopass-bootstrap
+                         stex-bootstrap))
     (native-search-paths
      (list (search-path-specification
             (variable "CHEZSCHEMELIBDIRS")
-            (files (list (string-append "lib/csv" version "-site"))))))
+            (files '("lib/chez-scheme")))))
     (outputs '("out" "doc"))
     (arguments
-     `(#:modules
-       ((guix build gnu-build-system)
+     (list
+      #:modules
+      '((guix build gnu-build-system)
         (guix build utils)
         (ice-9 ftw)
         (ice-9 match))
-       #:test-target "test"
-       #:configure-flags
-       '("--threads") ;; TODO when we fix armhf, it doesn't support --threads
-       #:phases
-       (modify-phases %standard-phases
-         ;; put these where configure expects them to be
-         (add-after 'unpack 'unpack-nanopass+stex
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (for-each (lambda (dep)
-                         (define src
-                           (assoc-ref (or native-inputs inputs) dep))
-                         (copy-recursively src dep
-                                           #:keep-mtime? #t))
-                       '("nanopass" "stex"))))
-         ;; NOTE: the custom Chez 'configure' script doesn't allow
-         ;; unrecognized flags, such as those automatically added
-         ;; by `gnu-build-system`.
-         (replace 'configure
-           (lambda* (#:key inputs outputs
-                           (configure-flags '())
-                           #:allow-other-keys)
-             (let* ((zlib-static (assoc-ref inputs "zlib:static"))
-                    (lz4-static (assoc-ref inputs "lz4:static"))
-                    (out (assoc-ref outputs "out"))
-                    ;; add flags which are always required:
-                    (flags (cons*
-                            (string-append "--installprefix=" out)
-                            (string-append "ZLIB=" zlib-static "/lib/libz.a")
-                            (string-append "LZ4=" lz4-static "/lib/liblz4.a")
-                            ;; Guix will do compress man pages,
-                            ;; and letting Chez try causes an error
-                            "--nogzip-man-pages"
-                            configure-flags)))
-               (format #t "configure flags: ~s~%" flags)
-               ;; Some makefiles (for tests) don't seem to propagate CC
-               ;; properly, so we take it out of their hands:
-               (setenv "CC" ,(cc-for-target))
-               (setenv "HOME" "/tmp")
-               (apply invoke
-                      "./configure"
-                      flags))))
-         ;; The binary file name is called "scheme" as is the one from MIT/GNU
-         ;; Scheme.  We add a symlink to use in case both are installed.
-         (add-after 'install 'install-symlink
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (lib (string-append out "/lib"))
-                    (name "chez-scheme"))
-               (symlink (string-append bin "/scheme")
-                        (string-append bin "/" name))
-               (map (lambda (file)
-                      (symlink file (string-append (dirname file)
-                                                   "/" name ".boot")))
-                    (find-files lib "scheme.boot")))))
-         ;; Building explicitly lets us avoid using substitute*
-         ;; to re-write makefiles.
-         (add-after 'install-symlink 'prepare-stex
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             (let* ((stex+version
-                     (strip-store-file-name
-                      (assoc-ref (or native-inputs inputs) "stex")))
-                    ;; Eventually we want to install stex as a real
-                    ;; package so it's reusable. For now:
-                    (stex-output "/tmp")
-                    (doc-dir (string-append stex-output
-                                            "/share/doc/"
-                                            stex+version)))
-               (with-directory-excursion "stex"
-                 (invoke "make"
-                         "install"
-                         (string-append "LIB="
-                                        stex-output
-                                        "/lib/"
-                                        stex+version)
-                         (string-append "Scheme="
-                                        (assoc-ref outputs "out")
-                                        "/bin/scheme"))
-                 (for-each (lambda (pth)
-                             (install-file pth doc-dir))
-                           '("ReadMe" ; includes the license
-                             "doc/stex.html"
-                             "doc/stex.css"
-                             "doc/stex.pdf"))))))
-         ;; Building the documentation requires stex and a running scheme.
-         ;; FIXME: this is probably wrong for cross-compilation
-         (add-after 'prepare-stex 'install-doc
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             (let* ((chez+version (strip-store-file-name
-                                   (assoc-ref outputs "out")))
-                    (stex+version
-                     (strip-store-file-name
-                      (assoc-ref (or native-inputs inputs) "stex")))
-                    (scheme (string-append (assoc-ref outputs "out")
-                                           "/bin/scheme"))
-                    ;; see note on stex-output in phase build-stex, above:
-                    (stexlib (string-append "/tmp"
-                                            "/lib/"
-                                            stex+version))
-                    (doc-dir (string-append (assoc-ref outputs "doc")
-                                            "/share/doc/"
-                                            chez+version)))
-               (define* (stex-make #:optional (suffix ""))
-                 (invoke "make"
-                         "install"
-                         (string-append "Scheme=" scheme)
-                         (string-append "STEXLIB=" stexlib)
-                         (string-append "installdir=" doc-dir suffix)))
-               (with-directory-excursion "csug"
-                 (stex-make "/csug"))
-               (with-directory-excursion "release_notes"
-                 (stex-make "/release_notes"))
-               (with-directory-excursion doc-dir
-                 (symlink "release_notes/release_notes.pdf"
-                          "release_notes.pdf")
-                 (symlink "csug/csug9_5.pdf"
-                          "csug.pdf"))))))))
+      #:test-target "test"
+      ;; TODO when we fix armhf, it may not support --threads
+      #:configure-flags #~'("--threads")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'unpack-nanopass+stex
+            (lambda args
+              #$unpack-nanopass+stex))
+          (add-after 'unpack-nanopass+stex 'unpack-bootfiles
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (when (directory-exists? "boot")
+                (delete-file-recursively "boot"))
+              (copy-recursively
+               (search-input-directory (or native-inputs inputs)
+                                       "lib/chez-scheme-bootfiles")
+               "boot")))
+          ;; NOTE: the custom Chez 'configure' script doesn't allow
+          ;; unrecognized flags, such as those automatically added
+          ;; by `gnu-build-system`.
+          (replace 'configure
+            (lambda* (#:key inputs (configure-flags '()) #:allow-other-keys)
+              ;; add flags which are always required:
+              (let ((flags (cons* (string-append "--installprefix=" #$output)
+                                  "ZLIB=-lz"
+                                  "LZ4=-llz4"
+                                  "--libkernel"
+                                  ;; Guix will do compress-man-pages,
+                                  ;; and letting Chez try causes an error
+                                  "--nogzip-man-pages"
+                                  configure-flags)))
+                (format #t "configure flags: ~s~%" flags)
+                ;; Some makefiles (for tests) don't seem to propagate CC
+                ;; properly, so we take it out of their hands:
+                (setenv "CC" #$(cc-for-target))
+                (setenv "HOME" "/tmp")
+                (apply invoke "./configure" flags))))
+          ;; The binary file name is called "scheme" as is the one from
+          ;; MIT/GNU Scheme.  We add a symlink to use in case both are
+          ;; installed.
+          (add-after 'install 'install-symlink
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((scheme (search-input-file outputs "/bin/scheme"))
+                     (bin-dir (dirname scheme)))
+                (symlink scheme
+                         (string-append bin-dir "/chez-scheme"))
+                (match (find-files (string-append bin-dir "/../lib")
+                                   "scheme.boot")
+                  ((scheme.boot)
+                   (symlink scheme.boot
+                            (string-append (dirname scheme.boot)
+                                           "/chez-scheme.boot")))))))
+          ;; Building the documentation requires stex and a running scheme.
+          ;; FIXME: this is probably wrong for cross-compilation
+          (add-after 'install-symlink 'install-doc
+            (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+              (match (assoc-ref outputs "doc")
+                (#f
+                 (format #t "not installing docs~%"))
+                (doc-prefix
+                 (let* ((chez+version (strip-store-file-name #$output))
+                        (scheme (search-input-file outputs "/bin/scheme"))
+                        (stexlib (search-input-directory (or native-inputs
+                                                             inputs)
+                                                         "/lib/stex"))
+                        (doc-dir (string-append doc-prefix
+                                                "/share/doc/"
+                                                chez+version)))
+                   (define* (stex-make #:optional (suffix ""))
+                     (invoke "make" "install"
+                             (string-append "Scheme=" scheme)
+                             (string-append "STEXLIB=" stexlib)
+                             (string-append "installdir=" doc-dir suffix)))
+                   (with-directory-excursion "csug"
+                     (stex-make "/csug"))
+                   (with-directory-excursion "release_notes"
+                     (stex-make "/release_notes"))
+                   (with-directory-excursion doc-dir
+                     (symlink "release_notes/release_notes.pdf"
+                              "release_notes.pdf")
+                     (symlink "csug/csug9_5.pdf"
+                              "csug.pdf"))))))))))
     ;; Chez Scheme does not have a  MIPS backend.
     ;; FIXME: Debian backports patches to get armhf working.
     ;; We should too. It is the Chez machine type arm32le
     ;; (no threaded version upstream yet, though there is in
     ;; Racket's fork), more specifically (per the release notes) ARMv6.
-    (supported-systems (fold delete %supported-systems
-                             '("mips64el-linux" "armhf-linux")))
+    (supported-systems
+     (delete
+      "armhf-linux" ;; <-- should work, but reportedly broken
+      (filter chez-upstream-features-for-system
+              %supported-systems)))
     (home-page "https://cisco.github.io/ChezScheme/")
     (synopsis "R6RS Scheme compiler and run-time")
     (description
@@ -260,6 +357,400 @@ generates native code for each target processor, with support for x86, x86_64,
 and 32-bit PowerPC architectures.")
     (license asl2.0)))
 
+(define-public chez-scheme-for-racket
+  (package
+    (inherit chez-scheme)
+    (name "chez-scheme-for-racket")
+    (version "9.5.7.3")
+    ;; The version should match `(scheme-fork-version-number)`.
+    ;; See racket/src/ChezScheme/s/cmacros.ss c. line 360.
+    ;; It will always be different than the upstream version!
+    ;; When updating, remember to also update %racket-version in racket.scm.
+    (source #f) ; avoid problematic cycle with racket.scm
+    (inputs
+     (modify-inputs (package-inputs chez-scheme)
+       (delete "libx11" "util-linux:lib")))
+    (native-inputs
+     (modify-inputs (package-native-inputs chez-scheme)
+       (replace "chez-scheme-bootstrap-bootfiles"
+         chez-scheme-for-racket-bootstrap-bootfiles)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments chez-scheme)
+       ((#:configure-flags cfg-flags #~'())
+        #~(cons "--disable-x11" #$cfg-flags))
+       ((#:phases those-phases #~%standard-phases)
+        #~(let* ((those-phases #$those-phases)
+                 (unpack (assoc-ref those-phases 'unpack)))
+            (modify-phases those-phases
+              (replace 'unpack
+                (lambda args
+                  (unpack #:source #$(or (package-source this-package)
+                                         (package-source racket-vm-bc)))))
+              (add-after 'unpack 'chdir
+                (lambda args
+                  (chdir "racket/src/ChezScheme"))))))))
+    (supported-systems (filter nix-system->chez-machine
+                               %supported-systems))
+    (home-page "https://github.com/racket/ChezScheme")
+    ;; ^ This is downstream of https://github.com/racket/racket,
+    ;; but it's designed to be a friendly landing place for people
+    ;; who want a ChezScheme-shaped repositroy.
+    (synopsis "Variant of Chez Scheme extended for Racket")
+    (description "This variant of Chez Scheme is extended to support the
+implementation of Racket.  It may be useful on platforms that are not yet
+supported by upstream Chez Scheme.
+
+Main additions to Chez Scheme in the Racket variant:
+@itemize @bullet
+@item
+AArch64 support
+@item
+Portable bytes (@code{pb}) support, which is mainly useful for bootstrapping
+a build on any supported platform
+@item
+Unboxed floating-point arithmetic and flvectors
+@item
+Type reconstruction during optimization (especially for safe code)
+@item
+Continuation attachments
+@item
+Parallel garbage collection, in-place garbage collection for old-generation
+objects (instead of always copying), and reachability-based memory
+accounting
+@item
+Ordered finalization, immobile (but collectable) objects, weak/ephemeron
+generic hash tables, and reference bytevectors
+@item
+Faster multiplication and division for large exact numbers
+@end itemize")
+    (license asl2.0)))
+
+;;
+;; Bootfiles:
+;;
+
+(define-public chez-scheme-bootstrap-bootfiles
+  (package
+    (inherit chez-scheme)
+    (name "chez-scheme-bootstrap-bootfiles")
+    (inputs '())
+    (native-inputs '())
+    (outputs '("out"))
+    (build-system copy-build-system)
+    ;; TODO: cross compilation
+    (arguments
+     (list #:install-plan
+           #~`(("boot/" "lib/chez-scheme-bootfiles"))))
+    (supported-systems
+     ;; Upstream only distributes pre-built bootfiles for
+     ;; arm32le and t?(i3|a6)(le|nt|osx)
+     (filter (lambda (system)
+               (let ((machine (and=> (nix-system->chez-machine system)
+                                     chez-machine->nonthreaded)))
+                 (or (equal? "arm32le" machine)
+                     (and machine
+                          (member (substring machine 0 2) '("i3" "a6"))
+                          (or-map (cut string-suffix? <> machine)
+                                  '("le" "nt" "osx"))))))
+             %supported-systems))
+    (synopsis "Chez Scheme bootfiles (binary seed)")
+    (description
+     "Chez Scheme is a self-hosting compiler: building it requires
+``bootfiles'' containing the Scheme-implemented portions compiled for the
+current platform.  (Chez can then cross-compile bootfiles for all other
+supported platforms.)
+
+This package provides bootstrap bootfiles for upstream Chez Scheme.
+Currently, it simply packages the binaries checked in to the upsream
+repository.  Hopefully we can eventually adapt Racket's @code{cs-bootstrap} to
+work with upstream Chez Scheme so that we can bootstrap these files from
+source.")))
+
+(define-public chez-scheme-for-racket-bootstrap-bootfiles
+  (package
+    (inherit chez-scheme-bootstrap-bootfiles)
+    (name "chez-scheme-for-racket-bootstrap-bootfiles")
+    (version (package-version chez-scheme-for-racket))
+    (source #f) ; avoid problematic cycle with racket.scm
+    (native-inputs (list chez-nanopass-bootstrap racket-vm-bc))
+    ;; TODO: cross compilation
+    (arguments
+     (substitute-keyword-arguments
+         (package-arguments chez-scheme-bootstrap-bootfiles)
+       ((#:phases those-phases #~%standard-phases)
+        #~(let* ((those-phases #$those-phases)
+                 (unpack (assoc-ref those-phases 'unpack)))
+            (modify-phases those-phases
+              (replace 'unpack
+                (lambda args
+                  (unpack #:source #$(or (package-source this-package)
+                                         (package-source racket-vm-bc)))))
+              (add-after 'unpack 'chdir
+                (lambda args
+                  (chdir "racket/src/ChezScheme")))
+              (add-after 'chdir 'unpack-nanopass+stex
+                (lambda args
+                  #$unpack-nanopass+stex))
+              (add-before 'install 'build
+                (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                  (invoke (search-input-file (or native-inputs inputs)
+                                             "/opt/racket-vm/bin/racket")
+                          "rktboot/main.rkt"))))))))
+    (supported-systems
+     (package-supported-systems chez-scheme-for-racket))
+    (home-page "https://github.com/racket/ChezScheme")
+    ;; ^ This is downstream of https://github.com/racket/racket,
+    ;; but it's designed to be a friendly landing place for people
+    ;; who want a ChezScheme-shaped repositroy.
+    (synopsis "Chez Scheme bootfiles bootstrapped by Racket")
+    (description "Chez Scheme is a self-hosting compiler: building it
+requires ``bootfiles'' containing the Scheme-implemented portions compiled for
+the current platform.  (Chez can then cross-compile bootfiles for all other
+supported platforms.)
+
+The Racket package @code{cs-bootstrap} (part of the main Racket Git
+repository) implements enough of a Chez Scheme simulation to load the Chez
+Scheme compiler purely from source into Racket and apply the compiler to
+itself, thus bootstrapping Chez Scheme.  Bootstrapping takes about 10 times as
+long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
+7.1 and later, including the Racket BC variant.
+
+Note that the generated bootfiles are specific to Racket's fork of Chez
+Scheme, and @code{cs-bootstrap} does not currently support building upstream
+Chez Scheme.")))
+
+;;
+;; Chez's bootstrap dependencies:
+;;
+
+(define-public stex-bootstrap
+  ;; This commit includes a fix which we would otherwise want to use as
+  ;; patch.  Let's revert to tagged releases as soon as one becomes available.
+  (let ((commit "54051494434a197772bf6ca5b4e6cf6be55f39a5")
+        (revision "1"))
+    (hidden-package
+     (package
+       (name "stex")
+       ;; ^ Debian calls this "stex", not "chez-stex". It is a set of
+       ;; command-line tools, and there isn't a Scheme API, let alone a
+       ;; Chez-specific one, except perhaps that the Scheme examples are
+       ;; assumed to be Chez-compatible.
+       (version (git-version "1.2.2" revision commit))
+       (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                (url "https://github.com/dybvig/stex")
+                (commit commit)))
+          (sha256
+           (base32 "01jnvw8qw33gnpzwrakwhsr05h6b609lm180jnspcrb7lds2p23d"))
+          (file-name (git-file-name name version))
+          (snippet
+           #~(for-each delete-file
+                       '("sbin/install" "doc/stex.pdf" "doc/stex.html")))))
+       (outputs '("out"))
+       (build-system copy-build-system)
+       ;; N.B. Upstream does not seem to support cross-compilation,
+       ;; though it would probably be easy to add.
+       (propagated-inputs
+        (list xorg-rgb
+              (texlive-updmap.cfg
+               (list texlive-dvips-l3backend
+                     texlive-hyperref
+                     texlive-bibtex
+                     texlive-epsf
+                     texlive-fonts-ec
+                     texlive-oberdiek))
+              ghostscript
+              netpbm))
+       ;; Debian uses a versionless path for STEXLIB,
+       ;; which is much more convienient.
+       (arguments
+        (list
+         #:install-plan #~`(("inputs" "lib/stex/")
+                            ("gifs" "lib/stex/")
+                            ("math" "lib/stex/")
+                            ("src" "lib/stex/")
+                            ("Mf-stex" "lib/stex/")
+                            ("Makefile.template" "lib/stex/"))
+         #:phases
+         #~(modify-phases %standard-phases
+             (add-before 'install 'patch-sources
+               (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+                 (define scheme
+                   (false-if-exception
+                    (search-input-file inputs "/bin/scheme")))
+                 (when scheme
+                   (setenv "Scheme" scheme))
+                 (substitute* '("Makefile.template"
+                                "doc/Makefile")
+                   (("STEXLIB=[^\n]*")
+                    (string-append "STEXLIB=" #$output "/lib/stex"))
+                   (("Scheme=[^\n]*")
+                    (string-append "Scheme=" (or scheme "scheme"))))
+                 (substitute* '("Mf-stex"
+                                "math/Makefile")
+                   (("/bin/rm")
+                    "rm"))
+                 (substitute* "Mf-stex"
+                   (("SHELL=bash")
+                    ;; avoid Solaris workaround
+                    "#SHELL=bash"))))
+             (add-after 'install 'maybe-compile
+               (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+                 (cond
+                  ((getenv "Scheme")
+                   => (lambda (scheme)
+                        (define makefile
+                          (string-append (getcwd) "/Makefile"))
+                        (define machine
+                          #$(and=> (nix-system->chez-machine)
+                                   chez-machine->threaded))
+                        (with-directory-excursion
+                            (search-input-directory outputs "/lib/stex")
+                          (invoke "make"
+                                  "-f" makefile
+                                  (string-append "Scheme=" scheme))
+                          (for-each delete-file
+                                    (find-files machine "\\.")))))
+                  (else
+                   ;; for bootstrapping, can run without ahead-of-time
+                   ;; compilation
+                   (format #t "not compiling~%")))))
+             (add-after 'maybe-compile 'maybe-make-docs
+               (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+                 (cond
+                  ((assoc-ref outputs "doc")
+                   => (lambda (doc-prefix)
+                        (define doc-dir
+                          (string-append doc-prefix "/share/doc/stex"))
+                        ;; the Makefile is referenced in the documentation
+                        (copy-recursively "doc" doc-dir)
+                        (install-file "ReadMe" doc-dir)
+                        (with-directory-excursion "doc"
+                          (invoke "make")
+                          (install-file "stex.html" doc-dir)
+                          (install-file "stex.pdf" doc-dir))))
+                  (else
+                   (format #t "not making docs~%"))))))))
+       (home-page "https://github.com/dybvig/stex")
+       (synopsis "LaTeX with embeded Scheme code and HTML generation")
+       (description "The @code{stex} package extends LaTeX with a handful of
+commands for including Scheme code (or pretty much any other kind of code, as
+long as you don't plan to use the Scheme-specific transcript support) in a
+document.  It provides the programs @code{scheme-prep} and @code{html-prep} to
+convert @code{stex} documents to LaTeX and HTML, respectively, plus makefile
+templates, style files, and other resources.  The @code{stex} system is used
+to typeset @cite{The Scheme Programming Language} and the @cite{Chez Scheme
+User's Guix}, among other documents.")
+       (license expat)))))
+
+(define-public stex
+  (package/inherit stex-bootstrap
+    (inputs (modify-inputs (package-inputs stex-bootstrap)
+              (prepend chez-scheme)))
+    (outputs '("out" "doc"))
+    (properties '())))
+
+(define-public chez-nanopass-bootstrap
+  (hidden-package
+   (package
+     (name "chez-nanopass")
+     (version "1.9.2")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/nanopass/nanopass-framework-scheme")
+              (commit (string-append "v" version))))
+        (sha256
+         (base32 "16vjsik9rrzbabbhbxbaha51ppi3f9n8rk59pc6zdyffs0vziy4i"))
+        (file-name (git-file-name "nanopass-framework-scheme" version))
+        (snippet
+         #~(begin
+             (use-modules (guix build utils))
+             (when (file-exists? "doc/user-guide.pdf")
+               (delete-file "doc/user-guide.pdf"))
+             (substitute* "doc/Makefile"
+               (("include ~/stex/Mf-stex")
+                "include $(STEXLIB)/Mf-stex"))))))
+     (build-system copy-build-system)
+     (arguments
+      (list #:install-plan
+            #~`(("nanopass.ss" "lib/chez-scheme/")
+                ("nanopass" "lib/chez-scheme/"))))
+     (home-page "https://nanopass.org")
+     (synopsis "DSL for compiler development")
+     (description "The Nanopass framework is an embedded domain-specific
+language for writing compilers composed of several simple passes that
+operate over well-defined intermediate languages.  The goal of this
+organization is both to simplify the understanding of each pass, because it
+is responsible for a single task, and to simplify the addition of new passes
+anywhere in the compiler.  Nanopass reduces the boilerplate required to
+create compilers, making them easier to understand and maintain.")
+     (license expat))))
+
+(define-public chez-nanopass
+  (package/inherit chez-nanopass-bootstrap
+    (properties '())
+    ;; TODO: cross-compilation
+    (native-inputs (list chez-scheme stex))
+    (arguments
+     (substitute-keyword-arguments (package-arguments chez-nanopass-bootstrap)
+       ((#:install-plan base-plan)
+        #~`(("nanopass.so" "lib/chez-scheme/")
+            ("doc/user-guide.pdf" #$(string-append
+                                     "share/doc/"
+                                     (package-name this-package)
+                                     "-"
+                                     (package-version this-package)
+                                     "/"))
+            ,@#$base-plan))
+       ((#:phases base-phases #~%standard-phases)
+        #~(modify-phases #$base-phases
+            (add-before 'install 'compile-and-test
+              (lambda args
+                (invoke "scheme"
+                        "--compile-imported-libraries"
+                        "--program" "test-all.ss")))
+            (add-after 'compile-and-test 'build-doc
+              (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                (with-directory-excursion "doc"
+                  (invoke "make"
+                          (string-append "Scheme="
+                                         (search-input-file
+                                          (or native-inputs inputs)
+                                          "/bin/scheme"))
+                          (string-append "STEXLIB="
+                                         (search-input-directory
+                                          (or native-inputs inputs)
+                                          "/lib/stex"))))))))))))
+
+;;
+;; Other Chez packages:
+;;
+
+;; Help function for Chez Scheme to add the current path to
+;; CHEZSCHEMELIBDIRS.
+(define chez-configure
+  #~(lambda _
+      (let ((chez-env (getenv "CHEZSCHEMELIBDIRS")))
+        (setenv "CHEZSCHEMELIBDIRS"
+                (if chez-env
+                    (string-append ".:" chez-env)
+                    ".")))))
+
+;; Help function to define make flags for some Chez Scheme custom make
+;; files.
+(define (chez-make-flags name version)
+  #~(let ((out #$output))
+      (list
+       ;; Set 'schemedir' so that libraries are installed in
+       ;; 'lib/chez-scheme' like Chez's 'native-search-paths' expects.
+       (string-append "schemedir=" out "/lib/chez-scheme")
+       (string-append "PREFIX=" out)
+       (string-append "DOCDIR=" out "/share/doc/" #$name "-" #$version))))
+
 (define-public chez-srfi
   (package
     (name "chez-srfi")
@@ -275,15 +766,13 @@ and 32-bit PowerPC architectures.")
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (arguments
-     `(#:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list (string-append "PREFIX=" out)
-                            "CHEZ=chez-scheme --libdirs ./"
-                            (string-append "chezversion=" ,(package-version chez-scheme))))
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
+     (list #:make-flags (chez-make-flags name version)
+           #:test-target "test"
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          #$chez-configure))))
     (home-page "https://github.com/fedeinthemix/chez-srfi")
     (synopsis "SRFI libraries for Chez Scheme")
     (description
@@ -308,42 +797,48 @@ and 32-bit PowerPC architectures.")
           (base32 "1dq25qygyncbfq4kwwqqgyyakfqjwhp5q23vrf3bff1p66nyfl3b"))))
       (build-system gnu-build-system)
       (native-inputs
-       `(("chez-scheme" ,chez-scheme)
-         ("ghostscript" ,ghostscript)
-         ("texlive" ,(texlive-updmap.cfg (list texlive-oberdiek
-                                          texlive-epsf
-                                          texlive-metapost
-                                          texlive-charter
-                                          texlive-pdftex
-                                          texlive-context
-                                          texlive-cm
-                                          texlive-tex-plain)))))
+       (list (chez-scheme-for-system)
+             ghostscript
+             ;; FIXME: This package fails to build with the error:
+             ;;     mktexpk: don't know how to create bitmap font for bchr8r
+             ;; Replacing the following with `texlive` fixes it.
+             ;; What is missing?
+             (texlive-updmap.cfg (list texlive-oberdiek
+                                       texlive-epsf
+                                       texlive-metapost
+                                       texlive-charter
+                                       texlive-pdftex
+                                       texlive-context
+                                       texlive-cm
+                                       texlive-tex-plain))))
       (arguments
-       `(#:make-flags (list (string-append "PREFIX=" %output)
-                            (string-append "DOCDIR=" %output "/share/doc/"
-                                           ,name "-" ,version)
-                            (string-append "LIBDIR=" %output "/lib/chezweb")
-                            (string-append "TEXDIR=" %output "/share/texmf-local"))
-                      #:tests? #f        ; no tests
-                      #:phases
-                      (modify-phases %standard-phases
-                        ;; This package has a custom "bootstrap" script that
-                        ;; is meant to be run from the Makefile.
-                        (delete 'bootstrap)
-                        (replace 'configure
-                          (lambda* _
-                            (copy-file "config.mk.template" "config.mk")
-                            (substitute* "tangleit"
-                              (("\\./cheztangle\\.ss" all)
-                               (string-append "chez-scheme --program " all)))
-                            (substitute* "weaveit"
-                              (("mpost chezweb\\.mp")
-                               "mpost --tex=tex chezweb.mp")
-                              (("\\./chezweave" all)
-                               (string-append "chez-scheme --program " all)))
-                            (substitute* "installit"
-                              (("-g \\$GROUP -o \\$OWNER") ""))
-                            #t)))))
+       (list
+        #:make-flags
+        #~(list (string-append "PREFIX=" #$output)
+                (string-append "DOCDIR=" #$output "/share/doc/"
+                               #$name "-" #$version)
+                ;; lib/chez-scheme/chezweb ???
+                (string-append "LIBDIR=" #$output "/lib/chezweb")
+                (string-append "TEXDIR=" #$output "/share/texmf-local"))
+        #:tests? #f ; no tests
+        #:phases
+        #~(modify-phases %standard-phases
+            ;; This package has a custom "bootstrap" script that
+            ;; is meant to be run from the Makefile.
+            (delete 'bootstrap)
+            (replace 'configure
+              (lambda* _
+                (copy-file "config.mk.template" "config.mk")
+                (substitute* "tangleit"
+                  (("\\./cheztangle\\.ss" all)
+                   (string-append "scheme --program " all)))
+                (substitute* "weaveit"
+                  (("mpost chezweb\\.mp")
+                   "mpost --tex=tex chezweb.mp")
+                  (("\\./chezweave" all)
+                   (string-append "scheme --program " all)))
+                (substitute* "installit"
+                  (("-g \\$GROUP -o \\$OWNER") "")))))))
       (home-page "https://github.com/arcfide/ChezWEB")
       (synopsis "Hygienic Literate Programming for Chez Scheme")
       (description "ChezWEB is a system for doing Knuthian style WEB
@@ -367,95 +862,74 @@ programming in Scheme.")
           (base32 "1n5fbwwz51fdzvjackgmnsgh363g9inyxv7kmzi0469cwavwcx5m"))))
       (build-system gnu-build-system)
       (native-inputs
-       `(("chez-scheme" ,chez-scheme)
-         ("chez-web" ,chez-web)
-         ("texlive" ,(texlive-updmap.cfg (list texlive-pdftex)))))
+       (list (chez-scheme-for-system)
+             chez-web
+             (texlive-updmap.cfg (list texlive-pdftex))))
       (arguments
-       `(#:tests? #f              ; no tests
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             (lambda* (#:key outputs inputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (chez-web (assoc-ref inputs "chez-web"))
-                      (chez (assoc-ref inputs "chez-scheme"))
-                      (chez-h (dirname (car (find-files chez "scheme\\.h")))))
-                 (substitute* "Makefile"
-                   (("(SCHEMEH=).*$" all var)
-                    (string-append var chez-h)))
-                 #t)))
-           (add-before 'build 'tangle
-             (lambda* (#:key inputs #:allow-other-keys)
-               (setenv "TEXINPUTS"
-                       (string-append
-                        (getcwd) ":"
-                        (assoc-ref inputs "chez-web") "/share/texmf-local/tex/generic:"
-                        ":"))
-               ;; just using "make" tries to build the .c files before
-               ;; they are created.
-               (and (invoke "make" "sockets")
-                    (invoke "make"))))
-           (replace 'build
-             (lambda* (#:key outputs inputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (chez-site (string-append out "/lib/csv"
-                                                ,(package-version chez-scheme)
-                                                "-site/arcfide")))
-                 ;; make sure Chez Scheme can find the shared libraries.
-                 (substitute* "sockets.ss"
-                   (("(load-shared-object) \"(socket-ffi-values\\.[sd][oy].*)\""
-                     all cmd so)
-                    (string-append cmd " \"" chez-site "/" so "\""))
-                   (("sockets-stub\\.[sd][oy].*" all)
-                    (string-append chez-site "/" all)))
-                 ;; to compile chez-sockets, the .so files must be
-                 ;; installed (because of the absolute path we
-                 ;; inserted above).
-                 (for-each (lambda (f d) (install-file f d))
-                           '("socket-ffi-values.so" "sockets-stub.so")
-                           (list chez-site chez-site))
-                 (zero? (system "echo '(compile-file \"sockets.sls\")' | scheme -q")))))
-           (replace 'install
-             (lambda* (#:key outputs inputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (lib (string-append out "/lib/chez-sockets"))
-                      (doc (string-append out "/share/doc/" ,name "-" ,version))
-                      (chez-site (string-append out "/lib/csv"
-                                                ,(package-version chez-scheme)
-                                                "-site/arcfide")))
-                 (for-each (lambda (f d) (install-file f d))
-                           '("sockets.pdf" "sockets.so")
-                           (list doc chez-site))
-                 #t))))))
+       (list
+        #:tests? #f ; no tests
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'configure
+              (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                (let* ((scheme (search-input-file (or native-inputs inputs)
+                                                  "/bin/scheme"))
+                       (lib (string-append (dirname scheme) "/../lib"))
+                       (header-file (car (find-files lib "scheme\\.h")))
+                       (include-dir (dirname header-file)))
+                  (substitute* "Makefile"
+                    (("(SCHEMEH=).*$" _ var)
+                     (string-append var include-dir))))))
+            (add-before 'build 'tangle
+              (lambda* (#:key inputs #:allow-other-keys)
+                (setenv "TEXINPUTS"
+                        (string-append
+                         (getcwd) ":"
+                         (assoc-ref inputs "chez-web")
+                         "/share/texmf-local/tex/generic:"
+                         ":"))
+                ;; just using "make" tries to build the .c files before
+                ;; they are created.
+                (and (invoke "make" "sockets")
+                     (invoke "make"))))
+            (replace 'build
+              (lambda args
+                (let ((chez-site (string-append #$output
+                                                "/lib/chez-scheme/arcfide")))
+                  ;; make sure Chez Scheme can find the shared libraries.
+                  (substitute* "sockets.ss"
+                    (("(object \")(socket-ffi-values\\.[sd][oy][^\"]*)(\")"
+                      _ pre file post)
+                     (string-append pre chez-site "/" file post))
+                    (("(\")(sockets-stub\\.[sd][oy][^\"]*)(\")"
+                      _ pre file post)
+                     (string-append pre chez-site "/" file post)))
+                  ;; to compile chez-sockets, the .so files must be
+                  ;; installed (because of the absolute path we
+                  ;; inserted above).
+                  (for-each (lambda (f)
+                              (install-file f chez-site))
+                            '("socket-ffi-values.so"
+                              "sockets-stub.so"))
+                  (invoke "bash"
+                          "-c"
+                          (format #f "echo '~s' | scheme -q"
+                                  '(compile-file "sockets.sls"))))))
+            (replace 'install
+              (lambda args
+                (install-file "sockets.so"
+                              (string-append #$output
+                                             "/lib/chez-scheme/arcfide"))
+                (install-file "sockets.pdf"
+                              (string-append #$output
+                                             "/share/doc/"
+                                             #$name "-" #$version)))))))
       (home-page "https://github.com/arcfide/chez-sockets")
       (synopsis "Extensible sockets library for Chez Scheme")
       (description "Chez-sockets is an extensible sockets library for
 Chez Scheme.")
       (license expat))))
 
-;; Help function for Chez Scheme to add the current path to
-;; CHEZSCHEMELIBDIRS.
-(define chez-configure
-  '(lambda _
-     (let ((chez-env (getenv "CHEZSCHEMELIBDIRS")))
-       (setenv "CHEZSCHEMELIBDIRS"
-               (if chez-env
-                   (string-append ".:" chez-env)
-                   "."))
-       #t)))
-
-;; Help function to define make flags for some Chez Scheme custom make
-;; files.
-(define (chez-make-flags name version)
-  `(let ((out (assoc-ref %outputs "out")))
-     (list
-      ;; Set 'chezversion' so that libraries are installed in
-      ;; 'lib/csvX.Y.Z-site' like Chez's 'native-search-paths' expects.
-      (string-append "chezversion=" ,(package-version chez-scheme))
-      (string-append "PREFIX=" out)
-      (string-append "DOCDIR=" out "/share/doc/"
-                     ,name "-" ,version))))
-
 (define-public chez-matchable
   (package
     (name "chez-matchable")
@@ -474,12 +948,13 @@ Chez Scheme.")
     (inputs
      (list chez-srfi)) ; for tests
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (arguments
-     `(#:make-flags ,(chez-make-flags name version)
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (replace 'configure ,chez-configure))))
+     (list #:make-flags (chez-make-flags name version)
+           #:test-target "test"
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          #$chez-configure))))
     (synopsis "Portable hygienic pattern matcher for Scheme")
     (description "This package provides a superset of the popular Scheme
 @code{match} package by Andrew Wright, written in fully portable
@@ -505,12 +980,13 @@ Chez Scheme.")
     (propagated-inputs
      (list chez-srfi)) ; for irregex-utils
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (arguments
-     `(#:make-flags ,(chez-make-flags name version)
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (replace 'configure ,chez-configure))))
+     (list #:make-flags (chez-make-flags name version)
+           #:test-target "test"
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          #$chez-configure))))
     (home-page "https://github.com/fedeinthemix/chez-irregex")
     (synopsis "Portable regular expression library for Scheme")
     (description "This package provides a portable and efficient
@@ -535,19 +1011,20 @@ syntax, with various aliases for commonly used patterns.")
     (propagated-inputs
      (list chez-srfi)) ; for irregex-utils
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (arguments
-     `(#:make-flags ,(chez-make-flags name version)
-       #:test-target "chez-check"
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure ,chez-configure)
-         (replace 'build
-           (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (apply invoke "make" "chez-build" make-flags)))
-         (replace 'install
-           (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (apply invoke "make" "chez-install" make-flags))))))
+     (list #:make-flags (chez-make-flags name version)
+           #:test-target "chez-check"
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'configure
+                 #$chez-configure)
+               (replace 'build
+                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                   (apply invoke "make" "chez-build" make-flags)))
+               (replace 'install
+                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                   (apply invoke "make" "chez-install" make-flags))))))
     (home-page "http://synthcode.com/scheme/fmt")
     (synopsis "Combinator formatting library for Chez Scheme")
     (description "This package provides a library of procedures for
@@ -570,17 +1047,40 @@ strings.")
              (commit (string-append "v" version))))
        (sha256
         (base32 "0c7i3b6i90xk96nmxn1pc9272a4yal4v40dm1a4ybdi87x53zkk0"))
-       (file-name (git-file-name name version))))
+       (file-name (git-file-name name version))
+       (snippet
+        ;; Workaround for chez-scheme-for-racket.
+        ;; See: https://github.com/racket/racket/issues/4151
+        #~(begin
+            (use-modules (guix build utils))
+            (substitute* "mit/core.sls"
+              (("[(]import ")
+               "(import (only (chezscheme) import)\n")
+              (("[(]define string->uninterned-symbol gensym[)]")
+               (format #f "~s"
+                       '(begin
+                          (import (only (chezscheme)
+                                        meta-cond
+                                        library-exports))
+                          (meta-cond
+                           ((memq 'string->uninterned-symbol
+                                  (library-exports '(chezscheme)))
+                            (import (only (chezscheme)
+                                          string->uninterned-symbol)))
+                           (else
+                            (define string->uninterned-symbol
+                              gensym)))))))))))
     (build-system gnu-build-system)
     (inputs
      (list chez-srfi))       ; for tests
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (arguments
-     `(#:make-flags ,(chez-make-flags name version)
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (replace 'configure ,chez-configure))))
+     (list #:make-flags (chez-make-flags name version)
+           #:test-target "test"
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          #$chez-configure))))
     (synopsis "MIT/GNU Scheme compatibility library for Chez Scheme")
     (description "This package provides a set of MIT/GNU Scheme compatibility
 libraries for Chez Scheme.  The main goal was to provide the functionality
@@ -605,50 +1105,48 @@ required to port the program @code{Scmutils} to Chez Scheme.")
     (inputs
      (list chez-srfi))       ; for tests
     (native-inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (propagated-inputs
      (list chez-mit chez-srfi))
     (arguments
-     `(#:make-flags ,(chez-make-flags name version)
-       #:tests? #f                      ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure ,chez-configure)
-         ;; Since the documentation is lacking, we install the source
-         ;; code.  For things to work correctly we have to replace
-         ;; relative paths by absolute ones in 'include' forms.  This
-         ;; in turn requires us to compile the files in the final
-         ;; destination.
-         (delete 'build)
-         (add-after 'install 'install-src
-           (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (apply invoke "make" "install-src" make-flags)))
-         (add-after 'install-src 'absolute-path-in-scm-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each (lambda (file)
-                           (substitute* file
-                             (("include +\"\\./scmutils")
-                              (string-append "include \"" (dirname file)))))
-                         (find-files out "\\.sls"))
-               (for-each (lambda (file)
-                           (substitute* file
-                             (("include +\"\\./scmutils/simplify")
-                              (string-append "include \"" (dirname file)))))
-                         (find-files out "fbe-syntax\\.scm"))
-               #t)))
-         (add-after 'absolute-path-in-scm-files 'build
-           (lambda* (#:key outputs (make-flags '()) #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (mk-file (car (find-files out "Makefile"))))
-               (with-directory-excursion (dirname mk-file)
-                 (apply invoke "make" "build" make-flags)))))
-         (add-after 'build 'clean-up
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out")))
-               (for-each delete-file
-                         (find-files out "Makefile|compile-all\\.ss"))
-               #t))))))
+     (list
+      #:make-flags (chez-make-flags name version)
+      #:tests? #f  ; no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            #$chez-configure)
+          ;; Since the documentation is lacking, we install the source
+          ;; code.  For things to work correctly we have to replace
+          ;; relative paths by absolute ones in 'include' forms.  This
+          ;; in turn requires us to compile the files in the final
+          ;; destination.
+          (delete 'build)
+          (add-after 'install 'install-src
+            (lambda* (#:key (make-flags '()) #:allow-other-keys)
+              (apply invoke "make" "install-src" make-flags)))
+          (add-after 'install-src 'absolute-path-in-scm-files
+            (lambda* (#:key #:allow-other-keys)
+              (for-each (lambda (file)
+                          (substitute* file
+                            (("include +\"\\./scmutils")
+                             (string-append "include \"" (dirname file)))))
+                        (find-files #$output "\\.sls"))
+              (for-each (lambda (file)
+                          (substitute* file
+                            (("include +\"\\./scmutils/simplify")
+                             (string-append "include \"" (dirname file)))))
+                        (find-files #$output "fbe-syntax\\.scm"))))
+          (add-after 'absolute-path-in-scm-files 'build
+            (lambda* (#:key (make-flags '()) #:allow-other-keys)
+              (let ((mk-file (car (find-files #$output "Makefile"))))
+                (with-directory-excursion (dirname mk-file)
+                  (apply invoke "make" "build" make-flags)))))
+          (add-after 'build 'clean-up
+            (lambda args
+              (for-each delete-file
+                        (find-files #$output
+                                    "Makefile|compile-all\\.ss")))))))
     (synopsis "Port of MIT/GNU Scheme Scmutils to Chez Scheme")
     (description "This package provides a port of the MIT/GNU Scheme
 Scmutils program to Chez Scheme.  The port consists of a set of
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 795e3e7f9b..7ef1e5ac1b 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -310,7 +310,7 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "98.0.4758.80")
+(define %chromium-version "98.0.4758.102")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/90.0.4430.85-1")
 
@@ -322,7 +322,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "0a8y9yz6xyh025gk3dr0ndrdwmrslhd1ph2f8nivmqk61j7c2g8h"))))
+      "0baz90fnzpldw0wwibhmh4pmki7vlpci9b9vvifa0rj5cwckl8a0"))))
 
 (define* (debian-patch name hash #:optional (revision %debian-revision))
   (origin
@@ -451,7 +451,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0wa1jhsw7qrym4x8wxmdvdvbilb8jdv0mizzib2342l61zi6cwn8"))
+                "0gpk13k8pfk65vinlmkg3p7mm0qb8z35psajkxzx0v3n2bllfns1"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 76e879b47b..e8b47fbeab 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1265,7 +1265,7 @@ ac_cv_c_float_format='IEEE (little-endian)'
                (install-file "gawk" bin)
                (symlink "gawk" (string-append bin "/awk"))))))))))
 
-(define-public glibc-mesboot0
+(define glibc-mesboot0
   ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build
   ;; using gcc-2.95.3.  Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer
   ;; gcc.
@@ -1359,7 +1359,7 @@ ac_cv_c_float_format='IEEE (little-endian)'
                                      "SHELL = " shell "
          BASH = ")))))))))))
 
-(define-public gcc-mesboot0
+(define gcc-mesboot0
   (package
     (inherit gcc-core-mesboot0)
     (name "gcc-mesboot0")
@@ -1403,63 +1403,6 @@ ac_cv_c_float_format='IEEE (little-endian)'
               ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include")
               "LANGUAGES=c")))))))
 
-(define-public gcc-2.95-wrapper
-  ;; We need this so gcc-mesboot0 can be used to create shared binaries that
-  ;; have the correct interpreter, otherwise configuring gcc-mesboot using
-  ;; --enable-shared will fail.
-  (package
-    (inherit gcc-mesboot0)
-    (name "gcc-wrapper")
-    (source #f)
-    (inputs '())
-    (native-inputs
-     `(("bash" ,bash-minimal)
-       ("coreutils" ,coreutils)
-       ("libc" ,glibc-2.2.5)
-       ("gcc" ,gcc-mesboot0)))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'unpack)
-         (delete 'configure)
-         (delete 'install)
-         (replace 'build
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bash (assoc-ref inputs "bash"))
-                    (libc (assoc-ref inputs "libc"))
-                    (gcc (assoc-ref inputs "gcc"))
-                    (bin (string-append out "/bin")))
-               (mkdir-p bin)
-               (for-each
-                (lambda (program)
-                  (let ((wrapper (string-append bin "/" program)))
-                    (with-output-to-file wrapper
-                      (lambda _
-                        (display (string-append "#! " bash "/bin/bash
-exec " gcc "/bin/" program
-" -Wl,--dynamic-linker"
-;; also for x86_64-linux, we are still on i686-linux
-" -Wl," libc ,(glibc-dynamic-linker "i686-linux")
-" -Wl,--rpath"
-" -Wl," libc "/lib"
-" \"$@\"
-"))
-                        (chmod wrapper #o555)))))
-                '("cpp"
-                  "gcc"
-                  "g++"
-                  "i686-unknown-linux-gnu-cpp"
-                  "i686-unknown-linux-gnu-gcc"
-                  "i686-unknown-linux-gnu-g++")))))
-         (replace 'check
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (program (string-append bin "/gcc")))
-               (invoke program "--help")))))))))
-
 (define (%boot-mesboot0-inputs)
   `(("gcc" ,gcc-mesboot0)
     ("kernel-headers" ,%bootstrap-linux-libre-headers)
@@ -2050,7 +1993,7 @@ exec " gcc "/bin/" program
            (lambda _
              (invoke "./hello"))))))))
 
-(define-public binutils-mesboot
+(define binutils-mesboot
   (package
     (inherit binutils)
     (name "binutils-mesboot")
@@ -3636,9 +3579,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 (define (%boot3-inputs)
   ;; 4th stage inputs.
   `(("gcc" ,gcc-final)
-    ,@(if (target-riscv64?)
-        `(("gcc:lib" ,gcc-final "lib"))
-        '())
     ("ld-wrapper" ,ld-wrapper-boot3)
     ,@(alist-delete "gcc" (%boot2-inputs))))
 
@@ -3794,19 +3734,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
       ("libc:static" ,glibc-final "static")
       ("locales" ,glibc-utf8-locales-final))))
 
-(define-public %final-inputs-riscv64
-  ;; This is similar to the added (list gcc "lib") elsewhere in this file, but
-  ;; due to how (%current-system) is re-defined when performing builds with the
-  ;; '--system' flag, %final-inputs is too early in the evaulation pipeline to
-  ;; correctly identify the system for which a derivation will be built. Thus,
-  ;; since (%current-system) is re-determined by (guix build-system gnu) after
-  ;; loading %final-inputs but before taking into account the '--system' flag,
-  ;; the test for (target-riscv64?) needs to be in (guix build-system gnu),
-  ;; with %final-inputs-riscv64 already available at the same time that
-  ;; %final-inputs is available.
-  `(("gcc:lib" ,gcc-final "lib")
-    ,@%final-inputs))
-
 (define-public canonical-package
   (let ((name->package (fold (lambda (input result)
                                (match input
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 8185a6157e..3edaecd951 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -813,8 +813,11 @@ decompression of some loosely related file formats used by Microsoft.")
     (build-system gnu-build-system)
     (outputs (list "out" "static"))
     (native-inputs
-     (list ;; For tests.
-           python valgrind))
+     (append
+       (list python)    ;; For tests.
+       (if (member (%current-system) (package-supported-systems valgrind))
+         (list valgrind)
+         '())))
     (arguments
      `(;; Not designed for parallel testing.
        ;; See https://github.com/lz4/lz4/issues/957#issuecomment-737419821
@@ -873,7 +876,7 @@ time for compression ratio.")
              "LZO_SUPPORT=1"
              "LZ4_SUPPORT=1"
              "ZSTD_SUPPORT=1"
-             (string-append "INSTALL_DIR=" %output "/bin"))
+             (string-append "INSTALL_DIR=" (assoc-ref %outputs "out") "/bin"))
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
@@ -2093,7 +2096,7 @@ single-member files which can't be decompressed in parallel.")
    (build-system cmake-build-system)
    (arguments
     `(#:tests? #f))
-   (inputs (list boost libiconv xz))
+   (inputs (list boost xz))
    (native-inputs (list pkg-config))
    (home-page "https://constexpr.org/innoextract/")
    (synopsis "Tool for extracting Inno Setup installers")
diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm
index 1cf5276009..16feae4f2f 100644
--- a/gnu/packages/compton.scm
+++ b/gnu/packages/compton.scm
@@ -111,7 +111,7 @@ performance).
 (define-public picom
   (package
     (name "picom")
-    (version "9")
+    (version "9.1")
     (source
      (origin
        (method git-fetch)
@@ -120,7 +120,7 @@ performance).
              (commit (string-append "v" version))))
        (sha256
         (base32
-         "0s3rf0lmkhhprx6vd5wsz1n0n55nprq6l1245pj525hrwxc1yvna"))
+         "0q7j6kh9k7i201cwhnfc3bmp0hqrx7ngk3v4qsp8k0qfy1n3ma8n"))
        (file-name (string-append "picom-" version))))
     (build-system meson-build-system)
     (inputs
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 86138531c0..bb7f5ab95a 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018, 2021 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019, 2020, 2022 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
 ;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
@@ -25,6 +25,10 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
+;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 muradm <mail@muradm.net>
+;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
+;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -50,6 +54,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix modules)
   #:use-module (guix gexp)
@@ -171,6 +176,10 @@ development effort.")
        (sha256
         (base32 "18230bg4rq9pmm5f8f65j444jpq56rld4fhmpham8q3vr1c1bdjh"))))
     (build-system cmake-build-system)
+    (arguments
+     (list
+       #:configure-flags
+       #~(list "-DRANGES_NATIVE=OFF")))
     (native-inputs
      (list doxygen gcc-9 perl))
     (inputs
@@ -222,6 +231,53 @@ use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
     (home-page "https://github.com/microsoft/GSL/")
     (license license:expat)))
 
+(define-public c2ffi
+  (package
+    (name "c2ffi")
+    ;; As per the c2ffi README: the first three elements are encoding the
+    ;; required Clang/LLVM version, and the last one is the c2ffi revision.
+    (version "12.0.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rpav/c2ffi")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qq8dfismd20d9kfxpfvwz07v9mfvd0y7p5r3c92mk2pm4xnmzfy"))
+       (modules '((guix build utils)))
+       (snippet
+        '(substitute* "CMakeLists.txt"
+           ;; Guix seems to be packaging LLVM libs separately thus -lLLVM
+           ;; won't work, every used library must be specified explicitly.
+           (("c2ffi PUBLIC clang-cpp LLVM")
+            "c2ffi PUBLIC clang-cpp LLVMCore LLVMSupport LLVMMCParser \
+LLVMOption LLVMBitReader LLVMProfileData")))))
+    (build-system cmake-build-system)
+    (arguments
+     '(;; If LLVM was built without RTTI, we need to also be built without
+       ;; it.  See: https://stackoverflow.com/q/11904519
+       #:configure-flags '("-DCMAKE_CXX_FLAGS=-fno-rtti")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "./bin/c2ffi" "--help")))))))
+    (native-inputs
+     (list clang-12)) ; CMakeLists.txt invokes `clang -print-resource-dir`
+    (inputs
+     (list clang-12)) ; Compiled with gcc, but links against libclang-cpp.so
+    (home-page "https://github.com/rpav/c2ffi")
+    (synopsis "Clang-based FFI wrapper generator")
+    (description
+     "@code{c2ffi} is a tool for extracting definitions from C, C++, and
+Objective C headers for use with foreign function call interfaces.  It uses
+the @code{Clang/LLVM} infrastructure to extract the data, and emits it in
+various formats, including @code{json}.")
+    (license license:gpl2+)))
+
 (define-public libzen
   (package
     (name "libzen")
@@ -350,7 +406,7 @@ combination of these streams.")
 (define-public xsimd
   (package
     (name "xsimd")
-    (version "7.5.0")
+    (version "8.0.5")
     (source
      (origin
        (method git-fetch)
@@ -358,7 +414,7 @@ combination of these streams.")
              (url "https://github.com/QuantStack/xsimd")
              (commit version)))
        (sha256
-        (base32 "0c9pq5vz43j99z83w3b9qylfi66mn749k1afpv5cwfxggbxvy63f"))
+        (base32 "0fph1gzrj13knfkl3fvg098ccvqkbzs0jb8n323m7pnxajpzhzij"))
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
@@ -566,7 +622,7 @@ intuitive syntax and trivial integration.")
 (define-public xtl
   (package
     (name "xtl")
-    (version "0.6.23")
+    (version "0.7.4")
     (source (origin
               (method git-fetch)
               (uri
@@ -575,20 +631,19 @@ intuitive syntax and trivial integration.")
                 (commit version)))
               (sha256
                (base32
-                "1kd9zl4h6nrsg29hq13vwp4zhfj8sa90vj40726lpw6vxz48k4di"))
+                "134pgvmf9cx5dxs0m0m3qhp3m3r1gl86ic3xax21zc4sdj8sdq46"))
               (file-name (git-file-name name version))))
     (native-inputs
-     (list googletest json-modern-cxx))
+     (list doctest googletest json-modern-cxx))
     (arguments
-     `(#:configure-flags
+     '(#:configure-flags
        '("-DBUILD_TESTS=ON")
        #:phases
        (modify-phases %standard-phases
          (replace 'check
            (lambda* _
              (with-directory-excursion "test"
-               (invoke "./test_xtl")
-               #t))))))
+               (invoke "./test_xtl")))))))
     (home-page "https://github.com/QuantStack/xtl")
     (build-system cmake-build-system)
     (synopsis "C++ template library providing some basic tools")
@@ -1073,6 +1128,39 @@ of C++14 components that complements @code{std} and Boost.")
     (supported-systems '("aarch64-linux" "x86_64-linux"))
     (license license:asl2.0)))
 
+(define-public poco
+  (package
+    (name "poco")
+    (version "1.11.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pocoproject/poco")
+                    (commit (string-append "poco-" version "-release"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0qkf8vb4qwds6idk9fkw6wjvcdk5k8h77x3gv47l0i4jfl5hwn8b"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DENABLE_TESTS=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-problematic-tests
+            (lambda _
+              (substitute* (list "Foundation/CMakeLists.txt" ; XXX: fails.
+                                 ;; Require network access
+                                 "Net/CMakeLists.txt"
+                                 "MongoDB/CMakeLists.txt"
+                                 "Redis/CMakeLists.txt")
+                (("ENABLE_TESTS") "FALSE")))))))
+    (home-page "https://pocoproject.org/")
+    (synopsis "Portable C++ components")
+    (description "A collection of libraries intended to be useful for building
+network-based applications.")
+    (license license:boost1.0)))
+
 (define-public aws-crt-cpp
   (let* ((commit "b6d311d76b504bf8ace5134d3fca0e672c36c9c3")
          (revision "1"))
@@ -1188,6 +1276,44 @@ provides a number of utilities to make coding with expected cleaner.")
     (home-page "https://tl.tartanllama.xyz/")
     (license license:cc0)))
 
+(define-public atomic-queue
+  (package
+    (name "atomic-queue")
+    (version "1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/max0x7ba/atomic_queue")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ssff73wlvrsk2nma99dmvm0ijyzfr54jk37kxgpb694r7ajc90l"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags '("-Dbenchmarks=false")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (lambda _
+                 (invoke "make" "run_tests")))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (copy-recursively "../source/include/atomic_queue"
+                               (string-append (assoc-ref outputs "out")
+                                              "/include/atomic_queue")))))))
+     (native-inputs
+      (list boost
+            pkg-config))
+    (home-page "https://github.com/max0x7ba/atomic_queue")
+    (synopsis "C++ lockless queue")
+    (description
+     "This package contains a C++11 multiple-producer-multiple-consumer lockless
+queues header library based on circular buffer with @code{std::atomic}.")
+    (license license:expat)))
+
 (define-public magic-enum
   (package
     (name "magic-enum")
@@ -1717,3 +1843,24 @@ concepts (like dates and times), and building blocks for developing
 multi-threaded applications and network applications.")
       (home-page "https://github.com/bloomberg/bde")
       (license license:asl2.0))))
+
+(define-public gulrak-filesystem
+  (package
+    (name "gulrak-filesystem")
+    (version "1.5.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/gulrak/filesystem")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0dx1yvbz5rnisymkqap7z0b06ag9fcs6q6l82vgi8caylhkwsqs7"))))
+    (build-system cmake-build-system)
+    (synopsis "Header only C++ std::filesystem compatible library")
+    (description "This package provides a header-only single-file
+std::filesystem compatible helper library, based on the C++17 and C++20 specs,
+but implemented for C++11, C++14, C++17 or C++20.")
+    (home-page "https://github.com/gulrak/filesystem")
+    (license license:expat)))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 73bbf6defe..23645faa8a 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2018 Sandeep Subramanian <sandeepsubramanian94@gmail.com>
 ;;; Copyright © 2018 Charlie Ritter <chewzeirta@posteo.net>
 ;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
-;;; Copyright © 2018, 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2018, 2020, 2021, 2022 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2018 Laura Lazzati <laura.lazzati.15@gmail.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
@@ -156,6 +156,25 @@ can limit either their total size or the age of the oldest object (or both),
 automatically pruning objects to maintain the constraints.")
     (license license:expat)))
 
+(define-public r-collections
+  (package
+    (name "r-collections")
+    (version "0.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "collections" version))
+       (sha256
+        (base32 "053ig88pva78wxxwya3v7cz853k563dkpgxrf2xvd0l0d9fanxmz"))))
+    (properties `((upstream-name . "collections")))
+    (build-system r-build-system)
+    (home-page "https://github.com/randy3k/collections")
+    (synopsis "High performance container data types")
+    (description
+     "This package provides high performance container data types such as
+queues, stacks, deques, dicts and ordered dicts.")
+    (license license:expat)))
+
 (define-public r-curry
   (package
     (name "r-curry")
@@ -188,14 +207,14 @@ etc.")
 (define-public r-datawizard
   (package
     (name "r-datawizard")
-    (version "0.2.3")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "datawizard" version))
        (sha256
         (base32
-         "0hcnwz42zy9hp32brga31jwk34bz063myqjp2wfxsqm4sqrkv2rx"))))
+         "1jmrkfymh66d0n4256hamvrbqipfl3bl05q618z4flmq2byifibs"))))
     (properties `((upstream-name . "datawizard")))
     (build-system r-build-system)
     (propagated-inputs
@@ -232,17 +251,36 @@ wrangling backend for the packages in the @code{easystats} ecosystem.")
 visualization of their differences.")
     (license license:gpl2+)))
 
+(define-public r-dirichletreg
+  (package
+    (name "r-dirichletreg")
+    (version "0.7-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "DirichletReg" version))
+       (sha256
+        (base32 "1ql5mwb7zb06y9j6inrlngq7c15as4j17wd8kc71fxs0a2jdj7xi"))))
+    (properties `((upstream-name . "DirichletReg")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-formula r-maxlik))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=DirichletReg")
+    (synopsis "Dirichlet regression")
+    (description "This package implements Dirichlet regression models.")
+    (license license:gpl2+)))
+
 (define-public r-emdist
   (package
     (name "r-emdist")
-    (version "0.3-1")
+    (version "0.3-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emdist" version))
        (sha256
         (base32
-         "1z14pb9z9nkd0f2c8pln4hzkfqa9dk9n3vg8czc8jiv0ndnqi7rq"))))
+         "05mv6xhm15b0mq9kzyiblkb14bdqmjrwl64ghdk66il0w8i7p6nh"))))
     (properties `((upstream-name . "emdist")))
     (build-system r-build-system)
     (home-page "http://www.rforge.net/emd")
@@ -379,14 +417,14 @@ easier.")
 (define-public r-rticles
   (package
     (name "r-rticles")
-    (version "0.22")
+    (version "0.23")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rticles" version))
        (sha256
         (base32
-         "0jgsmqwwqzvsxcbsm9fx0rp724mn3ipi70883bhvm7n9i8mq877m"))))
+         "1ipblw3rmkma22jl2hf1pyfm6l8k31zcmm3swmwii6k0x7khiav1"))))
     (properties `((upstream-name . "rticles")))
     (build-system r-build-system)
     (propagated-inputs
@@ -398,6 +436,28 @@ easier.")
 for authoring journal articles and conference submissions.")
     (license license:gpl3)))
 
+(define-public r-babelwhale
+  (package
+    (name "r-babelwhale")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "babelwhale" version))
+       (sha256
+        (base32 "0ph825dwvr48fhamy1l5564linz7cj7b9sj511as77f1yqycv4a2"))))
+    (properties `((upstream-name . "babelwhale")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-crayon r-dplyr r-dynutils r-processx r-purrr))
+    (home-page "https://github.com/dynverse/babelwhale")
+    (synopsis "Talking to Docker and Singularity containers")
+    (description
+     "This package provides a unified interface to interact with Docker and
+Singularity containers.  You can execute a command inside a container, mount a
+volume or copy a file.")
+    (license license:expat)))
+
 (define-public r-benchmarkmedata
   (package
     (name "r-benchmarkmedata")
@@ -490,14 +550,14 @@ similar rank-based tests for equal probability distributions due to Neuhauser
 (define-public r-v8
   (package
     (name "r-v8")
-    (version "4.0.0")
+    (version "4.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "V8" version))
        (sha256
         (base32
-         "1j5vknhq12kfzda46y7nwiqdzqipzgympqzjq9d8ckr6f6v4qshl"))))
+         "15ylzcxlhkba99cccw5rvhwhg9i4zcax2fhmr03w8g4fdhbd3n89"))))
     (properties `((upstream-name . "V8")))
     (build-system r-build-system)
     (arguments
@@ -554,17 +614,41 @@ SVG (Scalable Vector Graphics) formats.  In addition, it supports literate
 programming packages such as @code{knitr} and @code{rmarkdown}.")
     (license license:expat)))
 
+(define-public r-carrier
+  (package
+    (name "r-carrier")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "carrier" version))
+       (sha256
+        (base32 "0bqnwnnjqjk9q0lxq6kkz9s75ss10lfyyywyyi24m8wppxpw1vqc"))))
+    (properties `((upstream-name . "carrier")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-pryr r-rlang))
+    (home-page "https://github.com/r-lib/carrier")
+    (synopsis "Isolate functions for remote execution")
+    (description
+     "Sending functions to remote processes can be wasteful of resources
+because they carry their environments with them.  With this package, it is
+easy to create functions that are isolated from their environment.  These
+isolated functions, also called crates, print to the console with their total
+size and can be easily tested locally before being sent to a remote.")
+    (license license:gpl3)))
+
 (define-public r-clipr
   (package
     (name "r-clipr")
-    (version "0.7.1")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "clipr" version))
        (sha256
         (base32
-         "1ywa4kipwc2d7na6iiz3wzdah99h6aynnh74yxl3nzl40xxlgbgz"))))
+         "1s9vvv3cxnz8w11gsi8z9ddv9jzib5qf5qqxnwqrrv7vj8cr7hij"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -743,6 +827,30 @@ variables.")
 ")
     (license license:gpl2+)))
 
+(define-public r-lmds
+  (package
+    (name "r-lmds")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "lmds" version))
+       (sha256
+        (base32 "130azb0nc2wwxv0qi8v5s4rd02p9lc92zwn634pv7b8awbw81i65"))))
+    (properties `((upstream-name . "lmds")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-assertthat r-dynutils r-irlba r-matrix))
+    (home-page "https://github.com/dynverse/lmds")
+    (synopsis "Landmark multi-dimensional scaling")
+    (description
+     "This package provides a fast dimensionality reduction method scaleable
+to large numbers of samples.  @dfn{Landmark Multi-Dimensional Scaling} (LMDS)
+is an extension of classical Torgerson MDS, but rather than calculating a
+complete distance matrix between all pairs of samples, only the distances
+between a set of landmarks and the samples are calculated.")
+    (license license:gpl3)))
+
 (define-public r-lmodel2
   (package
     (name "r-lmodel2")
@@ -797,6 +905,32 @@ axis} (SMA), and @dfn{ranged major axis} (RMA).")
 respecting the grammar of its graphics paradigm.")
     (license license:gpl2+)))
 
+(define-public r-ggside
+  (package
+    (name "r-ggside")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "ggside" version))
+              (sha256
+               (base32
+                "1x505zizv7hf65pxp9j5v92c3bchhxh9dsrkk1m55kwqqnsl5nza"))))
+    (properties `((upstream-name . "ggside")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ggplot2 r-glue r-gtable r-rlang r-scales))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=ggside")
+    (synopsis "Side grammar graphics that extends @code{ggplot2}")
+    (description
+     "The grammar of graphics as shown in @code{ggplot2} has provided an
+expressive API for users to build plots.  This package @{ggside} extends
+@code{ggplot2} by allowing users to add graphical information about one of the
+main panel's axis using a familiar @code{ggplot2} style API with tidy data.
+This package is particularly useful for visualizing metadata on a discrete
+axis, or summary graphics on a continuous axis such as a boxplot or a density
+distribution.")
+    (license license:expat)))
+
 (define-public r-gprofiler
   (package
     (name "r-gprofiler")
@@ -982,6 +1116,57 @@ accessibility from hue, saturation, and lightness value scaling using the
 Chroma.js Color Palette Helper.  See @url{https://gka.github.io/palettes}.")
     (license license:cc0)))
 
+(define-public r-plotfunctions
+  (package
+    (name "r-plotfunctions")
+    (version "1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "plotfunctions" version))
+       (sha256
+        (base32 "0asmxw8283fpvl83h478j5nyg59xqifqaa8f2f6l199gvvswhhg2"))))
+    (properties `((upstream-name . "plotfunctions")))
+    (build-system r-build-system)
+    (native-inputs (list r-knitr))
+    (home-page "https://jacolienvanrij.com/tutorials.html")
+    (synopsis "Various functions to facilitate visualization of data and analysis")
+    (description
+     "When analyzing data, plots are a helpful tool for visualizing data and
+interpreting statistical models.  This package provides a set of simple tools
+for building plots incrementally, starting with an empty plot region, and
+adding bars, data points, regression lines, error bars, gradient legends,
+density distributions in the margins, and even pictures.  The package builds
+further on R graphics by simply combining functions and settings in order to
+reduce the amount of code to produce for the user.  As a result, the package
+does not use formula input or special syntax, but can be used in combination
+with default R plot functions.")
+    (license license:gpl2+)))
+
+(define-public r-polychrome
+  (package
+    (name "r-polychrome")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Polychrome" version))
+       (sha256
+        (base32 "044vbylgbqf0ccv4r15nmbw1vz0j95g67i6blw73hvbvbm6w5x4d"))))
+    (properties `((upstream-name . "Polychrome")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-colorspace r-scatterplot3d))
+    (native-inputs
+     (list r-knitr))
+    (home-page "http://oompa.r-forge.r-project.org/")
+    (synopsis "Qualitative palettes with many colors")
+    (description
+     "This package provides tools for creating, viewing, and assessing
+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-ecp
   (package
     (name "r-ecp")
@@ -1030,6 +1215,42 @@ experiment that allows a generic to warn if any arguments passed in @code{...}
 are not used.")
     (license license:gpl3)))
 
+(define-public r-ga
+  (package
+    (name "r-ga")
+    (version "3.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "GA" version))
+       (sha256
+        (base32 "135z03lnbj44jihnk6dii5a684jmc666ncpdwyyi910vl4sccib2"))))
+    (properties `((upstream-name . "GA")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-cli
+           r-crayon
+           r-foreach
+           r-iterators
+           r-rcpp
+           r-rcpparmadillo))
+    (native-inputs
+     (list r-knitr))
+    (home-page "https://luca-scr.github.io/GA/")
+    (synopsis "Genetic algorithms for stochastic optimisation")
+    (description
+     "Flexible general-purpose toolbox implementing genetic algorithms (GAs)
+for stochastic optimisation.  Binary, real-valued, and permutation
+representations are available to optimize a fitness function, i.e., a function
+provided by users depending on their objective function.  Several genetic
+operators are available and can be combined to explore the best settings for
+the current task.  Furthermore, users can define new genetic operators and
+easily evaluate their performances.  Local search using general-purpose
+optimisation algorithms can be applied stochastically to exploit interesting
+regions.  GAs can be run sequentially or in parallel, using an explicit
+master-slave parallelisation or a coarse-grain islands approach.")
+    (license license:gpl2+)))
+
 (define-public r-grr
   (package
     (name "r-grr")
@@ -1154,13 +1375,13 @@ mechanism.")
 (define-public r-ashr
   (package
    (name "r-ashr")
-   (version "2.2-47")
+   (version "2.2-54")
    (source (origin
             (method url-fetch)
             (uri (cran-uri "ashr" version))
             (sha256
              (base32
-              "1rqb5j30ylaf1h4l66x4jxyn5inrvhc42d90qd5mgkxsq0ghdlr4"))))
+              "177xs3apnc6yy6737qqv4z8snf0hkpbghab63hrplbyb9wfssfga"))))
    (properties `((upstream-name . "ashr")))
    (build-system r-build-system)
    (propagated-inputs
@@ -1625,13 +1846,13 @@ particularly easy to create complete web applications using httpuv alone.")
 (define-public r-jsonlite
   (package
     (name "r-jsonlite")
-    (version "1.7.3")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "jsonlite" version))
               (sha256
                (base32
-                "0n65x9ifxjssb000g7psgh9pgl374ax2ni1if9kp3sx56rg0n2kj"))))
+                "0k6dal7gmm19jl5sjsry5gwbnhsbrnn00q3iixig8k6bxgpr463v"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -2569,6 +2790,70 @@ from Wes Anderson movies.")
 in a ggplot2 plot.")
     (license license:gpl3)))
 
+(define-public r-mbess
+  (package
+    (name "r-mbess")
+    (version "4.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "MBESS" version))
+       (sha256
+        (base32 "0qmyvjx2zn5hlzdbz8c94g8l4707swhn7sq9mxkdqiydmflzv0b5"))))
+    (properties `((upstream-name . "MBESS")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-boot r-lavaan r-mass r-mnormt r-nlme r-openmx r-sem r-semtools))
+    (home-page "https://www3.nd.edu/~kkelley/site/MBESS.html")
+    (synopsis "Methods for designing research studies")
+    (description
+     "This package implements methods that are useful in designing research
+studies and analyzing data, with particular emphasis on methods that are
+developed for or used within the behavioral, educational, and social
+sciences (broadly defined).  That being said, many of the methods implemented
+within MBESS are applicable to a wide variety of disciplines.  MBESS has a
+suite of functions for a variety of related topics, such as effect sizes,
+confidence intervals for effect sizes (including standardized effect sizes and
+noncentral effect sizes), sample size planning (from the @dfn{accuracy in
+parameter estimation} (AIPE), power analytic, equivalence, and minimum-risk
+point estimation perspectives), mediation analysis, various properties of
+distributions, and a variety of utility functions.")
+    ;; Either version of the GPL.
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public r-ggtern
+  (package
+    (name "r-ggtern")
+    (version "3.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggtern" version))
+       (sha256
+        (base32 "15hhn8msy0l8zbq8ms0zvg1iajn1c28gd77v3hp6dvwwsla8zzbd"))))
+    (properties `((upstream-name . "ggtern")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-compositions
+           r-ggplot2
+           r-gridextra
+           r-gtable
+           r-hexbin
+           r-latex2exp
+           r-lattice
+           r-mass
+           r-plyr
+           r-proto
+           r-scales))
+    (home-page "http://www.ggtern.com")
+    (synopsis "Extension to ggplot2 for ternary diagrams")
+    (description
+     "This package extends the functionality of ggplot2, providing the
+capability to plot ternary diagrams for (a subset of) the ggplot2 geometries.
+Additionally, ggtern has implemented several new geometries which are
+unavailable to the standard ggplot2 release.")
+    (license license:gpl2)))
+
 (define-public r-tablerdash
   (package
     (name "r-tablerdash")
@@ -2968,14 +3253,14 @@ component analysis (with robust methods, and parallelized functions).")
 (define-public r-ape
   (package
     (name "r-ape")
-    (version "5.6-1")
+    (version "5.6-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ape" version))
        (sha256
         (base32
-         "1xzpq3a4q5hmksc8nl530c9n31fdkj3nigqm1qhd3vkncl1iwh15"))))
+         "0mqjsh7maczd02iwa4fb896q3kgd9jnlilq7y1yz18ch0c54aqlv"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice r-nlme r-rcpp))
@@ -3022,13 +3307,13 @@ XML.  To learn more about the Abbyy OCR API, see @url{http://ocrsdk.com/}.")
 (define-public r-colorspace
   (package
     (name "r-colorspace")
-    (version "2.0-2")
+    (version "2.0-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "colorspace" version))
        (sha256
-        (base32 "0fhq2aykdkxh3r90i8aqjyb37p5api3mjd19ch8mzv99q4pcv4dq"))))
+        (base32 "0zw52s8g2gxp8i1ax96azxmxqrbhb7aad5px0c1vgr6n9p682mp7"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -3044,14 +3329,14 @@ colors are provided.")
 (define-public r-glue
   (package
     (name "r-glue")
-    (version "1.6.1")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glue" version))
        (sha256
         (base32
-         "1nvqm4fmxyszz9b2y0gjiwbvwssdqj9jflcz00b4487i8jajz31i"))))
+         "1gzxk5jgdh2xq9r7z09xs306ygzf27vhg3pyfl7ck1755gqii9cx"))))
     (build-system r-build-system)
     ;; knitr depends on glue, so we can't add knitr here to build the
     ;; vignettes.
@@ -3288,13 +3573,13 @@ value for each cluster in a dendrogram.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.8")
+    (version "1.0.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "1vkqyqly6lzr1h3szaihmayvpjkzscxp4y258vnw8nh4pjb957w7"))))
+        (base32 "01bvqlbg8qkc9z3gasz1ga5dwlpilknb05ikj79a055718djxgif"))))
     (build-system r-build-system)
     (home-page "http://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
@@ -3312,14 +3597,14 @@ and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
 (define-public r-rcppthread
   (package
     (name "r-rcppthread")
-    (version "2.0.1")
+    (version "2.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppThread" version))
        (sha256
         (base32
-         "1hcxdk9mhsnrgg2bp7ls165abwb7b5grgh1gvf2i7sqrf9ggwa09"))))
+         "0a8767q4p76rfamss1w2vnx4h1229nmwymp1q63li2q5b87wipqp"))))
     (properties `((upstream-name . "RcppThread")))
     (build-system r-build-system)
     (home-page
@@ -3350,6 +3635,27 @@ computing (numerical integration, optimization, etc.) and their integration
 with @code{Rcpp}.")
     (license license:gpl2+)))
 
+(define-public r-rcppxptrutils
+  (package
+    (name "r-rcppxptrutils")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "RcppXPtrUtils" version))
+       (sha256
+        (base32 "0jh64c46gp99d2nsih14vx34pamc8i7gkmiy2nj94rx3sxq62yh5"))))
+    (properties `((upstream-name . "RcppXPtrUtils")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-rcpp))
+    (home-page "https://github.com/Enchufa2/RcppXPtrUtils")
+    (synopsis "XPtr add-ons for Rcpp")
+    (description
+     "This package provides the means to compile user-supplied C++ functions
+with Rcpp and retrieve an @code{XPtr} that can be passed to other C++
+components.")
+    (license license:expat)))
+
 (define-public r-bindr
   (package
     (name "r-bindr")
@@ -3477,14 +3783,14 @@ validation and filtering on the values, making options invisible or private.")
 (define-public r-circlize
   (package
     (name "r-circlize")
-    (version "0.4.13")
+    (version "0.4.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "circlize" version))
        (sha256
         (base32
-         "16rnqlkgzhnm69y70k9fiz8vvwlm5dyng04hlxqvvaxix3wdpfkc"))))
+         "0b0yqjmbj1s1jg7y6cgyawadlfv0i6xrls8a4qy9qs7hz8zrpvb1"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-colorspace r-globaloptions r-shape))
@@ -4303,14 +4609,14 @@ functions from LINPACK.")
 (define-public r-fitdistrplus
   (package
     (name "r-fitdistrplus")
-    (version "1.1-6")
+    (version "1.1-8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fitdistrplus" version))
        (sha256
         (base32
-         "1glnbcm1gghzgvzpxcfsmn7dp2f9jqyx39n3ydwp9fx38409khhp"))))
+         "0nhgjvwya95v6b9khbsgp44lw10xg35w61lmka1v6wq7yh827izk"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-mass r-survival))
@@ -4412,14 +4718,14 @@ samples.")
 (define-public r-cvst
   (package
     (name "r-cvst")
-    (version "0.2-2")
+    (version "0.2-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "CVST" version))
        (sha256
         (base32
-         "05l3yzkfrbds09ah9cdwn2sn4ryhq78lz33ryzrgkv176jc8qjw5"))))
+         "0bgk0d6w3dyhb5s30idnp6jpb3m8wf3b79wqlg127wwm0cird8pg"))))
     (properties `((upstream-name . "CVST")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4557,14 +4863,14 @@ the Kaplan-Meier and Aalen-Johansen methods.")
 (define-public r-dimred
   (package
     (name "r-dimred")
-    (version "0.2.4")
+    (version "0.2.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dimRed" version))
        (sha256
         (base32
-         "1534axd5gcwma3nbglrn0l2an53n3yyya30fqkgb4d8l124ygb7j"))))
+         "1z8fqdc8mslvfix8ngxs1y2yrvlanp5581hwp2nzldj6mk5kn15b"))))
     (properties `((upstream-name . "dimRed")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4603,14 +4909,14 @@ calendar objects.")
 (define-public r-magic
   (package
     (name "r-magic")
-    (version "1.5-9")
+    (version "1.6-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "magic" version))
        (sha256
         (base32
-         "0snmdh6vk0p6ar1swsihisinxrx7l8371dri5lk0z24ysgr5w7gs"))))
+         "1gybia2aq80ldk1d845y5srncfzbbmpqhgl7vfaz7qqqjs6d85j5"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-abind))
@@ -4678,14 +4984,14 @@ to access PostgreSQL database systems.")
 (define-public r-linprog
   (package
     (name "r-linprog")
-    (version "0.9-2")
+    (version "0.9-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "linprog" version))
        (sha256
         (base32
-         "1ki14an0pmhs2mnmfjjvdzd76pshiyvi659zf7hqvqwj0viv4dw9"))))
+         "1d34m2nyk7m6j2dci69bhy5mlw479xax1517j7f14pq7vhpsm9l1"))))
     (build-system r-build-system)
     (propagated-inputs (list r-lpsolve))
     (home-page "http://linprog.r-forge.r-project.org/")
@@ -4729,14 +5035,14 @@ Delaunay triangulation and convex hull computation.")
 (define-public r-ddalpha
   (package
     (name "r-ddalpha")
-    (version "1.3.11")
+    (version "1.3.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ddalpha" version))
        (sha256
         (base32
-         "1sdnb47r534nh138zk3a6b2mgi74nvshc7p5m304vjs9jlx4l2y3"))))
+         "07q6yrs1cqplbwv4wyvq26w4aj04jyajk4qh7vixm6i515cipsil"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-bh
@@ -4763,14 +5069,14 @@ multivariate and 5 functional classification problems are included.")
 (define-public r-gower
   (package
     (name "r-gower")
-    (version "0.2.2")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gower" version))
        (sha256
         (base32
-         "0c9n921wn4hhlvjq96r4nkk96s5788376cbldr7y7bwz348200iz"))))
+         "0p9qx9aafkdm7wibfwk59jzw6vspsff6zwp84bc40lg0myxbf737"))))
     (build-system r-build-system)
     (home-page "https://github.com/markvanderloo/gower")
     (synopsis "Gower's distance")
@@ -4867,14 +5173,14 @@ created using basic graphics.")
 (define-public r-generics
   (package
     (name "r-generics")
-    (version "0.1.1")
+    (version "0.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "generics" version))
        (sha256
         (base32
-         "04hrn6g5m5vi3znrcha3jw2q16lnmm3ygx2jl5aqiahg3azqwix2"))))
+         "162q9hdsnfcwjj255ahbi6v9vnyynvda7gb75p721y28j5xb7sk3"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/generics")
     (synopsis "Common S3 generics not provided by base R methods")
@@ -4926,14 +5232,14 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.1.17")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "0gbdc5kvbn14s5zrf4vrdjvkfajs00p7vvb433ii0lqnl07bl87d"))))
+         "1950rvva19ms6xy9d3jx94gzy589qprk115zjjd0ib4qxgip601x"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-dplyr
@@ -4941,6 +5247,7 @@ provides a one-row summary of model-level statistics.")
            r-generics
            r-glue
            r-gower
+           r-hardhat
            r-ipred
            r-lifecycle
            r-lubridate
@@ -5187,17 +5494,17 @@ Laplace approximation and adaptive Gauss-Hermite quadrature.")
 (define-public r-jomo
   (package
     (name "r-jomo")
-    (version "2.7-2")
+    (version "2.7-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "jomo" version))
        (sha256
         (base32
-         "1sbcpacxnxbzwa8rr9x2bq7hh0s3sw6yznr90dkp43n6xk5xaqir"))))
+         "0qq03zspmh8x2c8w882ynsw7wshr9b0fyrpwnqx5yc1xlzrqffcx"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-lme4 r-mass r-ordinal r-survival))
+     (list r-lme4 r-mass r-ordinal r-survival r-tibble))
     (home-page "https://cran.r-project.org/web/packages/jomo/")
     (synopsis "Multilevel Joint Modelling Multiple Imputation")
     (description
@@ -5725,14 +6032,14 @@ plots in @code{ggplot2}.")
 (define-public r-cli
   (package
     (name "r-cli")
-    (version "3.1.1")
+    (version "3.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cli" version))
        (sha256
         (base32
-         "1kslrx22djrs3wnf5xyligwy7h4hzsn5awl946x961fn980ydcy8"))))
+         "0qp8k1afrn6ppwi6d9n05fjgj02196qcsppji3q37ph99msinnnd"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-glue))
@@ -5812,14 +6119,14 @@ timeout.  It can also poll several processes at once.")
 (define-public r-tsp
   (package
     (name "r-tsp")
-    (version "1.1-11")
+    (version "1.2-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TSP" version))
        (sha256
         (base32
-         "0gdwxbj2gria7jhsswmfvc32r43sdd63z3lyy21gbvmfcakvb8j9"))))
+         "022k0972kcxb0w6qhx09l9cif8fmpkpvwddvgxiy60bx343ywzia"))))
     (properties `((upstream-name . "TSP")))
     (build-system r-build-system)
     (propagated-inputs (list r-foreach))
@@ -5897,14 +6204,14 @@ Markdown documents.")
 (define-public r-seriation
   (package
     (name "r-seriation")
-    (version "1.3.1")
+    (version "1.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seriation" version))
        (sha256
         (base32
-         "08c37n3xxc4n4vbkw38k3l3hdlmck8drqpl6z274vkgi2sqv8qyf"))))
+         "1f6hxbrixqaj4vh4svff5pz9ny9h10snrrigk2r9c59amhkgih80"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cluster
@@ -5929,13 +6236,13 @@ iVAT).")
 (define-public r-xfun
   (package
     (name "r-xfun")
-    (version "0.29")
+    (version "0.30")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xfun" version))
        (sha256
-        (base32 "1x2f49n3ak85nab937wq6q5sqi1mdlfzwbv8603kxl2k8rxvp1dz"))))
+        (base32 "1vn0cbskyrk8ww9yx75jni9s684yv4cvbj643lvg0lg00briry7b"))))
     (build-system r-build-system)
     ;; knitr itself depends on xfun
     #;
@@ -6030,14 +6337,14 @@ to variables on the left-hand side of the assignment.")
 (define-public r-pillar
   (package
     (name "r-pillar")
-    (version "1.6.5")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pillar" version))
        (sha256
         (base32
-         "1nqv86zb51jgd6jbhgnyq6j53dzsjx7gwaapndfd3yvp0sxg3yr2"))))
+         "1fqk18vc9ashf12gdqkdi6n1nj5lh324vwhgiib3b2fcb2bghhbq"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli
@@ -6100,14 +6407,14 @@ packages that work with genomic data.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.36")
+    (version "0.37")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "0y1vfq89yi302cwdcnassm02dk14j9ivk5vf83fp6rb8h6ww3rk5"))))
+         "1na8g4z1crq0ia9ba17d0qxaif47jij2z3y14xlxjv7x243k6krg"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-xfun))
@@ -6369,13 +6676,13 @@ information between package updates.")
 (define-public r-leaflet
   (package
     (name "r-leaflet")
-    (version "2.0.4.1")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "leaflet" version))
        (sha256
-        (base32 "07whi3zkz1lmbqx5ydpiya802ck22ny0s7gskwnx7r8xbwlkiw5h"))
+        (base32 "0i2ziy3zmya3i0v4ma0b1ymw4mds7di0xjirs452n20z8l31lhhs"))
        (snippet
         '(for-each
           delete-file
@@ -7572,6 +7879,41 @@ contain lags, diffs and missing values.")
     ;; Any GPL version.
     (license license:gpl2+)))
 
+(define-public r-dynutils
+  (package
+    (name "r-dynutils")
+    (version "1.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "dynutils" version))
+       (sha256
+        (base32 "1pcj4igaw1g898xb42kcpzfmqy80xai5ki5bpnkf8hg738wm00qz"))))
+    (properties `((upstream-name . "dynutils")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-assertthat
+           r-crayon
+           r-desc
+           r-dplyr
+           r-magrittr
+           r-matrix
+           r-proxyc
+           r-purrr
+           r-rcpp
+           r-remotes
+           r-stringr
+           r-tibble))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/dynverse/dynutils")
+    (synopsis "Common functionality for the dynverse packages")
+    (description
+     "This package provides common functionality for the
+@url{https://dynverse.org,dynverse} packages.  dynverse is created to support
+the development, execution, and benchmarking of trajectory inference
+methods.")
+    (license license:expat)))
+
 (define-public r-catdap
   (package
     (name "r-catdap")
@@ -7621,17 +7963,15 @@ and Eclat.")
 (define-public r-parsedate
   (package
     (name "r-parsedate")
-    (version "1.2.1")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parsedate" version))
        (sha256
         (base32
-         "05l6f1n3dsm383w7jfg3j38klvmzzfvc7qi9zr5ij13rljj8s1vb"))))
+         "1c2cpsvma3fkx6zp191bpfvf5rmpsr13g8rzqk6ycyb0n7b9k4qy"))))
     (build-system r-build-system)
-    (propagated-inputs
-     (list r-rematch2))
     (home-page "https://github.com/gaborcsardi/parsedate")
     (synopsis
      "Recognize and parse dates in various formats")
@@ -7773,14 +8113,14 @@ simple method for converting between file types.")
 (define-public r-maptools
   (package
     (name "r-maptools")
-    (version "1.1-2")
+    (version "1.1-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "maptools" version))
        (sha256
         (base32
-         "0fa4a43zax8gn3jdp4ngqav61x4g6l33bg9wzqbngkbjhipck59r"))))
+         "0ixvh4qbdjjl19ghgbb2r26yksya977q1yzs4yn5wshwm0763xph"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-foreign r-lattice r-sp))
@@ -7848,14 +8188,14 @@ promises, but with a syntax that is idiomatic R.")
 (define-public r-dosnow
   (package
     (name "r-dosnow")
-    (version "1.0.19")
+    (version "1.0.20")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doSNOW" version))
        (sha256
         (base32
-         "0f07b38cl7s61vwzkyqkzzsic9g4sw9k6ndbxk3g90l4ca0d1ljc"))))
+         "1f5v0k2w0b2478p6iqa3hn2lwd1x3rzc348n57nd38ka2vnsnz4i"))))
     (properties `((upstream-name . "doSNOW")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7867,20 +8207,41 @@ promises, but with a syntax that is idiomatic R.")
 using the @code{snow} package.")
     (license license:gpl2)))
 
+(define-public r-fstcore
+  (package
+    (name "r-fstcore")
+    (version "0.9.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "fstcore" version))
+       (sha256
+        (base32 "1qicjwsm87wgjm5mxrsgi697fmcfz6wyqcxfgngwxrf8kq4awjsf"))))
+    (properties `((upstream-name . "fstcore")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-rcpp))
+    (home-page "https://www.fstpackage.org/fstcore/")
+    (synopsis "R bindings to the fstlib library")
+    (description
+     "The fstlib library provides multithreaded serialization of compressed
+data frames using the fst format.  The fst format allows for random access of
+stored data and compression with the LZ4 and ZSTD compressors.")
+    (license license:mpl2.0)))
+
 (define-public r-fst
   (package
     (name "r-fst")
-    (version "0.9.4")
+    (version "0.9.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fst" version))
        (sha256
         (base32
-         "0vwclzxww8mw9nnpyj29bn71mrr8jjg7ka03979h9rbzw6d9bjrr"))))
+         "0r96inwrr960m7wmc80603bw2vvvwab225bh9dq3lalwhy4yiis4"))))
     (properties `((upstream-name . "fst")))
     (build-system r-build-system)
-    (propagated-inputs (list r-rcpp))
+    (propagated-inputs (list r-fstcore r-rcpp))
     (home-page "http://www.fstpackage.org")
     (synopsis "Fast serialization of data frames")
     (description
@@ -8192,14 +8553,14 @@ those searches and pull data into their R sessions.")
 (define-public r-renv
   (package
     (name "r-renv")
-    (version "0.15.2")
+    (version "0.15.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "renv" version))
        (sha256
         (base32
-         "1nv5hz40cbvdbc2kkr2q2xqnpkgkmp47nlfbr7z57mpn579zyznh"))))
+         "0byfs4cydhyqzdrxjv7sa6i30xc7qhnx0qw9d8wwwlzdkv235flf"))))
     (properties `((upstream-name . "renv")))
     (build-system r-build-system)
     (native-inputs
@@ -8777,6 +9138,36 @@ patterned after functions in the Python @code{itertools} module, and others
 patterned after functions in the snow package.")
     (license license:gpl2)))
 
+(define-public r-itsadug
+  (package
+    (name "r-itsadug")
+    (version "2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "itsadug" version))
+       (sha256
+        (base32 "0759l7hhvj05dp92pz59xwrxjm9s1iwkwrdhs68l0fq57550j70l"))))
+    (properties `((upstream-name . "itsadug")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-mgcv r-plotfunctions))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=itsadug")
+    (synopsis "Interpreting time series and autocorrelated data using GAMMs")
+    (description
+     "@dfn{Generalized Additive Mixed Modeling} (GAMM; Lin & Zhang, 1999) as
+implemented in the R package @code{mgcv} is a nonlinear regression analysis
+which is particularly useful for time course data such as EEG, pupil dilation,
+gaze data (eye tracking), and articulography recordings, but also for
+behavioral data such as reaction times and response data.  As time course
+measures are sensitive to autocorrelation problems, GAMMs implements methods
+to reduce the autocorrelation problems.  This package includes functions for
+the evaluation of GAMM models (e.g., model comparisons, determining regions of
+significance, inspection of autocorrelational structure in residuals) and
+interpreting of GAMMs (e.g., visualization of complex interactions, and
+contrasts).")
+    (license license:gpl2+)))
+
 (define-public r-polynom
   (package
     (name "r-polynom")
@@ -8796,6 +9187,38 @@ patterned after functions in the snow package.")
 univariate polynomial manipulations.")
     (license license:gpl2)))
 
+(define-public r-pupillometryr
+  (package
+    (name "r-pupillometryr")
+    (version "0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "PupillometryR" version))
+       (sha256
+        (base32 "0yk30sgl2qqa6pva649swq523vh446ifmydildycfvfmlm1h4qza"))))
+    (properties `((upstream-name . "PupillometryR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-data-table
+           r-dplyr
+           r-fda
+           r-ggplot2
+           r-itsadug
+           r-lazyeval
+           r-mgcv
+           r-rlang
+           r-signal
+           r-tidyr
+           r-zoo))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=PupillometryR")
+    (synopsis "Unified pipeline for pupillometry data")
+    (description
+     "This package provides a unified pipeline to clean, prepare, plot, and
+run basic analyses on pupillometry experiments.")
+    (license license:expat)))
+
 (define-public r-gbrd
   (package
     (name "r-gbrd")
@@ -8868,14 +9291,14 @@ implemented in bibutils.")
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "2.1.3")
+    (version "2.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "1f2m9pxm4s4gkrqh58jznkqj2fcw6f29c1l05k5mmkwsdf3ai0c3"))))
+         "0r242a352wa7kha0n62ng6ri0qi14hwjknnyjvfcd7mx4qvfwhgv"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9112,14 +9535,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.15.0")
+    (version "0.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "1vizx515a24v5x4f5mzbigl0wl4gz75hp5gqw8lkijygw71li8fn"))))
+         "0gcyps0889rys04bj70br5zfvzcqxd55yawykmns17n9hsixfi3r"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -9248,14 +9671,14 @@ functions.")
 (define-public r-flextable
   (package
     (name "r-flextable")
-    (version "0.6.10")
+    (version "0.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flextable" version))
        (sha256
         (base32
-         "01nm0357b0z4dgrplbq9ms63j51n0rgvvxyy068zdsc5p7j3lql2"))))
+         "15vr5lb87712mymsvv01kz9s1fb54sx5kybsa2x547k5g10dbrbm"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-base64enc
@@ -9491,19 +9914,18 @@ the work.")
 (define-public r-doby
   (package
     (name "r-doby")
-    (version "4.6.11")
+    (version "4.6.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doBy" version))
        (sha256
         (base32
-         "1xhjh2d7zfgw8wbcj5yfscvmwbjar1w544ika13da69dydm44j81"))))
+         "1m60ya4cdickqsj0dc90bv4n47df6qg6n82fikxrkl4yhg7yyn1i"))))
     (properties `((upstream-name . "doBy")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-broom
-           r-curry
            r-deriv
            r-dplyr
            r-ggplot2
@@ -9828,14 +10250,14 @@ visualization and candidate genes around SNPs.")
 (define-public r-precrec
   (package
     (name "r-precrec")
-    (version "0.12.8")
+    (version "0.12.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "precrec" version))
        (sha256
         (base32
-         "0kwn902z32qcnkffjm6dqnaxagx31xjdcak50clbgrway2pcdjrm"))))
+         "1dfz2rqx2ww2l5r40ahg0qdj3rjrwiwh427mw7j5ynhpcj21j2qm"))))
     (properties `((upstream-name . "precrec")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10083,14 +10505,14 @@ repeated measures data, respectively.")
 (define-public r-gam
   (package
     (name "r-gam")
-    (version "1.20")
+    (version "1.20.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gam" version))
        (sha256
         (base32
-         "1zhy2fp7pxac8xp3z3hndhprj4s5gx3305b627vc78bal1ml3swi"))))
+         "1bbxiqfgi7jc9vw1hspw5q41d69nlw2v6k91zqlvmam5pvxcd1sp"))))
     (properties `((upstream-name . "gam")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10585,13 +11007,13 @@ distributed on a compute cluster.")
 (define-public r-abjutils
   (package
     (name "r-abjutils")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "abjutils" version))
        (sha256
-        (base32 "18mmlkqsrjfclk8islfjdsp8sbw6dpjj5x45kqilxdiss69gg5zd"))))
+        (base32 "0lmf4va8qnzwg698i2h4fcwvd6dhsgdkqsfh41aa3wg1flimhsr7"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-dplyr
@@ -11009,14 +11431,14 @@ analysis.")
 (define-public r-gee
   (package
     (name "r-gee")
-    (version "4.13-20")
+    (version "4.13-22")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gee" version))
        (sha256
         (base32
-         "167pzgnmj4cjc41ykps1mfwi6s7y32zxyycn5z17vn4v0pp4q0ak"))))
+         "1wbwn7bjqz09l6clh43dy3x5qgv9b9wwn7xnfw9fkkrhn6rvc3rw"))))
     (properties `((upstream-name . "gee")))
     (build-system r-build-system)
     (native-inputs
@@ -11488,14 +11910,14 @@ correlation, censored, ordered and multivariate problems.")
 (define-public r-bayesplot
   (package
     (name "r-bayesplot")
-    (version "1.8.1")
+    (version "1.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayesplot" version))
        (sha256
         (base32
-         "0aman4273i8hy3z0qay1nrsr7v27m4icm1j6f4w59ylix80l5myq"))))
+         "0hqy597ang53phxnl084hak35ffqz9lw9hygax7370gpkjws908a"))))
     (build-system r-build-system)
     (inputs
      (list pandoc))
@@ -11506,6 +11928,7 @@ correlation, censored, ordered and multivariate problems.")
            r-ggplot2
            r-ggridges
            r-glue
+           r-posterior
            r-reshape2
            r-rlang
            r-tibble
@@ -11523,14 +11946,14 @@ Bayesian modeling.")
 (define-public r-tmb
   (package
     (name "r-tmb")
-    (version "1.7.22")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TMB" version))
        (sha256
         (base32
-         "116k7ffgadhkqq4lckfd4403qvybcls1hcs1ap1b7lkylghjahf2"))))
+         "158spsz8inxhs3dw6cq2wwkkhvgkfjyyz577s89x08yly7layq2l"))))
     (properties `((upstream-name . "TMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11593,14 +12016,14 @@ models.")
 (define-public r-glmmtmb
   (package
     (name "r-glmmtmb")
-    (version "1.1.2.3")
+    (version "1.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glmmTMB" version))
        (sha256
         (base32
-         "1yfwwz2dhd34vgagg8hi7irkqw8padavbc7337jdiwgk3w01wqsm"))))
+         "0xdjc3gx0cj098rrjzlsy9cccxzfvn029xh4ycpya4xjhxsykldr"))))
     (properties `((upstream-name . "glmmTMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11611,7 +12034,7 @@ models.")
            r-rcppeigen
            r-tmb))
     (native-inputs
-     (list r-knitr)) ; for vignettes
+     (list r-knitr r-rmarkdown)) ; for vignettes
     (home-page "https://github.com/glmmTMB")
     (synopsis "Generalized linear mixed models")
     (description
@@ -11797,6 +12220,42 @@ files to an structured list.  Users can manipulate this resulting list with
 back to file after modifications.")
     (license license:gpl3)))
 
+(define-public r-gillespiessa2
+  (package
+    (name "r-gillespiessa2")
+    (version "0.2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "GillespieSSA2" version))
+       (sha256
+        (base32 "03ym8qx5yc1a6j9l973lc0rjzs8hiax8fq13j7m1fcb1pvnbvar5"))))
+    (properties `((upstream-name . "GillespieSSA2")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-assertthat
+           r-dplyr
+           r-dynutils
+           r-matrix
+           r-purrr
+           r-rcpp
+           r-rcppxptrutils
+           r-readr
+           r-rlang
+           r-stringr
+           r-tidyr))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/rcannood/GillespieSSA2")
+    (synopsis "Gillespie's stochastic simulation algorithm")
+    (description
+     "This package provides a fast, scalable, and versatile framework for
+simulating large systems with Gillespie's @dfn{Stochastic Simulation
+Algorithm} (SSA).  This package is the spiritual successor to the GillespieSSA
+package.  Benefits of this package include major speed improvements (>100x),
+easier to understand documentation, and many unit tests that try to ensure the
+package works as intended.")
+    (license license:gpl3+)))
+
 (define-public r-gitcreds
   (package
     (name "r-gitcreds")
@@ -12272,13 +12731,13 @@ and related methods.")
 (define-public r-rcppgsl
   (package
     (name "r-rcppgsl")
-    (version "0.3.10")
+    (version "0.3.11")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppGSL" version))
        (sha256
-        (base32 "0lalz51q31qqy0cr227vc3msi0h47p111lzy4zs93drgl1yhh4l6"))))
+        (base32 "1a5dms0axlzgpv1z2bhfrb77497h0ch1yslq0gidj14vr4kfm57h"))))
     (properties `((upstream-name . "RcppGSL")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12298,14 +12757,14 @@ the interfaces between R and C++.")
 (define-public r-mvabund
   (package
     (name "r-mvabund")
-    (version "4.1.12")
+    (version "4.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mvabund" version))
        (sha256
         (base32
-         "107pwv2bwird1a98chcnbld2wqj9prkf4pkncyrrp304zpdkkby1"))))
+         "01kss9dx4an1ir5zs46jypvhj8sdc8wcs00i1223ai09av4lcsgd"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-mass r-rcpp r-rcppgsl r-statmod r-tweedie))
@@ -12328,10 +12787,17 @@ analysing multivariate abundance data in community ecology.")
         (base32
          "1k04n6gwk2n8kg0l3yk5j3wrqgkv5f6w04yjpif9y451hx5w7svg"))))
     (build-system r-build-system)
+    ;; This is needed for the vignette builder
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-HOME
+           (lambda _ (setenv "HOME" "/tmp"))))))
     (propagated-inputs
      (list r-car r-lme4 r-lmertest r-pbkrtest r-reshape2))
     (native-inputs
-     (list r-knitr))
+     (list r-knitr
+           r-r-rsp)) ;vignette builder
     (home-page "https://afex.singmann.science/")
     (synopsis "Analysis of factorial experiments")
     (description
@@ -12458,14 +12924,14 @@ parallel calculations across cluster nodes.")
 (define-public r-chk
   (package
     (name "r-chk")
-    (version "0.7.0")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "chk" version))
        (sha256
         (base32
-         "1fxsxgvd08lkb6amjgs4x48dhqr046mmjngjfgy2ya9cl2shd7ls"))))
+         "10gcv00mgi88vgxr9jrs0ar67crmdcdi4m9g86cm6pg3ly0v097y"))))
     (properties `((upstream-name . "chk")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12705,13 +13171,13 @@ isosurfaces.")
 (define-public r-ks
   (package
     (name "r-ks")
-    (version "1.13.3")
+    (version "1.13.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ks" version))
        (sha256
-        (base32 "0wyfdmhr753vpizns9kl7h7pfnnb16c7m7w9a4bpz62xcvgq1yyy"))))
+        (base32 "15sm1ys7sk0gn7hr1vik4xrn4jdf837knwk7j8h32lr29w9mh917"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-fnn
@@ -12790,14 +13256,14 @@ University Press, 2007.")
 (define-public r-circular
   (package
     (name "r-circular")
-    (version "0.4-93")
+    (version "0.4-94")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "circular" version))
        (sha256
         (base32
-         "0hki85rs8wc5950pjaw28q54rly2napfbcrx3pchlfap6wwy5kkn"))))
+         "0wanbd6n7g1avvyc7pm0lnkwg868dix2byiz4wm6vmxzm0y47fmr"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-boot r-mvtnorm))
@@ -12858,14 +13324,14 @@ for evolution along a phylogenetic tree.")
 (define-public r-fmsb
   (package
     (name "r-fmsb")
-    (version "0.7.2")
+    (version "0.7.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fmsb" version))
        (sha256
         (base32
-         "1ylwj4385wg7rymx0m3kayyvrbil89wxb7phdl0fvi0xq2krkzhb"))))
+         "1gi94xr0b1yk9xzwfprfafxi25yic1lcivd66p73n6iqfzdaimbk"))))
     (build-system r-build-system)
     (home-page "http://minato.sip21c.org/msb/")
     (synopsis "Functions for medical statistics book with demographic data")
@@ -12942,13 +13408,13 @@ Anderson-Darling Distribution\".")
 (define-public r-admisc
   (package
     (name "r-admisc")
-    (version "0.23")
+    (version "0.25")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "admisc" version))
        (sha256
-        (base32 "0md0sygwdglyw7ss0dw6h235n70vpf25npp1q5b5nmb4db0fq80c"))))
+        (base32 "0cf8dy0mi3ynm2ic8jp0qi1samyzashwlzz0l64izqqv2s4hpyzp"))))
     (properties `((upstream-name . "admisc")))
     (build-system r-build-system)
     (home-page "https://github.com/dusadrian/admisc")
@@ -13183,19 +13649,20 @@ maps.")
 (define-public r-tidytree
   (package
     (name "r-tidytree")
-    (version "0.3.7")
+    (version "0.3.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidytree" version))
        (sha256
-        (base32 "1wp411lf3syf0g1czhx3ksb4mx5d6vaw6ppipv0s0k69ivag45kq"))))
+        (base32 "1prfv2jy6z4zp4gyi9krzbysipsbnjrkxcccflm4nwsd9i7mshqj"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ape
            r-dplyr
            r-lazyeval
            r-magrittr
+           r-pillar
            r-rlang
            r-tibble
            r-tidyr
@@ -13277,14 +13744,14 @@ only sparse real matrices in Matrix package format are supported.")
 (define-public r-speedglm
   (package
     (name "r-speedglm")
-    (version "0.3-3")
+    (version "0.3-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "speedglm" version))
        (sha256
         (base32
-         "0f37w4lj8dpcg1sfkd7cv6qpdkanmb97mnd8zih2fxzv8bpd0rfh"))))
+         "1kj662nfkfhvx37jrbvxd4dyjclz5cm3xh50z7s5rbzapiyxn4hs"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-mass r-matrix))
@@ -13299,14 +13766,14 @@ linear models to large data sets by updating algorithms.")
 (define-public r-densityclust
   (package
     (name "r-densityclust")
-    (version "0.3")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "densityClust" version))
        (sha256
         (base32
-         "1zry0vafajzmr37aylglxfvwplhdygbkb9cvzvh8cy0xgnjrnx13"))))
+         "05x2fi1zdnkrg2nimf8k904j3lpyw0f7nmk6ax5p7x7a98wb2iqs"))))
     (properties `((upstream-name . "densityClust")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13608,13 +14075,13 @@ methods, incorporating one or more trees and trait data.")
 (define-public r-rnexml
   (package
     (name "r-rnexml")
-    (version "2.4.5")
+    (version "2.4.6")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RNeXML" version))
               (sha256
                (base32
-                "1wsl4xq9w5bp3wk69dw57bg0qcw1vs6ajwya4p0w1r00ck5pwrib"))))
+                "0k56brcg80mvx35hgc5gj8arwba4k7q0075g38qp0qgq9d1b87cs"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ape
@@ -13623,6 +14090,7 @@ methods, incorporating one or more trees and trait data.")
            r-lazyeval
            r-plyr
            r-reshape2
+           r-rlang
            r-stringi
            r-stringr
            r-tidyr
@@ -13642,16 +14110,17 @@ and compatibility with @code{ape} objects.")
 (define-public r-rnifti
   (package
     (name "r-rnifti")
-    (version "1.3.1")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RNifti" version))
        (sha256
         (base32
-         "0bz10ar6hrgkvlzh9j2im24kwi3s2nnax668z40a2wj6s5xghqlr"))))
+         "0kkj9dby85iwnlqb7zwrh1xidlvqip7i1mbgckb5qg4b0a3zgibc"))))
     (properties `((upstream-name . "RNifti")))
     (build-system r-build-system)
+    (inputs (list zlib))
     (propagated-inputs (list r-rcpp))
     (home-page "https://github.com/jonclayden/RNifti")
     (synopsis "Fast R and C++ access to NIfTI images")
@@ -14079,14 +14548,14 @@ preparing, executing, and processing HTTP requests.")
 (define-public r-gmp
   (package
     (name "r-gmp")
-    (version "0.6-2.1")
+    (version "0.6-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gmp" version))
        (sha256
         (base32
-         "1mj7hy6riaxl9n4q2cnyyjazwad90xbjszk25si968618rih4n64"))))
+         "0vfhz5cpffcrmq011h7jvy1r6d5pbbpkxj8431bhj5x5h25x7sjn"))))
     (build-system r-build-system)
     (arguments
      '(#:phases
@@ -15102,14 +15571,14 @@ port-forwarding to your local computer.")
 (define-public r-future
   (package
     (name "r-future")
-    (version "1.23.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future" version))
        (sha256
         (base32
-         "1y5qzpsg0r2dccynyybbb2ngxbl1y3phs1dq2jj3f2bwhc7chsfq"))))
+         "0xmj17fq9paww796490bmakv6pcvrzk15i8mzhxk1mp9l0mj32vv"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -15344,17 +15813,18 @@ several common set, element and attribute related tasks.")
 (define-public r-shinyjqui
   (package
     (name "r-shinyjqui")
-    (version "0.4.0")
+    (version "0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "shinyjqui" version))
        (sha256
         (base32
-         "0ins0pmfis34jr0rimsp1k1aw856r3xjdnsvv8lkwqhvp58nzqah"))
+         "135gwz7syyb6pbn0lkvmq0v1c6r1zivavnqhi1rnzbbzlysi27v1"))
        (snippet
-        '(begin
-           (delete-file "inst/www/shinyjqui.min.js")))))
+        '(for-each delete-file
+                   (list "inst/www/shinyjqui.min.js"
+                         "inst/www/jquery.ui.touch-punch.min.js")))))
     (properties `((upstream-name . "shinyjqui")))
     (build-system r-build-system)
     (arguments
@@ -15362,17 +15832,34 @@ several common set, element and attribute related tasks.")
        (modify-phases %standard-phases
          (add-after 'unpack 'process-javascript
            (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "inst/www/"
-               (let ((source "shinyjqui.js")
-                     (target "shinyjqui.min.js"))
-                 (format #true "Processing ~a --> ~a~%"
-                         source target)
-                 (invoke "esbuild" source "--minify"
-                         (string-append "--outfile=" target)))))))))
+             (with-directory-excursion "inst/www"
+               (let ((mapping
+                      `((,(string-append (assoc-ref inputs "js-jquery.ui.touch-punch")
+                                         "/jquery.ui.touch-punch.js")
+                         . "jquery.ui.touch-punch.min.js")
+                        ("shinyjqui.js"
+                         . "shinyjqui.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)))))))))
     (propagated-inputs
-     (list r-htmltools r-htmlwidgets r-jsonlite r-shiny))
+     (list r-htmltools r-htmlwidgets r-jsonlite r-rlang r-shiny))
     (native-inputs
-     (list r-knitr esbuild))
+     `(("r-knitr" ,r-knitr)
+       ("esbuild" ,esbuild)
+       ("js-jquery.ui.touch-punch"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/furf/jquery-ui-touch-punch")
+                 (commit "8f7559b6e65cdc3ee3648d5fe76d38c653f87ff5")))
+           (sha256
+            (base32
+             "1lzywp2q9hwx6d5fqjla95vp7ra2lahr5dam7lsqjmch9d98r48q"))))))
     (home-page "https://github.com/yang-tang/shinyjqui")
     (synopsis "jQuery UI interactions and effects for Shiny")
     (description
@@ -15583,13 +16070,13 @@ such software by imputing dropout events.")
 (define-public r-gamlss-dist
   (package
     (name "r-gamlss-dist")
-    (version "6.0-1")
+    (version "6.0-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss.dist" version))
        (sha256
-        (base32 "0m41n7zf7m0mh1w9ql70wqnzsf2f013ql699im7zmp6fdggb8qxm"))))
+        (base32 "1gqjr419v8z2ygh0h1xz7bipnsbp820njzwq7z3r9f41rn1ym47c"))))
     (properties `((upstream-name . "gamlss.dist")))
     (build-system r-build-system)
     (propagated-inputs (list r-mass))
@@ -15970,14 +16457,14 @@ graphs.")
 (define-public r-pbdzmq
   (package
     (name "r-pbdzmq")
-    (version "0.3-6")
+    (version "0.3-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pbdZMQ" version))
        (sha256
         (base32
-         "0yy3x3l04vx13jbjbvkvsc8jdbf0abndjfknszdx3bi18b2chi4r"))))
+         "020qy6fq8w8wq0j3bii14ahrlg8wzl0lrnndfr6scmrg9ghjnbfz"))))
     (properties `((upstream-name . "pbdZMQ")))
     (build-system r-build-system)
     (inputs
@@ -16293,14 +16780,14 @@ additional utilities for genomic regions processing.")
 (define-public r-sets
   (package
     (name "r-sets")
-    (version "1.0-20")
+    (version "1.0-21")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sets" version))
        (sha256
         (base32
-         "1mkmqi3n1lh01k47yvkr0dlf4imqdi6d6bglx9bvrjmg816p4jr3"))))
+         "1h1a03b1850kh5hd3gxbspx2nxqxvk2gb0wm0s60b70qb6zg0csp"))))
     (properties `((upstream-name . "sets")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/sets")
@@ -16337,14 +16824,14 @@ partition functions are also given.")
 (define-public r-brobdingnag
   (package
     (name "r-brobdingnag")
-    (version "1.2-6")
+    (version "1.2-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Brobdingnag" version))
        (sha256
         (base32
-         "1m3ajvcksqfck5l5hj5xiflj4ry6d896ybv4f0xxks8chgnwmv0r"))))
+         "0hnp5nrpnscykvgrrbgp7987660hcbv92zc2q8lmpnin4ws399vk"))))
     (properties `((upstream-name . "Brobdingnag")))
     (build-system r-build-system)
     (home-page "https://github.com/RobinHankin/Brobdingnag.git")
@@ -16472,14 +16959,14 @@ utilities for sequence data management under the ACNUC system.")
 (define-public r-units
   (package
     (name "r-units")
-    (version "0.7-2")
+    (version "0.8-0")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "units" version))
         (sha256
           (base32
-            "1ss0f15h4yqzk488ilsa5d2ibrj3wzwplx4160mn600i8ciy02xr"))))
+            "06mjprqi06xprj6185k5cmrrdl025x0pd1r6a4x3s74ciq9zwilw"))))
     (build-system r-build-system)
     (inputs
      (list udunits))
@@ -16500,14 +16987,14 @@ classes.")
 (define-public r-udunits2
   (package
     (name "r-udunits2")
-    (version "0.13.2")
+    (version "0.13.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "udunits2" version))
        (sha256
         (base32
-         "0sarkw5ciafiaq1haam8d8w0cmai63wrw2m4rcbjfa5k0648j07f"))))
+         "00prsy8m41v1camcsz94d7gm8qab2mdnwl3x0dyhz4r49b02jm4z"))))
     (properties `((upstream-name . "udunits2")))
     (build-system r-build-system)
     (inputs
@@ -16675,14 +17162,14 @@ information about geometries.")
 (define-public r-sf
   (package
     (name "r-sf")
-    (version "1.0-5")
+    (version "1.0-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sf" version))
        (sha256
         (base32
-         "1i0s9839m9zffad2aq6zgcpz0d61g68caqh9wxaxaxx7bvx2h319"))))
+         "0lsl4rh4lbv386hxlsnnwsjb5x1n9d3z0ckjmxakmmrqjjmiywyh"))))
     (build-system r-build-system)
     (inputs
      (list gdal geos proj sqlite zlib))
@@ -17418,14 +17905,14 @@ interaction search in high-dimensional data.")
 (define-public r-rttf2pt1
   (package
     (name "r-rttf2pt1")
-    (version "1.3.9")
+    (version "1.3.10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rttf2pt1" version))
        (sha256
         (base32
-         "0w9ybqvr4bvpa2dyfkrscg4in0x2dkzmxdn1n6003j1rss7f8rw6"))))
+         "1fp1y0kxa5xg8w0dplm12wfm8h78az4k6ql1758wwhb3d17np241"))))
     (properties `((upstream-name . "Rttf2pt1")))
     (build-system r-build-system)
     (home-page "https://github.com/wch/Rttf2pt1")
@@ -18504,14 +18991,14 @@ matched.")
 (define-public r-ggnewscale
   (package
     (name "r-ggnewscale")
-    (version "0.4.5")
+    (version "0.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggnewscale" version))
        (sha256
         (base32
-         "1hjysfagd2lqy8yivqq9q7l6hbvyq8kasw3zqh5fk9xn18ikc702"))))
+         "08xqhv6y9m9f2p8q3h0dh7mbpqg3r2i590x2983k69plfa5jxzv3"))))
     (properties `((upstream-name . "ggnewscale")))
     (build-system r-build-system)
     (propagated-inputs
@@ -18550,14 +19037,14 @@ colored by the number of neighboring points.  This is useful to visualize the
 (define-public r-arrow
   (package
     (name "r-arrow")
-    (version "6.0.1")
+    (version "7.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "arrow" version))
        (sha256
         (base32
-         "14fghz9xijcrck0c65crvfidgyhgzy9b2apwmg7qrgn2sy09xm0p"))))
+         "1s9h2aw6iig45nz2rfk13qbp0qydx6cc4r6qs58f9cm9vgwsg76l"))))
     (properties `((upstream-name . "arrow")))
     (build-system r-build-system)
     (inputs
@@ -18565,6 +19052,7 @@ colored by the number of neighboring points.  This is useful to visualize the
     (propagated-inputs
      (list r-assertthat
            r-bit64
+           r-cpp11
            r-purrr
            r-r6
            r-rlang
@@ -18636,14 +19124,14 @@ industry for machine learning tasks.")
 (define-public r-float
   (package
     (name "r-float")
-    (version "0.2-6")
+    (version "0.2-6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "float" version))
        (sha256
         (base32
-         "1bx5yxkb123001v31jjk7h7f0qissmjydvbil5cj3jvmqkayq1a1"))))
+         "07b3zaccrybd1vail8hs4kmcn3djqmr72j63h01rkmij2ry8pv8d"))))
     (properties `((upstream-name . "float")))
     (build-system r-build-system)
     (native-inputs
@@ -18732,14 +19220,14 @@ multicore machines.")
 (define-public r-mcmcpack
   (package
     (name "r-mcmcpack")
-    (version "1.6-0")
+    (version "1.6-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MCMCpack" version))
        (sha256
         (base32
-         "16zjx8yz29ii75wfxj3p562l657bng8jnwzp2b54s7fiaws4kfdm"))))
+         "1skanp6czfk83s13dnjrb699m9z6a0r59q0f79fv0k560jc8vbrj"))))
     (properties `((upstream-name . "MCMCpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -18874,24 +19362,23 @@ batch correction, and data correction.")
 (define-public r-styler
   (package
     (name "r-styler")
-    (version "1.6.2")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "styler" version))
        (sha256
         (base32
-         "0p7p2mh4f469drfn5z4wc4xrg06mpnm9wkw76fghclf8m9vcqbx6"))))
+         "1ki260ga0jrmayhdlx2sl788yp5kkmi4wyl32nmvvyb55sng6j9y"))))
     (build-system r-build-system)
+    ;; This is needed by R.cache.
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'set-HOME
            (lambda _ (setenv "HOME" "/tmp"))))))
     (propagated-inputs
-     (list r-backports
-           r-cli
-           r-glue
+     (list r-cli
            r-magrittr
            r-purrr
            r-r-cache
@@ -18899,8 +19386,7 @@ batch correction, and data correction.")
            r-rlang
            r-rprojroot
            r-tibble
-           r-withr
-           r-xfun))
+           r-withr))
     (native-inputs
      (list r-knitr))
     (home-page "https://github.com/r-lib/styler")
@@ -19194,14 +19680,14 @@ been used in the call to @code{aov}.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "2.3.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "0x8rcl3p1h1dpzgsfnalfjhvv345gg5v0z8dxqwrk6i32xk5wmzb"))))
+         "1s7r7k5ihdbj69r27vbcs3ghra9s4yqw7cyh2rkm2ry901zq3114"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19365,14 +19851,14 @@ the current document.")
 (define-public r-xgboost
   (package
     (name "r-xgboost")
-    (version "1.5.0.2")
+    (version "1.5.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xgboost" version))
        (sha256
         (base32
-         "04xbgrrb3aq067hrivslq5f2rd1v95yfv7lkj596ijyqi6ibjl27"))))
+         "13mi3rmpxhgm4qbm4xcqml9n5d1xyai2k1mi52i8x60jd5m8s319"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-data-table r-jsonlite r-matrix))
@@ -19780,20 +20266,20 @@ both R code and compiled C/C++/FORTRAN code.")
 (define-public r-systemfonts
   (package
     (name "r-systemfonts")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "systemfonts" version))
        (sha256
         (base32
-         "1fmv1ni77ncz6rrm4iv8a7l6pbqnk2ri0yzad2bs943gxbarjz34"))))
+         "1h44bal845jp7ya8i7ff1kz1n3wklkb00jk6hb9lgwa2p5snqxpg"))))
     (properties `((upstream-name . "systemfonts")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cpp11))
     (inputs
-     (list fontconfig zlib))
+     (list fontconfig freetype zlib))
     (native-inputs
      (list pkg-config r-knitr))
     (home-page "https://github.com/r-lib/systemfonts")
@@ -19834,14 +20320,14 @@ emphasize hidden group structures in networks or focus on specific nodes.")
 (define-public r-terra
   (package
     (name "r-terra")
-    (version "1.5-17")
+    (version "1.5-21")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "terra" version))
        (sha256
         (base32
-         "1rz6dd78i3aq82vl9q4fw17y5cxj2pcmra5mlhb0ca1df78mgb77"))))
+         "0gzl0ka19jjw0dmaghjk2sgwi78kkz4w3rlfkym62rdarhlfj7h9"))))
     (properties `((upstream-name . "terra")))
     (build-system r-build-system)
     (inputs
@@ -19954,14 +20440,14 @@ in pipelines.")
 (define-public r-parameters
   (package
     (name "r-parameters")
-    (version "0.16.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parameters" version))
        (sha256
         (base32
-         "1i295d5nqjr3pvp9vz59wiasrxy9n78q518phcd15sxcjzcj0l27"))))
+         "0wrhs3rhr62441cghg4nsrlp6r41nf7x5nclzz71v5c0rfn8jh79"))))
     (properties `((upstream-name . "parameters")))
     (build-system r-build-system)
     (propagated-inputs
@@ -20171,12 +20657,12 @@ to ODEs by numerical differencing.")
 (define-public r-pracma
   (package
     (name "r-pracma")
-    (version "2.3.6")
+    (version "2.3.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "pracma" version))
               (sha256
-               (base32 "1pmqk7b6c600v6pn0s047p3msl13azwk611zvh05w5f993yq7b0p"))))
+               (base32 "0r17siivm37k4gp253v9mlg5m7cwqp85h9kk2hbp2wkf81ad80i3"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/pracma/")
     (synopsis "Practical numerical math functions")
@@ -20232,14 +20718,14 @@ as a boxplot function.")
 (define-public r-bio3d
   (package
     (name "r-bio3d")
-    (version "2.4-2")
+    (version "2.4-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bio3d" version))
        (sha256
         (base32
-         "1jvcmpzi9knhxq5jsbhg8slm8hnlx2y8smmwwrbnbyd0rmk5fhci"))))
+         "0x3apqxbk4lvvcnvvdsyjd9f6qh9f9qgml3ih69hl9ikj06iy0y6"))))
     (properties `((upstream-name . "bio3d")))
     (build-system r-build-system)
     (inputs (list zlib))
@@ -20608,14 +21094,14 @@ server-side.")
 (define-public r-sysfonts
   (package
     (name "r-sysfonts")
-    (version "0.8.5")
+    (version "0.8.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sysfonts" version))
        (sha256
         (base32
-         "1fhf0x5sqx3mv72j9d0clkq1qzqiqxbxn1h808f7ccf0mb04v43y"))))
+         "1fq5dn4l09sgrbznfz9cakf4vgc3761zwicvqaazh0s8mzbaicpn"))))
     (properties `((upstream-name . "sysfonts")))
     (build-system r-build-system)
     (inputs
@@ -20654,14 +21140,14 @@ package.")
 (define-public r-showtext
   (package
     (name "r-showtext")
-    (version "0.9-4")
+    (version "0.9-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "showtext" version))
        (sha256
         (base32
-         "1gvj32wrs5q31bmg5dy6n85d0igm3jhkldhdv8kscw0pfrk89y36"))))
+         "1larnqxn9nanbqiadm35ah5hh89xrzm4fdj9pfc93zzzhlfrvhb3"))))
     (properties `((upstream-name . "showtext")))
     (build-system r-build-system)
     (inputs
@@ -21177,14 +21663,14 @@ See e.g. Gentle (2003) @url{doi:10.1007/b97336}.")
 (define-public r-lhs
   (package
     (name "r-lhs")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lhs" version))
        (sha256
         (base32
-         "1l861h76q5w0nbnbybhgg7hiw7fks677jakyd49n1whwvd48sfz4"))))
+         "1dim6pw2vjvsk269dff5bzpnyh9rp4qa9gj8y61bd31384q5c92c"))))
     (properties `((upstream-name . "lhs")))
     (build-system r-build-system)
     (propagated-inputs (list r-rcpp))
@@ -21300,14 +21786,14 @@ models.")
 (define-public r-gamlss
   (package
     (name "r-gamlss")
-    (version "5.3-4")
+    (version "5.4-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss" version))
        (sha256
         (base32
-         "06mh00jjxnqwknbv777hawjk0zm81ixrp35fg59mrlqz8y3p2w3j"))))
+         "0fp9bmgykpqd950bk58dk423iy5r1fm3dy2gw0cwwmgivpq2lx0q"))))
     (properties `((upstream-name . "gamlss")))
     (build-system r-build-system)
     (propagated-inputs
@@ -21633,14 +22119,14 @@ transcription, ...")
 (define-public r-seewave
   (package
     (name "r-seewave")
-    (version "2.1.8")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seewave" version))
        (sha256
         (base32
-         "1szcvryvl4kb3av2pcvl14bz6whl7xrq4wb1ck6w7lfc4mrlirhh"))))
+         "0bi1l47l3846c18k6h2vrv0xp9xh00n544a578jrndahzrj1hfwl"))))
     (properties `((upstream-name . "seewave")))
     (build-system r-build-system)
     (inputs
@@ -22553,14 +23039,14 @@ number embedded in the file rather than the file extension.")
 (define-public r-imager
   (package
     (name "r-imager")
-    (version "0.42.11")
+    (version "0.42.13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "imager" version))
        (sha256
         (base32
-         "1a1jhmgrpv1d0fk14axj88qvxgb25bqnj65d60g1k985ipzvgy27"))))
+         "0zygnmxwbbmj5i2l2affzdz90xvsa7b5pbkzkhjbm40is69rh2nr"))))
     (properties `((upstream-name . "imager")))
     (build-system r-build-system)
     (inputs
@@ -22613,14 +23099,14 @@ it may be seen by an animal with less acute vision.")
 (define-public r-caret
   (package
     (name "r-caret")
-    (version "6.0-90")
+    (version "6.0-91")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "caret" version))
        (sha256
         (base32
-         "1g36m06hp2fxxwv155bwbqlf97xhcia1lmg3axg6d74kgpns8lg8"))))
+         "1kbx51cf71z2x19a0jflwnhx5jd9wk9q9203kzdxlqw5izdjvmdz"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-e1071
@@ -22751,13 +23237,13 @@ Visualizations are also available for most of these settings.")
 (define-public r-torch
   (package
     (name "r-torch")
-    (version "0.6.0")
+    (version "0.7.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "torch" version))
        (sha256
-        (base32 "05vxb84qxna1rpzqhjw6gwyc569zyz7rfbdkahglvihqjjwabc4x"))))
+        (base32 "163pvl3gyz7l2fmqhgg4k6pw4dmvfir71yp9l5ra2k4zc32lz166"))))
     (properties `((upstream-name . "torch")))
     (build-system r-build-system)
     (arguments
@@ -23291,14 +23777,14 @@ automatically show a loader when the output is (re)calculating.")
 (define-public r-rsvg
   (package
     (name "r-rsvg")
-    (version "2.1.2")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rsvg" version))
        (sha256
         (base32
-         "10p6aps2rsvhf4xgngl9x20cf2wqbzhlpjds8biyihvj58c1q8nn"))))
+         "05mvi1ijnxayyj1f4p8nb56pncmm7x0sbq0d87asv7c7kw765n1a"))))
     (properties `((upstream-name . "rsvg")))
     (build-system r-build-system)
     (inputs
@@ -23802,14 +24288,14 @@ Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
 (define-public r-quanteda
   (package
     (name "r-quanteda")
-    (version "3.2.0")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quanteda" version))
        (sha256
         (base32
-         "0q72jsc6zalnl35qq02z9niissnyax4zxzqzpfpjsmgmxpd797mw"))))
+         "102wlx6481fskgdr5wv467n29f666q0qg9kjm0ivqfg9xsbvza12"))))
     (properties `((upstream-name . "quanteda")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23950,14 +24436,14 @@ be constant or piecewise-constant in time.")
 (define-public r-ltm
   (package
     (name "r-ltm")
-    (version "1.1-1")
+    (version "1.2-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ltm" version))
        (sha256
         (base32
-         "1qrgzwx5l58qf5rfp1knxc84r0g943q5sdr3ky74zzwpnmrf2vf7"))))
+         "0vhgbk6j0z3limsrbjkjkpfn2whiaij5j4jf1gg66mjs9dlylap1"))))
     (properties `((upstream-name . "ltm")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24066,14 +24552,14 @@ package by providing:
 (define-public r-sem
   (package
     (name "r-sem")
-    (version "3.1-13")
+    (version "3.1-14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sem" version))
        (sha256
         (base32
-         "0r9g4j0w6q4qy9jl9gkjkihml4109ymg3y6zmhyg806q19qryx07"))))
+         "18m54hjl3w57n4ygnkcy80w0dc9dz1zvavjqh9sl6nqs52f9m246"))))
     (properties `((upstream-name . "sem")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24204,14 +24690,14 @@ Complete access to optimized C functions is made available with
 (define-public r-openmx
   (package
     (name "r-openmx")
-    (version "2.20.0")
+    (version "2.20.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "OpenMx" version))
        (sha256
         (base32
-         "1flkm5nsvdnqhjayzajv80lsvjbh21v4zbm7ak09051x0giv3shj"))))
+         "1v969100hllh0lwlxd2gv0k7krrsp9gc07iinx0nn04wkzh0rib5"))))
     (properties `((upstream-name . "OpenMx")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24264,14 +24750,14 @@ importation and recoding.")
 (define-public r-rockchalk
   (package
     (name "r-rockchalk")
-    (version "1.8.144")
+    (version "1.8.151")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rockchalk" version))
        (sha256
         (base32
-         "07dp1n155b9gfvk8l30h6bhjbhbylsjxfzns08mryn4mxj3nqpnb"))))
+         "17mfaxn3gj0vac5wdmsjj2z2668cszbpvan7hnxp7ic9bvsm1w2y"))))
     (properties `((upstream-name . "rockchalk")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24357,14 +24843,14 @@ network, tree, dendrogram, and Sankey graphs from R using data frames.")
 (define-public r-qgraph
   (package
     (name "r-qgraph")
-    (version "1.9")
+    (version "1.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "qgraph" version))
        (sha256
         (base32
-         "1ahhzp64jdgki5p2wga5mn8a2n1x2zldgpilrpf7hy5l9nf4imz1"))))
+         "0r225b7rnsv6wz41ij0msmqr1xy0iqxh9dbsvjixbi1hvgv91wds"))))
     (properties `((upstream-name . "qgraph")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24399,14 +24885,14 @@ model estimation.  See Epskamp et al. (2012)
 (define-public r-semplot
   (package
     (name "r-semplot")
-    (version "1.1.2")
+    (version "1.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "semPlot" version))
        (sha256
         (base32
-         "0l1v9yi1pv59iwfknw4dh9qskk5y8r347jq1vq13gnfd3bmd71xr"))))
+         "0d7v9yqc9nhx3hdrp444w1ah66zai3lg5y778m85r7ngh1prxlvc"))))
     (properties `((upstream-name . "semPlot")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24418,7 +24904,6 @@ model estimation.  See Epskamp et al. (2012)
            r-openmx
            r-plyr
            r-qgraph
-           r-regsem
            r-rockchalk
            r-sem
            r-xml))
@@ -24718,14 +25203,14 @@ series/point highlighting.")
 (define-public r-shinystan
   (package
     (name "r-shinystan")
-    (version "2.5.0")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "shinystan" version))
        (sha256
         (base32
-         "18alf5kiqw7y2l6m5nxxizwc2znsf9frxfsqhvgcad8hld9cbya5"))))
+         "0afm703zriyqprz1zvypir80lq2ylfff3qvj5i7p9n365mm8b150"))))
     (properties `((upstream-name . "shinystan")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24738,7 +25223,6 @@ series/point highlighting.")
            r-gtools
            r-markdown
            r-reshape2
-           r-rsconnect
            r-rstan
            r-shiny
            r-shinyjs
@@ -25252,13 +25736,13 @@ appropriate dog and cat images for many status codes.")
 (define-public r-latex2exp
   (package
     (name "r-latex2exp")
-    (version "0.9.0")
+    (version "0.9.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "latex2exp" version))
               (sha256
                (base32
-                "0hfixybyds1jxhyiy3p6256z0fxzc65r654jhc62q9cd3v86a5z6"))))
+                "0zbbrbgg524lpm733j8qsqk5ssg75c51s6dgzb18c6fk8byrx945"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-stringr r-magrittr))
@@ -25856,14 +26340,14 @@ including means, variances, intervals, and highest density regions.")
 (define-public r-posterior
   (package
     (name "r-posterior")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "posterior" version))
        (sha256
         (base32
-         "11j3jgk8mykicqi77a6frn0gck7fx0i6sl6g774sqj44m48ig81b"))))
+         "1qdg22l868daqg2axr36szl1m9z0rfpgx8zmv1x1xwm1hmlf0mxp"))))
     (properties `((upstream-name . "posterior")))
     (build-system r-build-system)
     (propagated-inputs
@@ -26396,18 +26880,18 @@ you can automate browsers locally or remotely.")
 (define-public r-conquer
   (package
     (name "r-conquer")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "conquer" version))
        (sha256
         (base32
-         "0i9g27f52zl2kb2392g0y614drf6s87dqz12aphj889ajq7zjm0k"))))
+         "1z07p4xcrxvnicwgga7hqvqzcxavwirw828285i0xlnz54rqhsc8"))))
     (properties `((upstream-name . "conquer")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-caret r-matrix r-matrixstats r-rcpp r-rcpparmadillo))
+     (list r-matrix r-matrixstats r-rcpp r-rcpparmadillo))
     (home-page "https://github.com/XiaoouPan/conquer")
     (synopsis "Convolution-type smoothed quantile regression")
     (description
@@ -26650,14 +27134,14 @@ package.")
 (define-public r-spatstat-geom
   (package
     (name "r-spatstat-geom")
-    (version "2.3-1")
+    (version "2.3-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat.geom" version))
        (sha256
         (base32
-         "1h3ja45in7hnar2gwqp18jkz4rcqi99gllar6jqzlsvdbb85hgpj"))))
+         "0aihimb4r6hmk3g7764d3b43a0znf9bzmc96i1lkqq9hwabj7151"))))
     (properties `((upstream-name . "spatstat.geom")))
     (build-system r-build-system)
     (propagated-inputs
@@ -26673,14 +27157,14 @@ for the geometry of linear networks.")
 (define-public r-spatstat-core
   (package
     (name "r-spatstat-core")
-    (version "2.3-2")
+    (version "2.4-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat.core" version))
        (sha256
         (base32
-         "0g7nj8nf9ywhdbc5irxlry6kzq6bwwbkk9cp22kyv1wigycnskbz"))))
+         "1dx6fh6l3bqxqfaczm9gxx1sirmdpx8biag462pj9wjqmw9m4j35"))))
     (properties `((upstream-name . "spatstat.core")))
     (build-system r-build-system)
     (propagated-inputs
@@ -26692,6 +27176,7 @@ for the geometry of linear networks.")
            r-rpart
            r-spatstat-data
            r-spatstat-geom
+           r-spatstat-random
            r-spatstat-sparse
            r-spatstat-utils
            r-tensor))
@@ -26705,14 +27190,14 @@ user-level code from spatstat, except for the code for linear networks.")
 (define-public r-spatstat-linnet
   (package
     (name "r-spatstat-linnet")
-    (version "2.3-1")
+    (version "2.3-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat.linnet" version))
        (sha256
         (base32
-         "1hrqa2i6mp7d79jw4h56b8hk9590959s79vh9xcsj6k5vbisd6qi"))))
+         "0y1py6x0xbw4ad3pjwcspi4ysgfh61f5fd79787zzgyyh2va8y4w"))))
     (properties
      `((upstream-name . "spatstat.linnet")))
     (build-system r-build-system)
@@ -26721,6 +27206,7 @@ user-level code from spatstat, except for the code for linear networks.")
            r-spatstat-core
            r-spatstat-data
            r-spatstat-geom
+           r-spatstat-random
            r-spatstat-sparse
            r-spatstat-utils))
     (home-page "http://spatstat.org/")
@@ -26730,22 +27216,50 @@ user-level code from spatstat, except for the code for linear networks.")
 for spatial data on a linear network.")
     (license license:gpl2+)))
 
+(define-public r-spatstat-random
+  (package
+    (name "r-spatstat-random")
+    (version "2.1-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "spatstat.random" version))
+       (sha256
+        (base32 "0ggzl64iqf7b6n81ga66wb01sm4rmzrbimv2pmgy047mjnqsnpq4"))))
+    (properties `((upstream-name . "spatstat.random")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-spatstat-data r-spatstat-geom r-spatstat-utils))
+    (home-page "http://spatstat.org/")
+    (synopsis "Random Generation Functionality for the 'spatstat' Family")
+    (description
+     "This package provides functionality for random generation of spatial
+data in the spatstat family of packages.  It generates random spatial patterns
+of points according to many simple rules (complete spatial randomness,
+Poisson, binomial, random grid, systematic, cell), randomised alteration of
+patterns (thinning, random shift, jittering), simulated realisations of random
+point processes (simple sequential inhibition, Matern inhibition models,
+Matern cluster process, Neyman-Scott cluster processes, log-Gaussian Cox
+processes, product shot noise cluster processes) and simulation of Gibbs point
+processes (Metropolis-Hastings birth-death-shift algorithm, alternating Gibbs
+sampler).")
+    (license license:gpl2+)))
+
 (define-public r-spatstat
   (package
     (name "r-spatstat")
-    (version "2.3-0")
+    (version "2.3-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat" version))
        (sha256
         (base32
-         "01jckks3j39854mhsarzyzn4rj82h1xrnyd2b6fyzizj48vl80ns"))))
+         "0skk377fw448gvdk6jkcviqbqdjn2vdz19vfk8aiilxax4xba1hr"))))
     (properties `((upstream-name . "spatstat")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-spatstat-core r-spatstat-data r-spatstat-geom
-           r-spatstat-linnet r-spatstat-utils))
+           r-spatstat-linnet r-spatstat-random r-spatstat-utils))
     (home-page "http://www.spatstat.org")
     (synopsis "Spatial Point Pattern analysis, model-fitting, simulation, tests")
     (description
@@ -26861,14 +27375,14 @@ aggregation for comparing different implementations in order to provide a
 (define-public r-rfast
   (package
     (name "r-rfast")
-    (version "2.0.4")
+    (version "2.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rfast" version))
        (sha256
         (base32
-         "1n9imwkkq14ickp0g34jyha4jkr180xj0ar8xh3hqqi4dvihg6cm"))))
+         "0zxykq021h57mq0n6giqbx8ncjsdly0arhmaj3fcp3yfcxf4ns9l"))))
     (properties `((upstream-name . "Rfast")))
     (build-system r-build-system)
     (propagated-inputs
@@ -27741,20 +28255,22 @@ Design} (SFD) and to test their quality.")
 (define-public r-dials
   (package
     (name "r-dials")
-    (version "0.0.10")
+    (version "0.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dials" version))
        (sha256
         (base32
-         "1vhqcfwgic01pkw0i3000fvqq9yxfzsv26c0psfjhxkkdcz8h2px"))))
+         "02i9ddzi7gk5bwg87x8bpazk89mn102awgxzp9yw85dgbafqsydh"))))
     (properties `((upstream-name . "dials")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-dicedesign
            r-dplyr
            r-glue
+           r-hardhat
+           r-lifecycle
            r-purrr
            r-rlang
            r-scales
@@ -28053,19 +28569,21 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.")
 (define-public r-parsnip
   (package
     (name "r-parsnip")
-    (version "0.1.7")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parsnip" version))
        (sha256
         (base32
-         "12chngdzplwkk1c9k8y7cwaqlyy72yamlknp7ksg7g9p3b58f1fb"))))
+         "0g213c91lzwq9hd22yxkj3igqw04czncnbc4jddnpghp4gpfn1kn"))))
     (properties `((upstream-name . "parsnip")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-dplyr
+     (list r-cli
+           r-dplyr
            r-generics
+           r-ggplot2
            r-globals
            r-glue
            r-hardhat
@@ -28076,7 +28594,8 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.")
            r-rlang
            r-tibble
            r-tidyr
-           r-vctrs))
+           r-vctrs
+           r-withr))
     (native-inputs
      (list r-knitr))
     (home-page "https://parsnip.tidymodels.org")
@@ -28411,14 +28930,14 @@ designs.  Broman et al. (2018) <doi:10.1534/genetics.118.301595>.")
 (define-public r-seqminer
   (package
     (name "r-seqminer")
-    (version "8.2")
+    (version "8.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seqminer" version))
        (sha256
         (base32
-         "097313x72jr2q6dp8ma33w8kyp3gfw71snf1qx2maxbwwnysk085"))))
+         "1mbx1hw9dhgry7hhan43g6aiz2lyd5api7wxq3fwajyzjrc6p1g8"))))
     (build-system r-build-system)
     (inputs
      (list zlib))
@@ -28461,14 +28980,14 @@ as allowing spectra with different resolutions.")
 (define-public r-scattermore
   (package
     (name "r-scattermore")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "scattermore" version))
        (sha256
         (base32
-         "18nzlprmphkvjg946h10h2qq0wbkmv2526p8di6k2xl4gccq0qpk"))))
+         "1rgqm7r1k7j3h2y4i6d1a2y8fzivfcbmr7dj9d367c0w4vc77pfv"))))
     (properties `((upstream-name . "scattermore")))
     (build-system r-build-system)
     (propagated-inputs
@@ -29081,19 +29600,20 @@ implemented as @code{R6} classes.")
 (define-public r-mlr3
   (package
     (name "r-mlr3")
-    (version "0.13.1")
+    (version "0.13.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3" version))
               (sha256
                (base32
-                "052685d08cfsrh3r31yn05ngwi6z3fmz26gwiy32z7cpcigz8jjs"))))
+                "010kl51zsgpc0qv63g1fg9kiw9m0wzqskcr14f1j8b9zi1lwi0bf"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-r6
            r-backports
            r-checkmate
            r-data-table
+           r-evaluate
            r-future
            r-future-apply
            r-lgr
@@ -29144,14 +29664,14 @@ vector machines, and gradient boosting.")
 (define-public r-bbotk
   (package
     (name "r-bbotk")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bbotk" version))
        (sha256
         (base32
-         "15y1w3mi1g91p73786ql1mmqld011757vax17i1vq7zw1s51yzxz"))))
+         "1171vcs96j8f4n0rjsbbiscs4nxgd4209lr9biy99lvhjvjdsfsm"))))
     (properties `((upstream-name . "bbotk")))
     (build-system r-build-system)
     (propagated-inputs
@@ -29174,13 +29694,13 @@ annealing.")
 (define-public r-mlr3tuning
   (package
     (name "r-mlr3tuning")
-    (version "0.10.0")
+    (version "0.12.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3tuning" version))
               (sha256
                (base32
-                "0cqbqp53053v7lvi9ynpr860n8fm9w9842hai5z6xvmgzqdmjiyp"))))
+                "0qly6bsfazqcf0a7c2a6k3wghczm8v1fxw9pxa76gpw51x2j2ld0"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-bbotk
@@ -29466,14 +29986,14 @@ the font tool-set provided by the @code{systemfonts} package.")
 (define-public r-ragg
   (package
     (name "r-ragg")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ragg" version))
        (sha256
         (base32
-         "08dknkibmmwllycga2cp2732idsi3jfkkl5ghh6r2g2wdli1n2y1"))))
+         "1q43pwmljsqgrikkh2g1n7bpz9c8py5dnj44cfg3y2br7b4m2q9v"))))
     (properties `((upstream-name . "ragg")))
     (build-system r-build-system)
     (inputs
@@ -29982,30 +30502,26 @@ data you need the @code{pdftools} package.")
 (define-public r-pdftools
   (package
     (name "r-pdftools")
-    (version "3.0.1")
+    (version "3.1.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "pdftools" version))
-        (sha256
-          (base32
-            "1dcbs5n5y8zi7bbyx491m9ik8kkmjr301x8ms85fmwdfb5a97m8k"))))
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "pdftools" version))
+       (sha256
+        (base32
+         "1lflqf2ypdm4w033vyjykmsy8cl34sp42fzkfgfdhvl2d0xjhl96"))))
     (properties `((upstream-name . "pdftools")))
     (build-system r-build-system)
-    (inputs
-      (list zlib poppler))
-    (propagated-inputs
-      (list r-qpdf r-rcpp))
+    (inputs (list zlib poppler))
+    (propagated-inputs (list r-qpdf r-rcpp))
     (native-inputs (list pkg-config))
-    (home-page
-      "https://docs.ropensci.org/pdftools/")
-    (synopsis
-      "Text Extraction, Rendering and Converting of PDF Documents")
+    (home-page "https://docs.ropensci.org/pdftools/")
+    (synopsis "Text Extraction, Rendering and Converting of PDF Documents")
     (description
-      "Utilities based on @code{libpoppler} for extracting text, fonts,
-attachments and metadata from a PDF file.  Also supports high quality rendering
-of PDF documents into PNG, JPEG, TIFF format, or into raw bitmap vectors for
-further processing in R.")
+     "This package provides utilities based on @code{libpoppler} for
+extracting text, fonts, attachments and metadata from a PDF file.  It also
+supports high quality rendering of PDF documents into PNG, JPEG, TIFF format,
+or into raw bitmap vectors for further processing in R.")
     (license license:expat)))
 
 (define-public r-antiword
@@ -30760,13 +31276,13 @@ reading and writing arbitrary protocol-buffer data in R.")
 (define-public r-opencpu
   (package
     (name "r-opencpu")
-    (version "2.2.6")
+    (version "2.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "opencpu" version))
        (sha256
-        (base32 "0cmjfhkbk4im3x8aas0q5pivlsxgqixf4f3jiindchki7g9nsw91"))))
+        (base32 "06jpmk95hm39ib5c75xw0mdrdv9x9zz1qil3m8ysb6pp1xx47jz0"))))
     (properties `((upstream-name . "opencpu")))
     (build-system r-build-system)
     (inputs
@@ -30877,14 +31393,14 @@ package.")
 (define-public r-qs
   (package
     (name "r-qs")
-    (version "0.25.2")
+    (version "0.25.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "qs" version))
        (sha256
         (base32
-         "1gswppmw8rhd7h50hffhss4c4niz0x54r9sc8pgqzy26vkjqlhpy"))))
+         "0sxy497v5arjv6lwxng7chkbzrn703waqmgsxv77i7y12ahzdbai"))))
     (properties `((upstream-name . "qs")))
     (build-system r-build-system)
     (inputs (list zlib))
@@ -30983,14 +31499,14 @@ Tensorflow graphs.")
 (define-public r-tensorflow
   (package
     (name "r-tensorflow")
-    (version "2.7.0")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tensorflow" version))
        (sha256
         (base32
-         "0xgm8jb1hl8564vviqys3aqwzvfbh0d43m154cj07j9spdz306ng"))))
+         "19ayjvlxmgjais0kx6fj9an1h1i8mh4c9dhah7dj6390p53pgz93"))))
     (properties `((upstream-name . "tensorflow")))
     (build-system r-build-system)
     (inputs (list tensorflow))
@@ -31014,14 +31530,14 @@ between them.")
 (define-public r-keras
   (package
     (name "r-keras")
-    (version "2.7.0")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "keras" version))
        (sha256
         (base32
-         "004z9aajc0b7lw7g68ri7ndabdwbylmnlyvmziljmm29z6fzk8y5"))))
+         "10zvy4lmhb2sbn0gsm12pf95pxj9bmi8241ap1n6170xsld9phcf"))))
     (properties `((upstream-name . "keras")))
     (build-system r-build-system)
     (propagated-inputs
@@ -31286,14 +31802,14 @@ fully reproducible.")
 (define-public r-paws-common
   (package
     (name "r-paws-common")
-    (version "0.3.15")
+    (version "0.3.16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.common" version))
        (sha256
         (base32
-         "0kj5b4253j4rljkj0ibh21kh9r1yq9idz9vf1f4ag775ivsc2dk5"))))
+         "0mdbnbjprghiwz4i9abh62l5q6mncz3iq76wxvj7ncinf89kd83w"))))
     (properties `((upstream-name . "paws.common")))
     (build-system r-build-system)
     (propagated-inputs
@@ -31736,14 +32252,14 @@ internally managed by a zoolog thesaurus.")
 (define-public r-filehash
   (package
     (name "r-filehash")
-    (version "2.4-2")
+    (version "2.4-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "filehash" version))
        (sha256
         (base32
-         "14zv7h5195dmfksgk8qvjgc2qq8253vga6267aa1bqs5bpvmdl5n"))))
+         "1ga17smgjd4qsnf5a7qk0giwhpc5969ylqj520favs1k6b4y557k"))))
     (properties `((upstream-name . "filehash")))
     (build-system r-build-system)
     (home-page "http://github.com/rdpeng/filehash")
@@ -31921,6 +32437,26 @@ least four days in the calendar year.  This package provides functionality to
 convert dates to MMWR day, week, and year and the reverse.")
     (license license:gpl2+)))
 
+(define-public r-cccd
+  (package
+    (name "r-cccd")
+    (version "1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "cccd" version))
+       (sha256
+        (base32 "0m364zsrgr7mh1yhl2lqxpaf71gzq3y3pp9qgnj4spiy4iadyy7i"))))
+    (properties `((upstream-name . "cccd")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-deldir r-fnn r-igraph r-proxy))
+    (home-page "https://cran.r-project.org/package=cccd")
+    (synopsis "Class cover catch digraphs")
+    (description
+     "This package provides tools to create Class Cover Catch Digraphs,
+neighborhood graphs, and relatives.")
+    (license license:gpl2+)))
+
 (define-public r-crul
   (package
     (name "r-crul")
@@ -32114,17 +32650,112 @@ query parameters, request body, headers and more.  It can be used for unit
 tests or outside of a testing context.")
     (license license:expat)))
 
+(define-public r-iotools
+  (package
+    (name "r-iotools")
+    (version "0.3-2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "iotools" version))
+       (sha256
+        (base32 "07q0z0kszm1xx5hfhisfliyrcsxd8dc5mx0a2bwwnv5l1xzmix17"))))
+    (properties `((upstream-name . "iotools")))
+    (build-system r-build-system)
+    (home-page "https://www.rforge.net/iotools")
+    (synopsis "I/O tools for streaming")
+    (description "This package provides basic I/O tools for streaming and data
+parsing.")
+    ;; GPL 2 or GPL 3.
+    (license license:gpl3)))
+
+(define-public r-wordspace
+  (package
+    (name "r-wordspace")
+    (version "0.2-7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "wordspace" version))
+       (sha256
+        (base32 "0hrjv5mag7gwl4wj7np248sdyns5i623wl37b11hlgalhbmlypyf"))))
+    (properties `((upstream-name . "wordspace")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-cluster r-iotools r-mass r-matrix r-rcpp r-sparsesvd))
+    (native-inputs (list r-knitr))
+    (home-page "https://wordspace.r-forge.r-project.org/")
+    (synopsis "Distributional semantic models in R")
+    (description
+     "The wordspace package turns R into an interactive laboratory for
+empirical research on @dfn{distributional semantic models} (DSM).  It consists
+of a small set of carefully designed functions, most of which
+
+@itemize
+@item encapsulate non-trivial R operations in a user-friendly manner or
+@item provide efficient and memory-lean C implementations of key operations.
+@end itemize
+")
+    (license license:gpl3)))
+
+(define-public r-maxlik
+  (package
+    (name "r-maxlik")
+    (version "1.5-2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "maxLik" version))
+       (sha256
+        (base32 "0pdigfpyiqacj2ydhpn5w1h89dz1ydk0syzs25lsgdi40sz0bvkw"))))
+    (properties `((upstream-name . "maxLik")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-generics r-misctools r-sandwich))
+    (home-page "https://cran.r-project.org/package=maxLik")
+    (synopsis "Maximum Likelihood Estimation and related tools")
+    (description
+     "This package provides functions for @dfn{Maximum Likelihood} (ML) estimation,
+non-linear optimization, and related tools.  It includes a unified way to call
+different optimizers, and classes and methods to handle the results from the
+Maximum Likelihood viewpoint.  It also includes a number of convenience tools
+for testing and developing your own models.")
+    (license license:gpl2+)))
+
+(define-public r-misctools
+  (package
+    (name "r-misctools")
+    (version "0.6-26")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "miscTools" version))
+       (sha256
+        (base32 "16pwfxpyl0zv3hjxx2kjchkg7p6kbj0s2rrpskj7rkhjr9imlg5y"))))
+    (properties `((upstream-name . "miscTools")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-digest))
+    (home-page "http://www.micEcon.org")
+    (synopsis "Miscellaneous tools and utilities")
+    (description
+     "This package provides miscellaneous small tools and utilities.  Many of
+them facilitate the work with matrices, e.g. inserting rows or columns,
+creating symmetric matrices, or checking for semidefiniteness.  Other tools
+facilitate the work with regression models, e.g. extracting the standard
+errors, obtaining the number of (estimated) parameters, or calculating
+R-squared values.")
+    (license license:gpl2+)))
+
 (define-public r-mockery
   (package
     (name "r-mockery")
-    (version "0.4.2")
+    (version "0.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mockery" version))
        (sha256
         (base32
-         "16zayzi2qdmiy513hvlci9f4p8jwry24006yfzrgmrvf6sf293lq"))))
+         "0sj77m9vgn4bzb8c8nq93xb9lm8ih8rcb7sfccripraibibg3jcz"))))
     (properties `((upstream-name . "mockery")))
     (build-system r-build-system)
     (propagated-inputs
@@ -32251,17 +32882,17 @@ options for aggregating multi-layer rasters.")
 (define-public r-bien
   (package
     (name "r-bien")
-    (version "1.2.4")
+    (version "1.2.5")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "BIEN" version))
         (sha256
-          (base32 "1dagrs54ciagm2mgqrvxl6k2akahr0qk63ifxqnks7iljm0x1gw6"))))
+          (base32 "0s98n6zbf48vssd3h63k6kashcxv1kawcb026n0ngsfpc5dv6i48"))))
     (properties `((upstream-name . "BIEN")))
     (build-system r-build-system)
     (native-inputs
-      (list r-knitr r-testthat))
+      (list r-knitr))
     (propagated-inputs
       (list r-ape
             r-dbi
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index dbd3607dc4..d1a9c4dd6d 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
@@ -102,23 +102,25 @@ shapes, lines and text to buffers.")
 (define-public rust-ansi-colours-1
   (package
     (name "rust-ansi-colours")
-    (version "1.0.1")
+    (version "1.1.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "ansi_colours" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1dnqmpk68mzvncj37jlv0362kdgsgjxg010c6psagimgh4m303qx"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ansi_colours" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03b2365y0ffkvqw61bc4imz6661jvi39vcs4q6q5d43znqrq4rrj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-cc" ,rust-cc-1))
+       (("rust-rgb" ,rust-rgb-0.8))
        #:cargo-development-inputs
-       (("rust-delta-e" ,rust-delta-e-0.2)
-        ("rust-lab" ,rust-lab-0.4))))
+       (("rust-crc64" ,rust-crc64-1)
+        ("rust-criterion" ,rust-criterion-0.3)
+        ("rust-empfindung" ,rust-empfindung-0.2)
+        ("rust-lab" ,rust-lab-0.11))))
     (home-page "https://github.com/mina86/ansi_colours")
     (synopsis "Palette converter between true-colour and ANSI terminal")
     (description
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fa9a7d9ab5..90c95b6368 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Jacob Hrbek <kreyren@rixotstudio.cz>
 ;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr>
@@ -141,6 +141,79 @@ cubic beziers.")
 library in Rust.")
     (license license:expat)))
 
+(define-public rust-abscissa-core-0.5
+  (package
+    (name "rust-abscissa-core")
+    (version "0.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "abscissa_core" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0fmvaqzdz6qg7z42dlhvs3lf338xz0gdvdhp6xc042hjjdq6f1va"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-abscissa-derive" ,rust-abscissa-derive-0.5)
+        ("rust-backtrace" ,rust-backtrace-0.3)
+        ("rust-canonical-path" ,rust-canonical-path-2)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-color-backtrace" ,rust-color-backtrace-0.3)
+        ("rust-generational-arena" ,rust-generational-arena-0.2)
+        ("rust-gumdrop" ,rust-gumdrop-0.7)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-secrecy" ,rust-secrecy-0.6)
+        ("rust-semver" ,rust-semver-0.9)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-signal-hook" ,rust-signal-hook-0.1)
+        ("rust-termcolor" ,rust-termcolor-1)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-tracing" ,rust-tracing-0.1)
+        ("rust-tracing-log" ,rust-tracing-log-0.1)
+        ("rust-tracing-subscriber" ,rust-tracing-subscriber-0.1)
+        ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
+    (home-page "https://github.com/iqlusioninc/abscissa/")
+    (synopsis "Application microframework")
+    (description
+     "This package provides application microframework with support
+for command-line option parsing, configuration, error handling, logging,
+and terminal interactions.  This crate contains the framework's core
+functionality.")
+    (license license:asl2.0)))
+
+(define-public rust-abscissa-derive-0.5
+  (package
+    (name "rust-abscissa-derive")
+    (version "0.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "abscissa_derive" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1k7cxjxgkvi91968xkrjcqpq98kabfh7qhnqh6fwnqw7qhmp5xbl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-darling" ,rust-darling-0.10)
+        ("rust-ident-case" ,rust-ident-case-1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1)
+        ("rust-synstructure" ,rust-synstructure-0.12))))
+    (home-page "https://github.com/iqlusioninc/abscissa")
+    (synopsis
+     "Custom derive support for the abscissa application microframework")
+    (description
+     "This package provides custom derive support for the abscissa application
+microframework.")
+    (license license:asl2.0)))
+
 (define-public rust-actix-0.10
   (package
     (name "rust-actix")
@@ -3913,20 +3986,20 @@ approximately equal.")
 (define-public rust-assert-cmd-2
   (package
     (name "rust-assert-cmd")
-    (version "2.0.2")
+    (version "2.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "assert_cmd" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1qhzr8p3iv8rpa6xqg247ad198rhxhljx23b17qpx2w381wxr5p9"))))
+        (base32 "0gpqwasl690zimy13rn614mpzgykpa09v5xivs4pdmpg77fivblk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-concolor-control" ,rust-concolor-control-0.0.7)
+        ("rust-concolor" ,rust-concolor-0.0.8)
         ("rust-doc-comment" ,rust-doc-comment-0.3)
         ("rust-predicates" ,rust-predicates-2)
         ("rust-predicates-core" ,rust-predicates-core-1)
@@ -3991,14 +4064,14 @@ assertions on the result of your program's run.")
 (define-public rust-assert-fs-1
   (package
     (name "rust-assert-fs")
-    (version "1.0.3")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "assert-fs" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0rcllf1d1l121fnsxy84bbqkg1sym5gs4mp0aw1nyv3f0sinmjmh"))))
+        (base32 "01qhcr9faq13p10kmi6j6k520dk20c8vxly8cqwkisdxx6fk8yvx"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -9098,7 +9171,7 @@ exposed as Reader/Writer streams.")
 (define-public rust-bytesize-1
   (package
     (name "rust-bytesize")
-    (version "1.0.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
@@ -9107,7 +9180,7 @@ exposed as Reader/Writer streams.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1nl2j2bi9nk3q564jhyb77947wdv5ch54r14gjv4c59s563qd8c1"))))
+         "0w7wmmbcirxp5isza0i1lxq5d7r7f0z1pxbxl5f6s1n5m8vfqn3c"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -9446,6 +9519,27 @@ spreadsheet file.")
     (description "This package provides a UTF-8 paths.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-canonical-path-2
+  (package
+    (name "rust-canonical-path")
+    (version "2.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "canonical-path" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0vvsjda6ka5nz8zvx6r08zqi0j59sjccgcbjxj96xj764w9y1sg6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t))
+    (home-page "https://github.com/iqlusioninc/crates/")
+    (synopsis "Path and PathBuf-like types for canonical filesystem paths")
+    (description
+     "This package provides Path and PathBuf-like types for representing
+canonical filesystem paths.")
+    (license license:asl2.0)))
+
 (define-public rust-capnp-0.13
   (package
     (name "rust-capnp")
@@ -9755,6 +9849,93 @@ capabilities.")
 the library crate of Cargo.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cargo-audit-0.16
+  (package
+    (name "rust-cargo-audit")
+    (version "0.16.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "cargo-audit" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ixlfc8h7qgyr1ng37kx1f222g3pc97sm72pgj1mkl6q3daf5a7m"))))
+    (build-system cargo-build-system)
+    (arguments
+     ;; disable due to network connection
+     ;; https://github.com/rustsec/rustsec/issues/507
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-abscissa-core" ,rust-abscissa-core-0.5)
+        ("rust-gumdrop" ,rust-gumdrop-0.7)
+        ("rust-home" ,rust-home-0.5)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-rustsec" ,rust-rustsec-0.25)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-thiserror" ,rust-thiserror-1))
+       #:cargo-development-inputs
+       (("rust-abscissa-core" ,rust-abscissa-core-0.5)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-toml" ,rust-toml-0.5))))
+    (native-inputs (list pkg-config))
+    (inputs (list libssh2 openssl zlib))
+    (home-page "https://rustsec.org")
+    (synopsis "Audit @file{Cargo.lock} for crates with security vulnerabilities")
+    (description "This package audits @file{Cargo.lock} for crates with
+security vulnerabilities.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-cargo-edit-0.8
+  (package
+    (name "rust-cargo-edit")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "cargo-edit" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0yk5f4qjzflfqzgfws9zifij2fqchc9q551m7ljznmjrhlif2yh4"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-atty" ,rust-atty-0.2)
+        ("rust-error-chain" ,rust-error-chain-0.12)
+        ("rust-git2" ,rust-git2-0.13)
+        ("rust-hex" ,rust-hex-0.4)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-semver" ,rust-semver-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-termcolor" ,rust-termcolor-1)
+        ("rust-toml-edit" ,rust-toml-edit-0.3)
+        ("rust-url" ,rust-url-2)
+        ("rust-crates-index" ,rust-crates-index-0.17)
+        ("rust-cargo-metadata" ,rust-cargo-metadata-0.14)
+        ("rust-dirs-next" ,rust-dirs-next-2)
+        ("rust-dunce" ,rust-dunce-1)
+        ("rust-env-proxy" ,rust-env-proxy-0.4)
+        ("rust-pathdiff" ,rust-pathdiff-0.2)
+        ("rust-structopt" ,rust-structopt-0.3)
+        ("rust-subprocess" ,rust-subprocess-0.2)
+        ("rust-toml-edit" ,rust-toml-edit-0.3)
+        ("rust-ureq" ,rust-ureq-1))
+       #:cargo-development-inputs
+       (("rust-assert-cmd" ,rust-assert-cmd-2)
+        ("rust-assert-fs" ,rust-assert-fs-1)
+        ("rust-predicates" ,rust-predicates-2)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6))))
+    (home-page "https://github.com/killercup/cargo-edit")
+    (synopsis "Add and remove dependencies from the command line")
+    (description
+     "This package extends Cargo to allow you to add and remove dependencies
+by modifying your @file{Cargo.toml} file from the command line.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-cargo-metadata-0.14
   (package
     (name "rust-cargo-metadata")
@@ -9882,6 +10063,34 @@ metadata}.")
         ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1))))))
 
+(define-public rust-cargo-lock-7
+  (package
+    (name "rust-cargo-lock")
+    (version "7.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "cargo-lock" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "122wirj0d44xi2i7sc6anjimqfvgw5p5ry840zikc82vpn44pc3z"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-gumdrop" ,rust-gumdrop-0.8)
+        ("rust-petgraph" ,rust-petgraph-0.6)
+        ("rust-semver" ,rust-semver-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-url" ,rust-url-2))))
+    (home-page "https://rustsec.org")
+    (synopsis "@file{Cargo.lock} parser with optional dependency graph analysis")
+    (description
+     "This package provides self-contained @file{Cargo.lock} parser with
+optional dependency graph analysis.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-cargo-platform-0.1
   (package
     (name "rust-cargo-platform")
@@ -10249,7 +10458,12 @@ chain, the first matching branch is the item that gets emitted.")
        (uri (crate-uri "chacha20" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "14cgpnnpqsn5hmqkgrj4yaqdsvy56hkgcw5s2gqsxwhc7m1jmdq1"))))
+        (base32 "14cgpnnpqsn5hmqkgrj4yaqdsvy56hkgcw5s2gqsxwhc7m1jmdq1"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "Cargo.toml"
+             (("version = \">=1, <1.5\"") "version = \"^1\""))))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -10281,7 +10495,12 @@ XChaCha20, XChaCha12 and XChaCha8 stream ciphers, and also optional
        (uri (crate-uri "chacha20poly1305" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0alawaaakczsll1b98qf4m6r6kfaw28506ljvsysjyjz3mnyv11v"))))
+        (base32 "0alawaaakczsll1b98qf4m6r6kfaw28506ljvsysjyjz3mnyv11v"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "Cargo.toml"
+             (("version = \">=1, <1.5\"") "version = \"^1\""))))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -11705,53 +11924,23 @@ diagnostics easy and relatively painless for everyone!")
     (description "This package provides colorful panic backtraces.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-concolor-query
+(define-public rust-color-backtrace-0.3
   (package
-    (name "rust-concolor-query")
-    (version "0.0.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "concolor-query" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1isbqpyiwblp0rglnaqzai5hav23095s82mwgi09v3xcck4rq5dd"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/rust-cli/concolor")
-    (synopsis "Rust library to query low level terminal capabilities")
-    (description "@code{concolor-query} can be used to query a terminal
-capabilities, for example to find out about its colored console abilities.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-concolor-control
-  (package
-    (name "rust-concolor-control")
-    (version "0.0.7")
+    (inherit rust-color-backtrace-0.5)
+    (name "rust-color-backtrace")
+    (version "0.3.0")
     (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "concolor-control" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1nplakbdb9sbd3h62d9zkan0xm1w0c7cbl3rk0iqgn405yf1213i"))))
-    (build-system cargo-build-system)
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "color-backtrace" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0mx9ycb70mqbs6z107ri5g09wz5k7pa0vfnys28wfqycg083zlb5"))))
     (arguments
-     `(#:tests? #f          ;see https://github.com/rust-cli/concolor/issues/4
-       #:cargo-inputs
-       (("rust-atty" ,rust-atty-0.2)
-        ("rust-bitflags" ,rust-bitflags-1)
-        ("rust-concolor-query" ,rust-concolor-query))))
-    (home-page "https://github.com/rust-cli/concolor")
-    (synopsis "Rust library for managing terminal styling")
-    (description "@code{concolor-control} is a terminal styling library that
-can be used to:
-@itemize
-@item Detect interactive @samp{stdout} or @samp{stderr}
-@item Detect terminal capabilities via @samp{TERM}
-@item Support @url{https://bixense.com/clicolors/, CLICOLOR} and
-@url{https://no-color.org/, NO_COLOR}.
-@end itemize")
-    (license (list license:expat license:asl2.0))))
+      `(#:cargo-inputs
+        (("rust-atty" ,rust-atty-0.2)
+         ("rust-backtrace" ,rust-backtrace-0.3)
+         ("rust-termcolor" ,rust-termcolor-1))))))
 
 (define-public rust-color-quant-1
   (package
@@ -12169,8 +12358,38 @@ harness.")
 everywhere.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-concolor-0.0.8
+  (package
+    (name "rust-concolor")
+    (version "0.0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "concolor" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1bs03868bywgz2f8x4h41akvxpxiax9b036hrpf0mwhx7db6flh1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-atty" ,rust-atty-0.2)
+        ("rust-bitflags" ,rust-bitflags-1)
+        ("rust-concolor-query" ,rust-concolor-query-0.0.5))))
+    (home-page "https://github.com/rust-cli/concolor")
+    (synopsis "Control console coloring across all dependencies")
+    (description "Concolor is a terminal styling library that can be used to:
+@itemize
+@item Detect interactive @samp{stdout} or @samp{stderr}
+@item Detect terminal capabilities via @samp{TERM}
+@item Support @url{https://bixense.com/clicolors/, CLICOLOR} and
+@url{https://no-color.org/, NO_COLOR}.
+@end itemize")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-concolor-control-0.0.7
   (package
+    (inherit rust-concolor-0.0.8)
     (name "rust-concolor-control")
     (version "0.0.7")
     (source
@@ -12180,37 +12399,45 @@ everywhere.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "1nplakbdb9sbd3h62d9zkan0xm1w0c7cbl3rk0iqgn405yf1213i"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-bitflags" ,rust-bitflags-1)
-        ("rust-concolor-query" ,rust-concolor-query-0.0.4))))
-    (home-page "https://github.com/rust-cli/concolor")
-    (synopsis "Control console coloring across all dependencies")
-    (description "This crate provides control console coloring across all
-dependencies.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-concolor-query" ,rust-concolor-query-0.0.4))))))
 
-(define-public rust-concolor-query-0.0.4
+(define-public rust-concolor-query-0.0.5
   (package
     (name "rust-concolor-query")
-    (version "0.0.4")
+    (version "0.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "concolor-query" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1isbqpyiwblp0rglnaqzai5hav23095s82mwgi09v3xcck4rq5dd"))))
+        (base32 "0jcll1lnnkbdr6xcgppf6dr0ra9rxcp78xr1zlrvba03zkk7yhfn"))))
     (build-system cargo-build-system)
     (arguments `(#:skip-build? #t))
     (home-page "https://github.com/rust-cli/concolor")
     (synopsis "Look up colored console capabilities")
-    (description "This crate provides low level terminal capability lookups.")
+    (description "@code{concolor-query} can be used to query a terminal
+capabilities, for example to find out about its colored console abilities.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-concolor-query-0.0.4
+  (package
+    (inherit rust-concolor-query-0.0.5)
+    (name "rust-concolor-query")
+    (version "0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "concolor-query" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1isbqpyiwblp0rglnaqzai5hav23095s82mwgi09v3xcck4rq5dd"))))))
+
 (define-public rust-concurrent-queue-1
   (package
     (name "rust-concurrent-queue")
@@ -13492,8 +13719,40 @@ to @code{is_x86_feature_detected}.")
     (description "This package provides bindings to Google's cpu profiler.")
     (license license:bsd-2)))
 
+(define-public rust-crates-index-0.17
+  (package
+    (name "rust-crates-index")
+    (version "0.17.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "crates-index" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0izrm8m4wic5kp5y4p3f3d50lrlbamp3wizlgr4hm56rimfazm4a"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-git2" ,rust-git2-0.13)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-hex" ,rust-hex-0.4)
+        ("rust-home" ,rust-home-0.5)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-semver" ,rust-semver-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-smartstring" ,rust-smartstring-0.2))))
+    (home-page "https://github.com/frewsxcv/rust-crates-index")
+    (synopsis "Retrieving and interacting with the crates.io index")
+    (description
+     "Library for retrieving and interacting with the crates.io index.")
+    (license license:asl2.0)))
+
 (define-public rust-crates-index-0.13
   (package
+    (inherit rust-crates-index-0.17)
     (name "rust-crates-index")
     (version "0.13.1")
     (source
@@ -13505,7 +13764,6 @@ to @code{is_x86_feature_detected}.")
        (sha256
         (base32
          "1n7pp6mk59hw3nqlh8irxc9pp0g5ziw7bprqsw2lxvg13cvdp76s"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -13516,14 +13774,7 @@ to @code{is_x86_feature_detected}.")
         ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1))
        #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir-0.3))))
-    (home-page
-     "https://github.com/frewsxcv/rust-crates-index")
-    (synopsis
-     "Retrieving and interacting with the crates.io index")
-    (description
-     "Library for retrieving and interacting with the crates.io index.")
-    (license license:asl2.0)))
+       (("rust-tempdir" ,rust-tempdir-0.3))))))
 
 (define-public rust-crates-index-0.5
   (package
@@ -13654,6 +13905,25 @@ final xor value.  It has many built-in CRC functions.")
      "Fast, SIMD-accelerated CRC32 (IEEE) checksum computation.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-crc64-1
+  (package
+    (name "rust-crc64")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "crc64" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0469vp0q9431pqx1236g60if5q3xyxpv4h14smkd45dfzsa6aqjm"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page "https://github.com/badboy/crc64-rs")
+    (synopsis "Rust CRC64 checksum implementation")
+    (description "This package provides a CRC64 checksum implementation in
+Rust.")
+    (license license:bsd-3)))
+
 (define-public rust-criterion-0.3
   (package
     (name "rust-criterion")
@@ -19035,10 +19305,10 @@ signing, and verification in pure Rust.")
      "This package provides a pure-Rust library for parsing ELF files.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-emacs-0.11
+(define-public rust-emacs-0.18
   (package
     (name "rust-emacs")
-    (version "0.11.0")
+    (version "0.18.0")
     (source
       (origin
         (method url-fetch)
@@ -19047,16 +19317,18 @@ signing, and verification in pure Rust.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1xn6nr8m3p24irlmv3i7c9n95yb10qc6aikwqv99qlmhbky5x0z7"))))
+          "0r860i73b2680i2fhdl2l1wwvvmf2zksncpckgkksdcx310ak5v7"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-ctor" ,rust-ctor-0.1)
-        ("rust-emacs-macros" ,rust-emacs-macros-0.11)
-        ("rust-emacs-module" ,rust-emacs-module-0.10)
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-ctor" ,rust-ctor-0.1)
+        ("rust-emacs-macros" ,rust-emacs-macros-0.17)
+        ("rust-emacs-module" ,rust-emacs-module-0.18)
         ("rust-failure" ,rust-failure-0.1)
         ("rust-failure-derive" ,rust-failure-derive-0.1)
-        ("rust-lazy-static" ,rust-lazy-static-1))))
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-thiserror" ,rust-thiserror-1))))
     (inputs
      (list clang))
     (home-page "https://github.com/ubolonton/emacs-module-rs")
@@ -19066,9 +19338,54 @@ signing, and verification in pure Rust.")
 Emacs' support for dynamic modules.")
     (license license:bsd-3)))
 
-(define-public rust-emacs-macros-0.11
+(define-public rust-emacs-0.11
+  (package (inherit rust-emacs-0.18)
+    (name "rust-emacs")
+    (version "0.11.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "emacs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1xn6nr8m3p24irlmv3i7c9n95yb10qc6aikwqv99qlmhbky5x0z7"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ctor" ,rust-ctor-0.1)
+        ("rust-emacs-macros" ,rust-emacs-macros-0.11)
+        ("rust-emacs-module" ,rust-emacs-module-0.10)
+        ("rust-failure" ,rust-failure-0.1)
+        ("rust-failure-derive" ,rust-failure-derive-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1))))))
+
+(define-public rust-emacs-macros-0.17
   (package
     (name "rust-emacs-macros")
+    (version "0.17.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "emacs-macros" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qg1dcn5acbirq617qq2fgg9adswif2dnr292s3qnq62wzgnyrb9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-darling" ,rust-darling-0.10)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))
+    (home-page "https://github.com/ubolonton/emacs-module-rs")
+    (synopsis "Proc macros for Emacs modules")
+    (description "This package provides proc macros for Emacs modules.")
+    (license license:bsd-3)))
+
+(define-public rust-emacs-macros-0.11
+  (package (inherit rust-emacs-macros-0.17)
+    (name "rust-emacs-macros")
     (version "0.11.0")
     (source
       (origin
@@ -19079,21 +19396,16 @@ Emacs' support for dynamic modules.")
         (sha256
          (base32
           "0390y8vafxdi334hhgrzvcqjq3n5ckcmvilqcfp8vajjq8irrly6"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-darling" ,rust-darling-0.9)
         ("rust-quote" ,rust-quote-0.6)
-        ("rust-syn" ,rust-syn-0.15))))
-    (home-page "https://github.com/ubolonton/emacs-module-rs")
-    (synopsis "Proc macros for Emacs modules")
-    (description "This package provides proc macros for Emacs modules.")
-    (license license:bsd-3)))
+        ("rust-syn" ,rust-syn-0.15))))))
 
-(define-public rust-emacs-module-0.10
+(define-public rust-emacs-module-0.18
   (package
     (name "rust-emacs-module")
-    (version "0.10.0")
+    (version "0.18.0")
     (source
       (origin
         (method url-fetch)
@@ -19102,11 +19414,11 @@ Emacs' support for dynamic modules.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1gf9lz735xbkyir53dyv362drfx3nin5an5cx39kd8q8kjjwix5g"))))
+          "1ypjyyv2ca3vza4sia91ckxamgfk63yd8frkvg3d4ph4fk4pn1mk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-bindgen" ,rust-bindgen-0.48))))
+       (("rust-bindgen" ,rust-bindgen-0.59))))
     (inputs
      (list clang))
     (home-page "https://github.com/ubolonton/emacs-module-rs")
@@ -19115,6 +19427,23 @@ Emacs' support for dynamic modules.")
 Emacs' support for dynamic modules.")
     (license license:bsd-3)))
 
+(define-public rust-emacs-module-0.10
+  (package (inherit rust-emacs-module-0.18)
+    (name "rust-emacs-module")
+    (version "0.10.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "emacs_module" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1gf9lz735xbkyir53dyv362drfx3nin5an5cx39kd8q8kjjwix5g"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bindgen" ,rust-bindgen-0.48))))))
+
 (define-public rust-email-0.0.20
   (package
     (name "rust-email")
@@ -19219,6 +19548,30 @@ inclusion of Windows resources in the most resilient fashion imaginable.")
 embedded systems.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-empfindung-0.2
+  (package
+    (name "rust-empfindung")
+    (version "0.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "empfindung" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1h68h3sxsa79a47jag3yim5jm63ffz72ifj46xkn12j2s5nss85l"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-lab" ,rust-lab-0.11)
+        ("rust-rgb" ,rust-rgb-0.8))))
+    (home-page "https://github.com/mina86/empfindung")
+    (synopsis "Rust implementation of the CIEDE2000 colour difference")
+    (description
+     "Empfindung is a pure-Rust implementation of the CIEDE2000 colour
+difference.")
+    (license license:expat)))
+
 (define-public rust-ena-0.14
   (package
     (name "rust-ena")
@@ -19977,6 +20330,29 @@ is configured via an environment variable.")
        (("rust-regex" ,rust-regex-0.1)
         ("rust-log" ,rust-log-0.3))))))
 
+(define-public rust-env-proxy-0.4
+  (package
+    (name "rust-env-proxy")
+    (version "0.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "env_proxy" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1qabqhgybx1jzh6dmpx7kssciw312i8aa6al7fj0d12k32z1jl1s"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-log" ,rust-log-0.4) ("rust-url" ,rust-url-2))))
+    (home-page "https://github.com/inejge/env_proxy")
+    (synopsis "Proxy URL from the environment variables")
+    (description
+     "This package provides a way to determinate proxy parameters for a URL
+from the environment.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-environment-0.1
   (package
     (name "rust-environment")
@@ -20158,7 +20534,7 @@ deserialized from environment variables.")
 (define-public rust-error-chain-0.12
   (package
     (name "rust-error-chain")
-    (version "0.12.2")
+    (version "0.12.4")
     (source
      (origin
        (method url-fetch)
@@ -20167,7 +20543,7 @@ deserialized from environment variables.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1ka5y0fmymxzx3gz2yrd7rpz2i555m1iw4fpmcggpzcgr1n10wfk"))))
+         "1z6y5isg0il93jp287sv7pn10i4wrkik2cpyk376wl61rawhcbrd"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -22444,6 +22820,27 @@ values to other threads.")
 duplication.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-fs-err-2
+  (package
+    (name "rust-fs-err")
+    (version "2.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "fs-err" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1q5z8d6q8310fgzg78bpmhyfigz7fkgp1bbmhcxq85k1ml23bgay"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t))
+    (home-page "https://github.com/andrewhickman/fs-err")
+    (synopsis "Better error messages for @code{std::fs} crate")
+    (description
+     "This package provides a drop-in replacement for @code{std::fs} with more
+helpful error messages.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-fs-extra-1
   (package
     (name "rust-fs-extra")
@@ -23679,6 +24076,30 @@ archive to be linked into Rustcode.")
 API library @code{gdi32}.")
     (license license:expat)))
 
+(define-public rust-generational-arena-0.2
+  (package
+    (name "rust-generational-arena")
+    (version "0.2.8")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "generational-arena" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "00gn1g6nlky883qkacvsbp19yzl5ay8avq6f902jvxkl2mvkn7cf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/fitzgen/generational-arena")
+    (synopsis "Safe arena allocator that supports deletion")
+    (description
+     "This package provides a safe arena allocator that supports deletion without
+suffering from the ABA problem by using generational indices.")
+    (license license:mpl2.0)))
+
 (define-public rust-generator-0.6
   (package
     (name "rust-generator")
@@ -25438,6 +25859,92 @@ provides standard printing of search results, similar to grep itself.")
      "This package aggregates groups of values from key-value iterators.")
     (license license:expat)))
 
+(define-public rust-gumdrop-0.8
+  (package
+    (name "rust-gumdrop")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "gumdrop" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "02waas37nr8y669lnm1ifp6bkx79v3bd0bd4s9qcyy04aifiyms6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-gumdrop-derive" ,rust-gumdrop-derive-0.8))
+       #:cargo-development-inputs
+       (("rust-assert-matches" ,rust-assert-matches-1))))
+    (home-page "https://github.com/murarth/gumdrop")
+    (synopsis "Option parser with custom derive support")
+    (description "This package provides option parser with custom derive
+support.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-gumdrop-0.7
+  (package
+    (inherit rust-gumdrop-0.8)
+    (name "rust-gumdrop")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gumdrop" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1pmw21ggwqqizh66zp7bylbffi6qs064w2rfj3rc3smyq65r0l7f"))))
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-gumdrop-derive" ,rust-gumdrop-derive-0.7))
+        #:cargo-development-inputs
+        (("rust-assert-matches" ,rust-assert-matches-1))))))
+
+(define-public rust-gumdrop-derive-0.8
+  (package
+    (name "rust-gumdrop-derive")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "gumdrop_derive" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01cdc7w5wf1g9i04ykcssczjmmnl6jky47a648sp710df5yg0pli"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))
+    (home-page "https://github.com/murarth/gumdrop")
+    (synopsis "Custom derive support for gumdrop")
+    (description "This package provides custom derive support for gumdrop.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-gumdrop-derive-0.7
+  (package
+    (inherit rust-gumdrop-derive-0.8)
+    (name "rust-gumdrop-derive")
+    (version "0.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "gumdrop_derive" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mrm1h4n13b3n79d1215jq9q9d6sgcvfzdb8i5mcmds0vvj4qich"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))))
+
 (define-public rust-gzip-header-0.3
   (package
     (name "rust-gzip-header")
@@ -26933,6 +27440,30 @@ Hash-based Message Authentication Code algorithm} for SHA1.")
      "This package provides a library for HTML entity encoding and decoding.")
     (license (list license:asl2.0 license:expat license:mpl2.0))))
 
+(define-public rust-html-escape-0.2
+  (package
+    (name "rust-html-escape")
+    (version "0.2.9")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "html-escape" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1dxw9lpckrqzzqgbkw64ckbajr4b7xxnjdn8adgzqf2mm40shvl1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-utf8-width" ,rust-utf8-width-0.1))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1))))
+    (home-page "https://magiclen.org/html-escape")
+    (synopsis "Library for encoding and escaping special characters in HTML")
+    (description
+     "This package provides a library for encoding and escaping special
+characters in HTML, decoding and unescaping HTML entities as well.")
+    (license license:expat)))
+
 (define-public rust-http-0.2
   (package
     (name "rust-http")
@@ -27209,6 +27740,29 @@ HTTP request or response body.")
         (base32 "0izbd3sf0625wm4rrfv85xa4xa8j4n1ldxhwlkgff4cm6rh4sjs9"))))
     (arguments `(#:skip-build? #t))))
 
+(define-public rust-humantime-serde-1
+  (package
+    (name "rust-humantime-serde")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "humantime-serde" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0n208zzy69f7pgwcm1d0id4nzhssxn3z3zy7ki3dpkaazmnaad5c"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-humantime" ,rust-humantime-2)
+        ("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/jean-airoldie/humantime-serde")
+    (synopsis "Humantime serialization timestamp format")
+    (description
+     "This package provides a Humantime serialization timestamp format.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-humansize-1
   (package
     (name "rust-humansize")
@@ -41878,6 +42432,28 @@ written with declarative macros.")
     (description "This crate provides utilities for pinning values on the stack.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-pinot-0.1
+  (package
+    (name "rust-pinot")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "pinot" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "13zh0g7d47a3szi2z4q2p3q8yph2ipw7q5gnsxvk34l44h6yjfpy"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page "https://github.com/dfrg/pinot")
+    (synopsis "High-fidelity OpenType parser in Rust")
+    (description "This crate aims to parse OpenType fonts with a level
+of detail that is amenable to modeling, analysis and transformation.
+The current focus is specifically on OpenType layout and the crate
+provides comprehensive coverage of that portion of the specification
+along with strong support for variations and the core header tables.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-pkcs1-0.2
   (package
     (name "rust-pkcs1")
@@ -42046,6 +42622,29 @@ network packet formats.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-platforms-2
+  (package
+    (name "rust-platforms")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "platforms" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "152cnf65zzr6vj5xyap1aqp6ajmfqdhlij2x1lx02hhjazryxl78"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://rustsec.org")
+    (synopsis "Query information about valid Rust platforms")
+    (description
+     "This package provides information about valid Rust platforms (target
+triple, target_arch, target_os) sourced from Rust Forge.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-plist-1
   (package
     (name "rust-plist")
@@ -44973,6 +45572,27 @@ creating native Python extension modules.  Running and interacting with
 Python code from a Rust binary is also supported.")
     (license license:asl2.0)))
 
+(define-public rust-qstring-0.7
+  (package
+    (name "rust-qstring")
+    (version "0.7.2")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "qstring" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0khhcpwifis87r5chr4jiv3w1bkswcf226c0yjx809pzbzkglr6l"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-percent-encoding" ,rust-percent-encoding-2))))
+    (home-page "https://github.com/algesten/qstring")
+    (synopsis "Query string parser")
+    (description "This package provides query string parser.")
+    (license license:expat)))
+
 (define-public rust-quantiles-0.7
   (package
     (name "rust-quantiles")
@@ -47058,14 +47678,14 @@ owned memory.")
 (define-public rust-redox-syscall-0.2
   (package
     (name "rust-redox-syscall")
-    (version "0.2.5")
+    (version "0.2.10")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "redox_syscall" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1n878lpw577avdr5dzbkil02xwbx0a57mr2r3dcnnkz28i71wd4l"))))
+        (base32 "1zq36bhw4c6xig340ja1jmr36iy0d3djp8smsabxx71676bg70w3"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -49205,6 +49825,43 @@ please consider using @code{async-std} or @code{tokio}.")
     (inputs
      (list sqlite))))
 
+(define-public rust-rustsec-0.25
+  (package
+    (name "rust-rustsec")
+    (version "0.25.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "rustsec" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "11q89r3a8snqmfywml8n96lxgs086k68xbhjgaikrkdbzdv6j4yn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-cargo-edit" ,rust-cargo-edit-0.8)
+        ("rust-cargo-lock" ,rust-cargo-lock-7)
+        ("rust-crates-index" ,rust-crates-index-0.17)
+        ("rust-cvss" ,rust-cvss-1)
+        ("rust-fs-err" ,rust-fs-err-2)
+        ("rust-git2" ,rust-git2-0.13)
+        ("rust-home" ,rust-home-0.5)
+        ("rust-humantime" ,rust-humantime-2)
+        ("rust-humantime-serde" ,rust-humantime-serde-1)
+        ("rust-platforms" ,rust-platforms-2)
+        ("rust-semver" ,rust-semver-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-thiserror" ,rust-thiserror-1)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-url" ,rust-url-2))))
+    (home-page "https://rustsec.org")
+    (synopsis "Client library for the RustSec security advisory database")
+    (description
+     "This package provides client library for the RustSec security
+advisory database.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-rust-argon2-0.8
   (package
     (name "rust-rust-argon2")
@@ -52348,6 +53005,33 @@ statistical guarantees.")
     (description "This package provides low-level bindings to libseccomp.")
     (license license:lgpl2.1)))
 
+(define-public rust-secrecy-0.6
+  (package
+    (name "rust-secrecy")
+    (version "0.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "secrecy" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "03q7h4yswpbrgxgn6wk9dyhilqhwcbhgwyy2m5vk9ps5ss72g0li"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bytes" ,rust-bytes-0.5)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-zeroize" ,rust-zeroize-1))))
+    (home-page "https://github.com/iqlusioninc/crates/")
+    (synopsis "Wrapper types and traits for secret management")
+    (description
+     "This package provides wrapper types and traits for secret management
+which help ensure they aren't
+accidentally copied, logged, or otherwise exposed, and also ensure secrets
+are securely wiped from memory when dropped.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-section-testing-0.0
   (package
     (name "rust-section-testing")
@@ -56099,6 +56783,28 @@ I/O programming.")
         ("rust-futures-core-preview" ,rust-futures-core-preview-0.3)
         ("rust-futures-io-preview" ,rust-futures-io-preview-0.3))))))
 
+(define-public rust-smallbitvec-2
+  (package
+    (name "rust-smallbitvec")
+    (version "2.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "smallbitvec" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0plrbldsjpwip3afbzd8fgrnvdhizcg5z4ncfqs4q6x4qjflzkkm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-bit-vec" ,rust-bit-vec-0.4)
+        ("rust-rand" ,rust-rand-0.4))))
+    (home-page "https://github.com/servo/smallbitvec")
+    (synopsis "Bit vector optimized for size and inline storage")
+    (description "This package provides a bit vector optimized for size and
+inline storage.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-smallvec-1
   (package
     (name "rust-smallvec")
@@ -56186,6 +56892,30 @@ stack.")
 control on the fields.")
     (license license:expat)))
 
+(define-public rust-smartstring-0.2
+  (package
+    (name "rust-smartstring")
+    (version "0.2.9")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "smartstring" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "16rc6n0p4r4aw6k6jxf2s37wyaijaa4pwpw7rqki7cn2q0qnmaii"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-arbitrary" ,rust-arbitrary-0.4)
+        ("rust-proptest" ,rust-proptest-0.10)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-static-assertions" ,rust-static-assertions-1))))
+    (home-page "https://github.com/bodil/smartstring")
+    (synopsis "Compact inlined strings")
+    (description "This package provides compact inlined strings.")
+    (license license:mpl2.0)))
+
 (define-public rust-smol-1
   (package
     (name "rust-smol")
@@ -56660,8 +57390,7 @@ track of where each new file and line starts.")
         (base32 "1rch0my17z66fam7hbynvrcs6jk63b08jv4s04mhdksv1jz584ji"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-lock-api" ,rust-lock-api-0.4))))
     (home-page "https://github.com/mvdnes/spin-rs")
     (synopsis "Synchronization primitives based on spinning")
@@ -56670,6 +57399,19 @@ spinning.  They may contain data, are usable without @code{std},and static
 initializers are available.")
     (license license:expat)))
 
+(define-public rust-spin-0.7
+  (package
+    (inherit rust-spin-0.9)
+    (name "rust-spin")
+    (version "0.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "spin" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0qjips9f6fsvkyd7wj3a4gzaqknn2q4kkb19957pl86im56pna0k"))))))
+
 (define-public rust-spin-0.5
   (package
     (inherit rust-spin-0.9)
@@ -58403,6 +59145,33 @@ easier in Rust.")
         ("rust-quote" ,rust-quote-1)
         ("rust-syn" ,rust-syn-1))))))
 
+(define-public rust-subprocess-0.2
+  (package
+    (name "rust-subprocess")
+    (version "0.2.8")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "subprocess" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01x41adcnyy55axdrzbr3y1qfbb55xjzczm1lpqdh6lqqbmz6p05"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/hniksic/rust-subprocess")
+    (synopsis "Execution of child processes and pipelines")
+    (description
+     "This package provides execution of child processes and pipelines,
+inspired by Python's subprocess module, with Rust-specific extensions.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-subtle-2
   (package
     (name "rust-subtle")
@@ -60156,14 +60925,14 @@ process.")
 (define-public rust-tectonic-docmodel-0.1
   (package
     (name "rust-tectonic-docmodel")
-    (version "0.1.0")
+    (version "0.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tectonic_docmodel" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "041hbp5rjrnnf6pbi7b9039jx5vn5f0d9fwhk0vshwjn69jmknkm"))))
+        (base32 "1b5vdqcnjbbda6am0mb7qyxyc6pn8v0pqz0w10xia87ycyyfflxw"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -60205,25 +60974,55 @@ document model, including the @file{Tectonic.toml} file.")
 @code{bibtex} program as a reusable crate.")
     (license license:expat)))
 
-(define-public rust-tectonic-engine-xetex-0.1
+(define-public rust-tectonic-engine-spx2html-0.1
   (package
-    (name "rust-tectonic-engine-xetex")
+    (name "rust-tectonic-engine-spx2html")
     (version "0.1.1")
     (source
      (origin
        (method url-fetch)
+       (uri (crate-uri "tectonic_engine_spx2html" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "15nxgx20x3ii9ksdj2w9jis1qm1rd451kw3jh87ydvwqnzg88f3m"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1)
+        ("rust-percent-encoding" ,rust-percent-encoding-2)
+        ("rust-pinot" ,rust-pinot-0.1)
+        ("rust-tectonic-bridge-core" ,rust-tectonic-bridge-core-0.3)
+        ("rust-tectonic-errors" ,rust-tectonic-errors-0.2)
+        ("rust-tectonic-io-base" ,rust-tectonic-io-base-0.4)
+        ("rust-tectonic-status-base" ,rust-tectonic-status-base-0.2)
+        ("rust-tectonic-xdv" ,rust-tectonic-xdv-0.2)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-tera" ,rust-tera-1))))
+    (home-page "https://tectonic-typesetting.github.io/")
+    (synopsis "Tectonic engine that converts SPX output to HTML")
+    (description "This crate implements the Tectonic engine that converts SPX
+output to HTML.")
+    (license license:expat)))
+
+(define-public rust-tectonic-engine-xetex-0.2
+  (package
+    (name "rust-tectonic-engine-xetex")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
        (uri (crate-uri "tectonic_engine_xetex" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0ki06fsqx7rb683gz4d5xz248gwvpzf137zqrg8whsrazaqgzmfq"))))
+        (base32 "1kn9gxkgf3jbwif14n1kmp869s4b69khhc7iwm78qqpmy79lrhkw"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-cbindgen" ,rust-cbindgen-0.16)
-        ("rust-cc" ,rust-cc-1)
+       (("rust-cc" ,rust-cc-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-tectonic-bridge-core" ,rust-tectonic-bridge-core-0.1)
+        ("rust-tectonic-bridge-core" ,rust-tectonic-bridge-core-0.3)
         ("rust-tectonic-bridge-flate" ,rust-tectonic-bridge-flate-0.1)
         ("rust-tectonic-bridge-graphite2" ,rust-tectonic-bridge-graphite2-0.2)
         ("rust-tectonic-bridge-harfbuzz" ,rust-tectonic-bridge-harfbuzz-0.2)
@@ -60335,17 +61134,17 @@ error type and utilities.")
 interface for fetching URLs using one of several HTTP backends.")
     (license license:expat)))
 
-(define-public rust-tectonic-io-base-0.3
+(define-public rust-tectonic-io-base-0.4
   (package
     (name "rust-tectonic-io-base")
-    (version "0.3.0")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tectonic_io_base" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0xpcavx3chld8d5qa24ikf5v4l5slzkakqr4ylibx0f91ssy3bsm"))))
+        (base32 "0x1r4m5bkqqvz24sql9q8ycnjczlqjlhzfyaylzhxi2xx4flqdfn"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -60355,7 +61154,7 @@ interface for fetching URLs using one of several HTTP backends.")
         ("rust-libc" ,rust-libc-0.2)
         ("rust-sha2" ,rust-sha2-0.9)
         ("rust-tectonic-errors" ,rust-tectonic-errors-0.2)
-        ("rust-tectonic-status-base" ,rust-tectonic-status-base-0.1)
+        ("rust-tectonic-status-base" ,rust-tectonic-status-base-0.2)
         ("rust-thiserror" ,rust-thiserror-1))))
     (home-page "https://tectonic-typesetting.github.io/")
     (synopsis "Basic types for Tectonic's pluggable I/O backend system")
@@ -60366,6 +61165,29 @@ implementations for @code{std} I/O types as well as @code{flate2} gzip
 streams.")
     (license license:expat)))
 
+(define-public rust-tectonic-io-base-0.3
+  (package
+    (inherit rust-tectonic-io-base-0.4)
+    (name "rust-tectonic-io-base")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "tectonic_io_base" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0xpcavx3chld8d5qa24ikf5v4l5slzkakqr4ylibx0f91ssy3bsm"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-app-dirs2" ,rust-app-dirs2-2)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-sha2" ,rust-sha2-0.9)
+        ("rust-tectonic-errors" ,rust-tectonic-errors-0.2)
+        ("rust-tectonic-status-base" ,rust-tectonic-status-base-0.1)
+        ("rust-thiserror" ,rust-thiserror-1))))))
+
 (define-public rust-tectonic-io-base-0.2
   (package
     (inherit rust-tectonic-io-base-0.3)
@@ -60460,17 +61282,17 @@ types for reporting status messages to a user.")
        #:cargo-inputs
        (("rust-tectonic-errors" ,rust-tectonic-errors-0.1))))))
 
-(define-public rust-tectonic-xdv-0.1
+(define-public rust-tectonic-xdv-0.2
   (package
     (name "rust-tectonic-xdv")
-    (version "0.1.11")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tectonic_xdv" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1ibxv32i7dla3iw6s01cagzgdgzhm1mmxwqjv841m6m4r7g57gxj"))))
+        (base32 "1fcys9v5zcdavfkq72h5ajkz2pxjpc6km6wqajk29qc65870xd5k"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -60542,21 +61364,21 @@ deleting all contents when it's dropped.")
 (define-public rust-tempfile-3
   (package
     (name "rust-tempfile")
-    (version "3.2.0")
+    (version "3.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tempfile" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "08pbf3c1i42382dc44dil5bgiawcsi0qk6zdibw10f69rxiwdhfs"))))
+        (base32 "1r3rdp66f7w075mz6blh244syr3h0lbm07ippn7xrbgfxbs1xnsw"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-1)
+        ("rust-fastrand" ,rust-fastrand-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-rand" ,rust-rand-0.8)
         ("rust-redox-syscall" ,rust-redox-syscall-0.2)
         ("rust-remove-dir-all" ,rust-remove-dir-all-0.5)
         ("rust-winapi" ,rust-winapi-0.3))))
@@ -60645,20 +61467,20 @@ directories.")
 (define-public rust-tera-1
   (package
     (name "rust-tera")
-    (version "1.6.1")
+    (version "1.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tera" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1p7qzd8akd4xk4b23dmdrqw9q8061xkl1mar34j3f2glmizapipa"))))
+        (base32 "13dmx1qfn66v55l54gddp89mi82ghszwml9jyv75phhmnqqwijnk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-chrono" ,rust-chrono-0.4)
-        ("rust-chrono-tz" ,rust-chrono-tz-0.5)
+        ("rust-chrono-tz" ,rust-chrono-tz-0.6)
         ("rust-globwalk" ,rust-globwalk-0.8)
         ("rust-humansize" ,rust-humansize-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
@@ -64001,6 +64823,32 @@ serializing Rust structures.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-toml-edit-0.3
+  (package
+    (name "rust-toml-edit")
+    (version "0.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "toml_edit" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0fbpkhla57k9qbpbxh72wxc7hhj7yscq4r0hnmyyygp92r3q6c0x"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-combine" ,rust-combine-4)
+        ("rust-indexmap" ,rust-indexmap-1)
+        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-vec1" ,rust-vec1-1))))
+    (home-page "https://github.com/ordian/toml_edit")
+    (synopsis "Yet another format-preserving TOML parser")
+    (description "This package provides yet another format-preserving TOML
+parser.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-tonic-0.6
   (package
     (name "rust-tonic")
@@ -64368,7 +65216,7 @@ data.  Moved to the tracing-subscriber crate.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-env-logger" ,rust-env-logger-0.6)
+       (("rust-env-logger" ,rust-env-logger-0.7)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4)
         ("rust-tracing-core" ,rust-tracing-core-0.1))
@@ -67010,18 +67858,16 @@ type-safe zero-cost dimensional analysis.")
   (package
     (name "rust-ureq")
     (version "2.4.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "ureq" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1m8nzx683iph4zfpfg2xmkkbwmgf1i403lnbhxqk4gbsj8pzm6ck"))))
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "ureq" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1m8nzx683iph4zfpfg2xmkkbwmgf1i403lnbhxqk4gbsj8pzm6ck"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:tests? #f                      ;tests fail
+     `(#:tests? #f ;tests fail
        #:cargo-inputs
        (("rust-base64" ,rust-base64-0.13)
         ("rust-brotli-decompressor" ,rust-brotli-decompressor-2)
@@ -67051,6 +67897,39 @@ type-safe zero-cost dimensional analysis.")
     (description "This package provides minimal request library in Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-ureq-1
+  (package
+    (inherit rust-ureq-2)
+    (name "rust-ureq")
+    (version "1.5.5")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "ureq" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0wdakplwjjya6m95z42pci8m63ddx913rd92kzh8l8ar5ly0d2rb"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-base64" ,rust-base64-0.13)
+        ("rust-chunked-transfer" ,rust-chunked-transfer-1)
+        ("rust-cookie" ,rust-cookie-0.14)
+        ("rust-cookie-store" ,rust-cookie-store-0.12)
+        ("rust-encoding" ,rust-encoding-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-native-tls" ,rust-native-tls-0.2)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-qstring" ,rust-qstring-0.7)
+        ("rust-rustls" ,rust-rustls-0.19)
+        ("rust-rustls-native-certs" ,rust-rustls-native-certs-0.5)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-socks" ,rust-socks-0.3)
+        ("rust-url" ,rust-url-2)
+        ("rust-webpki" ,rust-webpki-0.21)
+        ("rust-webpki-roots" ,rust-webpki-roots-0.21))))))
+
 (define-public rust-url-2
   (package
     (name "rust-url")
@@ -67590,6 +68469,30 @@ write operations.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-vec1-1
+  (package
+    (name "rust-vec1")
+    (version "1.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "vec1" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0cv1b88k9fac0wlg3yzbkrwdxvyb8w9f14big5q9a3sgfwf67haz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-serde" ,rust-serde-1)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/rustonaut/vec1/")
+    (synopsis "Vec wrapper assuring that it has at least 1 element")
+    (description
+     "This package provides wrapper for a std::Vec assuring that it
+has at least 1 element.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-vecmath-1
   (package
     (name "rust-vecmath")
@@ -69899,7 +70802,12 @@ non-cryptographic hashing algorithm and random number generator.")
        (uri (crate-uri "x25519-dalek" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0xz0m1pczss9r25d1r52420dl2picdypbcn5ycmlwssp9awvd4i3"))))
+        (base32 "0xz0m1pczss9r25d1r52420dl2picdypbcn5ycmlwssp9awvd4i3"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "Cargo.toml"
+             (("version = \"=1.3\"") "version = \"^1.3\""))))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -71623,6 +72531,28 @@ a trait for tuples.")
       "This package provides a library to unify commandline arguments with config files and environment variables.  And make it easier for users to tell your program how to behave across the three main input sources")
     (license license:expat)))
 
+(define-public rust-cvss-1
+  (package
+    (name "rust-cvss")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "cvss" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0gxxzimyxwf6ka011n6cd296ax6qiwnx8n6mxzh2l55bpvd65642"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/RustSec/rustsec/tree/main/cvss")
+    (synopsis "Common Vulnerability Scoring System parser/serializer")
+    (description "This package provides Common Vulnerability
+Scoring System parser/serializer.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public svd2rust
   (package
     (name "svd2rust")
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 529144d127..66412b9e92 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -42,7 +42,6 @@
   #:export (cross-binutils
             cross-libc
             cross-gcc
-            cross-newlib?
             cross-kernel-headers))
 
 (define-syntax %xgcc
@@ -177,10 +176,6 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                              `((string-append "--with-toolexeclibdir="
                                               (assoc-ref %outputs "lib")
                                               "/" ,target "/lib"))
-                             '())
-                       ;; For a newlib (non-glibc) target
-                       ,@(if (cross-newlib? target)
-                             '("--with-newlib")
                              '()))
 
                  ,(if libc
@@ -489,10 +484,11 @@ target that libc."
                      (xheaders (cross-kernel-headers target)))
   "Return LIBC cross-built for TARGET, a GNU triplet. Use XGCC and XBINUTILS
 and the cross tool chain."
-  (if (cross-newlib? target libc)
-      (native-libc target libc
-                   #:xgcc xgcc
-                   #:xbinutils xbinutils)
+  (if (target-mingw? target)
+      (let ((machine (substring target 0 (string-index target #\-))))
+        (make-mingw-w64 machine
+                        #:xgcc xgcc
+                        #:xbinutils xbinutils))
       (package
         (inherit libc)
         (name (string-append "glibc-cross-" target))
@@ -553,24 +549,6 @@ and the cross tool chain."
                          ,@(package-inputs libc)  ;FIXME: static-bash
                          ,@(package-native-inputs libc))))))
 
-(define* (native-libc target
-                     #:optional
-                     (libc glibc)
-                     #:key
-                     xgcc
-                     xbinutils)
-  (if (target-mingw? target)
-      (let ((machine (substring target 0 (string-index target #\-))))
-        (make-mingw-w64 machine
-                        #:xgcc xgcc
-                        #:xbinutils xbinutils))
-      libc))
-
-(define* (cross-newlib? target
-                       #:optional
-                       (libc glibc))
-  (not (eq? (native-libc target libc) libc)))
-
 
 ;;; Concrete cross tool chains are instantiated like this:
 ;;
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index f07be01c97..63be51f86a 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -21,7 +21,8 @@
 ;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
 ;;; Copyright © 2021 Ellis Kenyő <me@elken.dev>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021, 2022 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2022 Allan Adair <allan@adair.no>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -73,6 +74,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
@@ -731,7 +733,7 @@ data on your platform, so the seed itself will be as random as possible.
 (define-public crypto++
   (package
     (name "crypto++")
-    (version "8.5.0")
+    (version "8.6.0")
     (source (origin
               (method git-fetch)
               (uri
@@ -743,7 +745,7 @@ data on your platform, so the seed itself will be as random as possible.
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0in7rlazq91vfi519g9wr7bh87hii47cimxv7fmj0f88vhjaidq3"))))
+                "1vm821wpx59ccz6gr4xplqpxj3f1qq3jijyybj2g4npqmmldhx3b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -871,6 +873,11 @@ BLAKE.")
            (add-before 'build 'change-directory
                        (lambda _
                          (chdir "b2sum")))
+           ;; Produce generic binaries
+           (add-after 'change-directory 'de-tune
+                       (lambda _
+                         (substitute* "makefile"
+                           ((" -march=native") ""))))
            (delete 'configure)))) ; No ./configure script
       (home-page "https://www.blake2.net/")
       (synopsis "BLAKE2 checksum tool")
@@ -878,7 +885,11 @@ BLAKE.")
 SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
       ;; You may also choose to redistribute this program as Apache 2.0 or the
       ;; OpenSSL license. See 'b2sum/b2sum.c' in the source distribution.
-      (license license:cc0))))
+      (license license:cc0)
+      ;; There is a significant speedup when the compiler generates
+      ;; instructions tuned to the CPU of the running machine:
+      ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51198#22
+      (properties '((tunable? . #true))))))
 
 (define-public rhash
   (package
@@ -1459,7 +1470,7 @@ non-encrypted files.")
 (define-public cryfs
   (package
     (name "cryfs")
-    (version "0.11.0")
+    (version "0.11.2")
     (source
      (origin
        (method url-fetch)
@@ -1467,7 +1478,7 @@ non-encrypted files.")
              "https://github.com/cryfs/cryfs/releases/download/"
              version "/cryfs-" version ".tar.xz"))
        (sha256
-        (base32 "0dxphbj5sssm82rkkdb71algrcki16qlpzlvrjyvvm6b7x7zi0sm"))))
+        (base32 "1ggizlacm4fccsw9syy2763ihxnby6cdh3mhhraxy8bmsdjza7lm"))))
     (build-system cmake-build-system)
     (arguments
      '(#:modules ((guix build cmake-build-system)
@@ -1483,7 +1494,7 @@ non-encrypted files.")
                          "/cmake-utils/DependenciesFromLocalSystem.cmake"))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'fix-configure
+         (add-before 'configure 'fix-up
            (lambda* (#:key tests? #:allow-other-keys)
              ;; Remove junk directory that breaks the build
              (chdir "..") (delete-file-recursively ".circleci")
@@ -1494,7 +1505,14 @@ non-encrypted files.")
              (when tests?
                (substitute* "CMakeLists.txt"
                  (("option.BUILD_TESTING .build test cases. OFF.")
-                  "option(BUILD_TESTING \"build test cases\" ON)")))))
+                  "option(BUILD_TESTING \"build test cases\" ON)")))
+             ;; work around a missing import fixed upstream in boost 1.78
+             ;; See https://github.com/boostorg/process/issues/213
+             (substitute* (find-files "." "subprocess.cpp$")
+               (("#include <boost/process.hpp>.*" line)
+                (string-append
+                 "#include <algorithm>\n"
+                 line)))))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
@@ -1607,3 +1625,37 @@ checksum tool based on the BLAKE3 cryptographic hash function.")
     ;; Users may choose between these two licenses when redistributing the
     ;; program provided by this package.
     (license (list license:cc0 license:asl2.0))))
+
+(define-public libxcrypt
+  (package
+    (name "libxcrypt")
+    (version "4.4.28")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/besser82/libxcrypt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0pacj0s1hlv22iz0k2bkysjslc6rbrgmvmsr02qq17lp4d2gw5rs"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list autoconf
+           automake
+           libtool
+           perl
+           pkg-config
+           python-3
+           python-passlib))
+    (synopsis
+     "Extended crypt library for descrypt, md5crypt, bcrypt, and others")
+    (description
+     "libxcrypt is a modern library for one-way hashing of
+passwords. It supports a wide variety of both modern and historical
+hashing methods: yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt,
+sha256crypt, md5crypt, SunMD5, sha1crypt, NT, bsdicrypt, bigcrypt, and
+descrypt.")
+    (home-page "https://github.com/besser82/libxcrypt")
+    (license license:lgpl2.1)))
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 27a98185e0..d36519260e 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -341,16 +341,17 @@ curl to obtain exactly that HTTP request.")
 (define-public coeurl
   (package
     (name "coeurl")
-    (version "0.1.1")
+    (version "0.2.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://nheko.im/nheko-reborn/coeurl")
              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0sqciagagyc0qv90g0qw8fkyvy4l8h7nbaz04chiz9gnv89hg28p"))))
+         "0kbazvrb4hzc9jr7yywd36ack1yy7bh8sh1kc4jzv6jfzvxjb0i0"))))
     (build-system meson-build-system)
     (native-inputs
      (list doctest pkg-config))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 408dcb2582..56d838dd58 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -28,7 +28,7 @@
 ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018, 2019, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
 ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
@@ -36,7 +36,7 @@
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
@@ -993,6 +993,14 @@ Language.")
        #:parallel-tests? ,(target-x86-64?)
        #:phases
        (modify-phases %standard-phases
+         ,@(if (target-ppc32?)
+             `((add-after 'unpack 'apply-libatomics-patch
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let ((patch-file
+                           (assoc-ref inputs 
+                                               "mariadb-link-libatomic.patch")))
+                     (invoke "patch" "-p1" "-i" patch-file)))))
+             '())
          (add-after 'unpack 'adjust-output-references
            (lambda _
              ;; The build system invariably prepends $CMAKE_INSTALL_PREFIX
@@ -1143,7 +1151,13 @@ Language.")
                 (("-lssl -lcrypto" all)
                  (string-append "-L" openssl "/lib " all)))))))))
     (native-inputs
-     (list bison perl))
+     (if (target-ppc32?)
+       `(("mariadb-link-libatomic.patch"
+          ,(search-patch "mariadb-link-libatomic.patch"))
+         ("patch" ,patch)
+         ("bison" ,bison)
+         ("perl" ,perl))
+       (list bison perl)))
     (inputs
      `(("jemalloc" ,jemalloc)
        ("libaio" ,libaio)
@@ -1216,14 +1230,14 @@ and high-availability (HA).")
 (define-public postgresql-14
   (package
     (name "postgresql")
-    (version "14.1")
+    (version "14.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "07x45iycqpps0qh3ingc09jgn9rpnmc3gixx0qprhf5flwg10g2d"))
+                "0ylpka64wli72jvjyqcayvlw44zk1hsbapb93l8gh4l98qp8pxrc"))
               (patches (search-patches "postgresql-disable-resolve_symlinks.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -1285,44 +1299,33 @@ pictures, sounds, or video.")
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "1z37ix80hb2bqa2smh1hbj9r507ypnl3pil43gkqznnlv6ipzz5s"))))))
+                "1z37ix80hb2bqa2smh1hbj9r507ypnl3pil43gkqznnlv6ipzz5s"))
+              (patches (search-patches "postgresql-riscv-spinlocks.patch"))))))
 
 (define-public postgresql-11
   (package
     (inherit postgresql-13)
     (name "postgresql")
-    (version "11.13")
+    (version "11.15")
     (source (origin
               (inherit (package-source postgresql-13))
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "0j5wnscnxa3sx8d39s55654df8aikmvkihfb0a02hrgmyygnihx0"))))))
+                "1qvrm0vhwnc5nijfbqybhwfjbq4r7vmk445sz7s6fiagpn78xxf8"))))))
 
 (define-public postgresql-10
   (package
     (inherit postgresql-11)
-    (version "10.18")
+    (version "10.20")
     (source (origin
               (inherit (package-source postgresql-11))
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "009qpb02bq0rx0aaw5ck70gk07xwparhfxvlfimgihw2vhp7qisp"))))))
-
-(define-public postgresql-9.6
-  (package
-    (inherit postgresql-10)
-    (version "9.6.23")
-    (source (origin
-              (inherit (package-source postgresql-10))
-              (uri (string-append "https://ftp.postgresql.org/pub/source/v"
-                                  version "/postgresql-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "1fa735lrmv2vrfiixg73nh024gxlagcbrssklvgwdf0s82cgfjd8"))))))
+                "17v51a9vnz6lgbfmbdmcwsiyi572wndwa4n30nk2zr6gkgaidpl7"))))))
 
 (define-public postgresql postgresql-13)
 
@@ -2646,7 +2649,7 @@ trees (LSM), for sustained throughput under random insert workloads.")
     (inputs
      (list wiredtiger-3 guile-2.2))
     (propagated-inputs
-     (list guile-bytestructures))
+     (list guile2.2-bytestructures))
     (synopsis "WiredTiger bindings for GNU Guile")
     (description
      "This package provides Guile bindings to the WiredTiger ``NoSQL''
@@ -3561,7 +3564,8 @@ PickleShare.")
        (modify-phases %standard-phases
          (replace 'build
            (lambda _
-             (invoke "python" "setup.py" "build" "--enable-all-extensions")
+             (invoke "python" "setup.py" "build" "--enable-all-extensions"
+                     "--enable=load_extension")
              #t))
          (add-after 'build 'build-test-helper
            (lambda _
@@ -4137,7 +4141,7 @@ the SQL language using a syntax that reflects the resulting query.")
 (define-public apache-arrow
   (package
     (name "apache-arrow")
-    (version "6.0.1")
+    (version "7.0.0")
     (source
      (origin
        (method git-fetch)
@@ -4147,7 +4151,7 @@ the SQL language using a syntax that reflects the resulting query.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0mcw361akqw4sxnnpnr9c9v1zk4hphk6gcq763pcb19yzljh88ig"))))
+         "19xx6mlddca79q6d3wga574m4y32ixmxx2rmk6j3f22i5c37mjzw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
@@ -4580,18 +4584,21 @@ a Gtk.Grid Widget.")
        (snippet
         '(begin
            (delete-file-recursively "libs/qcustomplot-source/")
+           (delete-file-recursively "libs/qhexedit/")
            (delete-file-recursively "libs/qscintilla")))))
     (build-system qt-build-system)
     (arguments
      (list #:configure-flags
-           ;; TODO: Unbundle QHexEdit.
+           ;; TODO: Unbundle json (json-modern-cxx).
            #~(list (string-append "-DQSCINTILLA_INCLUDE_DIR="
                                   #$(this-package-input "qscintilla")
                                   "/include/Qsci")
                    "-DFORCE_INTERNAL_QCUSTOMPLOT=OFF"
+                   "-DFORCE_INTERNAL_QHEXEDIT=OFF"
                    "-DENABLE_TESTING=ON")))
     (inputs
      (list qcustomplot
+           qhexedit
            qscintilla
            qtbase-5
            sqlite))
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 9a303003d3..aec65e3386 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -83,7 +83,7 @@ contains the archive keys used for that.")
 (define-public debian-ports-archive-keyring
   (package
     (name "debian-ports-archive-keyring")
-    (version "2021.12.30")
+    (version "2022.02.15")
     (source
       (origin
         (method url-fetch)
@@ -92,7 +92,7 @@ contains the archive keys used for that.")
                             "/debian-ports-archive-keyring_" version ".tar.xz"))
         (sha256
          (base32
-          "14f9hklr8gdlp782j5ijmm0nh061zcfw9vwpr8smb7rdfzk4wk70"))))
+          "096m45l7g8vbk67gwc6bmkzpx8mhn6xfglgrzlg9xkgcs5gxqyc0"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f              ; No test suite.
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 94312e7c05..80685900eb 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -199,6 +199,11 @@ tools that process C/C++ code.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-linkage
+           (lambda _
+            (substitute* "clang_delta/CMakeLists.txt"
+              (("\\$\\{LLVM_LINK_LLVM_DYLIB\\}") "True")
+              (("  LLVM") "  LLVMSupport"))))
          (add-before 'build 'hardcode-paths
            (lambda _
             (substitute* "cvise.py"
@@ -755,9 +760,25 @@ use than similar tools like @command{mtrace}.")
         (base32 "1w8ib2vg3pg68d9hh97fw5042c73i9nqavdddc87n9bpscjbaf0d"))))
     (build-system gnu-build-system)
     (inputs
-     (list ncurses readline))
+     (list bash-minimal ncurses readline gdb))
     (native-inputs
      (list flex texinfo))
+    (arguments
+     `(#:configure-flags
+        (list
+          (string-append "ac_cv_rl_version=" ,(package-version readline))
+          "ac_cv_file__dev_ptmx=no"
+          "ac_cv_file__proc_self_status=no"
+          "ac_cv_func_setpgrp_void=no")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gdb (search-input-file inputs "bin/gdb"))
+                   (sh (search-input-file inputs "bin/sh")))
+               (substitute* "lib/util/fork_util.cpp"
+                 (("GDB = \"gdb\"") (string-append "GDB = \"" gdb "\"")))
+               (substitute* "cgdb/cgdb.cpp" (("/bin/sh") sh))))))))
     (home-page "https://cgdb.github.io")
     (synopsis "Console front-end to the GNU debugger")
     (description
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 064be354cb..ca71ecc952 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -74,7 +74,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "199")
+    (version "207")
     (source
      (origin
        (method git-fetch)
@@ -83,7 +83,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wy1nd52a4rzqhhdcdi3pfgrixz3w3q7qfc9mpc9zraq5cj94l7n"))
+        (base32 "0djpkq9fpw8dpiqaghbbg5dshl27xgkqrifalx9nq87dix5c1y6d"))
        (patches
         (search-patches "diffoscope-fix-llvm-test.patch"))))
     (build-system python-build-system)
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 1a196f4b40..15d0401090 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -22,6 +22,8 @@
 ;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +65,7 @@
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nss)
@@ -81,6 +84,7 @@
   #:use-module (gnu packages swig)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages textutils)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
@@ -586,6 +590,62 @@ permit managing file systems not included in libparted.")
     ;; The home page says GPLv2, but the source code says GPLv2+.
     (license license:gpl2+)))
 
+(define-public testdisk
+  (package
+    (name "testdisk")
+    (version "7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.cgsecurity.org/testdisk-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1zlh44w67py416hkvw6nrfmjickc2d43v51vcli5p374d5sw84ql"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list ntfs-3g
+           `(,util-linux "lib")
+           openssl
+           ;; FIXME: add reiserfs.
+           zlib
+           e2fsprogs
+           libjpeg-turbo
+           ncurses))
+    (home-page "https://www.cgsecurity.org/wiki/TestDisk")
+    (synopsis "Data recovery tool")
+    (description "TestDisk is primarily designed to help recover lost
+partitions and/or make non-booting disks bootable again when these symptoms
+were caused by faulty software or human error (such as accidentally deleting a
+partition table).  TestDisk can:
+@enumerate
+@item Fix partition table, recover deleted partition
+@item Recover FAT32 boot sector from its backup
+@item Rebuild FAT12/FAT16/FAT32 boot sector
+@item Fix FAT tables
+@item Rebuild NTFS boot sector
+@item Recover NTFS boot sector from its backup
+@item Fix MFT using MFT mirror
+@item Locate ext2/ext3/ext4 Backup SuperBlock
+@item Un-delete files from FAT, exFAT, NTFS and ext2 file systems
+@item Copy files from deleted FAT, exFAT, NTFS and ext2/ext3/ext4 partitions.
+@end enumerate
+This package also includes the @command{photorec} command, described below.
+
+PhotoRec is file data recovery software designed to recover lost files
+including video, documents and archives from hard disks, CD-ROMs, and lost
+pictures (thus the Photo Recovery name) from digital camera memory.  PhotoRec
+ignores the file system and goes after the underlying data, so it will still
+work even if your media's file system has been severely damaged or
+reformatted.  It can recover lost files from at least:
+@enumerate
+@item FAT
+@item NTFS
+@item exFAT
+@item ext2/ext3/ext4 file system
+@item HFS+
+@end enumerate")
+    (license license:gpl2+)))
+
 (define-public pydf
   (package
     (name "pydf")
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index c061c9a22d..afea1aaf86 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -332,14 +332,14 @@ and BOOTP/TFTP for network booting of diskless machines.")
     ;; When updating, check whether isc-dhcp's bundled copy should be as well.
     ;; The BIND release notes are available here:
     ;; https://www.isc.org/bind/
-    (version "9.16.25")
+    (version "9.16.27")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://ftp.isc.org/isc/bind9/" version
                            "/bind-" version ".tar.xz"))
        (sha256
-        (base32 "1wqzbq7jfd8zlidkfgx3fc1132xn5hrga7xznzw3x1421y2ji8wz"))
+        (base32 "0rpmighbbim9wi24p2bg814x5z20xkvv5y6nfnfh30ac22pjm44h"))
        (patches
         (search-patches "bind-re-add-attr-constructor-priority.patch"))))
     (build-system gnu-build-system)
@@ -870,7 +870,7 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "3.1.5")
+    (version "3.1.6")
     (source
      (origin
        (method git-fetch)
@@ -879,7 +879,7 @@ Extensions} (DNSSEC).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "145fnz740y1g0h2m07kpcimf2rx37saq2l905bl6vwa5ifybrgcq"))
+        (base32 "0rwcp55fvmm0vhad1368knfn0ri642sigh8nykvvikdlx06d21cj"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index cb1a0d4d5e..6575bf2d75 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2021-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -473,7 +473,11 @@ the in DocBook SGML DTDs.")
                                         texlive-latex-footmisc
                                         texlive-hyperref
                                         texlive-latex-jknapltx
+
+                                        ;; TODO: Use non-deprecated name on
+                                        ;; next rebuild cycle.
                                         texlive-latex-listings
+
                                         texlive-latex-multirow
                                         texlive-latex-overpic
                                         texlive-latex-pdfpages
diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm
index 7446c3689a..35df682d46 100644
--- a/gnu/packages/dunst.scm
+++ b/gnu/packages/dunst.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,7 +41,7 @@
 (define-public dunst
   (package
     (name "dunst")
-    (version "1.7.3")
+    (version "1.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -49,8 +50,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ra0ii805w3rrs0qqbjxzl6i79ksz42lnvbglw18h4igkza21kzj"))
-              (patches (search-patches "dunst-1.7.3-fix-crash.patch"))))
+                "19bh5789whlc0n5wbyx3yx8px93hccn42f1p6i1dz96hdkk5mjb8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 0875dae190..339a72ef91 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
@@ -31,6 +31,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -39,6 +40,7 @@
   #:use-module (guix build-system qt)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
@@ -56,6 +58,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages javascript)
+  #:use-module (gnu packages language)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages music)
@@ -120,218 +123,218 @@ with Microsoft Compiled HTML (CHM) files")
 (define-public calibre
   (package
     (name "calibre")
-    (version "5.21.0")
+    (version "5.36.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "http://download.calibre-ebook.com/"
-                            version "/calibre-"
-                            version ".tar.xz"))
-        (sha256
-         (base32
-          "0mq2w8blq6ykaml812axakwkqcw85qcpfwijdikn7kvbrhnnp2s5"))
-        (modules '((guix build utils)))
-        (snippet
-          '(begin
-             ;; Unbundle python2-odfpy.
-             (delete-file-recursively "src/odf")
-             ;; Disable test that attempts to load it.
-             (substitute* "setup/test.py"
-               ((".*SRC, 'odf'.*")
-                ""))
-
-             ;; Remove unneeded resources.
-             (delete-file "resources/mozilla-ca-certs.pem")
-             (delete-file "resources/calibre-portable.bat")
-             (delete-file "resources/calibre-portable.sh")
-             #t))
-        (patches (search-patches "calibre-fix-zeroconf.patch"
-                                 "calibre-no-updates-dialog.patch"
-                                 "calibre-remove-test-sqlite.patch" ; TODO: fix test.
-                                 "calibre-remove-test-unrar.patch"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://download.calibre-ebook.com/"
+                           version "/calibre-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "1c036qmn7lxq0899c2xzzs6whz7z0557frnfqisbvfxa13b2sadk"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Unbundle python2-odfpy.
+           (delete-file-recursively "src/odf")
+           ;; Disable test that attempts to load it.
+           (substitute* "setup/test.py"
+             ((".*SRC, 'odf'.*") ""))
+           ;; Remove unneeded resources.
+           (delete-file "resources/mozilla-ca-certs.pem")
+           (delete-file "resources/calibre-portable.bat")
+           (delete-file "resources/calibre-portable.sh")))
+       (patches (search-patches "calibre-no-updates-dialog.patch"
+                                "calibre-remove-test-sqlite.patch" ; TODO: fix test.
+                                "calibre-remove-test-unrar.patch"))))
     (build-system python-build-system)
     (native-inputs
-     (list pkg-config
-           qtbase-5 ; for qmake
+     (list bash-minimal
+           pkg-config
            python-flake8
            python-pyqt-builder
+           qtbase-5                     ; for qmake
            xdg-utils))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("font-liberation" ,font-liberation)
-       ("glib" ,glib)
-       ("hunspell" ,hunspell)
-       ("hyphen" ,hyphen)
-       ("icu4c" ,icu4c)
-       ("libmtp" ,libmtp)
-       ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libjxr" ,libjxr)
-       ("libusb" ,libusb)
-       ("openssl" ,openssl)
-       ("optipng" ,optipng)
-       ("podofo" ,podofo)
-       ("poppler" ,poppler)
-       ("python-apsw" ,python-apsw)
-       ("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-cchardet" ,python-cchardet)
-       ("python-css-parser" ,python-css-parser)
-       ("python-cssselect" ,python-cssselect)
-       ("python-dateutil" ,python-dateutil)
-       ("python-dbus" ,python-dbus)
-       ("python-dnspython" ,python-dnspython-1.16)
-       ("python-dukpy" ,python-dukpy)
-       ("python-feedparser" ,python-feedparser)
-       ("python-html2text" ,python-html2text)
-       ("python-html5-parser" ,python-html5-parser)
-       ("python-html5lib" ,python-html5lib)
-       ("python-lxml" ,python-lxml)
-       ("python-markdown" ,python-markdown)
-       ("python-mechanize" ,python-mechanize)
-       ;; python-msgpack is needed for the network content server to work.
-       ("python-msgpack" ,python-msgpack)
-       ("python-netifaces" ,python-netifaces)
-       ("python-odfpy" ,python-odfpy)
-       ("python-pillow" ,python-pillow)
-       ("python-psutil" ,python-psutil)
-       ("python-py7zr" ,python-py7zr)
-       ("python-pychm" ,python-pychm)
-       ("python-pycryptodome" ,python-pycryptodome)
-       ("python-pygments" ,python-pygments)
-       ("python-pyqt-without-qtwebkit" ,python-pyqt-without-qtwebkit)
-       ("python-pyqtwebengine" ,python-pyqtwebengine)
-       ("python-regex" ,python-regex)
-       ("python-speechd" ,speech-dispatcher)
-       ("python-zeroconf" ,python-zeroconf)
-       ("qtwebengine" ,qtwebengine)
-       ("sqlite" ,sqlite)))
+     (list fontconfig
+           font-liberation
+           glib
+           hunspell
+           hyphen
+           icu4c
+           libmtp
+           libpng
+           libjpeg-turbo
+           libjxr
+           libstemmer
+           libusb
+           openssl
+           optipng
+           podofo
+           poppler
+           python-apsw
+           python-beautifulsoup4
+           python-cchardet
+           python-css-parser
+           python-cssselect
+           python-dateutil
+           python-dnspython-1.16
+           python-feedparser
+           python-html2text
+           python-html5-parser
+           python-html5lib
+           python-jeepney
+           python-lxml
+           python-markdown
+           python-mechanize
+           ;; python-msgpack is needed for the network content server to work.
+           python-msgpack
+           python-netifaces
+           python-odfpy
+           python-pillow
+           python-psutil
+           python-py7zr
+           python-pychm
+           python-pygments
+           python-pyqt-without-qtwebkit
+           python-pyqtwebengine
+           python-regex
+           speech-dispatcher
+           python-zeroconf
+           qtwebengine
+           sqlite))
     (arguments
-     `(;; Calibre is using setuptools by itself, but the setup.py is not
-       ;; compatible with the shim wrapper (taken from pip) we are using.
-       #:use-setuptools? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "src/calibre/linux.py"
-               ;; We can't use the uninstaller in Guix. Don't build it.
-               (("self\\.create_uninstaller()") ""))
-             #t))
-         (add-after 'patch-source-shebangs 'patch-more-shebangs
-           (lambda _
-             ;; Patch various inline shebangs.
-             (substitute* '("src/calibre/gui2/preferences/tweaks.py"
-                            "src/calibre/gui2/dialogs/custom_recipes.py"
-                            "setup/install.py"
-                            "setup/linux-installer.sh")
-               (("#!/usr/bin/env python")
-                (string-append "#!" (which "python")))
-               (("#!/bin/sh")
-                (string-append "#!" (which "sh"))))
-             #t))
-         (add-after 'unpack 'dont-load-remote-icons
-           (lambda _
-             (substitute* "setup/plugins_mirror.py"
-               (("href=\"//calibre-ebook.com/favicon.ico\"")
-                "href=\"favicon.ico\""))
-             #t))
-         (add-before 'build 'configure
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let ((podofo (assoc-ref inputs "podofo"))
-                  (pyqt (assoc-ref inputs "python-pyqt-without-qtwebkit"))
-                  (python-sip (assoc-ref inputs "python-sip"))
-                  (out (assoc-ref outputs "out")))
+     (list
+      ;; Calibre is using setuptools by itself, but the setup.py is not
+      ;; compatible with the shim wrapper (taken from pip) we are using.
+      #:use-setuptools? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda _
+              (substitute* "src/calibre/linux.py"
+                ;; We can't use the uninstaller in Guix. Don't build it.
+                (("self\\.create_uninstaller()") ""))))
+          (add-after 'patch-source-shebangs 'patch-more-shebangs
+            (lambda* (#:key inputs native-inputs #:allow-other-keys)
+              ;; Patch various inline shebangs.
+              (substitute* '("src/calibre/gui2/preferences/tweaks.py"
+                             "src/calibre/gui2/dialogs/custom_recipes.py"
+                             "setup/install.py"
+                             "setup/linux-installer.sh")
+                (("#!/usr/bin/env python")
+                 (string-append "#!" (search-input-file inputs "/bin/python")))
+                (("#!/bin/sh")
+                 (string-append "#!"
+                                (search-input-file native-inputs "/bin/sh"))))))
+          (add-after 'unpack 'dont-load-remote-icons
+            (lambda _
+              (substitute* "setup/plugins_mirror.py"
+                (("href=\"//calibre-ebook.com/favicon.ico\"")
+                 "href=\"favicon.ico\""))))
+          (add-before 'build 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
               (substitute* "setup/build.py"
                 (("\\[tool.sip.bindings.pictureflow\\]")
                  "[tool.sip.bindings.pictureflow]
 tags = [\"WS_X11\"]")
                 (("\\[tool.sip.project\\]")
                  (string-append "[tool.sip.project]
-sip-include-dirs = [\"" pyqt "/share/sip" "\"]")))
+sip-include-dirs = [\""
+                                #$(this-package-input
+                                   "python-pyqt-without-qtwebkit")
+                                "/share/sip\"]")))
               (substitute* "src/calibre/ebooks/pdf/pdftohtml.py"
                 (("PDFTOHTML = 'pdftohtml'")
-                 (string-append "PDFTOHTML = \"" (assoc-ref inputs "poppler")
-                                "/bin/pdftohtml\"")))
-              ;; get_exe_path looks in poppler's output for these binaries. Make
-              ;; it not do that.
+                 (string-append "PDFTOHTML = \""
+                                (search-input-file inputs "/bin/pdftohtml")
+                                "\"")))
+              ;; get_exe_path looks in poppler's output for these
+              ;; binaries. Make it not do that.
               (substitute* "src/calibre/utils/img.py"
-                (("get_exe_path..jpegtran..") (string-append "'" (which "jpegtran") "'"))
-                (("get_exe_path..cjpeg..") (string-append "'" (which "cjpeg") "'"))
-                (("get_exe_path..optipng..") (string-append "'" (which "optipng") "'"))
-                (("get_exe_path..JxrDecApp..") (string-append "'" (which "JxrDecApp") "'")))
+                (("get_exe_path..jpegtran..")
+                 (string-append "'"
+                                (search-input-file inputs "/bin/jpegtran")
+                                "'"))
+                (("get_exe_path..cjpeg..")
+                 (string-append "'"
+                                (search-input-file inputs "/bin/cjpeg")
+                                "'"))
+                (("get_exe_path..optipng..")
+                 (string-append "'"
+                                (search-input-file inputs "/bin/optipng")
+                                "'"))
+                (("get_exe_path..JxrDecApp..")
+                 (string-append "'"
+                                (search-input-file inputs "/bin/JxrDecApp")
+                                "'")))
               ;; Calibre thinks we are installing desktop files into a home
               ;; directory, but here we butcher the script in to installing
               ;; to calibres /share directory.
-              (setenv "XDG_DATA_HOME" (string-append out "/share"))
+              (setenv "XDG_DATA_HOME" (string-append #$output "/share"))
               (substitute* "src/calibre/linux.py"
                 (("'~/.local/share'") "''"))
-
               ;; 'python setup.py rapydscript' uses QtWebEngine, which
               ;; needs to create temporary files in $HOME.
               (setenv "HOME" "/tmp")
-
               ;; XXX: QtWebEngine will fail if no fonts are available.  This
               ;; can likely be removed when fontconfig has been patched to
               ;; include TrueType fonts by default.
-              (symlink (string-append (assoc-ref inputs "font-liberation")
+              (symlink (string-append #$(this-package-input "font-liberation")
                                       "/share/fonts")
                        "/tmp/.fonts")
-
-              (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo"))
-              (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib"))
+              (let ((podofo #$(this-package-input "podofo")))
+                (setenv "PODOFO_INC_DIR"
+                        (string-append podofo "/include/podofo"))
+                (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")))
               ;; This informs the tests we are a continuous integration
               ;; environment and thus have no networking.
               (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 to fix it.  TODO: Fix test and remove this.
-              (setenv "SKIP_QT_BUILD_TEST" "true")
-              #t)))
-         (add-after 'install 'install-rapydscript
-           (lambda* (#:key inputs #:allow-other-keys)
+              ;; 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
+              ;; to fix it.  TODO: Fix test and remove this.
+              (setenv "SKIP_QT_BUILD_TEST" "true")))
+          (add-after 'install 'install-rapydscript
+            (lambda _
               ;; Unset so QtWebengine doesn't dump temporary files here.
-             (unsetenv "XDG_DATA_HOME")
-             (invoke "python" "setup.py" "rapydscript")
-             #t))
-         (add-after 'install 'install-man-pages
-           (lambda* (#:key outputs #:allow-other-keys)
-             (copy-recursively
-              "man-pages"
-              (string-append (assoc-ref outputs "out") "/share/man"))
-             #t))
-         ;; The font TTF files are used in some miscellaneous tests, so we
-         ;; unbundle them here to avoid patching the tests.
-         (add-after 'install 'unbundle-font-liberation
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((font-dest (string-append (assoc-ref outputs "out")
-                                             "/share/calibre/fonts/liberation"))
-                   (font-src (string-append (assoc-ref inputs "font-liberation")
-                                            "/share/fonts/truetype")))
-               (delete-file-recursively font-dest)
-               (symlink font-src font-dest))
-             #t))
-         ;; Make run-time dependencies available to the binaries.
-         (add-after 'wrap 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (qtwebengine (assoc-ref inputs "qtwebengine")))
-               (with-directory-excursion (string-append out "/bin")
-                 (for-each
-                  (lambda (binary)
-                    (wrap-program binary
-                      ;; Make QtWebEngineProcess available.
-                      `("QTWEBENGINEPROCESS_PATH" =
-                        ,(list (string-append
-                                qtwebengine
-                                "/lib/qt5/libexec/QtWebEngineProcess")))))
-                  ;; Wrap all the binaries shipping with the package, except
-                  ;; for the wrappings created during the 'wrap standard
-                  ;; phase.  This extends existing .calibre-real wrappers
-                  ;; rather than create ..calibre-real-real-s.  For more
-                  ;; information see: https://issues.guix.gnu.org/43249.
-                  (find-files "." (lambda (file stat)
-                                    (not (wrapped-program? file)))))))
-             #t)))))
+              (unsetenv "XDG_DATA_HOME")
+              (invoke "python" "setup.py" "rapydscript")))
+          (add-after 'install 'install-man-pages
+            (lambda _
+              (copy-recursively "man-pages"
+                                (string-append #$output "/share/man"))))
+          ;; The font TTF files are used in some miscellaneous tests, so we
+          ;; unbundle them here to avoid patching the tests.
+          (add-after 'install 'unbundle-font-liberation
+            (lambda _
+              (let ((font-dest
+                     (string-append #$output "/share/calibre/fonts/liberation"))
+                    (font-src
+                     (string-append #$(this-package-input "font-liberation")
+                                    "/share/fonts/truetype")))
+                (delete-file-recursively font-dest)
+                (symlink font-src font-dest))))
+          ;; Make run-time dependencies available to the binaries.
+          (add-after 'wrap 'wrap-program
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion (string-append #$output "/bin")
+                (for-each
+                 (lambda (binary)
+                   (wrap-program binary
+                     ;; Make QtWebEngineProcess available.
+                     `("QTWEBENGINEPROCESS_PATH" =
+                       ,(list
+                         (search-input-file
+                          inputs "/lib/qt5/libexec/QtWebEngineProcess")))))
+                 ;; Wrap all the binaries shipping with the package, except
+                 ;; for the wrappings created during the 'wrap standard
+                 ;; phase.  This extends existing .calibre-real wrappers
+                 ;; rather than create ..calibre-real-real-s.  For more
+                 ;; information see: https://issues.guix.gnu.org/43249.
+                 (find-files "." (lambda (file stat)
+                                   (not (wrapped-program? file)))))))))))
     (home-page "https://calibre-ebook.com/")
     (synopsis "E-book library management software")
     (description "Calibre is an e-book library manager.  It can view, convert
@@ -515,7 +518,7 @@ following formats:
 (define-public cozy
   (package
     (name "cozy")
-    (version "1.1.2")
+    (version "1.2.0")
     (source
      (origin
        (method git-fetch)
@@ -524,7 +527,7 @@ following formats:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hifzzhhf0ww6iar9gswjfndy3i54s6jc41zaazlx4scc7r6fhs0"))))
+        (base32 "0igqf9b77i13sxlk4ziw549h379hmz1slrb3vvf8irk94gxabsaw"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -559,15 +562,16 @@ following formats:
                  `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
                  `("GUIX_PYTHONPATH" ":" prefix (,python-path ,pylib)))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           `(,gtk+ "bin")
+           pkg-config
+           python-wrapper))
     (inputs
-     (list file
+     (list bash-minimal
+           file
            granite
            gsettings-desktop-schemas
            gst-libav
@@ -608,7 +612,7 @@ Some of the current features:
 @item Mpris integration (Media keys & playback info for desktop environment)
 @end itemize")
     ;; TODO: Unbundle python-inject.
-    (license (list license:gpl3+ ;cozy
+    (license (list license:gpl3+        ;cozy
                    license:asl2.0)))) ;python-inject (bundled dependency)
 
 (define-public xchm
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 6fe79b99ca..7c3e59117a 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -142,7 +142,7 @@ of categories with some of the activities available in that category.
 (define-public gcompris-qt
   (package
     (name "gcompris-qt")
-    (version "2.1")
+    (version "2.3")
     (source
      (origin
        (method url-fetch)
@@ -150,7 +150,7 @@ of categories with some of the activities available in that category.
              "https://download.kde.org/stable/gcompris/qt/src/gcompris-qt-"
              version ".tar.xz"))
        (sha256
-        (base32 "02j3xv8sa3s5g50zs15wy2giabmhg1q0b8ar73q3fpwvxkz9hcwn"))))
+        (base32 "0qncknaaf168anh4cjp7dqz6qzgx948kvgr32j2vga8mjakqn1aj"))))
     (build-system qt-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index 24bb4b03b1..ab72c36563 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -56,7 +56,8 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sqlite)
-  #:use-module (gnu packages stb))
+  #:use-module (gnu packages stb)
+  #:use-module (gnu packages toolkits))
 
 (define-public libserialport
   (package
@@ -251,7 +252,7 @@ supported devices, as well as input/output file format support.")
 (define-public openboardview
   (package
     (name "openboardview")
-    (version "8.95.1")
+    (version "8.95.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -264,19 +265,17 @@ supported devices, as well as input/output file format support.")
                          (guix build utils)))
               (snippet
                '(with-directory-excursion "src"
-                  ;; Keep the bundled ImGui for now, as in the current version
-                  ;; (~1.79), it requires the glad loader generated at build
-                  ;; time as an input.
-                  (define keep (list "." ".." "imgui" "openboardview"))
+                  (define keep (list "." ".." "openboardview"))
                   (for-each (lambda (f)
                               (when (eq? 'directory (stat:type (lstat f)))
                                 (delete-file-recursively f)))
                             (scandir "." (negate (cut member <> keep))))))
               (patches
-               (search-patches "openboardview-use-system-utf8.patch"))
+               (search-patches "openboardview-use-system-imgui.patch"
+                               "openboardview-use-system-utf8.patch"))
               (sha256
                (base32
-                "16mrs7bimwp8a8lb2wqhfisy6j0hl9574l4h9yb66v46aglvmd3h"))))
+                "1n2yfi8wpky0y231kq2zdgwn7f7kff8m53m904hxi5ppmwhx1d6q"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -288,17 +287,6 @@ supported devices, as well as input/output file format support.")
                   ((guix build glib-or-gtk-build-system) #:prefix gtk:))
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'remove-timestamps
-            (lambda _
-              ;; The __TIMESTAMP__ CPP macro does apparently not honor
-              ;; SOURCE_EPOCH_DATE.  Patch it to use __DATE__ instead, which
-              ;; does (see:
-              ;; https://github.com/OpenBoardView/OpenBoardView/issues/229 and
-              ;; https://issues.guix.gnu.org/53647).
-              (substitute* '("src/openboardview/BoardView.cpp"
-                             "src/openboardview/main_opengl.cpp")
-                (("__TIMESTAMP__")
-                 "__DATE__"))))
           (add-before 'configure 'configure-glad
             (lambda* (#:key inputs #:allow-other-keys)
               (substitute* "src/CMakeLists.txt"
@@ -340,6 +328,7 @@ supported devices, as well as input/output file format support.")
     (inputs
      (list fontconfig
            gtk+
+           imgui
            sdl2
            sqlite
            zlib))
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index 3fb74a56a5..1336a99a0b 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -60,17 +60,15 @@
               (for-each make-file-writable (find-files "."))))
           (add-after 'make-git-checkout-writable 'replace-paths
             (lambda* (#:key inputs #:allow-other-keys)
-              (substitute* '("lib/elixir/lib/system.ex"
-                             "lib/mix/lib/mix/scm/git.ex")
-                (("(cmd\\(['\"])git" _ prefix)
-                 (string-append prefix
-                                (search-input-file inputs "/bin/git"))))
+              ;; Note: references end up obfuscated in binary BEAM files where
+              ;; they may be invisible to the GC and graft code:
+              ;; <https://issues.guix.gnu.org/54304#11>.
               (substitute* '("lib/mix/lib/mix/release.ex"
                              "lib/mix/lib/mix/tasks/release.init.ex")
                 (("#!/bin/sh")
-                 (string-append "#!" (search-input-file inputs "sh"))))
+                 (string-append "#!" (search-input-file inputs "/bin/sh"))))
               (substitute* "bin/elixir"
-                (("^ERTS_BIN=$")
+                (("ERTS_BIN=\n")
                  (string-append
                   "ERTS_BIN="
                   ;; Elixir Releases will prepend to ERTS_BIN the path of
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e4390bad96..42fc13f4c2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -155,6 +155,7 @@
   #:use-module (gnu packages djvu)
   #:use-module (gnu packages ebook)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages guile)
@@ -240,7 +241,7 @@
 (define-public emacs-geiser
   (package
     (name "emacs-geiser")
-    (version "0.22.2")
+    (version "0.23.1")
     (source
      (origin
        (method git-fetch)
@@ -249,7 +250,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11vc57nkgbsyl1wrjikxs0ixzkp7dksj51p4aa9girsm2hs3bs6v"))))
+        (base32 "1lvnk71fb4qkh8a7h7spsdhmc9nnj1lwgp9wr3c2fgzjqsl62kgr"))))
     (build-system emacs-build-system)
     (arguments
      '(#:phases
@@ -289,7 +290,7 @@ e.g. emacs-geiser-guile for Guile.")
 (define-public emacs-geiser-guile
   (package
     (name "emacs-geiser-guile")
-    (version "0.21.2")
+    (version "0.23")
     (source
      (origin
        (method git-fetch)
@@ -298,7 +299,7 @@ e.g. emacs-geiser-guile for Guile.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ri1l203vp5nnl7chmmvvj3b03315fpzjjkisv55m6xs77ig2cl7"))))
+        (base32 "1v9f90smnk41nz1pjy5mwz199y8p4qar3llgaryzxr7s4wg2v9wi"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -390,23 +391,22 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
         (base32 "1aqsvmk1hi7kc3j4h8xlza7c6rwm71v98fv5wpw8kmyj9vsp49wx"))))
     (build-system emacs-build-system)
     (arguments
-     '(#:include (cons "^src/" %default-include)
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'make-autoloads 'patch-autoloads
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* (string-append
-                           (elpa-directory (assoc-ref outputs "out"))
-                           "/geiser-racket-autoloads.el")
-               ;; Activating implementations fails when Geiser is not yet
-               ;; loaded, so let's defer that until it is.
-               (("\\(geiser-activate-implementation .*\\)" all)
-                (string-append
-                 "(eval-after-load 'geiser-impl '" all ")"))
-	       (("\\(geiser-implementation-extension .*\\)" all)
-                (string-append
-                 "(eval-after-load 'geiser-impl '" all ")")))
-             #t)))))
+     (list
+      #:include #~(cons "^src/" %default-include)
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'make-autoloads 'patch-autoloads
+            (lambda _
+              (substitute* (string-append (elpa-directory #$output)
+                                          "/geiser-racket-autoloads.el")
+                ;; Activating implementations fails when Geiser is not yet
+                ;; loaded, so let's defer that until it is.
+                (("\\(geiser-activate-implementation .*\\)" all)
+                 (string-append
+                  "(eval-after-load 'geiser-impl '" all ")"))
+	        (("\\(geiser-implementation-extension .*\\)" all)
+                 (string-append
+                  "(eval-after-load 'geiser-impl '" all ")"))))))))
     (inputs
      (list racket))
     (propagated-inputs
@@ -451,7 +451,7 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
                 (string-append
                  "(eval-after-load 'geiser-impl '" all ")"))))))))
     (inputs
-     (list chez-scheme))
+     (list (chez-scheme-for-system)))
     (propagated-inputs
      (list emacs-geiser))
     (home-page "https://nongnu.org/geiser/")
@@ -1244,8 +1244,7 @@ you will die.  The game builds the list of words from the active buffer.")
               ;; Remove examples file with references to external packages as
               ;; they do not exist at compilation time.
               (snippet
-               '(begin (delete-file "examples.el")
-                       #t))
+               '(begin (delete-file "examples.el")))
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/vermiculus/graphql.el")
@@ -1319,7 +1318,7 @@ organizing remote Go repository clones.")
 (define-public emacs-ghub
   (package
     (name "emacs-ghub")
-    (version "3.5.4")
+    (version "3.5.5")
     (source
      (origin
        (method git-fetch)
@@ -1328,14 +1327,28 @@ organizing remote Go repository clones.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bc5z63ylb0ir5v9qngyl50svmlfd6hx9lv1ladwywncdpsslls8"))))
+        (base32 "1px27nh4cr3r16qmvig72jdirjzllvm2m4dzm59kfznhg3rf7vj0"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'make-info
-           (lambda _
-             (invoke "make" "info"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'make-info
+            (lambda _
+              (invoke "make" "info")))
+          (add-after 'make-info 'enter-lisp-directory
+            (lambda _
+              (chdir "lisp")))
+          (add-after 'expand-load-path 'add-el-dir-to-emacs-load-path
+            (lambda _
+              (setenv "EMACSLOADPATH"
+                      (string-append (getcwd)
+                                     "/lisp:"
+                                     (getenv "EMACSLOADPATH")))))
+          (add-after 'install 'install-info
+            (lambda _
+              (let ((info (string-append #$output "/share/info")))
+                (install-file "../docs/ghub.info" info)))))))
     (native-inputs
      (list texinfo))
     (propagated-inputs
@@ -1487,13 +1500,13 @@ a constant work in progress as the language itself also progresses.")
       (propagated-inputs
        (list emacs-dash emacs-org emacs-s emacs-hydra emacs-use-package))
       (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'require-hydra
-             (lambda _
-               (substitute* "unpackaged.el"
-                 ((";;; Code:") ";;; Code:\n(require 'hydra)"))
-               #t)))))
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'require-hydra
+              (lambda _
+                (substitute* "unpackaged.el"
+                  ((";;; Code:") ";;; Code:\n(require 'hydra)")))))))
       (home-page "https://github.com/alphapapa/unpackaged.el")
       (synopsis "Useful snippets of Emacs Lisp code")
       (description "This package provides Emacs Lisp utilities for a variety
@@ -1642,20 +1655,22 @@ supports type hints, definition-jumping, completion, and more.")
       (native-inputs
        (list emacs-shut-up))
       (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'change-flycheck-version
-             (lambda _
-               (substitute* "flycheck.el"
-                 (("\\(pkg-info-version-info 'flycheck\\)")
-                  (string-append "\"" ,version "\"")))
-               #t)))
-         ;; TODO: many failing tests
-         #:tests? #f
-         #:test-command '("emacs" "-Q" "--batch" "-L" "."
-                          "--load" "test/flycheck-test"
-                          "--load" "test/run.el"
-                          "-f" "flycheck-run-tests-main")))
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'change-flycheck-version
+              (lambda _
+                (substitute* "flycheck.el"
+                  (("\\(pkg-info-version-info 'flycheck\\)")
+                   (string-append "\"" #$version "\""))))))
+        ;; TODO: many failing tests
+        #:tests? #f
+        #:test-command
+        #~(list "emacs" "-Q" "--batch"
+                "-L" "."
+                "--load" "test/flycheck-test"
+                "--load" "test/run.el"
+                "-f" "flycheck-run-tests-main")))
       (home-page "https://www.flycheck.org")
       (synopsis "On-the-fly syntax checking")
       (description
@@ -2010,12 +2025,12 @@ optional minor mode which can apply this command automatically on save.")
          (snippet
           '(begin
              ;; Delete the Cask test runners.
-             (for-each delete-file '("Cask" "test/test-helper.el"))
-             #t))))
+             (for-each delete-file '("Cask" "test/test-helper.el"))))))
       (build-system emacs-build-system)
       (arguments
-       `(#:tests? #t
-         #:test-command '("ert-runner")))
+       (list
+        #:tests? #t
+        #:test-command #~(list "ert-runner")))
       (native-inputs
        (list emacs-ert-runner))
       (propagated-inputs
@@ -2218,14 +2233,14 @@ incrementally confined in Isearch manner.")
 (define emacs-emms-print-metadata
   (package
     (name "emacs-emms-print-metadata")
-    (version "9")
+    (version "10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "emms-" version ".tar"))
        (sha256
-        (base32 "12p9nigzyrlpkfvg7v76jmcfs08z84gggnx7h4frdaim3kx5y6xf"))))
+        (base32 "1lgjw9p799sl7nqnl2sk4g67ra10z2ldygx9kb8pmxjrx64mi3qm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("emms-print-metadata")
@@ -2423,14 +2438,14 @@ directories or regex patterns.")
 (define-public emacs-bbdb
   (package
     (name "emacs-bbdb")
-    (version "3.2")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "bbdb-" version ".tar"))
        (sha256
-        (base32 "1p56dg0mja2b2figy7yhdx714zd5j6njzn0k07zjka3jc06izvjx"))))
+        (base32 "01vsnifs47krq1srgdkk9agbv3p2fykl9nydr4nrfjxbqpnyh3ij"))))
     (build-system emacs-build-system)
     (arguments
      ;; XXX: The following file cannot be byte-compiled, because et requires
@@ -2694,6 +2709,35 @@ expressions, editing the search results directly and searching file names
 rather than the contents of files.")
     (license license:gpl3+)))
 
+(define-public emacs-aio
+  (package
+    (name "emacs-aio")
+    (version "1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/skeeto/emacs-aio")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1y7j10j74r3fy0rcb8g3cm9nlls34qb0pz9xkia7psp77syrlz54"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("emacs" "--batch"
+                        "-l" "aio-test.el"
+                        "-f" "ert-run-tests-batch-and-exit")))
+    (propagated-inputs
+     (list emacs-elfeed emacs-skewer-mode))
+    (home-page "https://github.com/skeeto/emacs-aio")
+    (synopsis "Async/Await for Emacs Lisp")
+    (description "@code{aio} is to Emacs Lisp as @code{asyncio} is to
+Python. This package builds upon Emacs generators to provide functions that
+pause while they wait on asynchronous events.  They do not block any thread
+while paused.")
+    (license license:unlicense)))
+
 (define-public emacs-async
   (package
     (name "emacs-async")
@@ -2720,14 +2764,14 @@ as a library for other Emacs packages.")
 (define-public emacs-auctex
   (package
     (name "emacs-auctex")
-    (version "13.0.16")
+    (version "13.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "auctex-" version ".tar"))
        (sha256
-        (base32 "1r9piq4js45knw8sf73kk8jjinmx4m2mdinc98xrklnwcffw7hjf"))))
+        (base32 "193sqq2wiq3lg99m8hifl9rjxdazpy638r99sqvmxmkfm98cr34r"))))
     (build-system emacs-build-system)
     ;; We use 'emacs' because AUCTeX requires dbus at compile time
     ;; ('emacs-minimal' does not provide dbus).
@@ -2803,14 +2847,14 @@ a set of simplified face specifications and a user-supplied color palette")
 (define-public emacs-howm
   (package
     (name "emacs-howm")
-    (version "1.4.7")
+    (version "1.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://howm.sourceforge.jp/a/"
                            "howm-" version ".tar.gz"))
        (sha256
-        (base32 "11k0dzwyn7ly34g0zcd6i0i8qwyv9di8m6fx805axrxykxb0qan2"))))
+        (base32 "0i5pfnvy130fzk8w62301vgsqf1y22chwhjgnm5hjxr9y0kw5ii4"))))
     (build-system gnu-build-system)
     (native-inputs
      (list emacs-minimal))
@@ -2928,7 +2972,7 @@ Lock key.")
 (define-public emacs-chronometrist
   (package
     (name "emacs-chronometrist")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method git-fetch)
@@ -2937,29 +2981,29 @@ Lock key.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "156hj3sxjcfpwimnrykh4n3krkbzas9jg8m6xzy42rnzhx28ja6k"))))
+        (base32 "0qpkpkipmac24m3ng4ahsml3vi15qcvmid3g02pbpgbpc113zfpl"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir-elisp
-           ;; Elisp directory is not in root of the source.
-           (lambda _
-             (chdir "elisp")))
-         (add-after 'install 'install-doc
-           ;; Documentation consists of several Markdown files.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir-elisp
+            ;; Elisp directory is not in root of the source.
+            (lambda _
+              (chdir "elisp")))
+          (add-after 'install 'install-doc
+            ;; Documentation consists of several Markdown files.
+            (lambda _
+              (let ((doc (string-append #$output
                                         "/share/doc/emacs-chronometrist-"
-                                        ,version)))
-               (with-directory-excursion "../doc"
-                 (for-each (lambda (f) (install-file f doc))
-                           (cons* "../UNLICENSE"
-                                  "../WTFPL"
-                                  (find-files "." "\\.md$"))))))))))
-    (propagated-inputs
-     (list emacs-dash emacs-s emacs-spark emacs-ts))
+                                        #$version)))
+                (with-directory-excursion "../doc"
+                  (for-each (lambda (f) (install-file f doc))
+                            (cons* "../UNLICENSE"
+                                   "../WTFPL"
+                                   (find-files "." "\\.md$"))))))))))
+    (propagated-inputs
+     (list emacs-alert emacs-dash emacs-s emacs-spark emacs-ts))
     (home-page "https://github.com/contrapunctus-1/chronometrist")
     (synopsis "Time tracker for Emacs")
     (description "Chronometrist is a time tracker in Emacs, largely modelled
@@ -3011,7 +3055,7 @@ of bibliographic references.")
 (define-public emacs-corfu
   (package
     (name "emacs-corfu")
-    (version "0.19")
+    (version "0.20")
     (source
      (origin
        (method git-fetch)
@@ -3020,7 +3064,7 @@ of bibliographic references.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1b7kdgiqww419f2npkwslg5h2js897550rs578gvjax1mmqjd5xd"))))
+        (base32 "14hz2frz55smzhamynkahys2m4qbm9pha9w9v2rwaffw89jg6ia9"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/corfu")
     (synopsis "Completion overlay region function")
@@ -3033,7 +3077,7 @@ overlay below or above the point.  Corfu can be considered the minimalistic
 (define-public emacs-cape
   (package
     (name "emacs-cape")
-    (version "0.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
@@ -3042,7 +3086,7 @@ overlay below or above the point.  Corfu can be considered the minimalistic
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bmxpfp0zs24lbp1mlcc66f4s5gxgrj78001h241mzndc3kaiqfk"))))
+        (base32 "0731c55bb1vxdh8k7312z1bvf7g8jwr2n04q3ffpqp0fan6ra025"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/cape")
     (synopsis "Completion at point extensions for Emacs")
@@ -3194,32 +3238,44 @@ current match, total matches and exit status.
     (license license:gpl3+)))
 
 (define-public emacs-go-mode
-  (package
-    (name "emacs-go-mode")
-    (version "1.5.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/dominikh/go-mode.el")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1nd2h50yb0493wvf1h7fzplq45rmqn2w7kxpgnlxzhkvq99v8vzf"))))
-    (build-system emacs-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-writable
-           (lambda _
-             (for-each make-file-writable (find-files "." "\\.el$"))
-             #t)))))
-    (home-page "https://github.com/dominikh/go-mode.el")
-    (synopsis "Go mode for Emacs")
-    (description
-     "This package provides go-mode, an Emacs mode for working with software
+  ;; XXX: Upstream did not tag last release.  The commit below matches version
+  ;; bump.
+  (let ((commit "3273fcece5d9ab7edd4f15b2d6bce61f4e5a0666"))
+    (package
+      (name "emacs-go-mode")
+      (version "1.6.0")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/dominikh/go-mode.el")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "00qzn136d8cl3szbi44xf3iiv75r6n1m7wwgldmzn4i5mpz8dbq7"))))
+      (arguments
+       (list
+        #:tests? #t
+        #:test-command #~(list "ert-runner")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'check 'fix-tests
+              ;; Two tests fail because they (wrongly) assume we run them from
+              ;; the "test" sub-directory.  Fix their expectations.
+              (lambda _
+                (let ((test-file "test/go-indentation-test.el"))
+                  (make-file-writable test-file)
+                  (substitute* test-file
+                    (("testdata/indentation_tests/" all)
+                     (string-append "test/" all)))))))))
+      (build-system emacs-build-system)
+      (native-inputs (list emacs-ert-runner))
+      (home-page "https://github.com/dominikh/go-mode.el")
+      (synopsis "Go mode for Emacs")
+      (description
+       "This package provides go-mode, an Emacs mode for working with software
 written in the Go programming language.")
-    (license license:bsd-3)))
+      (license license:bsd-3))))
 
 (define-public emacs-google-maps
   ;; There has been no new release tag since 2013.
@@ -3259,26 +3315,25 @@ directly inside Emacs.  It requires a Google Map Static API key to function.")
         (base32 "1v1p85wk73nfsvv66qf90flgf9dqhmv15z1r7q4zmc4ifklqn08m"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'make-info
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "texinfo"
-               (substitute* "Makefile"
-                 (("\\/usr\\/bin\\/gzip")
-                  (search-input-file inputs "/bin/gzip")))
-               (invoke "make"
-                       "clean"
-                       "info"
-                       (string-append "TEXINFODIR="
-                                      (assoc-ref inputs "texinfo")
-                                      "/bin")))))
-         (add-after 'install 'install-info
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (info (string-append out "/share/info")))
-               (install-file "texinfo/graphviz-dot-mode.info.gz" info)
-               #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'make-info
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion "texinfo"
+                (substitute* "Makefile"
+                  (("\\/usr\\/bin\\/gzip")
+                   (search-input-file inputs "/bin/gzip")))
+                (invoke "make"
+                        "clean"
+                        "info"
+                        (string-append "TEXINFODIR="
+                                       #$(this-package-native-input "texinfo")
+                                       "/bin")))))
+          (add-after 'install 'install-info
+            (lambda _
+              (let ((info (string-append #$output "/share/info")))
+                (install-file "texinfo/graphviz-dot-mode.info.gz" info)))))))
     (native-inputs
      (list gzip texinfo))
     (propagated-inputs
@@ -3853,10 +3908,11 @@ and limited version of the images provided by the KanjiVG project.")
           (base32 "0jv9yfsncgf96308c041hvps3jlc151xb0aipm0vasbma3x83ygm"))))
       (build-system emacs-build-system)
       (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'enter-lisp-directory
-             (lambda _ (chdir "lisp") #t)))))
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'enter-lisp-directory
+              (lambda _ (chdir "lisp"))))))
       (home-page "https://github.com/slotThe/kbd-mode")
       (synopsis "Minor mode for syntax highlighting kmonad's @file{.kbd} files")
       (description
@@ -3994,15 +4050,15 @@ allowing you to visit all previous states of the document if you need.")
           (base32 "04wq1alrzzlidcb4mjb5j7pg68pks1vgv7kvvmi6dzb3l602mb2a"))))
       (build-system emacs-build-system)
       (arguments
-       `(#:tests? #t
-         #:test-command '("emacs" "--batch" "-l" "undo-fu-session.el"
-                          "-l" "undo-fu-session-test.el")
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'check 'set-home
-             (lambda _
-               (setenv "HOME" "/tmp")
-               #t)))))
+       (list
+        #:tests? #t
+        #:test-command #~(list "emacs" "--batch" "-l" "undo-fu-session.el"
+                               "-l" "undo-fu-session-test.el")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'check 'set-home
+              (lambda _
+                (setenv "HOME" "/tmp"))))))
       (home-page "https://gitlab.com/ideasman42/emacs-undo-fu-session")
       (synopsis "Save & recover undo steps between Emacs sessions")
       (description "This package writes undo/redo information upon file save
@@ -4297,7 +4353,7 @@ window.")
 (define-public emacs-git-link
   (package
     (name "emacs-git-link")
-    (version "0.8.5")
+    (version "0.8.6")
     (source
      (origin
        (method git-fetch)
@@ -4306,7 +4362,7 @@ window.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0payj5hwqkzdrxx5vfzaaalmzfkdmdqhqki193a6cbf0k3c03zh3"))))
+        (base32 "1ifq9z4p0rbz2bpm6qz89xg5ycn5fflsyradzzxzsgyys0zc6szx"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -4775,7 +4831,7 @@ result.")
 (define-public emacs-rg
   (package
     (name "emacs-rg")
-    (version "2.1.0")
+    (version "2.2.0")
     (source
      (origin
        (method git-fetch)
@@ -4784,7 +4840,7 @@ result.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "17f11znjyfnxs5y0zafcx9aa055wkw3igzk9gy0cipnyp42yb4v7"))))
+        (base32 "0a16g9phyy6c6vn5zfkpcpi90ixbx1ivp4wapwg189v77k2810by"))))
     (build-system emacs-build-system)
     (arguments
      '(#:phases
@@ -5520,13 +5576,13 @@ keywords and smart indentation.")
     (propagated-inputs
      (list emacs-popup))
     (arguments
-     `(#:include (cons* "^roguel-ike/" "^roguel-ike-lib/" %default-include)
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-test-environment
-           (lambda _
-             (setenv "HOME" "/tmp")
-             #t)))))
+     (list
+      #:include #~(cons* "^roguel-ike/" "^roguel-ike-lib/" %default-include)
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'set-test-environment
+            (lambda _
+              (setenv "HOME" "/tmp"))))))
     (home-page "https://github.com/stevenremot/roguel-ike.git")
     (synopsis "Coffee-break roguelike for Emacs")
     (description
@@ -5993,17 +6049,17 @@ compile}.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50"))))
-    (inputs (list ledger))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((ledger (assoc-ref inputs "ledger")))
-               ;; Specify the absolute executable location of ledger.
-               (substitute* "flycheck-ledger.el"
-                 (("\"ledger\"") (string-append "\"" ledger "\""))))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'configure
+            (lambda _
+              (let ((ledger #$(this-package-input "ledger")))
+                ;; Specify the absolute executable location of ledger.
+                (substitute* "flycheck-ledger.el"
+                  (("\"ledger\"") (string-append "\"" ledger "\"")))))))))
+    (inputs (list ledger))
     (propagated-inputs
      (list emacs-flycheck))
     (build-system emacs-build-system)
@@ -6183,16 +6239,16 @@ Gnus, e.g., for applying patches received by email.")
     (native-inputs
      (list emacs-undercover))
     (arguments
-     `(#:emacs ,emacs
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'fix-makefile
-           (lambda _
-             (substitute* "Makefile"
-               (("\\$\\(CASK\\) exec ") ""))
-             #t)))
-       #:tests? #t
-       #:test-command '("make" "test")))
+     (list
+      #:emacs emacs
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'fix-makefile
+            (lambda _
+              (substitute* "Makefile"
+                (("\\$\\(CASK\\) exec ") "")))))
+      #:tests? #t
+      #:test-command #~(list "make" "test")))
     (home-page "https://github.com/nflath/sudo-edit/")
     (synopsis "Open files as another user")
     (description
@@ -6297,14 +6353,14 @@ src blocks.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.30")
+    (version "0.31")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                            version ".tar"))
        (sha256
-        (base32 "05yy1hhxd59rhricb14iai71w681222sv0i703yrgg868mphl7sb"))))
+        (base32 "11vdjrn5m5g6pirw8jv0602fbwwgdhazfrrwxxplii8x02gqk0sr"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -7199,8 +7255,7 @@ for @code{AUCTeX}.")
         '(begin
            (for-each delete-file '("dot-emacs.el" "Makefile"))
            (install-file "6.945-config/mit-scheme-doc.el" ".")
-           (delete-file-recursively "6.945-config")
-           #t))
+           (delete-file-recursively "6.945-config")))
        (file-name (string-append name "-" version ".tar.bz2"))
        (method url-fetch)
        (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
@@ -7967,28 +8022,27 @@ save, it exports back to the original non-Org file.")
       (propagated-inputs
        (list emacs-alert))
       (arguments
-       `(#:include (cons "^resources\\/" %default-include)
-         #:tests? #t
-         #:test-command '("emacs" "--batch"
-                          "-l" "org-pomodoro-tests.el"
-                          "-f" "ert-run-tests-batch-and-exit")
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'check 'make-tests-writable
-             (lambda _
-               (make-file-writable "org-pomodoro-tests.el")
-               #t))
-           (add-before 'check 'add-require
-             (lambda _
-               (emacs-batch-edit-file "org-pomodoro-tests.el"
-                 `(progn (progn (goto-char (point-min))
-                                (re-search-forward
-                                 "ert-deftest")
-                                (beginning-of-line)
-                                (forward-line -1)
-                                (insert "(require 'org-pomodoro)"))
-                         (basic-save-buffer)))
-               #t)))))
+       (list
+        #:include #~(cons "^resources\\/" %default-include)
+        #:tests? #t
+        #:test-command
+        #~(list "emacs" "--batch"
+                "-l" "org-pomodoro-tests.el"
+                "-f" "ert-run-tests-batch-and-exit")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'check 'make-tests-writable
+              (lambda _
+                (make-file-writable "org-pomodoro-tests.el")))
+            (add-before 'check 'add-require
+              (lambda _
+                (emacs-batch-edit-file "org-pomodoro-tests.el"
+                  `(progn (progn (goto-char (point-min))
+                                 (re-search-forward "ert-deftest")
+                                 (beginning-of-line)
+                                 (forward-line -1)
+                                 (insert "(require 'org-pomodoro)"))
+                          (basic-save-buffer))))))))
       (home-page "https://github.com/marcinkoziej/org-pomodoro")
       (synopsis "Pomodoro technique for org-mode")
       (description "@code{emacs-org-pomodoro} adds very basic support for
@@ -8393,16 +8447,15 @@ board and goal value can be customized.")
         (base32 "1a4iwjdh6k348df6qywjws9z9f862d62m0b2sz57z4xhywiyxpr7"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-pieces
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (pieces
-                     (string-append out "/share/emacs/site-lisp/pieces")))
-               (mkdir-p pieces)
-               (copy-recursively "pieces" pieces)
-               #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-pieces
+            (lambda _
+              (let ((pieces
+                     (string-append #$output "/share/emacs/site-lisp/pieces")))
+                (mkdir-p pieces)
+                (copy-recursively "pieces" pieces)))))))
     (home-page "https://elpa.gnu.org/packages/chess.html")
     (synopsis "Play chess in GNU Emacs")
     (description
@@ -8505,7 +8558,7 @@ them easier to distinguish from other, less important buffers.")
 (define-public emacs-embark
   (package
     (name "emacs-embark")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -8513,7 +8566,7 @@ them easier to distinguish from other, less important buffers.")
              (url "https://github.com/oantolin/embark")
              (commit version)))
        (sha256
-        (base32 "08wj0p3plvblbmfmn4vsanhldr2csrnm1lhk3g1nic5v26yi5l64"))
+        (base32 "04xxwhh577aam0fqfmprxqaw0v1l6yidikr6chajcf16mf1wd2gv"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -8623,7 +8676,7 @@ style, or as multiple word prefixes.")
 (define-public emacs-consult
   (package
     (name "emacs-consult")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -8631,7 +8684,7 @@ style, or as multiple word prefixes.")
              (url "https://github.com/minad/consult")
              (commit version)))
        (sha256
-        (base32 "0cfj8h0k05947cazsr95yy75shs0vpy59sa41f31xbw00q9l48q6"))
+        (base32 "1mravx5aapy8bcgk6nvi1jvb5jgl7jsn7pd7br7v7fqadcp225m6"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/consult")
@@ -8669,7 +8722,7 @@ replaced with the directory you choose.")
 (define-public emacs-consult-notmuch
   (package
     (name "emacs-consult-notmuch")
-    (version "0.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
@@ -8678,7 +8731,7 @@ replaced with the directory you choose.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07qbm5p4cfrrwyp8a5sw0wkdhnqbappz4xjlnjil2krhj9g39q78"))))
+        (base32 "0xzpkpf2sb89qkbqcrwddp4pgnzdjp40bc5da22jq9r4pf67y7qs"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-consult emacs-notmuch))
@@ -8692,7 +8745,7 @@ and present results either as single emails or full trees.")
 (define-public emacs-marginalia
   (package
     (name "emacs-marginalia")
-    (version "0.12")
+    (version "0.13")
     (source
      (origin
        (method git-fetch)
@@ -8701,7 +8754,7 @@ and present results either as single emails or full trees.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1a4k00g2pp7mk0x5zhqbxvv2igfjdz6bfy2g3hps2ygf4h12wbhg"))))
+        (base32 "1qk6j7l39z92h4kvvbwcs85ilyx3d6y0l8zm33iar2pjnyks1kq3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/marginalia")
     (synopsis "Marginalia in the minibuffer completions")
@@ -8987,39 +9040,36 @@ after buffer changes.")
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (arguments
-     `(#:tests? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-realgud:run-process-void-error
-           ;; See: https://github.com/realgud/realgud/issues/269.
-           (lambda _
-             (substitute* '("realgud/debugger/gdb/gdb.el"
-                            "realgud/debugger/gub/gub.el")
-               (("^\\(require 'load-relative\\).*" anchor)
-                (string-append anchor
-                               "(require-relative-list \
-'(\"../../common/run\") \"realgud:\")\n")))
-             #t))
-         (add-after 'expand-load-path 'fix-autogen-script
-           (lambda _
-             (substitute* "autogen.sh"
-               (("./configure") "sh configure"))
-             #t))
-         (add-after 'fix-autogen-script 'autogen
-           (lambda _
-             (setenv "CONFIG_SHELL" "sh")
-             (invoke "sh" "autogen.sh")))
-         (add-after 'fix-autogen-script 'set-home
-           (lambda _
-             (setenv "HOME" (getenv "TMPDIR"))
-             #t))
-         (add-before 'patch-el-files 'remove-realgud-pkg.el
-           (lambda _
-             ;; FIXME: `patch-el-files' crashes on this file with error:
-             ;; unable to locate "bashdb".
-             (delete-file "./test/test-regexp-bashdb.el")
-             #t)))
-       #:include (cons* ".*\\.el$" %default-include)))
+     (list
+      #:tests? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-realgud:run-process-void-error
+            ;; See: https://github.com/realgud/realgud/issues/269.
+            (lambda _
+              (substitute* '("realgud/debugger/gdb/gdb.el"
+                             "realgud/debugger/gub/gub.el")
+                (("^\\(require 'load-relative\\).*" anchor)
+                 (string-append anchor
+                                "(require-relative-list \
+'(\"../../common/run\") \"realgud:\")\n")))))
+          (add-after 'expand-load-path 'fix-autogen-script
+            (lambda _
+              (substitute* "autogen.sh"
+                (("./configure") "sh configure"))))
+          (add-after 'fix-autogen-script 'autogen
+            (lambda _
+              (setenv "CONFIG_SHELL" "sh")
+              (invoke "sh" "autogen.sh")))
+          (add-after 'fix-autogen-script 'set-home
+            (lambda _
+              (setenv "HOME" (getenv "TMPDIR"))))
+          (add-before 'patch-el-files 'remove-realgud-pkg.el
+            (lambda _
+              ;; FIXME: `patch-el-files' crashes on this file with error:
+              ;; unable to locate "bashdb".
+              (delete-file "./test/test-regexp-bashdb.el"))))
+      #:include #~(cons* ".*\\.el$" %default-include)))
     (native-inputs
      (list autoconf automake emacs-test-simple))
     (propagated-inputs
@@ -9593,31 +9643,30 @@ navigate code in a tree-like fashion.")
       (native-inputs
        (list which emacs-clojure-mode emacs-undercover))
       (arguments
-       `(#:include (cons* "^lispy-clojure\\.clj$"
-                          "^lispy-python\\.py$"
-                          %default-include)
-         #:phases
-         ;; XXX: Some failing tests
-         (modify-phases %standard-phases
-           (add-before 'check 'make-test-writable
-             (lambda _
-               (make-file-writable "lispy-test.el")
-               #t))
-           (add-before 'check 'remove-failing-test
-             (lambda _
-               (emacs-batch-edit-file "lispy-test.el"
-                 `(progn
-                   (dolist (test '("lispy-eval-python-str" "lispy--clojure-dot-object"))
-                    (goto-char (point-min))
-                    (re-search-forward
-                     (concat "ert-deftest " test))
-                    (beginning-of-line)
-                    (kill-sexp))
-                   (basic-save-buffer)))
-               #t)))
-         #:tests? #t
-         ;; Set BEMACS to prevent the test suite from loading straight.el.
-         #:test-command '("make" "test" "BEMACS=emacs -batch")))
+       (list
+        #:include #~(cons* "^lispy-clojure\\.clj$"
+                           "^lispy-python\\.py$"
+                           %default-include)
+        #:phases
+        ;; XXX: Some failing tests
+        #~(modify-phases %standard-phases
+            (add-before 'check 'make-test-writable
+              (lambda _
+                (make-file-writable "lispy-test.el")))
+            (add-before 'check 'remove-failing-test
+              (lambda _
+                (emacs-batch-edit-file "lispy-test.el"
+                  `(progn
+                    (dolist (test '("lispy-eval-python-str" "lispy--clojure-dot-object"))
+                            (goto-char (point-min))
+                            (re-search-forward
+                             (concat "ert-deftest " test))
+                            (beginning-of-line)
+                            (kill-sexp))
+                    (basic-save-buffer))))))
+        #:tests? #t
+        ;; Set BEMACS to prevent the test suite from loading straight.el.
+        #:test-command #~(list "make" "test" "BEMACS=emacs -batch")))
       (synopsis "Modal S-expression editing")
       (description
        "Due to the structure of Lisp syntax it's very rare for the programmer
@@ -9685,16 +9734,16 @@ allowing unprefixed keys to insert their respective characters as expected.")
 (define-public emacs-clojure-mode
   (package
     (name "emacs-clojure-mode")
-    (version "5.13.0")
+    (version "5.14.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/clojure-emacs/clojure-mode")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ikl29rygr1habcsglz07m4ihd4ivi732kkzg8q676ihf367wa9i"))))
+        (base32 "0n7v6hx21f8x37gj388wnff38aqpzxxv5g8vxavp74vr3cbagsnn"))))
     (build-system emacs-build-system)
     (native-inputs
      (list emacs-buttercup emacs-dash emacs-paredit emacs-s))
@@ -10118,7 +10167,7 @@ mode with the package emacs-julia-mode.")
 (define-public emacs-julia-snail
   (package
     (name "emacs-julia-snail")
-    (version "1.1.4")
+    (version "1.1.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -10127,16 +10176,16 @@ mode with the package emacs-julia-mode.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "11spibld7dyggr38hzkrd05lmdf847d57cc9qyk01mb3bli21vxd"))))
+                "04nh37izz04lxkvkxhsig8khbrrgdl4p6pkjsv5bxymnp84zwlw7"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:include (cons "^JuliaSnail\\.jl" %default-include)))
+     (list #:include #~(cons "^JuliaSnail\\.jl" %default-include)))
     (inputs
      (list emacs-dash emacs-s emacs-spinner emacs-xref))
     (propagated-inputs
      (list libvterm
-           emacs-julia-mode ;required by parser
-           emacs-parsec ;required by parser
+           emacs-julia-mode             ;required by parser
+           emacs-parsec                 ;required by parser
            emacs-vterm))
     (home-page "https://github.com/gcv/julia-snail")
     (synopsis "Development environment and REPL interaction package for Julia")
@@ -10362,7 +10411,7 @@ in Emacs.")
 (define-public emacs-edit-indirect
   (package
     (name "emacs-edit-indirect")
-    (version "0.1.6")
+    (version "0.1.8")
     (source
      (origin
        (method git-fetch)
@@ -10371,7 +10420,7 @@ in Emacs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "189nvmlkki1jfszm9i0crbb1p4nzgmbly0wpvpg0i8vmw7vrpl40"))))
+        (base32 "0f5vhppsjw63dkwka6xanmlliq44vf3kj1wp3dg8a6a837xx7z9x"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/edit-indirect")
     (synopsis "Edit regions in separate buffers")
@@ -11298,7 +11347,7 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.8.4")
+    (version "3.8.5")
     (source
      (origin
        (method git-fetch)
@@ -11307,7 +11356,7 @@ ack, ag, helm and pt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kfw83jz44b30v5rzvrx4ish62rkvacxd4s64xmf18h2342nrzi0"))))
+        (base32 "1my6c87ia7h99dbbbw1yxcmgacwss1j36rf3swn3k2ab6k34hsf4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-async emacs-popup))
@@ -11517,7 +11566,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method git-fetch)
@@ -11526,7 +11575,7 @@ target will call @code{compile} on it.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1c21hdrf6b7zc65nr7wqjhcyq5a0f4aa91wrxgzx374q81xym2rf"))))
+        (base32 "0mxlkxpzn7rzbzpzcw2z9x2ab2zvhrwr8h21kmfn3li3dha73gf1"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ;don't exclude 'cider-test.el'
@@ -11882,7 +11931,7 @@ Lua programming language}.")
 (define-public emacs-ebuild-mode
   (package
     (name "emacs-ebuild-mode")
-    (version "1.55")
+    (version "1.56")
     (source
      (origin
        (method url-fetch)
@@ -11891,7 +11940,7 @@ Lua programming language}.")
              "ebuild-mode-" version ".tar.xz"))
        (file-name (string-append name "-" version ".tar.xz"))
        (sha256
-        (base32 "1bs2s5g79vrbk8544lvp388cdbig0s121kwk0h10hif4kp56ka9w"))))
+        (base32 "01q5k7dkyri0s8h7jwng4rw128mx6pdn816zlr0g8rh2798cf91k"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -11998,6 +12047,26 @@ Emacs that Evil does not cover properly by default, such as @code{help-mode},
 being deleted, changed, yanked, or pasted when using evil commands")
       (license license:gpl3+))))
 
+(define-public emacs-goggles
+  (package
+    (name "emacs-goggles")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/minad/goggles")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "15bqjmwfdqp2np6fln6xjyw59c5iddvzsyga0lvb8raa753cdh2k"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/minad/goggles")
+    (synopsis "Pulse modified region")
+    (description "Goggles highlights the modified region using pulse.
+Currently the commands undo, yank, kill and delete are supported.")
+    (license license:gpl3+)))
+
 (define-public emacs-goto-chg
   (package
     (name "emacs-goto-chg")
@@ -13277,7 +13346,7 @@ been adapted to work with mu4e.")
 (define-public emacs-tempel
   (package
     (name "emacs-tempel")
-    (version "0.2")
+    (version "0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -13286,7 +13355,7 @@ been adapted to work with mu4e.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "16972j2qq03q65qszgjjkzl52f79hk007kyi249wg1bqhvfa59b6"))))
+                "1cq7gg4fh105229my57wbb7v72l8mx957pvsg8k3zc1l0hbc796i"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/tempel")
     (synopsis "Simple templates for Emacs")
@@ -14441,7 +14510,7 @@ which code derived from Kelvin H's org-page.")
 (define-public emacs-meow
   (package
     (name "emacs-meow")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method git-fetch)
@@ -14450,7 +14519,7 @@ which code derived from Kelvin H's org-page.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04vin23bmds8dp2i1xihph9r7v43lcfz6fm23f4nvcyka9rqxc0z"))))
+        (base32 "1w6586q237c5li8c0rrivissvhn2hic6l199yr9qx92mm9cvic0q"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/meow-edit/meow")
     (synopsis "Yet another modal editing on Emacs")
@@ -15102,7 +15171,7 @@ a @url{http://json.org/, JSON} file.")
         (base32 "0r0k56q58kb133l9x9nbisz9p2kbphfgw1l4g2xp0pjqsc9wvq8z"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     (list emacs-json-reformat emacs-json-snatcher))
+     (list emacs-json-snatcher))
     (home-page "https://github.com/joshwnj/json-mode")
     (synopsis "Major mode for editing JSON files")
     (description "@code{json-mode} extends the builtin js-mode syntax
@@ -15331,7 +15400,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
 (define-public emacs-which-key
   (package
     (name "emacs-which-key")
-    (version "3.5.4")
+    (version "3.6.0")
     (source
      (origin
        (method git-fetch)
@@ -15340,7 +15409,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wz3bb7vzxqi3wqpn46z6ps00m9wjcpv9cfvqi7lyvm920sxzlv7"))))
+        (base32 "0ph5mrzz3r7x4dmy93v6affl4jznvic97a30mrs3kvhwyr2v4mby"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -17156,31 +17225,29 @@ used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
       (license license:gpl3+))))
 
 (define-public emacs-ergoemacs-mode
-  (let ((commit "3ce23bba3cb50562693860f87f3528c471d603ba")
-        (revision "1"))
-    (package
-      (name "emacs-ergoemacs-mode")
-      (version (git-version "5.16.10.12" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/ergoemacs/ergoemacs-mode")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1s3b9bridl78hh1mxmdk9nqlmqhibbaxk0a1cixmsf23s06w8w6l"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       (list emacs-undo-tree))
-      (home-page "https://ergoemacs.github.io/")
-      (synopsis "Emacs mode based on common modern interface and ergonomics")
-      (description
-       "This package provides an efficient Emacs keybinding set based on
+  (package
+    (name "emacs-ergoemacs-mode")
+    (version "5.22.2.23")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ergoemacs/ergoemacs-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1ipwzl0l26g5qvc1sgmz2ra5vn1j3hl0mnkgzpa3j4p8gsmxdiqr"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-undo-tree))
+    (home-page "https://ergoemacs.github.io/")
+    (synopsis "Emacs mode based on common modern interface and ergonomics")
+    (description
+     "This package provides an efficient Emacs keybinding set based on
 statistics of command frequency, and supports common shortcuts for open,
 close, copy, cut, paste, undo, redo.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-password-store
   (let ((commit "918992c19231b33b3d4a3288a7288a620e608cb4")
@@ -17504,7 +17571,7 @@ official @command{sqlite3} executable to access SQL database.")
 (define-public emacs-closql
   (package
     (name "emacs-closql")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
      (origin
        (method git-fetch)
@@ -17514,7 +17581,7 @@ official @command{sqlite3} executable to access SQL database.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1xa9rzyfm6bfskm2mfckd7jwmjwcraky7vsp7yyrnrqfksrl5na8"))))
+         "1s9riibws28xjn2bjn9qz3m2gvcmrn18b7g5y6am4sy7rgkx3nwx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-emacsql))
@@ -17531,7 +17598,7 @@ add any additional instance slots.")
 (define-public emacs-epkg
   (package
     (name "emacs-epkg")
-    (version "3.3.2")
+    (version "3.3.3")
     (source
      (origin
        (method git-fetch)
@@ -17540,7 +17607,7 @@ add any additional instance slots.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "18kjp0f5ch4mpd6yrd83p73pw7ykp2lv5686is8vcvyyys53jrf1"))))
+        (base32 "0d09ddlhvgp8rpybqmzvzpzdp1hjaq97wp2br4g90lpx2vclkgn7"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -17572,23 +17639,7 @@ add any additional instance slots.")
     (description "This package provides access to a local copy of the
 Emacsmirror package database.  It provides low-level functions for querying
 the database and a @file{package.el} user interface for browsing the database.
-Epkg itself is not a package manager.
-
-Getting a local copy:
-
-@example
-git clone https://github.com/emacsmirror/epkgs.git ~/.emacs.d/epkgs
-cd ~/.emacs.d/epkgs
-git submodule init
-git config --global url.https://github.com/.insteadOf git@@github.com:
-git submodule update
-@end example
-
-Some submodule may be missing.  In this case Git will prompt for a GitHub user
-name and password.  To skip it press a @key{Return} key.
-
-You could get a Epkg package list by invoking @code{epkg-list-packages} in
-Emacs.")
+Epkg itself is not a package manager.")
     (license license:gpl3+)))
 
 (define-public emacs-elisp-slime-nav
@@ -17950,7 +18001,7 @@ according to a parsing expression grammar.")
 (define-public emacs-eldev
   (package
     (name "emacs-eldev")
-    (version "0.10.3")
+    (version "1.0")
     (source
      (origin
        (method git-fetch)
@@ -17959,7 +18010,7 @@ according to a parsing expression grammar.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1y8vz5grmlhln37lf93a3gxwh46ar0v3jj2dcvzkb36lqf1snq73"))))
+        (base32 "1y7ngdj2icn8zw5qpjxqj3j9dry4lb7ixgxa148ss5bgsl8pgqnd"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -17971,12 +18022,9 @@ according to a parsing expression grammar.")
              (setenv "ELDEV_LOCAL" (getcwd))
              (make-file-writable "test/project-i/project-i-autoloads.el")))
          (add-after 'unpack 'skip-failing-tests
-           ;; FIXME: 10 tests are failing.  Skip them for now.
+           ;; FIXME: 2 tests are failing.  Skip them for now.
            (lambda _
-             (delete-file "test/upgrade-self.el")
-             (substitute* "test/init.el"
-               (("init-[1-8].*" line)
-                (string-append line "(skip-unless nil)\n")))))
+             (delete-file "test/upgrade-self.el")))
          (add-after 'install 'install-eldev-executable
            ;; This constructs the eldev executable from templates and
            ;; installs it in the specified directory.
@@ -17994,7 +18042,7 @@ according to a parsing expression grammar.")
                  (("export ELDEV_EMACS.*" all)
                   (string-append "export ELDEV_LOCAL=" site-lisp "\n" all)))))))))
     (native-inputs
-     (list texinfo))           ;for tests
+     (list texinfo))                    ;for tests
     (home-page "https://github.com/doublep/eldev/")
     (synopsis "Emacs-based build tool for Elisp")
     (description "Eldev (Elisp Development Tool) is an Emacs-based build tool,
@@ -18042,7 +18090,7 @@ interactive commands and functions, such as @code{completing-read}.")
 (define-public emacs-org-ql
   (package
     (name "emacs-org-ql")
-    (version "0.6")
+    (version "0.6.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -18050,7 +18098,7 @@ interactive commands and functions, such as @code{completing-read}.")
                     (commit version)))
               (sha256
                (base32
-                "1jfm4ahh58x3a3njigrbfzd86fnbyybbcgca2mgmxddcy6bszfp1"))
+                "1mpq3v8lxqllnb4afqh7p9av0p9bha8ld7741zaw4hxb1252xgm2"))
               (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -18836,21 +18884,23 @@ mode.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/phillord/m-buffer-el")
-              (commit (string-append "v" version))))
+             (url "https://github.com/phillord/m-buffer-el")
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
          "1sx76i59razwccvn6x7rx5a124bfyjw9fcbxf4gj7nsg33qiq809"))))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'check
-           (lambda* (#:key inputs #:allow-other-keys)
-             (invoke "emacs" "--batch" "-L" "."
-                     "-l" "test/m-buffer-test.el"
-                     "-l" "test/m-buffer-at-test.el"
-                     "-f" "ert-run-tests-batch-and-exit"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "emacs" "--batch" "-L" "."
+                        "-l" "test/m-buffer-test.el"
+                        "-l" "test/m-buffer-at-test.el"
+                        "-f" "ert-run-tests-batch-and-exit")))))))
     (build-system emacs-build-system)
     (home-page "https://github.com/phillord/m-buffer-el")
     (synopsis "List oriented buffer operations for Emacs")
@@ -19061,25 +19111,28 @@ without disturbing alignment.")
                   "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"))))
       (build-system emacs-build-system)
       (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-before 'check 'remove-test
-             ;; Fails because of requirement ‘/bin/sh’.
-             (lambda _
-               (let ((file "macrostep-test.el"))
-                 (chmod file #o644)
-                 (emacs-batch-edit-file file
-                   `(progn (progn (goto-char (point-min))
-                                  (re-search-forward
-                                   "(ert-deftest macrostep-expand-c-macros")
-                                  (beginning-of-line)
-                                  (kill-sexp))
-                           (basic-save-buffer))))))
-           (add-before 'install 'check
-             (lambda _
-               (invoke "emacs" "--batch" "-L" "."
-                       "-l" "macrostep-test.el"
-                       "-f" "ert-run-tests-batch-and-exit"))))))
+       (list
+        #:tests? #t
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'check 'remove-test
+              ;; Fails because of requirement ‘/bin/sh’.
+              (lambda _
+                (let ((file "macrostep-test.el"))
+                  (make-file-writable file)
+                  (emacs-batch-edit-file file
+                    `(progn (progn (goto-char (point-min))
+                                   (re-search-forward
+                                    "(ert-deftest macrostep-expand-c-macros")
+                                   (beginning-of-line)
+                                   (kill-sexp))
+                            (basic-save-buffer))))))
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "emacs" "--batch" "-L" "."
+                          "-l" "macrostep-test.el"
+                          "-f" "ert-run-tests-batch-and-exit")))))))
       (home-page "https://github.com/joddie/macrostep")
       (synopsis "Interactive macro-expander for Emacs")
       (description "@code{macrostep} is an Emacs minor mode for interactively
@@ -19088,11 +19141,7 @@ you see exactly what happens at each step of the expansion process by
 pretty-printing the expanded forms inline in the source buffer, which is
 temporarily read-only while macro expansions are visible.  You can expand and
 collapse macro forms one step at a time, and evaluate or instrument the
-expansions for debugging with Edebug as normal (but see “Bugs and known
-limitations”, below).  Single-stepping through the expansion is particularly
-useful for debugging macros that expand into another macro form.  These can be
-difficult to debug with Emacs’ built-in macroexpand, which continues expansion
-until the top-level form is no longer a macro call.")
+expansions for debugging with Edebug as normal.")
       (license license:gpl3+))))
 
 (define-public emacs-parent-mode
@@ -19544,7 +19593,7 @@ powerful Org contents.")
 (define-public emacs-org-re-reveal
   (package
     (name "emacs-org-re-reveal")
-    (version "3.12.4")
+    (version "3.12.5")
     (source
      (origin
        (method git-fetch)
@@ -19553,7 +19602,7 @@ powerful Org contents.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j7394zcbzqfk33g2xdyb3fmw3brxy8v66vvf1j9nqlskfddh7bn"))))
+        (base32 "1njib0ah1913lk3ma18y8m5k8jqki17i9298cc03k7vvfw3l19wz"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-htmlize emacs-org))
@@ -21651,7 +21700,7 @@ image, rotate it, save modified images, and more.")
 (define-public emacs-package-lint
   (package
     (name "emacs-package-lint")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -21661,7 +21710,7 @@ image, rotate it, save modified images, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1cn713g90zyjfq225yvg14c1qshslpi4466m3w102l5g57p8xv44"))))
+         "0srqcrhbdmd39jdsvh8k3nbrkqrl4nlic59dp5bal5vj495j7126"))))
     (arguments
      '(#:include (cons "^data/" %default-include)))
     (build-system emacs-build-system)
@@ -22236,7 +22285,7 @@ docstring of the thing at point.")
 (define-public emacs-rust-mode
   (package
     (name "emacs-rust-mode")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method git-fetch)
@@ -22245,7 +22294,7 @@ docstring of the thing at point.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11fdxbv51anrjfdqqpgrqz2md9qkcn5y3524lzjippqi9i31lnjn"))))
+        (base32 "10972zw2h1dijx08j5h7aa4d717vhrmahzkslisy3dk2gd8y2v0q"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #false                  ;FIXME: phase fail with status 127
@@ -22260,7 +22309,7 @@ source code.")
 (define-public emacs-rustic
   (package
     (name "emacs-rustic")
-    (version "2.6")
+    (version "3.0")
     (source
      (origin
        (method git-fetch)
@@ -22269,7 +22318,7 @@ source code.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0lnymi6nxn5dafm8q0av07dcjwrqxd3gm4hj1pi26kw62aw0ws24"))))
+        (base32 "18br5yfakfwcbw3vkawhw5sm41xg78cz4bimz36x5xcgbwi88k3p"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-dash
@@ -22811,13 +22860,30 @@ files are easily readable and they work nicely with version control systems.")
         (base32 "0lwgvgnqf7vihglm0c5bwsxbl4x7f641289cji5s7jwy2dbsqk7g"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:include '("\\.el$" "^data/" "^fonts/")
-       ;; Compiling "test/" fails with "Symbol’s value as variable is void:
-       ;; all-the-icons--root-code".  Ignoring tests.
+     `(#:include '("\\.el$" "^data/")
        #:exclude '("^test/")
-       #:tests? #f))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-fonts
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((fonts (string-append (assoc-ref outputs "out")
+                                         "/share/fonts")))
+               (mkdir-p fonts)
+               (with-directory-excursion "fonts"
+                 (install-file "all-the-icons.ttf" fonts)
+                 ;; TODO: Unbundle.
+                 (install-file "file-icons.ttf" fonts)
+                 (install-file "octicons.ttf" fonts)
+                 (install-file "weathericons.ttf" fonts)))))
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (apply invoke "ert-runner" "-l"
+                    (append (find-files "data" "\\.el")
+                            '("all-the-icons-faces.el"))))))))
+    (native-inputs
+     (list emacs-f emacs-ert-runner))
     (propagated-inputs
-     (list emacs-f emacs-memoize))
+     (list emacs-f emacs-memoize font-awesome font-google-material-design-icons))
     (home-page "https://github.com/domtronn/all-the-icons.el")
     (synopsis "Collect icon fonts and propertize them within Emacs")
     (description
@@ -23906,11 +23972,12 @@ indentation and a command to plot the file.")
     (license license:gpl3+)))
 
 (define-public emacs-cmake-font-lock
-  (let ((commit "e0ceaaae19c13b66f781512e3295bfc6707b56f4")
-        (revision "1"))
+  ;; Upstream does not tag commits.  The commit hash below matches version
+  ;; bump.
+  (let ((commit "0d6111b36a66013aa9b452e664c93308df3b07e1"))
     (package
       (name "emacs-cmake-font-lock")
-      (version (git-version "0.1.5" revision commit))
+      (version "0.1.12")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -23919,12 +23986,12 @@ indentation and a command to plot the file.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "03gsyn95dlmsn15bl353bphi3qy7ccn5bss3f7n97kf38bllh0yf"))))
+                  "12ga8ri7v9r5y46pghk80ww27i7nhbrg0r3s2ina42drlkkliqj4"))))
       (build-system emacs-build-system)
       (native-inputs
        (list emacs-faceup))
       (arguments
-       `(#:include (cons "^admin\\/" %default-include)))
+       (list #:include #~(cons "^admin\\/" %default-include)))
       (home-page "https://github.com/Lindydancer/cmake-font-lock")
       (synopsis "Advanced type-aware syntax-highlighting for CMake")
       (description "This package highlights function arguments in CMake
@@ -23977,7 +24044,7 @@ program dtach.")
 (define-public emacs-dtrt-indent
   (package
     (name "emacs-dtrt-indent")
-    (version "1.6")
+    (version "1.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -23986,7 +24053,7 @@ program dtach.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kad2inc9k2z65if26vfiw098yklzxdx9fw8a6yicb87jgc1cz36"))))
+                "0ihwmkxgbd0mgfvzisjiwvyypa9z21ckyxdnkf9y5lxywjyr39zh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/jscheid/dtrt-indent")
     (synopsis "Minor mode that guesses the indentation offset")
@@ -24024,15 +24091,22 @@ buffer and launches Magit from the status buffer for the project at point.")
 (define-public emacs-repology
   (package
     (name "emacs-repology")
-    (version "1.1.0")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "repology-" version ".tar"))
        (sha256
-        (base32 "031245rrhazj53bk1csa6x3ygzvg74w2hwjf08ficwvmdn97li90"))))
+        (base32 "1ngx23b7dilyps20nznrrn867kbxyn6nryf4p1sy5m576hkw18kn"))))
     (build-system emacs-build-system)
+    (arguments
+     (list
+      #:tests? #t
+      #:test-command
+      #~(list "emacs" "-Q" "-batch"
+              "-l" "repology-tests.el"
+              "-f" "ert-run-tests-batch-and-exit")))
     (home-page "https://elpa.gnu.org/packages/repology.html")
     (synopsis "Repology API access via Elisp")
     (description
@@ -24228,7 +24302,7 @@ constant expressions.")
 (define-public emacs-docker-tramp
   (package
     (name "emacs-docker-tramp")
-    (version "0.1")
+    (version "0.1.1")
     (source
      (origin
        (method git-fetch)
@@ -24238,7 +24312,7 @@ constant expressions.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0lxvzmfg52fhxrhbvp92zwp7cv4i1rlxnkyyzgngj3sjm7y60yvg"))))
+         "05966l3af9lg4nlsz6wrq282ipwxh19ggirfyabjrr1syw3v2crn"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacs-pe/docker-tramp.el")
     (synopsis "TRAMP integration for docker containers")
@@ -24249,7 +24323,7 @@ constant expressions.")
 (define-public emacs-docker
   (package
     (name "emacs-docker")
-    (version "1.4.0")
+    (version "2.1.2")
     (source
      (origin
        (method git-fetch)
@@ -24258,14 +24332,14 @@ constant expressions.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s57dq04d97dvrbxzicyk5z9f1mn8gf9w4nbgrxd9dnjqz335173"))))
+        (base32 "0wgdabjkcwi9a3615imny8xysbrydnlcz9rmkavp22kypk6ydcjw"))))
     (inputs
      (list emacs-undercover))
     (propagated-inputs
-     (list emacs-dash
+     (list emacs-aio
+           emacs-dash
            emacs-docker-tramp
            emacs-json-mode
-           emacs-magit-popup
            emacs-s
            emacs-tablist
            emacs-transient))
@@ -24279,7 +24353,7 @@ constant expressions.")
 (define-public emacs-dockerfile-mode
   (package
     (name "emacs-dockerfile-mode")
-    (version "1.5")
+    (version "1.6")
     (source
      (origin
        (method git-fetch)
@@ -24289,7 +24363,7 @@ constant expressions.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "09pd8mfa45fy95mdg52fsafj3d1d5l52rskmw6q5np59dyzwch1b"))))
+         "0nmybfc9qch0jng06qgs2xb41dl9v52ckc9nc20d7hv3x36w555x"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-s))
@@ -24587,6 +24661,28 @@ files in Elisp.")
     (description "Emacs Java IDE using Eclipse JDT Language Server.")
     (license license:gpl3+)))
 
+(define-public emacs-lsp-metals
+  (package
+    (name "emacs-lsp-metals")
+    (version "1.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-lsp/lsp-metals")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ca5xq1l3lscx36pcdnpy2axgyikjrl18naqr140kr1y500sy37s"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-dap-mode emacs-lsp-treemacs emacs-scala-mode))
+    (home-page "https://github.com/emacs-lsp/lsp-metals")
+    (synopsis "Scala support for LSP mode")
+    (description "This package is an Emacs Scala IDE using LSP mode to connect
+to Metals.")
+    (license license:gpl3+)))
+
 (define-public emacs-lsp-ui
   (package
     (name "emacs-lsp-ui")
@@ -24793,7 +24889,7 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
 (define-public emacs-forge
   (package
      (name "emacs-forge")
-     (version "0.3.0")
+     (version "0.3.1")
      (source
       (origin
         (method git-fetch)
@@ -24802,7 +24898,7 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "15zm5azgl8gyd91i40a00ih4s2iwg1r8007n2gcfnmi6m4b7s0ak"))))
+         (base32 "112mghydfzrbiwnzrb2f9d74y6ja702157p66ss94kqps0lj7rkp"))))
      (build-system emacs-build-system)
      (arguments
       `(#:tests? #f                     ;no tests
@@ -25411,29 +25507,26 @@ files.")
     (license license:gpl3+)))
 
 (define-public emacs-add-node-modules-path
-  (let ((commit "f31e69ccb681f882aebb806ce6e9478e3ac39708")
-        (version "1.2.0")
-        (revision "10"))
-    (package
-      (name "emacs-add-node-modules-path")
-      (version (git-version version revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/codesuki/add-node-modules-path")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0p106bqmvdr8by5iv02bshm339qbrjcch2d15mrm4h3nav03v306"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/codesuki/add-node-modules-path")
-      (synopsis "Add @file{node_modules} to the buffer-local @file{exec-path}")
-      (description "This package searches the parent directories of the
+  (package
+    (name "emacs-add-node-modules-path")
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/codesuki/add-node-modules-path")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "039rfgwzmavgfa9gc7mh7hiw46gmgrhndsjib5kixynvcpl1y42l"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/codesuki/add-node-modules-path")
+    (synopsis "Add @file{node_modules} to the buffer-local @file{exec-path}")
+    (description "This package searches the parent directories of the
 current file for the project's @file{node_modules/.bin/} directory, allowing
 Emacs to find project-specific installations of packages.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public emacs-flow-minor-mode
   (let ((commit "d1b32a7dd0d33c6a00a106da5f4b2323602cbd3e")
@@ -25730,7 +25823,7 @@ through Dash docsets.")
 (define-public emacs-devdocs
   (package
     (name "emacs-devdocs")
-    (version "0.3")
+    (version "0.4")
     (source
      (origin
        (method url-fetch)
@@ -25738,7 +25831,7 @@ through Dash docsets.")
              "https://elpa.gnu.org/packages/"
              "devdocs-" version ".tar"))
        (sha256
-        (base32 "03asw26nsnnx7hmyqhksq165vpii0h8y6qjjn0x4sdkyyns16yp7"))))
+        (base32 "05xmxqpp1cpf03y7idpqdsmbj30cissscy80ng5hqc3028kr2jqm"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/astoff/devdocs.el")
     (synopsis "Emacs viewer for DevDocs")
@@ -25922,14 +26015,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.5.2.1")
+    (version "2.5.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "1101nb0raiivrv1z4w442688cxj5mpf4h4zxzy6mhirgsbayk91p"))))
+        (base32 "104nn6xdmcviqqv4cx5llhwj1sh4q04w3h9s8gimmi2kg0z8s36r"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -26860,14 +26953,14 @@ federated microblogging social network.")
 (define-public emacs-ebdb
   (package
     (name "emacs-ebdb")
-    (version "0.8.10")
+    (version "0.8.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "ebdb-" version ".tar"))
        (sha256
-        (base32 "1763zk75a85803wbn68sz4n3yvkhzh3a8571syd1r2npb59b40ad"))))
+        (base32 "0bbv2n01x9zacnrd00krjkra6amn2cbxlpb5rkjcsyg05zmdkr5q"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/girzel/ebdb")
     (synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -26927,6 +27020,30 @@ interfaces.  Several interfaces are supported beside the classic Ido: Popup,
 Helm and Ivy.")
     (license license:gpl3+)))
 
+(define-public emacs-spell-fu
+  ;; There are no tagged releases upstream on gitlab, instead we are using the
+  ;; most recent commit.
+  (let ((commit "50be652a6ec8590c3098f46094a92213623349c1") (revision "0"))
+    (package
+      (name "emacs-spell-fu")
+      (version (git-version "0.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/ideasman42/emacs-spell-fu")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0n7qwnirvkh2aprb7l1wj9rywdsn33a7s32716m3afcvy7z9pyh4"))))
+      (build-system emacs-build-system)
+      (home-page "https://gitlab.com/ideasman42/emacs-spell-fu")
+      (synopsis "Fast highlighting of misspelled words")
+      (description
+       "This is a light weight spell checker for Emacs,
+that runs from the syntax highlighter without starting external processes.")
+      (license license:gpl3+))))
+
 (define-public emacs-org-emms
   (let ((commit "07a8917f3d628c32e5de1dbd118ac08203772533")
         (revision "1"))
@@ -27201,7 +27318,7 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-themes
   (package
     (name "emacs-modus-themes")
-    (version "2.0.0")
+    (version "2.2.0")
     (source
      (origin
        (method git-fetch)
@@ -27210,7 +27327,7 @@ Emacs that integrate with major modes like Org-mode.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0p1h5zpzhxkmhiczds453y6mf5xf7pbcqlijq6z8gy10dxx4jppf"))))
+        (base32 "1mnfbr312dqifsdngb29kvggfirfclc9ncaw5srd52hnwc5n0rxi"))))
     (build-system emacs-build-system)
     (home-page "https://protesilaos.com/modus-themes/")
     (synopsis "Accessible themes (WCAG AAA)")
@@ -27501,6 +27618,34 @@ Google guidelines.")
       (home-page "https://github.com/flycheck/flycheck-google-cpplint")
       (license license:gpl3+))))
 
+(define-public emacs-highlight-doxygen
+  ;; Upstream does not tag releases.  Commit below matches version bump.
+  (let ((commit "eec4874e2e89d4eb39091aad89a67dff8f8ec84c"))
+    (package
+      (name "emacs-highlight-doxygen")
+      (version "0.0.2")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Lindydancer/highlight-doxygen")
+               (commit commit)))
+         (sha256
+          (base32
+           "0r3rv1px43r265716l3g20c1ss4381h1mc1kjxin22vdmrj6cmxy"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/Lindydancer/highlight-doxygen")
+      (synopsis "Highlight Doxygen comments in Emacs, including code blocks")
+      (description
+       "This package highlights Doxygen comments.
+
+In addition to highlighting Doxygen commands and their arguments, entire
+Doxygen comment are highlighted, making them stand out compared to other
+comments.  The code blocks are highlighted according to the
+language they are written in.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-fish-completion
   (package
     (name "emacs-helm-fish-completion")
@@ -27548,54 +27693,52 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
     (license license:gpl3+)))
 
 (define-public emacs-telega-server
-  (let ((commit "5739794d2d0c8a4e7b77c2e37a097e19f80ac9f0")
-        (revision "0"))
-    (package
-      (name "emacs-telega-server")
-      (version (git-version  "0.8.2" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/zevlg/telega.el")
-               (commit commit)))
-         (sha256
-          (base32 "1am0b2bjjkw7zd0yq39v015a08dcbk43j4d4h8y2q8hj53ryfk5a"))
-         (file-name (git-file-name "emacs-telega" version))
-         (patches
-          (search-patches "emacs-telega-path-placeholder.patch"
-                          "emacs-telega-test-env.patch"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:make-flags
-        #~(list (string-append "CC=" #$(cc-for-target))
-                (string-append "INSTALL_PREFIX=" #$output "/bin"))
-        #:phases
-        #~(modify-phases %standard-phases
-            (add-before 'configure 'enter-subdirectory
-              (lambda _ (chdir "server")))
-            (replace 'configure
-              (lambda _
-                (substitute* "run_tests.py"
-                  (("^(TELEGA_SERVER = ).*$" _all prefix)
-                   (string-append prefix
-                                  "\"" #$output "/bin/telega-server\"\n")))))
-            (delete 'check)
-            (add-after 'install 'check
-              (assoc-ref %standard-phases 'check))
-            (add-before 'install-license-files 'leave-subdirectory
-              (lambda _ (chdir ".."))))
-        #:test-target "test"))
-      (inputs
-       (list tdlib libappindicator))
-      (native-inputs
-       (list python pkg-config))
-      (home-page "https://zevlg.github.io/telega.el/")
-      (synopsis "Server process of Telega")
-      (description "Telega-server is helper program to interact with Telegram
+  (package
+    (name "emacs-telega-server")
+    (version "0.8.03")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/zevlg/telega.el")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1ffy17i5fi1bw5r5m6x372c52hc1k83wxdxvi4z0hixyklj48nsv"))
+       (file-name (git-file-name "emacs-telega" version))
+       (patches
+        (search-patches "emacs-telega-path-placeholder.patch"
+                        "emacs-telega-test-env.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:make-flags
+      #~(list (string-append "CC=" #$(cc-for-target))
+              (string-append "INSTALL_PREFIX=" #$output "/bin"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'enter-subdirectory
+            (lambda _ (chdir "server")))
+          (replace 'configure
+            (lambda _
+              (substitute* "run_tests.py"
+                (("^(TELEGA_SERVER = ).*$" _all prefix)
+                 (string-append prefix
+                                "\"" #$output "/bin/telega-server\"\n")))))
+          (delete 'check)
+          (add-after 'install 'check
+            (assoc-ref %standard-phases 'check))
+          (add-before 'install-license-files 'leave-subdirectory
+            (lambda _ (chdir ".."))))
+      #:test-target "test"))
+    (inputs
+     (list tdlib libappindicator))
+    (native-inputs
+     (list python pkg-config))
+    (home-page "https://zevlg.github.io/telega.el/")
+    (synopsis "Server process of Telega")
+    (description "Telega-server is helper program to interact with Telegram
 service, and connect it with Emacs via inter-process communication.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-telega
   (package
@@ -28695,7 +28838,7 @@ launching other commands/applications from within Emacs, similar to the
 (define-public emacs-no-littering
   (package
     (name "emacs-no-littering")
-    (version "1.2.5")
+    (version "1.2.6")
     (source
      (origin
        (method git-fetch)
@@ -28704,7 +28847,7 @@ launching other commands/applications from within Emacs, similar to the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0rf05lfmr77yq7xqz1nd4bji6d2cipb3hd5ap9lrk6jiv7f72dr2"))))
+        (base32 "1098wm46gi15pzh065fpxfjf8lr7jf2sg48yy9yzdi0dwdyz6l4c"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacscollective/no-littering")
     (synopsis "Help keep @file{~/.emacs.d/} clean")
@@ -29171,7 +29314,7 @@ snippets for Emacs.")
 (define-public emacs-org-roam
   (package
     (name "emacs-org-roam")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
        (method git-fetch)
@@ -29180,7 +29323,7 @@ snippets for Emacs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0q3nhw05wnqh1qgggxsj8wki4ihciqlkic2x7qbcsskjqm73j1r7"))))
+        (base32 "0c5vxz423lz386dxa9nqyf396jmyb36q79paxf27is1dhq1vwd5w"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -30037,14 +30180,14 @@ work on alists, hash-table and arrays.  All functions are prefixed with
 (define-public emacs-xref
   (package
     (name "emacs-xref")
-    (version "1.3.2")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/xref-"
                            version ".tar"))
        (sha256
-        (base32 "13bsaxdxwn14plaam0hsrswngh3rm2k29v5ybjgjyjy4d5vwz78j"))))
+        (base32 "1vbpplw0sngymmawi940nlqmncqznb5vp7zi0ib8v66g3y33ijrf"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/xref.html")
     (synopsis "Cross-referencing commands")
@@ -30225,7 +30368,7 @@ and preferred services can easily be configured.")
 (define-public emacs-vertico
   (package
     (name "emacs-vertico")
-    (version "0.20")
+    (version "0.21")
     (source
      (origin
        (method git-fetch)
@@ -30234,7 +30377,7 @@ and preferred services can easily be configured.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kvijirk3lz6m7wx3b31ws0qyrp45lccysp1ranrhdx58pp0551v"))))
+        (base32 "1gfn95f7rdfwxks3wsr8r9pq8p3nhr5pbaawfwnwgcgb4g27scgs"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -30263,7 +30406,7 @@ complementary packages.")
 (define-public emacs-wisp-mode
   (package
     (name "emacs-wisp-mode")
-    (version "0.2.9")
+    (version "0.3.0")
     (source
      (origin
        (method hg-fetch)
@@ -30272,7 +30415,7 @@ complementary packages.")
              (changeset (string-append "wisp-mode-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xdzyj3yqzvdg0vrllp9wi8cswpa89i0gmiz22a25brw4qy185ar"))))
+        (base32 "189baxk27rq3s6h6mh0m25sv504853rpvyxxdcwx6wdy7l88qany"))))
     (build-system emacs-build-system)
     (home-page "https://www.draketo.de/software/wisp")
     (synopsis "Syntax highlighting and indentation support for Wisp files")
@@ -30660,3 +30803,33 @@ audio volume via amixer.")
      "Fennel mode provides font-lock, indentation, navigation, and REPL for
  Fennel code within Emacs.")
     (license license:gpl3+)))
+
+(define-public emacs-osm
+  (package
+    (name "emacs-osm")
+    (version "0.6")
+    (home-page "https://github.com/minad/osm")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url home-page) (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0aiq2z9vv4jsl0s0x9vpjgp0mnn27wanhirzj3h80ivgiphzs7l5"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'set-curl-file-name
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (substitute* "osm.el"
+                        (("\"curl( ?)\"" _ space)
+                         (string-append "\""
+                                        (search-input-file inputs "/bin/curl")
+                                        space "\""))))))))
+    (inputs (list curl))
+    (synopsis "OpenStreetMap viewer for Emacs")
+    (description
+     "This package provides an OpenStreetMap viewer for Emacs, featuring
+zoomable and moveable map display, display of tracks and POIs from GPX files,
+parallel fetching of tiles with cURL, and more.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index f7573618b9..de8d2944bc 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2020, 2021 Simon South <simon@simonsouth.net>
+;;; Copyright © 2020, 2021, 2022 Simon South <simon@simonsouth.net>
 ;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
 ;;;
@@ -56,12 +56,14 @@
   #:use-module (gnu packages libftdi)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages messaging)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages version-control)
@@ -1486,47 +1488,45 @@ handling communication with eBUS devices connected to a 2-wire bus system
 (define-public ucsim
   (package
     (name "ucsim")
-    (version "0.6-pre68")
+    (version "0.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "http://mazsola.iit.uni-miskolc.hu/ucsim/download/unix/"
-                    "devel/ucsim-" version ".tar.gz"))
+                    "source/v" (version-major+minor version) ".x/"
+                    "ucsim-" version ".tar.gz"))
               (sha256
                (base32
-                "1bfj21f5pcfcg1xqqynlcfr8mn6qj5705cgc2lfr2s3n97qsd9df"))))
+                "080471wvkjdzxz5j3zdaq1apjcj84ql50kn26b7p4ansixnimml4"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--enable-avr-port"
-                           "--enable-m6809-port"
-                           "--enable-p1516-port"
-                           "--enable-st7-port")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-makefiles
            (lambda _
              (substitute* (find-files "." "(\\.mk$|\\.in$)")
-               (("/bin/sh") (which "sh")))
-             #t))
-         (add-after 'install 'remove-empty-directory
-           (lambda* (#:key outputs #:allow-other-keys)
-             (delete-file-recursively
-              (string-append (assoc-ref outputs "out") "/share/man"))
-             #t)))))
+               (("/bin/sh") (which "sh"))))))))
+    (inputs
+     (list ncurses))
     (native-inputs
-     (list bison flex))
+     (append (list bison flex)
+             ;; Certain tests use assemblers provided by SDCC.
+             (if (not (%current-target-system))
+                 (list sdcc)
+                 '())))
     (home-page "http://mazsola.iit.uni-miskolc.hu/ucsim/")
     (synopsis "Simulators for various microcontroller families")
     (description "μCsim is a collection of software simulators for
-microcontrollers in the Atmel AVR; Intel MCS-51 (8051); Motorola 68HC08 and
-6809; P1516; Padauk PDK13, PDK14 and PDK15; STMicroelectronics ST7 and STM8;
-and Zilog Z80 families, plus many of their variants.")
+microcontrollers in the Atmel AVR; Intel MCS-51 (8051); MOS Technology 6502;
+Motorola 6800, 68HC08 and 6809; P1516; Padauk PDK13, PDK14 and PDK15;
+STMicroelectronics ST7 and STM8; Xilinx PicoBlaze; and Zilog Z80 families,
+plus many of their variants.")
     (license license:gpl2+)))
 
 (define-public sdcc
   (package
     (name "sdcc")
-    (version "4.1.0")
+    (version "4.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1534,7 +1534,7 @@ and Zilog Z80 families, plus many of their variants.")
                     "/" version "/sdcc-src-" version ".tar.bz2"))
               (sha256
                (base32
-                "0gskzli17ghnn5qllvn4d56qf9bvvclqjh63nnj63p52smvggvc1"))
+                "0ly0m3q9vzjb9kcfjh79s77wpl4w7xhybzy4h9x0bmmw4cfsx6xl"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1545,13 +1545,10 @@ and Zilog Z80 families, plus many of their variants.")
                   #t))
               (patches (search-patches "sdcc-disable-non-free-code.patch"))))
     (build-system gnu-build-system)
+    (inputs
+     (list readline))
     (native-inputs
-     `(("bison" ,bison)
-       ("boost" ,boost)
-       ("flex" ,flex)
-       ("python-2" ,python-2)
-       ("texinfo" ,texinfo)
-       ("zlib" ,zlib)))
+     (list bison boost flex python-2 texinfo zlib))
     (arguments
      `(;; GPUTILS is required for the PIC ports, but the licensing status of
        ;; some of the files contained in its distribution is unclear (see
@@ -1575,9 +1572,9 @@ and Zilog Z80 families, plus many of their variants.")
     (home-page "http://sdcc.sourceforge.net")
     (synopsis "C compiler suite for 8-bit microcontrollers")
     (description "SDCC is a retargetable, optimizing Standard C compiler suite
-that targets 8-bit microcontrollers in the Intel MCS-51 (8051); Motorola
-68HC08; Padauk PDK13, PDK14 and PDK15; STMicroelectronics STM8; and Zilog Z80
-families, plus many of their variants.")
+that targets 8-bit microcontrollers in the Intel MCS-51 (8051); MOS Technology
+6502; Motorola 68HC08; Padauk PDK13, PDK14 and PDK15; STMicroelectronics STM8;
+and Zilog Z80 families, plus many of their variants.")
     (license (list license:gpl2+
                    license:gpl3+
                    license:lgpl2.0+
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9ec73bc11f..d2f360cee9 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -73,6 +73,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libedit)
@@ -1711,7 +1712,7 @@ This is a part of the TiLP project.")
 (define-public mame
   (package
     (name "mame")
-    (version "0.240")
+    (version "0.241")
     (source
      (origin
        (method git-fetch)
@@ -1720,7 +1721,7 @@ This is a part of the TiLP project.")
              (commit (apply string-append "mame" (string-split version #\.)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "141mj5kzafnbw6nqlc3ariwxqn8lq3s13dzypax6igpy4wfy75rm"))
+        (base32 "13bm81qyzvpllzmrak5nb87cdyyvsv4hcnznnrz4jyx1bd8ky6ap"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -1890,7 +1891,7 @@ functions.  The source code to MAME serves as this documentation.")
 (define-public gnome-arcade
   (package
     (name "gnome-arcade")
-    (version "0.218.2")
+    (version "0.240")
     (source
      (origin
        (method git-fetch)
@@ -1900,7 +1901,7 @@ functions.  The source code to MAME serves as this documentation.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1qc01a62p65qb6mwjfmxqsd6n3rglsfwrjhsp25nr7q54107n55l"))))
+         "110dpbbcj73s3i2zcnay0kdpsngcpq8mif88279pdc2967ld0a6r"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1944,6 +1945,42 @@ functions.  The source code to MAME serves as this documentation.")
 arcade and console emulator.")
     (license license:gpl3+)))
 
+(define-public gnusim8085
+  (package
+    (name "gnusim8085")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/srid/GNUSim8085/releases/download/"
+                    version "/gnusim8085-" version ".tar.gz"))
+              (sha256
+               (base32
+                "05x0is0ckagb3r74p6lw9b8nqrrh7q2v4jvc4cnhljchz9x7kw2a"))))
+    (native-inputs (list pkg-config))
+    (inputs (list gtksourceview-3 adwaita-icon-theme))
+    (build-system glib-or-gtk-build-system)
+    (home-page "https://gnusim8085.srid.ca")
+    (synopsis "Graphical simulator for the Intel 8085 microprocessor")
+    (description
+     "GNUSim8085 is a graphical simulator,
+assembler, and debugger for the Intel 8085 microprocessor.
+
+@itemize
+@item A simple editor component with syntax highlighting.
+@item A keypad to input assembly language instructions with appropriate arguments.
+@item Easy view of register contents.
+@item Easy view of flag contents.
+@item Hexadecimal/decimal converter.
+@item View of stack, memory and I/O contents.
+@item Support for breakpoints for program debugging.
+@item Stepwise program execution.
+@item One click conversion of assembly program to opcode listing.
+@item Printing support.
+@item UI translated in various languages.
+@end itemize")
+    (license license:gpl2+)))
+
 (define-public pcsxr
   ;; No release since 2017.
   (let ((commit "6484236cb0281e8040ff6c8078c87899a3407534"))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 71fbbef78d..c73cf937ef 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020, 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
-;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
@@ -28,6 +28,7 @@
 ;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
+;;; Copyright © 2022 Olivier Dion <olivier.dion@polymtl.ca>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1270,24 +1271,24 @@ use on a given system.")
 (define-public libredwg
   (package
     (name "libredwg")
-    (version "0.12.4")
+    (version "0.12.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://gnu/libredwg/libredwg-"
-             version ".tar.xz"))
+                           version ".tar.xz"))
        (sha256
-        (base32 "05v5k8fkx4z1p81x9kna7nlzmyx09dn686rj2zprnkf337qmg24i"))))
+        (base32 "1gginbl76vmpccjwx93cmg8ibap8l40swly3bjv7rhmdwv6ikpnk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-bindings")))
     (native-inputs
-     `(("libxml2" ,libxml2)
-       ("parallel" ,parallel)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("python-libxml2" ,python-libxml2)))
+     (list libxml2
+           parallel
+           perl
+           pkg-config
+           python-wrapper
+           python-libxml2))
     (inputs
      (list pcre2))
     (home-page "https://www.gnu.org/software/libredwg/")
@@ -1550,16 +1551,16 @@ language, ADMS transforms Verilog-AMS code into other target languages.")
 (define-public capstone
   (package
     (name "capstone")
-    (version "3.0.5")
+    (version "4.0.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/aquynh/capstone")
-                     (commit version)))
+                    (url "https://github.com/capstone-engine/capstone")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dgf82kxj4rs45d6s8sr984c38sll1n5scpypjlyh21gh2yl4qfw"))))
+                "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -1571,10 +1572,10 @@ language, ADMS transforms Verilog-AMS code into other target languages.")
          ;; cstool's Makefile ‘+=’s LDFLAGS, so we cannot pass it as a make flag.
          (add-before 'build 'fix-cstool-ldflags
            (lambda* (#:key outputs #:allow-other-keys)
-             (setenv "LDFLAGS"  (string-append "-Wl,-rpath="
-                                               (assoc-ref outputs "out") "/lib"))
-             #t)))))
-    (home-page "https://www.capstone-engine.org")
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib")))))))
+    (home-page "https://github.com/capstone-engine/capstone")
     (synopsis "Lightweight multi-platform, multi-architecture disassembly framework")
     (description
      "Capstone is a lightweight multi-platform, multi-architecture disassembly
@@ -1744,7 +1745,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
   ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#236>.
   (package
     (name "libngspice")
-    (version "35")
+    (version "36")
     (source
      (origin
        (method url-fetch)
@@ -1755,7 +1756,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
                             "old-releases/" version
                             "/ngspice-" version ".tar.gz")))
        (sha256
-        (base32 "1v3ra9p2sc6ash1bbjm6i4i3dd6ymxjgnyha7z5rlmyvfv1gbdy1"))))
+        (base32 "133za6m9grpnnlb46sijkda7ky41mrbvfdb60i0m695sxy3q50ag"))))
     (build-system gnu-build-system)
     (arguments
      `(;; No tests for libngspice exist.
@@ -1788,8 +1789,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
     (native-inputs
      (list bison flex))
     (inputs
-     `(("libxaw" ,libxaw)
-       ("mpi" ,openmpi)))
+     (list libxaw openmpi))
     (home-page "http://ngspice.sourceforge.net/")
     (synopsis "Mixed-level/mixed-signal circuit simulator")
     (description
@@ -2399,127 +2399,110 @@ OpenSCAD code.  It supports syntax highlighting, indenting and refilling of
 comments.")))
 
 (define-public freecad
-  (package
-    (name "freecad")
-    (version "0.19.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/FreeCAD/FreeCAD")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1dkiwnqr6bhi2d90hz7ijqd872144c9n9xxpd1vbrmxr2x8cfl88"))
-       (patches (search-patches "freecad-vtk9.patch"
-                                "freecad-boost-serialization.patch"))))
-    (build-system qt-build-system)
-    (native-inputs
-     (list doxygen
-           graphviz
-           qttools
-           pkg-config
-           python-pyside-2-tools
-           swig))
-    (inputs
-     (list boost
-           coin3D
-           double-conversion
-           eigen
-           freetype
-           gl2ps
-           glew
-           hdf5-1.10
-           jsoncpp
-           libarea
-           libjpeg-turbo
-           libmedfile
-           libspnav
-           libtheora
-           libtiff
-           libxi
-           libxml++
-           libxmu
-           lz4
-           netcdf
-           opencascade-occt
-           openmpi
-           proj
-           python-gitpython
-           python-matplotlib
-           python-pivy
-           python-ply
-           python-pyside-2
-           python-pyyaml
-           python-shiboken-2
-           python-wrapper
-           qtbase-5
-           qtdeclarative
-           qtsvg
-           qtwebchannel
-           qtwebengine
-           qtx11extras
-           qtxmlpatterns
-           sqlite
-           tbb
-           vtk
-           xerces-c
-           zlib))
-    (arguments
-     `(#:tests? #f          ; Project has no tests
-       #:configure-flags
-       ,#~(list
-           "-DBUILD_QT5=ON"
-           "-DBUILD_FLAT_MESH:BOOL=ON"
-           "-DBUILD_ENABLE_CXX_STD:STRING=C++17"
-           (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")
-           (string-append "-DPYSIDE2UICBINARY="
-                          #$(this-package-native-input
-                             "python-pyside-2-tools")
-                          "/bin/uic")
-           (string-append "-DPYSIDE2RCCBINARY="
-                          #$(this-package-native-input
-                             "python-pyside-2-tools")
-                          "/bin/rcc")
-           "-DPYSIDE_LIBRARY=PySide2::pyside2"
-           (string-append
-            "-DPYSIDE_INCLUDE_DIR="
-            #$(this-package-input "python-pyside-2") "/include;"
-            #$(this-package-input "python-pyside-2") "/include/PySide2;"
-            #$(this-package-input "python-pyside-2") "/include/PySide2/QtCore;"
-            #$(this-package-input "python-pyside-2") "/include/PySide2/QtWidgets;"
-            #$(this-package-input "python-pyside-2") "/include/PySide2/QtGui;")
-           "-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
-           (string-append "-DSHIBOKEN_INCLUDE_DIR="
-                          #$(this-package-input "python-shiboken-2")
-                          "/include/shiboken2"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'restore-pythonpath
-           (lambda _
-             (substitute* "src/Main/MainGui.cpp"
-               (("_?putenv\\(\"PYTHONPATH=\"\\);") ""))))
-         (add-after 'install 'wrap-pythonpath
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/FreeCAD")
-                 (list "GUIX_PYTHONPATH"
-                       'prefix (list (getenv "GUIX_PYTHONPATH"))))))))))
-    (home-page "https://www.freecadweb.org/")
-    (synopsis "Your Own 3D Parametric Modeler")
-    (description
-     "FreeCAD is a general purpose feature-based, parametric 3D modeler for
+  ;; FIXME: We use a commit directly because upstream has compatibility fixes
+  ;; that are not in a release yet for boost, opencascade-occt-7.6 and vtk-9.
+  ;; Switch back to a regular version (probably 0.20) when it is released.
+  (let ((commit "09a05a9cd0c4692a57a3e038268b4389b4657fc6")
+        (revision "0"))
+    (package
+      (name "freecad")
+      (version (git-version "0.19.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/FreeCAD/FreeCAD")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0818basym0n44dsgix0yv1l00xgv9igrr7wkszd8x74lh1rr591r"))))
+      (build-system qt-build-system)
+      (native-inputs
+       (list doxygen
+             graphviz
+             qttools
+             pkg-config
+             python-pyside-2-tools
+             swig))
+      (inputs
+       (list boost
+             coin3D
+             double-conversion
+             eigen
+             freetype
+             gl2ps
+             glew
+             hdf5-1.10
+             jsoncpp
+             libarea
+             libjpeg-turbo
+             libmedfile
+             libspnav
+             libtheora
+             libtiff
+             libxi
+             libxml++
+             libxmu
+             lz4
+             netcdf
+             opencascade-occt
+             openmpi
+             proj
+             python-gitpython
+             python-matplotlib
+             python-pivy
+             python-ply
+             python-pyside-2
+             python-pyyaml
+             python-shiboken-2
+             python-wrapper
+             qtbase-5
+             qtdeclarative
+             qtsvg
+             qtwebchannel
+             qtwebengine
+             qtx11extras
+             qtxmlpatterns
+             sqlite
+             tbb-2020 ; Same version as opencascade-occt
+             vtk
+             xerces-c
+             zlib))
+      (arguments
+       `(#:tests? #f          ; Project has no tests
+         #:configure-flags
+         ,#~(list
+             "-DBUILD_QT5=ON"
+             "-DBUILD_FLAT_MESH:BOOL=ON"
+             "-DBUILD_ENABLE_CXX_STD:STRING=C++17"
+             (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'restore-pythonpath
+             (lambda _
+               (substitute* "src/Main/MainGui.cpp"
+                 (("_?putenv\\(\"PYTHONPATH=\"\\);") ""))))
+           (add-after 'install 'wrap-pythonpath
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out "/bin/FreeCAD")
+                   (list "GUIX_PYTHONPATH"
+                         'prefix (list (getenv "GUIX_PYTHONPATH"))))))))))
+      (home-page "https://www.freecadweb.org/")
+      (synopsis "Your Own 3D Parametric Modeler")
+      (description
+       "FreeCAD is a general purpose feature-based, parametric 3D modeler for
 CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and
 product design but also fits a wider range of uses in engineering, such as
 architecture or other engineering specialties.  It is 100% Open Source (LGPL2+
 license) and extremely modular, allowing for very advanced extension and
 customization.")
-    (license
-     (list
-      license:lgpl2.1+
-      license:lgpl2.0+
-      license:gpl3+
-      license:bsd-3))))
+      (license
+       (list
+        license:lgpl2.1+
+        license:lgpl2.0+
+        license:gpl3+
+        license:bsd-3)))))
 
 (define-public libmedfile
   (package
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 66b07b4a51..13031d6d3d 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2020, 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,10 +21,12 @@
 (define-module (gnu packages fcitx5)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages anthy)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages datastructures)
@@ -196,43 +199,60 @@ editors.")
         (base32 "07ip4sxf3q895pp7mivv2bdwcmqjnwrmv9pg99jk73cw9bgyq00n"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ;No test
-       #:configure-flags
-       (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
-                            %output "/share/gir-1.0")
-             (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
-                            %output "/lib/girepository-1.0")
-             ;; TODO: Enable it when Guix has GTK4.
-             "-DENABLE_GTK4_IM_MODULE=Off")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-install-prefix
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (gtk2 (assoc-ref outputs "gtk2")))
-               ;; Install GTK+ 2 input method module to its own output.
-               (substitute* "gtk2/CMakeLists.txt"
-                 (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
-                  (string-append gtk2 "/lib")))))))))
+     (list
+      #:tests? #f                       ;No test
+      #:configure-flags
+      #~(list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
+                             #$output "/share/gir-1.0")
+              (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
+                             #$output "/lib/girepository-1.0"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'patch-install-prefix
+            (lambda _
+              ;; Take care of different versions of GTK because this package
+              ;; provides IM module for GTK application to use input method.
+              (define (split-immodule gtk-version output)
+                (substitute* (string-append gtk-version "/CMakeLists.txt")
+                  (("\\$\\{CMAKE_INSTALL_LIBDIR\\}")
+                   (string-append output "/lib"))))
+
+              (let ((gtk2 #$output:gtk2)
+                    (gtk3 #$output:gtk3)
+                    (gtk4 #$output:gtk4))
+                (for-each split-immodule
+                          '("gtk2" "gtk3" "gtk4")
+                          (list gtk2 gtk3 gtk4))))))))
     (inputs
-     `(("fcitx5" ,fcitx5)
-       ("fmt" ,fmt)
-       ("libxkbcommon" ,libxkbcommon)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk2" ,gtk+-2)
-       ("gtk3" ,gtk+)
-       ("glib" ,glib)
-       ("libx11" ,libx11)
-       ("gettext" ,gettext-minimal)))
+     (list fcitx5
+           fmt
+           libx11
+           libxkbcommon
+           gettext-minimal
+           gobject-introspection
+           gtk+-2
+           gtk+
+           gtk
+           glib))
     (native-inputs
      (list extra-cmake-modules pkg-config
            `(,glib "bin")))           ;for glib-genmarshal
-    ;; TODO: Add "lib" output to reduce the closure size of "gtk2".
-    (outputs '("out" "gtk2"))
+    (outputs '("out" "gtk2" "gtk3" "gtk4"))
     (home-page "https://github.com/fcitx/fcitx5-gtk")
-    (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5")
-    (description "Fcitx5-gtk provides a Glib based D-Bus client and IM module
-for GTK+2/GTK+3 application.")
+    (synopsis "GLib-based D-Bus client and GTK IM module for Fcitx 5")
+    (description "Fcitx5-gtk provides the following functionality in the
+corresponding output:
+
+@table @code
+@item out
+GLib-based D-Bus client of Fcitx5.
+@item gtk2
+IM module for GTK+2 applications.
+@item gtk3
+IM module for GTK+3 applications.
+@item gtk4
+IM module for GTK4 applications.
+@end table")
     (license license:lgpl2.1+)))
 
 (define-public fcitx5-qt
@@ -270,6 +290,30 @@ for Qt based application.")
                    ;; and qt5/platforminputcontext.
                    license:bsd-3))))
 
+(define-public fcitx5-anthy
+  (package
+    (name "fcitx5-anthy")
+    (version "5.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.fcitx-im.org/fcitx5"
+                           "/fcitx5-anthy/fcitx5-anthy-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "0i2ahfp1vh0cs3brcsfblzqwszal2qj1ncgb1hbc9v03s1j6bybk"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ;; no tests
+    (inputs (list fcitx5 anthy gettext-minimal fmt))
+    (native-inputs
+     (list extra-cmake-modules pkg-config))
+    (home-page "https://github.com/fcitx/fcitx5-anthy")
+    (synopsis "Anthy Japanese language input for Fcitx 5")
+    (description "Fcitx5-Anthy provides Japanese input support to Fcitx5 using
+the Anthy input method.")
+    (license license:gpl2+)))
+
 (define-public fcitx5-chinese-addons
   (package
     (name "fcitx5-chinese-addons")
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 767b7c5732..b1f3f4158f 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -405,8 +405,8 @@ from a mounted file system.")
     (license license:gpl2+)))
 
 (define-public bcachefs-tools
-  (let ((commit "b19d9f92e12c2e78d6e306e6cb7f8a7d9a7875f3")
-        (revision "13"))
+  (let ((commit "fd1b84975b960d5e42963bed2c18b8c63d8abce7")
+        (revision "14"))
     (package
       (name "bcachefs-tools")
       (version (git-version "0.1" revision commit))
@@ -418,7 +418,7 @@ from a mounted file system.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1ixb1fk58yjk8alpcf9a7h0fnkvpbsjxd766iz9h7qa6r1r77a6c"))))
+          (base32 "08vh0pg2sj833062y4vvnvzqchhflcvysp3xdh0zjk121r3iqm0s"))))
       (build-system gnu-build-system)
       (arguments
        (list #:make-flags
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 5c08662f05..9f2d055048 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1724,7 +1724,9 @@ that allows you to run services and through them access the Bitcoin Cash network
            (lambda _
              (substitute* "setup.py"
                (("'google-api-python-client',") ""))
-             #t)))))
+             #t))
+         ;; No module named 'google_auth_oauthlib'
+         (delete 'sanity-check))))
     (inputs
      (list python-beautifulsoup4
            python-bottle
@@ -1942,3 +1944,37 @@ providing common functions for the technical analysis of financial market data."
      "TA-Lib is a library providing common functions for the technical
 analysis of financial market data.")
     (license license:bsd-3)))
+
+(define-public python-mt-940
+  (package
+    (name "python-mt-940")
+    (version "4.23.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/WoLpH/mt940.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0z9w1qalcphsck3j6vkrs7k47ah9zq2rv0lm9nmcsgwpyp59qkyf"))))
+    (properties '(("upstream-name" #{.}# "mt-940")))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+                      (when tests?
+                        ;; Remove custom --cov flags.
+                        (delete-file "pytest.ini")
+                        (invoke "pytest" "-vv")))))))
+    (native-inputs (list python-flake8
+                         python-pytest
+                         python-pyyaml))
+    (home-page "https://mt940.readthedocs.io/")
+    (synopsis "Python parser for MT940-encoded SWIFT data")
+    (description
+     "A library to parse MT940 files, a bank account statement exchange
+format used by SWIFT.  It returns smart Python collections for statistics
+and manipulation.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 536892ee0d..c37303892b 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -44,6 +44,9 @@
 ;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2021 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2022 Kitzman <kitzman@disroot.org>
+;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1496,7 +1499,7 @@ programming.  Iosevka is completely generated from its source code.")
 (define-public font-sarasa-gothic
   (package
     (name "font-sarasa-gothic")
-    (version "0.31.2")
+    (version "0.36.0")
     (source
      (origin
        (method url-fetch)
@@ -1504,7 +1507,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/sarasa-gothic-ttc-" version ".7z"))
        (sha256
-        (base32 "0p67qyhm266s6q17islqvwch807fy5slgp2symrl0z665vp6hycj"))))
+        (base32 "0rr6qrf49zx3cl1pv7063l12nnj2nm9p4di3frp0p4ci9l7b4xmw"))))
     (build-system font-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -2463,4 +2466,98 @@ converted from the Type 1 originals by Matthew Butterick.")
          "Bitstream contributed the Charter family "
          "to the X Consortium in 1992.  "
          "The license is also embedded in the font metadata."))))))
-/
+
+(define-public font-termsyn
+  (package
+    (name "font-termsyn")
+    (version "1.8.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/termsyn/termsyn-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "15vsmc3nmzl0pkgdpr2993da7p38fiw2rvcg01pwldzmpqrmkpn6"))))
+    (build-system font-build-system)
+    (outputs '("out" "psf" "otf"))
+    (native-inputs (list fontforge))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'install 'build
+                    (lambda _
+                      (use-modules (ice-9 regex)
+                                   (ice-9 match))
+                      (define (pcf2 name ext)
+                        (invoke "fontforge" "-lang=ff" "-c"
+                                (string-append "Open('"
+                                               name
+                                               "');"
+                                               "Generate('"
+                                               (basename name "pcf")
+                                               ext
+                                               "','ttf')")))
+                      (for-each (lambda (pcf)
+                                  (pcf2 pcf "otf"))
+                                (find-files "." "\\.pcf$")) #t))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((pcf (assoc-ref outputs "out")) (psf (assoc-ref
+                                                                   outputs
+                                                                   "psf"))
+                             (otf (assoc-ref outputs "otf"))
+                             (pcf-font-dir (string-append pcf
+                                            "/share/fonts/termsyn"))
+                             (otf-font-dir (string-append otf
+                                            "/share/fonts/termsyn-otf"))
+                             (psf-font-dir (string-append psf
+                                            "/share/kbd/consolefonts")))
+                        (mkdir-p pcf-font-dir)
+                        (mkdir-p otf-font-dir)
+                        (mkdir-p psf-font-dir)
+                        (for-each (lambda (pcf)
+                                    (install-file pcf pcf-font-dir))
+                                  (find-files "." "\\.pcf$"))
+                        (for-each (lambda (psfu)
+                                    (install-file psfu psf-font-dir))
+                                  (find-files "." "\\.psfu$"))
+                        (for-each (lambda (otf)
+                                    (install-file otf otf-font-dir))
+                                  (find-files "." "\\.otf$"))) #t)))))
+    (home-page "https://sourceforge.net/projects/termsyn/")
+    (synopsis "Monospaced font based on terminus and tamsyn")
+    (description
+     "Termsyn is a clean monospaced bitmap font based on Terminus and Tamsyn.
+
+This package contains the following outputs:
+@enumerate
+@item out: pcf font
+@item otf: otf font
+@item psf: psfu font
+@end enumerate
+")
+    (license license:gpl2)))
+
+(define-public font-atui-feather
+  (let ((version "0")
+        (commit "c51fe7cedbcf2cbf4f1b993cef5d8def612dec1d")
+        (revision "1"))
+    (package
+      (name "font-atui-feather")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (commit commit)
+                      (url "https://github.com/AT-UI/feather-font/")))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0hk12bjlsh0j6kd0sz3nwax259afdi6dxws4x88yz5ssxic1ng2j"))))
+      (build-system font-build-system)
+      (home-page "https://at-ui.github.io/feather-font/")
+      (synopsis "Iconfont version of Feather")
+      (description
+       "Feather is a collection of simply beautiful icons.  Each
+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))))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index cd06c345e7..04b868d31b 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
+;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -835,7 +836,7 @@ maintain the Noto Fonts project.")
 (define-public fcft
   (package
     (name "fcft")
-    (version "2.5.1")
+    (version "3.0.1")
     (home-page "https://codeberg.org/dnkl/fcft")
     (source (origin
               (method git-fetch)
@@ -843,7 +844,7 @@ maintain the Noto Fonts project.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dn0ic2ddi5qz6nqscsn7nlih67ad8vpclppbqwas6xavdfq6va2"))))
+                "0jxy92ny8b7s7yvz1mr8zpf7l2zsn506fi9f98pvh9k25jprg0cx"))))
     (build-system meson-build-system)
     (native-inputs
      (list check pkg-config scdoc))
@@ -904,6 +905,7 @@ generated list of fallback fonts are checked.")
    (inputs
     `(("fonconfig" ,fontconfig)
       ("freetype" ,freetype)
+      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk+" ,gtk+)
       ("json-glib" ,json-glib)
       ("libsoup" ,libsoup-minimal-2)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index f89ec0742f..55bde8e705 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015-2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
-;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
@@ -585,11 +585,15 @@ the freedesktop.org XDG Base Directory specification.")
                  (sysconf (string-append out "/etc"))
                  (libexec (string-append out "/libexec/elogind"))
                  (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
-                 (kexec-tools #$(this-package-input "kexec-tools"))
+                 #$@(if (not (target-riscv64?))
+                      #~((kexec-tools #$(this-package-input "kexec-tools")))
+                      #~())
                  (shadow #$(this-package-input "shadow"))
                  (shepherd #$(this-package-input "shepherd"))
                  (halt-path (string-append shepherd "/sbin/halt"))
-                 (kexec-path (string-append kexec-tools "/sbin/kexec"))
+                 #$@(if (not (target-riscv64?))
+                      #~((kexec-path (string-append kexec-tools "/sbin/kexec")))
+                      #~())
                  (nologin-path (string-append shadow "/sbin/nologin"))
                  (poweroff-path (string-append shepherd "/sbin/shutdown"))
                  (reboot-path (string-append shepherd "/sbin/reboot")))
@@ -601,7 +605,9 @@ the freedesktop.org XDG Base Directory specification.")
              (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
              (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
              (string-append "-Dhalt-path=" halt-path)
-             (string-append "-Dkexec-path=" kexec-path)
+             #$@(if (not (target-riscv64?))
+                  #~((string-append "-Dkexec-path=" kexec-path))
+                  #~())
              (string-append "-Dpoweroff-path=" poweroff-path)
              (string-append "-Dreboot-path=" reboot-path)
              (string-append "-Dnologin-path=" nologin-path)
@@ -675,15 +681,18 @@ the freedesktop.org XDG Base Directory specification.")
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (inputs
-     (list kexec-tools
-           linux-pam
-           libcap
-           shadow ;for 'nologin'
-           shepherd ;for 'halt' and 'reboot', invoked
-           ;when pressing the power button
-           dbus
-           eudev
-           acl))           ;to add individual users to ACLs on /dev nodes
+     (append
+       (if (not (target-riscv64?))
+         (list kexec-tools)
+         '())
+       (list linux-pam
+             libcap
+             shadow         ; for 'nologin'
+             shepherd       ; for 'halt' and 'reboot', invoked
+                            ; when pressing the power button
+             dbus
+             eudev
+             acl)))         ; to add individual users to ACLs on /dev nodes
     (home-page "https://github.com/elogind/elogind")
     (synopsis "User, seat, and session management service")
     (description "Elogind is the systemd project's \"logind\" service,
@@ -1201,6 +1210,29 @@ sent to a Wayland window, such as key presses.  It is analogous to the X11 tool
 XEv.")
     (license license:expat)))
 
+(define-public wtype
+  (package
+    (name "wtype")
+    (version "0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/atx/wtype.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0bpix92vzip9vlhzihj3k8h9flrlna231x3y8ah7p4965l177yjd"))))
+    (build-system meson-build-system)
+    (native-inputs
+     (list pkg-config wayland libxkbcommon))
+    (synopsis "Xdotool type for Wayland")
+    (description "Wtype lets you simulate keyboard input and mouse activity,
+move and resize windows, etc.")
+    (home-page "https://github.com/atx/wtype")
+    ;; MIT License
+    (license license:expat)))
+
 (define-public exempi
   (package
     (name "exempi")
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 3d44364918..cf6cdb630f 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -173,14 +174,14 @@ as required.")
 (define-public libfilezilla
   (package
     (name "libfilezilla")
-    (version "0.35.0")
+    (version "0.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/"
                            "libfilezilla/libfilezilla-" version ".tar.bz2"))
        (sha256
-        (base32 "1s1a165kc1gkdmhzmvm91ddj3cbxmh7s27fwfgm921ixrq6m3qpf"))))
+        (base32 "0wm8acwbrsblilfwj5asxr26gy8grg175j91df1bryz7xlc1q9y0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -213,14 +214,14 @@ output.
 (define-public filezilla
   (package
     (name "filezilla")
-    (version "3.57.0")
+    (version "3.58.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/client/"
                            "FileZilla_" version "_src.tar.bz2"))
        (sha256
-        (base32 "1iwrr08rik0afaxf88bghw2fw97ia8wlcsrm94jh24yafxq6rgw2"))))
+        (base32 "122x72rvd178y2rffvidyvzr33kf325q2rk4l2x44xqzw1r7zznh"))))
     (build-system gnu-build-system)
     (arguments
       ;; Don't let filezilla phone home to check for updates.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index f417fae8d7..295ee20a90 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -26,6 +26,7 @@
 ;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2021 Andy Tai <atai@atai.org>
 ;;; Copyright © 2022 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -513,7 +514,7 @@ formats such as PNG.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.7.2")
+    (version "1.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -522,7 +523,7 @@ formats such as PNG.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ifxh3sv6gz32gahgi7ba0ivcw5mfgwnrw6iycpav150w9xla43i"))))
+                "05gczsywkk45bh0z1vv8l6cmrlncc2qj8agavj5ryxpnxkzy69r1"))))
     (build-system gnu-build-system)
     (inputs
      (list qtbase-5 qtdeclarative qtsvg zlib))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 80dc788267..8cc29b3487 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -821,37 +821,37 @@ Quizzes: arithmetic and quiz.")
 (define-public bzflag
   (package
     (name "bzflag")
-    (version "2.4.22")
+    (version "2.4.24")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.bzflag.org/bzflag/source/"
                            version "/bzflag-" version ".tar.bz2"))
        (sha256
-        (base32 "0kba0011nswc2csqlzkd7bas307zm5813zlnby5vsmxn08rnar4y"))))
+        (base32 "1i73ijlnxsz52fhqgkj2qcvibfgav3byq1is68gab2zwnyz330az"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-desktop-file-and-icons
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((share (string-append (assoc-ref outputs "out") "/share"))
-                    (data (string-append share "/bzflag"))
-                    (hicolor (string-append share "/icons/hicolor"))
-                    (applications (string-append share "/applications")))
-               ;; Move desktop file.
-               (install-file (string-append data "/bzflag.desktop")
-                             applications)
-               ;; Install icons.
-               (for-each (lambda (size)
-                           (let* ((dim (string-append size "x" size))
-                                  (dir (string-append hicolor "/" dim "/apps")))
-                             (mkdir-p dir)
-                             (copy-file
-                              (string-append data "/bzflag-" dim ".png")
-                              (string-append dir "/bzflag.png"))))
-                         '("48" "256")))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-desktop-file-and-icons
+            (lambda _
+              (let* ((share (string-append #$output "/share"))
+                     (data (string-append share "/bzflag"))
+                     (hicolor (string-append share "/icons/hicolor"))
+                     (applications (string-append share "/applications")))
+                ;; Move desktop file.
+                (install-file (string-append data "/bzflag.desktop")
+                              applications)
+                ;; Install icons.
+                (for-each (lambda (size)
+                            (let* ((dim (string-append size "x" size))
+                                   (dir (string-append hicolor "/" dim "/apps")))
+                              (mkdir-p dir)
+                              (copy-file
+                               (string-append data "/bzflag-" dim ".png")
+                               (string-append dir "/bzflag.png"))))
+                          '("48" "256"))))))))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -4582,6 +4582,40 @@ images, etc.)")
     ;; regarding assets.
     (license license:gpl3+)))
 
+(define-public openriichi
+  (package
+    (name "openriichi")
+    (version "0.2.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/FluffyStuff/OpenRiichi")
+                    (commit (string-append "v" version))
+                    (recursive? #t)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x6m4mli92chns5dky9aq9w4r4pnycvlpa2q0giydapm5q9fkslf"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:configure-flags (list "--buildtype=release")
+       #:glib-or-gtk? #t))
+    (inputs (list glew
+                  gtk+
+                  libgee
+                  sdl2
+                  sdl2-image
+                  sdl2-mixer))
+    (native-inputs (list pkg-config vala))
+    (home-page "https://github.com/FluffyStuff/OpenRiichi")
+    (synopsis "Japanese Mahjong client")
+    (description
+     "OpenRiichi is a client for playing Japanese Mahjong, and it supports
+singleplayer and multiplayer, with or without bots.  It features all the
+standard riichi rules, as well as some optional ones.  It also supports game
+logging, so games can be viewed again.")
+    (license license:gpl3)))
+
 (define-public pinball
   (package
     (name "pinball")
@@ -5821,7 +5855,7 @@ for Un*x systems with X11.")
 (define-public freeciv
   (package
    (name "freeciv")
-   (version "2.6.6")
+   (version "3.0.0")
    (source
     (origin
      (method url-fetch)
@@ -5831,9 +5865,9 @@ for Un*x systems with X11.")
                 (string-append
                   "mirror://sourceforge/freeciv/Freeciv%20"
                   (version-major+minor version) "/" version
-                  "/freeciv-" version ".tar.bz2")))
+                  "/freeciv-" version ".tar.xz")))
      (sha256
-      (base32 "04aq2v1ima87sap6yjb7jrm1ss63ax7v5kg7rpkj44887kfybkvv"))))
+      (base32 "1cm0530xmbqdhqkr89xb845cd756nillbdq53r3z5zpxsj18fapa"))))
    (build-system gnu-build-system)
    (inputs
     (list curl cyrus-sasl gtk+ sdl-mixer zlib))
@@ -9174,43 +9208,41 @@ and also provides the base for the FlightGear Flight Simulator.")
            ;; There are some bundled libraries.
            (for-each delete-file-recursively
                      '("3rdparty/sqlite3/"
-                       "3rdparty/cppunit/"))
-           #t))))
+                       "3rdparty/cppunit/"))))))
     (build-system qt-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-DSYSTEM_SQLITE=ON"
-             "-DSYSTEM_CPPUNIT=ON"
-             (string-append "-DFG_DATA_DIR="
-                            (assoc-ref %outputs "out")
-                            "/share/flightgear"))
-       ;; TODO: test suite segfaults.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-some-tests
-           (lambda _
-             (substitute* "test_suite/unit_tests/Instrumentation/test_gps.hxx"
-               (("CPPUNIT_TEST\\(testLongLegWestbound\\);" all)
-                (string-append "// " all))
-               (("CPPUNIT_TEST\\(testFinalLegCourse\\);" all)
-                (string-append "// " all)))))
-         (add-after 'build 'build-test-suite
-           (lambda* args
-             ((assoc-ref %standard-phases 'build)
-              #:make-flags (list "fgfs_test_suite"))))
-         ;; Test suite needs access to FGData so run it after 'install.
-         (delete 'check)
-         (add-after 'install-data 'check
-           (assoc-ref %standard-phases 'check))
-         (add-after 'install 'install-data
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
-               (mkdir-p share)
-               (with-directory-excursion share
-                 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
-                         "--strip-components=1")))
-             #t)))))
+     (list #:configure-flags
+           #~(list "-DSYSTEM_SQLITE=ON"
+                   "-DSYSTEM_CPPUNIT=ON"
+                   (string-append "-DFG_DATA_DIR=" #$output "/share/flightgear"))
+           ;; TODO: test suite segfaults.
+           #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'skip-some-tests
+                 (lambda _
+                   (substitute*
+                       "test_suite/unit_tests/Instrumentation/test_gps.hxx"
+                     (("CPPUNIT_TEST\\(testLongLegWestbound\\);" all)
+                      (string-append "// " all))
+                     (("CPPUNIT_TEST\\(testFinalLegCourse\\);" all)
+                      (string-append "// " all)))))
+               (add-after 'build 'build-test-suite
+                 (lambda* args
+                   ((assoc-ref %standard-phases 'build)
+                    #:make-flags (list "fgfs_test_suite"))))
+               ;; Test suite needs access to FGData so run it after 'install.
+               (delete 'check)
+               (add-after 'install-data 'check
+                 (assoc-ref %standard-phases 'check))
+               (add-after 'install 'install-data
+                 (lambda _
+                   (let ((share (string-append #$output "/share/flightgear")))
+                     (mkdir-p share)
+                     (with-directory-excursion share
+                       (invoke "tar" "xf"
+                               #$(this-package-native-input "flightgear-data")
+                               "--strip-components=1"))))))))
     (inputs
      (list boost
            dbus
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index e0a431a0ff..07466143fc 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@@ -50,6 +50,7 @@
   #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match)
   #:use-module (ice-9 regex))
 
 (define %gcc-infrastructure
@@ -293,6 +294,16 @@ where the OS part is overloaded to denote a specific ABI---into GCC
                     (substitute* "gcc/config/aarch64/t-aarch64-linux"
                       (("lib64") "lib")))
 
+                  ;; TODO: Make this unconditional in core-updates.
+                  ;; The STARTFILE_PREFIX_SPEC prevents gcc from finding the
+                  ;; gcc:lib output, which causes ld to not find -lgcc_s.
+                  ,@(if (target-riscv64?)
+                     `((when (file-exists? "gcc/config/riscv")
+                         (substitute* "gcc/config/riscv/linux.h"
+                           (("define STARTFILE_PREFIX_SPEC")
+                           "define __STARTFILE_PREFIX_SPEC"))))
+                     '())
+
                   (when (file-exists? "libbacktrace")
                     ;; GCC 4.8+ comes with libbacktrace.  By default it builds
                     ;; with -Werror, which fails with a -Wcast-qual error in glibc
@@ -664,12 +675,108 @@ It also includes runtime support libraries for these languages.")
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
                                      "gcc-5.0-libvtv-runpath.patch"))
             (modules '((guix build utils)))
-            (snippet gcc-canadian-cross-objdump-snippet)))))
+            (snippet gcc-canadian-cross-objdump-snippet)))
+
+   ;; TODO: Add newly supported micro-architectures.
+   (properties (package-properties gcc-10))))
 
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions.
 (define-public gcc gcc-10)
 
+
+;;;
+;;; Historical version.
+;;;
+
+(define-public gcc-2.95
+  ;; Note: 'gcc-core-mesboot0' in commencement.scm provides 2.95 as well, but
+  ;; with additional tricks to support compilation with TinyCC and Mes-libc.
+  (package
+    (inherit gcc)
+    (version "2.95.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Do not build the bundled Texinfo.
+                  (delete-file-recursively "texinfo")
+                  (substitute* "configure"
+                    (("host_tools=(.*)texinfo" _ before)
+                     (string-append "host_tools=" before)))))))
+    (supported-systems (fold delete %supported-systems
+                             '("powerpc64le-linux" "riscv64-linux")))
+    (native-inputs (list texinfo dejagnu))
+    (inputs '())
+    (propagated-inputs '())
+    (outputs '("out"))
+    (arguments
+     (let ((matching-system
+             (match (%current-system)
+               ;; This package predates our 64-bit architectures.
+               ;; Force a 32-bit build targeting a similar architecture.
+               ("aarch64-linux"
+                "armhf-linux")
+               ("x86_64-linux"
+                "i686-linux")
+               (_
+                (%current-system)))))
+       (list #:system matching-system
+             #:configure-flags #~'("--disable-werror")
+
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-before 'configure 'set-dynamic-linker-file-name
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; Tell GCC what the real loader file name is.
+                     (substitute* '("gcc/config/alpha/linux-elf.h"
+                                    "gcc/config/m68k/linux.h"
+                                    "gcc/config/mips/linux.h"
+                                    "gcc/config/rs6000/linux.h")
+                       (("/lib/ld\\.so\\.1")
+                        (search-input-file
+                          inputs #$(glibc-dynamic-linker matching-system))))
+                     (substitute* '("gcc/config/alpha/linux-elf.h"
+                                    "gcc/config/arm/linux-elf.h"
+                                    "gcc/config/i386/linux.h"
+                                    "gcc/config/m68k/linux.h"
+                                    "gcc/config/sparc/linux.h"
+                                    "gcc/config/sparc/linux64.h")
+                       (("/lib(64)?/ld-linux\\.so\\.[12]")
+                        (search-input-file
+                          inputs #$(glibc-dynamic-linker matching-system))))))
+                 (replace 'configure
+                   (lambda* (#:key outputs build configure-flags
+                             #:allow-other-keys)
+                     ;; It's an old 'configure' script so it needs some help.
+                     (setenv "CONFIG_SHELL" (which "sh"))
+                     (apply invoke "./configure"
+                            (string-append "--prefix=" #$output)
+                            (string-append "--build=" build)
+                            (string-append "--host=" build)
+                            configure-flags)))
+                 (add-before 'configure 'remove-bundled-texinfo
+                   (lambda _
+                     ;; Go ahead despite the many warnings.
+                     (substitute* '("Makefile.in" "gcc/Makefile.in")
+                       (("^MAKEINFOFLAGS =.*")
+                        "MAKEINFOFLAGS = --force\n"))))))))
+    (native-search-paths
+     ;; This package supports nothing but the C language.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib")))))))
+
+
 (define-public (make-libstdc++ gcc)
   "Return a libstdc++ package based on GCC.  The primary use case is when
 using compilers other than GCC."
@@ -791,42 +898,6 @@ as the 'native-search-paths' field."
                 (find-files (string-append (assoc-ref outputs "out") "/bin")
                             ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
 
-(define* (custom-gcc-gccgo gcc name languages
-                           #:optional
-                           (search-paths (package-native-search-paths gcc))
-                           #:key (separate-lib-output? #t))
-  ;; TODO: remove CUSTOM-GCC-GCCGO when regex changes for CUSTOM-GCC are
-  ;; merged into master <https://issues.guix.gnu.org/49010>
-  "Return a custom version of GCC that supports LANGUAGES.  Use SEARCH-PATHS
-as the 'native-search-paths' field."
-  (package (inherit gcc)
-    (name name)
-    (outputs (if separate-lib-output?
-                 (package-outputs gcc)
-                 (delete "lib" (package-outputs gcc))))
-    (native-search-paths search-paths)
-    (properties (alist-delete 'hidden? (package-properties gcc)))
-    (arguments
-     (substitute-keyword-arguments (package-arguments gcc)
-       ((#:modules modules %gnu-build-system-modules)
-        `(,@modules
-          (srfi srfi-1)
-          (srfi srfi-26)
-          (ice-9 regex)))
-       ((#:configure-flags flags)
-        `(cons (string-append "--enable-languages="
-                              ,(string-join languages ","))
-               (remove (cut string-match "--enable-languages.*" <>)
-                       ,flags)))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'install 'remove-broken-or-conflicting-files
-             (lambda* (#:key outputs #:allow-other-keys)
-               (for-each
-                delete-file
-                (find-files (string-append (assoc-ref outputs "out") "/bin")
-                            ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
-
 (define %generic-search-paths
   ;; This is the language-neutral search path for GCC.  Entries in $CPATH are
   ;; not considered "system headers", which means GCC can raise warnings for
@@ -898,7 +969,7 @@ misnomer.")))
 
 (define (make-gccgo gcc)
   "Return a gccgo package based on GCC."
-  (let ((gccgo (custom-gcc-gccgo gcc "gccgo" '("go") %generic-search-paths)))
+  (let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
     (package
       (inherit gccgo)
       (synopsis "Go frontend to GCC")
@@ -951,6 +1022,9 @@ provides the GNU compiler for the Go programming language."))
 (define-public gccgo-10
   (make-gccgo gcc-10))
 
+(define-public gccgo-11
+  (make-gccgo gcc-11))
+
 (define %objc-search-paths
   (list (search-path-specification
          (variable "OBJC_INCLUDE_PATH")
@@ -1097,12 +1171,11 @@ provides the GNU compiler for the Go programming language."))
     (version "0.23")
     (source (origin
              (method url-fetch)
-             (uri (list (string-append
-                         "http://isl.gforge.inria.fr/isl-"
-                         version
-                         ".tar.bz2")
+             ;; Used to be at isl.gforge.inria.fr.
+             (uri (list (string-append "mirror://sourceforge/libisl/isl-"
+                                       version ".tar.bz2")
                         (string-append %gcc-infrastructure
-                                       name "-" version ".tar.bz2")))
+                                       "isl-" version ".tar.bz2")))
              (sha256
               (base32
                "0k91zck10zxs9sk3yrbb92y1j3w981w3fbwkfwd7kl779b0j52f5"))))
@@ -1126,7 +1199,8 @@ provides the GNU compiler for the Go programming language."))
                           (("^old_library=.*")
                            "old_library=''\n"))))))))
     (inputs (list gmp))
-    (home-page "http://isl.gforge.inria.fr/")
+    (home-page "https://libisl.sourceforge.io/") ;https://repo.or.cz/w/isl.git
+    (properties `((release-monitoring-url . ,home-page)))
     (synopsis
      "Manipulating sets and relations of integer points \
 bounded by linear constraints")
@@ -1147,7 +1221,7 @@ dependence analysis and bounds on piecewise step-polynomials.")
     (version "0.18")
     (source (origin
               (method url-fetch)
-              (uri (list (string-append "http://isl.gforge.inria.fr/isl-"
+              (uri (list (string-append "mirror://sourceforge/libisl/isl-"
                                         version ".tar.bz2")
                          (string-append %gcc-infrastructure
                                         "isl-" version ".tar.bz2")))
@@ -1162,12 +1236,10 @@ dependence analysis and bounds on piecewise step-polynomials.")
     (version "0.11.1")
     (source (origin
              (method url-fetch)
-             (uri (list (string-append
-                         "http://isl.gforge.inria.fr/isl-"
-                         version
-                         ".tar.bz2")
+             (uri (list (string-append "mirror://sourceforge/libisl/isl-"
+                                       version ".tar.bz2")
                         (string-append %gcc-infrastructure
-                                       name "-" version ".tar.bz2")))
+                                       "isl-" version ".tar.bz2")))
              (sha256
               (base32
                "13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9"))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 23cec0f9b7..538db2dde4 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -82,11 +82,14 @@
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell-apps)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages java)
   #:use-module (gnu packages kde)
+  #:use-module (gnu packages libusb)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
@@ -1178,7 +1181,7 @@ to create databases that are optimized for rendering/tile/map-services.")
 (define-public libosmium
   (package
     (name "libosmium")
-    (version "2.17.2")
+    (version "2.18.0")
     (source
      (origin
        (method git-fetch)
@@ -1187,7 +1190,7 @@ to create databases that are optimized for rendering/tile/map-services.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xgwicnzlyr8pcpgx528xrzh7g6rjfd7f80bi30478fnp8mq8rzr"))))
+        (base32 "0fh57mpii1ksacwfx5rz213j896aklib53jbybld2i517q2mmxr0"))))
     (build-system cmake-build-system)
     (propagated-inputs
      (list boost
@@ -1209,6 +1212,35 @@ to create databases that are optimized for rendering/tile/map-services.")
 OpenStreetMap data.")
     (license license:boost1.0)))
 
+(define-public osmium-tool
+  (package
+    (name "osmium-tool")
+    (version "1.14.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/osmcode/osmium-tool")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0zgyqyrs89vch0qnkh9m5xq079sr2wmydy5zz4l8xbysbjf6xry5"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bundled libraries.
+        '(delete-file-recursively "include/rapidjson"))))
+    (build-system cmake-build-system)
+    (inputs
+     (list libosmium
+           rapidjson))
+    (native-inputs
+     (list pandoc))
+    (home-page "https://osmcode.org/osmium-tool/")
+    (synopsis "Osmium command-line tool")
+    (description "Command line tool for working with OpenStreetMap data
+based on the Osmium library.")
+    (license license:gpl3+)))
+
 (define-public osm2pgsql
   (package
     (name "osm2pgsql")
@@ -1982,30 +2014,35 @@ exchanged form one Spatial DBMS and the other.")
 (define-public opencpn
   (package
     (name "opencpn")
-    (version "5.2.4")
+    (version "5.6.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/OpenCPN/OpenCPN")
-             (commit (string-append "v" version))))
+             (commit (string-append "Release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ffx0lmz1mp5433zqyxigy4qqav32xprpagd66krvihkyvqp2y6y"))))
+        (base32 "0g5x45wv3djfjmigk6kgs0i63yp8rs1fbmm4pb15wb3z6dml624y"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
     (inputs
-     (list bzip2
+     (list alsa-utils
+           bzip2
            cairo
            curl
+           eudev
            glu
            gtk+
+           jasper
            libarchive
            libelf
            libexif
+           libjpeg-turbo
            libsndfile
+           libusb
            lz4
            mesa
            pango
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 7f67f12672..adbadfb313 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Songlin Jiang <hollowman@hollowman.ml>
-;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
+;;; Copyright © 2021, 2022 Justin Veilleux <terramorpha@cock.li>
 ;;; Copyright © 2021 Attila Lendvai <attila@lendvai.name>
 ;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
 ;;;
@@ -291,7 +291,7 @@ that caches clipboard history.")
 (define-public gnome-shell-extension-customize-ibus
   (package
     (name "gnome-shell-extension-customize-ibus")
-    (version "78")
+    (version "82")
     (source
      (origin
        (method git-fetch)
@@ -300,7 +300,7 @@ that caches clipboard history.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1hnnsjriq7xaakk8biwz55mn077lnm9nsmi4wz5zk7clgxmasvq9"))))
+        (base32 "00brnyahphl4ql9yh74wpb9kmzyb4b5k4rkw40hvxvqw4qwgs24r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -403,8 +403,7 @@ faster window switching.")
 (define-public gnome-shell-extension-gsconnect
   (package
     (name "gnome-shell-extension-gsconnect")
-    ;; v33 is the last version to support GNOME 3.34
-    (version "33")
+    (version "48")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -414,10 +413,11 @@ faster window switching.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1q03axhn75i864vgmd6myhmgwrmnpf01gsd1wl0di5x9q8mic2zn"))))
+                "15agblnm7k1wqnnz6gwhwym992fzqkdz8mkm04805783bx60b8bh"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
+     `(#:tests? #f ;; every test fails
+       #:configure-flags
        (let* ((out (assoc-ref %outputs "out"))
               (name+version (strip-store-file-name out))
               (gschema-dir (string-append out
@@ -442,7 +442,7 @@ faster window switching.")
              (let* ((glib (assoc-ref inputs "glib:bin"))
                     (gapplication (string-append glib "/bin/gapplication"))
                     (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
-               (substitute* "data/org.gnome.Shell.Extensions.GSConnect.desktop"
+               (substitute* "data/org.gnome.Shell.Extensions.GSConnect.desktop.in"
                  (("gapplication") gapplication))
                (for-each
                 (lambda (file)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e653e6e0c1..e6e576d7f7 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014, 2016, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
@@ -51,7 +51,7 @@
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
-;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
@@ -62,7 +62,7 @@
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
-;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
 ;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
@@ -689,23 +689,20 @@ of writing test cases for asynchronous interactions.")
                (substitute* "dee-1.0-docs.sgml"
                  (("http://www.oasis-open.org/docbook/xml/4.3/")
                   (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))
-             #t))
+                                 "/xml/dtd/docbook/"))))))
          (add-after 'patch-docbook-xml 'disable-failing-tests
            (lambda _
              (substitute* "tests/test-icu.c"
                (("g_test_add \\(DOMAIN\"/Default/AsciiFolder\", Fixture, 0,")
                 "")
                (("setup, test_ascii_folder, teardown\\);")
-                ""))
-             #t))
+                ""))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running dbus-daemon.
              (system "dbus-daemon &")
              ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             #t)))))
+             (setenv "DBUS_FATAL_WARNINGS" "0"))))))
     (native-inputs
      `(("dbus" ,dbus)
        ("dbus-test-runner" ,dbus-test-runner)
@@ -717,7 +714,7 @@ of writing test cases for asynchronous interactions.")
        ("pkg-config" ,pkg-config)
        ("pygobject" ,python-pygobject)
        ("python" ,python-wrapper)
-       ("vala" ,vala)))
+       ("vala" ,vala-0.52)))
     (inputs
      `(("icu" ,icu4c)))
     (propagated-inputs
@@ -737,7 +734,7 @@ of known objects without needing a central registrar.")
 (define-public zeitgeist
   (package
     (name "zeitgeist")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method git-fetch)
@@ -749,7 +746,7 @@ of known objects without needing a central registrar.")
        (file-name
         (git-file-name name version))
        (sha256
-        (base32 "0y6fyzxl5np4yskcxibd0p03h619w9ir907nhf40h02y0pk1kgkp"))))
+        (base32 "07b1ahj3vd3m8srwkrh7dl3ymr7d55xiiszny44q13g06pq4svch"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -765,8 +762,7 @@ of known objects without needing a central registrar.")
                (substitute* "zeitgeist-gtkdoc-index.sgml"
                  (("http://www.oasis-open.org/docbook/xml/4.3/")
                   (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))
-             #t))
+                                 "/xml/dtd/docbook/"))))))
          (add-after 'patch-docbook-xml 'disable-failing-tests
            (lambda _
              (substitute* "test/direct/Makefile.am"
@@ -774,13 +770,11 @@ of known objects without needing a central registrar.")
                 ""))
              (substitute* "test/c/Makefile.am"
                (("	test-log ")
-                ""))
-             #t))
+                ""))))
          (add-before 'bootstrap 'remove-autogen-script
            (lambda _
              ;; To honor `autoreconf -vif` by build-system.
-             (delete-file "autogen.sh")
-             #t)))))
+             (delete-file "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -1856,7 +1850,7 @@ either on a local, or remote machine via a number of methods.")
 (define-public gnome-commander
   (package
     (name "gnome-commander")
-    (version "1.12.3.1")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
@@ -1864,10 +1858,11 @@ either on a local, or remote machine via a number of methods.")
                            (version-major+minor version)  "/"
                            "gnome-commander-" version ".tar.xz"))
        (sha256
-        (base32 "0fhmfxh6kbchggvpbin7d4g4fq5vc49y0w48wdkyxln5dswidss2"))))
+        (base32 "1zdz82j7vpxiqa188zmsxliqk60g331ycaxfbhx5bzyqfjgrh7gd"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list desktop-file-utils
+           flex
            gettext-minimal
            `(,glib "bin")
            gobject-introspection
@@ -1877,7 +1872,7 @@ either on a local, or remote machine via a number of methods.")
            libtool
            pkg-config))
     (inputs
-     (list gconf gnome-vfs gtk+-2 libxml2))
+     (list gconf glib gtk+-2 libxml2))
     (home-page "https://gcmd.github.io/")
     (synopsis "Two-pane graphical file manager for the GNOME desktop")
     (description
@@ -2934,7 +2929,7 @@ database is translated at Transifex.")
 (define-public system-config-printer
   (package
     (name "system-config-printer")
-    (version "1.5.15")
+    (version "1.5.16")
     (source
      (origin
        (method url-fetch)
@@ -2943,45 +2938,50 @@ database is translated at Transifex.")
              "download/v" version
              "/system-config-printer-" version ".tar.xz"))
        (sha256
-        (base32 "12d6xx51vizc476zfnsga9q09nflp51ipn6y7lhi9w2v4772dlpv"))))
+        (base32 "1z9pvgifj5c87csnqz10qybbcayh3ak9m606f63ifkvyjh4q9jnb"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:imported-modules ((guix build python-build-system)
+     (list
+      #:imported-modules `((guix build python-build-system)
                            ,@%glib-or-gtk-build-system-modules)
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-Makefile.am
-           (lambda _
-             ;; The Makefile generates some scripts, so set a valid shebang
-             (substitute* "Makefile.am"
-               (("/bin/bash") (which "bash")))
-             (delete-file "configure")
-             #t))
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Modify the man XML otherwise xmlto tries to access the network
-             (substitute* "man/system-config-printer.xml"
-               (("http://www.oasis-open.org/docbook/xml/4.1.2/")
-                (string-append (assoc-ref inputs "docbook-xml")
-                               "/xml/dtd/docbook/")))
-             #t))
-         (add-after 'install 'wrap-for-python
-           (@@ (guix build python-build-system) wrap))
-         (add-after 'install 'wrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out               (assoc-ref outputs "out"))
-                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-               (for-each
-                (lambda (program)
-                  (wrap-program program
-                    `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
-                (map (lambda (name)
-                       (string-append out "/bin/" name))
-                     '("system-config-printer"
-                       "system-config-printer-applet"
-                       "install-printerdriver"
-                       "scp-dbus-service"))))
-             #t)))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-build-files
+            (lambda _
+              (substitute* "configure.ac"
+                (("AC_INIT.*" all)
+                 (string-append all "\nAC_CONFIG_MACRO_DIR([m4])\n"))
+                ;; XXX: AX macros appear unavailable
+                (("AX_REQUIRE_DEFINED.*") ""))
+              ;; The Makefile generates some scripts, so set a valid shebang
+              (substitute* "Makefile.am"
+                (("/bin/bash") (which "bash")))
+              (delete-file "configure")))
+          (add-after 'unpack 'patch-docbook-xml
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Modify the man XML otherwise xmlto tries to access the network
+              (substitute* "man/system-config-printer.xml"
+                (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                 (string-append (assoc-ref inputs "docbook-xml")
+                                "/xml/dtd/docbook/")))))
+          (add-after 'install 'add-install-to-pythonpath
+            (@@ (guix build python-build-system) add-install-to-pythonpath))
+          (add-after 'add-install-to-pythonpath 'wrap-for-python
+            (@@ (guix build python-build-system) wrap))
+          (add-after 'install 'wrap
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out               (assoc-ref outputs "out"))
+                    (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+                (for-each
+                 (lambda (program)
+                   (wrap-program program
+                     `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+                 (map (lambda (name)
+                        (string-append out "/bin/" name))
+                      '("system-config-printer"
+                        "system-config-printer-applet"
+                        "install-printerdriver"
+                        "scp-dbus-service")))))))))
     (inputs
      (list gsettings-desktop-schemas
            gobject-introspection
@@ -3001,7 +3001,7 @@ database is translated at Transifex.")
            glib
            autoconf
            automake
-           intltool
+           gettext-minimal
            xmlto
            docbook-xml-4.1.2
            docbook-xsl
@@ -5175,13 +5175,14 @@ once.")
              (substitute* "build-aux/post_install.py"
                (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("vala" ,vala)
-       ("xmllint" ,libxml2)))
+     (list pkg-config
+           python                             ;for 'build-aux/post_install.py'
+           desktop-file-utils
+           `(,glib "bin")                         ;for glib-compile-resources
+           intltool
+           itstool
+           vala
+           libxml2))
     (inputs
      (list gtk+ json-glib libgee librsvg qqwing))
     (home-page "https://wiki.gnome.org/Apps/Sudoku")
@@ -5433,55 +5434,47 @@ faster results and to avoid unnecessary server load.")
 (define-public upower
   (package
     (name "upower")
-    (version "0.99.13")
+    (version "0.99.15")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://gitlab.freedesktop.org/upower/upower")
-             (commit (string-append "UPOWER_"
-                                    (string-map (match-lambda (#\. #\_)
-                                                              (chr chr))
-                                                version)))))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0khwg6jpq81dcylkpi7cn75bjzif0q9qscwvirrk41krma23iddj"))
-       (patches (search-patches "upower-builddir.patch"))
+        (base32 "1zk7w7pw8dhlnxhxzcbk33gmxmg8f32mppd67556v9z2qgcg4lhs"))
        (modules '((guix build utils)))
        (snippet
-        '(begin
-           ;; Upstream commit
-           ;; <https://cgit.freedesktop.org/upower/commit/?id=18457c99b68786cd729b315723d680e6860d9cfa>
-           ;; moved 'dbus-1/system.d' from etc/ to share/.  However,
-           ;; 'dbus-configuration-directory' in (gnu services dbus)
-           ;; expects it in etc/.  Thus, move it back to its previous
-           ;; location.
-           (substitute* "src/Makefile.am"
-             (("^dbusconfdir =.*$")
-              "dbusconfdir = $(sysconfdir)/dbus-1/system.d\n"))))))
-    (build-system glib-or-gtk-build-system)
+         ;; Upstream commit
+         ;; <https://cgit.freedesktop.org/upower/commit/?id=18457c99b68786cd729b315723d680e6860d9cfa>
+         ;; moved 'dbus-1/system.d' from etc/ to share/.  However,
+         ;; 'dbus-configuration-directory' in (gnu services dbus)
+         ;; expects it in etc/.  Thus, move it back to its previous
+         ;; location.
+         #~(substitute* "src/meson.build"
+            (("dbusdir / 'system.d'")
+              "get_option('sysconfdir') / 'dbus-1/system.d'")
+            ;; Avoid writing to /var during the build, this is
+            ;; not possible in Guix!
+            (("^install_subdir\\('does-not-exist'.*$") "")))))
+    (build-system meson-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((umockdev (string-append (assoc-ref inputs "umockdev")
-                                            "/lib")))
-               (setenv "LD_LIBRARY_PATH" umockdev)))))
-       #:configure-flags (list "--localstatedir=/var"
-                               (string-append "--with-udevrulesdir="
-                                              (assoc-ref %outputs "out")
-                                              "/lib/udev/rules.d"))))
+      (list
+       #:glib-or-gtk? #t
+       #:configure-flags
+       #~(list "-Dsystemdsystemunitdir=no"
+               ;; If not specified, udev will try putting history information
+               ;; in /gnu/store.
+               "-Dhistorydir=/var/lib/upower"
+               (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d"))))
     (native-inputs
-     (list autoconf
-           automake
+     (list `(,glib "bin") ; for gdbus-codegen
            gobject-introspection
            gtk-doc
            intltool
-           libtool
            pkg-config
            python
-           which ; for ./autogen.sh
            ;; For tests.
            python-dbus
            python-dbusmock
@@ -5504,7 +5497,11 @@ faster results and to avoid unnecessary server load.")
 listening to device events and querying history and statistics.  Any
 application or service on the system can access the org.freedesktop.UPower
 service via the system message bus.")
-    (license license:gpl2+)))
+    (license license:gpl2+)
+    ;; Old versions of upower are tagged as UPOWER_0_99_13, which confuses
+    ;; the 'generic-git' updater.  Give it a little help.
+    (properties '((release-tag-prefix . "v")
+                  (release-tag-version-delimiter . ".")))))
 
 (define-public libgweather
   (package
@@ -6423,7 +6420,8 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
             (patches (search-patches "eog-update-libportal-usage.patch"))))
    (build-system meson-build-system)
    (arguments
-    `(#:configure-flags
+    `(#:glib-or-gtk? #t
+      #:configure-flags
       ;; Otherwise, the RUNPATH will lack the final 'eog' path component.
       (list (string-append "-Dc_link_args=-Wl,-rpath="
                            (assoc-ref %outputs "out") "/lib/eog"))
@@ -6470,7 +6468,7 @@ supports image conversion, rotation, and slideshows.")
 
 (define-public eog-plugins
   ;; Note: EOG looks for its plugins (via libpeas) in ~/.local as well as
-  ;; $DATA/lib/eog/plugins, where DATA is one of the entries in
+  ;; $DATA/eog/plugins, where DATA is one of the entries in
   ;; $XDG_DATA_DIRS.  Thus, for EOG to find these, you have to have
   ;; 'XDG_DATA_DIRS' appropriately set.
   (package
@@ -6485,6 +6483,17 @@ supports image conversion, rotation, and slideshows.")
                (base32
                 "1dcxdjp7x092wn0iq7975f9b05ksb5kl5mxmyiqmydrja91ryw40"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'fix-plugins-path
+           ;; XXX: EOG looks its plugins in "share/eog/plugins", not in
+           ;; "lib/eog/plugins".
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (plugins (string-append out "/share/eog/plugins")))
+               (mkdir (dirname plugins))
+               (symlink (string-append out "/lib/eog/plugins") plugins)))))))
     (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
     (synopsis "Extensions for the Eye of GNOME image viewer")
     (native-inputs
@@ -11132,7 +11141,8 @@ functionality.")
        ("gtk+:bin" ,gtk+ "bin")                   ; for gtk-update-icon-cache
        ("intltool" ,intltool)
        ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("python" ,python)))
     (inputs
      `(("clutter" ,clutter)
        ("clutter-gst" ,clutter-gst)
@@ -11342,58 +11352,42 @@ higher level porcelain stuff.")
 (define-public gitg
   (package
     (name "gitg")
-    (version "3.32.1")
+    (version "41")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version) "/"
+                                  (version-major version) "/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0npg4kqpwl992fgjd2cn3fh84aiwpdp9kd8z7rw2xaj2iazsm914"))))
+                "0aa6djcf7rjw0q688mfy47k67bbjpnx6aw1xs94abfhgn6gipdkz"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-post-install-partially
-           (lambda _
-             (substitute* "meson_post_install.py"
-               (("'python'") ; there are no python sources to compile
-                (string-append "'" (which "true") "'"))
-               (("gtk-update-icon-cache") (which "true")))
-             #t))
-         (add-after 'unpack 'fix-test-sources
-           (lambda _
-             (substitute* "tests/libgitg/test-commit.vala"
-               (("/bin/bash") (which "bash")))
-             #t))
-         ;; XXX: Remove upon next version bump
-         (add-after 'unpack 'harden
-           (lambda _
-             ;; See <https://gitlab.gnome.org/GNOME/gitg/-/issues/337>
-             (substitute* "libgitg/gitg-date.vala"
-               (("(val\|tzs) == null" all val)
-                (string-append val " == null || " val " == \"\""))
-               (("(val\|tzs) != null" all val)
-                (string-append val " != null && " val " != \"\"")))
-             ;; See <https://gitlab.gnome.org/GNOME/gitg/-/merge_requests/159>
-             (substitute* "gitg/gitg-action-support.vala"
-               (("stash_if_needed\\((.*), Gitg.Ref head" all other)
-                (string-append "stash_if_needed(" other ", Gitg.Ref? head")))))
-         (add-after 'glib-or-gtk-wrap 'wrap-typelib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/gitg")))
-               (wrap-program prog
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-post-install-partially
+            (lambda _
+              (substitute* "meson_post_install.py"
+                (("'python'") ; there are no python sources to compile
+                 (string-append "'" (which "true") "'"))
+                (("gtk-update-icon-cache") (which "true")))))
+          (add-after 'unpack 'fix-test-sources
+            (lambda _
+              (substitute* "tests/libgitg/test-commit.vala"
+                (("/bin/bash") (which "bash")))))
+          (add-after 'glib-or-gtk-wrap 'wrap-typelib
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((prog (string-append #$output "/bin/gitg")))
+                (wrap-program prog
+                  `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
     (inputs
      (list glib
            gsettings-desktop-schemas
+           gspell
            gtk+
-           gtkspell3
-           gtksourceview-3
+           gtksourceview
            json-glib
            libdazzle
            libgee
@@ -11403,12 +11397,13 @@ higher level porcelain stuff.")
            libsoup-minimal-2
            libxml2))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("gtk+:bin" ,gtk+ "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list `(,glib "bin")
+           `(,gtk+ "bin")
+           gobject-introspection
+           intltool
+           pkg-config
+           python
+           vala))
     (synopsis "Graphical user interface for git")
     (description
      "gitg is a graphical user interface for git.  It aims at being a small,
@@ -12411,7 +12406,7 @@ profiler via Sysprof, debugging support, and more.")
 (define-public komikku
   (package
     (name "komikku")
-    (version "0.36.1")
+    (version "0.37.0")
     (source
      (origin
        (method git-fetch)
@@ -12421,7 +12416,7 @@ profiler via Sysprof, debugging support, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0iqis1b248gj1jb1yzw5dcs99bm078hixg9ir0vb961ymwzv2mmc"))))
+         "1ab17xjpfy9ks6dzgcnh2p5n9hl82mi6f8zbaz7s36115dmp4fbf"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index cc76793722..2096f712bb 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -716,8 +716,8 @@ in C/C++.")
 ;; XXXX: Workaround 'snippet' limitations.
 (define computed-origin-method (@@ (guix packages) computed-origin-method))
 
-(define %icecat-version "91.6.0-guix0-preview1")
-(define %icecat-build-id "20220208000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "91.7.0-guix0-preview1")
+(define %icecat-build-id "20220307000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -739,11 +739,11 @@ in C/C++.")
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "1889p8si83dglyblmyj8z5mh600v1klr50swka5mhf9c2lr2i03y"))))
+              "0npf1w6ic14zjn2h5zp8il4l0s61l9mykgnbcinxc47gw6myjflw"))))
 
-         (upstream-icecat-base-version "91.6.0") ; maybe older than base-version
+         (upstream-icecat-base-version "91.7.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
-         (gnuzilla-commit "6c4accb674d2df8be0aabfa03f7679f66bbf70f5")
+         (gnuzilla-commit "76e23c5f1bcebc22f7936baa29f75c6c9415935e")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -755,7 +755,7 @@ in C/C++.")
                                       (string-take gnuzilla-commit 8)))
             (sha256
              (base32
-              "14yivx4zwap2z02gj9waaccigji8ibyq40dxw5smk9w2cmcsdvic"))))
+              "1qvhpyws73f5is7l5isiag6lbqj9gkbdkc9gj29lhhhgla8j6qyg"))))
 
          ;; 'search-patch' returns either a valid file name or #f, so wrap it
          ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@@ -1338,11 +1338,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20220208000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20220308000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "91.6")
+    (version "91.7")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1628,7 +1628,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 "676bfbddd4b3ed77f818b6b07d9d8a79c61be4da"))
+        ,(let ((changeset "39ccd0b9ea033f3292af90667e470b98a79eb8c9"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1637,7 +1637,7 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "1laif9h51s7v8vlqjsd6y2y9267kr7l208xjs00z6462r6kzjvab")))))
+               "0zk6f3yxqq5dn4dh96jmip3xy66n4lnai5fan31kl2l63vfcm1ag")))))
        ("cargo" ,rust "cargo")
        ("clang" ,clang-11)
        ("llvm" ,llvm-11)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 96c030c046..ba0fcee214 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -460,13 +460,13 @@ in the style of communicating sequential processes (@dfn{CSP}).")
             `(("gold" ,binutils-gold)))
            (_ `()))
        ,@(package-native-inputs go-1.4)))
-    (supported-systems %supported-systems)))
+    (supported-systems (delete "powerpc-linux" %supported-systems))))
 
 (define-public go-1.16
   (package
     (inherit go-1.14)
     (name "go")
-    (version "1.16.13")
+    (version "1.16.14")
     (source
      (origin
        (method git-fetch)
@@ -476,10 +476,10 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03f37dspn4h5kqf0nqwmnl858wx6hngnlvbnrjl1ll6ihc5j66jz"))))
+         "16pn7avzmlw28sldx6yv38a1afdwj7jz3x7kjvlagysqrsh5lwwl"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments go-1.14)
-       ((#:tests? _) #t)
+     (substitute-keyword-arguments
+         (strip-keyword-arguments '(#:tests?) (package-arguments go-1.14))
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'remove-unused-sourcecode-generators
@@ -625,7 +625,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
   (package
     (inherit go-1.16)
     (name "go")
-    (version "1.17.6")
+    (version "1.17.7")
     (source
      (origin
        (method git-fetch)
@@ -635,7 +635,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "05k292i9qayfy5wh96z4kjmx1mfd5birnr25vb0blzaam72mcsgw"))))
+         "0d0xybn7sy4za3f0s2ffb6yfv6pjabnk4jyvz7dn3hjqhd5lks7m"))))
     (outputs '("out" "tests")) ; 'tests' contains distribution tests.
     (arguments
      `(#:modules ((ice-9 match)
@@ -1158,6 +1158,28 @@ terminals.")
 proxy protocol.")
     (license license:asl2.0)))
 
+(define-public go-github-com-schachmat-ingo
+  (package
+    (name "go-github-com-schachmat-ingo")
+    (version "0.0.0-20170403011506-a4bdc0729a3f")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/schachmat/ingo")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1gw0kddy7jh3467imsqni86cf9yq7k6vpfc0ywkbwj0zsjsdgd49"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/schachmat/ingo"))
+    (home-page "https://github.com/schachmat/ingo")
+    (synopsis "Go library to persist flags in a INI-like configuration file")
+    (description
+      "Ingo is a Go library helping you to persist flags in a INI-like
+configuration file.")
+    (license license:isc)))
+
 (define-public go-github-com-riobard-go-bloom
   (let ((commit "cdc8013cb5b3eb0efebec85f0e904efccac42df9")
         (revision "0"))
@@ -2107,7 +2129,7 @@ specified by @uref{https://tools.ietf.org/html/rfc2141, IETF RFC 2141}.")
 (define-public go-github.com-jessevdk-go-flags
   (package
     (name "go-github.com-jessevdk-go-flags")
-    (version "1.3.0")
+    (version "1.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2115,11 +2137,19 @@ specified by @uref{https://tools.ietf.org/html/rfc2141, IETF RFC 2141}.")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32
-                "1jk2k2l10lwrn1r3nxdvbs0yz656830j4khzirw8p4ahs7c5zz36"))))
+               (base32 "13ixw1yx4bvcj66lkc8zgwf9j7gkvj686g991gycdsafvdvca0lj"))))
     (build-system go-build-system)
     (arguments
-     '(#:import-path "github.com/jessevdk/go-flags"))
+     '(#:import-path "github.com/jessevdk/go-flags"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             ;; SOURCE_DATE_EPOCH messes with the date on the man page test.
+             (substitute* "src/github.com/jessevdk/go-flags/help_test.go"
+               (("TestMan") "DisabledTestMan")))))))
+    (propagated-inputs
+     (list go-golang-org-x-sys))
     (synopsis "Go library for parsing command line arguments")
     (description
      "The @code{flags} package provides a command line option parser.  The
@@ -3884,6 +3914,28 @@ the Go language.  In particular it provides tools to deal with network address
 translation (NAT), proxies, sockets, and transport layer security (TLS).")
       (license license:asl2.0))))
 
+(define-public go-github-com-docker-go-units
+  (package
+    (name "go-github-com-docker-go-units")
+    (version "0.4.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/docker/go-units")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0k8gja8ql4pqg5rzmqvka42vjfs6rzablak87whcnqba6qxpimvz"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/docker/go-units"))
+    (home-page "https://github.com/docker/go-units")
+    (synopsis "Parse and print size and time units in human-readable format")
+    (description
+     "@code{go-units} is a library to transform human friendly measurements into
+machine friendly values.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-docker-machine
   (let ((commit "7b7a141da84480342357c51838be142bf183b095")
         (revision "0"))
@@ -7859,6 +7911,80 @@ and @code{ioutil} packages that is easy to test.")
 @uref{freedesktop.org}.")
     (license license:expat)))
 
+(define-public go-github-com-xdg-go-stringprep
+  (package
+    (name "go-github-com-xdg-go-stringprep")
+    (version "1.0.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/xdg-go/stringprep")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1df0l5n3c520y9filzz83j42wa5c056jcygmfwhjyf1pq8f6jkv9"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/xdg-go/stringprep"))
+    (propagated-inputs
+     (list go-golang-org-x-text))
+    (home-page "https://github.com/xdg-go/stringprep")
+    (synopsis "Go implementation of RFC-3454 stringprep and RFC-4013 SASLprep")
+    (description
+     "Package stringprep provides data tables and algorithms for RFC-3454,
+including errata.  It also provides a profile for SASLprep as defined in
+RFC-4013.")
+    (license license:asl2.0)))
+
+(define-public go-github-com-xdg-go-pbkdf2
+  (package
+    (name "go-github-com-xdg-go-pbkdf2")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/xdg-go/pbkdf2")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1nipijy5xkdnfyhkp5ryrjzm14si1i2v2xyfmblf84binwkbr8jh"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/xdg-go/pbkdf2"))
+    (home-page "https://github.com/xdg-go/pbkdf2")
+    (synopsis "Go implementation of PBKDF2")
+    (description
+     "Package pbkdf2 implements password-based key derivation using the PBKDF2
+algorithm described in @url{https://rfc-editor.org/rfc/rfc2898.html,RFC 2898}
+and @url{https://rfc-editor.org/rfc/rfc8018.html,RFC 8018}.")
+    (license license:asl2.0)))
+
+(define-public go-github-com-xdg-go-scram
+  (package
+    (name "go-github-com-xdg-go-scram")
+    (version "1.0.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/xdg-go/scram")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1jyv4qgc1dgh3v96pazmgljpp9ij25k8hwn0v4fck18g16i0nccm"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/xdg-go/scram"))
+    (propagated-inputs
+     (list go-github-com-xdg-go-stringprep
+           go-github-com-xdg-go-pbkdf2))
+    (home-page "https://github.com/xdg-go/scram")
+    (synopsis "Go implementation of RFC-5802")
+    (description
+     "Package scram provides client and server implementations of the
+@acronym{Salted Challenge Response Authentication Mechanism, SCRAM} described in
+RFC-5802 and RFC-7677.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-godbus-dbus
   (package
     (name "go-github-com-godbus-dbus")
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index d56e0d3d99..2cc75d57cf 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -21,13 +21,15 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
 ;;; Copyright © 2021 Andy Tai <atai@atai.org>
 ;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
-;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,11 +82,13 @@
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages logging)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages photo)
@@ -102,6 +106,7 @@
   #:use-module (gnu packages stb)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tbb)
+  #:use-module (gnu packages toolkits)
   #:use-module (gnu packages upnp)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
@@ -116,6 +121,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -491,6 +497,7 @@ typically encountered in feature film production.")
        ("libtiff" ,libtiff)
        ("ffmpeg" ,ffmpeg)
        ("fftw" ,fftw)
+       ("gmp" ,gmp) ;; needed for boolean operations on meshes
        ("jack" ,jack-1)
        ("libsndfile" ,libsndfile)
        ("freetype" ,freetype)
@@ -549,7 +556,7 @@ and export to various formats including the format used by Magicavoxel.")
 (define-public assimp
   (package
     (name "assimp")
-    (version "4.1.0")
+    (version "5.2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -558,7 +565,7 @@ and export to various formats including the format used by Magicavoxel.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rhyqfhzifdj7yibyanph3rh13ykw3i98dnn8mz65j780472hw28"))))
+                "1kjifakjnpm89410pw27wq21fn975gfq46kn9zs3h8bryldvvlgk"))))
     (build-system cmake-build-system)
     (inputs
      (list zlib))
@@ -838,76 +845,6 @@ other vector formats such as:
 @end itemize")
     (license license:gpl2+)))
 
-(define-public dear-imgui
-  (package
-    (name "dear-imgui")
-    (version "1.79")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/ocornut/imgui")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0x26igynxp6rlpp2wfc5dr7x6yh583ajb7p23pgycn9vqikn318q"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:make-flags
-       (list (string-append "CC=" ,(cc-for-target))
-             (string-append "PREFIX=" (assoc-ref %outputs "out"))
-             (string-append "VERSION=" ,version))
-       #:tests? #f                      ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-debian-files
-           (lambda* (#:key inputs #:allow-other-keys)
-             (invoke "tar" "xvf" (assoc-ref inputs "debian-files"))
-             (apply invoke "patch" "-Np1" "-i"
-                    (find-files "debian/patches" "\\.patch$"))
-             (substitute* "Makefile"
-               (("<stb/") "<")          ; Guix doesn't use this subdirectory
-               ;; Don't build or install the static library.
-               (("^all: .*") "all: $(SHLIB) $(PCFILE)"))
-             (substitute* (list "imgui.pc.in"
-                                "Makefile")
-               ;; Don't link against a non-existent library.
-               (("-lstb") ""))
-             #t))
-         (delete 'configure)            ; no configure script
-         (replace 'install
-           ;; The default ‘install’ target installs the static library.  Don't.
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "install-shared" "install-header"
-                    make-flags))))))
-    (native-inputs
-     `(("debian-files"
-        ;; Upstream doesn't provide a build system.  Use Debian's.
-        ,(origin
-           (method url-fetch)
-           (uri (string-append "mirror://debian/pool/main/i/imgui/imgui_"
-                               version "+ds-1.debian.tar.xz"))
-           (sha256
-            (base32 "1xhk34pzpha6k5l2j150capq66y8czhmsi04ib09wvb34ahqxpby"))))
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     (list freetype stb-rect-pack stb-truetype))
-    (home-page "https://github.com/ocornut/imgui")
-    (synopsis "Immediate-mode C++ GUI library with minimal dependencies")
-    (description
-     "Dear ImGui is a @acronym{GUI, graphical user interface} library for C++.
-It creates optimized vertex buffers that you can render anytime in your
-3D-pipeline-enabled application.  It's portable, renderer-agnostic, and
-self-contained, without external dependencies.
-
-Dear ImGui is aimed at content creation, visualization, and debugging tools as
-opposed to average end-user interfaces.  Hence it favors simplicity and
-productivity but lacks certain features often found in higher-level libraries.
-It is particularly suited to integration in game engine tooling, real-time 3D
-applications, full-screen applications, and embedded platforms without standard
-operating system features.")
-    (license license:expat)))           ; some examples/ use the zlib licence
-
 (define-public alembic
   (package
     (name "alembic")
@@ -932,10 +869,90 @@ operating system features.")
 distills complex, animated scenes into a set of baked geometric results.")
     (license license:bsd-3)))
 
+(define-public mangohud
+  (package
+    (name "mangohud")
+    (version "0.6.6-1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/flightlessmango/MangoHud/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ka004wxkajmvs5vy60r4ckm7f169c61rrd46w6gywkaqf5yp1ab"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:build-type "release"
+      #:configure-flags
+      #~(list "-Duse_system_vulkan=enabled"
+              "-Duse_system_spdlog=enabled"
+              "-Dwith_xnvctrl=disabled"
+              "-Dappend_libdir_mangohud=false"
+              (string-append "-Dvulkan_datadir="
+                             #$(this-package-input "vulkan-headers") "/share"))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Mangohud tries to build the imgui library as a meson submodule,
+          ;; so we change the dependency to the imgui input instead.
+          (add-after 'unpack 'unbundle-imgui
+            (lambda _
+              (substitute* "meson.build"
+                (("dearimgui_sp = .*")
+                 "")
+                (("dearimgui_sp.get_variable\\('imgui_dep'\\)")
+                 (string-append
+                  "declare_dependency(dependencies: "
+                  "cpp.find_library('imgui'), include_directories: '"
+                  #$(this-package-input "imgui") "/include/imgui')")))))
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/meson.build"
+                (("\\\\\\$LIB")
+                 "lib"))
+              (substitute* "src/loaders/loader_libdrm.cpp"
+                (("libdrm.so.2")
+                 (search-input-file inputs "lib/libdrm.so.2"))
+                (("libdrm_amdgpu.so.1")
+                 (search-input-file inputs "lib/libdrm_amdgpu.so.1")))
+              (substitute* "src/overlay.cpp"
+                (("glxinfo")
+                 (search-input-file inputs "bin/glxinfo")))
+              (substitute* "src/loaders/loader_x11.cpp"
+                (("libX11.so.6")
+                 (search-input-file inputs "lib/libX11.so.6")))
+              (substitute* "src/pci_ids.cpp"
+                (("/usr/share/hwdata/pci.ids")
+                 (search-input-file inputs "share/hwdata/pci.ids")))
+              (substitute* "src/dbus.cpp"
+                (("libdbus-1.so.3")
+                 (search-input-file inputs "lib/libdbus-1.so.3"))))))))
+    (inputs
+     (list dbus
+           glslang
+           `(,hwdata "pci")
+           imgui-1.86
+           libdrm
+           libx11
+           mesa
+           mesa-utils
+           python-mako
+           spdlog
+           vulkan-headers
+           vulkan-loader))
+    (native-inputs (list pkg-config python))
+    (home-page "https://github.com/flightlessmango/MangoHud/")
+    (synopsis "Vulkan and OpenGL overlay for monitoring performance and hardware")
+    (description "MangoHud is a Vulkan and OpenGL overlay for monitoring
+frames per second (FPS), temperatures, CPU/GPU load and more.")
+    (license license:expat)))
+
 (define-public ogre
   (package
     (name "ogre")
-    (version "1.12.9")
+    (version "13.3.1")
     (source
      (origin
        (method git-fetch)
@@ -944,24 +961,22 @@ distills complex, animated scenes into a set of baked geometric results.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0b0pwh31nykrfhka6jqwclfx1pxzhj11vkl91951d63kwr5bbzms"))))
+        (base32 "157vpfzivg2wf349glyd0cpbyaw1j3fm4nggban70pghql3x48kb"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'unpack-dear-imgui
+         (add-before 'configure 'unpack-imgui
            (lambda* (#:key inputs #:allow-other-keys)
-             (copy-recursively (assoc-ref inputs "dear-imgui-source")
-                               "../dear-imgui-source")
-             #t))
+             (copy-recursively (assoc-ref inputs "imgui-source")
+                               "../imgui-source")))
          (add-before 'configure 'pre-configure
            ;; CMakeLists.txt forces a CMAKE_INSTALL_RPATH value.  As
            ;; a consequence, we cannot suggest ours in configure flags.  Fix
            ;; it.
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (substitute* "CMakeLists.txt"
-               (("set\\(CMAKE_INSTALL_RPATH .*") ""))
-             #t)))
+               (("set\\(CMAKE_INSTALL_RPATH .*") "")))))
        #:configure-flags
        (let* ((out (assoc-ref %outputs "out"))
               (runpath
@@ -969,29 +984,26 @@ distills complex, animated scenes into a set of baked geometric results.")
                                   (string-append out "/lib/OGRE"))
                             ";")))
          (list (string-append "-DCMAKE_INSTALL_RPATH=" runpath)
-               "-DIMGUI_DIR=../dear-imgui-source"
+               "-DIMGUI_DIR=../imgui-source"
                "-DOGRE_BUILD_DEPENDENCIES=OFF"
                "-DOGRE_BUILD_TESTS=TRUE"
                "-DOGRE_INSTALL_DOCS=TRUE"
                "-DOGRE_INSTALL_SAMPLES=TRUE"
                "-DOGRE_INSTALL_SAMPLES_SOURCE=TRUE"))))
-    (native-inputs
-     `(("boost" ,boost)
-       ("dear-imgui-source" ,(package-source dear-imgui))
-       ("doxygen" ,doxygen)
-       ("googletest" ,googletest-1.8)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     (list font-dejavu
-           freeimage
-           freetype
-           glu
-           libxaw
-           libxrandr
-           pugixml
-           sdl2
-           tinyxml
-           zziplib))
+    (native-inputs `(("doxygen" ,doxygen)
+                     ("imgui-source" ,(package-source imgui-1.86))
+                     ("googletest" ,googletest)
+                     ("pkg-config" ,pkg-config)
+                     ("python" ,python)))
+    (inputs (list freeimage
+                  freetype
+                  libxaw
+                  libxrandr
+                  libxt
+                  mesa
+                  pugixml
+                  sdl2
+                  zlib))
     (synopsis "Scene-oriented, flexible 3D engine written in C++")
     (description
      "OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented,
@@ -1919,7 +1931,7 @@ Some feature highlights:
 (define-public openxr
   (package
     (name "openxr")
-    (version "1.0.20")
+    (version "1.0.22")
     (source
      (origin
        (method git-fetch)
@@ -1933,7 +1945,7 @@ Some feature highlights:
            ;; Delete bundled jsoncpp.
            (delete-file-recursively "src/external/jsoncpp")))
        (sha256
-        (base32 "1jd7jjxlrdi8kjnmn3sad7dgb4h48dbxryfb9snf0kifn47bi20m"))))
+        (base32 "1l6wygazgvd8lbhqk60iim2l2h35gxpsn0y9a9f8q72sqpfianky"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index ced9d621aa..0abe22d637 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
@@ -2144,7 +2144,7 @@ and routines to assist in editing internationalized text.")
 (define-public girara
   (package
     (name "girara")
-    (version "0.3.6")
+    (version "0.3.7")
     (source
      (origin
        (method git-fetch)
@@ -2153,9 +2153,9 @@ and routines to assist in editing internationalized text.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0whwwj31fxfaf4r4qvxb4kl3mj05xj3n9c6nzdn46r30bkg9z4dw"))))
+        (base32 "0k93pi0lkf941vanvh1habm6n5wl1n63726j5kqxh34wdlv4mv4s"))))
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("check" ,check-0.14)
+                     ("check" ,check)
                      ("gettext" ,gettext-minimal)
                      ("glib:bin" ,glib "bin")
                      ("xorg-server" ,xorg-server-for-tests)))
@@ -2869,3 +2869,53 @@ excellent pavucontrol.")
     ;; XXX: 'setup.py' says "GPLv2" but nothing says "version 2 only".  Is
     ;; GPLv2+ intended?
     (license license:gpl2)))
+
+(define-public gromit-mpx
+  (package
+    (name "gromit-mpx")
+    (version "1.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bk138/gromit-mpx.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0p3jivard85cvand9c5ksy1qwp8zcaczfd55b4xppg4xliqfcafs"))))
+    (build-system cmake-build-system)
+    (arguments `(#:tests? #f)) ; No tests.
+    (native-inputs (list pkg-config))
+    (inputs (list gtk+ libappindicator))
+    (home-page "https://github.com/bk138/gromit-mpx")
+    (synopsis "On-screen annotation tool")
+    (description
+     "Gromit-MPX is an on-screen annotation tool that works with any
+Unix desktop environment under X11 as well as Wayland.")
+    (license license:gpl2+)))
+
+(define-public webp-pixbuf-loader
+  (package
+    (name "webp-pixbuf-loader")
+    (version "0.0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/aruiz/webp-pixbuf-loader")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kshsz91mirjmnmv796nba1r8jg8a613anhgd38dhh2zmnladcwn"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list (string-append "-Dgdk_pixbuf_moduledir="
+                             #$output "/lib/gdk-pixbuf-2.0/2.10.0/loaders"))))
+    (inputs (list gdk-pixbuf glib gtk+ libwebp))
+    (native-inputs (list pkg-config))
+    (home-page "https://github.com/aruiz/webp-pixbuf-loader")
+    (synopsis "WebP GdkPixbuf loader library")
+    (description "Webp-pixbuf-loader is a WebP format loader of GdkPixbuf.")
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index b75687cd3c..63fbf3c89f 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -1819,7 +1819,7 @@ user which package sets would they like to install from it.")
 (define-public guile-wisp
   (package
     (name "guile-wisp")
-    (version "1.0.6")
+    (version "1.0.7")
     (source (origin
               (method hg-fetch)
               (uri (hg-reference
@@ -1828,7 +1828,7 @@ user which package sets would they like to install from it.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0df0vch2p6qymz3f96clrkl2gphjk6x7fbya236yzxc07hkz2j3g"))))
+                "0fxngiy8dmryh3gx4g1q7nnamc4dpszjh130g6d0pmi12ycxd2y9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index f74a389da5..79680a2c29 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Taylan Kammer <taylan.kammer@gmail.com>
-;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com>
 ;;;
@@ -398,12 +398,27 @@ without requiring the source code to be rewritten.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys"))))
+                "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys"))
+              (patches (search-patches "guile-cross-compilation.patch"))))
     (arguments
      (substitute-keyword-arguments (package-arguments guile-3.0)
        ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to
-       ;; its multi-stage build process for cross-module inlining.
-       ((#:parallel-build? _ #f) #t)))))
+       ;; its multi-stage build process for cross-module inlining, except when
+       ;; cross-compiling.
+       ((#:parallel-build? _ #f)
+        (not (%current-target-system)))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ,@(if (target-ppc32?)
+               `((replace 'adjust-bootstrap-flags
+                   (lambda _
+                     ;; Upstream knows about suggested solution.
+                     ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
+                     ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977223#46
+                     (substitute* "stage0/Makefile.in"
+                       (("^GUILE_OPTIMIZATIONS.*")
+                        "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
+               '())))))))
 
 (define-public guile-3.0/fixed
   ;; A package of Guile that's rarely changed.  It is the one used in the
@@ -805,7 +820,16 @@ type system, elevating types to first-class status.")
                         "guile-git-adjust-for-libgit2-1.2.0.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags '("GUILE_AUTO_COMPILE=0")))     ; to prevent guild warnings
+     `(#:make-flags '("GUILE_AUTO_COMPILE=0")       ; to prevent guild warnings
+       ;; https://gitlab.com/guile-git/guile-git/-/issues/20
+       ,@(if (target-ppc32?)
+           `(#:phases
+             (modify-phases %standard-phases
+               (add-after 'unpack 'skip-failing-test
+                 (lambda _
+                   (substitute* "Makefile.am"
+                     ((".*tests/blob\\.scm.*") ""))))))
+           '())))
     (native-inputs
      (list pkg-config autoconf automake texinfo guile-3.0 guile-bytestructures))
     (inputs
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index a3ce90f75e..60b9a9f17b 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2022 Marcel Kupiec <formbi@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lxqt)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages pciutils)
@@ -53,6 +55,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -180,6 +183,62 @@ It can be used to generate a system overview log which can be later used for
 support.")
     (license license:gpl2+)))
 
+(define-public ckb-next
+  (let ((commit "967f44018a9d46efa7203fad38518e9381eba0f3")
+        (revision "0"))
+    (package
+      (name "ckb-next")
+      (version (git-version "0.4.4" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ckb-next/ckb-next")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0bfpah0zgmyhbi6payymr3p98nfnwqr2xqxgkyzvccz72z246316"))
+                (file-name (git-file-name name version))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:modules ((guix build cmake-build-system) (guix build qt-utils)
+                    (guix build utils))
+         #:imported-modules (,@%cmake-build-system-modules
+                             (guix build qt-utils))
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'patch-lib-udev
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (substitute* "src/daemon/cmake_install.cmake"
+                 (("/lib/udev")
+                  (string-append (assoc-ref outputs "out")
+                                 "/lib/udev")))))
+           (add-after 'install 'wrap-qt
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-qt-program "ckb-next"
+                                  #:output out
+                                  #:inputs inputs)))))))
+      (native-inputs (list qttools pkg-config))
+      (inputs (list qtbase-5
+                    zlib
+                    libdbusmenu-qt
+                    quazip
+                    pulseaudio
+                    libxcb
+                    xcb-util-wm
+                    qtx11extras
+                    eudev
+                    bash-minimal))
+      (home-page "https://github.com/ckb-next/ckb-next")
+      (synopsis "Driver for Corsair keyboards and mice")
+      (description
+       "ckb-next is a driver for Corsair keyboards and mice.  It aims to bring
+the features of Corsair's proprietary software to Linux-based operating
+systems.  It already supports much of the same functionality, including full
+RGB animations.")
+      (license license:gpl2))))
+
 (define-public ddcutil
   (package
     (name "ddcutil")
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 3ab2f471f6..ecd1a93317 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -41,7 +41,6 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system haskell)
   #:use-module (gnu packages)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages haskell)
@@ -252,7 +251,6 @@ unlit literate code files; and an option to turn off macro-expansion.")
            ghc
            ncurses
            perl
-           libiconv
            ghc-network
            ghc-network-uri))
     (native-inputs
@@ -306,14 +304,14 @@ to @code{cabal repl}).")
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "10.20220127")
+    (version "10.20220222")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
-        (base32 "06s80fa91cnn2r5n6d52lqqp3hpc4ksag82razs7sj19iwixan2w"))))
+        (base32 "119c7l2vqv19ja3pg3adaivsmrmbyg03a88j2msnzcgyhddggf8z"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 34dd2556be..70a4eccce6 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -603,8 +603,9 @@ Haskell's Web Application Interface (WAI).")
     (arguments
      `(;; XXX: As of 0.0.4, one property test ("Identical output as Blaze")
        ;; fails on i686-linux.
-       #:tests? ,(not (string-prefix? "i686" (or (%current-target-system)
-                                                 (%current-system))))
+       #:tests? ,(and (not (%current-target-system))
+                      (not (string-prefix? "i686" (or (%current-target-system)
+                                                      (%current-system)))))
        #:cabal-revision
        ("3" "15hg352id2f4x0dnvv47bdiz6gv5hp5a2mki9yzmhc7ajpk31mdd")))
     (native-inputs
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a42baebde6..0ce47e0902 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8731,6 +8731,27 @@ easily work with command-line options.")
 command line options in Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-optparse-applicative-0.15.1.0
+  (package
+    (inherit ghc-optparse-applicative)
+    (name "ghc-optparse-applicative")
+    (version "0.15.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/optparse-applicative/optparse-applicative-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "1ws6y3b3f6hsgv0ff0yp6lw4hba1rps4dnvry3yllng0s5gngcsd"))))
+    (inputs
+      (list ghc-transformers-compat ghc-ansi-wl-pprint))
+    (native-inputs (list ghc-quickcheck))
+    (arguments
+      `(#:cabal-revision
+        ("1" "0zmhqkd96v2z1ilhqdkd9z4jgsnsxb8yi2479ind8m5zm9363zr9")))))
+
 (define-public ghc-jira-wiki-markup
   (package
     (name "ghc-jira-wiki-markup")
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 647b078dfd..effc6eeb1b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
@@ -123,14 +123,14 @@ top of CLISP.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0fkgxgsd2iqxvwcgnad1702kradwlbcal6rxdrgb22vd6dnc3i8l"))))
+         "0fkgxgsd2iqxvwcgnad1702kradwlbcal6rxdrgb22vd6dnc3i8l"))
+       (patches (search-patches "nhc98-c-update.patch"))))
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"))
     (arguments
      (list
       #:tests? #false                   ;there is no test target
       #:system "i686-linux"
-      #:implicit-inputs? #false
       #:parallel-build? #false          ;not supported
       #:strip-binaries? #false          ;doesn't work
       #:make-flags '(list "all-gcc")
@@ -170,36 +170,6 @@ top of CLISP.")
                       "--ccoption="
                       "--ldoption="
                       "--install"))))))
-    (native-inputs
-     `(("findutils" ,findutils)
-       ("tar" ,tar)
-       ("bzip2" ,bzip2)
-       ("gzip" ,gzip)
-       ("xz" ,xz)
-       ("diffutils" ,diffutils)
-       ("file" ,file)
-       ("gawk" ,gawk)
-
-       ("make" ,gnu-make)
-       ("sed" ,sed)
-       ("grep" ,grep)
-       ("coreutils" ,coreutils)
-       ("bash" ,bash-minimal)
-
-       ("libc" ,glibc-2.2.5)
-       ("gcc-wrapper"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'gcc-2.95-wrapper))
-       ("gcc"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'gcc-mesboot0))
-       ("binutils"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'binutils-mesboot))
-       ("kernel-headers" ,linux-libre-headers)))
     (home-page "https://www.haskell.org/nhc98")
     (synopsis "Nearly a Haskell Compiler")
     (description
@@ -223,12 +193,11 @@ is itself quite fast.")
        (sha256
         (base32
          "0ar4nxy4cr5vwvfj71gmc174vx0n3lg9ka05sa1k60c8z0g3xp1q"))
-       (patches (list (search-patch "ghc-4.patch")))))
+       (patches (search-patches "ghc-4.patch"))))
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"))
     (arguments
      `(#:system "i686-linux"
-       #:implicit-inputs? #f
        #:strip-binaries? #f
        #:phases
        (modify-phases %standard-phases
@@ -236,8 +205,8 @@ is itself quite fast.")
            (lambda* (#:key inputs #:allow-other-keys)
              (delete-file "configure")
              (delete-file "config.sub")
-             (install-file (string-append (assoc-ref inputs "automake")
-                                          "/share/automake-1.16/config.sub")
+             (install-file (search-input-file inputs
+                                              "/bin/config.sub")
                            ".")
 
              ;; Avoid dependency on "happy"
@@ -253,8 +222,8 @@ GhcLibWays=u
 #HsLibsFor=hugs
 # Setting this leads to building the interpreter.
 GhcHcOpts=-DDEBUG
-GhcRtsHcOpts=-optc-DDEBUG -optc-D__HUGS__ -unreg -optc-g
-GhcRtsCcOpts=-optc-DDEBUG -optc-g -optc-D__HUGS__
+GhcRtsHcOpts=-optc-DDEBUG -optc-D__HUGS__ -unreg -optc-g -optc-D_GNU_SOURCE=1
+GhcRtsCcOpts=-optc-DDEBUG -optc-g -optc-D__HUGS__ -optc-D_GNU_SOURCE=1
 SplitObjs=NO
 ")))
 
@@ -277,8 +246,8 @@ SplitObjs=NO
              ;; this old linker understands.
              (substitute* "ghc/interpreter/Makefile"
                (("-lbfd -liberty")
-                (string-append (assoc-ref inputs "binutils") "/lib/libbfd.a "
-                               (assoc-ref inputs "binutils") "/lib/libiberty.a")))
+                (string-append (search-input-file inputs "/lib/libbfd.a") " "
+                               (search-input-file inputs "/lib/libiberty.a"))))
 
              (let ((bash (which "bash")))
                (substitute* '("configure.in"
@@ -301,7 +270,13 @@ SplitObjs=NO
                (setenv "CONFIG_SHELL" bash)
                (setenv "SHELL" bash))
 
-             (setenv "CPP" (string-append (assoc-ref inputs "gcc") "/bin/cpp"))
+             ;; The 'hscpp' script invokes GCC 2.95's 'cpp' (RAWCPP), which
+             ;; segfaults unless passed '-x c'.
+             (substitute* "mk/config.mk.in"
+               (("-traditional")
+                "-traditional -x c"))
+
+             (setenv "CPP" (which "cpp"))
              (invoke "autoreconf" "--verbose" "--force")))
          (add-before 'configure 'configure-gmp
            (lambda* (#:key build inputs outputs #:allow-other-keys)
@@ -313,6 +288,12 @@ SplitObjs=NO
            (lambda* (#:key build inputs outputs #:allow-other-keys)
              (let ((bash (which "bash"))
                    (out  (assoc-ref outputs "out")))
+               (call-with-output-file "config.cache"
+                 (lambda (port)
+                   ;; GCC 2.95 fails to deal with anonymous unions in glibc's
+                   ;; 'struct_rusage.h', so skip that.
+                   (display "ac_cv_func_getrusage=no\n" port)))
+
                (invoke bash "./configure"
                        "--enable-hc-boot"
                        (string-append "--prefix=" out)
@@ -320,14 +301,15 @@ SplitObjs=NO
                        (string-append "--host=" build)))))
          (add-before 'build 'make-boot
            (lambda _
+             ;; CLK_TCK has been removed from recent libc.
+             (substitute* "ghc/interpreter/nHandle.c"
+               (("CLK_TCK") "sysconf (_SC_CLK_TCK)"))
+
              ;; Only when building with more recent GCC
              (when #false
                ;; GCC 2.95 is fine with these comments, but GCC 4.6 is not.
                (substitute* "ghc/rts/universal_call_c.S"
-                 (("^# .*") ""))
-               ;; CLK_TCK has been removed
-               (substitute* "ghc/interpreter/nHandle.c"
-                 (("CLK_TCK") "sysconf(_SC_CLK_TCK)")))
+                 (("^# .*") "")))
 
              ;; Only when using more recent Perl
              (when #false
@@ -364,45 +346,21 @@ SplitObjs=NO
                (copy-recursively "ghc/interpreter/lib" lib)
                (install-file "ghc/interpreter/nHandle.so" lib)))))))
     (native-inputs
-     `(("findutils" ,findutils)
-       ("tar" ,tar)
-       ("bzip2" ,bzip2)
-       ("xz" ,xz)
-       ("diffutils" ,diffutils)
-       ("file" ,file)
-       ("gawk" ,gawk)
-       ("autoconf" ,autoconf-2.13)
-       ("automake" ,automake)
-       ("bison" ,bison) ;for parser.y
+     (list autoconf-2.13
+           bison                                  ;for parser.y
+           config
 
-       ("make" ,gnu-make)
-       ("sed" ,sed)
-       ("grep" ,grep)
-       ("coreutils" ,coreutils)
-       ("bash" ,bash-minimal)
+           ;; Needed to support lvalue casts.
+           gcc-2.95
 
-       ("libc" ,glibc-2.2.5)
-       ;; Lazily resolve binutils-mesboot in (gnu packages commencement) to
-       ;; avoid a cycle.
-       ("gcc-wrapper"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'gcc-2.95-wrapper))
-       ("gcc"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'gcc-mesboot0))
-       ("binutils"
-        ,(module-ref (resolve-interface
-                      '(gnu packages commencement))
-                     'binutils-mesboot))
-       ("kernel-headers" ,linux-libre-headers)
+           ;; Use an older assembler to work around this error in GMP:
+           ;;   Error: `%edx' not allowed with `testb'
+           binutils-2.33
 
-       ;; TODO: Perl used to allow setting $* to enable multi-line
-       ;; matching.  If we want to use a more recent Perl we need to
-       ;; patch all expressions that require multi-line matching.  Hard
-       ;; to tell.
-       ("perl" ,perl-5.14)))
+           ;; TODO: Perl used to allow setting $* to enable multi-line
+           ;; matching.  If we want to use a more recent Perl we need to patch
+           ;; all expressions that require multi-line matching.  Hard to tell.
+           perl-5.14))
     (home-page "https://www.haskell.org/ghc")
     (synopsis "The Glasgow Haskell Compiler")
     (description
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index d6ce00e15d..1dcec3ea3c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -1,9 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -48,8 +48,7 @@
   #:use-module (gnu packages xorg) ; libpciaccess
   #:use-module (guix git-download)
   #:export (hurd-system?
-            hurd-target?
-            hurd-triplet?))
+            hurd-target?))
 
 (define (hurd-target?)
   "Return true if the cross-compilation target or the current system is
@@ -410,8 +409,8 @@ settrans --create /servers/socket/1 /hurd/pflocal
 # parse multiboot arguments
 for i in \"$@\"; do
     case $i in
-        (--system=*)
-            system=${i#--system=}
+        (gnu.system=*)
+            system=${i#gnu.system=}
             ;;
     esac
 done
diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm
index b945018ba8..2320250148 100644
--- a/gnu/packages/i2p.scm
+++ b/gnu/packages/i2p.scm
@@ -32,7 +32,7 @@
 (define-public i2pd
   (package
     (name "i2pd")
-    (version "2.38.0")
+    (version "2.41.0")
     (source
      (origin
        (method git-fetch)
@@ -41,7 +41,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1a35grcfw5a9dsj0rnm2i86fjf4px96xbnjj3hkril7hv5jvl37k"))))
+        (base32 "0kh03lb4m8fvlfvq06d4hgwmk43pk7yp7n7y36kb2vplhrjrn2kx"))))
     (build-system cmake-build-system)
     (inputs
      (list boost miniupnpc openssl zlib))
@@ -69,7 +69,7 @@
                                    "./tests")
                  (with-directory-excursion "tests"
                    (substitute* "Makefile"
-                     (("../libi2pd/") (string-append source "/libi2pd/")))
+                     (("../libi2pd") (string-append source "/libi2pd")))
                    (apply invoke "make" "all"
                           `(,@(if parallel-tests?
                                 `("-j" ,(number->string
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 641b5a52da..6ab6cf3307 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019, 2020, 2022 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2020 Peng Mei Yu <pengmeiyu@riseup.net>
@@ -42,6 +42,7 @@
 (define-module (gnu packages image-viewers)
   #: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 utils)
@@ -49,6 +50,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages backup)
@@ -255,7 +257,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
 (define-public feh
   (package
     (name "feh")
-    (version "3.7.2")
+    (version "3.8")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -263,7 +265,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0n42kj18ldlcmrmk5qir9gs9irdl1vz9913n8p941x8cfb98ywc4"))))
+                "1a9bsq5j9sl2drzkab0hdhnamalpaszw9mz2prz6scrr5dak8g3z"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -275,17 +277,21 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
              "inotify=1")))
     (native-inputs
      (list perl perl-test-command))
-    (inputs (list imlib2
-                  curl
+    (inputs (list curl
+                  imlib2
                   libexif
                   libpng
-                  libxt
                   libx11
-                  libxinerama))
+                  libxinerama
+                  libxt))
     (native-search-paths
      ;; Feh allows overriding the libcurl builtin CA path (unset in Guix)
      ;; with the same variable as the `curl` command line HTTP tool.
-     (package-native-search-paths curl))
+     (list (search-path-specification
+            (variable "CURL_CA_BUNDLE")
+            (file-type 'regular)
+            (separator #f)                             ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
     (synopsis "Fast and light imlib2-based image viewer")
     (description
       "feh is an X11 image viewer aimed mostly at console users.
@@ -745,7 +751,7 @@ For PDF support, install the @emph{mupdf} package.")
 (define-public qview
   (package
     (name "qview")
-    (version "4.0")
+    (version "5.0")
     (source
      (origin
        (method git-fetch)
@@ -754,25 +760,32 @@ For PDF support, install the @emph{mupdf} package.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15n9cq7w3ckinnx38hvncxrbkv4qm4k51sal41q4y0pkvhmafhnr"))))
-    (build-system gnu-build-system)
+        (base32 "1ck4mvhzc4m72n010n43d8ipjczzk6ya637rgfyi7bzb4gv0f3am"))))
+    (build-system qt-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "qmake" (string-append "PREFIX=" out)))))
-         ;; Don't phone home or show "Checking for updates..." in the About
-         ;; menu.
-         (add-before 'build 'disable-auto-update
-           (lambda _
-             (substitute* "src/qvaboutdialog.cpp"
-               (("qvApp->checkUpdates\\(\\);") "")
-               (("updateText\\(\\);") ""))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key outputs #:allow-other-keys)
+              (invoke "qmake" (string-append "PREFIX=" #$output))))
+          ;; Don't phone home or show "Checking for updates..." in the About
+          ;; menu.
+          (add-before 'build 'disable-auto-update
+            (lambda _
+              (substitute* "src/qvaboutdialog.cpp"
+                (("qvApp->checkUpdates\\(\\);") "")
+                (("updateText\\(\\);") ""))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (with-directory-excursion "tests"
+                  (invoke "qmake" "tests.pro")
+                  (invoke "make" "tests"))))))))
+    (native-inputs
+     (list qttools))
     (inputs
-     (list qtbase-5 qtsvg qtimageformats))
+     (list qtbase-5 qtimageformats qtsvg))
     (home-page "https://interversehq.com/qview/")
     (synopsis "Convenient and minimal image viewer")
     (description "qView is a Qt image viewer designed with visually
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index f40ae12ccb..d45a14ec14 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2020 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
@@ -564,9 +564,7 @@ maximum quality factor.")
     (build-system gnu-build-system)
     (inputs
      (list libpng jasper))
-    (arguments
-     `(#:tests? #t)) ; No tests.
-    (home-page "http://icns.sourceforge.net/")
+    (home-page "https://icns.sourceforge.io/")
     (synopsis "Library for handling Mac OS icns resource files")
     (description
      "Libicns is a library for the manipulation of Mac OS IconFamily resource
@@ -1361,7 +1359,10 @@ channels.")
     (build-system cmake-build-system)
     (arguments
      '(#:test-target "tests"
-       #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON")
+       #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON"
+                               ;; darktable needs BMFF to support
+                               ;; CR3 files.
+                               "-DEXIV2_ENABLE_BMFF=ON")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'delete-static-libraries
@@ -1688,6 +1689,8 @@ is hereby granted."))))
                                     ;; 32-bit and 64-bit
                                     ((string-prefix? "powerpc" target)
                                      `("-DCMAKE_SYSTEM_PROCESSOR=powerpc"))
+                                    ((string-prefix? "riscv64" target)
+                                     `("-DCMAKE_SYSTEM_PROCESSOR=riscv64"))
                                     (else '()))
                                    '())))
        ,@(if (%current-target-system)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 72f9fd5c96..dcfe8defff 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -190,14 +191,14 @@ SILC and ICB protocols via plugins.")
 (define-public weechat
   (package
     (name "weechat")
-    (version "3.4")
+    (version "3.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://weechat.org/files/src/weechat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0k5rgdy0c4dnxvsqjzyrr5czz1lmfk1vrsqkkvj8v24y0b3xrlvw"))))
+                "1rza39xiv24qkjfyw4waxlzhjdl2x9qdvcd6m44cpysxml4q223y"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -259,7 +260,7 @@ using a mouse.  It is customizable and extensible with plugins and scripts.")
 (define-public srain
   (package
     (name "srain")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method git-fetch)
@@ -268,7 +269,7 @@ using a mouse.  It is customizable and extensible with plugins and scripts.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xjk3fa3fkmsczif1bzcmi79k4z3jfdgcljfdiyn4iv5bh778swc"))))
+        (base32 "16nsxicixp7194bkiiyj7zrg05lhcp0xblqsbv6dq1lxd5wd3i96"))))
     (build-system meson-build-system)
     (arguments
      `(#:tests? #f ;there are no tests
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index c453ac432a..68d338de8d 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -1,11 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019, 2020, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Frank Pursel <frank.pursel@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,9 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages node)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages uglifyjs)
@@ -34,10 +37,11 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system ant)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system trivial)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system minify)
+  #:use-module (guix build-system trivial)
   #:use-module (guix utils))
 
 (define-public cjson
@@ -592,7 +596,10 @@ Worker, but it can be used in other JavaScript environments.")
                (base32
                 "15gichl8wi6yxag2ps723nxrgyan15976dzsnvw9h9py8sbyyzjn"))))
     (build-system minify-build-system)
-    (arguments `(#:javascript-files '("src/selectize.js")))
+    ;; We use the standalone file instead of src/selectize.js because the
+    ;; former includes the source code for MicroEvent and other modules that
+    ;; Selectize refers to.
+    (arguments `(#:javascript-files '("dist/js/standalone/selectize.js")))
     (home-page "https://selectize.github.io/selectize.js/")
     (synopsis "Hybrid widget between a textbox and <select> box")
     (description "Selectize is the hybrid of a textbox and @code{<select>}
@@ -788,3 +795,98 @@ project: add @file{duktape.c}, @file{duktape.h}, and @file{duk_config.h} to
 your build, and use the Duktape API to call ECMAScript functions from C code
 and vice versa.")
     (license license:expat)))
+
+(define-public rhino
+    (package
+      (name "rhino")
+      (version "1.7.7.2")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mozilla/rhino.git")
+                      (commit "935942527ff434b205e797df4185518e5369466e")))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "09i4yr98hs6855fs7fhgmrpiwpr90lhxdv2bvfj97nn4rv1d7wl8"))
+                (modules '((guix build utils)))
+                (snippet '(begin
+                            ;; Remove benchmark testing
+                            (delete-file-recursively "testsrc/benchmarks")
+                            (delete-file-recursively
+                             "testsrc/org/mozilla/javascript/benchmarks")
+                            ;; Identify bundled jars
+                            (format #t "~%~a~%" "Sourced jars")
+                            (for-each (lambda (f)
+                                        (format #t "~/Deleting: ~a~%" f)
+                                        (delete-file f))
+                                      (find-files "." "\\.jar$"))))))
+      (build-system ant-build-system)
+      (inputs (list bash-minimal))
+      (native-inputs (list java-junit java-hamcrest-core java-snakeyaml))
+      (arguments
+       `(#:phases
+         (modify-phases
+             %standard-phases
+           (replace 'check
+             (lambda* (#:key tests? inputs native-inputs
+                       #:allow-other-keys)
+               (when tests?
+                 (setenv "ANT_OPTS" "-Doffline=true")
+                 (let ((junit-lib
+                        (assoc-ref inputs "java-junit"))
+                       (hamcrest-lib
+                        (assoc-ref inputs "java-hamcrest-core"))
+                       (snakeyaml-lib
+                        (assoc-ref inputs "java-snakeyaml")))
+                   (with-directory-excursion "testsrc"
+                     (substitute* "build.xml"
+                       (("<pathelement location=\"\\$\\{xbean.jar\\}\" */>" all)
+                        (string-append "<!-- " all " -->"))
+                       (("<pathelement location=\"\\$\\{jsr173.jar\\}\" */>" all)
+                        (string-append "<!-- " all " -->"))
+                       (("<pathelement path=\"\\$\\{coverage.classes.dir\\}\" */>"
+                         all)
+                        (string-append "<!-- " all " -->"))
+                       (("<pathelement path=\"lib/emma.jar\"/>" all)
+                        (string-append "<!-- " all " -->"))
+                       (("<pathelement path=\"lib/junit.jar\" ?/>")
+                        (string-append
+                         "<fileset dir=\"" junit-lib "\" includes=\"**/*.jar\"/>"))
+                       (("<pathelement path=\"lib/hamcrest.jar\" ?/>")
+                        (string-append "<fileset dir=\"" hamcrest-lib
+                                       "\" includes=\"**/*.jar\"/>"))
+                       (("<pathelement path=\"lib/snakeyaml.jar\" ?/>")
+                        (string-append "<fileset dir=\"" snakeyaml-lib
+                         "\" includes=\"**/*.jar\"/>"))
+                       ;; Disabling instrumentation.
+                       (("(<target name=\"junit\" depends=\"junit-compile),.*"
+                         all pre)
+                        (string-append pre "\">"))))
+                   (invoke "ant" "junit")))))
+           (replace 'install
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (let* ((out (assoc-ref outputs "out"))
+                               (pkg+ver (string-append ,name ,version))
+                               (bin (string-append out "/bin"))
+                               (rhino (string-append bin "/rhino"))
+                               (man (string-append out "/share/man/man1")))
+                          (mkdir-p bin)
+                          (install-file "man/rhino.1" man)
+                          (install-file (string-append "build/" pkg+ver
+                                                       "/js.jar")
+                                        (string-append out "/share/java"))
+                          (with-output-to-file rhino
+                            (lambda _
+                              (format #t "#!~a~%~a -jar ~a $@~%"
+                                      (search-input-file inputs "/bin/bash")
+                                      (search-input-file inputs "/bin/java")
+                                      (string-append out "/share/java/js.jar"))))
+                          (chmod rhino #o755)))))))
+      (home-page "https://mozilla.github.io/rhino")
+      (synopsis "Javascript implemented in Java")
+      (description
+       "Rhino implements ECMAScript, also known as JavaScript, in Java as
+specified in the fifth edition of ECMA-262.")
+      (license license:mpl2.0)))
+
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 2fcc4cf83e..5d45c07115 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -139,7 +139,7 @@ ANSI escape codes to another format.")
          (base32 "1g0kyzcdykgs247j72jpc2qqall696jwgb3hnn4cxmbi8bkf7wpk"))))
     (build-system julia-build-system)
     (arguments
-     `(#:parallel-tests? #f))
+     (list #:parallel-tests? #f))
     (home-page "https://github.com/JuliaTesting/Aqua.jl")
     (synopsis "Automated quality assurance for Julia packages")
     (description "@acronym{Aqua.jl, Auto QUality Assurance for Julia packages},
@@ -165,7 +165,7 @@ provides functions to run a few automatable checks for Julia packages.")
      ;; Expression: @inferred(ArrayInterface.size(Rnr)) === (StaticInt(4),)
      ;; Evaluated: (static(2),) === (static(4),)
      ;; Disable as stopgap.
-     `(#:tests? ,(not (target-x86-32?))))
+     (list #:tests? (not (target-x86-32?))))
     (propagated-inputs
      (list julia-ifelse
            julia-requires
@@ -335,24 +335,25 @@ the entries on the bands.")
         (base32 "1xz3kdrphp4b158pg7dwkiry49phs2fjjpdvk1hjpww5ykxacks8"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-tests-i686
-                 (lambda _
-                   (substitute* "test/GroupsTests.jl"
-                     (("@test sprint\\(show, g1\\)")
-                      "@test_broken sprint(show, g1)")
-                     (("@test sprint\\(show, g1; context = :boundto => 1\\)")
-                      "@test_broken sprint(show, g1; context = :boundto => 1)")
-                     (("@test sprint\\(show, g1; context = :limit => false\\)")
-                      "@test_broken sprint(show, g1; context = :limit => false)")
-                     (("@test @test_deprecated") "@test_broken"))
-                   (substitute* "test/ExecutionTests.jl"
-                     ;; Evaluated: 12 == 8
-                     (("@test @ballocated\\(Ref\\(1\\)\\)")
-                      "@test_broken @ballocated(Ref(1))"))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-tests-i686
+                (lambda _
+                  (substitute* "test/GroupsTests.jl"
+                    (("@test sprint\\(show, g1\\)")
+                     "@test_broken sprint(show, g1)")
+                    (("@test sprint\\(show, g1; context = :boundto => 1\\)")
+                     "@test_broken sprint(show, g1; context = :boundto => 1)")
+                    (("@test sprint\\(show, g1; context = :limit => false\\)")
+                     "@test_broken sprint(show, g1; context = :limit => false)")
+                    (("@test @test_deprecated") "@test_broken"))
+                  (substitute* "test/ExecutionTests.jl"
+                    ;; Evaluated: 12 == 8
+                    (("@test @ballocated\\(Ref\\(1\\)\\)")
+                     "@test_broken @ballocated(Ref(1))")))))
+          #~%standard-phases)))
     (propagated-inputs
      (list julia-json))
     (home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
@@ -362,6 +363,34 @@ code easy by supplying a framework for writing and running groups of
 benchmarks as well as comparing benchmark results.")
     (license license:expat)))
 
+(define-public julia-bfloat16s
+  ;; Not tagged upstream
+  (let ((commit "ef6051e4308ed0c02f10168b99d226237e0ae33c")
+        (version "0.2.0"))
+    (package
+      (name "julia-bfloat16s")
+      (version version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/JuliaMath/BFloat16s.jl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "16sr578k4i47lhziri47nvspdrsni2wc1qjhs6hzffh9si6a7jfq"))))
+      (build-system julia-build-system)
+      (home-page "https://github.com/JuliaMath/BFloat16s.jl")
+      (synopsis "Define BFloat16 data type")
+      (description "This package defines the @code{BFloat16} data type.  The
+only currently available hardware implementation of this datatype are Google's
+Cloud TPUs.  As such, this package is suitable to evaluate whether using TPUs
+would cause precision problems for any particular algorithm, even without
+access to TPU hardware.  Note that this package is designed for functionality,
+not performance, so this package should be used for precision experiments
+only, not performance experiments.")
+      (license license:expat))))
+
 (define-public julia-bioalignments
   (package
     (name "julia-bioalignments")
@@ -377,15 +406,16 @@ benchmarks as well as comparing benchmark results.")
         (base32 "1wf6qgsada59r2fykxfj9hcr635wl8maqxbd3w8qpa01k9glxa0k"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-test
-           (lambda _
-             ;; Test fails because an unexpected type representation from
-             ;; BioSequences.  The aligned value is correct though.
-             (substitute* "test/runtests.jl"
-               (("@test sprint\\(show, aln\\)")
-                "@test_broken sprint(show, aln)")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-test
+            (lambda _
+              ;; Test fails because an unexpected type representation from
+              ;; BioSequences.  The aligned value is correct though.
+              (substitute* "test/runtests.jl"
+                (("@test sprint\\(show, aln\\)")
+                 "@test_broken sprint(show, aln)")))))))
     (propagated-inputs
      (list julia-biogenerics
            julia-biosequences
@@ -470,13 +500,14 @@ sequences.")
         (base32 "1222rwdndi777lai8a6dwrh35i5rgmj75kcrhn8si72sxgz0syjm"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("\\@testset \\\"Range.*" all)
-                (string-append all " return\n"))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+        (add-after 'unpack 'adjust-tests
+          (lambda _
+            (substitute* "test/runtests.jl"
+              (("\\@testset \\\"Range.*" all)
+               (string-append all " return\n"))))))))
     (propagated-inputs
      (list julia-automa))
     (home-page "https://github.com/BioJulia/BioSymbols.jl")
@@ -500,14 +531,15 @@ and amino acids that are used ny otherBioJulia packages.")
          (base32 "1by26036fk9mawmcgqxpwizgbs398v9p6vrbsgg7h6llqn3q9iw1"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-64bit?)
-           '(%standard-phases)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* "test/test_blockarrays.jl"
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      (if (target-64bit?)
+          #~%standard-phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'fix-tests-int32-i686
+                (lambda _
+                  (substitute* "test/test_blockarrays.jl"
+                    (("Int64") "Int32"))))))))
     (propagated-inputs
      (list julia-arraylayouts
            julia-fillarrays))
@@ -599,9 +631,10 @@ structures.")
     ;; freeze, see
     ;; https://travis-ci.org/BioJulia/BufferedStreams.jl/jobs/491050182
     (arguments
-     '(#:tests? #f
-       #:julia-package-name "BufferedStreams"
-       #:julia-package-uuid "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"))
+     (list
+      #:tests? #f
+      #:julia-package-name "BufferedStreams"
+      #:julia-package-uuid "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"))
     (propagated-inputs
      (list julia-compat))
     (home-page "https://github.com/BioJulia/BufferedStreams.jl")
@@ -665,6 +698,25 @@ variables, both with unordered (nominal variables) and ordered categories
 (ordinal variables), optionally with missing values.")
     (license license:expat)))
 
+(define-public julia-cenum
+  (package
+    (name "julia-cenum")
+    (version "0.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaInterop/CEnum.jl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0h079mggvv420bw87j8s3hsgk7vavjgm4j1cvk0pnzrrh8ib1381"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaInterop/CEnum.jl")
+    (synopsis "C-compatible enum for Julia")
+    (description "This package provides a C-compatible enum for Julia.")
+    (license license:expat)))
+
 (define-public julia-chainrules
   (package
     (name "julia-chainrules")
@@ -767,15 +819,6 @@ dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible
        (sha256
         (base32 "0xm603nylkwk4bzx66zv1g3syzrvn3jh9spdx7kvcvgszzyrrgh4"))))
     (build-system julia-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'reset-gzip-timestamps 'make-files-writable
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each make-file-writable
-                         (find-files out "\\.gz$"))
-               #t))))))
     (propagated-inputs
      (list julia-transcodingstreams
            julia-zlib-jll))
@@ -968,27 +1011,28 @@ way.")
          (base32 "1b23p0zk8dx2sf01cnw177mqci7qd81b9s32ixz9clsh0r0icl1b"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'fix-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("option.toml") "test/option.toml"))))
-         (add-after 'link-depot 'dont-use-exproniconlite
-           (lambda _
-             (substitute* '("Project.toml"
-                            "src/Configurations.jl"
-                            "test/runtests.jl")
-               (("ExproniconLite") "Expronicon"))
-             (substitute* "Project.toml"
-               (("55351af7-c7e9-48d6-89ff-24e801d99491")
-                "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636"))))
-         ,@(if (target-64bit?)
-             '()
-             '((add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* "test/runtests.jl"
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'fix-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("option.toml") "test/option.toml"))))
+          (add-after 'link-depot 'dont-use-exproniconlite
+            (lambda _
+              (substitute* '("Project.toml"
+                             "src/Configurations.jl"
+                             "test/runtests.jl")
+                (("ExproniconLite") "Expronicon"))
+              (substitute* "Project.toml"
+                (("55351af7-c7e9-48d6-89ff-24e801d99491")
+                 "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636"))))
+          #$@(if (target-64bit?)
+                 '()
+                 '((add-after 'unpack 'fix-tests-int32-i686
+                     (lambda _
+                       (substitute* "test/runtests.jl"
+                         (("Int64") "Int32")))))))))
     (propagated-inputs
      (list julia-crayons
            julia-expronicon
@@ -1113,21 +1157,21 @@ dependency on it.")
          (base32 "1bk0amrghgjrkyn1mm4ac23swwbgszl1d0qyl9137qj5zvv9dasp"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-failing-test
-           (lambda _
-             ;; Tests with non-standard colors.
-             (substitute* "test/show.jl"
-               (("test (sprint\\(show, df, context=:color=>true)" _ test)
-                (string-append "test_nowarn " test)))
-             (substitute* "test/io.jl"
-               (("testset \\\"improved.*" all)
-                (string-append all "return\n")))
-             (substitute* "test/join.jl"
-               (("test (levels\\(outerjoin\\(B)" _ test)
-                (string-append "test_nowarn " test)))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-failing-test
+            (lambda _
+              ;; Tests with non-standard colors.
+              (substitute* "test/show.jl"
+                (("test (sprint\\(show, df, context=:color=>true)" _ test)
+                 (string-append "test_nowarn " test)))
+              (substitute* "test/io.jl"
+                (("testset \\\"improved.*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/join.jl"
+                (("test (levels\\(outerjoin\\(B)" _ test)
+                 (string-append "test_nowarn " test))))))))
     (propagated-inputs
      (list julia-dataapi
            julia-invertedindices
@@ -1173,18 +1217,19 @@ Julia from R or Python.")
            julia-orderedcollections))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-test-i686
-                 (lambda _
-                   ;; The evaluation returns the correct value,
-                   ;; Evaluated: "Accumulator(1 => 3, 3 => 4)"
-                   ;; but, for some reasons, is considered as failed.
-                   (substitute* "test/test_accumulator.jl"
-                     (("@test sprint\\(show,Accumulator\\(1 => 3, 3 => 4\\)\\)")
-                      "@test_broken sprint(show, Accumulator(1 => 3, 3 => 4))"))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-test-i686
+                (lambda _
+                  ;; The evaluation returns the correct value,
+                  ;; Evaluated: "Accumulator(1 => 3, 3 => 4)"
+                  ;; but, for some reasons, is considered as failed.
+                  (substitute* "test/test_accumulator.jl"
+                    (("@test sprint\\(show,Accumulator\\(1 => 3, 3 => 4\\)\\)")
+                     "@test_broken sprint(show, Accumulator(1 => 3, 3 => 4))")))))
+          #~%standard-phases)))
     (home-page "https://github.com/JuliaCollections/DataStructures.jl")
     (synopsis "Julia module providing different data structures")
     (description "This package implements a variety of data structures,
@@ -1228,17 +1273,17 @@ without having to take direct dependencies.")
          (base32 "15j3hrqq6nazn533bfsvg32xznacbzsl303j1qs48av59ppnvhhv"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f      ; Tests need upgrading with newer Julia version.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-known-failing-tests
-           (lambda _
-             ;; See upstream report:
-             ;; https://github.com/queryverse/DataValues.jl/issues/83
-             (substitute* "test/array/test_reduce.jl"
-               ((".*DataValue\\(mapreduce.*") "")
-               ((".*DataValue\\(method\\(f.*") ""))
-             #t)))))
+     (list
+      #:tests? #f      ; Tests need upgrading with newer Julia version.
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-known-failing-tests
+            (lambda _
+              ;; See upstream report:
+              ;; https://github.com/queryverse/DataValues.jl/issues/83
+              (substitute* "test/array/test_reduce.jl"
+                ((".*DataValue\\(mapreduce.*") "")
+                ((".*DataValue\\(method\\(f.*") "")))))))
     (propagated-inputs
      (list julia-datavalueinterfaces))
     (home-page "https://github.com/queryverse/DataValues.jl")
@@ -1307,17 +1352,18 @@ dictionaries in Julia, for improved productivity and performance.")
          (base32 "1yqd9wg4z15k42mrp4y14j2x0sq7yrjhm5zpqklrw6w6j1c367ig"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-flakey-tests
-           (lambda _
-             ;; Some combination of these tests fail nondeterministically
-             ;; each of the times this package is built.
-             (substitute* "test/test_dists.jl"
-               (("test dyz ≥") "test_nowarn dyz ≥")
-               (("test dist\\(y, x") "test_nowarn dist(y, x")
-               (("test dist\\(z, x") "test_nowarn dist(z, x")
-               (("test dist\\(z, y") "test_nowarn dist(z, y")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-flakey-tests
+            (lambda _
+              ;; Some combination of these tests fail nondeterministically
+              ;; each of the times this package is built.
+              (substitute* "test/test_dists.jl"
+                (("test dyz ≥") "test_nowarn dyz ≥")
+                (("test dist\\(y, x") "test_nowarn dist(y, x")
+                (("test dist\\(z, x") "test_nowarn dist(z, x")
+                (("test dist\\(z, y") "test_nowarn dist(z, y")))))))
     (propagated-inputs
      (list julia-statsapi))
     (native-inputs
@@ -1346,7 +1392,7 @@ straightforward loop implementation.")
          (base32 "0fy4kfnfacyfmlly6nqxn77dk2gqw80b69zb4m1i0i39zv3cpqfb"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))        ; Tests try to read SSL certificates.
+     (list #:tests? #f))        ; Tests try to read SSL certificates.
     (home-page "https://juliadocs.github.io/DocStringExtensions.jl/latest/")
     (synopsis "Extensions for Julia's docsystem")
     (description "This package provides a collection of useful extensions for
@@ -1373,22 +1419,23 @@ valuable enough at this time.")
          (base32 "00ai3c24i3fkn5plmavampcxm0ijhwk0v5cn9xwm7rvbjnnvaaam"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/Deps.jl"
-               (("pip install")
-                (string-append (search-input-file inputs "bin/pip")
-                               " install")))))
-         (add-after 'link-depot 'remove-javascript-downloads
-           (lambda _
-             (substitute* "src/Writers/HTMLWriter.jl"
-               (("cdnjs.cloudflare.com") "example.com"))
-             ;; Removing the javascript downloads causes these tests fail.
-             (substitute* "test/examples/tests.jl"
-               ((".*Main\\.examples_html_doc.*") "")
-               ((".*Main\\.examples_html_mathjax3_doc.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/Deps.jl"
+                (("pip install")
+                 (string-append (search-input-file inputs "bin/pip")
+                                " install")))))
+          (add-after 'link-depot 'remove-javascript-downloads
+            (lambda _
+              (substitute* "src/Writers/HTMLWriter.jl"
+                (("cdnjs.cloudflare.com") "example.com"))
+              ;; Removing the javascript downloads causes these tests fail.
+              (substitute* "test/examples/tests.jl"
+                ((".*Main\\.examples_html_doc.*") "")
+                ((".*Main\\.examples_html_mathjax3_doc.*") "")))))))
     (propagated-inputs
      (list julia-ansicoloredprinters
            julia-docstringextensions
@@ -1458,7 +1505,7 @@ valuable enough at this time.")
          (base32 "05p57p8xlkn42m1lv9gq4hl96vp7hpj19d51p828ai1rbpcpi3a6"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Tests require network.
+     (list #:tests? #f))    ; Tests require network.
     (inputs
      ;; We don't want to propagate the bootstrap version.
      ;; Cycle with Documenter.jl in later versions.
@@ -1557,13 +1604,14 @@ stressing the robustness of differentiation tools.")
          (base32 "05vr5wbzqpchnb96b3pmn67x196mbfnkv7r9bdlz3gm56if4awk5"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'adjust-test-suite
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ;; Seems to not play nicely with SpecialFunctions
-               ((".*isempty.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'adjust-test-suite
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ;; Seems to not play nicely with SpecialFunctions
+                ((".*isempty.*") "")))))))
     (propagated-inputs
      (list julia-calculus
            julia-nanmath
@@ -1591,13 +1639,14 @@ combinations of dual numbers with predefined Julia numeric types.")
          (base32 "0py46kxl702r8pw3v7x4cqllf7yc91b0dr7vb60xh2qi7d6y3jc7"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'adjust-test-suite
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ;; Seems to not play nicely with Julia-1.6.
-               ((".*basic.jl.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'adjust-test-suite
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ;; Seems to not play nicely with Julia-1.6.
+                ((".*basic.jl.*") "")))))))
     (propagated-inputs
      (list julia-arrayinterface))
     (home-page "https://github.com/ChrisRackauckas/EllipsisNotation.jl")
@@ -1643,13 +1692,14 @@ before (or after)\".")
          (base32 "0h8aaynqlxrkn8575k5vqmhzil4vvxchhf0bcxa6zwawp558gj2y"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-network-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ;; This test tries to access the Julia package registry.
-               ((".*expand\\.jl.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-network-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ;; This test tries to access the Julia package registry.
+                ((".*expand\\.jl.*") "")))))))
     (propagated-inputs
      (list julia-mlstyle))
     (native-inputs
@@ -1721,26 +1771,27 @@ need the ffmpeg binaries + executables, and don't want the overhead of
          (base32 "1b18x43i737g5q41n9818xbnc2pgd98q1m6yw3h29yri0clg4gfx"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'reset-gzip-timestamps)
-         (add-after 'link-depot 'skip-network-tests
-           (lambda _
-             ;; These tests try to download audio/video files.
-             (substitute* "test/query.jl"
-               (("testset.*(MP4|OGG|MATROSKA).*" all)
-                (string-append all "return\n")))
-             (substitute* "test/loadsave.jl"
-               (("testset.*CSVFiles.*" all)
-                (string-append all "return\n")))
-             ;; This test tries to download a Julia package.
-             (substitute* "test/error_handling.jl"
-               (("testset.*Not installed.*" all)
-                (string-append all "return\n")))
-             ;; This test tries to write to the store.
-             ;; (Error says can't find User 0)
-             (substitute* "test/runtests.jl"
-               ((".*test_mimesave.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'reset-gzip-timestamps)
+          (add-after 'link-depot 'skip-network-tests
+            (lambda _
+              ;; These tests try to download audio/video files.
+              (substitute* "test/query.jl"
+                (("testset.*(MP4|OGG|MATROSKA).*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/loadsave.jl"
+                (("testset.*CSVFiles.*" all)
+                 (string-append all "return\n")))
+              ;; This test tries to download a Julia package.
+              (substitute* "test/error_handling.jl"
+                (("testset.*Not installed.*" all)
+                 (string-append all "return\n")))
+              ;; This test tries to write to the store.
+              ;; (Error says can't find User 0)
+              (substitute* "test/runtests.jl"
+                ((".*test_mimesave.*") "")))))))
     (propagated-inputs
      (list julia-requires))
     (native-inputs
@@ -1771,7 +1822,7 @@ high-level support for formatted files (in contrast with Julia's low-level
          (base32 "136wm4ik6isrdanmpi4gdr1qw0qhr15i925qzjxbawk5hnyzwng9"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with JLSO.jl
+     (list #:tests? #f))    ; Cycle with JLSO.jl
     (home-page "https://github.com/rofinn/FilePathsBase.jl")
     (synopsis "Filesystem path types in Julia")
     (description "@code{FilePathsBase.jl} provides a type based approach to
@@ -1817,14 +1868,14 @@ following types: @code{Eye}, @code{Fill}, @code{Ones}, @code{Zeros},
          (base32 "105f6r0hq97n9mxf1nacmz94dpca66vzqj5p3zh4h0brshmggqnq"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; We don't want to run all the tests; the Downstream tests
-             ;; try to download the package registry.
-             (setenv "GROUP" "Core")
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; We don't want to run all the tests; the Downstream tests
+              ;; try to download the package registry.
+              (setenv "GROUP" "Core"))))))
     (propagated-inputs
      (list julia-arrayinterface
            julia-requires
@@ -1856,16 +1907,17 @@ types and sparsity.")
         (base32 "09nsf9cgk49yrvprflnhd9h5rrgs280rgj8sad3csghxdx6jqk5c"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-test-i686
-                 (lambda _
-                   ;; Machine Precision incorrectly handled
-                   (substitute* "test/methods.jl"
-                     (("@test central_fdm\\(15, 5, adapt=2\\)\\(exp, 1.0\\)")
-                      "@test_broken central_fdm(15, 5, adapt=2)(exp, 1.0)"))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-test-i686
+                (lambda _
+                  ;; Machine Precision incorrectly handled
+                  (substitute* "test/methods.jl"
+                    (("@test central_fdm\\(15, 5, adapt=2\\)\\(exp, 1.0\\)")
+                     "@test_broken central_fdm(15, 5, adapt=2)(exp, 1.0)")))))
+          #~%standard-phases)))
     (inputs
      (list julia-benchmarktools))
     (propagated-inputs
@@ -1893,14 +1945,14 @@ using finite difference.")
         (base32 "0j0n40n04q9sk68wh9jq90m6c67k4ws02k41djjzkrqmpzv4rcdi"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'disable-failing-test
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "test/fixed.jl"
-               ;; A deprecation warning is not thrown
-               (("@test_logs.*:warn" all) (string-append "# " all)))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'disable-failing-test
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "test/fixed.jl"
+                ;; A deprecation warning is not thrown
+                (("@test_logs.*:warn" all) (string-append "# " all))))))))
     (propagated-inputs
      (list julia-compat))
     (home-page "https://github.com/JuliaMath/FixedPointNumbers.jl")
@@ -1953,7 +2005,7 @@ c-style numerical formatting.")
      ;; Expression: dual_isapprox(FDNUM ^ PRIMAL, exp(PRIMAL * log(FDNUM)))
      ;; ERROR: LoadError: LoadError: There was an error during testing
      ;; Disable as stopgap.
-     `(#:tests? ,(not (target-x86-32?))))
+     (list #:tests? (not (target-x86-32?))))
     (inputs                             ;required for tests
      (list julia-calculus
            julia-difftests))
@@ -1987,13 +2039,14 @@ differentiation (AD).")
          (base32 "02jilpjr7px6138dx2w7ixricvfgsxqdk84d9dgviranibhnjcxa"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'adjust-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("testset \\\"Abstract.*" all)
-                (string-append all "return\n"))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'adjust-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("testset \\\"Abstract.*" all)
+                 (string-append all "return\n"))))))))
     (home-page "https://github.com/yuyichao/FunctionWrappers.jl")
     (synopsis "Type stable and efficient wrapper of arbitrary functions")
     (description "This package provides a type stable and efficient wrapper of
@@ -2040,12 +2093,13 @@ update step.")
          (base32 "07sv88c472n6w4x7diy952igbcfm1s104ysnnvprld83312siw06"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-failing-test
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ((".*RPLE.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-failing-test
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ((".*RPLE.*") "")))))))
     (home-page "https://github.com/JunoLab/FuzzyCompletions.jl")
     (synopsis "Fuzzy completion provider for Julia")
     (description
@@ -2067,12 +2121,13 @@ update step.")
          (base32 "0ndwypa397z3pwzdgc3s9plaqlqf63g3d4px5pvym5psgr6lnm3l"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'adjust-test-suite
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ((".*lapack.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'adjust-test-suite
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ((".*lapack.*") "")))))))
     (native-inputs
      (list julia-quaternions))
     (home-page "https://github.com/JuliaLinearAlgebra/GenericLinearAlgebra.jl")
@@ -2098,20 +2153,21 @@ algebra routines written in Julia (except for optimized BLAS).")
          (base32 "12x6lxzxm91y3k6s9dam46dq5hrby5sr0gy0fdfnp0xhjzdy2j0d"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'adjust-test-suite
-           (lambda _
-             (substitute* "test/complex.jl"
-               ;; expected Array{Int32,1}, got a value of type Array{Int64,1}
-               (("A = _example") "#A = _example")
-               (("schurtest\\(A,20\\)") ""))
-             (substitute* "test/runtests.jl"
-               ;; Test errors relating to liblapack.so
-               ((".*complex\\.jl.*") "")
-               ((".*real\\.jl.*") "")
-               ;; GenericSVD is deprecated upstream
-               ((".*gordschur\\.jl.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'adjust-test-suite
+            (lambda _
+              (substitute* "test/complex.jl"
+                ;; expected Array{Int32,1}, got a value of type Array{Int64,1}
+                (("A = _example") "#A = _example")
+                (("schurtest\\(A,20\\)") ""))
+              (substitute* "test/runtests.jl"
+                ;; Test errors relating to liblapack.so
+                ((".*complex\\.jl.*") "")
+                ((".*real\\.jl.*") "")
+                ;; GenericSVD is deprecated upstream
+                ((".*gordschur\\.jl.*") "")))))))
     (home-page "https://github.com/RalphAS/GenericSchur.jl")
     (synopsis "Schur decomposition of matrices with generic element types")
     (description "The Schur decomposition is the workhorse for eigensystem
@@ -2135,24 +2191,25 @@ matrices the Schur form is often more useful.")
          (base32 "057j3hjpli3q5b98cqkpi4p10x2k9pyksrz62hjmv1kb5qzdvhsj"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'remove-earcut
-           (lambda _
-             (substitute* '("Project.toml"
-                            "src/GeometryBasics.jl")
-               ((".*EarCut.*") ""))))
-         (add-after 'link-depot 'skip-incompatible-test
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("@testset.*MetaT and heterogeneous data.*" all)
-                (string-append all "return\n")))))
-         ,@(if (target-64bit?)
-             '()
-             '((add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* "test/runtests.jl"
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'remove-earcut
+            (lambda _
+              (substitute* '("Project.toml"
+                             "src/GeometryBasics.jl")
+                ((".*EarCut.*") ""))))
+          (add-after 'link-depot 'skip-incompatible-test
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("@testset.*MetaT and heterogeneous data.*" all)
+                 (string-append all "return\n")))))
+          #$@(if (target-64bit?)
+                 '()
+                 '((add-after 'unpack 'fix-tests-int32-i686
+                     (lambda _
+                       (substitute* "test/runtests.jl"
+                         (("Int64") "Int32")))))))))
     (propagated-inputs
      (list julia-itertools
            julia-staticarrays
@@ -2169,6 +2226,32 @@ finite elements analysis, Geo applications, and general geometry manipulations
 - while offering a Julian API, that still allows performant C-interop.")
     (license license:expat)))
 
+(define-public julia-gpuarrays
+  (package
+    (name "julia-gpuarrays")
+    (version "8.1.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaGPU/GPUArrays.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "129q8m94b2xq3vij28pkb7dry3r7qbiqrz72a26ma9kilcr35gk4"))))
+    (build-system julia-build-system)
+    (inputs
+     (list julia-adapt))
+    (home-page "https://github.com/JuliaGPU/GPUArrays.jl")
+    (synopsis "Reusable GPU array functionality for various GPU backends")
+    (description "This package is the counterpart of AbstractArray interface,
+but for GPU array types.  It provides functionality and tooling to speed-up
+development of new GPU array types.  This package is not intended for end
+users; instead, you should use one of the packages that builds on
+@code{GPUArrays.jl}, such as @code{CUDA.jl}, @code{oneAPI.jl} or
+@code{AMDGPU.jl}.")
+    (license license:expat)))
+
 (define-public julia-gr
   (package
     (name "julia-gr")
@@ -2252,35 +2335,35 @@ library for parsing HTML.")
         (base32 "1jsyk3mhnwj4h19cxclx26igdqdrw51fd3k1hgav0nm67dy4cxyk"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'disable-network-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("\"async.jl") "# \"async.jl")
-               (("\"client.jl") "# \"client.jl"))
-             (substitute* "test/aws4.jl"
-               (("@testset.*HTTP.request with AWS authentication.*" all)
-                (string-append all "return\n")))
-             (substitute* "test/insert_layers.jl"
-               (("@testset.*Inserted final layer runs handler.*" all)
-                (string-append all "return\n")))
-             (substitute* "test/multipart.jl"
-               (("@testset \"Setting of Content-Type.*" all)
-                (string-append all "return\n"))
-               (("@testset \"Deprecation of .*" all)
-                (string-append all "return\n")))
-             (substitute* "test/websockets.jl"
-               (("@testset.*External Host.*" all)
-                (string-append all "return\n")))
-             (substitute* "test/messages.jl"
-               (("@testset.*Read methods.*" all)
-                (string-append all "return\n"))
-               (("@testset.*Body - .*" all)
-                (string-append all "return\n"))
-               (("@testset.*Write to file.*" all)
-                (string-append all "return\n")))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'disable-network-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("\"async.jl") "# \"async.jl")
+                (("\"client.jl") "# \"client.jl"))
+              (substitute* "test/aws4.jl"
+                (("@testset.*HTTP.request with AWS authentication.*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/insert_layers.jl"
+                (("@testset.*Inserted final layer runs handler.*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/multipart.jl"
+                (("@testset \"Setting of Content-Type.*" all)
+                 (string-append all "return\n"))
+                (("@testset \"Deprecation of .*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/websockets.jl"
+                (("@testset.*External Host.*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/messages.jl"
+                (("@testset.*Read methods.*" all)
+                 (string-append all "return\n"))
+                (("@testset.*Body - .*" all)
+                 (string-append all "return\n"))
+                (("@testset.*Write to file.*" all)
+                 (string-append all "return\n"))))))))
     (propagated-inputs
      (list julia-inifile
            julia-mbedtls
@@ -2384,7 +2467,7 @@ such arrays easy via traits.")
          (base32 "1n63f2zs6ail9pcl7rzgv3l0z8v1idjsaza3zgvgy7iacxsdpcj2"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ImageMagick.jl.
+     (list #:tests? #f))    ; Cycle with ImageMagick.jl.
     (propagated-inputs
      (list julia-imagecore
            julia-reexport))
@@ -2415,7 +2498,7 @@ dependencies.")
          (base32 "0h9m3pl3wic1jrgaqkdifz24cya5vxd3m6qdmm37pxg2y2ii2vcq"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ImageMagick.jl.
+     (list #:tests? #f))    ; Cycle with ImageMagick.jl.
     (propagated-inputs
      (list julia-abstractffts
            julia-colors
@@ -2457,7 +2540,7 @@ of packages designed to support image processing and computer vision.")
          (base32 "0bbpzi7bv8jdiggq1wmcn67vnf96qagvwg0fk95s125wy5980xsl"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ReferenceTests.jl.
+     (list #:tests? #f))    ; Cycle with ReferenceTests.jl.
     (propagated-inputs
      (list julia-crayons
            julia-imagebase
@@ -2495,18 +2578,18 @@ be downscaled to fit into the size of your active terminal session.")
          (base32 "05vzv4jsj3l9pv6yrix28hlw7wnag0mqdfjwv8shn4x71hcfxl1p"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-failing-test
-           (lambda _
-             ;; These tests try to download from the imagemagick.org
-             (substitute* "test/runtests.jl"
-               ((".*readremote\\.jl.*") ""))
-             ;; Tests with the color gray are hard.
-             (substitute* "test/constructed_images.jl"
-               (("test (b == aa)" _ test) (string-append "test_nowarn " test))
-               (("test (B == map)" _ test) (string-append "test_nowarn " test)))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-failing-test
+            (lambda _
+              ;; These tests try to download from the imagemagick.org
+              (substitute* "test/runtests.jl"
+                ((".*readremote\\.jl.*") ""))
+              ;; Tests with the color gray are hard.
+              (substitute* "test/constructed_images.jl"
+                (("test (b == aa)" _ test) (string-append "test_nowarn " test))
+                (("test (B == map)" _ test) (string-append "test_nowarn " test))))))))
     (propagated-inputs
      (list julia-fileio
            julia-imagecore
@@ -2573,7 +2656,7 @@ information about the detector used to acquire the image.")
          (base32 "00wq3ab8y6nyhxwc5lpz9dnslsmcr1vg3cjdkh7wb7k6a8bw98mh"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; cycle with ImageMagick.jl.
+     (list #:tests? #f))    ; cycle with ImageMagick.jl.
     (propagated-inputs
      (list julia-fileio
            julia-imagebase
@@ -2608,7 +2691,7 @@ inline presentation of greyscale or color images.")
          (base32 "0i8gw68hljshsy9wdl5mrpbb31irhmayqyglsxi7jwm88iy9pxhm"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ImageMagick.jl.
+     (list #:tests? #f))    ; Cycle with ImageMagick.jl.
     (propagated-inputs
      (list julia-axisalgorithms
            julia-colorvectorspace
@@ -2645,8 +2728,9 @@ rotation, and other spatial transformations of arrays.")
     (build-system julia-build-system)
     ;; Package without Project.toml
     (arguments
-     '(#:julia-package-name "IndexableBitVectors"
-       #:julia-package-uuid "1cb3b9ac-1ffd-5777-9e6b-a3d42300664d"))
+     (list
+      #:julia-package-name "IndexableBitVectors"
+      #:julia-package-uuid "1cb3b9ac-1ffd-5777-9e6b-a3d42300664d"))
     (home-page "https://github.com/BioJulia/IndexableBitVectors.jl")
     (synopsis "Bit vectors operations with extremely fast speed")
     (description "This package exports following operations over bit vectors
@@ -2725,14 +2809,14 @@ indexed images, sometimes called \"colormap images\" or \"paletted images.\"")
          (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'remove-timezones.jl
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("using TimeZones.*") "")
-               ((".*infextendedtime.*") ""))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'remove-timezones.jl
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("using TimeZones.*") "")
+                ((".*infextendedtime.*") "")))))))
     (propagated-inputs
      (list julia-requires))
     (native-inputs
@@ -2778,12 +2862,13 @@ interfaces with @file{.ini} files.")
          (base32 "1236c20k388qlh7k74mhf7hkbn0vf7ss8b1rgh1a6aj0234ayfnc"))))
     (build-system julia-build-system)
     (arguments
-     `(#:parallel-tests? #f
-       ;; XXXX: Unexpected failures for i686, e.g.,
-       ;; Got exception outside of a @test
-       ;; OverflowError: 96908232 * 106943408 overflowed for type Int32
-       ;; Disable as stopgap.
-       #:tests? ,(not (target-x86-32?))))
+     (list
+      #:parallel-tests? #f
+      ;; XXXX: Unexpected failures for i686, e.g.,
+      ;; Got exception outside of a @test
+      ;; OverflowError: 96908232 * 106943408 overflowed for type Int32
+      ;; Disable as stopgap.
+      #:tests? (not (target-x86-32?))))
     (propagated-inputs
      (list julia-axisalgorithms
            julia-offsetarrays
@@ -2818,19 +2903,20 @@ and exceptional performance.")
          (base32 "0gsz89cd3iygbl5qr389k9vwpg7w1nk0s90g25nsmk34y9hifxag"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-test-i686
-                 (lambda _
-                   (substitute* "test/runtests.jl"
-                     ;; For some reason, the output is correct but the test
-                     ;; is considered as failed:
-                     ;; Expression: duration(ClosedInterval(A, B)) ≡ 60
-                     ;; Evaluated: 60 ≡ 60
-                     (("@test duration\\(ClosedInterval")
-                      "@test_broken duration(ClosedInterval"))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-test-i686
+                (lambda _
+                  (substitute* "test/runtests.jl"
+                    ;; For some reason, the output is correct but the test
+                    ;; is considered as failed:
+                    ;; Expression: duration(ClosedInterval(A, B)) ≡ 60
+                    ;; Evaluated: 60 ≡ 60
+                    (("@test duration\\(ClosedInterval")
+                     "@test_broken duration(ClosedInterval")))))
+          #~%standard-phases)))
     (propagated-inputs
      (list julia-ellipsisnotation))
     (native-inputs
@@ -3045,6 +3131,34 @@ and printing JSON documents.")
 focus on speed and slick struct mapping.")
     (license license:expat)))
 
+(define-public julia-juno
+  (package
+    (name "julia-juno")
+    (version "0.8.4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JunoLab/Juno.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "02ryj5blnrmck3jisrpwn1x563i7rsg65d7zms52njsvv499gygk"))))
+    (build-system julia-build-system)
+    (inputs
+     (list julia-media))
+    (home-page "https://github.com/JunoLab/Juno.jl")
+    (synopsis "Integrated Development Environment (IDE) for Julia")
+    (description "This package provides tools to help you develop code.  Juno
+is built on the Atom text editor.  Juno consists of both Julia and Atom
+packages in order to add Julia-specific enhancements, such as syntax
+highlighting, a plot pane, integration with Julia's debugger, a console for
+running code, and much more.
+
+Consider that the package is “maintenance-only mode” and only receives bug
+fixes.  The Julia IDE effort is pointed to extension for VSCode.")
+    (license license:expat)))
+
 (define-public julia-latexstrings
   (package
     (name "julia-latexstrings")
@@ -3082,14 +3196,15 @@ equations in string literals in the Julia language.")
          (base32 "17rhlrmgfvdw8w62pg32ikr9j4xy2ylr7mx7ar0hnpzryv929rp5"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-64bit?)
-           '(%standard-phases)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* "test/multests.jl"
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      (if (target-64bit?)
+          #~%standard-phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'fix-tests-int32-i686
+                (lambda _
+                  (substitute* "test/multests.jl"
+                    (("Int64") "Int32"))))))))
     (propagated-inputs
      (list julia-arraylayouts
            julia-fillarrays
@@ -3120,19 +3235,20 @@ implementation of matrix-free methods for iterative solvers.")
          (base32 "1qc4la07w6s1xhcyd0hvbnpr31zc1a2ssgyybc8biv5m00g0dnr0"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-optim-tests
-           (lambda _
-             (substitute* "test/examples.jl"
-               ;; Prevent a cycle with Optim.jl.
-               (("^    SKIPFILE.*") "")
-               (("^    #SKIPFILE") "    SKIPFILE"))))
-         (add-after 'link-depot 'skip-doublefloats-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("using DoubleFloats.*") "")
-               ((".*arbitrary_precision\\.jl.*") "")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-optim-tests
+            (lambda _
+              (substitute* "test/examples.jl"
+                ;; Prevent a cycle with Optim.jl.
+                (("^    SKIPFILE.*") "")
+                (("^    #SKIPFILE") "    SKIPFILE"))))
+          (add-after 'link-depot 'skip-doublefloats-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("using DoubleFloats.*") "")
+                ((".*arbitrary_precision\\.jl.*") "")))))))
     (propagated-inputs
      (list julia-nlsolversbase
            julia-nanmath
@@ -3210,14 +3326,15 @@ that let you do deep transformations of code.")
          (base32 "0l5adird8m1cmnsxwhzi5hcr7q9bm1rf7a6018zc7kcn2yxdshy3"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-64bit?)
-           '(%standard-phases)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* "test/runtests.jl"
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      (if (target-64bit?)
+          #~%standard-phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'fix-tests-int32-i686
+                (lambda _
+                  (substitute* "test/runtests.jl"
+                    (("Int64") "Int32"))))))))
     (propagated-inputs
      (list julia-fixedpointnumbers))
     (native-inputs
@@ -3249,16 +3366,16 @@ comes from the fact that @code{M == map(f, A)}.")
          (base32 "15zvcv2l4iqmjpnqjyx2kry7a85p652nbjy9pj3wq0piksqcz4jb"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-failing-test
-           (lambda _
-             ;; Tests with math functions are hard.
-             (substitute* "test/test_ul.jl"
-               (("@test @inferred\\(logdet") "@test @test_nowarn(logdet")
-               ;; Also skip the REPL test.
-               (("test String") "test_nowarn String"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-failing-test
+            (lambda _
+              ;; Tests with math functions are hard.
+              (substitute* "test/test_ul.jl"
+                (("@test @inferred\\(logdet") "@test @test_nowarn(logdet")
+                ;; Also skip the REPL test.
+                (("test String") "test_nowarn String")))))))
     (propagated-inputs
      (list julia-arraylayouts))
     (home-page "https://github.com/JuliaMatrices/MatrixFactorizations.jl")
@@ -3284,14 +3401,14 @@ may include other factorizations such as the LQ factorization.")
         (base32 "0zjzf2r57l24n3k0gcqkvx3izwn5827iv9ak0lqix0aa5967wvfb"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'disable-network-tests
-           ;; Tries to connect to httpbin.org
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("testhost =") "return #"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'disable-network-tests
+            ;; Tries to connect to httpbin.org
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("testhost =") "return #")))))))
     (propagated-inputs
      (list julia-mbedtls-jll))
     (home-page "https://github.com/JuliaLang/MbedTLS.jl")
@@ -3369,8 +3486,11 @@ resolving them into absolute units.")
     (build-system julia-build-system)
     ;; Package without Project.toml
     (arguments
-     '(#:julia-package-name "Media"
-       #:julia-package-uuid "e89f7d12-3494-54d1-8411-f7d8b9ae1f27"))
+     (list
+      #:julia-package-name "Media"
+      #:julia-package-uuid "e89f7d12-3494-54d1-8411-f7d8b9ae1f27"
+      #:julia-package-dependencies
+      #~(list '("MacroTools" . "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"))))
     (propagated-inputs
      (list julia-macrotools))
     (home-page "https://github.com/JunoLab/Media.jl")
@@ -3485,7 +3605,7 @@ to be temporarily overloaded for the purpose of testing.")
          (base32 "04fgxghyb7n2ji76xkb1r1fjhzsdbgmp5wsfyyn3yjcsdqbyp8pz"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ImageCore.jl
+     (list #:tests? #f))    ; Cycle with ImageCore.jl
     (propagated-inputs
      (list julia-mappedarrays
            julia-paddedviews
@@ -3537,21 +3657,22 @@ Julia, with type-driven, overloadable packing/unpacking functionality.")
          (base32 "1isyj8h4nx96cr6892d154v8pw1nhr7mjyz5bd6ffr2mkzb2bq4f"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-test-i686
-                 (lambda _
-                   (substitute* "test/utilities.jl"
-                     ;; Non-deterministic returned value, e.g.,
-                     ;;    Expression: n == @allocated(f())
-                     ;;    Evaluated: 240 == 120
-                     ;; and for some other values:
-                     ;;    Got correct result, please change to @test
-                     ;; so @test_broken is not enough.
-                     (("@test n == @allocated f\\(\\)")
-                      " "))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-test-i686
+                (lambda _
+                  (substitute* "test/utilities.jl"
+                    ;; Non-deterministic returned value, e.g.,
+                    ;;    Expression: n == @allocated(f())
+                    ;;    Evaluated: 240 == 120
+                    ;; and for some other values:
+                    ;;    Got correct result, please change to @test
+                    ;; so @test_broken is not enough.
+                    (("@test n == @allocated f\\(\\)")
+                     " ")))))
+          #~%standard-phases)))
     (propagated-inputs
      (list julia-offsetarrays))
     (home-page "https://github.com/jump-dev/MutableArithmetics.jl")
@@ -3628,14 +3749,15 @@ interface to interact with these types.")
          (base32 "16vn5w5274kcywh1xp0zqjk5q10xrk125aznz5av6wifwrvghk8s"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-cuda-tests
-           (lambda _
-             (substitute* "test/runtests.jl"
-               (("using CUDA") "")
-               (("&& CUDA\\.functional\\(\\)") ""))
-             (setenv "NNLIB_TEST_CUDA" "false"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-cuda-tests
+            (lambda _
+              (substitute* "test/runtests.jl"
+                (("using CUDA") "")
+                (("&& CUDA\\.functional\\(\\)") ""))
+              (setenv "NNLIB_TEST_CUDA" "false"))))))
     (propagated-inputs
      (list julia-adapt
            julia-chainrulescore
@@ -3713,8 +3835,9 @@ optimization of functions.")
          (base32 "10h47x5ws42pkqjccimaz0yxfvz41w0yazq6inamfk4lg5g2g3d9"))))
     (build-system julia-build-system)
     (arguments
-     `(#:julia-package-name "OptimTestProblems"
-       #:julia-package-uuid "cec144fc-5a64-5bc6-99fb-dde8f63e154c"))
+     (list
+      #:julia-package-name "OptimTestProblems"
+      #:julia-package-uuid "cec144fc-5a64-5bc6-99fb-dde8f63e154c"))
     (home-page "https://github.com/JuliaNLSolvers/OptimTestProblems.jl")
     (synopsis "Collection of optimization test problems")
     (description "The purpose of this package is to provide test problems for
@@ -3760,7 +3883,7 @@ which they were added to the collection.")
     (propagated-inputs
      (list julia-adapt))
     ;; CatIndices depends on OffsetArrays, introducing a recursive dependency
-    (arguments '(#:tests? #f))
+    (arguments (list #:tests? #f))
     (home-page "https://juliaarrays.github.io/OffsetArrays.jl/stable/")
     (synopsis "Fortran-like arrays with arbitrary, zero or negative indices")
     (description "@code{OffsetArrays.jl} provides Julia users with arrays that
@@ -3977,7 +4100,7 @@ definite.")
          (base32 "1cail43iqzbi6m9v6981rhz47zf2lcvhs5ds5gdqvc9nx5frghxq"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))        ; Tests try to mkdir /.julia
+     (list #:tests? #f))        ; Tests try to mkdir /.julia
     (home-page "https://github.com/JuliaPackaging/Preferences.jl")
     (synopsis "Store configuration switches to TOML files")
     (description "The @code{Preferences} package provides an integrated way for
@@ -4002,13 +4125,13 @@ everything from run time algorithm choice to code generation at compile time.")
          (base32 "1d1sd87kkwbar3l608h0adzws42cwdrmp1idxx7an6mfqcsdrijw"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-color-tests
-           (lambda _
-             (substitute* "test/text_backend.jl"
-               ((".*colors\\.jl.*") ""))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-color-tests
+            (lambda _
+              (substitute* "test/text_backend.jl"
+                ((".*colors\\.jl.*") "")))))))
     (propagated-inputs
      (list julia-crayons
            julia-formatting
@@ -4036,49 +4159,47 @@ human-readable format.")
           "1fj5d1ihnhnm0pl4hbx6hcd2bpdyhm8jiaqah2axsbd069j70saf"))))
     (build-system julia-build-system)
     (arguments
-     `(#:imported-modules ((guix build python-build-system)
+     (list
+      #:imported-modules `((guix build python-build-system)
                            ,@%julia-build-system-modules)
-       #:modules ((guix build julia-build-system)
+      #:modules '((guix build julia-build-system)
                   (guix build utils)
                   ((guix build python-build-system) #:prefix python:))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'remove-conda
-           (lambda _
-             (substitute* "Project.toml"
-               ((".*Conda.*") ""))
-             (substitute* (list "src/PyCall.jl"
-                                "test/runtests.jl")
-               (("import Conda") ""))
-             (substitute* "deps/depsutils.jl"
-               (("Conda.PYTHONDIR") "\"/\""))
-             #t))
-         (add-after 'link-depot 'set-python
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((python (assoc-ref inputs "python")))
-               (setenv "PYCALL_JL_RUNTIME_PYTHON"
-                       (string-append python "/bin/python3"))
-               (with-output-to-file "deps/deps.jl"
-                 (lambda _
-                   (format #t
-                           "const python = \"~a/bin/python3\"~@
+      #:phases
+      #~(modify-phases %standard-phases
+        (add-after 'link-depot 'remove-conda
+          (lambda _
+            (substitute* "Project.toml"
+              ((".*Conda.*") ""))
+            (substitute* (list "src/PyCall.jl"
+                               "test/runtests.jl")
+              (("import Conda") ""))
+            (substitute* "deps/depsutils.jl"
+              (("Conda.PYTHONDIR") "\"/\""))))
+        (add-after 'link-depot 'set-python
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let ((python (assoc-ref inputs "python")))
+              (setenv "PYCALL_JL_RUNTIME_PYTHON"
+                      (string-append python "/bin/python3"))
+              (with-output-to-file "deps/deps.jl"
+                (lambda _
+                  (format #t
+                          "const python = \"~a/bin/python3\"~@
                            const pyprogramname = \"~a/bin/python3\"~@
                            const libpython = \"~a/lib/libpython~a.so.1.0\"~@
                            const PYTHONHOME = \"~a\"~@
                            const pyversion_build = v\"~a\"~@
                            const conda = false~%"
-                           python
-                           python
-                           python
-                           (python:python-version python)
-                           python
-                           ,(package-version python))))
-               #t)))
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "CI" "true")
-             (setenv "JULIA_PKGEVAL" "true")
-             #t)))))
+                          python
+                          python
+                          python
+                          (python:python-version python)
+                          python
+                          #$(package-version python)))))))
+        (add-before 'check 'pre-check
+          (lambda _
+            (setenv "CI" "true")
+            (setenv "JULIA_PKGEVAL" "true"))))))
     (propagated-inputs
      (list julia-macrotools
            julia-versionparsing))
@@ -4164,15 +4285,15 @@ arbitrary normed vector spaces (e.g. matrix-valued integrands).")
          (base32 "051biw4b9zni7cmh2f1yzifp1v8wazlfxrdz4p44lyd1wba6379w"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'hardcode-libmath-location
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gcclib (assoc-ref inputs "gcc:lib")))
-               (substitute* "src/Quadmath.jl"
-                 (("libgcc_s.so.1" lib) (string-append gcclib "/lib/" lib))
-                 (("libquadmath.so.0" lib) (string-append gcclib "/lib/" lib)))
-               #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'hardcode-libmath-location
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((gcclib (assoc-ref inputs "gcc:lib")))
+                (substitute* "src/Quadmath.jl"
+                  (("libgcc_s.so.1" lib) (string-append gcclib "/lib/" lib))
+                  (("libquadmath.so.0" lib) (string-append gcclib "/lib/" lib)))))))))
     (propagated-inputs
      (list julia-requires))
     (inputs
@@ -4313,7 +4434,7 @@ more complex visualizations.")
          (base32 "0zq4bzxvq36zr0va6iip3x97mgq5b4fwza8avszx1ryfqm3lg1f7"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with Plots.jl.
+     (list #:tests? #f))    ; Cycle with Plots.jl.
     (propagated-inputs
      (list julia-nanmath
            julia-plotutils
@@ -4343,7 +4464,7 @@ recipes to full specifications for a plot.")
          (base32 "0vx8ndxrii53na7jsc2lki47wfpi77rn3y2r6xhiysx1qwr14msf"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with OrdinaryDiffEq.jl.
+     (list #:tests? #f))    ; Cycle with OrdinaryDiffEq.jl.
     (propagated-inputs
      (list julia-arrayinterface
            julia-chainrulescore
@@ -4398,7 +4519,7 @@ recursive arrays like arrays of arrays.")
          (base32 "0mm6bjhs8a21pippww6b08b5frmnb9m6k8xrszrwq9zhc879zpc9"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Cycle with ImageCore.jl through ImageMagick.jl.
+     (list #:tests? #f))    ; Cycle with ImageCore.jl through ImageMagick.jl.
     (propagated-inputs
      (list julia-deepdiffs
            julia-distances
@@ -4436,7 +4557,7 @@ package can help create and update if need be.")
         (base32 "03hyfy7c0ma45b0y756j76awi3az2ii4bz4s8cxm3xw9yy1z7b01"))))
     (build-system julia-build-system)
     (arguments
-     `(#:parallel-tests? #f))
+     (list #:parallel-tests? #f))
     (inputs                             ;required for test
      (list julia-example))
     (propagated-inputs
@@ -4468,7 +4589,7 @@ can be avoided.")
      ;; Expression: hash(tr_float, hash(1)) === hash(v_float, hash(1))
      ;; MethodError: no method matching decompose(::ReverseDiff.TrackedReal{Float64, Float64, Nothing})
      ;; Disable as stopgap.
-     `(#:tests? ,(not (target-x86-32?))))
+     (list #:tests? (not (target-x86-32?))))
     (propagated-inputs
      (list julia-diffresults
            julia-diffrules
@@ -4566,8 +4687,9 @@ through matrix-vector multiplication.")
            (base32 "1fb1dfdmiw2ggx60hf70954xlps0r48fcb3k3dvxynlz7ylphp96"))))
       (build-system julia-build-system)
       (arguments
-       `(#:julia-package-name "SafeTestsets"
-         #:julia-package-uuid "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"))
+       (list
+        #:julia-package-name "SafeTestsets"
+        #:julia-package-uuid "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"))
       (native-inputs
        (list julia-staticarrays))
       (home-page "https://github.com/YingboMa/SafeTestsets.jl")
@@ -4637,7 +4759,7 @@ bytes in a chunk of memory.  Think of it like a much faster version of
           "09xni9rrrax17fxjz04j1b48mk9ffww5rcbagh66jklr89mrkqhx"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; Test suite tries to access the Julia package registry.
+     (list #:tests? #f)) ; Test suite tries to access the Julia package registry.
     (home-page "https://github.com/JuliaPackaging/Scratch.jl")
     (synopsis "Scratch spaces for all your persistent mutable data needs")
     (description "This repository implements the scratch spaces API for
@@ -4758,7 +4880,7 @@ beginners.")
          (base32 "173x77a80xnh99viqa3r7rgdaksvxaw8xyfqw09gwvp4p2zrxivb"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; cycle with StatsBase.jl
+     (list #:tests? #f))    ; cycle with StatsBase.jl
     (propagated-inputs
      (list julia-datastructures))
     ;(native-inputs
@@ -4862,13 +4984,13 @@ some performance improvements).")
          (base32 "1fwiaxdpx1z9dli3jr8kyraych0jbdiny3qklynf0r13px25r6i7"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'skip-doctest
-           (lambda _
-             (substitute* "test/runtests.jl"
-               ((".*doctest.*") ""))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'link-depot 'skip-doctest
+            (lambda _
+              (substitute* "test/runtests.jl"
+                ((".*doctest.*") "")))))))
     (propagated-inputs
      (list julia-offsetarrays))
     (native-inputs
@@ -5027,14 +5149,15 @@ applied to any distance.")
          (base32 "1qwc5ll68ng80b5921ww6fvifxbsmiylakfgsbsjbzg7lzyb5i67"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-failing-test
-           (lambda _
-             ;; https://github.com/JuliaStrings/StringEncodings.jl/issues/49
-             (substitute* "test/runtests.jl"
-               (("\"SHIFT_JIS\", \"SHIFT_JISX0213\"")
-                " ")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-failing-test
+            (lambda _
+              ;; https://github.com/JuliaStrings/StringEncodings.jl/issues/49
+              (substitute* "test/runtests.jl"
+                (("\"SHIFT_JIS\", \"SHIFT_JISX0213\"")
+                 " ")))))))
     (propagated-inputs
      (list julia-libiconv-jll))
     (home-page "https://github.com/JuliaStrings/StringEncodings.jl")
@@ -5059,15 +5182,16 @@ texts between multiple character encodings.  It is currently based on the
          (base32 "0rjcpyjwzg70n87q5r9c5i1qzigavncslxssm3rk5a3y549py56v"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-64bit?)
-           '(%standard-phases)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'fix-tests-int32-i686
-                 (lambda _
-                   (substitute* '("src/utils.jl"
-                                  "test/runtests.jl")
-                     (("Int64") "Int32")))))))))
+     (list
+      #:phases
+      (if (target-64bit?)
+          #~%standard-phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'fix-tests-int32-i686
+                (lambda _
+                  (substitute* '("src/utils.jl"
+                                 "test/runtests.jl")
+                    (("Int64") "Int32"))))))))
     (propagated-inputs
      (list julia-dataapi
            julia-staticarrays
@@ -5265,7 +5389,7 @@ dimensions}.")
          (base32 "1lnfsmx33qspyvxw0cykwh7il8xykjpcw1080sisn95ngz2qhdmy"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))    ; cycle with ImageMagick.jl
+     (list #:tests? #f))    ; cycle with ImageMagick.jl
     (propagated-inputs
      (list julia-axisarrays
            julia-colortypes
@@ -5334,7 +5458,7 @@ automatic differentiation for its machine learning platform.")
          (base32 "1w3klii293caqiclfh28jggv7f53xclm9fr6xmw38brwrn1hjb48"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))                ; Circular dependency with various codecs.
+     (list #:tests? #f))                ; Circular dependency with various codecs.
     (home-page "https://github.com/JuliaIO/TranscodingStreams.jl")
     (synopsis "Fast I/O transcoding data streams")
     (description "This package provides tools for transcoding data streams
@@ -5429,17 +5553,17 @@ types, modules, and dictionaries.")
         (base32 "0kp4hg3kknkm2smlcizqfd33l9x4vkahc2714gnbjp39fj285b92"))))
     (build-system julia-build-system)
     (arguments
-     '(#:julia-package-name "URIs"      ;required to run tests
-       #:julia-package-uuid "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'change-dir
-           ;; Tests must be run from the testdir
-           (lambda* (#:key source outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (chdir
-                (string-append out "/share/julia/loadpath/URIs/test")))
-             #t)))))
+     (list
+      #:julia-package-name "URIs"       ;required to run tests
+      #:julia-package-uuid "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'change-dir
+            ;; Tests must be run from the testdir
+            (lambda* (#:key source outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (chdir
+                 (string-append out "/share/julia/loadpath/URIs/test"))))))))
     ;; required for tests
     (inputs (list julia-json))
     (home-page "https://github.com/JuliaWeb/URIs.jl")
@@ -5464,7 +5588,7 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
         (base32 "10qwscd15dnmvx116dwvg99m7kmwgmj5ahdkq7psiq48lcc554gq"))))
     (build-system julia-build-system)
     (arguments
-     `(#:parallel-tests? #f))
+     (list #:parallel-tests? #f))
     (propagated-inputs
      (list julia-constructionbase))
     (home-page "https://painterqubits.github.io/Unitful.jl/stable/")
@@ -5536,15 +5660,16 @@ allows for efficient string representation and transfer")
          (base32 "04yykivi8zrbryxlmb0p5xa6lma8iq22r5s863117dnnqj5gaffd"))))
     (build-system julia-build-system)
     (arguments
-     `(#:phases
-       ,@(if (target-x86-32?)
-           '((modify-phases %standard-phases
-               (add-after 'unpack 'remove-failing-test-i686
-                 (lambda _
-                   (substitute* "test/woodbury.jl"
-                     (("@test logdet\\(W\\)")
-                      "@test_broken logdet(W)"))))))
-           '(%standard-phases))))
+     (list
+      #:phases
+      (if (target-x86-32?)
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'remove-failing-test-i686
+                (lambda _
+                  (substitute* "test/woodbury.jl"
+                    (("@test logdet\\(W\\)")
+                     "@test_broken logdet(W)")))))
+          #~%standard-phases)))
     (home-page "https://github.com/timholy/WoodburyMatrices.jl")
     (synopsis "Support for the Woodbury matrix identity for Julia")
     (description "This package provides support for the Woodbury matrix identity
@@ -5639,7 +5764,7 @@ Zygote, without depending on Zygote itself.")
         (base32 "1cx66sp30s34ln6p0fpqk1ggjxfxg2gp8791zz3cl85dmk4dl14b"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f))                    ;require CUDA, not packaged yet
+     (list #:tests? #f))                    ;require CUDA, not packaged yet
     (propagated-inputs
      (list julia-abstractffts
            julia-chainrules
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 65937f8970..aa88d140f5 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -106,7 +106,8 @@
          '()
          `(("qtbase" ,qtbase-5))))                ;for tests (needs qmake)
     (arguments
-     `(#:tests? ,(not (null? (package-native-inputs this-package)))
+     `(#:tests? ,(and (not (%current-target-system))
+                      (not (null? (package-native-inputs this-package))))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-lib-path
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 4638298939..f4e0c0cc4b 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -29,7 +29,6 @@
   #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages audio)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages docbook)
@@ -411,7 +410,6 @@ variety of formats.")
            libdvdcss
            libdvdread
            ;; TODO: LibFuzzer
-           libiconv
            libkcddb
            libmad
            libmpcdec
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index c9351ccad9..e88ac7de15 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2020, 2021, 2022 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
-;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,6 +36,7 @@
   #:use-module (guix build-system qt)
   #:use-module (guix deprecation)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages apr)
   #:use-module (gnu packages astronomy)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -219,84 +221,88 @@ browser for easy news reading.")
     (license license:gpl2+)))
 
 (define-public kdenlive
-  (let ((version "21.08.3"))
-    (package
-      (name "kdenlive")
-      (version version)
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://invent.kde.org/multimedia/kdenlive")
-               (commit (string-append "v" version))))
-         (file-name (string-append name "-" version "-checkout"))
-         (sha256
-          (base32 "0lpspak5djkbn2xbmmbxls258310g45n3a08sghkjl08bx6ilvc9"))))
-      (build-system qt-build-system)
-      (native-inputs
-       (list extra-cmake-modules pkg-config qttools))
-      (inputs
-       (list breeze ; make dark them available easily
-             breeze-icons ; recommended icon set
-             ffmpeg
-             frei0r-plugins
-             karchive
-             kcrash
-             kdbusaddons
-             kdeclarative
-             kdoctools
-             kfilemetadata
-             kguiaddons
-             kiconthemes
-             knewstuff
-             knotifications
-             knotifyconfig
-             kparts
-             kplotting
-             mlt
-             purpose
-             qtbase-5
-             qtdeclarative
-             qtgraphicaleffects
-             qtmultimedia
-             qtnetworkauth
-             qtquickcontrols
-             qtquickcontrols2
-             qtscript
-             qtsvg
-             shared-mime-info))
-      (arguments
-       ;; XXX: there is a single test that spawns other tests and
-       ;; 1/3 tests failed and 1/327 assertions failed.  It seems
-       ;; that individual tests can't be skipped.
-       `(#:configure-flags (list "-DBUILD_TESTING=off")
-         #:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'wrap-executable
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (qtbase (assoc-ref inputs "qtbase"))
-                      (frei0r (assoc-ref inputs "frei0r-plugins"))
-                      (ffmpeg (assoc-ref inputs "ffmpeg")))
-                 (wrap-program (string-append out "/bin/kdenlive")
-                   `("PATH" ":" prefix
-                     ,(list (string-append ffmpeg "/bin")))
-                   `("FREI0R_PATH" ":" =
-                     (,(string-append frei0r "/lib/frei0r-1/")))
-                   `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
-                     (,(string-append qtbase "/lib/qt5/plugins/platforms")))
-                   `("MLT_PREFIX" ":" =
-                     (,(assoc-ref inputs "mlt"))))))))))
-      (home-page "https://kdenlive.org")
-      (synopsis "Non-linear video editor")
-      (description "Kdenlive is an acronym for KDE Non-Linear Video Editor.
+  (package
+    (name "kdenlive")
+    (version "21.12.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://invent.kde.org/multimedia/kdenlive")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19fs5zhz1nv5cvf709c5741nri139pl5mzpf2xnd4sqj0rmyv228"))))
+    (build-system qt-build-system)
+    (arguments
+     ;; XXX: there is a single test that spawns other tests and
+     ;; 1/3 tests failed and 1/327 assertions failed.  It seems
+     ;; that individual tests can't be skipped.
+     (list
+      #:configure-flags #~(list "-DBUILD_TESTING=off")
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'wrap-executable
+            (lambda _
+              (let* ((ffmpeg #$(this-package-input "ffmpeg"))
+                     (frei0r #$(this-package-input "frei0r-plugins"))
+                     (ladspa #$(this-package-input "ladspa"))
+                     (qtbase #$(this-package-input "qtbase")))
+                (wrap-program (string-append #$output "/bin/kdenlive")
+                  `("PATH" ":" prefix
+                    ,(list (string-append ffmpeg "/bin")))
+                  `("FREI0R_PATH" ":" =
+                    (,(string-append frei0r "/lib/frei0r-1")))
+                  `("LADSPA_PATH" ":" =
+                    (,(string-append ladspa "/lib/ladspa")))
+                  `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
+                    (,(string-append qtbase "/lib/qt5/plugins/platforms")))
+                  `("MLT_PREFIX" ":" =
+                    (,#$(this-package-input "mlt"))))))))))
+    (native-inputs
+     (list extra-cmake-modules pkg-config qttools))
+    (inputs
+     (list bash-minimal
+           breeze                       ; make dark them available easily
+           breeze-icons                 ; recommended icon set
+           ffmpeg
+           frei0r-plugins
+           karchive
+           kcrash
+           kdbusaddons
+           kdeclarative
+           kdoctools
+           kfilemetadata
+           kguiaddons
+           kiconthemes
+           knewstuff
+           knotifications
+           knotifyconfig
+           kparts
+           kplotting
+           ladspa
+           mlt
+           purpose
+           qtbase-5
+           qtdeclarative
+           qtgraphicaleffects
+           qtmultimedia
+           qtnetworkauth
+           qtquickcontrols
+           qtquickcontrols2
+           qtscript
+           qtsvg
+           shared-mime-info))
+    (home-page "https://kdenlive.org")
+    (synopsis "Non-linear video editor")
+    (description "Kdenlive is an acronym for KDE Non-Linear Video Editor.
 
 Non-linear video editing is much more powerful than beginner's (linear)
 editors, hence it requires a bit more organization before starting.  However,
 it is not reserved to specialists and can be used for small personal
 projects.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public kdevelop
   (package
diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm
index 6ac7f1668a..12c1849cdb 100644
--- a/gnu/packages/lean.scm
+++ b/gnu/packages/lean.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,16 +20,25 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages lean)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages multiprecision)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
-  #:use-module (guix git-download))
+  #:use-module (guix git-download)
+  #:use-module (guix download)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz))
 
 (define-public lean
   (package
     (name "lean")
-    (version "3.23.0")
+    (version "3.41.0")
     (home-page "https://github.com/leanprover-community/lean")
     (source (origin
               (method git-fetch)
@@ -37,19 +47,19 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "09mklc1p6ms1jayg2f89hqfmhca3h5744lli936l38ypn1d00sxx"))))
+                "0mpxlfjq460x1vi3v6qzgjv74asg0qlhykd51pj347795x5b1hf1"))))
     (build-system cmake-build-system)
     (inputs
-     (list gmp))
+     (list bash-minimal gmp))
     (arguments
      `(#:build-type "Release"           ; default upstream build type
        ;; XXX: Test phases currently fail on 32-bit sytems.
        ;; Tests for those architectures have been temporarily
        ;; disabled, pending further investigation.
-       #:tests? ,(let ((arch (or (%current-target-system)
-                              (%current-system))))
-                   (not (or (string-prefix? "i686" arch)
-                            (string-prefix? "armhf" arch))))
+       #:tests? ,(and (not (%current-target-system))
+                      (let ((arch (%current-system)))
+                        (not (or (string-prefix? "i686" arch)
+                                 (string-prefix? "armhf" arch)))))
        #:phases
        (modify-phases %standard-phases
          (add-after 'patch-source-shebangs 'patch-tests-shebangs
@@ -62,13 +72,46 @@
                  (("#![[:blank:]]?/bin/bash")
                   (string-append "#!" bash))
                  (("#![[:blank:]]?usr/bin/env bash")
-                  (string-append "#!" bash)))
-               #t)))
+                  (string-append "#!" bash))))))
          (add-before 'configure 'chdir-to-src
-           (lambda _ (chdir "src") #t)))))
+           (lambda _ (chdir "src"))))))
     (synopsis "Theorem prover and programming language")
     (description
      "Lean is a theorem prover and programming language with a small trusted
 core based on dependent typed theory, aiming to bridge the gap between
 interactive and automated theorem proving.")
     (license license:asl2.0)))
+
+(define-public python-mathlibtools
+  (package
+    (name "python-mathlibtools")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "mathlibtools" version))
+              (sha256
+               (base32
+                "089pql105imx8z7ar1wiz9fn000jp6xqdfixw4jf2vric94vn9fj"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'fix-home-directory
+                    (lambda _
+                      (setenv "HOME" "/tmp"))))))
+    (inputs (list python-toml
+                  python-pygithub
+                  python-certifi
+                  python-gitpython
+                  python-requests
+                  python-click
+                  python-tqdm
+                  python-networkx
+                  python-pydot
+                  python-pyyaml
+                  python-atomicwrites))
+    (home-page "https://github.com/leanprover-community/mathlib-tools")
+    (synopsis "Development tools for Lean mathlib")
+    (description
+     "This package contains @command{leanproject}, a supporting tool for Lean
+mathlib, a mathematical library for the Lean theorem prover.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
index e23b5d0c24..6bcc4ad49a 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,10 +21,12 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages less)
+  #:use-module (guix gexp)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages file)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -59,38 +62,57 @@ text editors.")
 (define-public lesspipe
   (package
     (name "lesspipe")
-    (version "1.91")
+    (version "2.04")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/wofr06/lesspipe")
-                    (commit version)))
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04dqvq6j4h451xqbvxzv6pv679hzzfm39pdm5vg7h3r45gzg0kps"))))
+                "1mwmwkmiyrpib18mli4wrh9n0i12cnf08ssrj6a0s6bgjcfxcjr2"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:phases (modify-phases %standard-phases
-                  (replace 'configure
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out")))
-                        (delete-file "Makefile") ; force generating
-                        (invoke "./configure"
-                                (string-append "--prefix=" out)
-                                "--yes"))))
-                  (add-before 'install 'patch-tput-and-file
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (substitute* "lesspipe.sh"
-                        (("tput colors")
-                         (string-append (search-input-file inputs "/bin/tput")
-                                        " colors"))
-                        (("file -")
-                         (string-append (search-input-file inputs "/bin/file")
-                                        " -"))))))))
+     (list
+      #:tests? #f                      ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; configure is a perl script which the standard configure phase
+              ;; fails to execute
+              (invoke "./configure"
+                      (string-append "--prefix=" (assoc-ref outputs "out")))))
+          (add-before 'install 'fix-makefile
+            (lambda _
+              (substitute* "Makefile"
+                (("\\$\\(DESTDIR\\)/etc") "$(DESTDIR)$(PREFIX)/etc"))))
+          (add-before 'install 'patch-command-paths
+            ;; Depending on the content of the file to be displayed and some
+            ;; settings, lesspipe trees to use a large variety of external
+            ;; commands, e.g. rpm, dpkg, vimcolor.  We only link the
+            ;; essential ones to avoid this package to pull in all these
+            ;; dependencies which might never ever we used.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((file (search-input-file inputs "/bin/file"))
+                    (tput (search-input-file inputs "/bin/tput")))
+                (substitute* "sxw2txt"
+                  (("^use warnings;" line)
+                   (string-append
+                    line "\nuse lib '" #$(this-package-input "perl-archive-zip")
+                    "/lib/perl5/site_perl';")))
+                (substitute* "lesscomplete"
+                  (("file -") (string-append file " -")))
+                (substitute* "lesspipe.sh"
+                  (("tput colors")
+                   (string-append tput " colors"))
+                  (("file -")
+                   (string-append file " -")))))))))
     (inputs
-     (list file ncurses))  ; for tput
+     (list file
+           ncurses  ;; for tput
+           perl-archive-zip))
     (native-inputs (list perl))
     (home-page "https://github.com/wofr06/lesspipe")
     (synopsis "Input filter for less")
diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 285ecb58fd..504b494563 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -24,7 +24,6 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
@@ -260,8 +259,7 @@ IETF.")
     (build-system cmake-build-system)
     (outputs '("out" "debug" "tester"))
     (arguments
-     `(#:tests? #t
-       #:configure-flags '("-DENABLE_STATIC=OFF")
+     `(#:configure-flags '("-DENABLE_STATIC=OFF")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-vcard-grammar-location
@@ -764,31 +762,30 @@ device.")
                (rename-file (string-append out "/share/" tester-name)
                             (string-append tester "/share/" tester-name))))))))
     (native-inputs
-     `(("dot" ,graphviz)
-       ("doxygen" ,doxygen)
-       ("gettext" ,gettext-minimal)
-       ("perl" ,perl)
-       ("python" ,python-wrapper)
-       ("pystache" ,python-pystache)
-       ("six" ,python-six)
-       ("udev" ,eudev)))
+     (list graphviz
+           doxygen
+           gettext-minimal
+           perl
+           python-wrapper
+           python-pystache
+           python-six
+           eudev))
     (inputs
-     `(("bctoolbox" ,bctoolbox)
-       ("belcard" ,belcard)
-       ("bellesip" ,belle-sip)
-       ("belr" ,belr)
-       ("bzrtp" ,bzrtp)
-       ("iconv" ,libiconv)
-       ("ldap" ,openldap)
-       ("libxsd" ,xsd)
-       ("lime" ,lime)
-       ("mediastreamer2" ,mediastreamer2)
-       ("notify" ,libnotify)
-       ("ortp" ,ortp)
-       ("soci" ,soci)
-       ("sqlite" ,sqlite)
-       ("xml2" ,libxml2)
-       ("zlib" ,zlib)))
+     (list bctoolbox
+           belcard
+           belle-sip
+           belr
+           bzrtp
+           openldap
+           xsd
+           lime
+           mediastreamer2
+           libnotify
+           ortp
+           soci
+           sqlite
+           libxml2
+           zlib))
     (synopsis "Belledonne Communications Softphone Library")
     (description "Liblinphone is a high-level SIP library integrating
 all calling and instant messaging features into an unified
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 98de8eae53..c69773c37b 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@@ -61,6 +61,8 @@
 ;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca>
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -358,17 +360,17 @@ 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.16-version "5.16.8")
+(define-public linux-libre-5.16-version "5.16.16")
 (define-public linux-libre-5.16-gnu-revision "gnu")
 (define deblob-scripts-5.16
   (linux-libre-deblob-scripts
    linux-libre-5.16-version
    linux-libre-5.16-gnu-revision
    (base32 "0c9c8zd85p84r8k4xhys8xw15pds71v0ca2b6hm1pr4f6lpzck0g")
-   (base32 "14vb7g784rm1s2a2dzs6pnz3998iwdjwx8665myddr7gd197rkaq")))
+   (base32 "0hpr1qr68xh52gzzw5jbwq4i8qd2a5mfbn8s2jj378550kfsn3c0")))
 (define-public linux-libre-5.16-pristine-source
   (let ((version linux-libre-5.16-version)
-        (hash (base32 "05h3b11czr710lilmb5gq84a78cfz3jm03q2q0gcrpcaxq2mzajj")))
+        (hash (base32 "13qk6cjnjwgnxj25mphyv08pjf1sqz7bxxrr3fpl8gz3aghdd9yc")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.16)))
@@ -376,37 +378,37 @@ 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.22")
+(define-public linux-libre-5.15-version "5.15.30")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
    linux-libre-5.15-version
    linux-libre-5.15-gnu-revision
    (base32 "1rfhwfzifmbpnrhmrn3srm736nkm1v6affw915d0fgqzqgi8qfai")
-   (base32 "0mxm0wy3fyg7fn2n8k9b4zh62l4q00b4y9zf46im691zscwgikc2")))
+   (base32 "0mwzr1ffrr02pyy4rhwrv8msm9l59mg1d164j6qif7kkax2mdg66")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "1hv3ci37nz79m1dg83ha4hl1jjnl3l52lvdzx514sp8hqihgji1m")))
+        (hash (base32 "0ckiz985x88x68psg6wazyk7zpv34k8rbzpzyzj0gaph13za4ki5")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.99")
+(define-public linux-libre-5.10-version "5.10.107")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
    linux-libre-5.10-version
    linux-libre-5.10-gnu-revision
    (base32 "1swy3y851jnnmk3hc0khllpsifb98camlwyskpn1dyvjsgjljd8x")
-   (base32 "090y0z4a7b643w0v6c6mbgvl04mrlrhanil38mafl6dlnhad9zbl")))
+   (base32 "051ig1nn45jmm3nk7cxnqabcq3nn62d4dq4ggycsbnx24ckkzfrr")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "0j84g55d0v3832y9c5gh7bnmhnrb5bc9xdivps5n7n6km9c3b980")))
+        (hash (base32 "1snzzhkzdjlj92gqig3sanxlhv0xc0xk2xwjdjr0yds6g43w6ry4")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.178")
+(define-public linux-libre-5.4-version "5.4.186")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
@@ -416,12 +418,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "19k2yzqlr4rarl086sr6vjnh0lq5wmg5n7r2p0cai9yfvq3spp2c")))
+        (hash (base32 "1f9rigm58miq5s98bx7pvylqi9hlzlfnq1nrj4cd8f4arcjcvxv1")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.228")
+(define-public linux-libre-4.19-version "4.19.235")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
@@ -431,12 +433,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "14iis3x3jmfxwqqi7v7ijssqzha8d8nnydi4zqnpk53m45jw7km8")))
+        (hash (base32 "1615y3ma9icmqqr7lisl8nd8zvvkh77a81yl39yvy6qi9345l32k")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.265")
+(define-public linux-libre-4.14-version "4.14.272")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
@@ -446,12 +448,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1iwjg2z8818g1sl6l79pm5590hzwpxqcxh7wcdb00y4m3maksr0s")))
+        (hash (base32 "0scx13pc5y5jmm5xa17my242gsgb1mf0cgqzjx656g7kkh4phqcv")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.300")
+(define-public linux-libre-4.9-version "4.9.307")
 (define-public linux-libre-4.9-gnu-revision "gnu1")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
@@ -461,7 +463,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0wdaj40pcq9wg5xnz2zj3jj8bawhfgqxcwp6dnavbf9lq0gca48p")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "1bzmnkhxgz093ninqg8bh348d7s4xmkld2bld8nl215gnji0wfdb")))
+        (hash (base32 "1xyhz7hq8yyclxyavzk36sbl41vlb74pccd56240kq34ma1hyis7")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
@@ -929,6 +931,12 @@ It has been modified to remove all non-free binary blobs.")
                      '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
                      #:configuration-file kernel-config))
 
+(define-public linux-libre-version         linux-libre-5.16-version)
+(define-public linux-libre-gnu-revision    linux-libre-5.16-gnu-revision)
+(define-public linux-libre-pristine-source linux-libre-5.16-pristine-source)
+(define-public linux-libre-source          linux-libre-5.16-source)
+(define-public linux-libre                 linux-libre-5.16)
+
 (define-public linux-libre-5.15
   (make-linux-libre* linux-libre-5.15-version
                      linux-libre-5.15-gnu-revision
@@ -936,12 +944,6 @@ It has been modified to remove all non-free binary blobs.")
                      '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
                      #:configuration-file kernel-config))
 
-(define-public linux-libre-version         linux-libre-5.15-version)
-(define-public linux-libre-gnu-revision    linux-libre-5.15-gnu-revision)
-(define-public linux-libre-pristine-source linux-libre-5.15-pristine-source)
-(define-public linux-libre-source          linux-libre-5.15-source)
-(define-public linux-libre                 linux-libre-5.15)
-
 (define-public linux-libre-5.10
   (make-linux-libre* linux-libre-5.10-version
                      linux-libre-5.10-gnu-revision
@@ -1158,9 +1160,9 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-with-bpf
   (let ((base-linux-libre
          (make-linux-libre*
-          linux-libre-5.15-version
-          linux-libre-5.15-gnu-revision
-          linux-libre-5.15-source
+          linux-libre-5.16-version
+          linux-libre-5.16-gnu-revision
+          linux-libre-5.16-source
           '("x86_64-linux" "i686-linux" "armhf-linux"
             "aarch64-linux" "riscv64-linux")
           #:extra-version "bpf"
@@ -1382,8 +1384,8 @@ network adapters.")
       (license license:gpl2))))
 
 (define-public rtl8812au-aircrack-ng-linux-module
-  (let ((commit "307d694076b056588c652c2bdaa543a89eb255d9")
-        (revision "6"))
+  (let ((commit "37e27f9165300c89607144b646545fac576ec510")
+        (revision "7"))
     (package
       (inherit rtl8821ce-linux-module)
       (name "rtl8812au-aircrack-ng-linux-module")
@@ -1396,7 +1398,7 @@ network adapters.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1g2zga7jqzp4azwqpgxxx3lg07ijaaqw3zqnaa3i2brycwlnf8l9"))
+          (base32 "09n814pa6i0b0xkgssymcmbcdic05y9z5bsr6sxjfs40wawsk6af"))
          (modules '((guix build utils)))
          (snippet
           #~(begin
@@ -2946,9 +2948,9 @@ configuration (iptunnel, ipmaddr).")
                    ;; Tell the makefile to use TARGET-gcc and friends
                    ;; when cross-compiling.
                    #$@(if (%current-target-system)
-                          `((list (string-append "CROSS_COMPILE="
-                                                 ,(%current-target-system) "-")
-                                  "BUILD_CC=gcc"))
+                          `((string-append "CROSS_COMPILE="
+                                           ,(%current-target-system) "-")
+                            "BUILD_CC=gcc")
                           '()))))
     (native-inputs (list perl))
     (supported-systems (delete "i586-gnu" %supported-systems))
@@ -4002,13 +4004,22 @@ one to send arbitrary keycodes when a given key is tapped or held.")
               (patches (search-patches "lvm2-static-link.patch"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list pkg-config procps))                       ;tests use 'pgrep'
+     (list config
+           pkg-config procps))                       ;tests use 'pgrep'
     (inputs
      `(("libaio" ,libaio)
        ("udev" ,eudev)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'update-config
+           (lambda* (#:key inputs native-inputs #:allow-other-keys)
+             (install-file (search-input-file
+                             (or native-inputs inputs) "/bin/config.sub")
+                           "autoconf")
+             (install-file (search-input-file
+                             (or native-inputs inputs) "/bin/config.guess")
+                           "autoconf")))
          (add-after 'configure 'set-makefile-shell
            (lambda _
              ;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
@@ -6611,7 +6622,10 @@ exceeded.")
                (base32
                 "1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a"))))
     (arguments
-     '(#:configure-flags '("--enable-unit-tests")))
+     (list #:configure-flags
+           (if (%current-target-system) ; When cross-compiling.
+             #~(list)
+             #~(list "--enable-unit-tests"))))
     (native-inputs
      (list cmocka pkg-config))
     (inputs
@@ -6709,38 +6723,36 @@ under OpenGL graphics workloads.")
 (define-public efivar
   (package
     (name "efivar")
-    (version "37")
+    (version "38")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rhboot/" name
                                   "/releases/download/" version "/" name
                                   "-" version ".tar.bz2"))
-              (patches (search-patches "efivar-gcc-compat.patch"))
               (sha256
                (base32
-                "17vvfivhsrszh7q39b6npjsrhrhsjf1cmmcpp3xrh6wh7ywzwrrw"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Compile everything within a single LTO partition
-                  ;; to work around ordering issues in the code.  Try
-                  ;; removing this for versions > 37.
-                  (substitute* "Make.defaults"
-                    (("-flto")
-                     "-flto -flto-partition=one"))))))
+                "0jaka7b4lccswjqiv4liclkj6w78gildg7vd6dnw3wf595pfs67h"))))
     (build-system gnu-build-system)
     (arguments
-     `(;; Tests require a UEFI system and is not detected in the chroot.
+     (list
+      ;; Tests require a UEFI system and is not detected in the chroot.
        #:tests? #f
-       #:make-flags (list (string-append "prefix=" %output)
-                          (string-append "libdir=" %output "/lib")
-                          (string-append "CC_FOR_BUILD=" ,(cc-for-target))
-                          (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+       #:make-flags
+       #~(list (string-append "prefix=" #$output)
+               (string-append "libdir=" #$output "/lib")
+               (string-append "CC_FOR_BUILD=" #$(cc-for-target))
+               (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
        #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'build-deterministically
+             (lambda _
+               (substitute* "src/include/defaults.mk"
+                 ;; Don't use -march=native.
+                 (("-march=native")
+                  ""))))
+           (delete 'configure))))
     (native-inputs
-     (list pkg-config))
+     (list mandoc pkg-config))
     (inputs
      (list popt))
     (home-page "https://github.com/rhboot/efivar")
@@ -6762,19 +6774,28 @@ interface to the variable facility of UEFI boot firmware.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "1niicijxg59rsmiw3rsjwy4bvi1n42dynvm01lnp9haixdzdpq03"))
-       (patches (search-patches "efibootmgr-remove-extra-decl.patch"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f ;no tests
-       #:make-flags (list (string-append "prefix=" %output)
-                          (string-append "libdir=" %output "/lib")
-                          ;; EFIDIR denotes a subdirectory relative to the
-                          ;; EFI System Partition where the loader will be
-                          ;; installed (known as OS_VENDOR in the code).
-                          ;; GRUB overrides this, as such it's only used if
-                          ;; nothing else is specified on the command line.
-                          "EFIDIR=gnu")
-       #:phases (modify-phases %standard-phases (delete 'configure))))
+       (patches (search-patches "efibootmgr-remove-extra-decl.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Cast the first argument to the correct type.  Extracted
+           ;; from upstream commit e8ce9fecebd15adb4.
+           (substitute* '("src/efibootdump.c" "src/efibootmgr.c")
+             (("efidp_format_device_path\\(text_path,")
+              "efidp_format_device_path((unsigned char *)text_path,"))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no tests
+      #:make-flags #~(list (string-append "prefix=" #$output)
+                           (string-append "libdir=" #$output "/lib")
+                           ;; EFIDIR denotes a subdirectory relative to the
+                           ;; EFI System Partition where the loader will be
+                           ;; installed (known as OS_VENDOR in the code).
+                           ;; GRUB overrides this, as such it's only used if
+                           ;; nothing else is specified on the command line.
+                           "EFIDIR=gnu")
+      #:phases #~(modify-phases %standard-phases (delete 'configure))))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -7227,140 +7248,114 @@ userspace queueing component and the logging subsystem.")
     (license license:gpl2)))
 
 (define-public proot
-  (let ((revision "0")
-        (commit "a70023ab3db47d011265451b99a1abef7b9d7afc"))
-    (package
-      (name "proot")
-      ;; The last stable release was made in 2015, and fails to build for the
-      ;; aarch64 platform.  Use the latest commit, which includes fixes for
-      ;; the supported ARM architectures and the test suite, among others.
-      (version (git-version "5.2.0-alpha" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/proot-me/PRoot")
-               (commit (string-append commit))))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1kmry3rb967phxnxjfnx310gy1d4gpmjd6fp3hbm9v9jciysxy4z"))))
-      (build-system gnu-build-system)
-      ;; The powerpc64le-linux and mips64el-linux architectures are not
-      ;; supported (see:
-      ;; https://github.com/proot-me/proot/blob/master/src/arch.h#L51).
-      (supported-systems '("x86_64-linux" "i686-linux"
-                           "armhf-linux" "aarch64-linux" "i586-gnu"))
-      (arguments
-       ;; Disable the test suite on armhf-linux, as there are too many
-       ;; failures to keep track of (see for example:
-       ;; https://github.com/proot-me/proot/issues/286).
-       `(#:tests? ,(not (string-prefix? "armhf"
-                                        (or (%current-target-system)
-                                            (%current-system))))
-         #:make-flags '("-C" "src")
-         #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'patch-sources
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        (substitute* (find-files "src" "\\.[ch]$")
-                          (("\"/bin/sh\"")
-                           (string-append "\"" (assoc-ref inputs "bash")
-                                          "/bin/sh\"")))
-
-                        (substitute* "src/GNUmakefile"
-                          (("/bin/echo") (which "echo"))
-                          (("^VERSION = .*")
-                           (string-append "VERSION := " ,version "\n")))
-
-                        (substitute* (find-files "test" "\\.sh$")
-                          ;; Some of the tests try to "bind-mount" /bin/true.
-                          (("-b /bin/true:")
-                           (string-append "-b " (which "true") ":"))
-                          ;; Likewise for /bin.
-                          (("-b /bin:") "-b /gnu:")
-                          ;; Others try to run /bin/sh.
-                          (("/bin/sh") (which "sh"))
-                          ;; Others assume /etc/fstab exists.
-                          (("/etc/fstab") "/etc/passwd"))
-                        (substitute* "test/GNUmakefile"
-                          (("-b /bin:") "-b /gnu:"))
-                        (substitute* "test/test-c6b77b77.mk"
-                          (("/bin/bash") (which "bash"))
-                          (("/usr/bin/test") (which "test")))
-                        (substitute* "test/test-16573e73.c"
-                          (("/bin/([a-z-]+)" _ program)
-                           (which program)))
-                        (substitute* "test/test-d2175fc3.sh"
-                          (("\\^/bin/true\\$") "$(which true)"))
-                        (substitute* "test/test-5467b986.sh"
-                          (("-w /usr") "-w /gnu")
-                          (("-w usr") "-w gnu")
-                          (("/usr/share") "/gnu/store")
-                          (("share") "store"))
-                        (substitute* "test/test-092c5e26.sh"
-                          (("-q echo ")
-                           "-q $(which echo) "))
-
-                        ;; The following tests are known to fail (see:
-                        ;; https://github.com/proot-me/proot/issues/184).
-                        (delete-file "test/test-0228fbe7.sh")
-                        (delete-file "test/test-2db65cd2.sh")
-                        (delete-file "test/test-cdd39012.sh")
-                        (delete-file "test/test-d92b57ca.sh")
-
-                        ;; This one fails on a waitpid call that returns 1 (see:
-                        ;; https://github.com/proot-me/proot/issues/261).
-                        (delete-file "test/test-ptrace01.c")
-
-                        ;; XXX: This test fails in an obscure corner case, just
-                        ;; skip it.
-                        (delete-file "test/test-kkkkkkkk.c")
-
-                        ;; This one requires Docker.
-                        (delete-file "test/test-docker.sh")
-
-                        ;; The socket tests requires networking.
-                        (for-each delete-file
-                                  (find-files "test" "test-socket.*\\.sh$"))))
-                    (delete 'configure)
-                    (add-after 'build 'build-manpage
-                      (lambda _
-                        (with-directory-excursion "doc"
-                          (invoke "make" "proot/man.1" "SUFFIX=.py"))))
-                    (replace 'check
-                      (lambda* (#:key tests? #:allow-other-keys)
-                        (when tests?
-                          (let ((n (parallel-job-count)))
-                            ;; Most of the tests expect "/bin" to be in $PATH so
-                            ;; they can run things that live in $ROOTFS/bin.
-                            (setenv "PATH"
-                                    (string-append (getenv "PATH") ":/bin"))
-                            (invoke "make" "check" "-C" "test"
-                                    ;;"V=1"
-                                    "-j" (number->string n))))))
-                    (replace 'install
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        ;; The 'install' rule does nearly nothing.
-                        (let* ((out (assoc-ref outputs "out"))
-                               (man1 (string-append out "/share/man/man1")))
-                          ;; TODO: 'make install-care' (does not even
-                          ;; build currently.)
-                          (invoke "make" "-C" "src" "install"
-                                  (string-append "PREFIX=" out))
-                          (mkdir-p man1)
-                          (copy-file "doc/proot/man.1"
-                                     (string-append man1 "/proot.1"))))))))
-      (native-inputs (list which
-                           ;; For 'mcookie', used by some of the tests.
-                           util-linux
-                           coreutils
-                           pkg-config
-                           ;; For rst2man, used to generate the manual page.
-                           python-docutils))
-      (inputs (list libarchive talloc))
-      (home-page "https://github.com/proot-me/PRoot")
-      (synopsis "Unprivileged chroot, bind mount, and binfmt_misc")
-      (description
-       "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind},
+  (package
+    (name "proot")
+    (version "5.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/proot-me/PRoot")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1r1ga3xbwq5kx4i8ihj1p6nmgaa14lfkwxzpsbdcmfh1jimpbmzk"))))
+    (build-system gnu-build-system)
+    ;; Many architectures are not supported (see:
+    ;; https://github.com/proot-me/proot/blob/master/src/arch.h#L51).
+    (supported-systems '("x86_64-linux" "i686-linux"
+                         "armhf-linux" "aarch64-linux" "i586-gnu"))
+    (arguments
+     ;; Disable the test suite on armhf-linux, as there are too many
+     ;; failures to keep track of (see for example:
+     ;; https://github.com/proot-me/proot/issues/286).
+     `(#:tests? ,(not (string-prefix? "armhf"
+                                      (or (%current-target-system)
+                                          (%current-system))))
+       #:make-flags '("-C" "src")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-sources
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (substitute* (find-files "src" "\\.[ch]$")
+                        (("\"/bin/sh\"")
+                         (string-append "\"" (assoc-ref inputs "bash")
+                                        "/bin/sh\"")))
+
+                      (substitute* "src/GNUmakefile"
+                        (("/bin/echo") (which "echo"))
+                        (("^VERSION = .*")
+                         (string-append "VERSION := " ,version "\n")))
+
+                      (substitute* (find-files "test" "\\.sh$")
+                        ;; Some of the tests try to "bind-mount" /bin/true.
+                        (("-b /bin/true:")
+                         (string-append "-b " (which "true") ":"))
+                        ;; Likewise for /bin.
+                        (("-b /bin:") "-b /gnu:")
+                        ;; Others try to run /bin/sh.
+                        (("/bin/sh") (which "sh"))
+                        ;; Others assume /etc/fstab exists.
+                        (("/etc/fstab") "/etc/passwd"))
+                      (substitute* "test/GNUmakefile"
+                        (("-b /bin:") "-b /gnu:"))
+                      (substitute* "test/test-c6b77b77.mk"
+                        (("/bin/bash") (which "bash"))
+                        (("/usr/bin/test") (which "test")))
+                      (substitute* "test/test-16573e73.c"
+                        (("/bin/([a-z-]+)" _ program)
+                         (which program)))
+                      (substitute* "test/test-5467b986.sh"
+                        (("-w /usr") "-w /gnu")
+                        (("-w usr") "-w gnu")
+                        (("/usr/share") "/gnu/store")
+                        (("share") "store"))
+                      (substitute* "test/test-092c5e26.sh"
+                        (("-q echo ")
+                         "-q $(which echo) "))
+
+                      ;; The socket tests requires networking.
+                      (for-each delete-file
+                                (find-files "test" "test-socket.*\\.sh$"))))
+                  (delete 'configure)
+                  (add-after 'build 'build-manpage
+                    (lambda _
+                      (with-directory-excursion "doc"
+                        (invoke "make" "proot/man.1" "SUFFIX=.py"))))
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (let ((n (parallel-job-count)))
+                          ;; Most of the tests expect "/bin" to be in $PATH so
+                          ;; they can run things that live in $ROOTFS/bin.
+                          (setenv "PATH"
+                                  (string-append (getenv "PATH") ":/bin"))
+                          (invoke "make" "check" "-C" "test"
+                                  ;;"V=1"
+                                  "-j" (number->string n))))))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; The 'install' rule does nearly nothing.
+                      (let* ((out (assoc-ref outputs "out"))
+                             (man1 (string-append out "/share/man/man1")))
+                        ;; TODO: 'make install-care' (does not even
+                        ;; build currently.)
+                        (invoke "make" "-C" "src" "install"
+                                (string-append "PREFIX=" out))
+                        (mkdir-p man1)
+                        (copy-file "doc/proot/man.1"
+                                   (string-append man1 "/proot.1"))))))))
+    (native-inputs (list which
+                         ;; For 'mcookie', used by some of the tests.
+                         util-linux
+                         coreutils
+                         pkg-config
+                         ;; For rst2man, used to generate the manual page.
+                         python-docutils))
+    (inputs (list libarchive talloc))
+    (home-page "https://github.com/proot-me/PRoot")
+    (synopsis "Unprivileged chroot, bind mount, and binfmt_misc")
+    (description
+     "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind},
 and @code{binfmt_misc}.  This means that users don't need any privileges or
 setup to do things like using an arbitrary directory as the new root
 file system, making files accessible somewhere else in the file system
@@ -7369,7 +7364,7 @@ transparently through QEMU user-mode.  Also, developers can use PRoot as a
 generic process instrumentation engine thanks to its extension mechanism.
 Technically PRoot relies on @code{ptrace}, an unprivileged system-call
 available in the kernel Linux.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public proot-static
   (package
@@ -8402,6 +8397,7 @@ platforms, it is not limited to resource-constrained systems.")
 utilities.  Using @code{kexec}, it is possible to boot directly into a new
 kernel from the context of an already-running kernel, bypassing the normal
 system boot process.")
+    (supported-systems (delete "riscv64-linux" %supported-systems))
     (license license:gpl2)))
 
 (define-public cachefilesd
@@ -8807,3 +8803,33 @@ older system-wide @file{/sys} interface.")
     (license (list license:lgpl2.1+   ;; libgpiod
                    license:gpl2+      ;; gpio-tools
                    license:lgpl3+)))) ;; C++ bindings
+
+(define-public libtree
+  (package
+    (name "libtree")
+    (version "3.0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/haampie/libtree")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "072624anz9g01mp5vfkahfmzy0nb7axg5rwk3n1yrdm4hr3d4zrb"))))
+    (arguments
+     (list #:make-flags
+           ;; NOTE: Official documentation recommends to build libtree with
+           ;; "-static" flag.
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "PREFIX=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure))))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/haampie/libtree")
+    (synopsis "Show output of @command{ldd} as a tree")
+    (description
+     "This tool turns @command{ldd} into a tree and explains how shared
+libraries are found or why they cannot be located.")
+    (license license:expat)))
diff --git a/gnu/packages/lisp-check.scm b/gnu/packages/lisp-check.scm
index 4e6334ff86..dd8ef90892 100644
--- a/gnu/packages/lisp-check.scm
+++ b/gnu/packages/lisp-check.scm
@@ -5,7 +5,7 @@
 ;;; 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>
-;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
@@ -844,6 +844,49 @@ interactive development.")
 (define-public ecl-stefil
   (sbcl-package->ecl-package sbcl-stefil))
 
+(define-public sbcl-try
+  (let ((commit "a1fffad2ca328b3855f629b633ab1daaeec929c2")
+        (revision "1"))
+    (package
+      (name "sbcl-try")
+      (version (git-version "0.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/melisgl/try")
+               (commit commit)))
+         (file-name (git-file-name "cl-try" version))
+         (sha256
+          (base32 "03dm2i2y4wiyzz9d25zdxm6gdglnvwali0ylp0rfwpk6wf29sj09"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       (list sbcl-cl-ppcre))
+      (inputs
+       (list sbcl-alexandria
+             sbcl-closer-mop
+             sbcl-ieee-floats
+             sbcl-mgl-pax
+             sbcl-trivial-gray-streams))
+      (arguments
+       `(#:asd-files '("try.asdf.asd" "try.asd")
+         ;; FIXME: Get tests to work
+         #:tests? #f))
+      (home-page "https://github.com/melisgl/try")
+      (synopsis "Common Lisp test framework")
+      (description
+       "@code{Try} is a library for unit testing with equal support for
+interactive and non-interactive workflows.  Tests are functions, and almost
+everything else is a condition, whose types feature prominently in
+parameterization.")
+      (license license:expat))))
+
+(define-public cl-try
+  (sbcl-package->cl-source-package sbcl-try))
+
+(define-public ecl-try
+  (sbcl-package->ecl-package sbcl-try))
+
 (define-public sbcl-unit-test
   (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735")
         (revision "1"))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index ab85c05bc9..85f8af31bb 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -14,23 +14,24 @@
 ;;; 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>
-;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
 ;;; Copyright © 2020 Dimakis Dimakakos <me@bendersteed.tech>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020, 2021 Adam Kandur <rndd@tuta.io>
 ;;; Copyright © 2020, 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
-;;; Copyright © 2021 Aurora <rind38@disroot.org>
+;;; Copyright © 2021, 2022 Aurora <rind38@disroot.org>
 ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
 ;;; Copyright © 2021 André A. Gomes <andremegafone@gmail.com>
-;;; Copyright © 2021 Cage <cage-dev@twistfold.it>
+;;; Copyright © 2021, 2022 Cage <cage-dev@twistfold.it>
 ;;; Copyright © 2021 Cameron Chaparro <cameron@cameronchaparro.com>
 ;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
 ;;; Copyright © 2021, 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2021, 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2021 Jacob MacDonald <jaccarmac@gmail.com>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,6 +69,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages enchant)
+  #:use-module (gnu packages figlet)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
@@ -459,10 +461,10 @@ support.")
 
 (define-public sbcl-trivial-gray-streams
   (let ((revision "1")
-        (commit "ebd59b1afed03b9dc8544320f8f432fdf92ab010"))
+        (commit "2b3823edbc78a450db4891fd2b566ca0316a7876"))
     (package
       (name "sbcl-trivial-gray-streams")
-      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (version (git-version "2.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -471,9 +473,8 @@ support.")
            (url "https://github.com/trivial-gray-streams/trivial-gray-streams")
            (commit commit)))
          (sha256
-          (base32 "0b1pxlccmnagk9cbh4cy8s5k66g3x0gwib5shjwr24xvrji6lp94"))
-         (file-name
-          (string-append "trivial-gray-streams-" version "-checkout"))))
+          (base32 "1hipqwwd5ylskybd173rvlsk7ds4w4nq1cmh9952ivm6dgh7pwzn"))
+         (file-name (git-file-name "cl-trivial-gray-streams" version))))
       (build-system asdf-build-system/sbcl)
       (synopsis "Compatibility layer for Gray streams implementations")
       (description "Gray streams is an interface proposed for inclusion with
@@ -791,17 +792,16 @@ ANSI-compliant Common Lisp implementations.")
 (define-public sbcl-zpb-ttf
   (package
     (name "sbcl-zpb-ttf")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/xach/zpb-ttf")
              (commit (string-append "release-" version))))
-       (file-name (git-file-name name version))
+       (file-name (git-file-name "cl-zpb-ttf" version))
        (sha256
-        (base32
-         "1wh66vjijzqlydnrihynpwp6796917xwrh0i9li93c17kyxa74ih"))))
+        (base32 "1ziwlfys15m95hh5c54g3xv78vjxadd6qi9zf9kvd2bv70qsixqk"))))
     (build-system asdf-build-system/sbcl)
     (home-page "https://github.com/xach/zpb-ttf")
     (synopsis "TrueType font file access for Common Lisp")
@@ -886,22 +886,23 @@ spatially-extended data.")
 
 (define-public sbcl-flexichain
   ;; There are no releases.
-  (let ((commit "13d2a6c505ed0abfcd4c4ec7d7145059b06855d6")
-        (revision "1"))
+  (let ((commit "9af644a6323f303a936a391b956babcbfe7b0c67")
+        (revision "2"))
     (package
       (name "sbcl-flexichain")
-      (version "1.5.1")
+      (version (git-version "1.5.1" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/robert-strandh/Flexichain")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-flexichain" version))
          (sha256
-          (base32
-           "0pfyvhsfbjd2sjb30grfs52r51a428xglv7bwydvpg2lc117qimg"))))
+          (base32 "1ivkffnkc1iqmpl1p1rgyfbbgjmjcid4iszvdql1jjz324lq94g6"))))
       (build-system asdf-build-system/sbcl)
+      (inputs
+       (list sbcl-trivial-garbage))
       (home-page "https://github.com/robert-strandh/Flexichain.git")
       (synopsis "Dynamically add elements to or remove them from sequences")
       (description
@@ -917,8 +918,8 @@ a sequence (or chain) of such elements.")
   (sbcl-package->cl-source-package sbcl-flexichain))
 
 (define-public sbcl-cl-pdf
-  (let ((commit "dbafd62afcb2d2e9164054c72612763721297d59")
-        (revision "1"))
+  (let ((commit "f57905e0b5adb365d611a912613cee70d78d20d8")
+        (revision "2"))
     (package
       (name "sbcl-cl-pdf")
       (version (git-version "2.0.0" revision commit))
@@ -930,10 +931,12 @@ a sequence (or chain) of such elements.")
                (commit commit)))
          (file-name (git-file-name "cl-pdf" version))
          (sha256
-          (base32 "0w6igiav35a65h6r4p1g6dw2i7mw0s06mviw31768r6z62l1ny1v"))))
+          (base32 "0ir9xyj10lyp8mwb3n2pbhnwv0jx0ph1xlhh32sfgalk3bz0ms58"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-iterate sbcl-zpb-ttf))
+      (arguments
+       `(#:asd-systems '("cl-pdf" "cl-pdf-parser")))
       (home-page "https://github.com/mbattyani/cl-pdf")
       (synopsis "Common Lisp library for generating PDF files")
       (description
@@ -1087,14 +1090,14 @@ multiple inspectors with independent history.")
         (revision "1"))
     (package
       (name "sbcl-parse-js")
-      (version (string-append "0.0.0-" revision "." (string-take commit 9)))
+      (version (git-version "0.0.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "http://marijn.haverbeke.nl/git/parse-js")
                (commit commit)))
-         (file-name (string-append name "-" commit "-checkout"))
+         (file-name (git-file-name "cl-parse-js" version))
          (sha256
           (base32
            "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
@@ -1144,15 +1147,16 @@ else @code{parse-number} signals an error of type @code{invalid-number}.")
 (define-public sbcl-iterate
   (package
     (name "sbcl-iterate")
-    (version "1.5")
+    (version "1.5.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://common-lisp.net/project/iterate/releases/"
-                           "iterate-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.common-lisp.net/iterate/iterate.git")
+             (commit version)))
+       (file-name (git-file-name "cl-iterate" version))
        (sha256
-        (base32
-         "1lqsbhrkfl0yif46aymvb7l3nb9wdcmj4jyw485blj32jb4famzn"))))
+        (base32 "0l6l8fpgcpwpmi00jwmamxbspbqa8fil6dv11bf9gaxxbw41f8c2"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      (list sbcl-rt))
@@ -1181,14 +1185,14 @@ It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
         (revision "1"))
     (package
       (name "sbcl-cl-uglify-js")
-      (version (string-append "0.1-" revision "." (string-take commit 9)))
+      (version (git-version "0.1" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/mishoo/cl-uglify-js")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-uglify-js" version))
          (sha256
           (base32
            "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
@@ -1272,10 +1276,10 @@ compressor.  It works on data produced by @code{parse-js} to generate a
 
 (define-public sbcl-cl-strings
   (let ((revision "1")
-        (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
+        (commit "93ec4177fc51f403a9f1ef0a8933f36d917f2140"))
     (package
       (name "sbcl-cl-strings")
-      (version (git-version "0.0.0" revision commit))
+      (version (git-version "0.0.1" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -1283,11 +1287,10 @@ compressor.  It works on data produced by @code{parse-js} to generate a
                (url "https://github.com/diogoalexandrefranco/cl-strings")
                (commit commit)))
          (sha256
-          (base32
-           "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
-         (file-name (string-append "cl-strings-" version "-checkout"))))
+          (base32 "1j8hs54fn0wsf5zfzhhgiva47n9hsmfa74iinahz6nmcs8iy75aj"))
+         (file-name (git-file-name "cl-strings" version))))
       (build-system asdf-build-system/sbcl)
-      (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
+      (synopsis "Set of utilities to manipulate strings in Common Lisp")
       (description
        "@command{cl-strings} is a small, portable, dependency-free set of
 utilities that make it even easier to manipulate text in Common Lisp.  It has
@@ -1364,19 +1367,20 @@ documentation system, explicit development support, etc.")
 
 (define-public sbcl-babel
   ;; No release since 2014.
-  (let ((commit "aeed2d1b76358db48e6b70a64399c05678a6b9ea"))
+  (let ((commit "f892d0587c7f3a1e6c0899425921b48008c29ee3")
+        (revision "2"))
     (package
       (name "sbcl-babel")
-      (version (git-version "0.5.0" "1" commit))
+      (version (git-version "0.5.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/cl-babel/babel")
                (commit commit)))
-         (file-name (git-file-name "babel" version))
+         (file-name (git-file-name "cl-babel" version))
          (sha256
-          (base32 "0lkvv4xdpv4cv1y2bqillmabx8sdb2y4l6pbinq6mjh33w2brpvb"))))
+          (base32 "04frn19mngvsh8bh7fb1rfjm8mqk8bgzx5c43dg7z02nfsxkqqak"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-hu.dwim.stefil))
@@ -1386,7 +1390,7 @@ documentation system, explicit development support, etc.")
       (synopsis "Charset encoding and decoding library")
       (description "Babel is a charset encoding and decoding library, not unlike
 GNU libiconv, but completely written in Common Lisp.")
-      (license license:expat))))
+      (license (list license:bsd-2 license:expat)))))
 
 (define-public cl-babel
   (sbcl-package->cl-source-package sbcl-babel))
@@ -1684,8 +1688,8 @@ libraries such as Bordeaux-Threads and Eager Future.")
   (sbcl-package->ecl-package sbcl-calispel))
 
 (define-public sbcl-esrap
-  (let ((commit "866f28fa7a2c1d3fb6d0d0423850d1f9d955750f")
-        (revision "2"))
+  (let ((commit "4c82a863871e117f0041b9ef37e61c0b62318aa7")
+        (revision "3"))
     (package
       (name "sbcl-esrap")
       (version (git-version "0.18" revision commit))
@@ -1696,8 +1700,8 @@ libraries such as Bordeaux-Threads and Eager Future.")
                (url "https://github.com/scymtym/esrap")
                (commit commit)))
          (sha256
-          (base32 "19rb3dmpw3csqqagmrf80dpk5d2qn0l7fpfmxx5zwdnjk367kbwg"))
-         (file-name (git-file-name "esrap" version))))
+          (base32 "16nc3rhxd61xabja1h9akqqva0cmz2gxk0bkaqy10h492wx93d81"))
+         (file-name (git-file-name "cl-esrap" version))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -1816,8 +1820,8 @@ C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
   (sbcl-package->ecl-package sbcl-colorize))
 
 (define-public sbcl-3bmd
-  (let ((commit "6fc5759448f6f6df6f6df556e020a289a2643288")
-        (revision "2"))
+  (let ((commit "4e08d82d7c8fb1b8fc708c87f4d9d13a1ab490cb")
+        (revision "3"))
     (package
       (name "sbcl-3bmd")
       (version (git-version "0.0.0" revision commit))
@@ -1828,8 +1832,8 @@ C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
                (url "https://github.com/3b/3bmd")
                (commit commit)))
          (sha256
-          (base32 "1avmbp8xdjlbqpqk7p3vmj7abiw5p3vb5mrxp4wlvgql4sf6z3p4"))
-         (file-name (git-file-name "3bmd" version))))
+          (base32 "1j885ykg2yds0l7dmw21lrhs7pd66lf541pf9lb677nkhc2f62jz"))
+         (file-name (git-file-name "cl-3bmd" version))))
       (build-system asdf-build-system/sbcl)
       (arguments
        `(#:asd-systems
@@ -1839,12 +1843,22 @@ C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
            "3bmd-ext-tables"
            "3bmd-ext-wiki-links"
            "3bmd-youtube"
-           "3bmd-ext-code-blocks")))
+           "3bmd-ext-code-blocks")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-python3-path
+             (lambda _
+               (substitute* "code-blocks.lisp"
+                 (("python3") (which "python3"))))))))
+      (native-inputs
+       (list sbcl-fiasco))
       (inputs
-       `(("alexandria" ,sbcl-alexandria)
-         ("colorize" ,sbcl-colorize)
-         ("esrap" ,sbcl-esrap)
-         ("split-sequence" ,sbcl-split-sequence)))
+       (list python
+             python-pygments
+             sbcl-alexandria
+             sbcl-colorize
+             sbcl-split-sequence
+             sbcl-esrap))
       (home-page "https://github.com/3b/3bmd")
       (synopsis "Markdown processor in Command Lisp using esrap parser")
       (description
@@ -1859,31 +1873,35 @@ for parsing, and grammar based on @command{peg-markdown}.")
   (sbcl-package->ecl-package sbcl-3bmd))
 
 (define-public sbcl-cl-fad
-  (package
-    (name "sbcl-cl-fad")
-    (version "0.7.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/edicl/cl-fad/")
-             (commit (string-append "v" version))))
-       (sha256
-        (base32
-         "1gc8i82v6gks7g0lnm54r4prk2mklidv2flm5fvbr0a7rsys0vpa"))
-       (file-name (string-append "cl-fad" version "-checkout"))))
-    (build-system asdf-build-system/sbcl)
-    (inputs
-     (list sbcl-bordeaux-threads))
-    (synopsis "Portable pathname library for Common Lisp")
-    (description
-     "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
+  ;; No release since 2019
+  (let ((commit "3f4d32d3aa1093966046d001411a852eb8f4b535")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-fad")
+      (version (git-version "0.7.6" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edicl/cl-fad/")
+               (commit commit)))
+         (sha256
+          (base32 "0a1xqldrq170lflnns3xp6swpnvsvllf5vq0h7sz8jqh4riqlny6"))
+         (file-name (git-file-name "cl-fad" version))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       (list sbcl-cl-ppcre sbcl-unit-test))
+      (inputs
+       (list sbcl-alexandria sbcl-bordeaux-threads))
+      (synopsis "Portable pathname library for Common Lisp")
+      (description
+       "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
 Lisp's standard pathname functions.  It is intended to provide some
 unification between current CL implementations on Windows, OS X, Linux, and
 Unix.  Most of the code was written by Peter Seibel for his book Practical
 Common Lisp.")
-    (home-page "https://edicl.github.io/cl-fad/")
-    (license license:bsd-2)))
+      (home-page "https://edicl.github.io/cl-fad/")
+      (license license:bsd-2))))
 
 (define-public cl-fad
   (sbcl-package->cl-source-package sbcl-cl-fad))
@@ -1972,7 +1990,7 @@ also be supported.")
 (define-public sbcl-ironclad
   (package
     (name "sbcl-ironclad")
-    (version "0.56")
+    (version "0.57")
     (source
      (origin
        (method git-fetch)
@@ -1980,8 +1998,8 @@ also be supported.")
              (url "https://github.com/sharplispers/ironclad/")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "0dhakily94vswl8a6q9ad0af8nk4pnvfgx7sw9kxl1wdq1pkg3ni"))
-       (file-name (git-file-name name version))))
+        (base32 "123qnf4rmi06vyfmnpdzbjskz8vk35kppjpmms21bxhb7rhxzlh2"))
+       (file-name (git-file-name "cl-ironclad" version))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      ;; Tests only.
@@ -2100,7 +2118,7 @@ writing code that contains string literals that contain code themselves.")
 (define-public sbcl-slime-swank
   (package
     (name "sbcl-slime-swank")
-    (version "2.26.1")
+    (version "2.27")
     (source
      (origin
        (file-name (git-file-name "slime-swank" version))
@@ -2109,8 +2127,7 @@ writing code that contains string literals that contain code themselves.")
              (url "https://github.com/slime/slime/")
              (commit (string-append "v" version))))
        (sha256
-        (base32
-         "1a25ixb7q4svqabxnhwkk43v47mbsh13qwm7qlazkd3zkr8j3cli"))))
+        (base32 "1s5mbljlz22pb90gwbd380nighkz6gdxl77hc08gri7wwr5gy5n2"))))
     (build-system asdf-build-system/sbcl)
     (arguments
      '(#:asd-systems '("swank")))
@@ -2129,11 +2146,11 @@ processes that doesn't run under Emacs.  Lisp processes created by
   (sbcl-package->ecl-package sbcl-slime-swank))
 
 (define-public sbcl-mgl-pax
-  (let ((commit "a7f904784ae59bbeeeb15a14348cda46ed9bdeb3")
+  (let ((commit "ed82a80207b70801fab061f6592cf7d7355294a6")
         (revision "0"))
     (package
       (name "sbcl-mgl-pax")
-      (version (git-version "0.0.4" revision commit))
+      (version (git-version "0.1.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -2141,22 +2158,29 @@ processes that doesn't run under Emacs.  Lisp processes created by
                (url "https://github.com/melisgl/mgl-pax")
                (commit commit)))
          (sha256
-          (base32 "119pb3485m6hqsqsaqpaq2x8xh5lrbqapw7zaqyq425n75vd1mc8"))
-         (file-name (git-file-name "mgl-pax" version))))
+          (base32 "008wfa70q68cj6npi4107mfjhjzfjmvrhm1x51jpndsn2165c5bx"))
+         (file-name (git-file-name "cl-mgl-pax" version))))
       (build-system asdf-build-system/sbcl)
+      ;; (native-inputs
+      ;;  (list sbcl-try))
       (inputs
-       `(("3bmd" ,sbcl-3bmd)
-         ("alexandria" ,sbcl-alexandria)
-         ("colorize" ,sbcl-colorize)
-         ("md5" ,sbcl-md5)
-         ("named-readtables" ,sbcl-named-readtables)
-         ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
-         ("swank" ,sbcl-slime-swank)))
+       (list sbcl-3bmd
+             sbcl-alexandria
+             sbcl-colorize
+             sbcl-md5
+             sbcl-named-readtables
+             sbcl-pythonic-string-reader
+             sbcl-slime-swank))
       (arguments
-       `(#:asd-systems '("mgl-pax"
+       `(#:asd-files '("mgl-pax.asdf.asd"
+                       "mgl-pax.asd")
+         #:asd-systems '("mgl-pax"
                          "mgl-pax/navigate"
                          "mgl-pax/document"
-                         "mgl-pax/transcribe")))
+                         "mgl-pax/transcribe")
+         ;; Tests disabled because of a circular dependency
+         ;;   try -> mgl-pax -> try
+         #:tests? #f))
       (synopsis "Exploratory programming environment and documentation generator")
       (description
        "PAX provides an extremely poor man's Explorable Programming
@@ -2397,8 +2421,8 @@ named color.")
       (native-inputs
        (list sbcl-prove))
       (arguments
-       ;; TODO: Tests don't find "proc-parse-test", why?
-       `(#:tests? #f))
+       '(#:asd-systems '("proc-parse-test"
+			 "proc-parse")))
       (synopsis "Procedural vector parser")
       (description
        "This is a string/octets parser library for Common Lisp with speed and
@@ -3757,7 +3781,7 @@ process form data posted with HTTP POST method using enctype
 (define-public sbcl-md5
   (package
     (name "sbcl-md5")
-    (version "2.0.4")
+    (version "2.0.5")
     (source
      (origin
        (method git-fetch)
@@ -3766,7 +3790,7 @@ process form data posted with HTTP POST method using enctype
               (commit (string-append "release-" version))))
        (file-name (git-file-name "md5" version))
        (sha256
-        (base32 "1waqxzm7vlc22n92hv8r27anlvvjkkh9slhrky1ww7mdx4mmxwb8"))))
+        (base32 "1g20np6rhn3y08z8mlmlk721mw2207s52v2pwp4smm3lz25sx3q5"))))
     (build-system asdf-build-system/sbcl)
     (home-page "https://github.com/pmai/md5")
     (synopsis
@@ -3786,8 +3810,8 @@ RFC 1321 by R. Rivest, published April 1992.")
      (list ecl-flexi-streams))))
 
 (define-public sbcl-cl+ssl
-  (let ((commit "09e896b04c112e7eb0f9d443a5801d557fbcd3ea")
-        (revision "2"))
+  (let ((commit "046d698cf65539faf9aba0a5ccd086a9d6f53eef")
+        (revision "3"))
     (package
       (name "sbcl-cl+ssl")
       (version (git-version "0.0.0" revision commit))
@@ -3799,7 +3823,7 @@ RFC 1321 by R. Rivest, published April 1992.")
                (commit commit)))
          (file-name (git-file-name "cl+ssl" version))
          (sha256
-          (base32 "1ynvk8rbd5zvbdrl8mr49jwmg9fh94clzkagkza9jmpj0p1qvynd"))))
+          (base32 "110yhb0f1c8yilqsgza2xhv3675i41iizylibgy5qc5fa2lnaxbv"))))
       (build-system asdf-build-system/sbcl)
       (arguments
        '(#:phases
@@ -3812,7 +3836,18 @@ RFC 1321 by R. Rivest, published April 1992.")
                    (assoc-ref inputs "openssl") "/lib/" all))
                  (("libcrypto.so" all)
                   (string-append
-                   (assoc-ref inputs "openssl") "/lib/" all))))))))
+                   (assoc-ref inputs "openssl") "/lib/" all)))))
+           (add-after 'fix-paths 'fix-tests
+             (lambda _
+               ;; Disable coverall support in tests because of a circular
+               ;; dependency: cl+ssl -> cl-coverall -> dexador
+               ;;          -> clack -> hunchentoot -> cl+ssl
+               (substitute* "cl+ssl.test.asd"
+                 (("\\(:feature \\(:or :sbcl :ccl\\) :cl-coveralls\\)")
+                  "")))))))
+      (native-inputs
+       (list ;sbcl-cl-coveralls
+             sbcl-fiveam))
       (inputs
        (list openssl
              sbcl-cffi
@@ -3870,7 +3905,6 @@ Rosenberg's Common Lisp packages.")
   (sbcl-package->ecl-package sbcl-kmrcl))
 
 (define-public sbcl-cl-base64
-  ;; 3.3.4 tests are broken, upstream fixes them.
   (let ((commit "577683b18fd880b82274d99fc96a18a710e3987a"))
     (package
       (name "sbcl-cl-base64")
@@ -3969,8 +4003,8 @@ as good or bad as the next one.")
 
 (define-public sbcl-chipz
   (let ((version "0.8")
-        (commit "75dfbc660a5a28161c57f115adf74c8a926bfc4d")
-        (revision "1"))
+        (commit "82a17d39c78d91f6ea63a03aca8f9aa6069a5e11")
+        (revision "2"))
     (package
       (name "sbcl-chipz")
       (version (git-version version revision commit))
@@ -3978,12 +4012,11 @@ as good or bad as the next one.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/froydnj/chipz")
+               (url "https://github.com/sharplispers/chipz")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-chipz" version))
          (sha256
-          (base32
-           "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg"))))
+          (base32 "1n4f22i9j8iapjd6yx1z348rggcybvg9h794kx9libjgz4bs371h"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-flexi-streams))
@@ -4072,6 +4105,10 @@ sockets, SSL, continuable uploads, file uploads, cookies, and more.")
            sbcl-rfc2388
            sbcl-trivial-backtrace
            sbcl-usocket))
+    (arguments
+     `(;; FIXME: Tests fail because they fail to open the file
+       ;; "/proc/sys/kernel/osrelease"
+       #:tests? #f))
     (home-page "https://edicl.github.io/hunchentoot/")
     (synopsis "Web server written in Common Lisp")
     (description
@@ -4307,9 +4344,7 @@ Lisp. It is intended to be a replacement of PURI.")
         (base32 "0briia9bk3lbr0frnx39d1qg6i38dm4j6z9w3yga3d40k6df4a90"))))
      (build-system asdf-build-system/sbcl)
      (arguments
-      ;; Tests fail with: Component MYWAY-ASD::MYWAY-TEST not found, required
-      ;; by #<SYSTEM "myway">. Why?
-      '(#:tests? #f))
+      '(#:asd-systems '("myway-test" "myway")))
      (native-inputs
       (list sbcl-prove))
      (inputs
@@ -4342,9 +4377,7 @@ Lisp. It is intended to be a replacement of PURI.")
         (base32 "1xz79q0p2mclf3sqjiwf6izdpb6xrsr350bv4mlmdlm6rg5r99px"))))
      (build-system asdf-build-system/sbcl)
      (arguments
-      ;; Tests fail with: Component XSUBSEQ-ASD::XSUBSEQ-TEST not found,
-      ;; required by #<SYSTEM "xsubseq">. Why?
-      '(#:tests? #f))
+      '(#:asd-systems '("xsubseq-test" "xsubseq")))
      (native-inputs
       (list sbcl-prove))
      (home-page "https://github.com/fukamachi/xsubseq")
@@ -4377,11 +4410,10 @@ effieiently.")
           (base32 "0qz1zzxx0wm5ff7gpgsq550a59p0qj594zfmm2rglj97dahj54l7"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       ;; Tests fail with: Component SMART-BUFFER-ASD::SMART-BUFFER-TEST not
-       ;; found, required by #<SYSTEM "smart-buffer">. Why?
-       `(#:tests? #f))
+       '(#:asd-systems '("smart-buffer-test" "smart-buffer")))
       (native-inputs
-       (list sbcl-prove))
+       (list sbcl-prove
+             sbcl-babel))
       (inputs
        (list sbcl-xsubseq sbcl-flexi-streams))
       (home-page "https://github.com/fukamachi/smart-buffer")
@@ -4414,9 +4446,7 @@ depending on content size.")
           (base32 "0al2g7g219jjljsf7b23pbilpgacxy5as5gs2nqf76b5qni396mi"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found,
-       ;; required by #<SYSTEM "fast-http">. Why?
-       `(#:tests? #f))
+       '(#:asd-systems '("fast-http-test" "fast-http")))
       (native-inputs
        `(("sbcl-prove" ,sbcl-prove)
          ("cl-syntax" ,sbcl-cl-syntax)))
@@ -4593,11 +4623,9 @@ CCL.")
         (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0"))))
      (build-system asdf-build-system/sbcl)
      (arguments
-      ;; Tests fail with: Component HTTP-BODY-ASD::HTTP-BODY-TEST not
-      ;; found, required by #<SYSTEM "http-body">. Why?
-      `(#:tests? #f))
+      '(#:asd-systems '("http-body-test" "http-body")))
      (native-inputs
-      (list sbcl-prove))
+      (list sbcl-prove sbcl-trivial-utf-8))
      (inputs
       (list sbcl-fast-http sbcl-jonathan sbcl-quri))
      (home-page "https://github.com/fukamachi/http-body")
@@ -5012,8 +5040,8 @@ and mix text with expressions.")
   (sbcl-package->ecl-package sbcl-log4cl))
 
 (define-public sbcl-printv
-  (let ((commit "646d31978dbbb460fffb160fd65bb2be9a5a434e")
-        (revision "1"))
+  (let ((commit "e717a7fe076dae861a96117b2f9af29db8d2294d")
+        (revision "2"))
     (package
       (name "sbcl-printv")
       (version (git-version "0.1.0" revision commit))
@@ -5023,10 +5051,21 @@ and mix text with expressions.")
          (uri (git-reference
                (url "https://github.com/danlentz/printv")
                (commit commit)))
-         (file-name (git-file-name "printv" version))
+         (file-name (git-file-name "cl-printv" version))
          (sha256
-          (base32 "08jvy82abm7qi3wrxh6gvmwg9gy0zzhg4cfqajdwrggbah8mj5a6"))))
+          (base32 "07agyzkwp3w2r4d2anrmr8h00yngpr5dq9mjd3m4kzhn1jcmilfb"))))
       (build-system asdf-build-system/sbcl)
+      (inputs
+       (list figlet))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-figlet-executable
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "printv.lisp"
+                 (("\"figlet")
+                  (string-append "\"" (search-input-file inputs
+                                                         "/bin/figlet")))))))))
       (home-page "https://github.com/danlentz/printv")
       (synopsis "Common Lisp tracing and debug-logging macro")
       (description
@@ -5103,12 +5142,12 @@ by either a symbol or a keyword.")
   (sbcl-package->cl-source-package sbcl-verbose))
 
 (define-public sbcl-find-port
-  (let ((commit "00c96a25af93a0f8681d34ec548861f2d7485478")
-        (revision "1"))
+  (let ((commit "811727f88d7f000623bf92fdb0e64678a7112a28")
+        (revision "2"))
     (package
       (name "sbcl-find-port")
       (build-system asdf-build-system/sbcl)
-      (version "0.1")
+      (version (git-version "0.1" revision commit))
       (home-page "https://github.com/eudoxia0/find-port")
       (source
        (origin
@@ -5119,7 +5158,7 @@ by either a symbol or a keyword.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0d6dzbb45jh0rx90wgs6v020k2xa87mvzas3mvfzvivjvqqlpryq"))))
+           "1fw6q7d2bxxb7fqk548ylq8mx4sz95yc0q5h0rwd0mnqjrbwbari"))))
       (native-inputs
        (list sbcl-fiveam))
       (inputs
@@ -5775,20 +5814,22 @@ XSD type library.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url home-page)
+               (url "https://github.com/takagi/cl-reexport")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-reexport" version))
          (sha256
           (base32
            "1cwpn1m3wrl0fl9plznn7p464db646gnfc8zkyk97dyxski2aq0x"))))
       (inputs
-       `(("alexandria" ,sbcl-alexandria)))
+       (list sbcl-alexandria))
       (arguments
        ;; TODO: Tests fail because cl-test-more is missing, but I can't find it online.
        `(#:tests? #f))
-      (synopsis "HTTP cookie manager for Common Lisp")
-      (description "cl-cookie is a Common Lisp library featuring parsing of
-cookie headers, cookie creation, cookie jar creation and more.")
+      (synopsis "Reexport external symbols in other Common Lisp packages")
+      (description
+       "Cl-reexport makes a package reexport symbols which are external
+symbols in other Common Lisp packages.  This fanctionality is intended to be
+used with (virtual) hierarchical packages.")
       (license license:llgpl))))
 
 (define-public cl-reexport
@@ -5824,8 +5865,7 @@ cookie headers, cookie creation, cookie jar creation and more.")
       (native-inputs
        (list sbcl-prove))
       (arguments
-       ;; TODO: Tests fail because cl-cookie depends on cl-cookie-test.
-       `(#:tests? #f))
+       '(#:asd-systems '("cl-cookie-test" "cl-cookie")))
       (synopsis "HTTP cookie manager for Common Lisp")
       (description "cl-cookie is a Common Lisp library featuring parsing of
 cookie headers, cookie creation, cookie jar creation and more.")
@@ -10530,10 +10570,11 @@ MOP easier to use.")
   (sbcl-package->cl-source-package sbcl-moptilities))
 
 (define-public sbcl-osicat
-  (let ((commit "eab6b8cabd71b59e894b51dc555e171683ec3387"))
+  (let ((commit "a45eb3b5826e9175f7c94ba97a00d6b4932f3163")
+        (revision "3"))
     (package
       (name "sbcl-osicat")
-      (version (git-version "0.7.0" "2" commit))
+      (version (git-version "0.7.0" revision commit))
       (home-page "http://www.common-lisp.net/project/osicat/")
       (source
        (origin
@@ -10541,9 +10582,9 @@ MOP easier to use.")
          (uri (git-reference
                (url "https://github.com/osicat/osicat")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-osicat" version))
          (sha256
-          (base32 "18g137iqf86i247c9cg7d86b8k9cfq3yv272l73fsv734qpnv0g9"))))
+          (base32 "1ilag0b0xn97acc0m1q93vwp2y3md9a586858zfx04d8wpbvk8sz"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-alexandria sbcl-cffi sbcl-trivial-features))
@@ -11471,8 +11512,8 @@ macros for the Opticl image processing library.")
   (sbcl-package->ecl-package sbcl-opticl-core))
 
 (define-public sbcl-retrospectiff
-  (let ((commit "c2a69d77d5010f8cdd9045b3e36a08a73da5d321")
-        (revision "0"))
+  (let ((commit "2fbf8c687799487654d988c7036d19d75a7fc67d")
+        (revision "1"))
     (package
       (name "sbcl-retrospectiff")
       (version (git-version "0.2" revision commit))
@@ -11482,9 +11523,9 @@ macros for the Opticl image processing library.")
          (uri (git-reference
                (url "https://github.com/slyrus/retrospectiff")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-retrospectiff" version))
          (sha256
-          (base32 "0qsn9hpd8j2kp43dk05j8dczz9zppdff5rrclbp45n3ksk9inw8i"))))
+          (base32 "1vfcbfzhkm2wkxnjg7y6gg93wlib9cqpbdbhyqcm5kc7170ci3vz"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -11586,16 +11627,16 @@ vectors and streams.")
 (define-public sbcl-zpb-exif
   (package
     (name "sbcl-zpb-exif")
-    (version "1.2.4")
+    (version "1.2.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/xach/zpb-exif")
              (commit (string-append "release-" version))))
-       (file-name (git-file-name name version))
+       (file-name (git-file-name "cl-zpb-exif" version))
        (sha256
-        (base32 "15s227jhby55cisz14xafb0p1ws2jmrg2rrbbd00lrb97im84hy6"))))
+        (base32 "0h1n36lfl8xn8rfyl5jxz9m8zlg0if2avmryas79f684yczrvdnd"))))
     (build-system asdf-build-system/sbcl)
     (home-page "https://xach.com/lisp/zpb-exif/")
     (synopsis "EXIF information extractor for Common Lisp")
@@ -11653,8 +11694,8 @@ both from files on disk, or streams in memory.")
   (sbcl-package->ecl-package sbcl-pngload))
 
 (define-public sbcl-opticl
-  (let ((commit "e8684416eca2e78e82a7b436d436ef2ea24c019d")
-        (revision "0"))
+  (let ((commit "f6fc4dc5fa61ae3f2527b77e4bda99001ba37dcb")
+        (revision "1"))
     (package
       (name "sbcl-opticl")
       (version (git-version "0.0.0" revision commit))
@@ -11664,21 +11705,22 @@ both from files on disk, or streams in memory.")
          (uri (git-reference
                (url "https://github.com/slyrus/opticl")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-opticl" version))
          (sha256
-          (base32 "03rirnnhhisjbimlmpi725h1d3x0cfv00r57988am873dyzawmm1"))))
+          (base32 "1jx9n78d4lf53iz24yid34l92zrpqxfihv6049ixcy0xigf7j4ac"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
       (inputs
-       `(("alexandria" ,sbcl-alexandria)
-         ("cl-jpeg" ,sbcl-cl-jpeg)
-         ("cl-tga" ,sbcl-cl-tga)
-         ("png-read" ,sbcl-png-read)
-         ("pngload" ,sbcl-pngload)
-         ("retrospectiff" ,sbcl-retrospectiff)
-         ("skippy" ,sbcl-skippy)
-         ("zpng" ,sbcl-zpng)))
+       (list sbcl-alexandria
+             sbcl-cl-jpeg
+             sbcl-cl-tga
+             sbcl-opticl-core
+             sbcl-png-read
+             sbcl-pngload
+             sbcl-retrospectiff
+             sbcl-skippy
+             sbcl-zpng))
       (arguments
        '(#:asd-files '("opticl.asd")))
       (home-page "https://github.com/slyrus/opticl")
@@ -11694,10 +11736,40 @@ and saving 2-dimensional pixel-based images.")
 (define-public ecl-opticl
   (sbcl-package->ecl-package sbcl-opticl))
 
-(define-public sbcl-mcclim
-  (let ((commit "04cc542dd4b461b9d56406e40681d1a8f080730f")
+(define-public sbcl-cl-dejavu
+  (let ((commit "9d68ced4edee6f96fead42cb4835d0ff4a158373")
         (revision "1"))
     (package
+      (name "sbcl-cl-dejavu")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dkochmanski/cl-dejavu")
+               (commit commit)))
+         (file-name (git-file-name "cl-dejavu" version))
+         (sha256
+          (base32 "1lbxiq21bxj8r11c58cqskgn8gnl2p8q1ydkhdsv7i7xnhv2y7r0"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://github.com/dkochmanski/cl-dejavu")
+      (synopsis "DejaVu fonts for Common Lisp")
+      (description
+       "This is a repackage of the original DejaVu Fonts with some convenience
+functions.")
+      (license (list license:cc0
+                     (license:x11-style "http://dejavu-fonts.org/"))))))
+
+(define-public cl-dejavu
+  (sbcl-package->cl-source-package sbcl-cl-dejavu))
+
+(define-public ecl-dejavu
+  (sbcl-package->ecl-package sbcl-cl-dejavu))
+
+(define-public sbcl-mcclim
+  (let ((commit "292343f9e30c7ef54a3d9b4b045495387c51585e")
+        (revision "2"))
+    (package
       (name "sbcl-mcclim")
       (version (git-version "0.9.7" revision commit))
       (source
@@ -11706,37 +11778,37 @@ and saving 2-dimensional pixel-based images.")
          (uri (git-reference
                (url "https://github.com/mcclim/mcclim")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-mcclim" version))
          (sha256
-          (base32 "1xjly8i62z72hfhlnz5kjd9i8xhrwckc7avyizxvhih67pkjmsx0"))))
+          (base32 "10sq34rk11p2lrpqg5hr4721y2yqpmz9yk88mgdmwn7iyga5f2fp"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam pkg-config))
       (inputs
-       `(("alexandria" ,sbcl-alexandria)
-         ("babel" ,sbcl-babel)
-         ("bordeaux-threads" ,sbcl-bordeaux-threads)
-         ("cl-freetype2" ,sbcl-cl-freetype2)
-         ("cl-pdf" ,sbcl-cl-pdf)
-         ("cffi" ,sbcl-cffi)
-         ("cl-unicode" ,sbcl-cl-unicode)
-         ("cl-vectors" ,sbcl-cl-vectors)
-         ("closer-mop" ,sbcl-closer-mop)
-         ("clx" ,sbcl-clx)
-         ("flexi-streams" ,sbcl-flexi-streams)
-         ("flexichain" ,sbcl-flexichain)
-         ("font-dejavu" ,font-dejavu)
-         ("fontconfig" ,fontconfig)
-         ("freetype" ,freetype)
-         ("harfbuzz" ,harfbuzz)
-         ("log4cl" ,sbcl-log4cl)
-         ("opticl" ,sbcl-opticl)
-         ("spatial-trees" ,sbcl-spatial-trees)
-         ("swank" ,sbcl-slime-swank)
-         ("trivial-features" ,sbcl-trivial-features)
-         ("trivial-garbage" ,sbcl-trivial-garbage)
-         ("trivial-gray-streams" ,sbcl-trivial-gray-streams)
-         ("zpb-ttf" ,sbcl-zpb-ttf)))
+       (list fontconfig
+             freetype
+             harfbuzz
+             sbcl-alexandria
+             sbcl-babel
+             sbcl-bordeaux-threads
+             sbcl-cl-dejavu
+             sbcl-cl-freetype2
+             sbcl-cl-pdf
+             sbcl-cffi
+             sbcl-cl-unicode
+             sbcl-cl-vectors
+             sbcl-closer-mop
+             sbcl-clx
+             sbcl-flexi-streams
+             sbcl-flexichain
+             sbcl-log4cl
+             sbcl-opticl
+             sbcl-spatial-trees
+             sbcl-slime-swank
+             sbcl-trivial-features
+             sbcl-trivial-garbage
+             sbcl-trivial-gray-streams
+             sbcl-zpb-ttf))
       (arguments
        '(#:asd-systems '("mcclim"
                          "clim-examples")
@@ -11744,12 +11816,6 @@ and saving 2-dimensional pixel-based images.")
          (modify-phases %standard-phases
            (add-after 'unpack 'fix-paths
              (lambda* (#:key inputs #:allow-other-keys)
-               ;; mcclim-truetype uses DejaVu as default font and
-               ;; sets the path at build time.
-               (substitute* "Extensions/fonts/fontconfig.lisp"
-                 (("/usr/share/fonts/truetype/dejavu/")
-                  (string-append (assoc-ref inputs "font-dejavu")
-                                 "/share/fonts/truetype/")))
                (substitute* "Extensions/fontconfig/src/functions.lisp"
                  (("libfontconfig\\.so")
                   (search-input-file inputs "/lib/libfontconfig.so")))
@@ -11765,8 +11831,7 @@ and saving 2-dimensional pixel-based images.")
                   (string-append "(asdf:load-system :cffi-grovel)\n" all)))
                (substitute* "Extensions/harfbuzz/mcclim-harfbuzz.asd"
                  (("\\(asdf:defsystem #:mcclim-harfbuzz" all)
-                  (string-append "(asdf:load-system :cffi-grovel)\n" all)))
-               #t)))))
+                  (string-append "(asdf:load-system :cffi-grovel)\n" all))))))))
       (home-page "https://common-lisp.net/project/mcclim/")
       (synopsis "Common Lisp GUI toolkit")
       (description
@@ -12092,8 +12157,8 @@ carrys on from the end of the body.")
   (sbcl-package->ecl-package sbcl-livesupport))
 
 (define-public sbcl-envy
-  (let ((commit "956321b2852d58ba71c6fe621f5c2924178e9f88")
-	(revision "1"))
+  (let ((commit "26a7faadc981f2a047daa36f715a44faec5dd00c")
+	(revision "2"))
     (package
       (name "sbcl-envy")
       (version (git-version "0.1" revision commit))
@@ -12102,26 +12167,19 @@ carrys on from the end of the body.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url home-page)
+               (url "https://github.com/fukamachi/envy")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-envy" version))
          (sha256
-          (base32 "17iwrfxcdinjbb2h6l09qf40s7xkbhrpmnljlwpjy8l8rll8h3vg"))))
+          (base32 "1r0wgimd7z57x8cv69sw76w3y5l70hq50882a9nq5l4v64lg55fq"))))
       (build-system asdf-build-system/sbcl)
-      ;; (native-inputs ; Only for tests.
-      ;;  `(("prove" ,sbcl-prove)
-      ;;    ("osicat" ,sbcl-osicat)))
+      (native-inputs
+       (list sbcl-osicat sbcl-prove))
       (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'fix-tests
-             (lambda _
-               (substitute* "envy-test.asd"
-                 (("cl-test-more") "prove"))
-               #t)))
-         ;; Tests fail with
+       `(#:asd-systems '("envy-test" "envy")
+         ;; FIXME: Tests fail with
          ;;   Component ENVY-ASD::ENVY-TEST not found, required by #<SYSTEM "envy">
-         ;; like xsubseq.  Why?
+         ;; https://github.com/fukamachi/envy/issues/10
          #:tests? #f))
       (synopsis "Common Lisp configuration switcher inspired by Perl's Config::ENV")
       (description "Envy is a configuration manager for various applications.
@@ -12136,8 +12194,8 @@ can separate configuration system from an implementation.")
   (sbcl-package->ecl-package sbcl-envy))
 
 (define-public sbcl-mito
-  (let ((commit "2fbfc8aa6f9e3e8029bf09888c74b9af98dad341")
-	(revision "2"))
+  (let ((commit "47ba4865ca4bb2894b53703a49a299e973f8eb86")
+	(revision "3"))
     (package
       (name "sbcl-mito")
       (version (git-version "0.1" revision commit))
@@ -12150,7 +12208,7 @@ can separate configuration system from an implementation.")
                (commit commit)))
          (file-name (git-file-name "mito" version))
          (sha256
-          (base32 "1a9kivpy9j2grf1c6gdjk7fwcdlvvq67p3m98jyfhiyzj7axjymd"))))
+          (base32 "0313nxlj1zqw6zyc23xpf85v0jk32sg0543ql8363jki0pmg7yhs"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-prove))
@@ -12185,9 +12243,7 @@ can separate configuration system from an implementation.")
                  (("\\(:test-file \"postgres-types\"\\)") "")
                  (("\\(:test-file \"mixin\"\\)") ""))
                #t)))
-         ;; TODO: While all enabled tests pass, the phase fails with:
-         ;; Component MITO-ASD::MITO-TEST not found, required by #<SYSTEM "mito">
-         #:tests? #f))
+         #:asd-systems '("mito-test" "mito")))
       (synopsis "ORM for Common Lisp with migrations and relationships support")
       (description "Mito is yet another object relational mapper, and it aims
 to be a successor of Integral.
@@ -12401,8 +12457,8 @@ can begin writing unit tests as soon as the project is generated.")
   (sbcl-package->ecl-package sbcl-cl-project))
 
 (define-public sbcl-caveman
-  (let ((commit "faa5f7e3b364fd7e7096af9a7bb06728b8d80441") ; No release since 2012
-        (revision "1"))
+  (let ((commit "35cd8bc6c322f9d88498405fc26168a1fb42ae1c") ; No release since 2012
+        (revision "2"))
     (package
       (name "sbcl-caveman")
       (version (git-version "2.4.0" revision commit))
@@ -12413,31 +12469,35 @@ can begin writing unit tests as soon as the project is generated.")
          (uri (git-reference
                (url "https://github.com/fukamachi/caveman/")
                (commit commit)))
-         (file-name (git-file-name name version))
+         (file-name (git-file-name "cl-caveman" version))
          (sha256
-          (base32 "0kh0gx05pczk8f7r9qdi4zn1p3d0a2prps27k7jpgvc1dxkl8qhq"))))
+          (base32 "1wvjm9m1fnapg0r9imhhcwgnhhqkkccnj3c0iw9yg1f72d7zhm2w"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("ningle" ,cl-ningle)
          ("lack" ,sbcl-lack)
          ("cl-project" ,sbcl-cl-project)
          ("dbi" ,sbcl-dbi)
+         ("sxql" ,sbcl-sxql)
          ("cl-syntax" ,sbcl-cl-syntax)
          ("myway" ,sbcl-myway)
          ("quri" ,sbcl-quri)))
       (native-inputs
        `(("usocket" ,sbcl-usocket)
-         ("dexador" ,sbcl-dexador)))
+         ("dexador" ,sbcl-dexador)
+         ("lack" ,sbcl-lack)
+         ("trivial-types" ,sbcl-trivial-types)
+         ("prove" ,sbcl-prove)))
       (arguments
-       `(#:asd-files '("caveman2.asd")
-         #:asd-systems '("caveman2")
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'remove-v1
-             (lambda _
-               (delete-file-recursively "v1")
-               (for-each delete-file
-                         '("README.v1.markdown" "caveman.asd" "caveman-test.asd")))))
+       `(#:asd-files '("caveman2.asd"
+                       "caveman2-db.asd"
+                       "caveman2-test.asd"
+                       "caveman-middleware-dbimanager.asd")
+         #:test-asd-file "caveman2-test.asd"
+         #:asd-systems '("caveman2"
+                         "caveman2-db"
+                         "caveman2-test"
+                         "caveman-middleware-dbimanager")
          ;; TODO: Tests fail with:
          ;; writing /gnu/store/...-sbcl-caveman-2.4.0-1.faa5f7e/share/common-lisp/sbcl-source/caveman2/v2/t/tmp/myapp573/tests/myapp573.lisp
          ;; While evaluating the form starting at line 38, column 0
@@ -12445,6 +12505,11 @@ can begin writing unit tests as soon as the project is generated.")
          ;; Unhandled ASDF/FIND-COMPONENT:MISSING-COMPONENT in thread #<SB-THREAD:THREAD "main thread" RUNNING
          ;;                                                              {10009F8083}>:
          ;;   Component "myapp573" not found
+         ;;
+         ;; The above myapp573 component name is randomly generated by
+         ;; gensym on each test run. `(asdf:load-system *app-name*)` tries
+         ;; to load this component and fails.
+         ;; TODO: Ask fukamachi how to go around this.
          #:tests? #f))
       (synopsis "Lightweight web application framework in Common Lisp")
       (description "Caveman is intended to be a collection of common parts for
@@ -13238,8 +13303,8 @@ Polar Stereographic).")
   (sbcl-package->ecl-package sbcl-utm-ups))
 
 (define-public sbcl-mgrs
-  (let ((commit "00455460407b7e5509d1be3da09bf6152956761f")
-        (revision "0"))
+  (let ((commit "c06f268f9ccb00dfc94c8a07771ce1ca82df26a2")
+        (revision "1"))
     (package
       (name "sbcl-mgrs")
       (version (git-version "1.0" revision commit))
@@ -13249,9 +13314,9 @@ Polar Stereographic).")
          (uri (git-reference
                (url "https://github.com/glv2/mgrs")
                (commit commit)))
-         (file-name (git-file-name "mgrs" version))
+         (file-name (git-file-name "cl-mgrs" version))
          (sha256
-          (base32 "0ckvn4hg3wwivzavhfashb6fap4a1q10l8krhbng8bdb54ac10sz"))))
+          (base32 "1n4kd734qjj7mrcg0q28hml3npam1rm067iwljwc87zshnxh5gmn"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -13272,8 +13337,8 @@ latitude/longitude and MGRS.")
   (sbcl-package->ecl-package sbcl-mgrs))
 
 (define-public sbcl-maidenhead
-  (let ((commit "b756d235c27b5d6798867aa240318af1a8f35d6d")
-        (revision "0"))
+  (let ((commit "202671f39a4c90c18016123685705533d43ccde6")
+        (revision "1"))
     (package
       (name "sbcl-maidenhead")
       (version (git-version "1.0" revision commit))
@@ -13283,9 +13348,9 @@ latitude/longitude and MGRS.")
          (uri (git-reference
                (url "https://github.com/glv2/maidenhead")
                (commit commit)))
-         (file-name (git-file-name "maidenhead" version))
+         (file-name (git-file-name "cl-maidenhead" version))
          (sha256
-          (base32 "02p990zprhjvifmsfk8yh3frvz6xyw26ikzxvzglqdixbal36nr3"))))
+          (base32 "0bkw31jibx4sh2086jgsw4rvaz3i1dmycbwp203rjj78x7wz9743"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -13304,8 +13369,8 @@ latitude/longitude and Maidenhead locator system.")
   (sbcl-package->ecl-package sbcl-maidenhead))
 
 (define-public sbcl-olc
-  (let ((commit "517e27fa57d9a119b00a29c4b6b31e553deff309")
-        (revision "0"))
+  (let ((commit "0269ed747477d967f7d9331964906b6a0f18a9c4")
+        (revision "1"))
     (package
       (name "sbcl-olc")
       (version (git-version "1.0" revision commit))
@@ -13315,9 +13380,9 @@ latitude/longitude and Maidenhead locator system.")
          (uri (git-reference
                (url "https://github.com/glv2/olc")
                (commit commit)))
-         (file-name (git-file-name "olc" version))
+         (file-name (git-file-name "cl-olc" version))
          (sha256
-          (base32 "1lnfhp6z6kc8l605zp4siyjiw74y1h4bdq3jfizi084v505wxhgr"))))
+          (base32 "02r6w9kfa6v4a12y2azmyjkxbn54r1y18c6a024vq4y6zp20fqnz"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -14734,8 +14799,8 @@ protocol for Mastodon.")
   (sbcl-package->cl-source-package sbcl-tooter))
 
 (define-public sbcl-croatoan
-  (let ((commit "cf875137a23ed4efbfde63e52691f1b544d55d17")
-        (revision "4"))
+  (let ((commit "5d0949d57a12e7fece8828e089daa339b260da96")
+        (revision "5"))
     (package
       (name "sbcl-croatoan")
       (version (git-version "0.0.1" revision commit))
@@ -14745,9 +14810,9 @@ protocol for Mastodon.")
          (uri (git-reference
                (url "https://github.com/McParen/croatoan")
                (commit commit)))
-         (file-name (git-file-name "croatoan" version))
+         (file-name (git-file-name "cl-croatoan" version))
          (sha256
-          (base32 "0dvp8irimlnnvz2m4lnmxp19xbam1yfri3d1i9qqml968i08xcwb"))))
+          (base32 "0qsnz10hri95al73vhpqrs7mapz2px0dbwgfn52sbi93gwk5aki9"))))
       (build-system asdf-build-system/sbcl)
       (arguments
        '(#:phases
@@ -14760,10 +14825,10 @@ protocol for Mastodon.")
                                  "/lib/"
                                  all))))))))
       (inputs
-       `(("bordeaux-threads" ,sbcl-bordeaux-threads)
-         ("cffi" ,sbcl-cffi)
-         ("ncurses" ,ncurses)
-         ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+       (list ncurses
+             sbcl-cffi
+             sbcl-trivial-gray-streams
+             sbcl-bordeaux-threads))
       (synopsis "Common Lisp bindings for the ncurses terminal library")
       (description "Croatoan provides high-level Common Lisp CLOS bindings for
 the ncurses terminal library.")
@@ -16533,17 +16598,7 @@ combinators in Common Lisp, similar in concept to Haskell Parsec system.")
           (base32 "1rhannhpsw1yg1fpflam483a3w9qb1izgyvmnmiddv3dn4qsmn9p"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       ;; FIXME: (Sharlatan-20210523T190658+0100): All tests passed ok but
-       ;; successfully failed in the end:
-       ;;
-       ;; Summary:
-       ;;   All 1 file passed.
-       ;; Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY
-       ;; in thread #<SB-THREAD:THREAD "main thread" RUNNING {100B6C8253}>:
-       ;;   Component CL-LOCALE-ASD::CL-LOCALE-TEST not found, required by
-       ;;   #<SYSTEM "cl-locale">
-       ;;
-       `(#:tests? #f))
+       '(#:asd-systems '("cl-locale-test" "cl-locale")))
       (native-inputs
        `(("prove" ,sbcl-prove)
          ("flexi-streams" ,sbcl-flexi-streams)))
@@ -17217,15 +17272,7 @@ computing and event based message handling.")
           (base32 "1yac1v7zmdxj0p6rvwrrhyqvy7yjfhmqbchkwqhhr89gpjvvaick"))))
       (build-system asdf-build-system/sbcl)
       (arguments
-       ;; All test cases pass, but tests successfully fail at the end:
-       ;;
-       ;; Summary:
-       ;;   All 1 file passed.
-       ;; Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread
-       ;; #<SB-THREAD:THREAD "main thread" RUNNING {1001858103}>:
-       ;;   Component ASSOC-UTILS-ASD::ASSOC-UTILS-TEST not found, required by
-       ;;   #<SYSTEM "assoc-utils">
-       `(#:tests? #f))
+       '(#:asd-systems '("assoc-utils-test" "assoc-utils")))
       (native-inputs
        (list sbcl-prove))
       (home-page "https://github.com/fukamachi/assoc-utils")
@@ -20509,6 +20556,39 @@ identified uniquely.
 (define-public ecl-nhooks
   (sbcl-package->ecl-package sbcl-nhooks))
 
+(define-public sbcl-wordnet
+  (let ((commit "8cd0db8f5e84e7a930fa74e590ecddf75cd8e5d6")
+        (revision "0"))
+    (package
+      (name "sbcl-wordnet")
+      (version (git-version "0.0.1" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                (url "https://github.com/phoe/wordnet")
+                (commit commit)))
+          (sha256
+           (base32 "07p60k295fsfcp0gmkqhrxd68hb38aqva8f4k8xk8bqqxxf42vkq"))
+          (file-name (git-file-name "cl-wordnet" commit))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       `(#:tests? #f)) ; There are no tests.
+      (inputs
+        (list sbcl-split-sequence))
+      (home-page "https://github.com/phoe/wordnet")
+      (synopsis "Common Lisp interface to WordNet")
+      (description
+       "This software provides an interface by which Common Lisp programs can
+access lexicographic data from WordNet.")
+      (license license:expat))))
+
+(define-public cl-wordnet
+  (sbcl-package->cl-source-package sbcl-wordnet))
+
+(define-public ecl-wordnet
+  (sbcl-package->ecl-package sbcl-wordnet))
+
 (define-public sbcl-nfiles
   (package
    (name "sbcl-nfiles")
@@ -20582,3 +20662,210 @@ change since last write.
     (inputs
      (cons (list "iolib" cl-iolib)
            (package-inputs sbcl-nfiles)))))
+
+(define-public sbcl-cl-template
+  (let ((commit "46193a9a389bb950530e579eae7e6e5a18184832")
+        (revision "0"))
+    (package
+     (name "sbcl-cl-template")
+     (version (git-version "0.0.1" revision commit))
+     (home-page "https://github.com/alpha123/cl-template")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alpha123/cl-template")
+             (commit commit)))
+       (file-name (git-file-name "cl-template" version))
+       (sha256
+        (base32 "1rhg023a2nxsk5x6abd6i0a8sh36aj0bgsh80w60m3b7xlsva2x2"))))
+     (build-system asdf-build-system/sbcl)
+     (native-inputs
+      (list sbcl-fiveam))
+     (synopsis "Template engine for Common Lisp")
+     (description "@code{cl-template} is a template engine for Common Lisp,
+taking inspiration from Ruby's ERb module.")
+     (license license:expat))))
+
+(define-public cl-template
+  (sbcl-package->cl-source-package sbcl-cl-template))
+
+(define-public ecl-cl-template
+  (sbcl-package->ecl-package sbcl-cl-template))
+
+(define-public sbcl-fast-websocket
+  (let ((commit "24c0217e7c0d25b6ef6ab799452cba0b9fb58f44")
+        (revision "0"))
+    (package
+     (name "sbcl-fast-websocket")
+     (version (git-version "0.1" revision commit))
+     (home-page "https://github.com/fukamachi/fast-websocket")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/fast-websocket")
+             (commit commit)))
+       (file-name (git-file-name "cl-fast-websoclet" version))
+       (sha256
+        (base32
+         "04sacrhpdp3ixvp6wjwxls5mv47g0q6542pd16yn199xjg0drw8a"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Test system must be loaded before, otherwise tests fail with:
+      ;; Component FAST-WEBSOCKET-ASD::FAST-WEBSOCKET-TEST not found,
+      ;; required by #<SYSTEM "fast-websocket">.
+      '(#:asd-systems '("fast-websocket-test"
+                        "fast-websocket")))
+     (inputs
+      (list sbcl-fast-io
+            sbcl-babel
+            sbcl-alexandria))
+     (native-inputs
+      (list sbcl-prove
+            sbcl-trivial-utf-8))
+     (synopsis "WebSocket protocol parser for Common Lisp")
+     (description
+      "@code{fast-websocket} is an optimized low-level WebSocket protocol
+parser/composer.")
+     (license license:bsd-2))))
+
+(define-public cl-fast-websocket
+  (sbcl-package->cl-source-package sbcl-fast-websocket))
+
+(define-public ecl-fast-websocket
+  (sbcl-package->ecl-package sbcl-fast-websocket))
+
+(define-public sbcl-event-emitter
+  (let ((commit "cb0e15f9de4c617cef3f5d5a22a41e28f9613d0b")
+        (revision "0"))
+    (package
+     (name "sbcl-event-emitter")
+     (version (git-version "0.0.1" revision commit))
+     (home-page "https://github.com/fukamachi/event-emitter")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/event-emitter")
+             (commit commit)))
+       (file-name (git-file-name "cl-event-emitter" version))
+       (sha256
+        (base32 "1i18xzfr6334db9dzj0lsl7wxw1r1l0ixvn883mjbyqw0czp21h6"))))
+     (build-system asdf-build-system/sbcl)
+     (native-inputs
+      (list sbcl-prove))
+     (synopsis "Event mechanism for Common Lisp objects")
+     (description "Event Emitter provides an event mechanism like Node.js for
+Common Lisp objects.  It is mostly ported from Node.js @code{events} module.")
+     (license license:bsd-2))))
+
+(define-public cl-event-emitter
+  (sbcl-package->cl-source-package sbcl-event-emitter))
+
+(define-public ecl-event-emitter
+  (sbcl-package->ecl-package sbcl-event-emitter))
+
+(define-public sbcl-sha1
+  (let ((commit "be8b1b155c3a6ad3eb9b200212af6ff52f5611de")
+        (revision "0"))
+    (package
+     (name "sbcl-sha1")
+     (version (git-version "1.0" revision commit))
+     (home-page "https://github.com/massung/sha1")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/massung/sha1")
+             (commit commit)))
+       (file-name (git-file-name "cl-sha1" version))
+       (sha256
+        (base32 "1cfn0j5yfwqkwr2dm73wr9hz8dmws3ngxlbk9886ahxkg544qx4z"))))
+     (build-system asdf-build-system/sbcl)
+     (synopsis "SHA1 Digest and HMAC for Common Lisp")
+     (description
+      "This is a very simple implementation of SHA1 and HMAC-SHA1 for
+Common Lisp.  The code is intended to be easy to follow and is therefore a
+little slower than it could be.")
+     (license license:asl2.0))))
+
+(define-public cl-sha1
+  (sbcl-package->cl-source-package sbcl-sha1))
+
+(define-public ecl-sha1
+  (sbcl-package->ecl-package sbcl-sha1))
+
+(define-public sbcl-websocket-driver
+  (let ((commit "df94496ecb525d086eeada4f5875975515b7212e")
+        (revision "0"))
+    (package
+     (name "sbcl-websocket-driver")
+     (version (git-version "0.2.0" revision commit))
+     (home-page "https://github.com/fukamachi/websocket-driver")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/websocket-driver")
+             (commit commit)))
+       (file-name (git-file-name "cl-websocket-driver" version))
+       (sha256
+        (base32 "0y852sqdnxfma6kw833by4wkgbgbv4ppzawjk8pk3y1pmh6is83y"))))
+     (build-system asdf-build-system/sbcl)
+     (inputs
+      (list sbcl-babel
+            sbcl-clack
+            sbcl-fast-http
+            sbcl-fast-io
+            sbcl-fast-websocket
+            sbcl-event-emitter
+            sbcl-sha1
+            sbcl-cl-base64
+            sbcl-split-sequence
+            sbcl-bordeaux-threads
+            sbcl-quri))
+     (synopsis "WebSocket server/client for Common Lisp")
+     (description "This library provides a WebSocket server and client
+implementation for Common Lisp.")
+     (license license:bsd-2))))
+
+(define-public cl-websocket-driver
+  (sbcl-package->cl-source-package sbcl-websocket-driver))
+
+(define-public ecl-websocket-driver
+  (sbcl-package->ecl-package sbcl-websocket-driver))
+
+(define-public sbcl-purgatory
+  (let ((commit "ade0d60a14a1067b9cc8cf06d1f1a1ca8cecdb03")
+        (revision "1"))
+    (package
+      (name "sbcl-purgatory")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://notabug.org/cage/purgatory")
+               (commit commit)))
+         (file-name (git-file-name "cl-purgatory" version))
+         (sha256
+          (base32 "1mwlalymmfbx1jx5wzqcnpg5h8d0ylllm1p3f4lwaawfv05lk82s"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       (list sbcl-alexandria
+             sbcl-babel
+             sbcl-bordeaux-threads
+             sbcl-cl-ppcre-unicode
+             sbcl-usocket))
+      (synopsis "Common Lisp implementation of the 9p protocol")
+      (description "This is a Common Lisp library that implements
+the 9p network filesystem protocol.")
+      (home-page "https://notabug.org/cage/purgatory/")
+      (license license:llgpl))))
+
+(define-public ecl-purgatory
+  (sbcl-package->ecl-package sbcl-purgatory))
+
+(define-public cl-purgatory
+  (sbcl-package->cl-source-package sbcl-purgatory))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 82fbd15381..3661042002 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -14,7 +14,7 @@
 ;;; 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>
-;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
@@ -251,7 +251,7 @@ interface to the Tk widget system.")
      (origin
        (method url-fetch)
        (uri (string-append
-             "https://common-lisp.net/project/ecl/static/files/release/"
+             "https://ecl.common-lisp.dev/static/files/release/"
              name "-" version ".tgz"))
        (sha256
         (base32 "000906nnq25177bgsfndiw3iqqgrjc9spk10hzk653sbz3f7anmi"))))
@@ -259,6 +259,7 @@ interface to the Tk widget system.")
     ;; src/configure uses 'which' to confirm the existence of 'gzip'.
     (native-inputs
      (list cl-asdf which texinfo))
+    (inputs (list bash-minimal))
     ;; When ECL is embedded in a program that wants to use Common Lisp as an
     ;; extension language, libgmp, libatomic-ops, libgc and libffi must be
     ;; present when compiling the program because they are required by ECL's
@@ -269,12 +270,11 @@ interface to the Tk widget system.")
      (list gmp libatomic-ops libgc libffi))
     (arguments
      `(#:configure-flags '("--without-rt")
-       ;; FIXME: As of version 20.4.24, we pass 17995 tests and fail 7.
-       ;; 2-3 tests may be due to FHS assumptions.
-       #:tests? #t
        #:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
+         ;; FIXME: As of version 20.4.24, we pass 17995 tests and fail 7.
+         ;; 2-3 tests may be due to FHS assumptions.
          (delete 'check)
          (add-after 'unpack 'replace-asdf
            ;; Use system ASDF instead of bundled one.
@@ -284,13 +284,11 @@ interface to the Tk widget system.")
                                 cl-asdf
                                 "/share/common-lisp/source/asdf/asdf.lisp"))
                     (contrib-asdf "contrib/asdf/asdf.lisp"))
-               (copy-file guix-asdf contrib-asdf))
-             #t))
+               (copy-file guix-asdf contrib-asdf))))
          (add-after 'install 'remove-build-stamp
            (lambda* (#:key outputs #:allow-other-keys)
              (delete-file (string-append (assoc-ref outputs "out")
-                                         "/lib/ecl-" ,version "/build-stamp"))
-             #t))
+                                         "/lib/ecl-" ,version "/build-stamp"))))
          (add-after 'remove-build-stamp 'wrap
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((ecl (assoc-ref outputs "out"))
@@ -313,14 +311,12 @@ interface to the Tk widget system.")
                            (input-path lib "/include"))
                          `("kernel-headers" ,@libraries)))
                  `("LIBRARY_PATH" suffix ,library-directories)
-                 `("LD_LIBRARY_PATH" suffix ,library-directories))
-               #t)))
+                 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
          (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
          (add-before 'check 'fix-path-to-ecl
            (lambda _
              (substitute* "build/tests/Makefile"
-               (("\\$\\{exec_prefix\\}/") ""))
-             #t)))))
+               (("\\$\\{exec_prefix\\}/") "")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "XDG_DATA_DIRS")
@@ -328,7 +324,7 @@ interface to the Tk widget system.")
            (search-path-specification
             (variable "XDG_CONFIG_DIRS")
             (files '("etc")))))
-    (home-page "http://ecls.sourceforge.net/")
+    (home-page "https://ecl.common-lisp.dev/")
     (synopsis "Embeddable Common Lisp")
     (description "ECL is an implementation of the Common Lisp language as
 defined by the ANSI X3J13 specification.  Its most relevant features are: a
@@ -417,14 +413,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "2.1.9")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "189gjqzdz10xh3ybiy4ch1r98bsmkcb4hpnrmggd4y2g5kqnyx4y"))))
+        (base32 "1xjhg473ibfiplvvyg1grxrh0nqqbg72acc2pcacw7bijyzdp447"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -1156,7 +1152,7 @@ including a built-in database engine and a GUI system.")
 (define-public janet
   (package
     (name "janet")
-    (version "1.19.2")
+    (version "1.20.0")
     (source
      (origin
        (method git-fetch)
@@ -1165,7 +1161,7 @@ including a built-in database engine and a GUI system.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0waj22rzxmc0yx1yr0pzw9lwp6my5abfpfi6vq932bmli8y9prpd"))))
+        (base32 "0983jp22nnfpsc77nhsjgp7zp7m2n47pxg9nagwfhhff6rlqw9wq"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index b6d52402a8..eb949bed1b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -188,7 +188,6 @@ given PATCHES.  When TOOLS-EXTRA is given, it must point to the
     ;; doesn't seem to be any way to do this with clang's autotools-based
     ;; build system.
     (build-system cmake-build-system)
-    (outputs (if tools-extra '("out" "extra") '("out")))
     (native-inputs (package-native-inputs llvm))
     (inputs
      `(("libxml2" ,libxml2)
@@ -229,56 +228,9 @@ given PATCHES.  When TOOLS-EXTRA is given, it must point to the
                                                (string-delete #\- (package-version llvm))
                                                ".src")
                                              "tools/extra")
-                                #t)))
-                          (add-after 'install 'move-extra-tools
-                            (lambda* (#:key outputs #:allow-other-keys)
-                              ;; Move the extra tools to the "extra" output.
-                              ;; These programs alone weigh in at 296 MiB,
-                              ;; because they statically-link a whole bunch of
-                              ;; Clang libraries.
-                              (let* ((out   (assoc-ref outputs "out"))
-                                     (extra (assoc-ref outputs "extra"))
-                                     (bin   (string-append out "/bin"))
-                                     (bin*  (string-append extra "/bin"))
-                                     (lib   (string-append out "/lib")))
-                                (define (move program)
-                                  (rename-file (string-append bin "/" program)
-                                               (string-append bin* "/"
-                                                              program)))
-
-                                (mkdir-p bin*)
-                                (for-each move
-                                          '("clang-apply-replacements"
-                                            "clang-change-namespace"
-                                            "clangd"
-                                            "clang-doc"
-                                            "clang-include-fixer"
-                                            "clang-move"
-                                            "clang-query"
-                                            "clang-reorder-fields"
-                                            "clang-tidy"
-                                            "find-all-symbols"
-                                            "modularize"
-                                            "pp-trace"))
-
-                                ;; Remove MiBs of .a files coming from
-                                ;; 'clang-tools-extra'.
-                                (for-each (lambda (component)
-                                            (delete-file
-                                             (string-append lib "/libclang"
-                                                            component ".a")))
-                                          '("ApplyReplacements"
-                                            "ChangeNamespace"
-                                            "Daemon"
-                                            "DaemonTweaks"
-                                            "Doc"
-                                            "IncludeFixer"
-                                            "IncludeFixerPlugin"
-                                            "Move"))
-                                (for-each delete-file
-                                          (find-files
-                                           lib
-                                           "^(libfindAllSymbols|libclangTidy)"))
+                                ;; Build and link to shared libraries.
+                                (substitute* "cmake/modules/AddClang.cmake"
+                                  (("BUILD_SHARED_LIBS") "True"))
                                 #t))))
                         '())
                   (add-after 'unpack 'add-missing-triplets
diff --git a/gnu/packages/loko.scm b/gnu/packages/loko.scm
index ef9312afe3..449c62f1f0 100644
--- a/gnu/packages/loko.scm
+++ b/gnu/packages/loko.scm
@@ -71,7 +71,7 @@
              #t)))))
     (native-inputs
      `(("akku" ,akku)
-       ("chez-scheme" ,chez-scheme)
+       ("chez-scheme" ,(chez-scheme-for-system))
        ("struct" ,guile-struct-pack)
        ("laesare" ,guile-laesare)
        ("pfds" ,guile-pfds)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 2f7e1ac5d9..afac56f6f7 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3034,52 +3034,7 @@ PyTorch when needed.
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
-(define-public python-pytorch-for-r-torch
-  (package
-    (inherit python-pytorch)
-    (name "python-pytorch")
-    (version "1.9.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0cznsh68hwk5761gv7iijb4g6jgjpvs3bbixwpzzmkbkbn2q96c1"))
-              (patches (search-patches "python-pytorch-1.9.0-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-
-                  ;; Adjust references to the onnx-optimizer headers.
-                  (substitute* "caffe2/onnx/backend.cc"
-                    (("onnx/optimizer/")
-                     "onnxoptimizer/"))))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments python-pytorch)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           ;; No module named 'onnx.optimizer'
-           (delete 'sanity-check)))))))
+(define-public python-pytorch-for-r-torch python-pytorch)
 
 (define-public python-hmmlearn
   (package
@@ -3118,7 +3073,7 @@ of Hidden Markov Models.")
 (define-public liblantern
   (package
     (name "liblantern")
-    (version "0.6.0")
+    (version "0.7.2")
     (source
      (origin
        (method git-fetch)
@@ -3127,7 +3082,7 @@ of Hidden Markov Models.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gabwic46m4m7qld1yi4brw05n9jx58ri3y0pi6jf9jndfi1qnfp"))))
+        (base32 "1nam375ych4nr7gk2dpbnzlanr2jc7akqjhmfs0ar9l34zmzz9m9"))))
     (build-system cmake-build-system)
     (arguments
      (list
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 003f5f46bb..d253ca7011 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018, 2020 Rene Saavedra <pacoon@protonmail.com>
-;;; Copyright © 2018, 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
@@ -365,7 +365,6 @@ example, modify the message headers or body, or encrypt or sign the message.")
            libltdl
            gdbm
            ;; Required for SEARCH CHARSET.
-           libiconv
            libunistring))
     (home-page "https://mailutils.org")
     (synopsis "Utilities and library for reading and serving mail")
@@ -553,7 +552,7 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "2.1.5")
+    (version "2.2.1")
     (source (origin
              (method url-fetch)
              (uri (list
@@ -563,7 +562,7 @@ aliasing facilities to work just as they would on normal mail.")
                                    version ".tar.gz")))
              (sha256
               (base32
-               "1q1bq5qfv67s6ynbqga19ifaprgavhdbgg154kb9ffingvj0k8wj"))
+               "1ddbhwsycfpf430k52l5gggywd09h10hwcwzpydam43c5ga30vdp"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -1056,52 +1055,47 @@ and corrections.  It is based on a Bayesian filter.")
     (license license:gpl3+)))
 
 (define-public offlineimap3
-  ;; The OfflineIMAP3 fork does not yet have a release, but it's likely to be
-  ;; 8.0.0 but the source still reports 7.3.0, see
-  ;; https://github.com/OfflineIMAP/offlineimap3/issues/10.
-  (let ((commit "4ca9c75c6f9a0cc8dc7b69dd6abf073e494cc0e5")
-        (revision "0"))
-    (package
-      (name "offlineimap3")
-      (version (git-version "7.3.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/OfflineIMAP/offlineimap3")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0nzh5dcc559jfw4yy12gc98s17w82b15zxikspc6apd8filmk9xg"))))
-      (build-system python-build-system)
-      (native-inputs
-       (list asciidoc))
-      (inputs
-       (list python-distro python-imaplib2 python-rfc6555))
-      (arguments
-       `(;; Tests require a modifiable IMAP account.
-         #:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'build 'build-documentation
-             (lambda _
-               (substitute* "docs/Makefile"
-                 ;; Prevent xmllint and xsltproc from downloading a DTD file.
-                 (("a2x -v") "a2x --no-xmllint --xsltproc-opts=--nonet -v"))
-               (invoke "make" "-C" "docs" "man")))
-           (add-after 'install 'install-documentation
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (man (string-append out "/share/man")))
-                 (install-file "docs/offlineimap.1" (string-append man "/man1"))
-                 (install-file "docs/offlineimapui.7" (string-append man "/man7"))))))))
-      (home-page "https://www.offlineimap.org")
-      (synopsis "Sync emails between two repositories")
-      (description
-       "OfflineImap synchronizes emails between two repositories, so that you
+  (package
+    (name "offlineimap3")
+    (version "8.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OfflineIMAP/offlineimap3")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0y3giaz9i8vvczlxkbwymfkn3vi9fv599dy4pc2pn2afxsl4mg2w"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list asciidoc))
+    (inputs
+     (list python-distro python-imaplib2 python-rfc6555))
+    (arguments
+     `(;; Tests require a modifiable IMAP account.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-documentation
+           (lambda _
+             (substitute* "docs/Makefile"
+               ;; Prevent xmllint and xsltproc from downloading a DTD file.
+               (("a2x -v") "a2x --no-xmllint --xsltproc-opts=--nonet -v"))
+             (invoke "make" "-C" "docs" "man")))
+         (add-after 'install 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (man (string-append out "/share/man")))
+               (install-file "docs/offlineimap.1" (string-append man "/man1"))
+               (install-file "docs/offlineimapui.7" (string-append man "/man7"))))))))
+    (home-page "https://www.offlineimap.org")
+    (synopsis "Sync emails between two repositories")
+    (description
+     "OfflineImap synchronizes emails between two repositories, so that you
 can read the same mailbox from multiple computers.  It supports IMAP as REMOTE
 repository and Maildir/IMAP as LOCAL repository.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public offlineimap
   (deprecated-package "offlineimap" offlineimap3))
@@ -1871,7 +1865,7 @@ facilities for checking incoming mail.")
   (package
     (name "dovecot")
     ;; Also update dovecot-pigeonhole when updating to a new minor version.
-    (version "2.3.17.1")
+    (version "2.3.18")
     (source
      (origin
        (method url-fetch)
@@ -1879,7 +1873,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "1f525bvpjvi4rnwqjsqaqrbdii08sqmc1v8xq03m19w1vk6cqrqw"))))
+        (base32 "0cvcbp6f5i8sg2sz8d3j654xrf4a74h7rszfpm2kq2bciik3zrq6"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
@@ -1901,6 +1895,10 @@ facilities for checking incoming mail.")
                            "--localstatedir=/var"
                            "--with-sqlite"  ; not auto-detected
                            "--with-lucene") ; not auto-detected
+       ;; The -rdynamic linker flag is needed for the backtrace() function to
+       ;; have symbol names rather than just addresses.  Dovecot's tests rely
+       ;; on this, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962630.
+       #:make-flags (list "LDFLAGS=-rdynamic")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-file-names
@@ -1935,7 +1933,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
   (let ((dovecot-version (version-major+minor (package-version dovecot))))
     (package
       (name "dovecot-pigeonhole")
-      (version "0.5.17.1")
+      (version "0.5.18")
       (source
        (origin
          (method url-fetch)
@@ -1943,7 +1941,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
                "https://pigeonhole.dovecot.org/releases/" dovecot-version "/"
                "dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz"))
          (sha256
-          (base32 "04j5z3y8yyci4ni9j9i7cy0zg1qj2sm9zfarmjcvs9vydpga7i1w"))
+          (base32 "198865a9fv9a8gj8lsp4jjylalm6qzjyqhsk22jwpppjsvw2in56"))
          (modules '((guix build utils)))
          (snippet
           '(begin
@@ -2728,13 +2726,14 @@ converts them to maildir format directories.")
     (native-inputs
      (list perl))
     (arguments
-     `(#:tests? #f                   ; XXX: Upstream tests appear to be broken
-       #:make-flags (list (string-append "CC=" ,(cc-for-target))
-                          "PREFIX="
-                          (string-append "DESTDIR=" %output))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     (list
+      #:make-flags
+      #~(list #$(string-append "CC=" (cc-for-target))
+              "PREFIX="
+              (string-append "DESTDIR=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure))))
     (home-page "https://github.com/leahneukirchen/mblaze")
     (synopsis "Unix utilities to deal with Maildir")
     (description
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index ce131a5835..0292c02a7f 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -269,6 +269,13 @@ implementation.
     (arguments
      (list #:phases
            #~(modify-phases %standard-phases
+               (add-after 'unpack 'relax-requirements
+                 (lambda _
+                   ;; Don't depend on bleeding-edge CFFI, as it is
+                   ;; apparently only needed for Python >= 3.10.
+                   (substitute* "setup.py"
+                     (("cffi>=1\\.15\\.0")
+                      "cffi>=1.0"))))
                (add-after 'unpack 'copy-cmark-gfm
                  (lambda _
                    ;; This package needs the cmark-gfm source files
@@ -291,7 +298,7 @@ implementation.
                    (when tests? (invoke "pytest" "-vv" "tests")))))))
     (native-inputs (list python-pytest))
     (inputs (list cmark-gfm))
-    (propagated-inputs (list python-cffi-1.15))
+    (propagated-inputs (list python-cffi))
     (home-page "https://github.com/theacodes/cmarkgfm")
     (synopsis "Python bindings for GitHub's fork of cmark")
     (description
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 06bf081a27..ecb85642ec 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3085,14 +3085,15 @@ scientific applications modeled by partial differential equations.")
     (inherit petsc)
     (name "petsc-openmpi")
     (inputs
-     `(("hdf5" ,hdf5-parallel-openmpi)
-       ("hypre" ,hypre-openmpi)
-       ("metis" ,metis)
-       ("mumps" ,mumps-openmpi)
-       ("openmpi" ,openmpi)
-       ("scalapack" ,scalapack)
-       ("scotch" ,pt-scotch32)
-       ,@(package-inputs petsc)))
+     (modify-inputs (package-inputs petsc)
+       (prepend hdf5-parallel-openmpi
+                hypre-openmpi
+                metis
+                mumps-openmpi
+                openmpi
+                scalapack
+                pt-scotch32
+                `(,pt-scotch32 "metis"))))
     (arguments
      (substitute-keyword-arguments (package-arguments petsc)
        ((#:configure-flags cf)
@@ -3105,12 +3106,20 @@ scientific applications modeled by partial differential equations.")
             ,(string-append "--with-mpi-dir="
                             #$(this-package-input "openmpi"))
             ,(string-append "--with-hdf5-include="
-                            #$(this-package-input "hdf5") "/include")
+                            #$(this-package-input "hdf5-parallel-openmpi")
+                            "/include")
             ,(string-append "--with-hdf5-lib="
-                            #$(this-package-input "hdf5") "/lib/libhdf5.a")
+                            #$(this-package-input "hdf5-parallel-openmpi")
+                            "/lib/libhdf5.a")
             ,@(delete "--with-mpi=0" #$cf)))
        ((#:phases phases)
         #~(modify-phases #$phases
+            (add-before 'configure 'adjust-pt-scotch-library-names
+              (lambda _
+                ;; Adjust to the library name changes in Scotch 7.0.
+                (substitute* "config/BuildSystem/config/packages/PTScotch.py"
+                  (("libptesmumps") "libesmumps")
+                  (("libptscotchparmetis") "libptscotchparmetisv3"))))
             (add-before 'configure 'mpi-setup
               #$%openmpi-setup)))))
     (synopsis "Library to solve PDEs (with MUMPS and MPI support)")))
@@ -3532,12 +3541,12 @@ language understood by many solvers.")
                                 "mumps-shared-pord.patch"))))
     (build-system gnu-build-system)
     (inputs
-     `(("fortran" ,gfortran)
-       ;; These are required for linking against mumps, but we let the user
-       ;; declare the dependency.
-       ("blas" ,openblas)
-       ("metis" ,metis)
-       ("scotch" ,scotch)))
+     (list gfortran
+           ;; These are required for linking against mumps, but we let the user
+           ;; declare the dependency.
+           openblas
+           metis
+           scotch))
     (arguments
      `(#:modules ((ice-9 match)
                   (ice-9 popen)
@@ -3594,8 +3603,9 @@ ORDERINGSC   = $(ORDERINGSF)
 LORDERINGS   = $(LPORD) $(LMETIS) $(LSCOTCH) $(LIBSEQ)
 IORDERINGSF  = $(ISCOTCH)
 IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
-                        (assoc-ref inputs "mpi")
-                        (assoc-ref inputs "blas")
+                        (->bool (which "mpicc"))  ;MPI support enabled?
+                        (dirname
+                         (dirname (search-input-file inputs "/include/cblas.h")))
                         (assoc-ref inputs "scalapack")
                         (assoc-ref inputs "metis")
                         (match (list (assoc-ref inputs "pt-scotch")
@@ -3606,7 +3616,7 @@ IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
                            `((,scotch "" "-Dscotch")))
                           ((ptscotch _)
                            `((,ptscotch
-                              "-lptesmumps -lptscotch -lptscotcherr "
+                              "-lesmumps -lptscotch -lptscotcherr "
                               "-Dptscotch")))))))))
          (replace 'build
           ;; By default only the d-precision library is built.  Make with "all"
@@ -3656,19 +3666,20 @@ sparse system of linear equations A x = b using Gaussian elimination.")
     (license license:cecill-c)))
 
 (define-public mumps-metis
-  (package (inherit mumps)
+  (package
+    (inherit mumps)
     (name "mumps-metis")
-    (inputs
-     (alist-delete "scotch" (package-inputs mumps)))))
+    (inputs (modify-inputs (package-inputs mumps)
+              (delete "scotch")))))
 
 (define-public mumps-openmpi
-  (package (inherit mumps)
+  (package
+    (inherit mumps)
     (name "mumps-openmpi")
     (inputs
-     `(("mpi" ,openmpi)
-       ("scalapack" ,scalapack)
-       ("pt-scotch" ,pt-scotch)
-       ,@(alist-delete "scotch" (package-inputs mumps))))
+     (modify-inputs (package-inputs mumps)
+       (delete "scotch")
+       (prepend openmpi scalapack pt-scotch)))
     (arguments
      (substitute-keyword-arguments (package-arguments mumps)
        ((#:phases phases)
@@ -3682,10 +3693,11 @@ sparse system of linear equations A x = b using Gaussian elimination.")
     (synopsis "Multifrontal sparse direct solver (with MPI)")))
 
 (define-public mumps-metis-openmpi
-  (package (inherit mumps-openmpi)
+  (package
+    (inherit mumps-openmpi)
     (name "mumps-metis-openmpi")
-    (inputs
-     (alist-delete "pt-scotch" (package-inputs mumps-openmpi)))))
+    (inputs (modify-inputs (package-inputs mumps-openmpi)
+              (delete "pt-scotch")))))
 
 (define-public ruby-asciimath
   (package
@@ -3869,91 +3881,43 @@ implemented in ANSI C, and MPI for communications.")
 (define-public scotch
   (package
     (name "scotch")
-    (version "6.1.1")
+    (version "7.0.1")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "https://gforge.inria.fr/frs/download.php/"
-                          "latestfile/298/scotch_" version ".tar.gz"))
-      (sha256
-       (base32 "04dkz24a2g20wq703fnyi4440ac4mwycy9gwrrllljj7zxcjy19r"))
-      (patches (search-patches "scotch-build-parallelism.patch"
-                               "scotch-integer-declarations.patch"))))
-    (build-system gnu-build-system)
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.inria.fr/scotch/scotch")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1fvgxd3ipl5xswswyadvxvlcgv6an8c229ispnlksgnlwphg10ig"))))
+    (build-system cmake-build-system)
     (inputs
      (list zlib))
     (native-inputs
      (list flex bison gfortran))
     (outputs '("out" "metis"))
     (arguments
-     `(#:make-flags (list (string-append "prefix=" %output))
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS=YES" "-DINTSIZE=64"
+                           "-DBUILD_PTSCOTCH=OFF")
        #:phases
        (modify-phases %standard-phases
-         (add-after
-          'unpack 'chdir-to-src
-          (lambda _ (chdir "src") #t))
-         (replace
-          'configure
-          (lambda _
-            (call-with-output-file "Makefile.inc"
-              (lambda (port)
-                (format port "
-EXE =
-LIB = .a
-OBJ = .o
-MAKE = make
-AR = ar
-ARFLAGS = -ruv
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
-LDFLAGS = -lz -lm -lrt -lpthread
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = ranlib
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE64"             ;use 'int64_t'
-                          ;; Prevents symbol clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"))))
-            #t))
-         (add-after 'build 'build-esmumps
-          (lambda _
-            (invoke "make"
-                    (format #f "-j~a" (parallel-job-count))
-                    "esmumps")))
-         (add-before 'install 'make-install-dirs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (mkdir (assoc-ref outputs "out"))))
          (add-after 'install 'install-metis
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "metis")))
-               (mkdir out)
-               ;; metis files are not installed with 'make install'
-               (for-each (lambda (f)
-                           (install-file f (string-append out "/include")))
-                         (find-files "../include/" ".*metis\\.h"))
-               (for-each (lambda (f)
-                           (install-file f (string-append out "/lib")))
-                         (find-files "../lib/" ".*metis\\..*"))
-               #t))))))
+             (let* ((out    (assoc-ref outputs "out"))
+                    (metis  (assoc-ref outputs "metis"))
+                    (prefix (string-length out)))
+               (for-each (lambda (file)
+                           (let ((target (string-append
+                                          metis
+                                          (string-drop file prefix))))
+                             (mkdir-p (dirname target))
+                             (rename-file file target)))
+                         (find-files out "metis"))))))))
     (home-page "https://www.labri.fr/perso/pelegrin/scotch/")
     (properties
-     `((release-monitoring-url . "https://gforge.inria.fr/frs/?group_id=248")))
+     `((release-monitoring-url
+        . "https://gitlab.inria.fr/scotch/scotch/-/releases")))
     (synopsis "Programs and libraries for graph algorithms")
     (description "SCOTCH is a set of programs and libraries which implement
 the static mapping and sparse matrix reordering algorithms developed within
@@ -3968,176 +3932,58 @@ bio-chemistry.")
 (define-public scotch32
   ;; This is the 'INTSIZE32' variant, which uses 32-bit integers, as needed by
   ;; some applications.
-  (package (inherit scotch)
+  (package
+    (inherit scotch)
     (name "scotch32")
     (arguments
      (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-phases)
-        `(modify-phases ,scotch-phases
-          (replace
-           'configure
-           (lambda _
-             (call-with-output-file "Makefile.inc"
-               (lambda (port)
-                 (format port "
-EXE =
-LIB = .a
-OBJ = .o
-MAKE = make
-AR = ar
-ARFLAGS = -ruv
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
-LDFLAGS = -lz -lm -lrt -lpthread
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = ranlib
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE32"   ;use 32-bit integers.  See INSTALL.txt
-                          ;; Prevents symbolc clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"))))))))))
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=OFF"
+           "-DINTSIZE=32"))))
     (synopsis
      "Programs and libraries for graph algorithms (32-bit integers)")))
 
-(define-public scotch-shared
-  (package (inherit scotch)
-    (name "scotch-shared")
-    (native-inputs
-     (list gcc flex bison))
-    (arguments
-     (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-shared-phases)
-        `(modify-phases ,scotch-shared-phases
-           (replace
-            'configure
-           (lambda _
-             ;; Otherwise, the RUNPATH will lack the final path component.
-             (setenv "RPATHFLAGS" (string-append "-Wl,-rpath="
-                                              (assoc-ref %outputs "out") "/lib"))
-            (call-with-output-file "Makefile.inc"
-              (lambda (port)
-                (format port "
-EXE =
-LIB = .so
-OBJ = .o
-MAKE = make
-AR = gcc
-ARFLAGS = -shared -o
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS) $(RPATHFLAGS)
-CLIBFLAGS = -shared -fPIC
-LDFLAGS = -lz -lm -lrt -lpthread -Xlinker --no-as-needed
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = echo
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE64"             ;use 'int64_t'
-                          ;; Prevents symbolc clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"
-                          ))))#t))
-           (delete 'check)))))
-     (synopsis
-      "Programs and libraries for graph algorithms (shared libraries version)")))
-
 (define-public pt-scotch
-  (package (inherit scotch)
+  (package
+    (inherit scotch)
     (name "pt-scotch")
     (propagated-inputs
-     (list openmpi))           ;Headers include MPI headers
+     (list openmpi))                              ;headers include MPI headers
     (arguments
      (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-phases)
-        `(modify-phases ,scotch-phases
-           (replace
-            'build
-            (lambda _
-              (invoke "make" (format #f "-j~a" (parallel-job-count))
-                      "ptscotch" "ptesmumps")
-
-              ;; Install the serial metis compatibility library
-              (invoke "make" "-C" "libscotchmetis" "install")))
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON"
+           "-DINTSIZE=64"))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
            (add-before 'check 'mpi-setup
-	     ,%openmpi-setup)
-           (replace 'check
-             (lambda _
-               (invoke "make" "ptcheck")))))))
+             ,%openmpi-setup)))))
     (synopsis "Programs and libraries for graph algorithms (with MPI)")))
 
 (define-public pt-scotch32
-  (package (inherit scotch32)
+  (package
+    (inherit pt-scotch)
     (name "pt-scotch32")
     (propagated-inputs
      (list openmpi))                     ;headers include MPI headers
     (arguments
-     (substitute-keyword-arguments (package-arguments scotch32)
-       ((#:phases scotch32-phases)
-        `(modify-phases ,scotch32-phases
-           (replace 'build
-             (lambda _
-               (invoke "make" (format #f "-j~a" (parallel-job-count))
-                       "ptscotch" "ptesmumps")
-               ;; Install the serial metis compatibility library
-               (invoke "make" "-C" "libscotchmetis" "install")))
-           (add-before 'check 'mpi-setup
-	     ,%openmpi-setup)
-           (replace 'check
-             (lambda _
-               (invoke "make" "ptcheck")))))))
+     (substitute-keyword-arguments (package-arguments pt-scotch)
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON"
+           "-DINTSIZE=32"))))
     (synopsis
      "Programs and libraries for graph algorithms (with MPI and 32-bit integers)")))
 
-(define-public pt-scotch-shared
-  (package (inherit scotch-shared)
-    (name "pt-scotch-shared")
-    (propagated-inputs
-     (list openmpi))           ;Headers include MPI headers
-    (arguments
-     (substitute-keyword-arguments (package-arguments scotch-shared)
-       ((#:phases scotch-shared-phases)
-        `(modify-phases ,scotch-shared-phases
-           (replace
-            'build
-            (lambda _
-              (invoke "make" (format #f "-j~a" (parallel-job-count))
-                      "ptscotch" "ptesmumps")
+(define-public scotch-shared
+  ;; There used to be separate shared library variants while the default would
+  ;; provide .a files including PIC objects.  With the switch to CMake, .a
+  ;; files contain non-PIC objects, which breaks some users, and switching to
+  ;; shared libraries by default seems to make more sense, as discussed here:
+  ;; <https://issues.guix.gnu.org/47619#2>.
+  (deprecated-package "scotch-shared" scotch))
 
-              ;; Install the serial metis compatibility library
-              (invoke "make" "-C" "libscotchmetis" "install")))
-           (add-before 'check 'mpi-setup
-             ,%openmpi-setup)))))
-    (synopsis "Graph algorithms (shared libraries version, with MPI)")))
+(define-public pt-scotch-shared
+  (deprecated-package "pt-scotch-shared" pt-scotch))
 
 
 (define-public metis
@@ -5535,53 +5381,52 @@ set.")
     (outputs '("out"                    ;5.3 MiB of headers and libraries
                "doc"))                  ;12 MiB of documentation
     (native-inputs
-     `(("doc++" ,doc++)
-       ("doxygen" ,doxygen)
-       ("python" ,python)
-       ("python-breathe" ,python-breathe)
-       ("python-sphinx" ,python-sphinx)
-       ("texlive" ,(texlive-updmap.cfg (list texlive-adjustbox
-                                             texlive-amsfonts
-                                             texlive-bibtex
-                                             texlive-capt-of
-                                             texlive-caption
-                                             texlive-cm
-                                             texlive-etoolbox
-                                             texlive-jknappen
-                                             texlive-sectsty
-                                             texlive-tex-gyre
-                                             texlive-wasy
-                                             texlive-xcolor
-                                             texlive-xypic
-                                             texlive-generic-listofitems
-                                             texlive-latex-cmap
-                                             texlive-latex-colortbl
-                                             texlive-latex-etoc
-                                             texlive-latex-fancyhdr
-                                             texlive-latex-fancyvrb
-                                             texlive-latex-float
-                                             texlive-latex-fncychap
-                                             texlive-latex-framed
-                                             texlive-latex-geometry
-                                             texlive-latex-hanging
-                                             texlive-hyperref
-                                             texlive-latex-multirow
-                                             texlive-latex-natbib
-                                             texlive-latex-needspace
-                                             texlive-latex-newunicodechar
-                                             texlive-latex-parskip
-                                             texlive-latex-stackengine
-                                             texlive-latex-tabulary
-                                             texlive-latex-titlesec
-                                             texlive-latex-tocloft
-                                             texlive-latex-upquote
-                                             texlive-latex-varwidth
-                                             texlive-ulem
-                                             texlive-wasysym
-                                             texlive-latex-wrapfig)))))
+     (list doc++
+           doxygen
+           python
+           python-breathe
+           python-sphinx
+           (texlive-updmap.cfg (list texlive-adjustbox
+                                     texlive-amsfonts
+                                     texlive-bibtex
+                                     texlive-capt-of
+                                     texlive-caption
+                                     texlive-cm
+                                     texlive-etoolbox
+                                     texlive-jknappen
+                                     texlive-sectsty
+                                     texlive-tex-gyre
+                                     texlive-wasy
+                                     texlive-xcolor
+                                     texlive-xypic
+                                     texlive-generic-listofitems
+                                     texlive-latex-cmap
+                                     texlive-latex-colortbl
+                                     texlive-latex-etoc
+                                     texlive-latex-fancyhdr
+                                     texlive-latex-fancyvrb
+                                     texlive-latex-float
+                                     texlive-latex-fncychap
+                                     texlive-latex-framed
+                                     texlive-latex-geometry
+                                     texlive-latex-hanging
+                                     texlive-hyperref
+                                     texlive-latex-multirow
+                                     texlive-latex-natbib
+                                     texlive-latex-needspace
+                                     texlive-latex-newunicodechar
+                                     texlive-latex-parskip
+                                     texlive-latex-stackengine
+                                     texlive-latex-tabulary
+                                     texlive-latex-titlesec
+                                     texlive-latex-tocloft
+                                     texlive-latex-upquote
+                                     texlive-latex-varwidth
+                                     texlive-ulem
+                                     texlive-wasysym
+                                     texlive-wrapfig))))
     (inputs
-     `(("blas" ,openblas)
-       ("lapack" ,lapack)))
+     (list openblas lapack))
     (arguments
      `(#:modules ((srfi srfi-1)
                   ,@%gnu-build-system-modules)
@@ -5642,11 +5487,11 @@ problems.")
     (license license:lgpl2.1)))
 
 (define-public hypre-openmpi
-  (package (inherit hypre)
+  (package
+    (inherit hypre)
     (name "hypre-openmpi")
-    (inputs
-     `(("mpi" ,openmpi)
-       ,@(package-inputs hypre)))
+    (inputs (modify-inputs (package-inputs hypre)
+              (prepend openmpi)))
     (arguments
      (substitute-keyword-arguments (package-arguments hypre)
        ((#:configure-flags flags)
@@ -7199,8 +7044,7 @@ researchers and developers alike to get started on SAT.")
            curl
            icu4c
            gnuplot
-           readline
-           libiconv))
+           readline))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -7301,7 +7145,7 @@ numeric differences and differences in numeric formats.")
 (define-public why3
   (package
     (name "why3")
-    (version "1.4.0")
+    (version "1.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -7310,7 +7154,7 @@ numeric differences and differences in numeric formats.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pfsiddnk26f384wbazfpgzh1n1ibf3xq101q74mxvczi7z0a791"))))
+                "1yca6mx8bjm8x0i594ivh31aw45s6fbimmwfj8g2v9zwrgmr1i4s"))))
     (build-system ocaml-build-system)
     (native-inputs
      (list autoconf automake coq ocaml which))
diff --git a/gnu/packages/maven-parent-pom.scm b/gnu/packages/maven-parent-pom.scm
index e2ebf83572..cf48be86a2 100644
--- a/gnu/packages/maven-parent-pom.scm
+++ b/gnu/packages/maven-parent-pom.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2020, 2021 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2020, 2021, 2022 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -88,6 +88,10 @@
   (make-apache-parent-pom
     "23" "05c8i741f0m4311q264zvq0lc6srsyz2x95ga4d7qfd89swkzg9d"))
 
+(define-public apache-parent-pom-25
+  (make-apache-parent-pom
+    "25" "1vwx2fpgk7cn2pnlnx26df26vndiwwn5l7ngakj0vwal5pmp6115"))
+
 (define* (make-apache-commons-parent-pom version hash parent
                                          #:key (tag-prefix "commons-parent-"))
   (hidden-package
@@ -434,6 +438,16 @@ other projects as their parent pom.")
 tool.  This package contains the Maven parent POM.")
       (license license:asl2.0))))
 
+(define-public maven-parent-pom-35
+  (make-maven-parent-pom
+    "35" "0pg9k7l5pcbghmc89i11g900pbzznvf5sfdfzlqfwpihqb2g8iab"
+    apache-parent-pom-25
+    #:replacements
+    (delay
+      `(("org.codehaus.plexus"
+         ("plexus-component-annotations" .
+          ,(package-version java-plexus-component-annotations)))))))
+
 (define-public maven-parent-pom-34
   (make-maven-parent-pom
     "34" "1vkmrfwva76k6maf1ljbja5ga4kzav4xc73ymbaf42xaiaknglbc"
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index ba4f111930..817fee1c71 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018-2021 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018-2022 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -1088,6 +1088,7 @@ wagon providers supporting HTTP.")))
        ("java-plexus-cli" ,java-plexus-cli)
        ("maven-plugin-api" ,maven-plugin-api)
        ("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("maven-slf4j-provider" ,maven-slf4j-provider)
        ("maven-core" ,maven-core)
        ("maven-model" ,maven-model)
        ("java-commons-cli" ,java-commons-cli)
@@ -1106,7 +1107,6 @@ wagon providers supporting HTTP.")))
        ("java-commons-codec" ,java-commons-codec)
        ("java-commons-io" ,java-commons-io)
        ("java-jsoup" ,java-jsoup)
-       ("java-slf4j-simple" ,java-slf4j-simple)
        ,@(package-native-inputs maven-wagon-provider-api)))
     (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
     (description "Maven Wagon is a transport abstraction that is used in Maven's
@@ -1117,13 +1117,13 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
 (define maven-pom
   (package
     (name "maven-pom")
-    (version "3.8.4")
+    (version "3.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/maven/"
                                   "maven-3/" version "/source/"
                                   "apache-maven-" version "-src.tar.gz"))
-              (sha256 (base32 "16xbhkhhp05gskgbhrf1ia8riivvkhpk822n9xgnad61f9hzp2r9"))
+              (sha256 (base32 "01y0fjvlvgy1bl3mdhbjll2xhzpli6aklqb3w29xpbgk6frxn3d6"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1197,7 +1197,7 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
          (replace 'install
            (install-pom-file "pom.xml")))))
     (propagated-inputs
-     `(("maven-parent-pom-34" ,maven-parent-pom-34)))
+     (list maven-parent-pom-35))
     (home-page "https://maven.apache.org/")
     (synopsis "Build system")
     (description "Apache Maven is a software project management and comprehension
@@ -1389,29 +1389,29 @@ inheritance, interpolation, @dots{}")))
     (name "maven-model-builder")
     (arguments
      `(#:jar-name "maven-model-builder.jar"
-       #:source-dir "maven-model-builder/src/main/java"
+       #:source-dir "src/main/java"
        #:jdk ,icedtea-8
-       #:test-dir "maven-model-builder/src/test"
+       #:test-dir "src/test"
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             ;; Required for tests that rely on the package's default
+             ;; locations, that reference ${basedir}/src/test.
+             (chdir "maven-model-builder")))
          (add-before 'build 'copy-resources
            (lambda _
-             (copy-recursively "maven-model-builder/src/main/resources"
+             (copy-recursively "src/main/resources"
                                "build/classes")
              #t))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
-             (chmod "sisu.sh" #o755)
-             (invoke "./sisu.sh" "maven-model-builder/src/main/java"
+             (chmod "../sisu.sh" #o755)
+             (invoke "../sisu.sh" "src/main/java"
                      "build/classes/META-INF/sisu/javax.inject.Named")))
-         (add-before 'check 'fix-paths
-           (lambda _
-             (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
-               (("src/test") "maven-model-builder/src/test"))
-             #t))
          (replace 'install
-           (install-from-pom "maven-model-builder/pom.xml")))))
+           (install-from-pom "pom.xml")))))
     (propagated-inputs
      (list java-plexus-interpolation
            java-plexus-utils
@@ -1772,6 +1772,40 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
        ("maven-core-boot" ,maven-core-bootstrap)
        ,@(package-native-inputs maven-core-bootstrap)))))
 
+(define-public maven-slf4j-provider
+  (package
+    (inherit maven-artifact)
+    (name "maven-slf4j-provider")
+    (arguments
+     `(#:jar-name "maven-slf4j-provider.jar"
+       #:source-dir "maven-slf4j-provider/src/main/java"
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-slf4j
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "generated-sources")
+             (with-directory-excursion "generated-sources"
+               (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
+               (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
+             (for-each
+               (lambda (simple)
+                 (for-each
+                   (lambda (java)
+                     (copy-file java
+                                (string-append
+                                  "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
+                                  (basename java))))
+                   (find-files (string-append simple "/src/main/java/") "\\.java$")))
+               (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
+         (replace 'install
+           (install-from-pom "maven-slf4j-provider/pom.xml")))))
+    (inputs
+     `(("java-slf4j-api" ,java-slf4j-api)
+       ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
+       ("maven-shared-utils" ,maven-shared-utils)))
+    (native-inputs (list unzip))))
+
 (define-public maven-embedder
   (package
     (inherit maven-artifact)
@@ -1791,6 +1825,10 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
              (invoke "./sisu.sh" "maven-embedder/src/main/java"
                      "build/classes/META-INF/sisu/javax.inject.Named")
              #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes/")
+             (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
          (add-before 'build 'generate-models
            (lambda* (#:key inputs #:allow-other-keys)
              (define (modello-single-mode file version mode)
@@ -1836,6 +1874,7 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
        ("maven-settings" ,maven-settings)
        ("maven-settings-builder" ,maven-settings-builder)
        ("maven-shared-utils" ,maven-shared-utils)
+       ("maven-slf4j-provider" ,maven-slf4j-provider)
        ("java-plexus-classworlds" ,java-plexus-classworlds)
        ("java-plexus-util" ,java-plexus-utils)
        ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
@@ -1853,7 +1892,6 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
        ("java-guice" ,java-guice)
        ("java-javax-inject" ,java-javax-inject)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-slf4j-simple" ,java-slf4j-simple)
        ("java-jsr250" ,java-jsr250)))
     (native-inputs
      `(("java-asm-8" ,java-asm-8)
@@ -1996,6 +2034,10 @@ logging support.")))
                (modello-single-mode file "1.0.0" "xpp3-reader")
                (modello-single-mode file "1.0.0" "xpp3-writer"))
              #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes/")
+             (copy-recursively "src/main/resources" "build/classes")))
          (add-after 'build 'generate-metadata
            (lambda _
              (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
@@ -2080,8 +2122,8 @@ logging support.")))
        ("java-commons-lang3" ,java-commons-lang3)
        ("java-aop" ,java-aopalliance)
        ("maven-resolver-provider" ,maven-resolver-provider)
+       ("maven-slf4j-provider" ,maven-slf4j-provider)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-slf4j-simple" ,java-slf4j-simple)
        ,@(package-inputs java-slf4j-api)))
     (description "Apache Maven is a software project management and comprehension
 tool.  This package contains Maven2 classes maintained as compatibility
@@ -2119,7 +2161,8 @@ layer for plugins that need to keep Maven2 compatibility.")))
                      "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
                      "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
                      "maven-resolver-connector-basic" "maven-resolver-provider"
-                     "maven-resolver-transport-wagon" "maven-wagon-provider-api"
+                     "maven-resolver-transport-wagon" "maven-slf4j-provider"
+                     "maven-wagon-provider-api"
                      "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
                      "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
                      "maven-wagon-http-shared" "maven-wagon-tck-http"
@@ -2129,8 +2172,7 @@ layer for plugins that need to keep Maven2 compatibility.")))
                      "java-plexus-utils" "java-plexus-interpolation"
                      "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
                      "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
-                     "java-commons-io" "java-commons-lang3" "java-slf4j-api"
-                     "java-slf4j-simple"))))
+                     "java-commons-io" "java-commons-lang3" "java-slf4j-api"))))
              (substitute* "apache-maven/src/bin/mvn"
                (("cygwin=false;")
                 (string-append
@@ -2176,6 +2218,7 @@ layer for plugins that need to keep Maven2 compatibility.")))
            maven-resolver-connector-basic
            maven-resolver-provider
            maven-resolver-transport-wagon
+           maven-slf4j-provider
            maven-wagon-provider-api
            maven-wagon-file
            maven-wagon-http
@@ -2203,9 +2246,7 @@ layer for plugins that need to keep Maven2 compatibility.")))
            java-commons-cli
            java-commons-io
            java-commons-lang3
-           java-slf4j-api
-           ;; TODO: replace with maven-slf4j-provider
-           java-slf4j-simple))
+           java-slf4j-api))
     (propagated-inputs
      (list coreutils which))
     (description "Apache Maven is a software project management and comprehension
@@ -2362,12 +2403,12 @@ reporting or the build process.")))
             (add-before 'build 'generate-components.xml
               (lambda _
                 (mkdir-p "build/classes/META-INF/plexus")
-                (chmod "components.sh" #o755)
-                (invoke "./components.sh" "maven-model-builder/src/main/java"
+                (chmod "../components.sh" #o755)
+                (invoke "../components.sh" "src/main/java"
                         "build/classes/META-INF/plexus/components.xml")))
             (add-before 'check 'remove-failing-test
               (lambda _
-                (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
+                (delete-file "src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
     (propagated-inputs
      `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
        ,@(filter
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 62e4a65dca..a862d84fc8 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -157,6 +157,11 @@ parsers to allow execution with Guile as extension languages.")))
               (sha256
                (base32
                 "065ksalfllbdrzl12dz9d9dcxrv97wqxblslngsc6kajvnvlyvpk"))))
+
+    ;; XXX: Remove GUILE-BYTESTRUCTURES, an optional dependency needed to
+    ;; build the FFI helper, because it fails to build.
+    (propagated-inputs '())
+
     (inputs (list guile-3.0))))
 
 (define-public mes
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 8884473a43..f40c3a7e2c 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -33,6 +33,7 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -697,8 +698,15 @@ identi.ca and status.net).")
   (package/inherit bitlbee
     (name "bitlbee-purple")
     (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
-    (inputs `(("purple" ,pidgin)
-              ,@(package-inputs bitlbee)))
+    (inputs (modify-inputs (package-inputs bitlbee)
+              (prepend pidgin)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "PURPLE_PLUGIN_PATH")
+            ;; XXX: Should be (version-major (package-version pidgin)) but
+            ;; can't due to circular references.
+            (files (list (string-append "lib/purple-2")
+                         "lib/pidgin")))))
     (arguments
      (substitute-keyword-arguments (package-arguments bitlbee)
        ((#:phases phases '%standard-phases)
@@ -814,14 +822,14 @@ used by Pidgin and Bitlbee, among others, to access
 (define-public hexchat
   (package
     (name "hexchat")
-    (version "2.16.0")
+    (version "2.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
                            version ".tar.xz"))
        (sha256
-        (base32 "0dnwhb2gi08i5v79vq0y2izs89wyk3by96jv99kgkidjic3k2bj1"))))
+        (base32 "1iy4ln6yfgy3xysrfpjxw8fn38i3qx8jsn2mk2prshfzf7d9gr57"))))
     (build-system meson-build-system)
     (native-inputs `(("gettext" ,gettext-minimal)
                      ("glib:bin" ,glib "bin")       ;need glib-genmarshal
@@ -2301,7 +2309,7 @@ QMatrixClient project.")
 (define-public mtxclient
   (package
     (name "mtxclient")
-    (version "0.6.1")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -2310,7 +2318,7 @@ QMatrixClient project.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1a3ki45rf1fm7y4b74li76aqd4qc4y5ga5r163s0cwcpj9mp8c45"))))
+        (base32 "0kgz9i3xgyk1a82sv48a1m8gdxg0cl5pgd5imgwy519vvjlkwv48"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2346,7 +2354,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
 (define-public nheko
   (package
     (name "nheko")
-    (version "0.9.0")
+    (version "0.9.2")
     (source
      (origin
        (method git-fetch)
@@ -2355,7 +2363,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 "1akhnngxkxbjwjkg5ispl6j5s2ylbcj92r3zxqqry4gbfxbjpx8k"))
+        (base32 "0q9yzzl7mvlixm1c2f55lksxgh9q11zb8k80mkwnhmmli8wbb05f"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -2429,7 +2437,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
            xcb-util-wm
            zlib))
     (native-inputs
-     (list doxygen graphviz pkg-config qttools))
+     (list asciidoc doxygen graphviz pkg-config qttools))
     (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
@@ -2624,8 +2632,7 @@ replacement.")
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #t
-       #:configure-flags
+     `(#:configure-flags
        (list "-DCMAKE_BUILD_TYPE=Release"
              "-DTD_ENABLE_LTO=OFF")     ; FIXME: Get LTO to work.
        #:phases
@@ -3108,23 +3115,52 @@ designed for experienced users.")
 (define-public matterbridge
   (package
     (name "matterbridge")
-    (version "1.22.2")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/42wim/matterbridge")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "07rgdc4v043fhzsalmlhickqizk6xjlpjkzn6l5v9ryp5gmv580z"))))
-    (build-system go-build-system)
+    (version "1.24.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/42wim/matterbridge")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0cd70x9685162c0imdici1ipl9lziq700wzyb5bsg610wfak3ms7"))))
+    ;; Using the go-build-system results in the same error message
+    ;; than in the bug 1551[1]. So we fix it by running go build
+    ;; manually in the git repository as-is as this is the solution
+    ;; given to that bug by the matterbridge developers.
+    ;; [1]https://github.com/42wim/matterbridge/issues/1551
+    (build-system gnu-build-system)
     (arguments
-     `(#:import-path "github.com/42wim/matterbridge"
-       #:unpack-path "github.com/42wim/matterbridge"))
+     `(#:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (replace 'build
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (setenv "GOCACHE"
+                              (string-append (getcwd) "/go-build"))
+                      (setenv "GOBIN"
+                              (string-append (assoc-ref outputs "out") "/bin"))
+                      (invoke "go" "build" "-v" "-x")))
+                  (replace 'check
+                    (lambda* (#:key outputs tests? #:allow-other-keys)
+                      (when tests?
+                        (setenv "GOCACHE"
+                                (string-append (getcwd) "/go-build"))
+                        (setenv "GOBIN"
+                                (string-append (assoc-ref outputs "out")
+                                               "/bin"))
+                        (invoke "go" "test" "-v" "-x"))))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (setenv "GOCACHE"
+                              (string-append (getcwd) "/go-build"))
+                      (setenv "GOBIN"
+                              (string-append (assoc-ref outputs "out") "/bin"))
+                      (invoke "go" "install" "-v" "-x"))))))
+    (native-inputs (list go))
     (synopsis "Bridge together various messaging networks and protocols")
-    (description "Relays messages between different channels from various
+    (description
+     "Relays messages between different channels from various
 messaging networks and protocols.  So far it supports mattermost, IRC, gitter,
 xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp,
 keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST
@@ -3132,6 +3168,41 @@ API.  Mattermost is not required.")
     (home-page "https://github.com/42wim/matterbridge")
     (license license:asl2.0)))
 
+(define-public jj
+  (package
+    (name "jj")
+    (version "2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://23.fi/jj/jj-" version ".tar.gz"))
+              (sha256
+               (base32
+                "02xz2ci93bccvil5iff804mh3zr5iqkf6zx5mxgraz17xg0azlgh"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f                            ;There are no tests.
+           #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "PREFIX=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (replace 'install
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (bin (string-append out "/bin")))
+                     (install-file "jj" bin)))))))
+    (native-inputs (list pkg-config))
+    (inputs (list glib loudmouth))
+    (home-page "https://23.fi/jj/")
+    (synopsis "FIFO based Jabber client")
+    (description
+     "jj is a simple file-system-based Jabber client, inspired by ii IRC
+client.  Interaction with jj is done by writing and reading files from the
+server directory which jj creates.  It is perfect for bots and
+notifications.")
+    (license license:expat)))
+
 (define-public pounce
   (package
     (name "pounce")
@@ -3277,4 +3348,49 @@ more)!  It connects via the Slack API, and maintains a persistent websocket
 for notification of events.")
     (license license:expat)))
 
+(define-public python-librecaptcha
+  (package
+    (name "python-librecaptcha")
+    (version "0.7.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/taylordotfish/librecaptcha")
+                     (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0r35ws6vdf31j01kpacvpjplddm254r0cgy0npmhgnfxd5kpjf3s"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-pillow python-requests python-esprima python-pygobject gobject-introspection gtk+))
+    (synopsis "Show CAPTCHA without running proprietary code.")
+    (description "This package shows CAPTCHA without running proprietary code.")
+    (home-page "https://github.com/taylordotfish/librecaptcha")
+    (license license:gpl3+)))
+
+(define-public python-harmony
+  (package
+    (name "python-harmony")
+    (version "0.7.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/taylordotfish/harmony.git")
+                     (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1bm9xcnzpnpj6rlhbrnl2abwclzl7ivgh1vb5644y9mnhcs489js"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-tox))
+    (inputs
+     (list python-librecaptcha python-keyring python-requests))
+    (synopsis "Discord account management")
+    (description "This package provides account management tools for
+Discord.")
+    (home-page "https://github.com/taylordotfish/harmony")
+    (license license:gpl3+)))
+
 ;;; messaging.scm ends here
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 8c4012f004..7935c92815 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -164,7 +164,7 @@ etc. via a Web interface.  Features include:
 (define-public zabbix-agentd
   (package
     (name "zabbix-agentd")
-    (version "5.4.10")
+    (version "6.0.0")
     (source
      (origin
        (method url-fetch)
@@ -172,7 +172,7 @@ etc. via a Web interface.  Features include:
              "https://cdn.zabbix.com/zabbix/sources/stable/"
              (version-major+minor version) "/zabbix-" version ".tar.gz"))
        (sha256
-        (base32 "0xwqwmq811fgxl6j9a9527i55jcpq98gqvwcda8la9gj0rsiqas6"))
+        (base32 "0dlb5c34lwd3j754pgaddsvpqad5c5yqbh25y4qxfpiy4fzqmw2y"))
        (modules '((guix build utils)))
        (snippet
         '(substitute* '("src/zabbix_proxy/proxy.c"
@@ -182,15 +182,10 @@ etc. via a Web interface.  Features include:
             "/run/setuid-programs/fping")))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list "--enable-agent"
-             "--enable-ipv6"
-             (string-append "--with-iconv="
-                            (assoc-ref %build-inputs "libiconv"))
-             (string-append "--with-libpcre="
-                            (assoc-ref %build-inputs "pcre")))))
+     '(#:configure-flags
+       '("--enable-agent" "--enable-ipv6" "--with-libpcre2")))
     (inputs
-     (list libiconv pcre))
+     (list pcre2))
     (home-page "https://www.zabbix.com/")
     (synopsis "Distributed monitoring solution (client-side agent)")
     (description "This package provides a distributed monitoring
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index ad89acda04..25c017e028 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -107,7 +107,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.23.5")
+    (version "0.23.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -116,7 +116,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "16d2ny05z47qpj4sjagdcyphb16dzdy21mwwdxbg819s14jjqb7j"))))
+                "1v969w7h3660ph3h2bdlkrzc05pfz95bmxjqdbzzf7pfwf795ifb"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=enabled")))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index ddb1126a47..25f2495c02 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
-;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2018, 2021 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
@@ -44,6 +44,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
+;;; Copyright © 2022 Sughosha <sughosha@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -618,46 +619,47 @@ many input formats and provides a customisable Vi-style user interface.")
 (define-public denemo
   (package
     (name "denemo")
-    (version "2.5.0")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://gnu/denemo/denemo-" version ".tar.gz"))
        (sha256
-        (base32 "05kwy8894hsxr6123hc854j2qq2sxyjw721zk4g3vzz8pw29p887"))))
+        (base32 "0pdmjij2635jbw2a24ivk1y4w0z58jbmq9vnz3qrfzw4d469grab"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Tests require to write $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Replace hard-coded diff file name.
-             (substitute* "tests/integration.c"
-               (("/usr/bin/diff")
-                (search-input-file inputs "/bin/diff")))
-             ;; Denemo's documentation says to use this command to run its
-             ;; test suite.
-             (invoke "make" "-C" "tests" "check")))
-         (add-before 'build 'set-lilypond
-           ;; This phase sets the default path for lilypond to its current
-           ;; location in the store.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((lilypond (search-input-file inputs "/bin/lilypond")))
-               (substitute* "src/core/prefops.c"
-                 (("g_string_new \\(\"lilypond\"\\);")
-                  (string-append "g_string_new (\""
-                                 lilypond
-                                 "\");"))))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key inputs tests? #:allow-other-keys)
+              ;; Tests require to write $HOME.
+              (when tests?
+                (setenv "HOME" (getcwd))
+                ;; Replace hard-coded diff file name.
+                (substitute* "tests/integration.c"
+                  (("/usr/bin/diff")
+                   (search-input-file inputs "/bin/diff")))
+                ;; Denemo's documentation says to use this command to run its
+                ;; test suite.
+                (invoke "make" "-C" "tests" "check"))))
+          (add-before 'build 'set-lilypond
+            ;; This phase sets the default path for lilypond to its current
+            ;; location in the store.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let* ((lilypond (search-input-file inputs "/bin/lilypond")))
+                (substitute* "src/core/prefops.c"
+                  (("g_string_new \\(\"lilypond\"\\);")
+                   (string-append "g_string_new (\""
+                                  lilypond
+                                  "\");")))))))))
     (native-inputs
-     `(("diffutils" ,diffutils)
-       ("glib:bin" ,glib "bin")         ; for gtester
-       ("gtk-doc" ,gtk-doc)
-       ("intltool" ,intltool)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
+     (list diffutils
+           `(,glib "bin")               ; for gtester
+           gtk-doc
+           intltool
+           libtool
+           pkg-config))
     (inputs
      (list alsa-lib
            aubio
@@ -1773,7 +1775,7 @@ music theorist Paul Nauert's quantization grids or Q-Grids, for short.")
                      '()))
          #:python ,python-2))
       (inputs
-       (list jack-1 libsigc++ liblo ntk))
+       (list jack-1 libsigc++-2 liblo ntk))
       (native-inputs
        (list pkg-config))
       (home-page "https://non.tuxfamily.org/wiki/Non%20Sequencer")
@@ -3607,6 +3609,17 @@ formats, looking up tracks through metadata and audio fingerprints.")
                (base32
                 "1qdk6i8gyhbi1c4j5jmbfpac3q8sff2ysri1pnp7nb9wzcp615v3"))))
     (build-system python-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-before 'check 'remove-hypothesis-deadlines
+             ;; These tests can timeout on slower architectures.
+             (lambda _
+               (substitute* "tests/test___init__.py"
+                 (("import given") "import given, settings")
+                 (("( +)@given" all spaces)
+                  (string-append spaces "@settings(deadline=None)\n" all))))))))
     (native-inputs
      (list python-pytest python-hypothesis python-flake8))
     (home-page "https://mutagen.readthedocs.io/")
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 552571de1f..a07fe0cbc9 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,13 +31,13 @@
 (define-public nano
   (package
     (name "nano")
-    (version "6.0")
+    (version "6.2")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz"))
       (sha256
-       (base32 "18ly2v5yyrqws1x4z154cnv9xf2vbk8js2mqmq50xlaaifv8rb4k"))))
+       (base32 "1cvwlz34p1msgylhbhgfc3c5xdcvfkj5dxwisx5aysmdpq21ijib"))))
     (build-system gnu-build-system)
     (inputs
      (list gettext-minimal ncurses))
diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index d6e4522bf0..7089ac8c89 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,7 +24,11 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix utils)
+  #:use-module (guix gexp)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages zig))
 
 (define-public ncdu
   (package
@@ -49,3 +54,38 @@ ncurses installed.")
               (string-append "https://g.blicky.net/ncdu.git/plain/COPYING?id=v"
                              version)))
     (home-page "https://dev.yorhel.nl/ncdu")))
+
+(define-public ncdu-2
+  (package
+    (inherit ncdu)
+    (name "ncdu2")      ; To destinguish it from the C based version.
+    (version "2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://dev.yorhel.nl/download/ncdu-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1zlml62j57nb8k2simjy1bj2bp69zj517injy85c0p55ch5d5a2b"))))
+    (arguments
+     (list
+       #:make-flags
+       #~(list (string-append "PREFIX=" #$output)
+               (string-append "CC=" #$(cc-for-target)))
+       #:phases
+       #~(modify-phases %standard-phases
+           (delete 'configure)      ; No configure script.
+           (add-before 'build 'pre-build
+             (lambda _
+               (setenv "ZIG_GLOBAL_CACHE_DIR"
+                       (mkdtemp "/tmp/zig-cache-XXXXXX"))))
+           (add-after 'build 'build-manpage
+             (lambda _
+               (delete-file "ncdu.1")
+               (invoke "make" "doc")))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (invoke "zig" "test" "build.zig")))))))
+    (native-inputs
+     (list perl zig))))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 0eb194f957..b45f2f79f2 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2421,7 +2421,7 @@ that block port 22.")
 (define-public iperf
   (package
     (name "iperf")
-    (version "3.10.1")
+    (version "3.11")
     (source
      (origin
        (method git-fetch)
@@ -2430,7 +2430,7 @@ that block port 22.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0svkrmxki6ckn2a8xysh5x0bw68mqnvl3w64j6d45fxs97dca2vq"))))
+        (base32 "064sb8f9jxi5ii43swd73c0mm50lvk51v7awhgbj6p129c1a4nn5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -3396,92 +3396,87 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
     (license license:bsd-3)))
 
 (define-public opendht
-  ;; The version/commit is kept in sync with what Jami uses in its daemon
-  ;; contrib build system (see:
-  ;; https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/opendht/rules.mak).
-  (let ((commit "dbbfdaab0f4119abf79646313e0dbc52881dcd56")
-        (revision "0"))
-    (package
-      (name "opendht")
-      (version (git-version "2.3.1" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/savoirfairelinux/opendht")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "07x8vw999qpfl6qwj5k5l2mcjy1vp32sd567f6imbsnh9vlx2bdv"))))
-      (outputs '("out" "tools" "debug"))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:imported-modules `((guix build python-build-system) ;for site-packages
-                             ,@%gnu-build-system-modules)
-        #:modules '(((guix build python-build-system) #:prefix python:)
-                    (guix build gnu-build-system)
-                    (guix build utils))
-        #:tests? #f                     ;tests require networking
-        #:configure-flags
-        #~(list "--enable-tests"
-                "--enable-proxy-server"
-                "--enable-push-notifications"
-                "--enable-proxy-server-identity"
-                "--enable-proxy-client")
-        #:phases
-        #~(modify-phases %standard-phases
-            (add-after 'unpack 'fix-python-installation-prefix
-              ;; Specify the installation prefix for the compiled Python module
-              ;; that would otherwise attempt to installs itself to Python's own
-              ;; site-packages directory.
-              (lambda _
-                (substitute* "python/Makefile.am"
-                  (("--root=\\$\\(DESTDIR)/")
-                   (string-append "--root=/ --single-version-externally-managed "
-                                  "--prefix=" #$output)))))
-            (add-after 'unpack 'specify-runpath-for-python-module
-              (lambda _
-                (substitute* "python/setup.py.in"
-                  (("extra_link_args=\\[(.*)\\]" _ args)
-                   (string-append "extra_link_args=[" args
-                                  ", '-Wl,-rpath=" #$output "/lib']")))))
-            (add-after 'install 'move-and-wrap-tools
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (let* ((tools (assoc-ref outputs "tools"))
-                       (dhtcluster (string-append tools "/bin/dhtcluster"))
-                       (site-packages (python:site-packages inputs outputs)))
-                  (mkdir tools)
-                  (rename-file (string-append #$output "/bin")
-                               (string-append tools "/bin"))
-                  ;; TODO: Contribute a patch to python/Makefile.am to
-                  ;; automate this.
-                  (copy-file "python/tools/dhtcluster.py" dhtcluster)
-                  (chmod dhtcluster #o555)
-                  (wrap-program dhtcluster
-                    `("GUIX_PYTHONPATH" prefix (,site-packages)))))))))
-      (inputs (list bash-minimal fmt readline))
-      (propagated-inputs
-       (list msgpack                    ;included in several installed headers
-             restinio                   ;included in opendht/http.h
-             ;; The following are listed in the 'Requires.private' field of
-             ;; opendht.pc:
-             argon2
-             gnutls
-             jsoncpp
-             nettle
-             openssl))                  ;required for the DHT proxy
-      (native-inputs
-       (list autoconf
-             automake
-             pkg-config
-             python
-             python-cython
-             libtool
-             cppunit))
-      (home-page "https://github.com/savoirfairelinux/opendht/")
-      (synopsis "Lightweight Distributed Hash Table (DHT) library")
-      (description "OpenDHT provides an easy to use distributed in-memory data
+  (package
+    (name "opendht")
+    (version "2.3.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/savoirfairelinux/opendht")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0gp1wdpk50y0pcvlhqfw9vpms8lsrjvv63x4dh40axsvf2ix9lkj"))))
+    (outputs '("out" "tools" "debug"))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:imported-modules `((guix build python-build-system) ;for site-packages
+                           ,@%gnu-build-system-modules)
+      #:modules '(((guix build python-build-system) #:prefix python:)
+                  (guix build gnu-build-system)
+                  (guix build utils))
+      #:tests? #f                     ;tests require networking
+      #:configure-flags
+      #~(list "--enable-tests"
+              "--enable-proxy-server"
+              "--enable-push-notifications"
+              "--enable-proxy-server-identity"
+              "--enable-proxy-client")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-python-installation-prefix
+            ;; Specify the installation prefix for the compiled Python module
+            ;; that would otherwise attempt to installs itself to Python's own
+            ;; site-packages directory.
+            (lambda _
+              (substitute* "python/Makefile.am"
+                (("--root=\\$\\(DESTDIR)/")
+                 (string-append "--root=/ --single-version-externally-managed "
+                                "--prefix=" #$output)))))
+          (add-after 'unpack 'specify-runpath-for-python-module
+            (lambda _
+              (substitute* "python/setup.py.in"
+                (("extra_link_args=\\[(.*)\\]" _ args)
+                 (string-append "extra_link_args=[" args
+                                ", '-Wl,-rpath=" #$output "/lib']")))))
+          (add-after 'install 'move-and-wrap-tools
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((tools (assoc-ref outputs "tools"))
+                     (dhtcluster (string-append tools "/bin/dhtcluster"))
+                     (site-packages (python:site-packages inputs outputs)))
+                (mkdir tools)
+                (rename-file (string-append #$output "/bin")
+                             (string-append tools "/bin"))
+                ;; TODO: Contribute a patch to python/Makefile.am to
+                ;; automate this.
+                (copy-file "python/tools/dhtcluster.py" dhtcluster)
+                (chmod dhtcluster #o555)
+                (wrap-program dhtcluster
+                  `("GUIX_PYTHONPATH" prefix (,site-packages)))))))))
+    (inputs (list bash-minimal fmt readline))
+    (propagated-inputs
+     (list msgpack                    ;included in several installed headers
+           restinio                   ;included in opendht/http.h
+           ;; The following are listed in the 'Requires.private' field of
+           ;; opendht.pc:
+           argon2
+           gnutls
+           jsoncpp
+           nettle
+           openssl))                  ;required for the DHT proxy
+    (native-inputs
+     (list autoconf
+           automake
+           pkg-config
+           python
+           python-cython
+           libtool
+           cppunit))
+    (home-page "https://github.com/savoirfairelinux/opendht/")
+    (synopsis "Lightweight Distributed Hash Table (DHT) library")
+    (description "OpenDHT provides an easy to use distributed in-memory data
 store.  Every node in the network can read and write values to the store.
 Values are distributed over the network, with redundancy.  It includes the
 following features:
@@ -3504,7 +3499,7 @@ library (get, put, etc.) with text values.
 @item dhtchat
 A very simple IM client working over the DHT.
 @end table")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public frrouting
   (package
@@ -4053,7 +4048,7 @@ network.")
 (define-public yggdrasil
   (package
     (name "yggdrasil")
-    (version "0.4.1")
+    (version "0.4.3")
     (source
      (origin
        (method git-fetch)
@@ -4064,7 +4059,7 @@ network.")
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ajhn0z58ap9jldip7mqj78drmgg4645zfsxsy004cfkm60fasnx"))
+        (base32 "0jp6998a45xi8pbi8p84chvpm1mhhcvcxm1avi1c1gjjp4jqm3vl"))
        (patches (search-patches "yggdrasil-extra-config.patch"))))
     (build-system go-build-system)
     (arguments
diff --git a/gnu/packages/nicotine.scm b/gnu/packages/nicotine.scm
index 8e194697de..08232c2756 100644
--- a/gnu/packages/nicotine.scm
+++ b/gnu/packages/nicotine.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
+;;; Copyright © 2022 Fatima Toothpaste <fatimatoothpaste@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,23 +22,29 @@
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix build-system python)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gtk)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages mp3))
+  #:use-module (gnu packages mp3)
+  #:use-module (gnu packages xorg))
 
 (define-public nicotine+
   (package
     (name "nicotine+")
-    (version "2.1.2")
+    (version "3.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/Nicotine-Plus/nicotine-plus")
                     (commit version)))
               (file-name (git-file-name name version))
-              (sha256 (base32 "18rra8yqjr10z23chzcp53ncbd5fhm0iqgqxpbxfq7a10za02v6l"))))
+              (sha256 (base32 "1x08z5lvkdl62dkc11vrsackgzsh1vr9vp3vgsgfzjyrvlsybmfw"))
+              (modules '((guix build utils)))
+              ;; Remove test that relies on network access.
+              (snippet '(delete-file-recursively "test/integration"))))
     (build-system python-build-system)
     (arguments
      `(#:imported-modules ((guix build glib-or-gtk-build-system)
@@ -55,18 +62,20 @@
                           "/bin/nicotine"))
                    (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
                (wrap-program prog
-                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
-               #t)))
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))))
          (add-after 'wrap-program 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
          (add-after 'glib-or-gtk-wrap 'glib-or-gtk-compile-schemas
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)))))
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "xvfb-run" "python" "-m" "unittest")))))))
     (inputs
-     (list gtk+ python-pygobject python-pytaglib))
+     (list bash-minimal gspell gtk+ python-pygobject libappindicator python-pytaglib))
     (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("gettext" ,gettext-minimal)))
-    (home-page "https://nicotine-plus.github.io/nicotine-plus/")
+     (list gettext-minimal xvfb-run))
+    (home-page "https://nicotine-plus.org/")
     (synopsis "Graphical client for Soulseek")
     (description
      "Nicotine+ is a graphical client for the Soulseek peer-to-peer
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index b34013cc31..78eab203de 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -465,7 +465,7 @@ depend: $(STDLIB_MLIS) $(STDLIB_DEPS)"))
 (define-public ocamlbuild
   (package
     (name "ocamlbuild")
-    (version "0.14.0")
+    (version "0.14.1")
     (source
      (origin
        (method git-fetch)
@@ -474,7 +474,7 @@ depend: $(STDLIB_MLIS) $(STDLIB_DEPS)"))
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1hb5mcdz4wv7sh1pj7dq9q4fgz5h3zg7frpiya6s8zd3ypwzq0kh"))))
+        (base32 "00ma0g6ajll9awp2bp303bawac8ync4k9w2a6vix0k4nw3003gb4"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:make-flags
@@ -1062,7 +1062,7 @@ Emacs.")
 (define-public ocaml-menhir
   (package
     (name "ocaml-menhir")
-    (version "20211230")
+    (version "20220210")
     (source
      (origin
        (method git-fetch)
@@ -1071,7 +1071,7 @@ Emacs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "177gfp23gxc84j5pv2mqkza1ggg6rskvfwwjg229ba1457inayzs"))))
+        (base32 "0f31isr3cyiishflz6qr4xc3gp9xwf32r3vxdvm5wnr2my1fnn1n"))))
     (build-system dune-build-system)
     (inputs
      (list ocaml))
@@ -1338,7 +1338,7 @@ compilers that can directly deal with packages.")
 (define-public ocaml-ounit2
   (package
     (name "ocaml-ounit2")
-    (version "2.2.5")
+    (version "2.2.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1347,7 +1347,7 @@ compilers that can directly deal with packages.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1frdfnal6zl46dq5vlxz1ks28bf9x57zgik2cc65izji0ymr7pis"))))
+                "04c841hpk2yij370w30w3pis8nibnr28v74mpq2qz7z5gb8l07p1"))))
     (build-system dune-build-system)
     (propagated-inputs
      (list ocaml-lwt ocaml-stdlib-shims))
@@ -1648,7 +1648,7 @@ full_split, cut, rcut, etc..")
 (define dune-bootstrap
   (package
     (name "dune")
-    (version "2.9.3")
+    (version "3.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1657,7 +1657,7 @@ full_split, cut, rcut, etc..")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b4rsqn6gf3cv46jgvrsq0xh9zfsaif810zpbvm0mv2bhphqfjk7"))))
+                "1ndn560fg0fg8n3wplmkg5px69h0g38pyma9wik85cmmqfxry14k"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f; require odoc
@@ -1691,7 +1691,15 @@ following a very simple s-expression syntax.")
      `(#:package "dune-configurator"
        #:dune ,dune-bootstrap
        ; require ppx_expect
-       #:tests? #f))
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         ;; When building dune, these directories are normally removed after
+         ;; the bootstrap.
+         (add-before 'build 'remove-vendor
+           (lambda _
+             (delete-file-recursively "vendor/csexp")
+             (delete-file-recursively "vendor/pp"))))))
     (propagated-inputs
      (list ocaml-csexp))
     (properties `((ocaml4.09-variant . ,(delay ocaml4.09-dune-configurator))))
@@ -1712,8 +1720,7 @@ config.h files for instance.  Among other things, dune-configurator allows one t
     (inherit dune-configurator)
     (name "ocaml4.09-dune-configurator")
     (arguments
-     `(#:package "dune-configurator"
-       #:tests? #f
+     `(,@(package-arguments dune-configurator)
        #:dune ,ocaml4.09-dune-bootstrap
        #:ocaml ,ocaml-4.09
        #:findlib ,ocaml4.09-findlib))
@@ -2114,14 +2121,14 @@ manipulate such data.")
 (define-public ocaml-mtime
   (package
     (name "ocaml-mtime")
-    (version "1.3.0")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/mtime/releases/"
                                   "mtime-" version ".tbz"))
               (sha256
                (base32
-                "0syilgk4nzscacsswnvgwqlf0n0lhs221jss8gc8z9igw2x4sgsq"))))
+                "1xy6lg52n2zynp4p164ym9j0f1b95j5n4bi5y4mbdrry9w99h32m"))))
     (build-system ocaml-build-system)
     (native-inputs
      (list ocamlbuild opam))
@@ -2129,7 +2136,7 @@ manipulate such data.")
      `(("topkg" ,ocaml-topkg)))
     (arguments
      `(#:tests? #f
-       #:build-flags (list "build" "--with-js_of_ocaml" "false")
+       #:build-flags (list "build")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))
@@ -2363,7 +2370,7 @@ simple (yet expressive) query language to select the tests to run.")
 (define-public ocaml-ppx-tools
   (package
     (name "ocaml-ppx-tools")
-    (version "6.4")
+    (version "6.5")
     (source
      (origin
        (method git-fetch)
@@ -2373,7 +2380,7 @@ simple (yet expressive) query language to select the tests to run.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "15v7yfv6gyp8lzlgwi9garz10wpg34dk4072jdv19n6v20zfg7n1"))))
+         "0fwibah2hgllrnbdrmfqil5gr5raf6pb5h2zx6zs1h3d4ykvy8k8"))))
     (build-system dune-build-system)
     (arguments
      ;; No tests
@@ -2391,14 +2398,14 @@ syntactic tools.")
 (define-public ocaml-react
   (package
     (name "ocaml-react")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "http://erratique.ch/software/react/releases/react-"
                             version ".tbz"))
         (sha256 (base32
-                  "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"))))
+                  "16cg4byj8lfbbw96dhh8sks5y9n1c3fshz7f2p8m7wgisqax7bf4"))))
     (build-system ocaml-build-system)
     (native-inputs
      (list ocamlbuild opam ocaml-topkg))
@@ -2445,7 +2452,7 @@ through Transport Layer Security (@dfn{TLS}) encrypted connections.")
 (define-public ocaml-mmap
   (package
     (name "ocaml-mmap")
-    (version "1.1.0")
+    (version "1.2.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2454,8 +2461,9 @@ through Transport Layer Security (@dfn{TLS}) encrypted connections.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jaismy5d1bhbbanysmr2k79px0yv6ya265dri3949nha1l23i60"))))
+                "1a7w7l682cbksn2zlmz24gb519x7wb65ivr5vndm9x5pi9fw5pfb"))))
     (build-system dune-build-system)
+    (propagated-inputs (list ocaml-bigarray-compat))
     (home-page "https://github.com/mirage/mmap")
     (synopsis "File mapping for OCaml")
     (description "This project provides a @command{Mmap.map_file} function
@@ -3173,7 +3181,7 @@ is used to determine whether the results truly differ.")
 (define-public ocaml-batteries
   (package
     (name "ocaml-batteries")
-    (version "3.5.0")
+    (version "3.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3182,7 +3190,7 @@ is used to determine whether the results truly differ.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1w2fb47vgifj4iws0s8r531n0p9khq92n7gwcs7caj5bbzfc5zdx"))))
+                "07387jp93civ9p1q2ixmq8qkzzyssp94ssxd4w2ndvkg1nr6kfcl"))))
     (build-system ocaml-build-system)
     (propagated-inputs (list ocaml-num))
     (native-inputs
@@ -4082,7 +4090,7 @@ capabilities, Zed provides macro recording and cursor management facilities.")
 (define-public ocaml-lambda-term
   (package
     (name "ocaml-lambda-term")
-    (version "3.1.0")
+    (version "3.2.0")
     (home-page "https://github.com/ocaml-community/lambda-term")
     (source (origin
               (method git-fetch)
@@ -4092,7 +4100,7 @@ capabilities, Zed provides macro recording and cursor management facilities.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k0ykiz0vhpyyj9fkss29ajas4fh1xh449j702xkvayqipzj1mkg"))))
+                "048k26644wq5wlwk0j179dxrxyz9nxqqq4vvhyh6pqpgxdajd44i"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."))
@@ -4559,30 +4567,20 @@ collection.")
 (define-public ocaml-bindlib
   (package
     (name "ocaml-bindlib")
-    (version "5.0.1")
+    (version "6.0.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/rlepigre/ocaml-bindlib")
-             (commit (string-append "ocaml-bindlib_" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1f8kr81w8vsi4gv61xn1qbc6zrzkjp8l9ix0942vjh4gjxc74v75"))))
-    (build-system ocaml-build-system)
+         "1viyws3igy49hfaj4jaiwm4iggck9zdn7r3g6kh1n4zxphqk57yk"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:tests? #f                      ;no tests
-       #:use-make? #t
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'build
-           (lambda _
-             (invoke "make")))
-         (replace 'install
-           (lambda _
-             (invoke "make" "install"))))))
+     `(#:test-target "."))
     (native-inputs
      (list ocamlbuild ocaml-findlib))
     (home-page "https://rlepigre.github.io/ocaml-bindlib/")
@@ -6708,7 +6706,7 @@ combinators.")
 (define-public ocaml-bisect-ppx
   (package
     (name "ocaml-bisect-ppx")
-    (version "2.7.1")
+    (version "2.8.0")
     (source
      (origin
        (method git-fetch)
@@ -6718,7 +6716,7 @@ combinators.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "02sn1a9anyksd2lpd9xryrxsx76xg99c7mx1mq6b5q09r9b060d4"))))
+         "0k9wbxf89d35444rg19l7vzpzs1zxq5pncawfcncdsskp1yms6b9"))))
     (build-system dune-build-system)
     (propagated-inputs
      (list ocaml-ppxlib ocaml-cmdliner))
@@ -6927,7 +6925,11 @@ library FFTW.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "115535kphchh2a434b48b408x9794j8zzrsdmacsgqdsrgy3rck4"))))
+         "115535kphchh2a434b48b408x9794j8zzrsdmacsgqdsrgy3rck4"))
+       (modules '((guix build utils)))
+       (snippet '(substitute* '("src/dune" "src/config/dune")
+                   (("-march=native") "")))))
+    (properties '((tunable? . #t)))
     (build-system dune-build-system)
     (arguments
      `(#:tests? #f)) ; No test target.
@@ -7117,8 +7119,7 @@ support for Mparser.")))
                 "11qfc39cmwfwfpwmjh6wh98zwdv6p73bv8hqwcsss869vs1r7gmn"))))
     (build-system dune-build-system)
     (arguments
-     `(#:tests? #t
-       #:test-target "."
+     `(#:test-target "."
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'make-writable
@@ -7134,10 +7135,7 @@ support for Mparser.")))
     (propagated-inputs
      (list ocaml-cairo2))
     (inputs
-     `(("camlp5" ,camlp5)
-       ("gtk+" ,gtk+)
-       ("gtksourceview-3" ,gtksourceview-3)
-       ("gtkspell3" ,gtkspell3)))
+     (list camlp5 gtk+ gtksourceview-3 gtkspell3))
     (native-inputs
      (list pkg-config))
     (home-page "https://github.com/garrigue/lablgtk")
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 3539c47d66..c2715b498b 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -139,7 +139,9 @@
     (native-search-paths
      (list (search-path-specification
             (variable "OCL_ICD_VENDORS")
-            (files '("etc/OpenCL/vendors")))))
+            (files '("etc/OpenCL/vendors"))
+            ;; Only supports a single directory.
+            (separator #f))))
     (home-page "https://github.com/KhronosGroup/OpenCL-ICD-Loader")
     (inputs (list opencl-headers))
     (synopsis "OpenCL Installable Client Driver")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 03cc9a6612..491423d41e 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -156,8 +156,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.3.0")
-        (commit "a27e47f9d1e22dc32bb250cfeef88cfacb930e23")
-        (revision 23))
+        (commit "2fb4304ee7eb7d17d48bee345677ef1f288a0b86")
+        (revision 24))
     (package
       (name "guix")
 
@@ -173,7 +173,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "12jmvagbw05hmmlrb82i0qazhlv7mcfnl4dmknwx3a9hd760g9y1"))
+                  "0pwizj76n9wpzcb4a631gj8yfxfpzq11p5kmmvmv6j4cqhn61dr0"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -239,6 +239,12 @@ $(prefix)/etc/init.d\n")))
 $(prefix)/etc/openrc\n")))
 
                         (invoke "sh" "bootstrap")))
+                    ,@(if (target-riscv64?)
+                        `((add-after 'unpack 'use-correct-guile-version-for-tests
+                            (lambda _
+                              (substitute* "tests/gexp.scm"
+                                (("2\\.0") "3.0")))))
+                        '())
                     (add-before 'build 'use-host-compressors
                       (lambda* (#:key inputs target #:allow-other-keys)
                         (when target
@@ -1569,8 +1575,8 @@ in an isolated environment, in separate namespaces.")
     (license license:gpl3+)))
 
 (define-public nar-herder
-  (let ((commit "b0263314f56cc6558e4941f64c89d9fd85aaa260")
-        (revision "3"))
+  (let ((commit "f69da3686583d53974e720a9e66103126631cb69")
+        (revision "4"))
     (package
       (name "nar-herder")
       (version (git-version "0" revision commit))
@@ -1581,7 +1587,7 @@ in an isolated environment, in separate namespaces.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "05rpjs8c6m23knh0wx9sjf3417nrbi489vbisr5d9ijfhg78l7i3"))
+                  "0glcmma6gkxna45bv0yki3l13r34ha7v0jrli3vmh4ysnhsnc4ii"))
                 (file-name (string-append name "-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -1643,7 +1649,7 @@ in an isolated environment, in separate namespaces.")
              gnutls
 
              ;; Guile libraries are needed here for cross-compilation.
-             guile-3.0
+             (car (assoc-ref (package-native-inputs guix) "guile"))
              guile-json-4
              guile-gcrypt
              guix
@@ -1652,7 +1658,7 @@ in an isolated environment, in separate namespaces.")
              guile-sqlite3))
       (inputs
        (list bash-minimal
-             guile-3.0))
+             (car (assoc-ref (package-native-inputs guix) "guile"))))
       (propagated-inputs
        (list guile-json-4
              guile-gcrypt
@@ -1790,14 +1796,14 @@ the boot loader configuration.")
 (define-public flatpak
   (package
    (name "flatpak")
-   (version "1.12.3")
+   (version "1.12.7")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://github.com/flatpak/flatpak/releases/download/"
                          version "/flatpak-" version ".tar.xz"))
      (sha256
-      (base32 "0sbvywfc57sb58maxins4sg7rfwrm1wcgw68069qbsyp8wrz45fp"))
+      (base32 "05lkpbjiwp69q924i1jfyk5frcqbdbv9kyzbqwm2hy723i9jmdbd"))
      (patches (search-patches "flatpak-fix-path.patch"))))
 
    ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index a6bee71aec..5f84fb6777 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
 ;;;
@@ -38,6 +38,7 @@
   #:use-module ((guix utils) #:select (target-64bit?))
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
@@ -61,14 +62,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20220122")
+    (version "20220222")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "003y6f3bidfzd2jcswl7sk3a69fnvy0pjns4v0m5gjib84hil8mq"))))
+       (base32 "0id4lr3q0fh0r4vcz8sp19am9yc6j8g00m2726dgpmzacfw845pq"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -164,93 +165,88 @@ when jobs finish.")
 
 (define-public slurm
   (package
-   (name "slurm")
-   (version "20.11.7")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://download.schedmd.com/slurm/slurm-"
-                  version ".tar.bz2"))
-            (sha256
-             (base32
-              "1fdjihg1x7ks5l77yjv14a4mg6r0v8c3zk1dcxkhrhq3n4dc9nbs"))
-            (modules '((guix build utils)))
-            (snippet
-             '(begin
-                ;; According to
-                ;; <https://lists.gnu.org/archive/html/guix-devel/2016-02/msg00534.html>
-                ;; there are non-free bits under contribs/, though it's not
-                ;; clear which ones.  libpmi is clearly free (it used to be
-                ;; under src/api/), so remove all of contribs/ except
-                ;; contribs/pmi/.
-                (substitute* "configure.ac"
-                  (("^[[:space:]]+contribs/(.*)$" all directory)
-                   (if (and (string-prefix? "pmi" directory)
-                            (not (string-prefix? "pmi2" directory)))
-                       all
-                       "")))
+    (name "slurm")
+    (version "20.11.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://download.schedmd.com/slurm/slurm-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1fdjihg1x7ks5l77yjv14a4mg6r0v8c3zk1dcxkhrhq3n4dc9nbs"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; According to
+                  ;; <https://lists.gnu.org/archive/html/guix-devel/2016-02/msg00534.html>
+                  ;; there are non-free bits under contribs/, though it's not
+                  ;; clear which ones.  libpmi is clearly free (it used to be
+                  ;; under src/api/), so remove all of contribs/ except
+                  ;; contribs/pmi/.
+                  (substitute* "configure.ac"
+                    (("^[[:space:]]+contribs/(.*)$" all directory)
+                     (if (and (string-prefix? "pmi" directory)
+                              (not (string-prefix? "pmi2" directory)))
+                         all
+                         "")))
 
-                (rename-file "contribs/pmi" "tmp-pmi")
-                (delete-file-recursively "contribs")
-                (mkdir "contribs")
-                (rename-file "tmp-pmi" "contribs/pmi")
-                #t))))
-   ;; FIXME: More optional inputs could be added,
-   ;; in particular mysql and gtk+.
-   (inputs (list freeipmi
-                 `(,hwloc-2 "lib")
-                 json-c
-                 linux-pam
-                 munge
-                 numactl
-                 readline))
-   (native-inputs
-    `(("autoconf" ,autoconf)
-      ("expect" ,expect)
-      ("perl" ,perl)
-      ("pkg-config" ,pkg-config)
-      ("python" ,python-wrapper)))
-   (build-system gnu-build-system)
-   (arguments
-    `(#:configure-flags
-      (list "--enable-pam" "--sysconfdir=/etc/slurm"
-            "--disable-static"
-            (string-append "--with-freeipmi=" (assoc-ref %build-inputs "freeipmi"))
-            (string-append "--with-hwloc=" (assoc-ref %build-inputs "hwloc"))
-            (string-append "--with-json=" (assoc-ref %build-inputs "json-c"))
-            (string-append "--with-munge=" (assoc-ref %build-inputs "munge"))
+                  (rename-file "contribs/pmi" "tmp-pmi")
+                  (delete-file-recursively "contribs")
+                  (mkdir "contribs")
+                  (rename-file "tmp-pmi" "contribs/pmi")))))
+    ;; FIXME: More optional inputs could be added,
+    ;; in particular mysql and gtk+.
+    (inputs (list freeipmi
+                  `(,hwloc-2 "lib")
+                  json-c
+                  linux-pam
+                  munge
+                  numactl
+                  readline))
+    (native-inputs
+     (list autoconf expect perl pkg-config python-wrapper))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "--enable-pam" "--sysconfdir=/etc/slurm"
+                   "--disable-static"
+                   (string-append "--with-freeipmi=" #$(this-package-input "freeipmi"))
+                   (string-append "--with-hwloc=" #$(this-package-input "hwloc"))
+                   (string-append "--with-json=" #$(this-package-input "json-c"))
+                   (string-append "--with-munge=" #$(this-package-input "munge"))
 
-            ;; 32-bit support is marked as deprecated and needs to be
-            ;; explicitly enabled.
-            ,@(if (target-64bit?) '() '("--enable-deprecated")))
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'patch-plugin-linker-flags
-          (lambda _
-            (substitute* (find-files "src/plugins/" "Makefile.in")
-              (("_la_LDFLAGS = ")
-               "_la_LDFLAGS = ../../../api/libslurm.la "))))
-        (add-after 'patch-plugin-linker-flags 'autoconf
-          (lambda _ (invoke "autoconf")))         ;configure.ac was patched
-        (add-after 'install 'install-libpmi
-          (lambda _
-            ;; Open MPI expects libpmi to be provided by Slurm so install it.
-            (invoke "make" "install" "-C" "contribs/pmi"))))))
-   (home-page "https://slurm.schedmd.com/")
-   (synopsis "Workload manager for cluster computing")
-   (description
-    "SLURM is a fault-tolerant and highly scalable cluster management and job
+                   ;; 32-bit support is marked as deprecated and needs to be
+                   ;; explicitly enabled.
+                   #$@(if (target-64bit?) '() '("--enable-deprecated")))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-plugin-linker-flags
+                 (lambda _
+                   (substitute* (find-files "src/plugins/" "Makefile.in")
+                     (("_la_LDFLAGS = ")
+                      "_la_LDFLAGS = ../../../api/libslurm.la "))))
+               (add-after 'patch-plugin-linker-flags 'autoconf
+                 (lambda _ (invoke "autoconf")))  ;configure.ac was patched
+               (add-after 'install 'install-libpmi
+                 (lambda _
+                   ;; Open MPI expects libpmi to be provided by Slurm so install it.
+                   (invoke "make" "install" "-C" "contribs/pmi"))))))
+    (home-page "https://slurm.schedmd.com/")
+    (synopsis "Workload manager for cluster computing")
+    (description
+     "SLURM is a fault-tolerant and highly scalable cluster management and job
 scheduling system for large and small clusters.  It allocates access to
 resources (computer nodes) to users for some duration of time, provides a
 framework for starting, executing, and monitoring work (typically a parallel
 job) on a set of allocated nodes, and arbitrates contention for resources
 by managing a queue of pending work.")
-   (license (list license:bsd-2       ; src/common/log.[ch], src/common/uthash
-                  license:expat       ; slurm/pmi.h
-                  license:isc         ; src/common/strlcpy.c
-                  license:lgpl2.1+    ; hilbert.[ch], src/common/slurm_time.h
-                  license:zlib        ; src/common/strnatcmp.c
-                  license:gpl2+))))   ; the rest, often with OpenSSL exception
+    (license (list license:bsd-2      ; src/common/log.[ch], src/common/uthash
+                   license:expat      ; slurm/pmi.h
+                   license:isc        ; src/common/strlcpy.c
+                   license:lgpl2.1+   ; hilbert.[ch], src/common/slurm_time.h
+                   license:zlib       ; src/common/strnatcmp.c
+                   license:gpl2+))))   ; the rest, often with OpenSSL exception
 
 ;; The SLURM client/daemon protocol and file format changes from time to time
 ;; in incompatible ways, as noted in
@@ -271,11 +267,16 @@ by managing a queue of pending work.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))))
+                "0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments slurm)
+       ((#:configure-flags flags ''())
+        #~(append '("CFLAGS=-O2 -g -fcommon" "LDFLAGS=-fcommon")
+                  #$flags))))))
 
 (define-public slurm-19.05
   (package
-    (inherit slurm)
+    (inherit slurm-20.02)
     (version "19.05.8")
     (source (origin
               (inherit (package-source slurm))
@@ -290,7 +291,7 @@ by managing a queue of pending work.")
 ;; Same as Debian 10
 (define-public slurm-18.08
   (package
-    (inherit slurm)
+    (inherit slurm-20.02)
     (version "18.08.9")
     (source
       (origin
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 83066bb8ce..35a2d0249c 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2018, 2019, 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
-;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2019,2022 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
@@ -57,6 +57,7 @@
   #:use-module (guix build-system go)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages)
@@ -737,6 +738,41 @@ using password-store through rofi interface:
 @end enumerate")
     (license license:gpl3)))
 
+(define-public tessen
+  (package
+    (name "tessen")
+    (version "2.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ayushnix/tessen/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ddsjhzp1qy3jfhxlrzcxgp0gza234yc0sdlngwa3xdj0wr40zs0"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests?
+           #f ;no tests
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-wtype-path
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "tessen"
+                     (("wtype") (search-input-file inputs "/bin/wtype")))))
+               (delete 'configure)) ;no configure script
+           #:make-flags
+           #~(list (string-append "PREFIX="
+                                  #$output))))
+    (native-inputs (list scdoc))
+    (inputs (list wtype))
+    (home-page "https://github.com/ayushnix/tessen")
+    (synopsis "Frontend for password-store and gopass")
+    (description "Tessen is a bash script that can autotype and copy data
+from password-store and gopass files.")
+    (license license:gpl2+)))
+
 (define-public browserpass-native
   (package
     (name "browserpass-native")
diff --git a/gnu/packages/patches/bash-reproducible-linux-pgrp-pipe.patch b/gnu/packages/patches/bash-reproducible-linux-pgrp-pipe.patch
deleted file mode 100644
index 8a03c4d982..0000000000
--- a/gnu/packages/patches/bash-reproducible-linux-pgrp-pipe.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Unconditionally enable PGRP_PIPE on Linux (the kernel), regardless of
-the kernel version in use on the build machine.
-
-diff -purN bash-5.0-orig/configure bash-5.0/configure
---- configure	1970-01-01 01:00:00.000000000 +0100
-+++ configure	2019-09-29 11:51:42.664518665 +0200
-@@ -16312,11 +16312,7 @@ solaris2.10*)	LOCAL_CFLAGS=-DSOLARIS  ;;
- solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;;
- lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading
--		case "`uname -r`" in
--		1.*|2.[0123]*)	: ;;
--		*)	$as_echo "#define PGRP_PIPE 1" >>confdefs.h
-- ;;
--		esac ;;
-+		$as_echo "#define PGRP_PIPE 1" >>confdefs.h ;;
- netbsd*|openbsd*)	LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
- *qnx[67]*)	LOCAL_LIBS="-lncurses" ;;
- *qnx*)		LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
-diff -purN bash-5.0-orig/configure.ac bash-5.0/configure.ac
---- configure.ac	1970-01-01 01:00:00.000000000 +0100
-+++ configure.ac	2019-09-29 11:51:10.692026225 +0200
-@@ -1108,10 +1108,7 @@ solaris2.10*)	LOCAL_CFLAGS=-DSOLARIS  ;;
- solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;;
- lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading
--		case "`uname -r`" in
--		1.*|2.[[0123]]*)	: ;;
--		*)	AC_DEFINE(PGRP_PIPE) ;;
--		esac ;;
-+		AC_DEFINE(PGRP_PIPE) ;;
- netbsd*|openbsd*)	LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
- *qnx[[67]]*)	LOCAL_LIBS="-lncurses" ;;
- *qnx*)		LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
diff --git a/gnu/packages/patches/calibre-fix-zeroconf.patch b/gnu/packages/patches/calibre-fix-zeroconf.patch
deleted file mode 100644
index d7d0f18667..0000000000
--- a/gnu/packages/patches/calibre-fix-zeroconf.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Fix a build failure when upgrading zeroconf from 0.28.8 to 0.38.1:
-
-https://issues.guix.gnu.org/53247
-
-Patch copied from Gentoo:
-
-https://bugs.gentoo.org/800233#c5
-
-diff --color -Naru a/src/calibre/devices/smart_device_app/driver.py b/src/calibre/devices/smart_device_app/driver.py
---- a/src/calibre/devices/smart_device_app/driver.py	2021-08-08 08:32:03.104016444 +0200
-+++ b/src/calibre/devices/smart_device_app/driver.py	2021-08-08 08:33:30.699018403 +0200
-@@ -2040,13 +2040,6 @@
- # Function to monkeypatch zeroconf to remove the 15 character name length restriction.
- # Copied from https://github.com/jstasiak/python-zeroconf version 0.28.1
- 
--
--from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
--                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE,
--                      _HAS_ASCII_CONTROL_CHARS,
--                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN)
--
--
- def service_type_name(type_: str, *, allow_underscores: bool = False) -> str:
-     """
-     Validate a fully qualified service name, instance or subtype. [rfc6763]
-@@ -2087,6 +2080,12 @@
-     :param type_: Type, SubType or service name to validate
-     :return: fully qualified service name (eg: _http._tcp.local.)
-     """
-+
-+    from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
-+                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE,
-+                      _HAS_ASCII_CONTROL_CHARS,
-+                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN)
-+
-     if not (type_.endswith('._tcp.local.') or type_.endswith('._udp.local.')):
-         raise BadTypeInNameException("Type '%s' must end with '._tcp.local.' or '._udp.local.'" % type_)
- 
diff --git a/gnu/packages/patches/dunst-1.7.3-fix-crash.patch b/gnu/packages/patches/dunst-1.7.3-fix-crash.patch
deleted file mode 100644
index 8b51d820a4..0000000000
--- a/gnu/packages/patches/dunst-1.7.3-fix-crash.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Author: Danny Milosavljevic <dannym@scratchpost.org>
-Date: 2022-02-04 21:52:05 CET
-
-Fix crash if notification contains invalid pixbuf data.
-
-diff -ru /gnu/store/5885czxhmhkckjqj939b0hd6b6czizwb-dunst-1.7.3-checkout/src/notification.c 5885czxhmhkckjqj939b0hd6b6czizwb-dunst-1.7.3-checkout/src/notification.c
---- /gnu/store/5885czxhmhkckjqj939b0hd6b6czizwb-dunst-1.7.3-checkout/src/notification.c	1970-01-01 01:00:01.000000000 +0100
-+++ 5885czxhmhkckjqj939b0hd6b6czizwb-dunst-1.7.3-checkout/src/notification.c	2022-02-04 19:05:57.534906600 +0100
-@@ -359,8 +359,10 @@
-         g_clear_pointer(&n->icon_id, g_free);
- 
-         GdkPixbuf *icon = icon_get_for_data(new_icon, &n->icon_id, draw_get_scale());
--        n->icon = gdk_pixbuf_to_cairo_surface(icon);
--        g_object_unref(icon);
-+        if (icon) {
-+	        n->icon = gdk_pixbuf_to_cairo_surface(icon);
-+	        g_object_unref(icon);
-+        }
- }
- 
- /* see notification.h */
diff --git a/gnu/packages/patches/efivar-gcc-compat.patch b/gnu/packages/patches/efivar-gcc-compat.patch
deleted file mode 100644
index fd1a3dc90a..0000000000
--- a/gnu/packages/patches/efivar-gcc-compat.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-Fix build with -Werror=address-of-packed-member, which is default since
-GCC 9.
-
-This is a combination of three upstream commits:
-
-  https://github.com/rhboot/efivar/commit/b98ba8921010d03f46704a476c69861515deb1ca
-  https://github.com/rhboot/efivar/commit/c3c553db85ff10890209d0fe48fb4856ad68e4e0
-  https://github.com/rhboot/efivar/commit/0dad6d78a7fb5f6c5fb4a1d646040539db6cf865
-
-diff --git a/src/dp-media.c b/src/dp-media.c
-index 96a576f..be691c4 100644
---- a/src/dp-media.c
-+++ b/src/dp-media.c
-@@ -46,8 +46,7 @@ _format_media_dn(char *buf, size_t size, const_efidp dp)
- 			break;
- 		case EFIDP_HD_SIGNATURE_GUID:
- 			format(buf, size, off, "HD", "GPT,");
--			format_guid(buf, size, off, "HD",
--				    (efi_guid_t *)dp->hd.signature);
-+			format_guid(buf, size, off, "HD", dp->hd.signature);
- 			format(buf, size, off, "HD",
- 			       ",0x%"PRIx64",0x%"PRIx64")",
- 			       dp->hd.start, dp->hd.size);
-diff --git a/src/dp-message.c b/src/dp-message.c
-index 3724e5f..6b8e907 100644
---- a/src/dp-message.c
-+++ b/src/dp-message.c
-@@ -364,7 +364,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
- 			       dp->infiniband.port_gid[1],
- 			       dp->infiniband.port_gid[0]);
- 			format_guid(buf, size, off, "Infiniband",
--				    (efi_guid_t *)&dp->infiniband.ioc_guid);
-+				    &dp->infiniband.ioc_guid);
- 			format(buf, size, off, "Infiniband",
- 			       ",%"PRIu64",%"PRIu64")",
- 			       dp->infiniband.target_port_id,
-@@ -620,11 +620,13 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
- 			  ) / sizeof(efi_ip_addr_t);
- 		format(buf, size, off, "Dns", "Dns(");
- 		for (int i=0; i < end; i++) {
--			const efi_ip_addr_t *addr = &dp->dns.addrs[i];
-+			efi_ip_addr_t addr;
-+
-+			memcpy(&addr, &dp->dns.addrs[i], sizeof(addr));
- 			if (i != 0)
- 				format(buf, size, off, "Dns", ",");
- 			format_ip_addr(buf, size, off, "Dns",
--				       dp->dns.is_ipv6, addr);
-+				       dp->dns.is_ipv6, &addr);
- 		}
- 		format(buf, size, off, "Dns", ")");
- 		break;
-diff --git a/src/dp.h b/src/dp.h
-index aa4e390..1f921d5 100644
---- a/src/dp.h
-+++ b/src/dp.h
-@@ -70,8 +70,11 @@
- #define format_guid(buf, size, off, dp_type, guid) ({			\
- 		int _rc;						\
- 		char *_guidstr = NULL;					\
-+		efi_guid_t _guid;					\
-+		const efi_guid_t * const _guid_p = &_guid;		\
- 									\
--		_rc = efi_guid_to_str(guid, &_guidstr);			\
-+		memmove(&_guid, guid, sizeof(_guid));			\
-+		_rc = efi_guid_to_str(_guid_p, &_guidstr);		\
- 		if (_rc < 0) {						\
- 			efi_error("could not build %s GUID DP string",	\
- 				  dp_type);				\
-@@ -79,7 +82,7 @@
- 			_guidstr = onstack(_guidstr,			\
- 					   strlen(_guidstr)+1);		\
- 			_rc = format(buf, size, off, dp_type, "%s",	\
--				     _guidstr);	\
-+				     _guidstr);				\
- 		}							\
- 		_rc;							\
- 	})
-diff --git a/src/guid.c b/src/guid.c
-index 306c9ff..3156b3b 100644
---- a/src/guid.c
-+++ b/src/guid.c
-@@ -31,7 +31,7 @@
- extern const efi_guid_t efi_guid_zero;
- 
- int NONNULL(1, 2) PUBLIC
--efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b)
-+efi_guid_cmp(const void * const a, const void * const b)
- {
- 	return memcmp(a, b, sizeof (efi_guid_t));
- }
-diff --git a/src/include/efivar/efivar.h b/src/include/efivar/efivar.h
-index 316891c..ad6449d 100644
---- a/src/include/efivar/efivar.h
-+++ b/src/include/efivar/efivar.h
-@@ -128,7 +128,7 @@ extern int efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)
- 
- extern int efi_guid_is_zero(const efi_guid_t *guid);
- extern int efi_guid_is_empty(const efi_guid_t *guid);
--extern int efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b);
-+extern int efi_guid_cmp(const void * const a, const void * const b);
- 
- /* import / export functions */
- typedef struct efi_variable efi_variable_t;
-diff --git a/src/ucs2.h b/src/ucs2.h
-index dbb5900..edd8367 100644
---- a/src/ucs2.h
-+++ b/src/ucs2.h
-@@ -23,16 +23,21 @@
- 	(((val) & ((mask) << (shift))) >> (shift))
- 
- static inline size_t UNUSED
--ucs2len(const uint16_t * const s, ssize_t limit)
-+ucs2len(const void *vs, ssize_t limit)
- {
- 	ssize_t i;
--	for (i = 0; i < (limit >= 0 ? limit : i+1) && s[i] != (uint16_t)0; i++)
-+	const uint16_t *s = vs;
-+	const uint8_t *s8 = vs;
-+
-+	for (i = 0;
-+	     i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;
-+	     i++, s8 += 2, s++)
- 		;
- 	return i;
- }
- 
- static inline size_t UNUSED
--ucs2size(const uint16_t * const s, ssize_t limit)
-+ucs2size(const void *s, ssize_t limit)
- {
- 	size_t rc = ucs2len(s, limit);
- 	rc *= sizeof (uint16_t);
-@@ -69,10 +74,11 @@ utf8size(uint8_t *s, ssize_t limit)
- }
- 
- static inline unsigned char * UNUSED
--ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
-+ucs2_to_utf8(const void * const voidchars, ssize_t limit)
- {
- 	ssize_t i, j;
- 	unsigned char *ret;
-+	const uint16_t * const chars = voidchars;
- 
- 	if (limit < 0)
- 		limit = ucs2len(chars, -1);
-@@ -124,10 +130,12 @@ ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
- }
- 
- static inline ssize_t UNUSED NONNULL(4)
--utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
-+utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, uint8_t *utf8)
- {
- 	ssize_t req;
- 	ssize_t i, j;
-+	uint16_t *ucs2 = ucs2void;
-+	uint16_t val16;
- 
- 	if (!ucs2 && size > 0) {
- 		errno = EINVAL;
-@@ -162,10 +170,13 @@ utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
- 			val = utf8[i] & 0x7f;
- 			i += 1;
- 		}
--		ucs2[j] = val;
-+		val16 = val;
-+		ucs2[j] = val16;
-+	}
-+	if (terminate) {
-+		val16 = 0;
-+		ucs2[j++] = val16;
- 	}
--	if (terminate)
--		ucs2[j++] = (uint16_t)0;
- 	return j;
- };
- 
diff --git a/gnu/packages/patches/evilwm-lost-focus-bug.patch b/gnu/packages/patches/evilwm-lost-focus-bug.patch
deleted file mode 100644
index af24af8fe9..0000000000
--- a/gnu/packages/patches/evilwm-lost-focus-bug.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-evilwm may sometimes lose focus after closing a window.  This means that
-evilwm stops responding to keyboard shortcuts, and if no other window is open
-which the mouse can be moved over to regain focus evilwm becomes unusable and
-has to be restarted.
-
-Patch derived from discussion at
-https://wiki.archlinux.org/index.php/Evilwm#Lost_focus_bug_fix
-
---- evilwm-1.1.1/client.c
-+++ evilwm-1.1.1/client.c
-@@ -172,6 +172,7 @@
- 	 *  _NET_WM_STATE) */
- 	if (c->remove) {
- 		LOG_DEBUG("setting WithdrawnState\n");
-+		XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
- 		set_wm_state(c, WithdrawnState);
- 		ewmh_withdraw_client(c);
- 	} else {
diff --git a/gnu/packages/patches/freecad-boost-serialization.patch b/gnu/packages/patches/freecad-boost-serialization.patch
deleted file mode 100644
index 374eabc966..0000000000
--- a/gnu/packages/patches/freecad-boost-serialization.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Taken from: https://github.com/archlinux/svntogit-community/blob/packages/freecad/trunk/freecad-boost.patch.
-
-Index: FreeCAD-0.19.2/CMakeLists.txt
-===================================================================
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -46,6 +46,7 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LI
-     SetupPCL()
-     SetupPybind11()
-     SetupBoost()
-+	set(Boost_LIBRARIES_App ${Boost_LIBRARIES})
-     SetupXercesC()
-     find_package(ZLIB REQUIRED)
-     find_package(PyCXX REQUIRED)
-Index: FreeCAD-0.19.2/src/App/CMakeLists.txt
-===================================================================
---- a/src/App/CMakeLists.txt
-+++ b/src/App/CMakeLists.txt
-@@ -59,7 +59,7 @@ include_directories(
- 
- set(FreeCADApp_LIBS
-     FreeCADBase
--    ${Boost_LIBRARIES}
-+    ${Boost_LIBRARIES_App}
- )
- 
- if (BUILD_QT5)
diff --git a/gnu/packages/patches/freecad-vtk9.patch b/gnu/packages/patches/freecad-vtk9.patch
deleted file mode 100644
index 74568f4318..0000000000
--- a/gnu/packages/patches/freecad-vtk9.patch
+++ /dev/null
@@ -1,827 +0,0 @@
-From bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff Mon Sep 17 00:00:00 2001
-From: wmayer <wmayer@users.sourceforge.net>
-Date: Mon, 12 Oct 2020 17:56:03 +0200
-Subject: [PATCH] Make smesh compile with vtk9
-
----
- .../salomesmesh/inc/SMDS_MeshElement.hxx      |  9 +++-
- .../salomesmesh/inc/SMDS_UnstructuredGrid.hxx |  4 ++
- .../salomesmesh/src/SMDS/SMDS_BallElement.cpp |  9 +++-
- .../salomesmesh/src/SMDS/SMDS_Downward.cpp    | 44 +++++++++----------
- .../salomesmesh/src/SMDS/SMDS_Mesh.cpp        |  6 ++-
- .../src/SMDS/SMDS_Mesh0DElement.cpp           | 12 +++++
- .../salomesmesh/src/SMDS/SMDS_MeshNode.cpp    | 10 ++---
- .../src/SMDS/SMDS_UnstructuredGrid.cpp        | 35 +++++++++++++--
- .../src/SMDS/SMDS_VtkCellIterator.cpp         |  7 +--
- .../salomesmesh/src/SMDS/SMDS_VtkEdge.cpp     | 19 +++++++-
- .../salomesmesh/src/SMDS/SMDS_VtkFace.cpp     | 29 ++++++++++--
- .../salomesmesh/src/SMDS/SMDS_VtkVolume.cpp   | 38 +++++++++++-----
- .../src/SMESH/SMESH_MeshEditor.cpp            |  8 ++--
- src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp |  7 ++-
- 14 files changed, 179 insertions(+), 58 deletions(-)
-
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx
-@@ -40,11 +40,16 @@
- 
- #include <vtkType.h>
- #include <vtkCellType.h>
-+#include <vtkCellArray.h>
- 
- //typedef unsigned short UShortType;
- typedef short ShortType;
- typedef int   LongType;
--
-+#ifdef VTK_CELL_ARRAY_V2
-+typedef const vtkIdType* vtkIdTypePtr;
-+#else
-+typedef vtkIdType* vtkIdTypePtr;
-+#endif
- class SMDS_MeshNode;
- class SMDS_MeshEdge;
- class SMDS_MeshFace;
-@@ -192,7 +197,7 @@ protected:
-   //! Element index in vector SMDS_Mesh::myNodes or SMDS_Mesh::myCells
-   int myID;
-   //! index in vtkUnstructuredGrid
--  int myVtkID;
-+  vtkIdType myVtkID;
-   //! SMDS_Mesh identification in SMESH
-   ShortType myMeshId;
-   //! SubShape and SubMesh identification in SMESHDS
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx
-@@ -95,7 +95,11 @@ public:
-                                        std::map<int, std::map<long,int> >& nodeQuadDomains);
-   vtkCellLinks* GetLinks()
-   {
-+#ifdef VTK_CELL_ARRAY_V2
-+    return static_cast<vtkCellLinks*>(GetCellLinks());
-+#else
-     return Links;
-+#endif
-   }
-   SMDS_Downward* getDownArray(unsigned char vtkType)
-   {
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp
-@@ -67,10 +67,16 @@ void SMDS_BallElement::SetDiameter(doubl
- bool SMDS_BallElement::ChangeNode (const SMDS_MeshNode * node)
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+  cellPoints->SetId(0, node->getVtkId());
-+#else
-   vtkIdType npts = 0;
-   vtkIdType* pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-   pts[0] = node->getVtkId();
-+#endif
-   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
-   return true;
- }
-@@ -83,7 +89,8 @@ void SMDS_BallElement::Print (std::ostre
- const SMDS_MeshNode* SMDS_BallElement::GetNode (const int ind) const
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( myVtkID, npts, pts );
-   return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ 0 ]);
- }
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp
-@@ -303,7 +303,7 @@ int SMDS_Down1D::getNodeSet(int cellId,
- void SMDS_Down1D::setNodes(int cellId, int vtkId)
- {
-   vtkIdType npts = 0;
--  vtkIdType *pts; // will refer to the point id's of the face
-+  vtkIdTypePtr pts; // will refer to the point id's of the face
-   _grid->GetCellPoints(vtkId, npts, pts);
-   // MESSAGE(vtkId << " " << npts << "  " << _nbDownCells);
-   //ASSERT(npts == _nbDownCells);
-@@ -357,7 +357,7 @@ int SMDS_Down1D::computeVtkCells(int *pt
-     {
-       vtkIdType point = pts[i];
-       int numCells = _grid->GetLinks()->GetNcells(point);
--      vtkIdType *cells = _grid->GetLinks()->GetCells(point);
-+      vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point);
-       for (int j = 0; j < numCells; j++)
-         {
-           int vtkCellId = cells[j];
-@@ -532,7 +532,7 @@ int SMDS_Down2D::computeVolumeIds(int ce
-   // --- find point id's of the face
- 
-   vtkIdType npts = 0;
--  vtkIdType *pts; // will refer to the point id's of the face
-+  vtkIdTypePtr pts; // will refer to the point id's of the face
-   _grid->GetCellPoints(cellId, npts, pts);
-   vector<int> nodes;
-   for (int i = 0; i < npts; i++)
-@@ -577,7 +577,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod
-       vtkIdType point = pts[i];
-       int numCells = _grid->GetLinks()->GetNcells(point);
-       //MESSAGE("cells pour " << i << " " << numCells);
--      vtkIdType *cells = _grid->GetLinks()->GetCells(point);
-+      vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point);
-       for (int j = 0; j < numCells; j++)
-         {
-           int vtkCellId = cells[j];
-@@ -627,7 +627,7 @@ int SMDS_Down2D::computeVolumeIdsFromNod
- void SMDS_Down2D::setTempNodes(int cellId, int vtkId)
- {
-   vtkIdType npts = 0;
--  vtkIdType *pts; // will refer to the point id's of the face
-+  vtkIdTypePtr pts; // will refer to the point id's of the face
-   _grid->GetCellPoints(vtkId, npts, pts);
-   // MESSAGE(vtkId << " " << npts << "  " << _nbNodes);
-   //ASSERT(npts == _nbNodes);
-@@ -795,7 +795,7 @@ void SMDS_Down3D::getNodeIds(int cellId,
- {
-   int vtkId = this->_vtkCellIds[cellId];
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(vtkId, npts, nodes);
-   for (int i = 0; i < npts; i++)
-     nodeSet.insert(nodes[i]);
-@@ -1126,7 +1126,7 @@ void SMDS_DownTetra::getOrderedNodesOfFa
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1178,7 +1178,7 @@ void SMDS_DownTetra::computeFacesWithNod
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1234,7 +1234,7 @@ void SMDS_DownQuadTetra::getOrderedNodes
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1288,7 +1288,7 @@ void SMDS_DownQuadTetra::computeFacesWit
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1357,7 +1357,7 @@ void SMDS_DownPyramid::getOrderedNodesOf
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1435,7 +1435,7 @@ void SMDS_DownPyramid::computeFacesWithN
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1500,7 +1500,7 @@ void SMDS_DownQuadPyramid::getOrderedNod
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1580,7 +1580,7 @@ void SMDS_DownQuadPyramid::computeFacesW
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1660,7 +1660,7 @@ void SMDS_DownPenta::getOrderedNodesOfFa
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1744,7 +1744,7 @@ void SMDS_DownPenta::computeFacesWithNod
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1810,7 +1810,7 @@ void SMDS_DownQuadPenta::getOrderedNodes
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -1896,7 +1896,7 @@ void SMDS_DownQuadPenta::computeFacesWit
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -1981,7 +1981,7 @@ void SMDS_DownHexa::getOrderedNodesOfFac
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -2036,7 +2036,7 @@ void SMDS_DownHexa::computeFacesWithNode
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-@@ -2112,7 +2112,7 @@ void SMDS_DownQuadHexa::getOrderedNodesO
-   //MESSAGE("cellId = " << cellId);
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes);
- 
-   set<int> tofind;
-@@ -2167,7 +2167,7 @@ void SMDS_DownQuadHexa::computeFacesWith
-   // --- find point id's of the volume
- 
-   vtkIdType npts = 0;
--  vtkIdType *nodes; // will refer to the point id's of the volume
-+  vtkIdTypePtr nodes; // will refer to the point id's of the volume
-   _grid->GetCellPoints(cellId, npts, nodes);
- 
-   // --- create all the ordered list of node id's for each face
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh.cpp
-@@ -4768,7 +4768,11 @@ void SMDS_Mesh::dumpGrid(string ficdump)
-         ficcon << endl;
-   }
-   ficcon << "-------------------------------- connectivity " <<  nbPoints << endl;
--        vtkCellLinks *links = myGrid->GetCellLinks();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkCellLinks *links = static_cast<vtkCellLinks*>(myGrid->GetCellLinks());
-+#else
-+  vtkCellLinks *links = myGrid->GetCellLinks();
-+#endif
-   for (int i=0; i<nbPoints; i++)
-   {
-         int ncells = links->GetNcells(i);
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp
-@@ -146,6 +146,17 @@ bool SMDS_Mesh0DElement::ChangeNodes(con
-   if ( nbNodes == 1 )
-   {
-     vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+    vtkNew<vtkIdList> cellPoints;
-+    grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+    if (nbNodes != cellPoints->GetNumberOfIds())
-+    {
-+      MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes);
-+      return false;
-+    }
-+    myNode = nodes[0];
-+    cellPoints->SetId(0, myNode->getVtkId());
-+#else
-     vtkIdType npts = 0;
-     vtkIdType* pts = 0;
-     grid->GetCellPoints(myVtkID, npts, pts);
-@@ -156,6 +167,7 @@ bool SMDS_Mesh0DElement::ChangeNodes(con
-     }
-     myNode = nodes[0];
-     pts[0] = myNode->getVtkId();
-+#endif
- 
-     SMDS_Mesh::_meshList[myMeshId]->setMyModified();
-     return true;
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp
-@@ -191,7 +191,7 @@ public:
- SMDS_ElemIteratorPtr SMDS_MeshNode::
- GetInverseElementIterator(SMDSAbs_ElementType type) const
- {
--  vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID);
-+  vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID);
-   //MESSAGE("myID " << myID << " ncells " << l.ncells);
-   return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type));
- }
-@@ -251,7 +251,7 @@ elementsIterator(SMDSAbs_ElementType typ
-     return SMDS_MeshElement::elementsIterator(SMDSAbs_Node);
-   else
-   {
--    vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID);
-+    vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID);
-     return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type));
-   }
- }
-@@ -350,7 +350,7 @@ void SMDS_MeshNode::AddInverseElement(co
-   const SMDS_MeshCell *cell = dynamic_cast<const SMDS_MeshCell*> (ME);
-   assert(cell);
-   SMDS_UnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
--  vtkCellLinks *Links = grid->GetCellLinks();
-+  vtkCellLinks *Links = static_cast<vtkCellLinks*>(grid->GetCellLinks());
-   Links->ResizeCellList(myVtkID, 1);
-   Links->AddCellReference(cell->getVtkId(), myVtkID);
- }
-@@ -366,7 +366,7 @@ void SMDS_MeshNode::ClearInverseElements
- 
- bool SMDS_MeshNode::emptyInverseElements()
- {
--  vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID);
-+  vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID);
-   return (l.ncells == 0);
- }
- 
-@@ -378,7 +378,7 @@ bool SMDS_MeshNode::emptyInverseElements
- 
- int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const
- {
--  vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID);
-+  vtkCellLinks::Link l = static_cast<vtkCellLinks*>(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID);
- 
-   if ( type == SMDSAbs_All )
-     return l.ncells;
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-@@ -139,8 +139,8 @@ int SMDS_UnstructuredGrid::InsertNextLin
-   for (; it != setOfNodes.end(); ++it)
-     {
-       //MESSAGE("reverse link for node " << *it << " cell " << cellid);
--      this->Links->ResizeCellList(*it, 1);
--      this->Links->AddCellReference(cellid, *it);
-+      this->GetLinks()->ResizeCellList(*it, 1);
-+      this->GetLinks()->AddCellReference(cellid, *it);
-     }
- 
-   return cellid;
-@@ -332,9 +332,13 @@ void SMDS_UnstructuredGrid::copyBloc(vtk
-     {
-       newTypes->SetValue(alreadyCopied, this->Types->GetValue(j));
-       idCellsOldToNew[j] = alreadyCopied; // old vtkId --> new vtkId
-+#ifdef VTK_CELL_ARRAY_V2
-+      vtkIdType oldLoc = this->GetCellLocationsArray()->GetValue(j);
-+#else
-       vtkIdType oldLoc = this->Locations->GetValue(j);
-+#endif
-       vtkIdType nbpts;
--      vtkIdType *oldPtsCell = 0;
-+      vtkIdTypePtr oldPtsCell = 0;
-       this->Connectivity->GetCell(oldLoc, nbpts, oldPtsCell);
-       assert(nbpts < NBMAXNODESINCELL);
-       //MESSAGE(j << " " << alreadyCopied << " " << (int)this->Types->GetValue(j) << " " << oldLoc << " " << nbpts );
-@@ -952,6 +956,21 @@ void SMDS_UnstructuredGrid::GetNodeIds(s
-  */
- void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map<int, int> localClonedNodeIds)
- {
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  this->GetCellPoints(vtkVolId, cellPoints.GetPointer());
-+  for (vtkIdType i = 0; i < cellPoints->GetNumberOfIds(); i++)
-+    {
-+      if (localClonedNodeIds.count(cellPoints->GetId(i)))
-+        {
-+          vtkIdType oldpt = cellPoints->GetId(i);
-+          cellPoints->SetId(i, localClonedNodeIds[oldpt]);
-+          //MESSAGE(oldpt << " --> " << pts[i]);
-+          //this->RemoveReferenceToCell(oldpt, vtkVolId);
-+          //this->AddReferenceToCell(pts[i], vtkVolId);
-+        }
-+    }
-+#else
-   vtkIdType npts = 0;
-   vtkIdType *pts; // will refer to the point id's of the face
-   this->GetCellPoints(vtkVolId, npts, pts);
-@@ -966,6 +985,7 @@ void SMDS_UnstructuredGrid::ModifyCellNo
-           //this->AddReferenceToCell(pts[i], vtkVolId);
-         }
-     }
-+#endif
- }
- 
- /*! reorder the nodes of a face
-@@ -995,11 +1015,20 @@ void SMDS_UnstructuredGrid::BuildLinks()
-     this->Links->UnRegister(this);
-     }
- 
-+#ifdef VTK_CELL_ARRAY_V2
-+  this->Links = SMDS_CellLinks::New();
-+  GetLinks()->Allocate(this->GetNumberOfPoints());
-+  GetLinks()->Register(this);
-+//FIXME: vtk9
-+  GetLinks()->BuildLinks(this);
-+  GetLinks()->Delete();
-+#else
-   this->Links = SMDS_CellLinks::New();
-   this->Links->Allocate(this->GetNumberOfPoints());
-   this->Links->Register(this);
-   this->Links->BuildLinks(this, this->Connectivity);
-   this->Links->Delete();
-+#endif
- }
- 
- /*! Create a volume (prism or hexahedron) by duplication of a face.
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp
-@@ -33,7 +33,8 @@ SMDS_VtkCellIterator::SMDS_VtkCellIterat
-   }
-   else
-   {
--    vtkIdType npts, *pts;
-+    vtkIdType npts;
-+    vtkIdTypePtr pts;
-     grid->GetCellPoints( _cellId, npts, pts );
-     _vtkIdList->SetNumberOfIds( _nbNodes = npts );
-     for (int i = 0; i < _nbNodes; i++)
-@@ -67,7 +68,7 @@ SMDS_VtkCellIteratorToUNV::SMDS_VtkCellI
-   //MESSAGE("SMDS_VtkCellInterlacedIterator (UNV)" << _type);
- 
-   _vtkIdList = vtkIdList::New();
--  vtkIdType* pts;
-+  vtkIdTypePtr pts;
-   vtkIdType npts;
-   vtkUnstructuredGrid* grid = _mesh->getGrid();
-   grid->GetCellPoints((vtkIdType)_cellId, npts, pts);
-@@ -182,7 +183,7 @@ SMDS_VtkCellIteratorPolyH::SMDS_VtkCellI
-   {
-     //MESSAGE("SMDS_VtkCellIterator Polyhedra");
-     vtkIdType nFaces = 0;
--    vtkIdType* ptIds = 0;
-+    vtkIdTypePtr ptIds = 0;
-     grid->GetFaceStream(_cellId, nFaces, ptIds);
-     int id = 0;
-     _nbNodesInFaces = 0;
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp
-@@ -67,6 +67,19 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD
- bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+  if (nbNodes != cellPoints->GetNumberOfIds())
-+    {
-+      MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes);
-+      return false;
-+    }
-+  for (int i = 0; i < nbNodes; i++)
-+    {
-+      cellPoints->SetId(i, nodes[i]->getVtkId());
-+    }
-+#else
-   vtkIdType npts = 0;
-   vtkIdType* pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-@@ -79,6 +92,7 @@ bool SMDS_VtkEdge::ChangeNodes(const SMD
-     {
-       pts[i] = nodes[i]->getVtkId();
-     }
-+#endif
-   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
-   return true;
- }
-@@ -87,7 +101,7 @@ bool SMDS_VtkEdge::IsMediumNode(const SM
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-   vtkIdType npts = 0;
--  vtkIdType* pts = 0;
-+  vtkIdTypePtr pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-   //MESSAGE("IsMediumNode " << npts  << " " << (node->getVtkId() == pts[npts-1]));
-   return ((npts == 3) && (node->getVtkId() == pts[2]));
-@@ -137,7 +151,8 @@ const SMDS_MeshNode*
- SMDS_VtkEdge::GetNode(const int ind) const
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( this->myVtkID, npts, pts );
-   return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]);
- }
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp
-@@ -101,6 +101,19 @@ void SMDS_VtkFace::initQuadPoly(const st
- bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+  if (nbNodes != cellPoints->GetNumberOfIds())
-+    {
-+      MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes);
-+      return false;
-+    }
-+  for (int i = 0; i < nbNodes; i++)
-+    {
-+      cellPoints->SetId(i, nodes[i]->getVtkId());
-+    }
-+#else
-   vtkIdType npts = 0;
-   vtkIdType* pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-@@ -113,6 +126,7 @@ bool SMDS_VtkFace::ChangeNodes(const SMD
-     {
-       pts[i] = nodes[i]->getVtkId();
-     }
-+#endif
-   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
-   return true;
- }
-@@ -173,7 +187,8 @@ const SMDS_MeshNode*
- SMDS_VtkFace::GetNode(const int ind) const
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( this->myVtkID, npts, pts );
-   return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]);
- }
-@@ -186,7 +201,8 @@ SMDS_VtkFace::GetNode(const int ind) con
- int SMDS_VtkFace::GetNodeIndex( const SMDS_MeshNode* node ) const
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( this->myVtkID, npts, pts );
-   for ( vtkIdType i = 0; i < npts; ++i )
-     if ( pts[i] == node->getVtkId() )
-@@ -251,7 +267,7 @@ bool SMDS_VtkFace::IsMediumNode(const SM
-     return false;
-   }
-   vtkIdType npts = 0;
--  vtkIdType* pts = 0;
-+  vtkIdTypePtr pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-   vtkIdType nodeId = node->getVtkId();
-   for (int rank = 0; rank < npts; rank++)
-@@ -356,11 +372,18 @@ SMDS_NodeIteratorPtr SMDS_VtkFace::inter
- void SMDS_VtkFace::ChangeApex(SMDS_MeshNode* node)
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+  grid->RemoveReferenceToCell(cellPoints->GetId(0), myVtkID);
-+  cellPoints->SetId(0, node->getVtkId());
-+#else
-   vtkIdType npts = 0;
-   vtkIdType* pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-   grid->RemoveReferenceToCell(pts[0], myVtkID);
-   pts[0] = node->getVtkId();
-+#endif
-   node->AddInverseElement(this),
-   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
- }
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp
-@@ -133,6 +133,19 @@ void SMDS_VtkVolume::initPoly(const std:
- bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)
- {
-   vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
-+#ifdef VTK_CELL_ARRAY_V2
-+  vtkNew<vtkIdList> cellPoints;
-+  grid->GetCellPoints(myVtkID, cellPoints.GetPointer());
-+  if (nbNodes != cellPoints->GetNumberOfIds())
-+    {
-+      MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes);
-+      return false;
-+    }
-+  for (int i = 0; i < nbNodes; i++)
-+    {
-+      cellPoints->SetId(i, nodes[i]->getVtkId());
-+    }
-+#else
-   vtkIdType npts = 0;
-   vtkIdType* pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-@@ -145,6 +158,7 @@ bool SMDS_VtkVolume::ChangeNodes(const S
-     {
-       pts[i] = nodes[i]->getVtkId();
-     }
-+#endif
-   SMDS_Mesh::_meshList[myMeshId]->setMyModified();
-   return true;
- }
-@@ -207,7 +221,7 @@ int SMDS_VtkVolume::NbFaces() const
-     case VTK_POLYHEDRON:
-       {
-         vtkIdType nFaces = 0;
--        vtkIdType* ptIds = 0;
-+        vtkIdTypePtr ptIds = 0;
-         grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-         nbFaces = nFaces;
-         break;
-@@ -236,7 +250,7 @@ int SMDS_VtkVolume::NbNodes() const
-   else
-     {
-       vtkIdType nFaces = 0;
--      vtkIdType* ptIds = 0;
-+      vtkIdTypePtr ptIds = 0;
-       grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-       int id = 0;
-       for (int i = 0; i < nFaces; i++)
-@@ -276,7 +290,7 @@ int SMDS_VtkVolume::NbEdges() const
-     case VTK_POLYHEDRON:
-       {
-         vtkIdType nFaces = 0;
--        vtkIdType* ptIds = 0;
-+        vtkIdTypePtr ptIds = 0;
-         grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-         nbEdges = 0;
-         int id = 0;
-@@ -312,7 +326,7 @@ int SMDS_VtkVolume::NbFaceNodes(const in
-   if (aVtkType == VTK_POLYHEDRON)
-     {
-       vtkIdType nFaces = 0;
--      vtkIdType* ptIds = 0;
-+      vtkIdTypePtr ptIds = 0;
-       grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-       int id = 0;
-       for (int i = 0; i < nFaces; i++)
-@@ -342,7 +356,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get
-   if (aVtkType == VTK_POLYHEDRON)
-     {
-       vtkIdType nFaces = 0;
--      vtkIdType* ptIds = 0;
-+      vtkIdTypePtr ptIds = 0;
-       grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-       int id = 0;
-       for (int i = 0; i < nFaces; i++)
-@@ -372,7 +386,7 @@ std::vector<int> SMDS_VtkVolume::GetQuan
-   if (aVtkType == VTK_POLYHEDRON)
-     {
-       vtkIdType nFaces = 0;
--      vtkIdType* ptIds = 0;
-+      vtkIdTypePtr ptIds = 0;
-       grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-       int id = 0;
-       for (int i = 0; i < nFaces; i++)
-@@ -430,7 +444,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get
-   if ( aVtkType == VTK_POLYHEDRON)
-   {
-     vtkIdType nFaces = 0;
--    vtkIdType* ptIds = 0;
-+    vtkIdTypePtr ptIds = 0;
-     grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-     int id = 0, nbPoints = 0;
-     for (int i = 0; i < nFaces; i++)
-@@ -443,7 +457,8 @@ const SMDS_MeshNode* SMDS_VtkVolume::Get
-     }
-     return 0;
-   }
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( this->myVtkID, npts, pts );
-   const std::vector<int>& interlace = SMDS_MeshCell::fromVtkOrder( VTKCellType( aVtkType ));
-   return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ interlace.empty() ? ind : interlace[ind]] );
-@@ -460,7 +475,7 @@ int SMDS_VtkVolume::GetNodeIndex( const
-   if ( aVtkType == VTK_POLYHEDRON)
-   {
-     vtkIdType nFaces = 0;
--    vtkIdType* ptIds = 0;
-+    vtkIdTypePtr ptIds = 0;
-     grid->GetFaceStream(this->myVtkID, nFaces, ptIds);
-     int id = 0;
-     for (int iF = 0; iF < nFaces; iF++)
-@@ -473,7 +488,8 @@ int SMDS_VtkVolume::GetNodeIndex( const
-     }
-     return -1;
-   }
--  vtkIdType npts, *pts;
-+  vtkIdType npts;
-+  vtkIdTypePtr pts;
-   grid->GetCellPoints( this->myVtkID, npts, pts );
-   for ( vtkIdType i = 0; i < npts; ++i )
-     if ( pts[i] == node->getVtkId() )
-@@ -534,7 +550,7 @@ bool SMDS_VtkVolume::IsMediumNode(const
-       return false;
-   }
-   vtkIdType npts = 0;
--  vtkIdType* pts = 0;
-+  vtkIdTypePtr pts = 0;
-   grid->GetCellPoints(myVtkID, npts, pts);
-   vtkIdType nodeId = node->getVtkId();
-   for (int rank = 0; rank < npts; rank++)
-Index: FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-+++ FreeCAD-0.19.2/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
-@@ -11348,7 +11348,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou
-             {
-               int oldId = *itn;
-               //MESSAGE("     node " << oldId);
--              vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId);
-+              vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId);
-               for (int i=0; i<l.ncells; i++)
-                 {
-                   int vtkId = l.cells[i];
-@@ -11527,7 +11527,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou
-                                           //MESSAGE("  domain " << idom << " volume " << elem->GetID());
-                                           double values[3];
-                                           vtkIdType npts = 0;
--                                          vtkIdType* pts = 0;
-+                                          vtkIdTypePtr pts = 0;
-                                           grid->GetCellPoints(vtkVolIds[ivol], npts, pts);
-                                           SMDS_VtkVolume::gravityCenter(grid, pts, npts, values);
-                                           if (id ==0)
-@@ -11708,7 +11708,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGrou
-         {
-           int oldId = itnod->first;
-           //MESSAGE("     node " << oldId);
--          vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId);
-+          vtkCellLinks::Link l = static_cast<vtkCellLinks*>(grid->GetCellLinks())->GetLink(oldId);
-           for (int i = 0; i < l.ncells; i++)
-             {
-               int vtkId = l.cells[i];
-@@ -12165,7 +12165,7 @@ void SMESH_MeshEditor::CreateHoleSkin(do
-           MESSAGE("volume to check,  vtkId " << vtkId << " smdsId " << meshDS->fromVtkToSmds(vtkId));
-           bool volInside = false;
-           vtkIdType npts = 0;
--          vtkIdType* pts = 0;
-+          vtkIdTypePtr pts = 0;
-           grid->GetCellPoints(vtkId, npts, pts);
-           for (int i=0; i<npts; i++)
-             {
-Index: FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
-===================================================================
---- FreeCAD-0.19.2.orig/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
-+++ FreeCAD-0.19.2/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp
-@@ -20,7 +20,6 @@
-  *                                                                         *
-  ***************************************************************************/
- 
--
- #include "PreCompiled.h"
- 
- #ifndef _PreComp_
diff --git a/gnu/packages/patches/ghc-monad-par-fix-tests.patch b/gnu/packages/patches/ghc-monad-par-fix-tests.patch
deleted file mode 100644
index d21a1e485c..0000000000
--- a/gnu/packages/patches/ghc-monad-par-fix-tests.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-This patch is taken from upstream.  It fixes a test to work with GHC 8.6.
-The paths have been slightly altered to work with the release tarball.
-
-See <https://github.com/simonmar/monad-par/issues/66>.
-
-From e20f81c8060208e4fb038e8f0e0668b41d72a6fb Mon Sep 17 00:00:00 2001
-From: Clint Adams <clint@debian.org>
-Date: Sat, 31 Aug 2019 14:12:34 -0400
-Subject: [PATCH] Use a case statement instead of pattern-matching in
- case_test_diamond
-
-This avoids the need for a MonadFail instance.  Closes #66
----
- monad-par/tests/ParTests_shared.hs | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/tests/ParTests_shared.hs b/tests/ParTests_shared.hs
-index 31f438d..b2de50c 100644
---- a/tests/ParTests_shared.hs
-+++ b/tests/ParTests_shared.hs
-@@ -109,12 +109,15 @@ case_test_diamond :: Assertion
- case_test_diamond = 9 @=? (m :: Int)
-  where 
-   m = runPar $ do
--      [a,b,c,d] <- sequence [new,new,new,new]
--      fork $ do x <- get a; put b (x+1)
--      fork $ do x <- get a; put c (x+2)
--      fork $ do x <- get b; y <- get c; put d (x+y)
--      fork $ do put a 3
--      get d
-+      abcd <- sequence [new,new,new,new]
-+      case abcd of
-+          [a,b,c,d] -> do
-+              fork $ do x <- get a; put b (x+1)
-+              fork $ do x <- get a; put c (x+2)
-+              fork $ do x <- get b; y <- get c; put d (x+y)
-+              fork $ do put a 3
-+              get d
-+          _ -> error "Oops"
- 
- -- | Violate IVar single-assignment:
- --
--- 
-2.23.0
-
diff --git a/gnu/packages/patches/glibc-CVE-2018-11236.patch b/gnu/packages/patches/glibc-CVE-2018-11236.patch
deleted file mode 100644
index 4f8a72943c..0000000000
--- a/gnu/packages/patches/glibc-CVE-2018-11236.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=patch;h=5460617d1567657621107d895ee2dd83bc1f88f2
-with ChangeLog removed
-
-From 5460617d1567657621107d895ee2dd83bc1f88f2 Mon Sep 17 00:00:00 2001
-From: Paul Pluzhnikov <ppluzhnikov@google.com>
-Date: Tue, 8 May 2018 18:12:41 -0700
-Subject: [PATCH] Fix BZ 22786: integer addition overflow may cause stack
- buffer overflow when realpath() input length is close to SSIZE_MAX.
-
-2018-05-09  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	[BZ #22786]
-	* stdlib/canonicalize.c (__realpath): Fix overflow in path length
-	computation.
-	* stdlib/Makefile (test-bz22786): New test.
-	* stdlib/test-bz22786.c: New test.
----
- ChangeLog             |  8 +++++
- stdlib/Makefile       |  2 +-
- stdlib/canonicalize.c |  2 +-
- stdlib/test-bz22786.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 100 insertions(+), 2 deletions(-)
- create mode 100644 stdlib/test-bz22786.c
-
-diff --git a/stdlib/Makefile b/stdlib/Makefile
-index af1643c..1ddb1f9 100644
---- a/stdlib/Makefile
-+++ b/stdlib/Makefile
-@@ -84,7 +84,7 @@ tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
- 		   tst-cxa_atexit tst-on_exit test-atexit-race 		    \
- 		   test-at_quick_exit-race test-cxa_atexit-race             \
- 		   test-on_exit-race test-dlclose-exit-race 		    \
--		   tst-makecontext-align
-+		   tst-makecontext-align test-bz22786
- 
- tests-internal	:= tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
- 		   tst-tls-atexit tst-tls-atexit-nodelete
-diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
-index 4135f3f..390fb43 100644
---- a/stdlib/canonicalize.c
-+++ b/stdlib/canonicalize.c
-@@ -181,7 +181,7 @@ __realpath (const char *name, char *resolved)
- 		extra_buf = __alloca (path_max);
- 
- 	      len = strlen (end);
--	      if ((long int) (n + len) >= path_max)
-+	      if (path_max - n <= len)
- 		{
- 		  __set_errno (ENAMETOOLONG);
- 		  goto error;
-diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c
-new file mode 100644
-index 0000000..e7837f9
---- /dev/null
-+++ b/stdlib/test-bz22786.c
-@@ -0,0 +1,90 @@
-+/* Bug 22786: test for buffer overflow in realpath.
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library 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
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+/* This file must be run from within a directory called "stdlib".  */
-+
-+#include <errno.h>
-+#include <limits.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <sys/stat.h>
-+#include <sys/types.h>
-+#include <support/test-driver.h>
-+#include <libc-diag.h>
-+
-+static int
-+do_test (void)
-+{
-+  const char dir[] = "bz22786";
-+  const char lnk[] = "bz22786/symlink";
-+
-+  rmdir (dir);
-+  if (mkdir (dir, 0755) != 0 && errno != EEXIST)
-+    {
-+      printf ("mkdir %s: %m\n", dir);
-+      return EXIT_FAILURE;
-+    }
-+  if (symlink (".", lnk) != 0 && errno != EEXIST)
-+    {
-+      printf ("symlink (%s, %s): %m\n", dir, lnk);
-+      return EXIT_FAILURE;
-+    }
-+
-+  const size_t path_len = (size_t) INT_MAX + 1;
-+
-+  DIAG_PUSH_NEEDS_COMMENT;
-+#if __GNUC_PREREQ (7, 0)
-+  /* GCC 7 warns about too-large allocations; here we need such
-+     allocation to succeed for the test to work.  */
-+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
-+#endif
-+  char *path = malloc (path_len);
-+  DIAG_POP_NEEDS_COMMENT;
-+
-+  if (path == NULL)
-+    {
-+      printf ("malloc (%zu): %m\n", path_len);
-+      return EXIT_UNSUPPORTED;
-+    }
-+
-+  /* Construct very long path = "bz22786/symlink/aaaa....."  */
-+  char *p = mempcpy (path, lnk, sizeof (lnk) - 1);
-+  *(p++) = '/';
-+  memset (p, 'a', path_len - (path - p) - 2);
-+  p[path_len - (path - p) - 1] = '\0';
-+
-+  /* This call crashes before the fix for bz22786 on 32-bit platforms.  */
-+  p = realpath (path, NULL);
-+
-+  if (p != NULL || errno != ENAMETOOLONG)
-+    {
-+      printf ("realpath: %s (%m)", p);
-+      return EXIT_FAILURE;
-+    }
-+
-+  /* Cleanup.  */
-+  unlink (lnk);
-+  rmdir (dir);
-+
-+  return 0;
-+}
-+
-+#define TEST_FUNCTION do_test
-+#include <support/test-driver.c>
--- 
-2.9.3
-
diff --git a/gnu/packages/patches/glibc-CVE-2018-11237.patch b/gnu/packages/patches/glibc-CVE-2018-11237.patch
deleted file mode 100644
index 8a7c604ecd..0000000000
--- a/gnu/packages/patches/glibc-CVE-2018-11237.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=patch;h=9aaaab7c6e4176e61c59b0a63c6ba906d875dc0e
-with the ChangeLog removed
-
-From 9aaaab7c6e4176e61c59b0a63c6ba906d875dc0e Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab@suse.de>
-Date: Tue, 22 May 2018 10:37:59 +0200
-Subject: [PATCH] Don't write beyond destination in
- __mempcpy_avx512_no_vzeroupper (bug 23196)
-
-When compiled as mempcpy, the return value is the end of the destination
-buffer, thus it cannot be used to refer to the start of it.
----
- ChangeLog                                               | 9 +++++++++
- string/test-mempcpy.c                                   | 1 +
- sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S | 5 +++--
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/string/test-mempcpy.c b/string/test-mempcpy.c
-index c08fba8..d98ecdd 100644
---- a/string/test-mempcpy.c
-+++ b/string/test-mempcpy.c
-@@ -18,6 +18,7 @@
-    <http://www.gnu.org/licenses/>.  */
- 
- #define MEMCPY_RESULT(dst, len) (dst) + (len)
-+#define MIN_PAGE_SIZE 131072
- #define TEST_MAIN
- #define TEST_NAME "mempcpy"
- #include "test-string.h"
-diff --git a/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S b/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
-index 23c0f7a..effc3ac 100644
---- a/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
-+++ b/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
-@@ -336,6 +336,7 @@ L(preloop_large):
- 	vmovups	(%rsi), %zmm4
- 	vmovups	0x40(%rsi), %zmm5
- 
-+	mov	%rdi, %r11
- /* Align destination for access with non-temporal stores in the loop.  */
- 	mov	%rdi, %r8
- 	and	$-0x80, %rdi
-@@ -366,8 +367,8 @@ L(gobble_256bytes_nt_loop):
- 	cmp	$256, %rdx
- 	ja	L(gobble_256bytes_nt_loop)
- 	sfence
--	vmovups	%zmm4, (%rax)
--	vmovups	%zmm5, 0x40(%rax)
-+	vmovups	%zmm4, (%r11)
-+	vmovups	%zmm5, 0x40(%r11)
- 	jmp	L(check)
- 
- L(preloop_large_bkw):
--- 
-2.9.3
-
diff --git a/gnu/packages/patches/glibc-hurd-magic-pid.patch b/gnu/packages/patches/glibc-hurd-magic-pid.patch
deleted file mode 100644
index a6849f7d35..0000000000
--- a/gnu/packages/patches/glibc-hurd-magic-pid.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-This patch implements "magic" lookup for "pid/…", as used when looking up
-/proc/self.
-
-The patch comes from the 't/magic-pid' branch
-at <https://git.savannah.gnu.org/cgit/hurd/glibc.git>.  It squashes
-commit 392e52286a302ca6157fbd221295e64ab6b6d8ba (by Justus Winter)
-and commit 392e52286a302ca6157fbd221295e64ab6b6d8ba (a subsequent fix by
-Samuel Thibault).
-
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Subject: [PATCH] hurd: Handle `pid' magical lookup retry
-
-        * hurd/lookup-retry.c: Handle `pid' magical lookup
-        retry.
-
-diff --git a/hurd/lookup-retry.c b/hurd/lookup-retry.c
-index aee2ba8f93..6ed8de1653 100644
---- a/hurd/lookup-retry.c
-+++ b/hurd/lookup-retry.c
-@@ -25,6 +25,7 @@
- #include <string.h>
- #include <_itoa.h>
- #include <eloop-threshold.h>
-+#include <unistd.h>
- 
- /* Translate the error from dir_lookup into the error the user sees.  */
- static inline error_t
-@@ -59,6 +60,7 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
-   error_t err;
-   char *file_name;
-   int nloops;
-+  file_t lastdir = MACH_PORT_NULL;
- 
-   error_t lookup_op (file_t startdir)
-     {
-@@ -107,14 +109,15 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 	{
- 	case FS_RETRY_REAUTH:
- 	  if (err = reauthenticate (*result))
--	    return err;
-+	    goto out;
- 	  /* Fall through.  */
- 
- 	case FS_RETRY_NORMAL:
- 	  if (nloops++ >= __eloop_threshold ())
- 	    {
- 	      __mach_port_deallocate (__mach_task_self (), *result);
--	      return ELOOP;
-+	      err = ELOOP;
-+	      goto out;
- 	    }
- 
- 	  /* An empty RETRYNAME indicates we have the final port.  */
-@@ -174,7 +177,7 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 
- 	      if (err)
- 		__mach_port_deallocate (__mach_task_self (), *result);
--	      return err;
-+	      goto out;
- 	    }
- 
- 	  startdir = *result;
-@@ -189,7 +192,10 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 	      if (*result != MACH_PORT_NULL)
- 		__mach_port_deallocate (__mach_task_self (), *result);
- 	      if (nloops++ >= __eloop_threshold ())
--		return ELOOP;
-+		{
-+		  err = ELOOP;
-+		  goto out;
-+		}
- 	      file_name = &retryname[1];
- 	      break;
- 
-@@ -208,7 +214,8 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 		      (*end != '/' && *end != '\0'))
- 		    {
- 		      errno = save;
--		      return ENOENT;
-+		      err = ENOENT;
-+		      goto out;
- 		    }
- 		  if (! get_dtable_port)
- 		    err = EGRATUITOUS;
-@@ -226,9 +233,12 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 		    }
- 		  errno = save;
- 		  if (err)
--		    return err;
-+		    goto out;
- 		  if (*end == '\0')
--		    return 0;
-+		    {
-+		      err = 0;
-+		      goto out;
-+		    }
- 		  else
- 		    {
- 		      /* Do a normal retry on the remaining components.  */
-@@ -255,9 +265,12 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 		  if (err = __host_info (__mach_host_self (), HOST_BASIC_INFO,
- 					 (integer_t *) &hostinfo,
- 					 &hostinfocnt))
--		    return err;
-+		    goto out;
- 		  if (hostinfocnt != HOST_BASIC_INFO_COUNT)
--		    return EGRATUITOUS;
-+		    {
-+		      err = EGRATUITOUS;
-+		      goto out;
-+		    }
- 		  p = _itoa (hostinfo.cpu_subtype, &retryname[8], 10, 0);
- 		  *--p = '/';
- 		  p = _itoa (hostinfo.cpu_type, &retryname[8], 10, 0);
-@@ -293,10 +306,11 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 		      }
- 
- 		  case '\0':
--		    return opentty (result);
-+		    err = opentty (result);
-+		    goto out;
- 		  case '/':
- 		    if (err = opentty (&startdir))
--		      return err;
-+		      goto out;
- 		    strcpy (retryname, &retryname[4]);
- 		    break;
- 		  default:
-@@ -306,14 +320,48 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 		goto bad_magic;
- 	      break;
- 
-+	    case 'p':
-+	      if (retryname[1] == 'i' && retryname[2] == 'd' &&
-+		  (retryname[3] == '/' || retryname[3] == 0))
-+		{
-+		  char *p, buf[1024];  /* XXX */
-+		  size_t len;
-+		  p = _itoa (__getpid (), &buf[sizeof buf], 10, 0);
-+		  len = &buf[sizeof buf] - p;
-+		  memcpy (buf, p, len);
-+		  strcpy (buf + len, &retryname[3]);
-+		  strcpy (retryname, buf);
-+
-+		  /* Do a normal retry on the remaining components.  */
-+		  __mach_port_mod_refs (__mach_task_self (), lastdir,
-+					MACH_PORT_RIGHT_SEND, 1);
-+		  startdir = lastdir;
-+		  file_name = retryname;
-+		}
-+	      else
-+		goto bad_magic;
-+	      break;
-+
- 	    default:
- 	    bad_magic:
--	      return EGRATUITOUS;
-+	      err = EGRATUITOUS;
-+	      goto out;
- 	    }
- 	  break;
- 
- 	default:
--	  return EGRATUITOUS;
-+	  err = EGRATUITOUS;
-+	  goto out;
-+	}
-+
-+      if (MACH_PORT_VALID (*result) && *result != lastdir)
-+	{
-+	  if (MACH_PORT_VALID (lastdir))
-+	    __mach_port_deallocate (__mach_task_self (), lastdir);
-+
-+	  lastdir = *result;
-+	  __mach_port_mod_refs (__mach_task_self (), lastdir,
-+				MACH_PORT_RIGHT_SEND, 1);
- 	}
- 
-       if (startdir != MACH_PORT_NULL)
-@@ -326,6 +374,10 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
- 	err = (*use_init_port) (dirport, &lookup_op);
-     } while (! err);
- 
-+out:
-+  if (MACH_PORT_VALID (lastdir))
-+    __mach_port_deallocate (__mach_task_self (), lastdir);
-+
-   return err;
- }
- weak_alias (__hurd_file_name_lookup_retry, hurd_file_name_lookup_retry)
diff --git a/gnu/packages/patches/grocsvs-dont-use-admiral.patch b/gnu/packages/patches/grocsvs-dont-use-admiral.patch
deleted file mode 100644
index cb976e19b0..0000000000
--- a/gnu/packages/patches/grocsvs-dont-use-admiral.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-python-admiral doesn't have a license
-https://github.com/nspies/admiral/issues/3
-
-diff --git a/setup.py b/setup.py
-index 692b6a0..568f381 100755
---- a/setup.py
-+++ b/setup.py
-@@ -20,7 +20,7 @@ setup(
-         'console_scripts' : ["grocsvs = grocsvs.main:main"]
-     },
- 
--    install_requires = ["admiral", "h5py", "networkx>=2.0", "pandas", "pybedtools", 
-+    install_requires = ["h5py", "networkx>=2.0", "pandas", "pybedtools", 
-                         "pyfaidx", "pysam>=0.10.0", "scipy", "ipython-cluster-helper",
-                         "pygraphviz", "psutil"],
- 
-diff --git a/src/grocsvs/jobmanagers.py b/src/grocsvs/jobmanagers.py
-index 6da0b58..112d7ff 100755
---- a/src/grocsvs/jobmanagers.py
-+++ b/src/grocsvs/jobmanagers.py
-@@ -41,34 +41,3 @@ class MultiprocessingCluster(Cluster):
-         pool = multiprocessing.Pool(processes=self.processes)
-         return pool.map_async(fn, args).get(999999)
- 
--
--class AdmiralCluster(Cluster):
--    def map(self, fn, args):
--        from admiral import jobmanagers, remote
--
--        cluster_options = self.cluster_settings.cluster_options.copy()
--        
--        scheduler = cluster_options.pop("scheduler")
--
--        jobmanager_class = jobmanagers.get_jobmanager(scheduler)
--        jobmanager = jobmanager_class(
--            batch_dir=self.batch_dir, log_dir=self.batch_dir)
--
--
--        if not "mem" in cluster_options:
--            cluster_options["mem"] = "16g"
--        if not "time" in cluster_options:
--            cluster_options["time"] = "12h"
--
--        jobs = []
--        #for i, arg in enumerate(args):
--
--        job_name = args[0].__class__.__name__
--        args = [[arg] for arg in args]
--        job = remote.run_remote(fn, jobmanager, job_name, args=args,
--                                array=True, overwrite=True, **cluster_options)
--
--        result = jobmanagers.wait_for_jobs([job], wait=5, progress=True)
--
--        if not result:
--            raise Exception("Some chunks failed to complete")
-diff --git a/src/grocsvs/pipeline.py b/src/grocsvs/pipeline.py
-index ab1bb2d..350976f 100755
---- a/src/grocsvs/pipeline.py
-+++ b/src/grocsvs/pipeline.py
-@@ -8,8 +8,7 @@ from grocsvs import utilities
- def make_jobmanager(jobmanager_settings, processes, batch_dir):
-     jobmanager_classes = {"IPCluster":jobmanagers.IPCluster,
-                           "local":    jobmanagers.LocalCluster,
--                          "multiprocessing": jobmanagers.MultiprocessingCluster,
--                          "admiral": jobmanagers.AdmiralCluster}
-+                          "multiprocessing": jobmanagers.MultiprocessingCluster}
- 
-     cls = jobmanager_classes[jobmanager_settings.cluster_type]
-     return cls(processes, jobmanager_settings, batch_dir)
diff --git a/gnu/packages/patches/guile-cross-compilation.patch b/gnu/packages/patches/guile-cross-compilation.patch
new file mode 100644
index 0000000000..a594cb9421
--- /dev/null
+++ b/gnu/packages/patches/guile-cross-compilation.patch
@@ -0,0 +1,55 @@
+When cross-compiling, get type sizes of the host system, not the build system.
+
+This is Guile commit 24b30130ca75653bdbacea84ce0443608379d630, which
+fixes <https://issues.guix.gnu.org/54198>, with one difference: it uses
+8 instead of SIZEOF_INTMAX_T, such that we do not need to modify
+'configure.ac' to check for the size of 'intmax_t' and to run 'autoreconf'
+(libguile/numbers.c expects SCM_SIZEOF_INTMAX_T = 8).
+
+diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
+index 01b14f14d..691ebd0af 100644
+--- a/libguile/gen-scmconfig.c
++++ b/libguile/gen-scmconfig.c
+@@ -1,4 +1,4 @@
+-/* Copyright 2003-2013,2018,2020,2021
++/* Copyright 2003-2013, 2018, 2020-2022
+      Free Software Foundation, Inc.
+ 
+    This file is part of Guile.
+@@ -238,21 +238,21 @@ main (int argc, char *argv[])
+   pf ("\n");
+   pf ("/* Standard types. */\n");
+ 
+-  pf ("#define SCM_SIZEOF_CHAR %zu\n", sizeof (char));
+-  pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %zu\n", sizeof (unsigned char));
+-  pf ("#define SCM_SIZEOF_SHORT %zu\n", sizeof (short));
+-  pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %zu\n", sizeof (unsigned short));
+-  pf ("#define SCM_SIZEOF_LONG %zu\n", sizeof (long));
+-  pf ("#define SCM_SIZEOF_UNSIGNED_LONG %zu\n", sizeof (unsigned long));
+-  pf ("#define SCM_SIZEOF_INT %zu\n", sizeof (int));
+-  pf ("#define SCM_SIZEOF_UNSIGNED_INT %zu\n", sizeof (unsigned int));
+-  pf ("#define SCM_SIZEOF_SIZE_T %zu\n", sizeof (size_t));
+-  pf ("#define SCM_SIZEOF_LONG_LONG %zu\n", sizeof (long long));
+-  pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %zu\n", sizeof (unsigned long long));
+-  pf ("#define SCM_SIZEOF_INTMAX %zu\n", sizeof (intmax_t));
+-  pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %zu\n", sizeof (ptrdiff_t));
+-  pf ("#define SCM_SIZEOF_INTPTR_T %zu\n", sizeof (intptr_t));
+-  pf ("#define SCM_SIZEOF_UINTPTR_T %zu\n", sizeof (uintptr_t));
++  pf ("#define SCM_SIZEOF_CHAR %d\n", SIZEOF_CHAR);
++  pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %d\n", SIZEOF_UNSIGNED_CHAR);
++  pf ("#define SCM_SIZEOF_SHORT %d\n", SIZEOF_SHORT);
++  pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %d\n", SIZEOF_UNSIGNED_SHORT);
++  pf ("#define SCM_SIZEOF_LONG %d\n", SIZEOF_LONG);
++  pf ("#define SCM_SIZEOF_UNSIGNED_LONG %d\n", SIZEOF_UNSIGNED_LONG);
++  pf ("#define SCM_SIZEOF_INT %d\n", SIZEOF_INT);
++  pf ("#define SCM_SIZEOF_UNSIGNED_INT %d\n", SIZEOF_UNSIGNED_INT);
++  pf ("#define SCM_SIZEOF_SIZE_T %d\n", SIZEOF_SIZE_T);
++  pf ("#define SCM_SIZEOF_LONG_LONG %d\n", SIZEOF_LONG_LONG);
++  pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %d\n", SIZEOF_UNSIGNED_LONG_LONG);
++  pf ("#define SCM_SIZEOF_INTMAX %d\n", 8); /* like SIZEOF_INTMAX_T */
++  pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %d\n", SIZEOF_PTRDIFF_T);
++  pf ("#define SCM_SIZEOF_INTPTR_T %d\n", SIZEOF_INTPTR_T);
++  pf ("#define SCM_SIZEOF_UINTPTR_T %d\n", SIZEOF_UINTPTR_T);
+ 
+   pf ("\n");
+   pf ("/* same as POSIX \"struct timespec\" -- always defined */\n");
diff --git a/gnu/packages/patches/guile-ssh-fix-test-suite.patch b/gnu/packages/patches/guile-ssh-fix-test-suite.patch
deleted file mode 100644
index dc10e08b0f..0000000000
--- a/gnu/packages/patches/guile-ssh-fix-test-suite.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-From f7942cded8b65341916a555186e2219efe174cd0 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Thu, 4 Feb 2021 14:38:25 -0500
-Subject: [PATCH] tests: Fix test suite for Guile 3.0.5.
-
-The test-runner object is now reset to #f when calling the 'test-end'
-procedure.  See the commit de5d1a7f99b8e952b115237ebc29633062f99bb9 in
-Guile (srfi-64: Reset test-runner-current if done) which introduced this
-change.
-
-* tests/client-server.scm (exit-status): New variable.  Use it when calling
-exit.
-* tests/dist.scm: Likewise.
-* tests/key.scm: Likewise.
-* tests/log.scm: Likewise.
-* tests/popen.scm: Likewise.
-* tests/server-client.scm: Likewise.
-* tests/server.scm: Likewise.
-* tests/session.scm: Likewise.
-* tests/shell.scm: Likewise.
-* tests/sssh-ssshd.scm: Likewise.
-* tests/tunnel.scm: Likewise.
----
- tests/client-server.scm | 4 +++-
- tests/dist.scm          | 4 +++-
- tests/key.scm           | 3 ++-
- tests/log.scm           | 5 ++++-
- tests/popen.scm         | 4 +++-
- tests/server-client.scm | 4 +++-
- tests/server.scm        | 4 +++-
- tests/session.scm       | 4 +++-
- tests/shell.scm         | 3 ++-
- tests/sssh-ssshd.scm    | 4 +++-
- tests/tunnel.scm        | 4 +++-
- 11 files changed, 32 insertions(+), 11 deletions(-)
-
-diff --git a/tests/client-server.scm b/tests/client-server.scm
-index 432a48c..fc46140 100644
---- a/tests/client-server.scm
-+++ b/tests/client-server.scm
-@@ -743,8 +743,10 @@
- 
- ;;;
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "client-server")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; client-server.scm ends here.
-diff --git a/tests/dist.scm b/tests/dist.scm
-index 2a3a75f..79f9e23 100644
---- a/tests/dist.scm
-+++ b/tests/dist.scm
-@@ -269,8 +269,10 @@ $4 = #<session #<undefined>@#<undefined>:22 (disconnected) 453fff>"
- ;;;
- 
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "dist")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; dist.scm ends here.
-diff --git a/tests/key.scm b/tests/key.scm
-index be31378..e1678f4 100644
---- a/tests/key.scm
-+++ b/tests/key.scm
-@@ -170,9 +170,10 @@
-                    (eq? (get-key-type key) 'ecdsa-p256)))))))
- 
- ;;;
-+(define exit-status (test-runner-fail-count (test-runner-current)))
- 
- (test-end "key")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; key.scm ends here.
-diff --git a/tests/log.scm b/tests/log.scm
-index f547202..d528251 100644
---- a/tests/log.scm
-+++ b/tests/log.scm
-@@ -64,8 +64,11 @@
-   (get-log-verbosity))
- 
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "log")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
-+
- 
- ;;; log.scm ends here
-diff --git a/tests/popen.scm b/tests/popen.scm
-index e063e0b..fe77108 100644
---- a/tests/popen.scm
-+++ b/tests/popen.scm
-@@ -129,8 +129,10 @@
-           (format-log/scm 'nolog "open-remote-output-pipe"  "channel: ~A" channel)
-           (output-only? channel)))))))
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "popen")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; popen.scm ends here.
-diff --git a/tests/server-client.scm b/tests/server-client.scm
-index 920aa22..b6ed3eb 100644
---- a/tests/server-client.scm
-+++ b/tests/server-client.scm
-@@ -148,8 +148,10 @@
-          (equal? x session))))))
- 
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "server-client")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; server-client.scm ends here.
-diff --git a/tests/server.scm b/tests/server.scm
-index c7f8b6c..1a6daea 100644
---- a/tests/server.scm
-+++ b/tests/server.scm
-@@ -157,9 +157,11 @@
-     (server-listen server)
-     #t))
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "server")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; server.scm ends here.
- 
-diff --git a/tests/session.scm b/tests/session.scm
-index 8caa039..7310647 100644
---- a/tests/session.scm
-+++ b/tests/session.scm
-@@ -210,8 +210,10 @@
-   (let ((session (%make-session)))
-     (not (connected? session))))
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "session")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; session.scm ends here.
-diff --git a/tests/shell.scm b/tests/shell.scm
-index 7d613fb..e36e661 100644
---- a/tests/shell.scm
-+++ b/tests/shell.scm
-@@ -113,9 +113,10 @@
- 
- 
- ;;;
-+(define exit-status (test-runner-fail-count (test-runner-current)))
- 
- (test-end "shell")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; shell.scm ends here.
-diff --git a/tests/sssh-ssshd.scm b/tests/sssh-ssshd.scm
-index 2fe23db..edb53fc 100644
---- a/tests/sssh-ssshd.scm
-+++ b/tests/sssh-ssshd.scm
-@@ -118,8 +118,10 @@
-       result)))
- 
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "sssh-ssshd")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; sssh-ssshd.scm ends here.
-diff --git a/tests/tunnel.scm b/tests/tunnel.scm
-index ef5a568..d6453b7 100644
---- a/tests/tunnel.scm
-+++ b/tests/tunnel.scm
-@@ -191,8 +191,10 @@
-                   (= pnum portnum)))
-            (eq? (channel-cancel-forward session "localhost" portnum) 'ok))))))))
- 
-+(define exit-status (test-runner-fail-count (test-runner-current)))
-+
- (test-end "tunnel")
- 
--(exit (= (test-runner-fail-count (test-runner-current)) 0))
-+(exit (= 0 exit-status))
- 
- ;;; tunnel.scm ends here.
--- 
-2.30.0
-
diff --git a/gnu/packages/patches/guile-ssh-read-error.patch b/gnu/packages/patches/guile-ssh-read-error.patch
deleted file mode 100644
index 9cc6b048a0..0000000000
--- a/gnu/packages/patches/guile-ssh-read-error.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-This patch adjusts to slightly different 'read-error' in Guile 3.0.6
-compared to earlier versions:
-
-  https://github.com/artyom-poptsov/guile-ssh/issues/28
-
---- a/tests/dist.scm
-+++ b/tests/dist.scm
-@@ -183,8 +183,8 @@ Unbound variable: e"
-    rrepl-get-result))
- 
- (test-error-with-log/= "rrepl-get-result, unknown # object error"
--  'node-repl-error "Reader error: scm_lreadr: #<unknown port>:1:3: \
--Unknown # object: (#\\<): scheme@(guile-user)> \
-+  'node-repl-error "Reader error: #f: #<unknown port>:1:3: \
-+Unknown # object: (\"#<\"): scheme@(guile-user)> \
- $4 = #<session #<undefined>@#<undefined>:22 (disconnected) 453fff>"
-   (call-with-input-string
-    (string-append  "scheme@(guile-user)> $4 = "
diff --git a/gnu/packages/patches/hydra-disable-darcs-test.patch b/gnu/packages/patches/hydra-disable-darcs-test.patch
deleted file mode 100644
index 5d8e015b08..0000000000
--- a/gnu/packages/patches/hydra-disable-darcs-test.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- hydra-20150407.4c0e3e4/tests/evaluation-tests.pl	2015-04-15 12:00:19.000000000 -0500
-+++ hydra-20150407.4c0e3e4/tests/evaluation-tests.pl	2015-04-17 08:53:04.940301471 -0500
-@@ -7,7 +7,7 @@
- 
- my $db = Hydra::Model::DB->new;
- 
--use Test::Simple tests => 72;
-+use Test::Simple tests => 68;
- 
- hydra_setup($db);
- 
-@@ -103,13 +103,6 @@
-         uri => "$jobsBaseUri/hg-repo",
-         update => getcwd . "/jobs/hg-update.sh"
-     },
--    {
--        name => "darcs",
--        nixexpr => "darcs-input.nix",
--        type => "darcs",
--        uri => "$jobsBaseUri/darcs-repo",
--        update => getcwd . "/jobs/darcs-update.sh"
--    }
- );
- 
- foreach my $scm ( @scminputs ) {
diff --git a/gnu/packages/patches/inkscape-poppler-0.76.patch b/gnu/packages/patches/inkscape-poppler-0.76.patch
deleted file mode 100644
index 08e8303892..0000000000
--- a/gnu/packages/patches/inkscape-poppler-0.76.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This patch adds support for Poppler 0.76 and later.
-
-Taken from upstream:
-<https://gitlab.com/inkscape/inkscape/commit/e831b034746f8dc3c3c1b88372751f6dcb974831>
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
-index 8484984bdf..4f798e35bf 100644
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -421,7 +421,7 @@ void PdfParser::parse(Object *obj, GBool topLevel) {
- 	error(errInternal, -1, "Weird page contents");
-     	return;
-   }
--  parser = new Parser(xref, new Lexer(xref, obj), gFalse);
-+  parser = new _POPPLER_NEW_PARSER(xref, obj);
-   go(topLevel);
-   delete parser;
-   parser = nullptr;
-diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
-index 61a15083a0..5e8bc4ae90 100644
---- a/src/extension/internal/pdfinput/poppler-transition-api.h
-+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
-@@ -14,6 +14,13 @@
- 
- #include <glib/poppler-features.h>
- 
-+#if POPPLER_CHECK_VERSION(0, 76, 0)
-+#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, obj, gFalse)
-+#else
-+#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, new Lexer(xref, obj), gFalse)
-+#endif
-+
-+
- #if POPPLER_CHECK_VERSION(0, 72, 0)
- #define getCString c_str
- #endif
diff --git a/gnu/packages/patches/libvirt-create-machine-cgroup.patch b/gnu/packages/patches/libvirt-create-machine-cgroup.patch
deleted file mode 100644
index 585ac237e1..0000000000
--- a/gnu/packages/patches/libvirt-create-machine-cgroup.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 9ca0b2955edea162b255b428e493cd8ffac52167 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
- <rosen644835@gmail.com>
-Date: Fri, 1 Nov 2019 17:29:00 +0100
-Subject: [PATCH] vircgroup: Ensure /machine group is associated with its
- parent.
-
-Call first virCgroupNew on the parent group virCgroupNewPartition if
-it is available on before the creation of the child group.  This
-ensures that the creation of a first level group on the unified
-architecture, as the check at virCgroupV2ParseControllersFile as the
-parent file is there.
-
-Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1760233
----
- src/util/vircgroup.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
-index b46f20abfd..33c61f2d45 100644
---- a/src/util/vircgroup.c
-+++ b/src/util/vircgroup.c
-@@ -855,9 +855,6 @@ virCgroupNewPartition(const char *path,
-     if (virCgroupSetPartitionSuffix(path, &newPath) < 0)
-         goto cleanup;
- 
--    if (virCgroupNew(-1, newPath, NULL, controllers, group) < 0)
--        goto cleanup;
--
-     if (STRNEQ(newPath, "/")) {
-         char *tmp;
-         parentPath = g_strdup(newPath);
-@@ -868,7 +865,12 @@ virCgroupNewPartition(const char *path,
- 
-         if (virCgroupNew(-1, parentPath, NULL, controllers, &parent) < 0)
-             goto cleanup;
-+    }
- 
-+    if (virCgroupNew(-1, newPath, parent, controllers, group) < 0)
-+        goto cleanup;
-+
-+    if (parent) {
-         if (virCgroupMakeGroup(parent, *group, create, VIR_CGROUP_NONE) < 0)
-             goto cleanup;
-     }
--- 
-2.23.0
-
diff --git a/gnu/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch b/gnu/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch
deleted file mode 100644
index 51ab544d5e..0000000000
--- a/gnu/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3a75704e99a118f2d8a4d70f07781558bde85770 Mon Sep 17 00:00:00 2001
-From: Jian-Hong Pan <jhp@endlessos.org>
-Date: Thu, 24 Sep 2020 14:30:43 +0800
-Subject: [PATCH] arm64: dts: rockchip: disable USB type-c DisplayPort
-
-The cdn-dp sub driver probes the device failed on PINEBOOK Pro.
-
-kernel: cdn-dp fec00000.dp: [drm:cdn_dp_probe [rockchipdrm]] *ERROR* missing extcon or phy
-kernel: cdn-dp: probe of fec00000.dp failed with error -22
-
-Then, the device halts all of the DRM related device jobs. For example,
-the operations: vop_component_ops, vop_component_ops and
-rockchip_dp_component_ops cannot be bound to corresponding devices. So,
-Xorg cannot find the correct DRM device.
-
-The USB type-C DisplayPort does not work for now. So, disable the
-DisplayPort node until the type-C phy work has been done.
-
-Link: https://patchwork.kernel.org/patch/11794141/#23639877
-Signed-off-by: Jian-Hong Pan <jhp@endlessos.org>
----
- arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-index 219b7507a10f..45769764425d 100644
---- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-@@ -380,7 +380,7 @@
- };
- 
- &cdn_dp {
--	status = "okay";
-+	status = "disabled";
- };
- 
- &cpu_b0 {
--- 
-2.30.2
-
diff --git a/gnu/packages/patches/marble-qt-add-qt-headers.patch b/gnu/packages/patches/marble-qt-add-qt-headers.patch
deleted file mode 100644
index 77c58317ad..0000000000
--- a/gnu/packages/patches/marble-qt-add-qt-headers.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-Adapted from Debian: https://salsa.debian.org/qt-kde-team/kde/marble/-/blob/debian/4%2517.08.3-3.1/debian/patches/qt5.11.patch
-Upstream status: Probably irrelevant, as this is an old version of this software.
-
-diff --git a/src/lib/marble/MergedLayerDecorator.cpp b/src/lib/marble/MergedLayerDecorator.cpp
-index 40f3ddb..bafff50 100644
---- a/src/lib/marble/MergedLayerDecorator.cpp
-+++ b/src/lib/marble/MergedLayerDecorator.cpp
-@@ -36,6 +36,7 @@
- 
- #include <QPointer>
- #include <QPainter>
-+#include <QPainterPath>
- 
- using namespace Marble;
- 
-diff --git a/src/lib/marble/VisiblePlacemark.cpp b/src/lib/marble/VisiblePlacemark.cpp
-index cfe08af..1a84006 100644
---- a/src/lib/marble/VisiblePlacemark.cpp
-+++ b/src/lib/marble/VisiblePlacemark.cpp
-@@ -22,6 +22,7 @@
- 
- #include <QApplication>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QPalette>
- #include <QPixmapCache>
- 
-diff --git a/src/lib/marble/graphicsview/FrameGraphicsItem.cpp b/src/lib/marble/graphicsview/FrameGraphicsItem.cpp
-index 8a90526..065f245 100644
---- a/src/lib/marble/graphicsview/FrameGraphicsItem.cpp
-+++ b/src/lib/marble/graphicsview/FrameGraphicsItem.cpp
-@@ -18,6 +18,7 @@
- // Qt
- #include <QSizeF>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QPixmapCache>
- #include <QMargins>
- #include <qdrawutil.h>
-diff --git a/src/lib/marble/layers/GroundLayer.cpp b/src/lib/marble/layers/GroundLayer.cpp
-index 58d409f..df6d226 100644
---- a/src/lib/marble/layers/GroundLayer.cpp
-+++ b/src/lib/marble/layers/GroundLayer.cpp
-@@ -14,6 +14,9 @@
- #include "ViewportParams.h"
- #include "RenderState.h"
- 
-+#include <QPainter>
-+#include <QPainterPath>
-+
- namespace Marble
- {
- 
-diff --git a/src/plugins/render/compass/CompassFloatItem.cpp b/src/plugins/render/compass/CompassFloatItem.cpp
-index d8dc021..66095cc 100644
---- a/src/plugins/render/compass/CompassFloatItem.cpp
-+++ b/src/plugins/render/compass/CompassFloatItem.cpp
-@@ -19,6 +19,7 @@
- #include <QRect>
- #include <QColor>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QPushButton>
- #include <QSvgRenderer>
- 
-diff --git a/src/plugins/render/elevationprofilefloatitem/ElevationProfileFloatItem.cpp b/src/plugins/render/elevationprofilefloatitem/ElevationProfileFloatItem.cpp
-index a790c16..96f5bed 100644
---- a/src/plugins/render/elevationprofilefloatitem/ElevationProfileFloatItem.cpp
-+++ b/src/plugins/render/elevationprofilefloatitem/ElevationProfileFloatItem.cpp
-@@ -31,6 +31,7 @@
- #include <QContextMenuEvent>
- #include <QRect>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QPushButton>
- #include <QMenu>
- #include <QMouseEvent>
-diff --git a/src/plugins/render/foursquare/FoursquareItem.cpp b/src/plugins/render/foursquare/FoursquareItem.cpp
-index d9e1f57..ef80472 100644
---- a/src/plugins/render/foursquare/FoursquareItem.cpp
-+++ b/src/plugins/render/foursquare/FoursquareItem.cpp
-@@ -13,6 +13,8 @@
- #include "ViewportParams.h"
- 
- #include <QFontMetrics>
-+#include <QPainter>
-+#include <QPainterPath>
-  
- namespace Marble
- {
-diff --git a/src/plugins/render/gpsinfo/GpsInfo.cpp b/src/plugins/render/gpsinfo/GpsInfo.cpp
-index 522e907..20fd75a 100644
---- a/src/plugins/render/gpsinfo/GpsInfo.cpp
-+++ b/src/plugins/render/gpsinfo/GpsInfo.cpp
-@@ -21,6 +21,8 @@
- #include "ViewportParams.h"
- #include "GeoDataAccuracy.h"
- 
-+#include <QIcon>
-+
- namespace Marble
- {
- 
-diff --git a/src/plugins/render/license/License.cpp b/src/plugins/render/license/License.cpp
-index 511dfc0..9436083 100644
---- a/src/plugins/render/license/License.cpp
-+++ b/src/plugins/render/license/License.cpp
-@@ -23,6 +23,7 @@
- #include <QCommonStyle>
- #include <QContextMenuEvent>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QLabel>
- #include <QMenu>
- #include <QMouseEvent>
-diff --git a/src/plugins/render/notes/NotesItem.cpp b/src/plugins/render/notes/NotesItem.cpp
-index 9d0961f..0c9fe99 100644
---- a/src/plugins/render/notes/NotesItem.cpp
-+++ b/src/plugins/render/notes/NotesItem.cpp
-@@ -9,6 +9,7 @@
- #include "MarbleDirs.h"
- 
- #include <QPainter>
-+#include <QPainterPath>
- #include <QRect>
- 
- using namespace Marble;
-diff --git a/src/plugins/render/postalcode/PostalCodeItem.cpp b/src/plugins/render/postalcode/PostalCodeItem.cpp
-index 772c0b2..0ff7957 100644
---- a/src/plugins/render/postalcode/PostalCodeItem.cpp
-+++ b/src/plugins/render/postalcode/PostalCodeItem.cpp
-@@ -17,6 +17,7 @@
- // Qt
- #include <QFontMetrics>
- #include <QPainter>
-+#include <QPainterPath>
- 
- using namespace Marble;
- 
-diff --git a/src/plugins/render/progress/ProgressFloatItem.cpp b/src/plugins/render/progress/ProgressFloatItem.cpp
-index a465857..6e2452c 100644
---- a/src/plugins/render/progress/ProgressFloatItem.cpp
-+++ b/src/plugins/render/progress/ProgressFloatItem.cpp
-@@ -22,6 +22,7 @@
- #include <QColor>
- #include <QPaintDevice>
- #include <QPainter>
-+#include <QPainterPath>
- 
- namespace Marble
- {
-diff --git a/src/plugins/render/satellites/SatellitesPlugin.cpp b/src/plugins/render/satellites/SatellitesPlugin.cpp
-index 04d8321..0a43d24 100644
---- a/src/plugins/render/satellites/SatellitesPlugin.cpp
-+++ b/src/plugins/render/satellites/SatellitesPlugin.cpp
-@@ -25,6 +25,7 @@
- 
- #include "ui_SatellitesConfigDialog.h"
- 
-+#include <QAction>
- #include <QUrl>
- #include <QMouseEvent>
- 
-diff --git a/src/plugins/render/speedometer/Speedometer.cpp b/src/plugins/render/speedometer/Speedometer.cpp
-index 6e9c532..f40a174 100644
---- a/src/plugins/render/speedometer/Speedometer.cpp
-+++ b/src/plugins/render/speedometer/Speedometer.cpp
-@@ -19,6 +19,8 @@
- #include "MarbleGraphicsGridLayout.h"
- #include "ViewportParams.h"
- 
-+#include <QIcon>
-+
- namespace Marble
- {
- 
-diff --git a/src/plugins/render/stars/StarsPlugin.cpp b/src/plugins/render/stars/StarsPlugin.cpp
-index 6599545..482680f 100644
---- a/src/plugins/render/stars/StarsPlugin.cpp
-+++ b/src/plugins/render/stars/StarsPlugin.cpp
-@@ -19,6 +19,8 @@
- #include <QContextMenuEvent>
- #include <QMenu>
- #include <QColorDialog>
-+#include <QPainter>
-+#include <QPainterPath>
- #include <qmath.h>
- 
- #include "MarbleClock.h"
diff --git a/gnu/packages/patches/mariadb-link-libatomic.patch b/gnu/packages/patches/mariadb-link-libatomic.patch
new file mode 100644
index 0000000000..f331067b6e
--- /dev/null
+++ b/gnu/packages/patches/mariadb-link-libatomic.patch
@@ -0,0 +1,83 @@
+https://github.com/MariaDB/server/commit/f502ccbcb5dfce29067434885a23db8d1bd5f134.patch
+This was apparently merged in 10.8.2.
+
+From f502ccbcb5dfce29067434885a23db8d1bd5f134 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= <cvicentiu@gmail.com>
+Date: Fri, 15 Oct 2021 16:51:05 +0300
+Subject: [PATCH] Link with libatomic to enable C11 atomics support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some architectures (mips) require libatomic to support proper
+atomic operations. Check first if support is available without
+linking, otherwise use the library.
+
+Contributors:
+James Cowgill <jcowgill@debian.org>
+Jessica Clarke <jrtc27@debian.org>
+Vicențiu Ciorbaru <vicentiu@mariadb.org>
+---
+ configure.cmake      | 20 +++++++++++++++++++-
+ mysys/CMakeLists.txt |  4 ++++
+ sql/CMakeLists.txt   |  1 -
+ 3 files changed, 23 insertions(+), 2 deletions(-)
+
+diff --git a/configure.cmake b/configure.cmake
+index 7a1369d77703f..db8742bb93b5a 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -895,7 +895,25 @@ int main()
+   long long int *ptr= &var;
+   return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+ }"
+-HAVE_GCC_C11_ATOMICS)
++HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  SET(HAVE_GCC_C11_ATOMICS True)
++ELSE()
++  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++  CHECK_CXX_SOURCE_COMPILES("
++  int main()
++  {
++    long long int var= 1;
++    long long int *ptr= &var;
++    return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++  }"
++  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ENDIF()
++  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++ENDIF()
+ 
+ IF(WITH_VALGRIND)
+   SET(HAVE_valgrind 1)
+diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
+index f97e3b4d3904c..09d3f726ffc74 100644
+--- a/mysys/CMakeLists.txt
++++ b/mysys/CMakeLists.txt
+@@ -78,6 +78,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
+  ${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
+ DTRACE_INSTRUMENT(mysys)
+ 
++IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index 5f5d7daf1a5bc..f574f1f20295d 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -307,7 +307,6 @@ IF(WITH_MYSQLD_LDFLAGS)
+      "${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
+ ENDIF()
+ 
+-
+ FIND_PACKAGE(BISON 2.0)
+ 
+ 
diff --git a/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch b/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch
deleted file mode 100644
index 98a0c8a395..0000000000
--- a/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From eccc46eaf7903a8e837813795498b12c078faaea Mon Sep 17 00:00:00 2001
-From: Julien Lepiller <julien@lepiller.eu>
-Date: Wed, 11 Mar 2020 21:53:32 +0100
-Subject: [PATCH] Fix old dependencies
-
----
- .../enforcer/AbstractBanDependencies.java     |  2 +-
- .../enforcer/BanTransitiveDependencies.java   |  2 +-
- .../enforcer/DependencyConvergence.java       | 17 ++++++++---------
- .../enforcer/RequireUpperBoundDeps.java       | 19 +++++++++----------
- .../enforcer/utils/DependencyVersionMap.java  |  6 +++---
- 5 files changed, 22 insertions(+), 24 deletions(-)
-
-diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
-index 2888a61..2b944b7 100644
---- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
-+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
-@@ -119,7 +119,7 @@ public abstract class AbstractBanDependencies
-         Set<Artifact> dependencies = null;
-         try
-         {
--            DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
-+            DependencyNode node = graphBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), null );
-             if ( searchTransitive )
-             {
-                 dependencies = ArtifactUtils.getAllDescendants( node );
-diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
-index 6e1dcd4..1b964ba 100644
---- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
-+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
-@@ -158,7 +158,7 @@ public class BanTransitiveDependencies
-         try
-         {
-             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
--            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project, null );
-+            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project.getProjectBuildingRequest(), null );
-         }
-         catch ( Exception e )
-         {
-diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
-index 684f984..ca7ad3a 100644
---- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
-+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
-@@ -35,9 +35,9 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
- import org.apache.maven.plugin.logging.Log;
- import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
- import org.apache.maven.project.MavenProject;
--import org.apache.maven.shared.dependency.tree.DependencyNode;
--import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
--import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
-+import org.apache.maven.shared.dependency.graph.DependencyNode;
-+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
-+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
- import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
- import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
- 
-@@ -60,7 +60,7 @@ public class DependencyConvergence
-     // CHECKSTYLE_OFF: LineLength
-     /**
-      * Uses the {@link EnforcerRuleHelper} to populate the values of the
--     * {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
-+     * {@link DependencyGraphBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
-      * factory method. <br/>
-      * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
-      * 
-@@ -75,16 +75,15 @@ public class DependencyConvergence
-         try
-         {
-             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
--            DependencyTreeBuilder dependencyTreeBuilder =
--                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
-+            DependencyGraphBuilder dependencyTreeBuilder =
-+                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
-             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
-             ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
-             ArtifactMetadataSource metadataSource =
-                 (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
-             ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
-             ArtifactFilter filter = null; // we need to evaluate all scopes
--            DependencyNode node = dependencyTreeBuilder.buildDependencyTree( project, repository, factory,
--                                                                             metadataSource, filter, collector );
-+            DependencyNode node = dependencyTreeBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), filter);
-             return node;
-         }
-         catch ( ExpressionEvaluationException e )
-@@ -95,7 +94,7 @@ public class DependencyConvergence
-         {
-             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
-         }
--        catch ( DependencyTreeBuilderException e )
-+        catch ( DependencyGraphBuilderException e )
-         {
-             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
-         }
-diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
-index 458554a..2de9870 100644
---- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
-+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
-@@ -38,10 +38,10 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
- import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
- import org.apache.maven.plugin.logging.Log;
- import org.apache.maven.project.MavenProject;
--import org.apache.maven.shared.dependency.tree.DependencyNode;
--import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
--import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
--import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
-+import org.apache.maven.shared.dependency.graph.DependencyNode;
-+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
-+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
-+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
- import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
- import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
- 
-@@ -91,7 +91,7 @@ public class RequireUpperBoundDeps
-     // CHECKSTYLE_OFF: LineLength
-     /**
-      * Uses the {@link EnforcerRuleHelper} to populate the values of the
--     * {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
-+     * {@link DependencyGraphBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
-      * factory method. <br/>
-      * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
-      * 
-@@ -106,8 +106,8 @@ public class RequireUpperBoundDeps
-         try
-         {
-             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
--            DependencyTreeBuilder dependencyTreeBuilder =
--                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
-+            DependencyGraphBuilder dependencyTreeBuilder =
-+                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
-             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
-             ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
-             ArtifactMetadataSource metadataSource =
-@@ -115,8 +115,7 @@ public class RequireUpperBoundDeps
-             ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
-             ArtifactFilter filter = null; // we need to evaluate all scopes
-             DependencyNode node =
--                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
--                                                           collector );
-+                dependencyTreeBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), filter);
-             return node;
-         }
-         catch ( ExpressionEvaluationException e )
-@@ -127,7 +126,7 @@ public class RequireUpperBoundDeps
-         {
-             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
-         }
--        catch ( DependencyTreeBuilderException e )
-+        catch ( DependencyGraphBuilderException e )
-         {
-             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
-         }
-diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
-index b6213fa..2c2a645 100644
---- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
-+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
-@@ -26,8 +26,8 @@ import java.util.Map;
- 
- import org.apache.maven.artifact.Artifact;
- import org.apache.maven.plugin.logging.Log;
--import org.apache.maven.shared.dependency.tree.DependencyNode;
--import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
-+import org.apache.maven.shared.dependency.graph.DependencyNode;
-+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
- 
- /**
-  * @author Brian Fox
-@@ -132,4 +132,4 @@ public class DependencyVersionMap
-         }
-         return output;
-     }
--}
-\ No newline at end of file
-+}
--- 
-2.24.1
-
diff --git a/gnu/packages/patches/mescc-tools-boot.patch b/gnu/packages/patches/mescc-tools-boot.patch
deleted file mode 100644
index 2bce8a49c2..0000000000
--- a/gnu/packages/patches/mescc-tools-boot.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From c184e95096881a13f29ebd7fc507fe305d3d8de5 Mon Sep 17 00:00:00 2001
-From: Jan Nieuwenhuizen <janneke@gnu.org>
-Date: Thu, 4 Oct 2018 22:03:31 +0200
-Subject: [PATCH] build.sh: Update for mes 0.18.
-
----
- build.sh   | 92 +++++++++++++++++++++++++++++++++++++-----------------
- install.sh |  6 ++--
- 2 files changed, 66 insertions(+), 32 deletions(-)
-
-diff --git a/build.sh b/build.sh
-index 335a7bb..19a0029 100755
---- a/build.sh
-+++ b/build.sh
-@@ -18,7 +18,8 @@
- # along with mescc-tools.  If not, see <http://www.gnu.org/licenses/>.
- 
- set -eux
--MES_SEED=${MES_SEED-../mescc-tools-seed/libs}
-+MES_PREFIX=${MES_PREFIX-../mes}
-+MES_SEED=${MES_SEED-../mes-seed}
- MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed}
- 
- #########################################
-@@ -32,15 +33,23 @@ MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed}
- # blood-elf
- # Create proper debug segment
- $MESCC_TOOLS_SEED/blood-elf\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/blood-elf.M1\
-     -o blood-elf-blood-elf-footer.M1
- 
- # Build
- # M1-macro phase
- $MESCC_TOOLS_SEED/M1 --LittleEndian --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/blood-elf.M1\
-     -f blood-elf-blood-elf-footer.M1\
-     -o blood-elf.hex2
-@@ -49,7 +58,7 @@ $MESCC_TOOLS_SEED/hex2\
-     --LittleEndian\
-     --Architecture 1\
-     --BaseAddress 0x1000000\
--    -f $MES_SEED/elf32-header.hex2\
-+    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-     -f blood-elf.hex2\
-     --exec_enable\
-     -o bin/blood-elf
-@@ -65,9 +74,13 @@ $MESCC_TOOLS_SEED/hex2\
- $MESCC_TOOLS_SEED/M1 \
-     --LittleEndian\
-     --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/M1.M1\
-     -f M1-footer.M1\
-     -o M1.hex2
-@@ -76,7 +89,7 @@ $MESCC_TOOLS_SEED/hex2 \
-     --LittleEndian\
-     --Architecture 1\
-     --BaseAddress 0x1000000\
--    -f $MES_SEED/elf32-header.hex2\
-+    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-     -f M1.hex2\
-     --exec_enable\
-     -o bin/M1
-@@ -92,9 +105,13 @@ $MESCC_TOOLS_SEED/hex2 \
- ./bin/M1 \
-     --LittleEndian\
-     --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/hex2.M1\
-     -f hex2-footer.M1\
-     -o hex2.hex2
-@@ -103,10 +120,10 @@ $MESCC_TOOLS_SEED/hex2 \
-       --LittleEndian\
-       --Architecture 1\
-       --BaseAddress 0x1000000\
--      -f $MES_SEED/elf32-header.hex2\
-+      -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-       -f hex2.hex2\
-       --exec_enable\
--      -o bin/hex2
-+      -o bin/hex2-0
- 
- #########################
- # Phase-1 Self-host     #
-@@ -123,18 +140,22 @@ $MESCC_TOOLS_SEED/hex2 \
- ./bin/M1 \
-     --LittleEndian\
-     --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/blood-elf.M1\
-     -f blood-elf-blood-elf-footer.M1\
-     -o blood-elf.hex2
- # Hex2-linker phase
--./bin/hex2 \
-+./bin/hex2-0 \
-     --LittleEndian\
-     --Architecture 1\
-     --BaseAddress 0x1000000\
--    -f $MES_SEED/elf32-header.hex2\
-+    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-     -f blood-elf.hex2\
-     --exec_enable\
-     -o blood-elf
-@@ -150,18 +171,22 @@ $MESCC_TOOLS_SEED/hex2 \
- ./bin/M1 \
-     --LittleEndian\
-     --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/M1.M1\
-     -f M1-footer.M1\
-     -o M1.hex2
- # Hex2-linker phase
--./bin/hex2 \
-+./bin/hex2-0 \
-     --LittleEndian\
-     --Architecture 1\
-     --BaseAddress 0x1000000\
--    -f $MES_SEED/elf32-header.hex2\
-+    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-     -f M1.hex2\
-     --exec_enable\
-     -o bin/M1
-@@ -177,18 +202,27 @@ $MESCC_TOOLS_SEED/hex2 \
- ./bin/M1 \
-     --LittleEndian\
-     --Architecture 1\
--    -f $MES_SEED/x86.M1\
--    -f $MES_SEED/crt1.M1\
--    -f $MES_SEED/libc+tcc-mes.M1\
-+    -f $MES_PREFIX/lib/x86-mes/x86.M1\
-+    -f $MES_SEED/x86-mes/crt1.S\
-+    -f $MES_SEED/x86-mes/libc+tcc.S\
-+    -f $MESCC_TOOLS_SEED/file_print.M1\
-+    -f $MESCC_TOOLS_SEED/match.M1\
-+    -f $MESCC_TOOLS_SEED/numerate_number.M1\
-+    -f $MESCC_TOOLS_SEED/string.M1\
-     -f $MESCC_TOOLS_SEED/hex2.M1\
-     -f hex2-footer.M1\
-     -o hex2.hex2
- # Hex2-linker phase
--./bin/hex2 \
-+./bin/hex2-0 \
-       --LittleEndian\
-       --Architecture 1\
-       --BaseAddress 0x1000000\
--      -f $MES_SEED/elf32-header.hex2\
-+      -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
-       -f hex2.hex2\
-       --exec_enable\
-       -o bin/hex2
-+
-+# TODO
-+touch bin/exec_enable
-+touch bin/get_machine
-+touch bin/kaem
-diff --git a/install.sh b/install.sh
-index e4dccff..29e58d6 100644
---- a/install.sh
-+++ b/install.sh
-@@ -18,6 +18,6 @@
- PREFIX=${PREFIX-usr}
- 
- mkdir -p "$PREFIX/bin"
--cp blood-elf "$PREFIX/bin/blood-elf"
--cp hex2 "$PREFIX/bin/hex2"
--cp M1 "$PREFIX/bin/M1"
-+cp bin/blood-elf "$PREFIX/bin/blood-elf"
-+cp bin/hex2 "$PREFIX/bin/hex2"
-+cp bin/M1 "$PREFIX/bin/M1"
--- 
-2.18.0
-
diff --git a/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt1.patch b/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt1.patch
deleted file mode 100644
index 4343c87795..0000000000
--- a/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt1.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-Copied from upstream nettle git repository.
-Removed changes to ChangeLog, to allow this patch to apply to nettle-3.5.
-
-From 485b5e2820a057e873b1ba812fdb39cae4adf98c Mon Sep 17 00:00:00 2001
-From: Niels Möller <nisse@lysator.liu.se>
-Date: Mon, 17 May 2021 20:55:26 +0200
-Subject: [PATCH 1/2] Change _rsa_sec_compute_root_tr to take a fix input size.
-
-Improves consistency with _rsa_sec_compute_root, and fixes zero-input bug.
----
- ChangeLog                    | 15 +++++++++
- rsa-decrypt-tr.c             |  7 ++---
- rsa-internal.h               |  4 +--
- rsa-sec-decrypt.c            |  9 ++++--
- rsa-sign-tr.c                | 61 +++++++++++++++++-------------------
- testsuite/rsa-encrypt-test.c | 14 ++++++++-
- 6 files changed, 68 insertions(+), 42 deletions(-)
-
-diff --git a/rsa-decrypt-tr.c b/rsa-decrypt-tr.c
-index 0224c0b7..927a8915 100644
---- a/rsa-decrypt-tr.c
-+++ b/rsa-decrypt-tr.c
-@@ -52,14 +52,13 @@ rsa_decrypt_tr(const struct rsa_public_key *pub,
-   mp_size_t key_limb_size;
-   int res;
- 
--  key_limb_size = NETTLE_OCTET_SIZE_TO_LIMB_SIZE(key->size);
-+  key_limb_size = mpz_size(pub->n);
- 
-   TMP_GMP_ALLOC (m, key_limb_size);
-   TMP_GMP_ALLOC (em, key->size);
-+  mpz_limbs_copy(m, gibberish, key_limb_size);
- 
--  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, m,
--				  mpz_limbs_read(gibberish),
--				  mpz_size(gibberish));
-+  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, m, m);
- 
-   mpn_get_base256 (em, key->size, m, key_limb_size);
- 
-diff --git a/rsa-internal.h b/rsa-internal.h
-index b828e451..f66a7df0 100644
---- a/rsa-internal.h
-+++ b/rsa-internal.h
-@@ -78,11 +78,11 @@ _rsa_sec_compute_root(const struct rsa_private_key *key,
-                       mp_limb_t *scratch);
- 
- /* Safe side-channel silent variant, using RSA blinding, and checking the
-- * result after CRT. */
-+ * result after CRT. In-place calls, with x == m, is allowed. */
- int
- _rsa_sec_compute_root_tr(const struct rsa_public_key *pub,
- 			 const struct rsa_private_key *key,
- 			 void *random_ctx, nettle_random_func *random,
--			 mp_limb_t *x, const mp_limb_t *m, size_t mn);
-+			 mp_limb_t *x, const mp_limb_t *m);
- 
- #endif /* NETTLE_RSA_INTERNAL_H_INCLUDED */
-diff --git a/rsa-sec-decrypt.c b/rsa-sec-decrypt.c
-index 6866e7c8..fc4757a0 100644
---- a/rsa-sec-decrypt.c
-+++ b/rsa-sec-decrypt.c
-@@ -58,9 +58,12 @@ rsa_sec_decrypt(const struct rsa_public_key *pub,
-   TMP_GMP_ALLOC (m, mpz_size(pub->n));
-   TMP_GMP_ALLOC (em, key->size);
- 
--  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, m,
--				  mpz_limbs_read(gibberish),
--				  mpz_size(gibberish));
-+  /* We need a copy because m can be shorter than key_size,
-+   * but _rsa_sec_compute_root_tr expect all inputs to be
-+   * normalized to a key_size long buffer length */
-+  mpz_limbs_copy(m, gibberish, mpz_size(pub->n));
-+
-+  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, m, m);
- 
-   mpn_get_base256 (em, key->size, m, mpz_size(pub->n));
- 
-diff --git a/rsa-sign-tr.c b/rsa-sign-tr.c
-index f824c4ca..9e137c7a 100644
---- a/rsa-sign-tr.c
-+++ b/rsa-sign-tr.c
-@@ -131,35 +131,34 @@ int
- _rsa_sec_compute_root_tr(const struct rsa_public_key *pub,
- 			 const struct rsa_private_key *key,
- 			 void *random_ctx, nettle_random_func *random,
--			 mp_limb_t *x, const mp_limb_t *m, size_t mn)
-+			 mp_limb_t *x, const mp_limb_t *m)
- {
-+  mp_size_t nn;
-   mpz_t mz;
-   mpz_t xz;
-   int res;
- 
--  mpz_init(mz);
-   mpz_init(xz);
- 
--  mpn_copyi(mpz_limbs_write(mz, mn), m, mn);
--  mpz_limbs_finish(mz, mn);
-+  nn = mpz_size (pub->n);
- 
--  res = rsa_compute_root_tr(pub, key, random_ctx, random, xz, mz);
-+  res = rsa_compute_root_tr(pub, key, random_ctx, random, xz,
-+			    mpz_roinit_n(mz, m, nn));
- 
-   if (res)
--    mpz_limbs_copy(x, xz, mpz_size(pub->n));
-+    mpz_limbs_copy(x, xz, nn);
- 
--  mpz_clear(mz);
-   mpz_clear(xz);
-   return res;
- }
- #else
- /* Blinds m, by computing c = m r^e (mod n), for a random r. Also
--   returns the inverse (ri), for use by rsa_unblind. */
-+   returns the inverse (ri), for use by rsa_unblind. Must have c != m,
-+   no in-place operation.*/
- static void
- rsa_sec_blind (const struct rsa_public_key *pub,
-                void *random_ctx, nettle_random_func *random,
--               mp_limb_t *c, mp_limb_t *ri, const mp_limb_t *m,
--               mp_size_t mn)
-+               mp_limb_t *c, mp_limb_t *ri, const mp_limb_t *m)
- {
-   const mp_limb_t *ep = mpz_limbs_read (pub->e);
-   const mp_limb_t *np = mpz_limbs_read (pub->n);
-@@ -177,15 +176,15 @@ rsa_sec_blind (const struct rsa_public_key *pub,
- 
-   /* c = m*(r^e) mod n */
-   itch = mpn_sec_powm_itch(nn, ebn, nn);
--  i2 = mpn_sec_mul_itch(nn, mn);
-+  i2 = mpn_sec_mul_itch(nn, nn);
-   itch = MAX(itch, i2);
--  i2 = mpn_sec_div_r_itch(nn + mn, nn);
-+  i2 = mpn_sec_div_r_itch(2*nn, nn);
-   itch = MAX(itch, i2);
-   i2 = mpn_sec_invert_itch(nn);
-   itch = MAX(itch, i2);
- 
--  TMP_GMP_ALLOC (tp, nn + mn + itch);
--  scratch = tp + nn + mn;
-+  TMP_GMP_ALLOC (tp, 2*nn  + itch);
-+  scratch = tp + 2*nn;
- 
-   /* ri = r^(-1) */
-   do
-@@ -198,9 +197,8 @@ rsa_sec_blind (const struct rsa_public_key *pub,
-   while (!mpn_sec_invert (ri, tp, np, nn, 2 * nn * GMP_NUMB_BITS, scratch));
- 
-   mpn_sec_powm (c, rp, nn, ep, ebn, np, nn, scratch);
--  /* normally mn == nn, but m can be smaller in some cases */
--  mpn_sec_mul (tp, c, nn, m, mn, scratch);
--  mpn_sec_div_r (tp, nn + mn, np, nn, scratch);
-+  mpn_sec_mul (tp, c, nn, m, nn, scratch);
-+  mpn_sec_div_r (tp, 2*nn, np, nn, scratch);
-   mpn_copyi(c, tp, nn);
- 
-   TMP_GMP_FREE (r);
-@@ -208,7 +206,7 @@ rsa_sec_blind (const struct rsa_public_key *pub,
-   TMP_GMP_FREE (tp);
- }
- 
--/* m = c ri mod n */
-+/* m = c ri mod n. Allows x == c. */
- static void
- rsa_sec_unblind (const struct rsa_public_key *pub,
-                  mp_limb_t *x, mp_limb_t *ri, const mp_limb_t *c)
-@@ -299,7 +297,7 @@ int
- _rsa_sec_compute_root_tr(const struct rsa_public_key *pub,
- 			 const struct rsa_private_key *key,
- 			 void *random_ctx, nettle_random_func *random,
--			 mp_limb_t *x, const mp_limb_t *m, size_t mn)
-+			 mp_limb_t *x, const mp_limb_t *m)
- {
-   TMP_GMP_DECL (c, mp_limb_t);
-   TMP_GMP_DECL (ri, mp_limb_t);
-@@ -307,7 +305,7 @@ _rsa_sec_compute_root_tr(const struct rsa_public_key *pub,
-   size_t key_limb_size;
-   int ret;
- 
--  key_limb_size = NETTLE_OCTET_SIZE_TO_LIMB_SIZE(key->size);
-+  key_limb_size = mpz_size(pub->n);
- 
-   /* mpz_powm_sec handles only odd moduli. If p, q or n is even, the
-      key is invalid and rejected by rsa_private_key_prepare. However,
-@@ -321,19 +319,18 @@ _rsa_sec_compute_root_tr(const struct rsa_public_key *pub,
-     }
- 
-   assert(mpz_size(pub->n) == key_limb_size);
--  assert(mn <= key_limb_size);
- 
-   TMP_GMP_ALLOC (c, key_limb_size);
-   TMP_GMP_ALLOC (ri, key_limb_size);
-   TMP_GMP_ALLOC (scratch, _rsa_sec_compute_root_itch(key));
- 
--  rsa_sec_blind (pub, random_ctx, random, x, ri, m, mn);
-+  rsa_sec_blind (pub, random_ctx, random, c, ri, m);
- 
--  _rsa_sec_compute_root(key, c, x, scratch);
-+  _rsa_sec_compute_root(key, x, c, scratch);
- 
--  ret = rsa_sec_check_root(pub, c, x);
-+  ret = rsa_sec_check_root(pub, x, c);
- 
--  rsa_sec_unblind(pub, x, ri, c);
-+  rsa_sec_unblind(pub, x, ri, x);
- 
-   cnd_mpn_zero(1 - ret, x, key_limb_size);
- 
-@@ -357,17 +354,17 @@ rsa_compute_root_tr(const struct rsa_public_key *pub,
- 		    mpz_t x, const mpz_t m)
- {
-   TMP_GMP_DECL (l, mp_limb_t);
-+  mp_size_t nn = mpz_size(pub->n);
-   int res;
- 
--  mp_size_t l_size = NETTLE_OCTET_SIZE_TO_LIMB_SIZE(key->size);
--  TMP_GMP_ALLOC (l, l_size);
-+  TMP_GMP_ALLOC (l, nn);
-+  mpz_limbs_copy(l, m, nn);
- 
--  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, l,
--				  mpz_limbs_read(m), mpz_size(m));
-+  res = _rsa_sec_compute_root_tr (pub, key, random_ctx, random, l, l);
-   if (res) {
--    mp_limb_t *xp = mpz_limbs_write (x, l_size);
--    mpn_copyi (xp, l, l_size);
--    mpz_limbs_finish (x, l_size);
-+    mp_limb_t *xp = mpz_limbs_write (x, nn);
-+    mpn_copyi (xp, l, nn);
-+    mpz_limbs_finish (x, nn);
-   }
- 
-   TMP_GMP_FREE (l);
-diff --git a/testsuite/rsa-encrypt-test.c b/testsuite/rsa-encrypt-test.c
-index 87525f78..d3bc374b 100644
---- a/testsuite/rsa-encrypt-test.c
-+++ b/testsuite/rsa-encrypt-test.c
-@@ -19,6 +19,7 @@ test_main(void)
-   uint8_t after;
- 
-   mpz_t gibberish;
-+  mpz_t zero;
- 
-   rsa_private_key_init(&key);
-   rsa_public_key_init(&pub);
-@@ -101,6 +102,17 @@ test_main(void)
-   ASSERT(decrypted[decrypted_length] == after);
-   ASSERT(decrypted[0] == 'A');
- 
-+  /* Test zero input. */
-+  mpz_init_set_ui (zero, 0);
-+  decrypted_length = msg_length;
-+  ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, zero));
-+  ASSERT(!rsa_decrypt_tr(&pub, &key,
-+			 &lfib, (nettle_random_func *) knuth_lfib_random,
-+			 &decrypted_length, decrypted, zero));
-+  ASSERT(!rsa_sec_decrypt(&pub, &key,
-+			  &lfib, (nettle_random_func *) knuth_lfib_random,
-+			  decrypted_length, decrypted, zero));
-+  ASSERT(decrypted_length == msg_length);
- 
-   /* Test invalid key. */
-   mpz_add_ui (key.q, key.q, 2);
-@@ -112,6 +124,6 @@ test_main(void)
-   rsa_private_key_clear(&key);
-   rsa_public_key_clear(&pub);
-   mpz_clear(gibberish);
-+  mpz_clear(zero);
-   free(decrypted);
- }
--  
--- 
-2.31.1
-
diff --git a/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch b/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch
deleted file mode 100644
index 5f19bd80d3..0000000000
--- a/gnu/packages/patches/nettle-3.5-CVE-2021-3580-pt2.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-Copied from upstream nettle git repository.
-Removed changes to ChangeLog, to allow this patch to apply to nettle-3.5.
-
-From 0ad0b5df315665250dfdaa4a1e087f4799edaefe Mon Sep 17 00:00:00 2001
-From: Niels Möller <nisse@lysator.liu.se>
-Date: Mon, 17 May 2021 22:02:47 +0200
-Subject: [PATCH 2/2] Add input check to rsa_decrypt family of functions.
-
----
- ChangeLog                    |  8 ++++++++
- rsa-decrypt-tr.c             |  4 ++++
- rsa-decrypt.c                | 10 ++++++++++
- rsa-sec-decrypt.c            |  4 ++++
- rsa.h                        |  5 +++--
- testsuite/rsa-encrypt-test.c | 38 ++++++++++++++++++++++++++++++------
- 6 files changed, 61 insertions(+), 8 deletions(-)
-
-diff --git a/rsa-decrypt-tr.c b/rsa-decrypt-tr.c
-index 927a8915..4a9e9d74 100644
---- a/rsa-decrypt-tr.c
-+++ b/rsa-decrypt-tr.c
-@@ -52,6 +52,10 @@ rsa_decrypt_tr(const struct rsa_public_key *pub,
-   mp_size_t key_limb_size;
-   int res;
- 
-+  /* First check that input is in range. */
-+  if (mpz_sgn (gibberish) < 0 || mpz_cmp (gibberish, pub->n) >= 0)
-+    return 0;
-+
-   key_limb_size = mpz_size(pub->n);
- 
-   TMP_GMP_ALLOC (m, key_limb_size);
-diff --git a/rsa-decrypt.c b/rsa-decrypt.c
-index 7681439d..540d8baa 100644
---- a/rsa-decrypt.c
-+++ b/rsa-decrypt.c
-@@ -48,6 +48,16 @@ rsa_decrypt(const struct rsa_private_key *key,
-   int res;
- 
-   mpz_init(m);
-+
-+  /* First check that input is in range. Since we don't have the
-+     public key available here, we need to reconstruct n. */
-+  mpz_mul (m, key->p, key->q);
-+  if (mpz_sgn (gibberish) < 0 || mpz_cmp (gibberish, m) >= 0)
-+    {
-+      mpz_clear (m);
-+      return 0;
-+    }
-+
-   rsa_compute_root(key, m, gibberish);
- 
-   res = pkcs1_decrypt (key->size, m, length, message);
-diff --git a/rsa-sec-decrypt.c b/rsa-sec-decrypt.c
-index fc4757a0..4c98958d 100644
---- a/rsa-sec-decrypt.c
-+++ b/rsa-sec-decrypt.c
-@@ -55,6 +55,10 @@ rsa_sec_decrypt(const struct rsa_public_key *pub,
-   TMP_GMP_DECL (em, uint8_t);
-   int res;
- 
-+  /* First check that input is in range. */
-+  if (mpz_sgn (gibberish) < 0 || mpz_cmp (gibberish, pub->n) >= 0)
-+    return 0;
-+
-   TMP_GMP_ALLOC (m, mpz_size(pub->n));
-   TMP_GMP_ALLOC (em, key->size);
- 
-diff --git a/rsa.h b/rsa.h
-index 3b10155f..2dd35a2d 100644
---- a/rsa.h
-+++ b/rsa.h
-@@ -428,13 +428,14 @@ rsa_sec_decrypt(const struct rsa_public_key *pub,
- 	        size_t length, uint8_t *message,
- 	        const mpz_t gibberish);
- 
--/* Compute x, the e:th root of m. Calling it with x == m is allowed. */
-+/* Compute x, the e:th root of m. Calling it with x == m is allowed.
-+   It is required that 0 <= m < n. */
- void
- rsa_compute_root(const struct rsa_private_key *key,
- 		 mpz_t x, const mpz_t m);
- 
- /* Safer variant, using RSA blinding, and checking the result after
--   CRT. */
-+   CRT. It is required that 0 <= m < n. */
- int
- rsa_compute_root_tr(const struct rsa_public_key *pub,
- 		    const struct rsa_private_key *key,
-diff --git a/testsuite/rsa-encrypt-test.c b/testsuite/rsa-encrypt-test.c
-index d3bc374b..d1a440f6 100644
---- a/testsuite/rsa-encrypt-test.c
-+++ b/testsuite/rsa-encrypt-test.c
-@@ -19,11 +19,12 @@ test_main(void)
-   uint8_t after;
- 
-   mpz_t gibberish;
--  mpz_t zero;
-+  mpz_t bad_input;
- 
-   rsa_private_key_init(&key);
-   rsa_public_key_init(&pub);
-   mpz_init(gibberish);
-+  mpz_init(bad_input);
- 
-   knuth_lfib_init(&lfib, 17);
-   
-@@ -103,15 +104,40 @@ test_main(void)
-   ASSERT(decrypted[0] == 'A');
- 
-   /* Test zero input. */
--  mpz_init_set_ui (zero, 0);
-+  mpz_set_ui (bad_input, 0);
-   decrypted_length = msg_length;
--  ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, zero));
-+  ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, bad_input));
-   ASSERT(!rsa_decrypt_tr(&pub, &key,
- 			 &lfib, (nettle_random_func *) knuth_lfib_random,
--			 &decrypted_length, decrypted, zero));
-+			 &decrypted_length, decrypted, bad_input));
-   ASSERT(!rsa_sec_decrypt(&pub, &key,
- 			  &lfib, (nettle_random_func *) knuth_lfib_random,
--			  decrypted_length, decrypted, zero));
-+			  decrypted_length, decrypted, bad_input));
-+  ASSERT(decrypted_length == msg_length);
-+
-+  /* Test input that is slightly larger than n */
-+  mpz_add(bad_input, gibberish, pub.n);
-+  decrypted_length = msg_length;
-+  ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, bad_input));
-+  ASSERT(!rsa_decrypt_tr(&pub, &key,
-+			 &lfib, (nettle_random_func *) knuth_lfib_random,
-+			 &decrypted_length, decrypted, bad_input));
-+  ASSERT(!rsa_sec_decrypt(&pub, &key,
-+			  &lfib, (nettle_random_func *) knuth_lfib_random,
-+			  decrypted_length, decrypted, bad_input));
-+  ASSERT(decrypted_length == msg_length);
-+
-+  /* Test input that is considerably larger than n */
-+  mpz_mul_2exp (bad_input, pub.n, 100);
-+  mpz_add (bad_input, bad_input, gibberish);
-+  decrypted_length = msg_length;
-+  ASSERT(!rsa_decrypt(&key, &decrypted_length, decrypted, bad_input));
-+  ASSERT(!rsa_decrypt_tr(&pub, &key,
-+			 &lfib, (nettle_random_func *) knuth_lfib_random,
-+			 &decrypted_length, decrypted, bad_input));
-+  ASSERT(!rsa_sec_decrypt(&pub, &key,
-+			  &lfib, (nettle_random_func *) knuth_lfib_random,
-+			  decrypted_length, decrypted, bad_input));
-   ASSERT(decrypted_length == msg_length);
- 
-   /* Test invalid key. */
-@@ -124,6 +150,6 @@ test_main(void)
-   rsa_private_key_clear(&key);
-   rsa_public_key_clear(&pub);
-   mpz_clear(gibberish);
--  mpz_clear(zero);
-+  mpz_clear(bad_input);
-   free(decrypted);
- }
--- 
-2.31.1
-
diff --git a/gnu/packages/patches/nettle-3.5-check-_pkcs1_sec_decrypt-msg-len.patch b/gnu/packages/patches/nettle-3.5-check-_pkcs1_sec_decrypt-msg-len.patch
deleted file mode 100644
index 297816e698..0000000000
--- a/gnu/packages/patches/nettle-3.5-check-_pkcs1_sec_decrypt-msg-len.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-Copied from upstream nettle git repository.
-Removed changes to ChangeLog, to allow this patch to apply to nettle-3.5.
-
-From 7616541e6eff73353bf682c62e3a68e4fe696707 Mon Sep 17 00:00:00 2001
-From: Niels Möller <nisse@lysator.liu.se>
-Date: Thu, 6 May 2021 21:29:56 +0200
-Subject: [PATCH] Add check that message length to _pkcs1_sec_decrypt is valid.
-
-* pkcs1-sec-decrypt.c (_pkcs1_sec_decrypt): Check that message
-length is valid, for given key size.
-* testsuite/rsa-sec-decrypt-test.c (test_main): Add test cases for
-calls to rsa_sec_decrypt specifying a too large message length.
----
- ChangeLog                        |  7 +++++++
- pkcs1-sec-decrypt.c              |  4 +++-
- testsuite/rsa-sec-decrypt-test.c | 17 ++++++++++++++++-
- 3 files changed, 26 insertions(+), 2 deletions(-)
-
-diff --git a/pkcs1-sec-decrypt.c b/pkcs1-sec-decrypt.c
-index 4f13080e..16833691 100644
---- a/pkcs1-sec-decrypt.c
-+++ b/pkcs1-sec-decrypt.c
-@@ -63,7 +63,9 @@ _pkcs1_sec_decrypt (size_t length, uint8_t *message,
-   volatile int ok;
-   size_t i, t;
- 
--  assert (padded_message_length >= length);
-+  /* Message independent branch */
-+  if (length + 11 > padded_message_length)
-+    return 0;
- 
-   t = padded_message_length - length - 1;
- 
-diff --git a/testsuite/rsa-sec-decrypt-test.c b/testsuite/rsa-sec-decrypt-test.c
-index fb0ed3a1..3419322e 100644
---- a/testsuite/rsa-sec-decrypt-test.c
-+++ b/testsuite/rsa-sec-decrypt-test.c
-@@ -55,6 +55,7 @@ rsa_decrypt_for_test(const struct rsa_public_key *pub,
- #endif
- 
- #define PAYLOAD_SIZE 50
-+#define DECRYPTED_SIZE 256
- void
- test_main(void)
- {
-@@ -63,7 +64,7 @@ test_main(void)
-   struct knuth_lfib_ctx random_ctx;
- 
-   uint8_t plaintext[PAYLOAD_SIZE];
--  uint8_t decrypted[PAYLOAD_SIZE];
-+  uint8_t decrypted[DECRYPTED_SIZE];
-   uint8_t verifybad[PAYLOAD_SIZE];
-   unsigned n_size = 1024;
-   mpz_t gibberish;
-@@ -99,6 +100,20 @@ test_main(void)
-                                     PAYLOAD_SIZE, decrypted, gibberish) == 1);
-       ASSERT (MEMEQ (PAYLOAD_SIZE, plaintext, decrypted));
- 
-+      ASSERT (pub.size > 10);
-+      ASSERT (pub.size <= DECRYPTED_SIZE);
-+
-+      /* Check that too large message length is rejected, largest
-+	 valid size is pub.size - 11. */
-+      ASSERT (!rsa_decrypt_for_test (&pub, &key, &random_ctx,
-+				     (nettle_random_func *) knuth_lfib_random,
-+				     pub.size - 10, decrypted, gibberish));
-+
-+      /* This case used to result in arithmetic underflow and a crash. */
-+      ASSERT (!rsa_decrypt_for_test (&pub, &key, &random_ctx,
-+				     (nettle_random_func *) knuth_lfib_random,
-+				     pub.size, decrypted, gibberish));
-+
-       /* bad one */
-       memcpy(decrypted, verifybad, PAYLOAD_SIZE);
-       nettle_mpz_random_size(garbage, &random_ctx,
--- 
-2.31.1
-
diff --git a/gnu/packages/patches/nhc98-c-update.patch b/gnu/packages/patches/nhc98-c-update.patch
new file mode 100644
index 0000000000..06e6928d14
--- /dev/null
+++ b/gnu/packages/patches/nhc98-c-update.patch
@@ -0,0 +1,42 @@
+This patch provides an update so that nhc98 can be built and works with
+a modern C compiler (GCC 11) and libc (glibc 2.33).
+
+diff --git a/Makefile.inc b/Makefile.inc
+index 4fbd47a..5bce5c9 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -1,6 +1,10 @@
+ ### Configurable variables:
+ 
+-OPT = -O3
++# We want C89 semantics plus C++-style comments and things like the
++# 'setjmp_buf' and 'u_short' types.  More importantly, build with '-O1'
++# only to avoid modern optimizations that break the code.
++OPT = -O1 -std=gnu89 -D_GNU_SOURCE=1
++
+ #ARCH = -m32
+ ARCH = 
+ 
+diff --git a/script/nhc98heap.c b/script/nhc98heap.c
+index 534010e..a30d5cd 100644
+--- a/script/nhc98heap.c
++++ b/script/nhc98heap.c
+@@ -1,5 +1,6 @@
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <ctype.h>
+ main(int argc, char **argv)
+ {
+   int prefix = 1;
+diff --git a/src/runtime/Kernel/collector.c b/src/runtime/Kernel/collector.c
+index b95a273..1f879c5 100644
+--- a/src/runtime/Kernel/collector.c
++++ b/src/runtime/Kernel/collector.c
+@@ -2,6 +2,7 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <unistd.h>
+ #include "node.h"
+ /*#include "newmacros.h"  -- already included in node.h */
+ /*#include "runtime.h"    -- already included in node.h */
diff --git a/gnu/packages/patches/ocaml-Add-a-.file-directive.patch b/gnu/packages/patches/ocaml-Add-a-.file-directive.patch
deleted file mode 100644
index 07842e9c32..0000000000
--- a/gnu/packages/patches/ocaml-Add-a-.file-directive.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From: Stephane Glondu <steph@glondu.net>
-Date: Sun, 16 Aug 2015 20:59:14 +0200
-Subject: Add a .file directive to generated .s files
-
-When no .file directive is given, the toolchain records the filename
-of the .o file, which is sometimes random, making generated objects
-non-deterministic.
-
-We use Location.input_name for adding .file directives to assembly
-files. Note: when the file is preprocessed, this reference holds the
-name of the temporary file. Hence, files compiled with -pp are still
-not deterministic.
-
-Bug-Debian: https://bugs.debian.org/795784
-Bug-Debian: https://bugs.debian.org/796336
----
- asmcomp/amd64/emit.mlp | 1 +
- asmcomp/arm/emit.mlp   | 1 +
- asmcomp/arm64/emit.mlp | 1 +
- asmcomp/i386/emit.mlp  | 1 +
- asmcomp/power/emit.mlp | 1 +
- asmcomp/sparc/emit.mlp | 1 +
- 6 files changed, 6 insertions(+)
-
-diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
-index d56d0f5..4d7aa30 100644
---- a/asmcomp/amd64/emit.mlp
-+++ b/asmcomp/amd64/emit.mlp
-@@ -794,6 +794,7 @@ let data l =
- let begin_assembly() =
-   reset_debug_info();                   (* PR#5603 *)
-   float_constants := [];
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   if !Clflags.dlcode then begin
-     (* from amd64.S; could emit these constants on demand *)
-     if macosx then
-diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
-index 4948fb2..6f30fba 100644
---- a/asmcomp/arm/emit.mlp
-+++ b/asmcomp/arm/emit.mlp
-@@ -892,6 +892,7 @@ let data l =
-
- let begin_assembly() =
-   reset_debug_info();
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   `	.syntax	unified\n`;
-   begin match !arch with
-   | ARMv4   -> `	.arch	armv4t\n`
-diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp
-index 750c2b2..5afbb8a 100644
---- a/asmcomp/arm64/emit.mlp
-+++ b/asmcomp/arm64/emit.mlp
-@@ -942,6 +942,7 @@ let data l =
-
- let begin_assembly() =
-   reset_debug_info();
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
-   `	.data\n`;
-   `	.globl	{emit_symbol lbl_begin}\n`;
-diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp
-index 98df5f9..531150f 100644
---- a/asmcomp/i386/emit.mlp
-+++ b/asmcomp/i386/emit.mlp
-@@ -986,6 +986,7 @@ let data l =
- let begin_assembly() =
-   reset_debug_info();                   (* PR#5603 *)
-   float_constants := [];
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
-   `	.data\n`;
-   `	.globl	{emit_symbol lbl_begin}\n`;
-diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp
-index 4344085..343132b 100644
---- a/asmcomp/power/emit.mlp
-+++ b/asmcomp/power/emit.mlp
-@@ -887,6 +887,7 @@ let data l =
- let begin_assembly() =
-   defined_functions := StringSet.empty;
-   external_functions := StringSet.empty;
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   (* Emit the beginning of the segments *)
-   let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
-   emit_string data_space;
-diff --git a/asmcomp/sparc/emit.mlp b/asmcomp/sparc/emit.mlp
-index 877a3d5..7b041e9 100644
---- a/asmcomp/sparc/emit.mlp
-+++ b/asmcomp/sparc/emit.mlp
-@@ -727,6 +727,7 @@ let data l =
- (* Beginning / end of an assembly file *)
-
- let begin_assembly() =
-+  `	.file \"{emit_string (String.escaped !Location.input_name)}\"\n`;
-   let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
-   `	.data\n`;
-   `	.global	{emit_symbol lbl_begin}\n`;
diff --git a/gnu/packages/patches/ocaml-CVE-2015-8869.patch b/gnu/packages/patches/ocaml-CVE-2015-8869.patch
deleted file mode 100644
index 0a4cb34d25..0000000000
--- a/gnu/packages/patches/ocaml-CVE-2015-8869.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Adapted from upstream commit 659615c7b100a89eafe6253e7a5b9d84d0e8df74,
-this patch omits the upstream changes to 'Changes' and 'VERSION'.
-
-http://seclists.org/oss-sec/2016/q2/170
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8869
-https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74
----
- byterun/alloc.c  | 4 ++--
- byterun/intern.c | 2 +-
- byterun/str.c    | 4 ++--
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/byterun/alloc.c b/byterun/alloc.c
-index 96a21bf..0db9947 100644
---- a/byterun/alloc.c
-+++ b/byterun/alloc.c
-@@ -153,7 +153,7 @@ CAMLexport int caml_convert_flag_list(value list, int *flags)
- /* [size] is a [value] representing number of words (fields) */
- CAMLprim value caml_alloc_dummy(value size)
- {
--  mlsize_t wosize = Int_val(size);
-+  mlsize_t wosize = Long_val(size);
- 
-   if (wosize == 0) return Atom(0);
-   return caml_alloc (wosize, 0);
-@@ -169,7 +169,7 @@ CAMLprim value caml_alloc_dummy_function(value size,value arity)
- /* [size] is a [value] representing number of floats. */
- CAMLprim value caml_alloc_dummy_float (value size)
- {
--  mlsize_t wosize = Int_val(size) * Double_wosize;
-+  mlsize_t wosize = Long_val(size) * Double_wosize;
- 
-   if (wosize == 0) return Atom(0);
-   return caml_alloc (wosize, 0);
-diff --git a/byterun/intern.c b/byterun/intern.c
-index 89d13d1..7b8d049 100644
---- a/byterun/intern.c
-+++ b/byterun/intern.c
-@@ -291,7 +291,7 @@ static void intern_rec(value *dest)
-   case OFreshOID:
-     /* Refresh the object ID */
-     /* but do not do it for predefined exception slots */
--    if (Int_val(Field((value)dest, 1)) >= 0)
-+    if (Long_val(Field((value)dest, 1)) >= 0)
-       caml_set_oo_id((value)dest);
-     /* Pop item and iterate */
-     sp--;
-diff --git a/byterun/str.c b/byterun/str.c
-index 5ad4e29..885772f 100644
---- a/byterun/str.c
-+++ b/byterun/str.c
-@@ -266,7 +266,7 @@ CAMLprim value caml_string_greaterequal(value s1, value s2)
- CAMLprim value caml_blit_string(value s1, value ofs1, value s2, value ofs2,
-                                 value n)
- {
--  memmove(&Byte(s2, Long_val(ofs2)), &Byte(s1, Long_val(ofs1)), Int_val(n));
-+  memmove(&Byte(s2, Long_val(ofs2)), &Byte(s1, Long_val(ofs1)), Long_val(n));
-   return Val_unit;
- }
- 
-@@ -278,7 +278,7 @@ CAMLprim value caml_fill_string(value s, value offset, value len, value init)
- 
- CAMLprim value caml_bitvect_test(value bv, value n)
- {
--  int pos = Int_val(n);
-+  intnat pos = Long_val(n);
-   return Val_int(Byte_u(bv, pos >> 3) & (1 << (pos & 7)));
- }
- 
--- 
-2.7.4
-
diff --git a/gnu/packages/patches/ocaml-bitstring-fix-configure.patch b/gnu/packages/patches/ocaml-bitstring-fix-configure.patch
deleted file mode 100644
index c358bf3d6b..0000000000
--- a/gnu/packages/patches/ocaml-bitstring-fix-configure.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0aaddfceeea3e89df196ab1846da54d09713a512 Mon Sep 17 00:00:00 2001
-From: Julien Lepiller <julien@lepiller.eu>
-Date: Thu, 15 Dec 2016 21:17:31 +0100
-Subject: [PATCH] fix configure
-
----
- Makefile.in | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index d040f4c..85e0b38 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -32,6 +32,7 @@ BISECT_REPORT	= @BISECT_REPORT@
- BYTESWAP_H	= @BYTESWAP_H@
-
- OCAMLLIB	= @OCAMLLIB@
-+BISECTLIB	= $(shell if test -z $${BISECTLIB}; then echo $(OCAMLLIB); else echo $${BISECTLIB}; fi)
- top_srcdir	= @top_srcdir@
-
- pkg_cil		= @OCAML_PKG_cil@
-@@ -47,9 +48,9 @@ OCAMLOPTPACKAGES = $(OCAMLCPACKAGES)
- OCAMLOPTLIBS	= -linkpkg
-
- ifneq ($(enable_coverage),no)
--OCAMLCFLAGS     += -I +bisect -pp 'camlp4o $(OCAMLLIB)/bisect/instrument.cma'
-+OCAMLCFLAGS     += -I +bisect -pp 'camlp4o $(BISECTLIB)/bisect/instrument.cma'
- OCAMLCLIBS	+= -I +bisect bisect.cma
--OCAMLOPTFLAGS   += -I +bisect -pp 'camlp4o $(OCAMLLIB)/bisect/instrument.cma'
-+OCAMLOPTFLAGS   += -I +bisect -pp 'camlp4o $(BISECTLIB)/bisect/instrument.cma'
- OCAMLOPTLIBS	+= -I +bisect bisect.cmxa
- endif
-
-@@ -110,7 +111,7 @@ bitstring_persistent.cmi: bitstring_persistent.mli
-	  -I +camlp4 -pp camlp4of -c $<
-
- pa_bitstring.cmo: pa_bitstring.ml bitstring.cma bitstring_persistent.cma
--	$(OCAMLFIND) ocamlc bitstring.cma -I +camlp4 dynlink.cma camlp4lib.cma \
-+	$(OCAMLFIND) ocamlc $(OCAMLCFLAGS) bitstring.cma -I +camlp4 dynlink.cma camlp4lib.cma \
-	  -pp camlp4of -c $< -o $@
-
- bitstring-objinfo: bitstring_objinfo.cmo bitstring.cma bitstring_persistent.cma
-@@ -133,7 +134,7 @@ byteswap.h: byteswap.in.h
- ifeq ($(enable_coverage),no)
- PP	= -pp 'camlp4o bitstring.cma bitstring_persistent.cma pa_bitstring.cmo'
- else
--PP	= -pp 'camlp4o $(OCAMLLIB)/bisect/bisect.cma bitstring.cma bitstring_persistent.cma pa_bitstring.cmo'
-+PP	= -pp 'camlp4o $(BISECTLIB)/bisect/bisect.cma bitstring.cma bitstring_persistent.cma pa_bitstring.cmo'
- endif
-
- check: test
---
-2.11.0
diff --git a/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch b/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch
deleted file mode 100644
index 39fb7aa226..0000000000
--- a/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From a87c3f20e846c00e53d695497dba7038edbd12f0 Mon Sep 17 00:00:00 2001
-From: Valentin Lorentz <progval@progval.net>
-Date: Thu, 13 Aug 2015 11:59:04 +0200
-Subject: [PATCH] Enable ocamldoc to build reproducible manpages
-
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794586
-Signed-off-by: Stephane Glondu <steph@glondu.net>
----
- ocamldoc/odoc_man.ml   | 15 +++++----------
- ocamldoc/odoc_misc.ml  | 12 ++++++++++--
- ocamldoc/odoc_misc.mli |  7 ++++++-
- 3 files changed, 21 insertions(+), 13 deletions(-)
-
-diff --git a/ocamldoc/odoc_man.ml b/ocamldoc/odoc_man.ml
-index 615c5e172..3c85aa32a 100644
---- a/ocamldoc/odoc_man.ml
-+++ b/ocamldoc/odoc_man.ml
-@@ -864,14 +864,13 @@ class man =
-     (** Generate the man page for the given class.*)
-     method generate_for_class cl =
-       Odoc_info.reset_type_names () ;
--      let date = Unix.time () in
-       let file = self#file_name cl.cl_name in
-       try
-         let chanout = self#open_out file in
-         let b = new_buf () in
-         bs b (".TH \""^cl.cl_name^"\" ");
-         bs b !man_section ;
--        bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
-+        bs b (" source: "^Odoc_misc.current_date^" ");
-         bs b "OCamldoc ";
-         bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
- 
-@@ -923,14 +922,13 @@ class man =
-     (** Generate the man page for the given class type.*)
-     method generate_for_class_type ct =
-       Odoc_info.reset_type_names () ;
--      let date = Unix.time () in
-       let file = self#file_name ct.clt_name in
-       try
-         let chanout = self#open_out file in
-         let b = new_buf () in
-         bs b (".TH \""^ct.clt_name^"\" ");
-         bs b !man_section ;
--        bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
-+        bs b (" source: "^Odoc_misc.current_date^" ");
-         bs b "OCamldoc ";
-         bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
- 
-@@ -1016,14 +1014,13 @@ class man =
-     (** Generate the man file for the given module type.
-        @raise Failure if an error occurs.*)
-     method generate_for_module_type mt =
--      let date = Unix.time () in
-       let file = self#file_name mt.mt_name in
-       try
-         let chanout = self#open_out file in
-         let b = new_buf () in
-         bs b (".TH \""^mt.mt_name^"\" ");
-         bs b !man_section ;
--        bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
-+        bs b (" source: "^Odoc_misc.current_date^" ");
-         bs b "OCamldoc ";
-         bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
- 
-@@ -1099,14 +1096,13 @@ class man =
-     (** Generate the man file for the given module.
-        @raise Failure if an error occurs.*)
-     method generate_for_module m =
--      let date = Unix.time () in
-       let file = self#file_name m.m_name in
-       try
-         let chanout = self#open_out file in
-         let b = new_buf () in
-         bs b (".TH \""^m.m_name^"\" ");
-         bs b !man_section ;
--        bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
-+        bs b (" source: "^Odoc_misc.current_date^" ");
-         bs b "OCamldoc ";
-         bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
- 
-@@ -1206,14 +1202,13 @@ class man =
-           | Res_const (_,f) -> f.vc_name
-          )
-      in
--     let date = Unix.time () in
-       let file = self#file_name name in
-       try
-         let chanout = self#open_out file in
-         let b = new_buf () in
-         bs b (".TH \""^name^"\" ");
-         bs b !man_section ;
--        bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" ");
-+        bs b (" source: "^Odoc_misc.current_date^" ");
-         bs b "OCamldoc ";
-         bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n");
-         bs b ".SH NAME\n";
-diff --git a/ocamldoc/odoc_misc.ml b/ocamldoc/odoc_misc.ml
-index 4c74476da..456225f62 100644
---- a/ocamldoc/odoc_misc.ml
-+++ b/ocamldoc/odoc_misc.ml
-@@ -223,9 +223,9 @@ let apply_opt f v_opt =
-     None -> None
-   | Some v -> Some (f v)
- 
--let string_of_date ?(hour=true) d =
-+let string_of_date ?(absolute=false) ?(hour=true) d =
-   let add_0 s = if String.length s < 2 then "0"^s else s in
--  let t = Unix.localtime d in
-+  let t = (if absolute then Unix.gmtime else Unix.localtime) d in
-   (string_of_int (t.Unix.tm_year + 1900))^"-"^
-   (add_0 (string_of_int (t.Unix.tm_mon + 1)))^"-"^
-   (add_0 (string_of_int t.Unix.tm_mday))^
-@@ -238,6 +238,14 @@ let string_of_date ?(hour=true) d =
-      ""
-   )
- 
-+let current_date =
-+  let time =
-+    try
-+      float_of_string (Sys.getenv "SOURCE_DATE_EPOCH")
-+    with
-+      Not_found -> Unix.time ()
-+  in string_of_date ~absolute: true ~hour: false time
-+
- 
- let rec text_list_concat sep l =
-   match l with
-diff --git a/ocamldoc/odoc_misc.mli b/ocamldoc/odoc_misc.mli
-index dd5a7fcb9..38ff0612b 100644
---- a/ocamldoc/odoc_misc.mli
-+++ b/ocamldoc/odoc_misc.mli
-@@ -62,7 +62,12 @@ val apply_opt : ('a -> 'b) -> 'a option -> 'b option
- 
- (** Return a string representing a date given as a number of seconds
-    since 1970. The hour is optionnaly displayed. *)
--val string_of_date : ?hour:bool -> float -> string
-+val string_of_date : ?absolute:bool -> ?hour:bool -> float -> string
-+
-+(* Value returned by string_of_date for current time.
-+ * Uses environment variable SOURCE_DATE_EPOCH if set; falls back to
-+ * current timestamp otherwise. *)
-+val current_date : string
- 
- (** Return the first sentence (until the first dot) of a text.
-    Don't stop in the middle of [Code], [Verbatim], [List], [Lnum],
--- 
-2.17.1
-
diff --git a/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch b/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
deleted file mode 100644
index 879df026a1..0000000000
--- a/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 52cea818bf68f8a2d3c48d55d00c2f8b7da25e4c Mon Sep 17 00:00:00 2001
-From: Daniel Hogan <daniel.hogan@usask.ca>
-Date: Tue, 28 Mar 2017 22:21:18 -0600
-Subject: [PATCH] Remove delete statement.
-
-When from_scratch is true, coordinates is not allocated. A separate if
-statement was added to handle the case when from_scratch is true that
-does not try to free coordinates.
----
- src/formats/nwchemformat.cpp | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/src/formats/nwchemformat.cpp b/src/formats/nwchemformat.cpp
-index 6f625ad5b..79298555f 100644
---- a/src/formats/nwchemformat.cpp
-+++ b/src/formats/nwchemformat.cpp
-@@ -232,11 +232,14 @@ static const char* OPTIMIZATION_END_PATTERN = "  Optimization converged";
-           break;
-         tokenize(vs,buffer);
-     }
--    if ((from_scratch)||(i != natoms))
--      {
-+    if (from_scratch) 
-+    {
-+        return;
-+    }
-+    if (i != natoms) {
-         delete[] coordinates;
-         return;
--      }
-+    }
-     molecule->AddConformer(coordinates);
-   }
- 
diff --git a/gnu/packages/patches/openboardview-use-system-imgui.patch b/gnu/packages/patches/openboardview-use-system-imgui.patch
new file mode 100644
index 0000000000..7345f1fe99
--- /dev/null
+++ b/gnu/packages/patches/openboardview-use-system-imgui.patch
@@ -0,0 +1,170 @@
+Patch submitted upstream: https://github.com/OpenBoardView/OpenBoardView/pull/233
+
+diff --git a/CMakeModules/FindImGui.cmake b/CMakeModules/FindImGui.cmake
+new file mode 100644
+index 0000000..4d1fa42
+--- /dev/null
++++ b/CMakeModules/FindImGui.cmake
+@@ -0,0 +1,36 @@
++# Copyright (C) 2018, 2022 Maxim Cournoyer
++# Redistribution and use of this file is allowed according to the terms of the MIT license.
++# For details see the LICENSE file distributed with OpenBoardView.
++#	Note:
++#		Searching headers and libraries is very simple and is NOT as powerful as scripts
++#		distributed with CMake, because LuaDist defines directories to search for.
++#		Everyone is encouraged to contact the author with improvements. Maybe this file
++#		becomes part of CMake distribution sometimes.
++
++# - Find ImGui
++# Find the native imgui headers and libraries.
++#
++# IMGUI_INCLUDE_DIRS	- where to find imgui/imgui.h, etc.
++# IMGUI_LIBRARIES	- List of libraries when using imgui.
++# IMGUI_FOUND	        - True if imgui is found.
++
++# Look for the header file.
++FIND_PATH(IMGUI_INCLUDE_DIR NAMES imgui.h PATH_SUFFIXES imgui)
++
++# Look for the library.
++FIND_LIBRARY(IMGUI_LIBRARY NAMES ImGui imgui)
++
++# Handle the QUIETLY and REQUIRED arguments and set IMGUI_FOUND to TRUE if all listed variables are TRUE.
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ImGui DEFAULT_MSG IMGUI_LIBRARY IMGUI_INCLUDE_DIR)
++
++# Copy the results to the output variables.
++IF(IMGUI_FOUND)
++	SET(IMGUI_LIBRARIES ${IMGUI_LIBRARY})
++	SET(IMGUI_INCLUDE_DIRS ${IMGUI_INCLUDE_DIR})
++ELSE()
++	SET(IMGUI_LIBRARIES)
++	SET(IMGUI_INCLUDE_DIRS)
++ENDIF()
++
++MARK_AS_ADVANCED(IMGUI_INCLUDE_DIRS IMGUI_LIBRARIES)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 301f933..24bf263 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -76,28 +76,30 @@ endif()
+ # note: in the future there may be integrated CMake support into imgui
+ # see: https://github.com/ocornut/imgui/pull/1713
+ # for now do it manually, after glad and SDL2 because we use the includes for the sdl_opengl examples
+-execute_process(
++find_package(ImGui)             # search ImGui from system
++if(NOT IMGUI_FOUND)             # else fallback to bundled copy
++    execute_process(
+ 	COMMAND git submodule update --init src/imgui
+-	WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+-)
+-add_definitions("-DImDrawIdx=unsigned int") # short is not enough for us
+-add_definitions("-DIMGUI_IMPL_OPENGL_LOADER_GLAD") # We use glad
+-# Configure GL3 renderer to be GLES2 compatible if GLES2 is enabled
+-if(ENABLE_GLES2)
+-    add_definitions("-DIMGUI_IMPL_OPENGL_ES2")
+-endif()
+-
+-# workaround for OpenGL include for OpenGL2, need to be glad rather than gl itself
+-file(READ "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" input)
+-string(REPLACE "OpenGL/gl.h" "glad/glad.h" input "${input}")
+-string(REPLACE "GL/gl.h" "glad/glad.h" input "${input}")
+-file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" "${input}")
+-
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/imgui
+-	${GLAD_INCLUDE_DIRS}
+-)
+-
+-set(SOURCES
++	WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
++    add_definitions("-DImDrawIdx=unsigned int") # short is not enough for us
++    add_definitions("-DIMGUI_IMPL_OPENGL_LOADER_GLAD") # We use glad
++    # Configure GL3 renderer to be GLES2 compatible if GLES2 is enabled
++    if(ENABLE_GLES2)
++        add_definitions("-DIMGUI_IMPL_OPENGL_ES2")
++    endif()
++
++    # workaround for OpenGL include for OpenGL2, need to be glad rather than gl itself
++    file(READ "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" input)
++    string(REPLACE "OpenGL/gl.h" "glad/glad.h" input "${input}")
++    string(REPLACE "GL/gl.h" "glad/glad.h" input "${input}")
++    file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" "${input}")
++
++    set(IMGUI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/imgui
++        ${CMAKE_CURRENT_SOURCE_DIR}/imgui/examples)
++
++    set(IMGUI_LIBRARIES imgui)
++
++    set(SOURCES
+ 	imgui/imgui.cpp
+ 	imgui/imgui_draw.cpp
+ 	imgui/imgui_tables.cpp
+@@ -106,33 +108,35 @@ set(SOURCES
+ 	imgui/backends/imgui_impl_sdl.cpp)
+ 
+ 
+-if(ENABLE_GL1)
++    if(ENABLE_GL1)
+ 	LIST(APPEND SOURCES
+-		imgui/backends/imgui_impl_opengl2.cpp
+-	)
+-endif()
+-if(ENABLE_GL3)
++	    imgui/backends/imgui_impl_opengl2.cpp
++	    )
++    endif()
++    if(ENABLE_GL3)
+ 	LIST(APPEND SOURCES
+-		imgui/backends/imgui_impl_opengl3.cpp
+-	)
+-endif()
++	    imgui/backends/imgui_impl_opengl3.cpp
++	    )
++    endif()
+ 
+-add_library(imgui STATIC ${SOURCES})
+-target_link_libraries(imgui
++    add_library(imgui STATIC ${SOURCES})
++    target_link_libraries(imgui
+ 	${GLAD_LIBRARIES}
+-)
+-if(MINGW)
+-target_link_libraries(imgui
+-	SDL2::SDL2-static
+-)
+-else()
+-target_link_libraries(imgui
+-	SDL2::SDL2
+-)
++        )
++    if(MINGW)
++        target_link_libraries(imgui
++	    SDL2::SDL2-static
++            )
++    else()
++        target_link_libraries(imgui
++	    SDL2::SDL2
++            )
++    endif()
+ endif()
+ 
+-set(IMGUI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/imgui ${CMAKE_CURRENT_SOURCE_DIR}/imgui/examples)
+-
++include_directories(
++    ${IMGUI_INCLUDE_DIRS}
++    ${GLAD_INCLUDE_DIRS})
+ 
+ #install(TARGETS imgui DESTINATION ${INSTALL_ARCHIVE_DIR}) # No need to install a static lib
+ 
+diff --git a/src/openboardview/CMakeLists.txt b/src/openboardview/CMakeLists.txt
+index d049ef9..bb56f70 100644
+--- a/src/openboardview/CMakeLists.txt
++++ b/src/openboardview/CMakeLists.txt
+@@ -129,7 +129,7 @@ elseif(APPLE)
+ endif()
+ 
+ target_link_libraries(${PROJECT_NAME_LOWER}
+-	imgui
++	${IMGUI_LIBRARIES}
+ 	SQLite::SQLite3
+ 	${GLAD_LIBRARIES}
+ 	${COCOA_LIBRARY}
diff --git a/gnu/packages/patches/openjdk-14-builtins.patch b/gnu/packages/patches/openjdk-14-builtins.patch
deleted file mode 100644
index 0e7e3dcaa9..0000000000
--- a/gnu/packages/patches/openjdk-14-builtins.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- jdk14-bc54620a3848/make/autoconf/basics.m4	2020-02-07 04:40:54.000000000 +1030
-+++ jdk14-bc54620a3848-new/make/autoconf/basics.m4	2020-04-24 10:59:33.056098506 +0930
-@@ -583,7 +583,7 @@
-   BASIC_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
-   if test "x[$]$1" = x; then
-     AC_MSG_NOTICE([Required tool $2 not found in PATH, checking built-in])
--    if help $2 > /dev/null 2>&1; then
-+    if command -v $2 > /dev/null 2>&1; then
-       AC_MSG_NOTICE([Found $2 as shell built-in. Using it])
-       $1="$2"
-     else
diff --git a/gnu/packages/patches/openssl-c-rehash-in.patch b/gnu/packages/patches/openssl-c-rehash-in.patch
deleted file mode 100644
index bd3d3178f1..0000000000
--- a/gnu/packages/patches/openssl-c-rehash-in.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-This patch removes the explicit reference to the 'perl' binary,
-such that OpenSSL does not retain a reference to Perl.
-
-The 'c_rehash' program is seldom used, but it is used nonetheless
-to create symbolic links to certificates, for instance in the 'nss-certs'
-package.
-
---- openssl-1.0.2g/tools/c_rehash.in	2015-09-09 18:36:07.313316482 +0200
-+++ openssl-1.0.2g/tools/c_rehash.in	2015-09-09 18:36:28.965458458 +0200
-@@ -1,4 +1,6 @@
--#!/usr/local/bin/perl
-+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
-+  & eval 'exec perl -wS "$0" $argv:q'
-+    if 0;
- 
- # Perl c_rehash script, scan all files in a directory
- # and add symbolic links to their hash values.
diff --git a/gnu/packages/patches/openssl-runpath.patch b/gnu/packages/patches/openssl-runpath.patch
deleted file mode 100644
index fa7c0b9962..0000000000
--- a/gnu/packages/patches/openssl-runpath.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-This patch makes the build system pass -Wl,-rpath=$out/lib even for
-libraries (it already does so for executables, thanks to 'DO_GNU_APP'
-in 'Makefile.shared'.)
-
---- openssl-1.0.2a/Makefile.shared	2015-04-05 01:07:35.357602454 +0200
-+++ openssl-1.0.2a/Makefile.shared	2015-04-05 01:09:50.474513303 +0200
-@@ -106,7 +106,7 @@ LINK_SO=	\
-     LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
-     LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
-     LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
--    $${SHAREDCMD} $${SHAREDFLAGS} \
-+    $${SHAREDCMD} $${SHAREDFLAGS} -Wl,-rpath,$(LIBRPATH) \
- 	-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
- 	$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
-   ) && $(SYMLINK_SO)
diff --git a/gnu/packages/patches/passwordsafe-meson-remove-extra-argument.patch b/gnu/packages/patches/passwordsafe-meson-remove-extra-argument.patch
deleted file mode 100644
index 3cb61a364a..0000000000
--- a/gnu/packages/patches/passwordsafe-meson-remove-extra-argument.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/data/meson.build b/data/meson.build
-index 46f6373..26a2c18 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -35,7 +35,6 @@ if get_option('profile') == 'development'
- endif
- desktop_conf.set('ICON', application_id)
- desktop = i18n.merge_file(
--  'desktop',
-   input: configure_file(
-     input: files('org.gnome.PasswordSafe.desktop.in.in'),
-     output: 'org.gnome.PasswordSafe.desktop.in',
-@@ -65,7 +64,6 @@ if get_option('profile') == 'development'
- endif
- appdata_conf.set('APPID', application_id)
- appdata = i18n.merge_file(
--  'appdata',
-   input: configure_file(
-     input: files('org.gnome.PasswordSafe.appdata.xml.in.in'),
-     output: 'org.gnome.PasswordSafe.appdata.xml.in',
diff --git a/gnu/packages/patches/patchutils-test-perms.patch b/gnu/packages/patches/patchutils-test-perms.patch
deleted file mode 100644
index c7652b9af2..0000000000
--- a/gnu/packages/patches/patchutils-test-perms.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Need to mark one of the tests as PHONY to get permissions set correctly on
-built scripts.
-
---- a/Makefile.in	2011-02-10 09:44:43.000000000 -0600
-+++ b/Makefile.in	2018-11-29 21:52:05.000000000 -0600
-@@ -1106,5 +1108,6 @@
- 	rm -f $(DESTDIR)$(bindir)/"`echo lsdiff|sed '$(transform)'`"
- 	rm -f $(DESTDIR)$(bindir)/"`echo grepdiff|sed '$(transform)'`"
- 
-+.PHONY: tests/newline1/run-test
- tests/newline1/run-test: src/combinediff$(EXEEXT) src/flipdiff$(EXEEXT) \
- 		src/lsdiff$(EXEEXT) src/grepdiff$(EXEEXT) \
-		scripts/splitdiff
-
diff --git a/gnu/packages/patches/postgresql-riscv-spinlocks.patch b/gnu/packages/patches/postgresql-riscv-spinlocks.patch
new file mode 100644
index 0000000000..984a573642
--- /dev/null
+++ b/gnu/packages/patches/postgresql-riscv-spinlocks.patch
@@ -0,0 +1,41 @@
+https://www.postgresql.org/message-id/dea97b6d-f55f-1f6d-9109-504aa7dfa421@gentoo.org
+
+The attached patch adds native spinlock support to PostgreSQL on RISC-V 
+systems. As suspected by Richard W.M. Jones of Red Hat back in 2016, the 
+__sync_lock_test_and_set() approach applied on arm and arm64 works here 
+as well.
+
+
+Tested against PostgreSQL 13.3 on a physical rv64gc system (BeagleV 
+Starlight beta board) - builds and installs fine, all tests pass. From 
+what I can see in gcc documentation this should in theory work on rv32 
+(and possibly rv128) as well, therefore the patch as it stands covers 
+all RISC-V systems (i.e. doesn't check the value of __risc_xlen) - but I 
+haven't confirmed this experimentally.
+
+--- a/src/include/storage/s_lock.h
++++ b/src/include/storage/s_lock.h
+@@ -315,12 +315,12 @@
+ #endif	 /* __ia64__ || __ia64 */
+ 
+ /*
+- * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available.
++ * On ARM, ARM64 and RISC-V, we use __sync_lock_test_and_set(int *, int) if available.
+  *
+  * We use the int-width variant of the builtin because it works on more chips
+  * than other widths.
+  */
+-#if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64)
++#if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64) || defined(__riscv)
+ #ifdef HAVE_GCC__SYNC_INT32_TAS
+ #define HAS_TEST_AND_SET
+ 
+@@ -337,7 +337,7 @@
+ #define S_UNLOCK(lock) __sync_lock_release(lock)
+ 
+ #endif	 /* HAVE_GCC__SYNC_INT32_TAS */
+-#endif	 /* __arm__ || __arm || __aarch64__ || __aarch64 */
++#endif	 /* __arm__ || __arm || __aarch64__ || __aarch64 || __riscv */
+ 
+ 
+ /* S/390 and S/390x Linux (32- and 64-bit zSeries) */
diff --git a/gnu/packages/patches/python-CVE-2018-14647.patch b/gnu/packages/patches/python-CVE-2018-14647.patch
deleted file mode 100644
index 24f8d21820..0000000000
--- a/gnu/packages/patches/python-CVE-2018-14647.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Fix CVE-2018-14647:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14647
-https://bugs.python.org/issue34623
-
-Taken from upstream:
-https://github.com/python/cpython/commit/f7666e828cc3d5873136473ea36ba2013d624fa1
-
-diff --git Include/pyexpat.h Include/pyexpat.h
-index 44259bf6d7..07020b5dc9 100644
---- Include/pyexpat.h
-+++ Include/pyexpat.h
-@@ -3,7 +3,7 @@
- 
- /* note: you must import expat.h before importing this module! */
- 
--#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.0"
-+#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.1"
- #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
- 
- struct PyExpat_CAPI
-@@ -48,6 +48,8 @@ struct PyExpat_CAPI
-     enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding);
-     int (*DefaultUnknownEncodingHandler)(
-         void *encodingHandlerData, const XML_Char *name, XML_Encoding *info);
-+    /* might be none for expat < 2.1.0 */
-+    int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
-     /* always add new stuff to the end! */
- };
- 
-diff --git Modules/_elementtree.c Modules/_elementtree.c
-index 707ab2912b..53f05f937f 100644
---- Modules/_elementtree.c
-+++ Modules/_elementtree.c
-@@ -3261,6 +3261,11 @@ _elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *html,
-         PyErr_NoMemory();
-         return -1;
-     }
-+    /* expat < 2.1.0 has no XML_SetHashSalt() */
-+    if (EXPAT(SetHashSalt) != NULL) {
-+        EXPAT(SetHashSalt)(self->parser,
-+                           (unsigned long)_Py_HashSecret.expat.hashsalt);
-+    }
- 
-     if (target) {
-         Py_INCREF(target);
-diff --git Modules/pyexpat.c Modules/pyexpat.c
-index 47c3e86c20..aa21d93c11 100644
---- Modules/pyexpat.c
-+++ Modules/pyexpat.c
-@@ -1887,6 +1887,11 @@ MODULE_INITFUNC(void)
-     capi.SetStartDoctypeDeclHandler = XML_SetStartDoctypeDeclHandler;
-     capi.SetEncoding = XML_SetEncoding;
-     capi.DefaultUnknownEncodingHandler = PyUnknownEncodingHandler;
-+#if XML_COMBINED_VERSION >= 20100
-+    capi.SetHashSalt = XML_SetHashSalt;
-+#else
-+    capi.SetHashSalt = NULL;
-+#endif
- 
-     /* export using capsule */
-     capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
diff --git a/gnu/packages/patches/python-CVE-2020-26116.patch b/gnu/packages/patches/python-CVE-2020-26116.patch
deleted file mode 100644
index dc0571e964..0000000000
--- a/gnu/packages/patches/python-CVE-2020-26116.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Fix CVE-2020-26116:
-
-https://cve.circl.lu/cve/CVE-2020-26116
-https://bugs.python.org/issue39603
-
-Taken from upstream (sans test and NEWS update):
-https://github.com/python/cpython/commit/668d321476d974c4f51476b33aaca870272523bf
-
-diff --git a/Lib/http/client.py b/Lib/http/client.py
---- a/Lib/http/client.py
-+++ b/Lib/http/client.py
-@@ -147,6 +147,10 @@
- #  _is_allowed_url_pchars_re = re.compile(r"^[/!$&'()*+,;=:@%a-zA-Z0-9._~-]+$")
- # We are more lenient for assumed real world compatibility purposes.
- 
-+# These characters are not allowed within HTTP method names
-+# to prevent http header injection.
-+_contains_disallowed_method_pchar_re = re.compile('[\x00-\x1f]')
-+
- # We always set the Content-Length header for these methods because some
- # servers will otherwise respond with a 411
- _METHODS_EXPECTING_BODY = {'PATCH', 'POST', 'PUT'}
-@@ -1087,6 +1091,8 @@ def putrequest(self, method, url, skip_host=False,
-         else:
-             raise CannotSendRequest(self.__state)
- 
-+        self._validate_method(method)
-+
-         # Save the method for use later in the response phase
-         self._method = method
- 
-@@ -1177,6 +1183,15 @@ def _encode_request(self, request):
-         # ASCII also helps prevent CVE-2019-9740.
-         return request.encode('ascii')
- 
-+    def _validate_method(self, method):
-+        """Validate a method name for putrequest."""
-+        # prevent http header injection
-+        match = _contains_disallowed_method_pchar_re.search(method)
-+        if match:
-+            raise ValueError(
-+                    f"method can't contain control characters. {method!r} "
-+                    f"(found at least {match.group()!r})")
-+
-     def _validate_path(self, url):
-         """Validate a url for putrequest."""
-         # Prevent CVE-2019-9740.
diff --git a/gnu/packages/patches/python-axolotl-AES-fix.patch b/gnu/packages/patches/python-axolotl-AES-fix.patch
deleted file mode 100644
index d34f4855cb..0000000000
--- a/gnu/packages/patches/python-axolotl-AES-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Patch taken from the Debian package for python-axolotl-0.1.39.
-See <https://bugs.gnu.org/29415>.
-
-Description: Removes IV paramenter from AES constructor, since it is not necessary for ctr mode.
-Author: Josue Ortega <josue@debian.org>
-Last-Update: 2017-04-13
-
---- a/axolotl/sessioncipher.py
-+++ b/axolotl/sessioncipher.py
-@@ -228,13 +228,7 @@
-         # counterint = struct.unpack(">L", counterbytes)[0]
-         # counterint = int.from_bytes(counterbytes, byteorder='big')
-         ctr = Counter.new(128, initial_value=counter)
--
--        # cipher = AES.new(key, AES.MODE_CTR, counter=ctr)
--        ivBytes = bytearray(16)
--        ByteUtil.intToByteArray(ivBytes, 0, counter)
--
--        cipher = AES.new(key, AES.MODE_CTR, IV=bytes(ivBytes), counter=ctr)
--
-+        cipher = AES.new(key, AES.MODE_CTR, counter=ctr)
-         return cipher
- 
- 
diff --git a/gnu/packages/patches/python-babel-fix-parse-future-test.patch b/gnu/packages/patches/python-babel-fix-parse-future-test.patch
deleted file mode 100644
index 8a90166ec5..0000000000
--- a/gnu/packages/patches/python-babel-fix-parse-future-test.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 7bdaa28a55e8d8228d5434effa4b1473ab7b3669 Mon Sep 17 00:00:00 2001
-From: Felix Schwarz <felix.schwarz@oss.schwarz.eu>
-Date: Tue, 5 May 2020 08:05:56 +0000
-Subject: [PATCH] fix tests when using Python 3.9a6
-
-In Python 3.9a6 integer values for future flags were changed to prevent
-collision with compiler flags. We need to retrieve these at runtime so
-the test suite works with Python <= 3.8 as well as Python 3.9.
----
- tests/test_util.py | 17 ++++++++++++-----
- 1 file changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/tests/test_util.py b/tests/test_util.py
-index a6a4450c..b9343aaa 100644
---- a/tests/test_util.py
-+++ b/tests/test_util.py
-@@ -11,6 +11,7 @@
- # individuals. For the exact contribution history, see the revision
- # history and logs, available at http://babel.edgewall.org/log/.
- 
-+import __future__
- import unittest
- 
- import pytest
-@@ -20,6 +21,12 @@
- from babel.util import parse_future_flags
- 
- 
-+class _FF:
-+    division         = __future__.division.compiler_flag
-+    print_function   = __future__.print_function.compiler_flag
-+    with_statement   = __future__.with_statement.compiler_flag
-+    unicode_literals = __future__.unicode_literals.compiler_flag
-+
- def test_distinct():
-     assert list(util.distinct([1, 2, 1, 3, 4, 4])) == [1, 2, 3, 4]
-     assert list(util.distinct('foobar')) == ['f', 'o', 'b', 'a', 'r']
-@@ -70,25 +77,25 @@ def test_parse_encoding_non_ascii():
- from __future__ import print_function,
-     division, with_statement,
-     unicode_literals
--''', 0x10000 | 0x2000 | 0x8000 | 0x20000),
-+''', _FF.print_function | _FF.division | _FF.with_statement | _FF.unicode_literals),
-     ('''
- from __future__ import print_function, division
- print('hello')
--''', 0x10000 | 0x2000),
-+''', _FF.print_function | _FF.division),
-     ('''
- from __future__ import print_function, division, unknown,,,,,
- print 'hello'
--''', 0x10000 | 0x2000),
-+''', _FF.print_function | _FF.division),
-     ('''
- from __future__ import (
-     print_function,
-     division)
--''', 0x10000 | 0x2000),
-+''', _FF.print_function | _FF.division),
-     ('''
- from __future__ import \\
-     print_function, \\
-     division
--''', 0x10000 | 0x2000),
-+''', _FF.print_function | _FF.division),
- ])
- def test_parse_future(source, result):
-     fp = BytesIO(source.encode('latin-1'))
diff --git a/gnu/packages/patches/python-matplotlib-run-under-wayland-gtk3.patch b/gnu/packages/patches/python-matplotlib-run-under-wayland-gtk3.patch
deleted file mode 100644
index 6f067763b5..0000000000
--- a/gnu/packages/patches/python-matplotlib-run-under-wayland-gtk3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Tue, 02 Mar 2021 18:04:33 +0100
-Subject: [PATCH] gnu: python-matplotlib: Run under Wayland with GTK3.
-
-Adopted from upstream's fix[0] for
-<https://github.com/matplotlib/matplotlib/issues/19405>.
-
-[0]: https://github.com/liuyun88/matplotlib/commit/3d5000463bd23cb046681220f5511f07743f7d82
-
----
-diff -Naur a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py
---- a/lib/matplotlib/backends/backend_gtk3.py	2019-11-21 23:47:05.000000000 +0100
-+++ b/lib/matplotlib/backends/backend_gtk3.py	2021-03-02 18:00:57.479929766 +0100
-@@ -42,11 +42,12 @@
- 
- try:
-+    _display = Gdk.Display.get_default()
-     cursord = {
--        cursors.MOVE          : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
--        cursors.HAND          : Gdk.Cursor.new(Gdk.CursorType.HAND2),
--        cursors.POINTER       : Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR),
--        cursors.SELECT_REGION : Gdk.Cursor.new(Gdk.CursorType.TCROSS),
--        cursors.WAIT          : Gdk.Cursor.new(Gdk.CursorType.WATCH),
-+        cursors.MOVE          : Gdk.Cursor.new_from_name(_display, "move"),
-+        cursors.HAND          : Gdk.Cursor.new_from_name(_display, "pointer"),
-+        cursors.POINTER       : Gdk.Cursor.new_from_name(_display, "default"),
-+        cursors.SELECT_REGION : Gdk.Cursor.new_from_name(_display, "crosshair"),
-+        cursors.WAIT          : Gdk.Cursor.new_from_name(_display, "wait"),
-     }
- except TypeError as exc:
-     # Happens when running headless.  Convert to ImportError to cooperate with
diff --git a/gnu/packages/patches/python-mypy-12332.patch b/gnu/packages/patches/python-mypy-12332.patch
new file mode 100644
index 0000000000..d43cf42ed1
--- /dev/null
+++ b/gnu/packages/patches/python-mypy-12332.patch
@@ -0,0 +1,68 @@
+From 518c864805dd93e62d59439e665a0ce9d6778419 Mon Sep 17 00:00:00 2001
+From: Ekin Dursun <ekindursun@gmail.com>
+Date: Thu, 10 Mar 2022 22:06:48 +0300
+Subject: [PATCH] mypyc: Fix overflow in id function (CPyTagged_Id)
+
+In CPython, the id of an object is its address. It's computed by
+converting the pointer to an unsigned integer (PyLong_FromVoidPtr). A
+similar logic is present here, pointer is converted to a Py_ssize_t and
+CPyTagged_FromSsize_t is called with that integer.
+
+There is a problem with that approach: Py_ssize_t cannot hold every
+pointer value. Sometimes overflow happens and CPyTagged_FromSsize_t is
+called with a negative integer.
+
+With the new approach, the number is checked: If it fits in a
+Py_ssize_t, CPyTagged_FromSsize_t is called. If not, it is directly
+converted to a PyObject using PyLong_FromVoidPtr.
+---
+ mypyc/lib-rt/CPy.h      | 1 +
+ mypyc/lib-rt/int_ops.c  | 9 +++++++++
+ mypyc/lib-rt/misc_ops.c | 2 +-
+ 3 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/mypyc/lib-rt/CPy.h b/mypyc/lib-rt/CPy.h
+index 987819154ab..9f5ae52d4e4 100644
+--- a/mypyc/lib-rt/CPy.h
++++ b/mypyc/lib-rt/CPy.h
+@@ -121,6 +121,7 @@ static inline size_t CPy_FindAttrOffset(PyTypeObject *trait, CPyVTableItem *vtab
+ 
+ 
+ CPyTagged CPyTagged_FromSsize_t(Py_ssize_t value);
++CPyTagged CPyTagged_FromVoidPtr(void *ptr);
+ CPyTagged CPyTagged_FromObject(PyObject *object);
+ CPyTagged CPyTagged_StealFromObject(PyObject *object);
+ CPyTagged CPyTagged_BorrowFromObject(PyObject *object);
+diff --git a/mypyc/lib-rt/int_ops.c b/mypyc/lib-rt/int_ops.c
+index 1275f2c1057..edf06314161 100644
+--- a/mypyc/lib-rt/int_ops.c
++++ b/mypyc/lib-rt/int_ops.c
+@@ -26,6 +26,15 @@ CPyTagged CPyTagged_FromSsize_t(Py_ssize_t value) {
+     }
+ }
+ 
++CPyTagged CPyTagged_FromVoidPtr(void *ptr) {
++    if ((uintptr_t)ptr > PY_SSIZE_T_MAX) {
++        PyObject *object = PyLong_FromVoidPtr(ptr);
++        return ((CPyTagged)object) | CPY_INT_TAG;
++    } else {
++        return CPyTagged_FromSsize_t((Py_ssize_t)ptr);
++    }
++}
++
+ CPyTagged CPyTagged_FromObject(PyObject *object) {
+     int overflow;
+     // The overflow check knows about CPyTagged's width
+diff --git a/mypyc/lib-rt/misc_ops.c b/mypyc/lib-rt/misc_ops.c
+index cebd1cf997f..dcce89d9072 100644
+--- a/mypyc/lib-rt/misc_ops.c
++++ b/mypyc/lib-rt/misc_ops.c
+@@ -437,7 +437,7 @@ CPyPickle_GetState(PyObject *obj)
+ }
+ 
+ CPyTagged CPyTagged_Id(PyObject *o) {
+-    return CPyTagged_FromSsize_t((Py_ssize_t)o);
++    return CPyTagged_FromVoidPtr(o);
+ }
+ 
+ #define MAX_INT_CHARS 22
diff --git a/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch b/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
deleted file mode 100644
index 519f92c047..0000000000
--- a/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-# Modified to apply on 0.10.0.
-
-From c7a111180b3f35f2fe5a07ead185e4e792f9dfa0 Mon Sep 17 00:00:00 2001
-From: Andrew Svetlov <andrew.svetlov@gmail.com>
-Date: Thu, 9 Apr 2020 08:44:46 +0200
-Subject: [PATCH] Test on Python 3.8, drop 3.3 and 3.4
-
----
- .travis.yml                          |  7 +++---
- setup.py                             |  1 +
- tests/conftest.py                    |  2 +-
- tests/test_hypothesis_integration.py |  2 +-
- tests/test_simple.py                 | 32 +++++++++++-----------------
- tests/test_simple_35.py              | 17 ++++++---------
- tests/test_subprocess.py             |  6 ++----
- tox.ini                              |  5 +++--
- 8 files changed, 29 insertions(+), 43 deletions(-)
-
-diff --git a/.travis.yml b/.travis.yml
-index fe90234..b93377a 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -1,4 +1,5 @@
- language: python
-+
- matrix:
-   include:
-     - python: 3.5
-@@ -7,10 +8,8 @@ matrix:
-       env: TOX_ENV=py36
-     - python: 3.7
-       env: TOX_ENV=py37
--      # TODO: the dist and sudo keys are currently needed to use Python 3.7.
--      # They should be removed once Travis-CI supports 3.7 on the default image.
--      dist: xenial
--      sudo: true
-+    - python: 3.8
-+      env: TOX_ENV=py38
- 
- install: pip install tox-travis coveralls
- 
-diff --git a/setup.py b/setup.py
-index 18566bf..6175711 100644
---- a/setup.py
-+++ b/setup.py
-@@ -36,6 +36,7 @@ def find_version():
-         "Programming Language :: Python :: 3.5",
-         "Programming Language :: Python :: 3.6",
-         "Programming Language :: Python :: 3.7",
-+        "Programming Language :: Python :: 3.8",
-         "Topic :: Software Development :: Testing",
-         "Framework :: Pytest",
-     ],
-diff --git a/tests/conftest.py b/tests/conftest.py
-index 6203cf8..cc2ec16 100644
---- a/tests/conftest.py
-+++ b/tests/conftest.py
-@@ -17,7 +17,7 @@ def dependent_fixture(event_loop):
-     async def just_a_sleep():
-         """Just sleep a little while."""
-         nonlocal event_loop
--        await asyncio.sleep(0.1, loop=event_loop)
-+        await asyncio.sleep(0.1)
-         nonlocal counter
-         counter += 1
- 
-diff --git a/tests/test_simple.py b/tests/test_simple.py
-index 1627139..00c07fc 100644
---- a/tests/test_simple.py
-+++ b/tests/test_simple.py
-@@ -1,28 +1,26 @@
- """Quick'n'dirty unit tests for provided fixtures and markers."""
- import asyncio
--import os
- import pytest
- 
- import pytest_asyncio.plugin
- 
- 
--async def async_coro(loop=None):
--    """A very simple coroutine."""
--    await asyncio.sleep(0, loop=loop)
-+async def async_coro():
-+    await asyncio.sleep(0)
-     return 'ok'
- 
- 
- def test_event_loop_fixture(event_loop):
-     """Test the injection of the event_loop fixture."""
-     assert event_loop
--    ret = event_loop.run_until_complete(async_coro(event_loop))
-+    ret = event_loop.run_until_complete(async_coro())
-     assert ret == 'ok'
- 
- 
- @pytest.mark.asyncio
--def test_asyncio_marker():
-+async def test_asyncio_marker():
-     """Test the asyncio pytest marker."""
--    yield  # sleep(0)
-+    await asyncio.sleep(0)
- 
- 
- @pytest.mark.xfail(reason='need a failure', strict=True)
-@@ -45,13 +43,11 @@ async def closer(_, writer):
-         writer.close()
- 
-     server1 = await asyncio.start_server(closer, host='localhost',
--                                         port=unused_tcp_port,
--                                         loop=event_loop)
-+                                         port=unused_tcp_port)
- 
-     with pytest.raises(IOError):
-         await asyncio.start_server(closer, host='localhost',
--                                   port=unused_tcp_port,
--                                   loop=event_loop)
-+                                   port=unused_tcp_port)
- 
-     server1.close()
-     await server1.wait_closed()
-@@ -68,20 +64,16 @@ async def closer(_, writer):
-                            unused_tcp_port_factory())
- 
-     server1 = await asyncio.start_server(closer, host='localhost',
--                                         port=port1,
--                                         loop=event_loop)
-+                                         port=port1)
-     server2 = await asyncio.start_server(closer, host='localhost',
--                                         port=port2,
--                                         loop=event_loop)
-+                                         port=port2)
-     server3 = await asyncio.start_server(closer, host='localhost',
--                                         port=port3,
--                                         loop=event_loop)
-+                                         port=port3)
- 
-     for port in port1, port2, port3:
-         with pytest.raises(IOError):
-             await asyncio.start_server(closer, host='localhost',
--                                       port=port,
--                                       loop=event_loop)
-+                                       port=port)
- 
-     server1.close()
-     await server1.wait_closed()
-@@ -117,7 +109,7 @@ class Test:
-     @pytest.mark.asyncio
-     async def test_asyncio_marker_method(self, event_loop):
-         """Test the asyncio pytest marker in a Test class."""
--        ret = await async_coro(event_loop)
-+        ret = await async_coro()
-         assert ret == 'ok'
- 
- 
-diff --git a/tests/test_simple_35.py b/tests/test_simple_35.py
-index 1e4d697..4141fb0 100644
---- a/tests/test_simple_35.py
-+++ b/tests/test_simple_35.py
-@@ -6,7 +6,7 @@
- 
- @pytest.mark.asyncio
- async def async_coro(loop):
--    await asyncio.sleep(0, loop=loop)
-+    await asyncio.sleep(0)
-     return 'ok'
- 
- 
-@@ -27,8 +27,7 @@ async def closer(_, writer):
-         writer.close()
- 
-     server1 = await asyncio.start_server(closer, host='localhost',
--                                         port=unused_tcp_port,
--                                         loop=event_loop)
-+                                         port=unused_tcp_port)
- 
-     server1.close()
-     await server1.wait_closed()
-@@ -45,20 +44,16 @@ async def closer(_, writer):
- 
-     async def run_test():
-         server1 = await asyncio.start_server(closer, host='localhost',
--                                             port=port1,
--                                             loop=event_loop)
-+                                             port=port1)
-         server2 = await asyncio.start_server(closer, host='localhost',
--                                             port=port2,
--                                             loop=event_loop)
-+                                             port=port2)
-         server3 = await asyncio.start_server(closer, host='localhost',
--                                             port=port3,
--                                             loop=event_loop)
-+                                             port=port3)
- 
-         for port in port1, port2, port3:
-             with pytest.raises(IOError):
-                 await asyncio.start_server(closer, host='localhost',
--                                           port=port,
--                                           loop=event_loop)
-+                                           port=port)
- 
-         server1.close()
-         await server1.wait_closed()
-diff --git a/tests/test_subprocess.py b/tests/test_subprocess.py
-index 83490e8..069c6c2 100644
---- a/tests/test_subprocess.py
-+++ b/tests/test_subprocess.py
-@@ -21,8 +21,7 @@ def event_loop():
- async def test_subprocess(event_loop):
-     """Starting a subprocess should be possible."""
-     proc = await asyncio.subprocess.create_subprocess_exec(
--        sys.executable, '--version', stdout=asyncio.subprocess.PIPE,
--        loop=event_loop)
-+        sys.executable, '--version', stdout=asyncio.subprocess.PIPE)
-     await proc.communicate()
- 
- 
-@@ -30,6 +29,5 @@ async def test_subprocess(event_loop):
- async def test_subprocess_forbid(event_loop):
-     """Starting a subprocess should be possible."""
-     proc = await asyncio.subprocess.create_subprocess_exec(
--        sys.executable, '--version', stdout=asyncio.subprocess.PIPE,
--        loop=event_loop)
-+        sys.executable, '--version', stdout=asyncio.subprocess.PIPE)
-     await proc.communicate()
-diff --git a/tox.ini b/tox.ini
-index 13d5155..eed6fb6 100644
---- a/tox.ini
-+++ b/tox.ini
-@@ -1,6 +1,7 @@
- [tox]
--envlist = py35, py36, py37
--minversion = 2.5.0
-+minversion = 3.14.0
-+envlist = py35, py36, py37, py38
-+skip_missing_interpreters = true
- 
- [testenv]
- extras = testing
diff --git a/gnu/packages/patches/python-robotframework-source-date-epoch.patch b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
index ccd87911d8..11424bf4db 100644
--- a/gnu/packages/patches/python-robotframework-source-date-epoch.patch
+++ b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
@@ -1,62 +1,64 @@
-From 3cc41c05fad5601c0dd1832f64a6e9efca017727 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Mon, 1 Apr 2019 11:36:04 -0400
-Subject: [PATCH] robottime: Honor the SOURCE_DATE_EPOCH environment variable.
+Do not embed any timestamp in the built documentation.
 
-Honoring the SOURCE_DATE_EPOCH environment variable allows building
-the documentation using libdoc reproducibly, by setting the generated
-timestamp to a fixed value.
+Upstream issue: https://github.com/robotframework/robotframework/issues/4262.
 
-For more background on reproducible builds and the SOURCE_DATE_EPOCH
-environment variable, see:
-https://reproducible-builds.org/specs/source-date-epoch/.
-
-* src/robot/utils/robottime.py: import `os'.
-(TimestampCache._get_epoch): Retrieve date from SOURCE_DATE_EPOCH if
-it is defined, otherwise from time.time().
-* utest/output/test_logger.py (TestLogger.test_write_to_one_logger):
-Check for the existance of a timestamp attribute instead of checking
-for its content as the later is easy to break when using the
-SOURCE_DATE_EPOCH environment variable.
----
- src/robot/utils/robottime.py | 3 +++
- utest/output/test_logger.py  | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py
-index 06432a4a6..91526f826 100644
---- a/src/robot/utils/robottime.py
-+++ b/src/robot/utils/robottime.py
+diff --git a/doc/userguide/ug2html.py b/doc/userguide/ug2html.py
+index 43cdb31bd..550e74a79 100755
+--- a/doc/userguide/ug2html.py
++++ b/doc/userguide/ug2html.py
+@@ -158,8 +158,7 @@ def create_userguide():
+     install_file = _copy_installation_instructions()
+ 
+     description = 'HTML generator for Robot Framework User Guide.'
+-    arguments = ['--time',
+-                 '--stylesheet-path', ['src/userguide.css'],
++    arguments = ['--stylesheet-path', ['src/userguide.css'],
+                  'src/RobotFrameworkUserGuide.rst',
+                  'RobotFrameworkUserGuide.html']
+     os.chdir(CURDIR)
+diff --git a/src/robot/libdocpkg/model.py b/src/robot/libdocpkg/model.py
+index 4d9ffd70b..5c276d1d6 100644
+--- a/src/robot/libdocpkg/model.py
++++ b/src/robot/libdocpkg/model.py
 @@ -14,6 +14,7 @@
  #  limitations under the License.
  
- import datetime
+ import json
 +import os
- import time
  import re
+ from itertools import chain
  
-@@ -395,6 +396,8 @@ class TimestampCache(object):
+@@ -113,7 +114,8 @@ class LibraryDoc(object):
+             'name': self.name,
+             'doc': self.doc,
+             'version': self.version,
+-            'generated': get_timestamp(daysep='-', millissep=None),
++            'generated': ('' if os.environ['SOURCE_DATE_EPOCH']
++                          else get_timestamp(daysep='-', millissep=None)),
+             'type': self.type,
+             'scope': self.scope,
+             'docFormat': self.doc_format,
+diff --git a/src/robot/libdocpkg/xmlwriter.py b/src/robot/libdocpkg/xmlwriter.py
+index 3882e1219..4a84fb42e 100644
+--- a/src/robot/libdocpkg/xmlwriter.py
++++ b/src/robot/libdocpkg/xmlwriter.py
+@@ -14,6 +14,8 @@
+ #  limitations under the License.
  
-     # Seam for mocking
-     def _get_epoch(self):
-+        if os.getenv('SOURCE_DATE_EPOCH'):
-+            return float(os.getenv('SOURCE_DATE_EPOCH'))
-         return time.time()
+ import os.path
++import os
++
+ from datetime import datetime
  
-     def _use_cache(self, secs, *separators):
-diff --git a/utest/output/test_logger.py b/utest/output/test_logger.py
-index 92fe6d77d..e980227aa 100644
---- a/utest/output/test_logger.py
-+++ b/utest/output/test_logger.py
-@@ -46,7 +46,7 @@ class TestLogger(unittest.TestCase):
-         logger = LoggerMock(('Hello, world!', 'INFO'))
-         self.logger.register_logger(logger)
-         self.logger.write('Hello, world!', 'INFO')
--        assert_true(logger.msg.timestamp.startswith('20'))
-+        assert_true(hasattr(logger.msg, 'timestamp'))
+ from robot.utils import WINDOWS, XmlWriter, unicode
+@@ -30,7 +32,9 @@ class LibdocXmlWriter(object):
+         self._write_end(writer)
  
-     def test_write_to_one_logger_with_trace_level(self):
-         logger = LoggerMock(('expected message', 'TRACE'))
--- 
-2.20.1
-
+     def _write_start(self, libdoc, writer):
+-        generated = datetime.utcnow().replace(microsecond=0).isoformat() + 'Z'
++        generated = (
++            '' if os.environ['SOURCE_DATE_EPOCH']
++            else datetime.utcnow().replace(microsecond=0).isoformat() + 'Z')
+         attrs = {'name': libdoc.name,
+                  'type': libdoc.type,
+                  'format': libdoc.doc_format,
diff --git a/gnu/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch b/gnu/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch
new file mode 100644
index 0000000000..d867d4cabb
--- /dev/null
+++ b/gnu/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch
@@ -0,0 +1,19 @@
+This patches add compatibility for the forthcoming RobotFramework 5.
+
+Taken from: https://github.com/robotframework/SSHLibrary/pull/403.
+diff --git a/src/SSHLibrary/pythonforward.py b/src/SSHLibrary/pythonforward.py
+index 8b85997b7..607985cf4 100644
+--- a/src/SSHLibrary/pythonforward.py
++++ b/src/SSHLibrary/pythonforward.py
+@@ -1,9 +1,9 @@
+ import select
+ import socket
+ import threading
+-from robot.utils import platform
++from robot.utils import PY2, WINDOWS
+ from .logger import logger
+-if platform.PY2 and platform.WINDOWS:
++if PY2 and WINDOWS:
+     import win_inet_pton
+ try:
+     import SocketServer
diff --git a/gnu/packages/patches/python-robotframework-ug2html.patch b/gnu/packages/patches/python-robotframework-ug2html.patch
new file mode 100644
index 0000000000..eea88e01f3
--- /dev/null
+++ b/gnu/packages/patches/python-robotframework-ug2html.patch
@@ -0,0 +1,57 @@
+Do not require the obsolete robotframeworklexer.
+
+Submitted upstream at: https://github.com/robotframework/robotframework/pull/4265.
+diff --git a/doc/userguide/ug2html.py b/doc/userguide/ug2html.py
+index 43cdb31bd..033203552 100755
+--- a/doc/userguide/ug2html.py
++++ b/doc/userguide/ug2html.py
+@@ -93,34 +93,26 @@ from docutils.parsers.rst import directives
+ from pygments import highlight, __version__ as pygments_version
+ from pygments.lexers import get_lexer_by_name
+ 
+-# Use latest version, not version bundled with Pygments
+-import robotframeworklexer
+-
+ 
+ def too_old(version_string, minimum):
+     version = tuple(int(v) for v in version_string.split('.')[:2])
+     return version < minimum
+ 
+ 
+-if too_old(getattr(robotframeworklexer, '__version__', '1.0'), (1, 1)):
+-    sys.exit('robotframeworklexer >= 1.1 is required.')
+-if too_old(pygments_version, (2, 1)):
+-    sys.exit('Pygments >= 2.1 is required.')
++if too_old(pygments_version, (2, 8)):
++    sys.exit('Pygments >= 2.8 is required.')
+ 
+ 
+ def pygments_directive(name, arguments, options, content, lineno,
+                        content_offset, block_text, state, state_machine):
+     try:
+-        if arguments[0] == 'robotframework':
+-            lexer = robotframeworklexer.RobotFrameworkLexer()
+-        else:
+-            lexer = get_lexer_by_name(arguments[0])
++        lexer = get_lexer_by_name(arguments[0])
+     except ValueError as err:
+         raise ValueError(f'Invalid syntax highlighting language "{arguments[0]}".')
+     # take an arbitrary option if more than one is given
+     formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
+     # possibility to read the content from an external file
+-    filtered = [ line for line in content if line.strip() ]
++    filtered = [line for line in content if line.strip()]
+     if len(filtered) == 1:
+         path = filtered[0].replace('/', os.sep)
+         if os.path.isfile(path):
+diff --git a/requirements-build.txt b/requirements-build.txt
+index e0f5e19a2..a2fcdcfd5 100644
+--- a/requirements-build.txt
++++ b/requirements-build.txt
+@@ -5,5 +5,4 @@ rellu >= 0.7
+ twine >= 1.12
+ wheel
+ docutils
+-pygments >= 2.1
+-robotframeworklexer >= 1.1
++pygments >= 2.8
diff --git a/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch b/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch
deleted file mode 100644
index f1db5d7c3b..0000000000
--- a/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From ca548da9ba78ddee90779051210e3e89185e4f7d Mon Sep 17 00:00:00 2001
-From: Michel Alexandre Salim <michel@michel-slm.name>
-Date: Mon, 15 Feb 2016 23:03:42 +0700
-Subject: coverage-4.0a6 compatibility
-
-coverage 4.0a6 no longer generates .coverage file, so use -f when
-deleting .coverage to ensure deletion does not fail.
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-(limited to 'Makefile')
-
-diff --git a/Makefile b/Makefile
-index 7818f57..362c07f 100644
---- a/Makefile
-+++ b/Makefile
-@@ -23,7 +23,7 @@ fsck-larch.1: fsck-larch.1.in fsck-larch
- 
- check:
- 	python -m CoverageTestRunner --ignore-missing-from=without-tests
--	rm .coverage
-+	rm -f .coverage
- 	./insert-remove-test tempdir 100
- 	rm -r tempdir larch.log
- 	cmdtest tests
--- 
-cgit v1.1
-
diff --git a/gnu/packages/patches/qt4-ldflags.patch b/gnu/packages/patches/qt4-ldflags.patch
deleted file mode 100644
index 0d6398018a..0000000000
--- a/gnu/packages/patches/qt4-ldflags.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Explicitly link against libicui18n so that libQtCore.so always finds it.
-
---- qt-everywhere-opensource-src-4.8.6/src/corelib/corelib.pro	2015-04-15 12:01:41.661862663 +0200
-+++ qt-everywhere-opensource-src-4.8.6/src/corelib/corelib.pro	2015-04-15 12:03:57.954586336 +0200
-@@ -19,6 +19,13 @@ include(codecs/codecs.pri)
- include(statemachine/statemachine.pri)
- include(xml/xml.pri)
- 
-+# Explicitly link with icui18n, which is dlopened by libQtCore.so.
-+# We cannot do this by setting LDFLAGS because that then overrides
-+# other LDFLAGS: <https://bugreports.qt.io/browse/QTBUG-5471>.
-+# XXX: According to the Nixpkgs recipe, this may be necessary for
-+# further libraries (cups, gtk-x11-2.0, libgdk-x11-2.0).
-+LIBS_PRIVATE += -licui18n
-+
- !qpa:mac|darwin:LIBS_PRIVATE += -framework ApplicationServices
- qpa:mac {
-     !ios {
diff --git a/gnu/packages/patches/racket-enable-scheme-backport.patch b/gnu/packages/patches/racket-enable-scheme-backport.patch
new file mode 100644
index 0000000000..3a5a4a3d82
--- /dev/null
+++ b/gnu/packages/patches/racket-enable-scheme-backport.patch
@@ -0,0 +1,465 @@
+From 8d7687842f099e3e7e60d3a83fed58b2c6a92863 Mon Sep 17 00:00:00 2001
+From: Matthew Flatt <mflatt@racket-lang.org>
+Date: Sun, 6 Feb 2022 10:36:09 -0700
+Subject: [PATCH 1/2] Chez Scheme: adapt bootfile build for supplied `Scheme=`
+
+(cherry picked from commit fca1e02349664060e10278ca2ce6577a949bebf5)
+
+(Fixed conflicts by dropping pbchunks and pbarch changes.)
+---
+ racket/src/ChezScheme/configure  | 15 ++++++++++++++-
+ racket/src/ChezScheme/s/Mf-base  |  4 ++--
+ racket/src/ChezScheme/s/Mf-cross |  4 +++-
+ 3 files changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
+index 4515ffc105..0098829091 100755
+--- a/racket/src/ChezScheme/configure
++++ b/racket/src/ChezScheme/configure
+@@ -45,6 +45,7 @@ threads=yes
+ nothreads=no
+ temproot=""
+ help=no
++forceworkarea=no
+ gzipmanpages=yes
+ installowner=""
+ installgroup=""
+@@ -205,6 +206,9 @@ while [ $# != 0 ] ; do
+     --pb)
+       pb=yes
+       ;;
++    --force)
++      forceworkarea=yes
++      ;;
+     --installprefix=*)
+       installprefix=`echo $1 | sed -e 's/^--installprefix=//'`
+       ;;
+@@ -439,6 +443,7 @@ if [ "$help" = "yes" ]; then
+   echo "  --toolprefix=<prefix>             prefix tool (compiler, linker, ...) names"
+   echo "  --[no]gzip-man-pages              compress manual pages ($gzipmanpages)"
+   echo "  --workarea=<pathname>             build directory ($w)"
++  echo "  --force                           configure even without boot files"
+   echo "  CC=<C compiler>                   C compiler"
+   echo "  CPPFLAGS=<C preprocessor flags>   C preprocessor flags"
+   echo "  CFLAGS=<C compiler flags>         C compiler flags"
+@@ -721,8 +726,16 @@ case "${flagsmuni}" in
+         ;;
+ esac
+ 
++if [ "$w" = "$m" ] ; then
++    configuringin=""
++else
++    configuringin=" in $w"
++fi
++
+ if [ -f boot/$m/scheme.boot -o -f "$srcdir"/boot/$m/scheme.boot ] ; then
+-  echo "Configuring for $m"
++    echo "Configuring for $m$configuringin"
++elif [ "$forceworkarea" = yes ] ; then
++    echo "Configuring for $m$configuringin despite missing boot files"
+ else
+   if [ "$m" = "" ] ; then
+       maybem="<machine type>"
+diff --git a/racket/src/ChezScheme/s/Mf-base b/racket/src/ChezScheme/s/Mf-base
+index cc6178c973..1f4a967998 100644
+--- a/racket/src/ChezScheme/s/Mf-base
++++ b/racket/src/ChezScheme/s/Mf-base
+@@ -94,7 +94,7 @@ endif
+ # that Scheme and SCHEMEHEAPDIRS are set by Mf-cross to point to the host Scheme
+ # implementation
+ Scheme = ../bin/$m/scheme${ExeSuffix}
+-export SCHEMEHEAPDIRS=../boot/%m
++export SCHEMEHEAPDIRS=../boot/$m
+ export CHEZSCHEMELIBDIRS=.
+ 
+ # Define the libdirs separator character
+@@ -691,4 +691,4 @@ reset-one:
+ 
+ .PHONY: run
+ run:
+-	env SCHEMEHEAPDIRS=../boot/$m/ ../bin/$m/scheme $(ARGS)
++	env SCHEMEHEAPDIRS=${SCHEMEHEAPDIRS} ${Scheme} $(ARGS)
+diff --git a/racket/src/ChezScheme/s/Mf-cross b/racket/src/ChezScheme/s/Mf-cross
+index d796cbb459..397af59a28 100644
+--- a/racket/src/ChezScheme/s/Mf-cross
++++ b/racket/src/ChezScheme/s/Mf-cross
+@@ -43,5 +43,7 @@ x$(xm).$(m):
+ 	$(MAKE) -f Mf-cross m=$(m) xm=$(xm) i=f o=3 d=0 xpatch
+ 	mv xpatch x$(xm).$(m)
+ 
++ifneq ($(SCHEMEHEAPDIRS),:)
+ # Ensure that cross-compiling "nanopass.so" is rebuilt if the host compiler changed
+-nanopass.so: ${SCHEME} ${SCHEMEHEAPDIRS}/petite.boot ${SCHEMEHEAPDIRS}/scheme.boot
++nanopass.so: ${Scheme} ${SCHEMEHEAPDIRS}/petite.boot ${SCHEMEHEAPDIRS}/scheme.boot
++endif
+-- 
+2.32.0
+
+
+From 26c8e2c1d9b02ad85acef8bda40d92154cf0b699 Mon Sep 17 00:00:00 2001
+From: Matthew Flatt <mflatt@racket-lang.org>
+Date: Sun, 6 Feb 2022 11:03:30 -0700
+Subject: [PATCH 2/2] configure: make `--enable-scheme` work with an executable
+
+When the same Chez Scheme version as used by Racket is already
+available, then `--enable-scheme=...` can supply an executable. For
+cross builds, `--enable-scheme=...` can still supply a build
+directory, instead, as before.
+
+(cherry picked from commit 4f0e76855ce7e86107de495292a553469daf0b3f)
+---
+ racket/src/ChezScheme/makefiles/Makefile.in |  3 ++
+ racket/src/README.txt                       | 30 +++++++++++---
+ racket/src/configure                        |  8 +++-
+ racket/src/cs/README.txt                    |  6 ++-
+ racket/src/cs/c/Makefile.in                 | 44 ++++++++++++++++-----
+ racket/src/cs/c/configure                   | 24 +++++++++--
+ racket/src/cs/c/configure.ac                | 21 ++++++++--
+ 7 files changed, 112 insertions(+), 24 deletions(-)
+
+diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
+index c396efc851..3998ef9ccd 100644
+--- a/racket/src/ChezScheme/makefiles/Makefile.in
++++ b/racket/src/ChezScheme/makefiles/Makefile.in
+@@ -59,6 +59,9 @@ reset:
+ %.boot:
+ 	(cd $(workarea) && $(MAKE) $*.boot)
+ 
++auto.boot:
++	(cd $(workarea) && $(MAKE) $(defaultm).boot)
++
+ # <machine>.bootquick to build boot files for <machine>
+ # with o=3 d=0 for the cross compiler, and only after
+ # building the kernel for the configured machine
+diff --git a/racket/src/README.txt b/racket/src/README.txt
+index 98647aebce..d77310b4a4 100644
+--- a/racket/src/README.txt
++++ b/racket/src/README.txt
+@@ -354,6 +354,10 @@ variant of MinGW without "libdelayimp.a", get the implementation of
+ ========================================================================
+ 
+ Cross-compilation requires at least two flags to `configure`:
++`--host=OS` and either `--enable-racket=RACKET` or (for Racket CS)
++`--enable-scheme-SCHEME`.
++
++More information:
+ 
+  * `--host=OS`, where OS is something like `i386-gnu-linux` to
+    indicate the target platform.
+@@ -374,11 +378,27 @@ Cross-compilation requires at least two flags to `configure`:
+    run `configure` again (with no arguments) in a "local" subdirectory
+    to create a build for the current platform.
+ 
+-An additional flag is needed for building Racket CS, unless the flag
+-`--enable-racket=auto` is used:
+-
+- * `--enable-scheme=DIR`, where DIR is a path that has a "ChezScheme"
+-   directory where Chez Scheme is built for the host system.
++ * `--enable-scheme=SCHEME`, where SCHEME is a Chez Scheme executable
++   executable that runs on the build platform; the executable must be
++   the same version as used in Racket built for the target platform.
++ 
++   Supplying `--enable-scheme=DIR` is also supported in cross-build
++   mode, where DIR is a path that has a "ChezScheme" directory where
++   Chez Scheme is built for the host system.
++
++The `--enable-racket=RACKET` and `--enable-scheme=SCHEME` flags are
++allowed for non-cross builds, too:
++
++ * For Racket CS, supplying either selects a Racket or Chez Scheme
++   implementation used to create boot files to the build platform.
++   Suppling Chez Scheme is a much more direct path, but when Racket is
++   supplied, its version does not have to match the version being
++   built.
++
++ * For Racket BC, `--enable-racket=RACKET` selects a Racket for
++   prepare C sources to cooperate with garbage collection. Its version
++   needs to be close to the one being built, and potentially exactly
++   the same version.
+ 
+ Some less commonly needed `configure` flags are for Racket BC:
+ 
+diff --git a/racket/src/configure b/racket/src/configure
+index c9f3ba4419..1b53ec7ce2 100755
+--- a/racket/src/configure
++++ b/racket/src/configure
+@@ -9,6 +9,7 @@ pb_dir="$dir/ChezScheme/boot/pb"
+ use_cs=maybe
+ use_bc=maybe
+ supplied_racket=no
++supplied_scheme=no
+ enable_boothelp=
+ 
+ # We don't have to detect conflicts like `--enable-csdefault --enable-bcdefault`,
+@@ -34,6 +35,9 @@ for arg in $*; do
+         --enable-racket=*)
+             supplied_racket=yes
+             ;;
++        --enable-scheme=*)
++            supplied_scheme=yes
++            ;;
+         --help | -h)
+             echo $0:
+             echo see --help-bc or --help-cs, since the Racket CS build and the
+@@ -70,8 +74,8 @@ elif test "$use_cs" = "maybe" ; then
+ fi
+ 
+ if test "$use_cs" = "yes" ; then
+-    if test $use_bc = no  -a $supplied_racket = no -a ! -d "$pb_dir" ; then
+-        echo $0: must have $pb_dir or --enable-racket=... for --enable-csonly
++    if test $use_bc = no  -a $supplied_racket = no  -a $supplied_scheme = no  -a ! -d "$pb_dir" ; then
++        echo $0: must have $pb_dir, --enable-racket=... or --enable-scheme=... for --enable-csonly
+         exit 1
+     fi
+ 
+diff --git a/racket/src/cs/README.txt b/racket/src/cs/README.txt
+index 2ece417b78..8e6fc57b74 100644
+--- a/racket/src/cs/README.txt
++++ b/racket/src/cs/README.txt
+@@ -39,6 +39,11 @@ build:
+    installed in the "../ChezScheme/boot/pb" directory as described by
+    "../ChezScheme/BUILDING".
+ 
++   Supplying `--enable-scheme=...` is also an option if you alerady
++   have the same version of Chez Scheme built on the current platform.
++   Another build will be created, anyway, but more quickly than
++   without Chez Scheme.
++
+  * Racket is needed to generate the files in the "schemified"
+    directory from the sources in sibling directories like "../io". The
+    Racket version must be practically the same as the current Racket
+@@ -48,7 +53,6 @@ build:
+    Unlike Chez Scheme boot files, the files generated in "schemified"
+    are human-readable and -editable Scheme code. That provides a way
+    out of bootstrapping black holes, even without BC.
+-   
+ 
+ 
+ ========================================================================
+diff --git a/racket/src/cs/c/Makefile.in b/racket/src/cs/c/Makefile.in
+index 54a644a1d9..d73993f0fc 100644
+--- a/racket/src/cs/c/Makefile.in
++++ b/racket/src/cs/c/Makefile.in
+@@ -12,7 +12,9 @@ CS_HOST_WORKAREA_PREFIX = @CS_HOST_WORKAREA_PREFIX@
+ SCHEME_HOST_WORKAREA = $(CS_HOST_WORKAREA_PREFIX)$(SCHEME_WORKAREA)
+ SCHEME_BIN = $(SCHEME_HOST_WORKAREA)/$(MACH)/bin/$(MACH)/scheme
+ SCHEME_INC = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)
+-SCHEME = $(SCHEME_BIN) -B $(SCHEME_INC)/petite.boot -B $(SCHEME_INC)/scheme.boot
++SCHEME_built = $(SCHEME_BIN) -B $(SCHEME_INC)/petite.boot -B $(SCHEME_INC)/scheme.boot
++SCHEME_existing = @MAKE_SCHEME_SCHEME@
++SCHEME = $(SCHEME@USE_SCHEME_MODE@)
+ 
+ TARGET_MACH = @TARGET_MACH@
+ SCHEME_TARGET_INC = $(SCHEME_WORKAREA)/$(TARGET_MACH)/boot/$(TARGET_MACH)
+@@ -88,7 +90,7 @@ mainsrcdir = @srcdir@/../..
+ @INCLUDEDEP@ @srcdir@/../../version/version.mak
+ 
+ cs:
+-	$(MAKE) scheme@T_CROSS_MODE@
++	$(MAKE) scheme@MAKE_SCHEME_MODE@
+ 	$(MAKE) racket-so
+ 	cd rktio; $(MAKE)
+ 	$(MAKE) racketcs
+@@ -121,9 +123,13 @@ racket-so:
+ 
+ RACKET_SO_ENV = @CONFIGURE_RACKET_SO_COMPILE@
+ 
++TARGET_MACH_built = $(TARGET_MACH)
++TARGET_MACH_existing = xc-$(TARGET_MACH)
++XPATCH_FILE = $(SCHEME_WORKAREA)/$(TARGET_MACH@USE_SCHEME_MODE@)/s/xpatch
++
+ CS_PROGS = SCHEME="$(SCHEME)"
+ CS_OPTS = COMPRESS_COMP=@COMPRESS_COMP@ @ENABLE_OR_DISABLE_WPO@
+-CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch"
++CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(XPATCH_FILE)"
+ PASS_COMPILE_DEPS = EXTRA_COMPILE_DEPS="$(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot"
+ 
+ build-racket-so:
+@@ -163,6 +169,15 @@ pb-bootquick:
+ 	cd $(SCHEME_WORKAREA) && $(MAKE) reset
+ 	$(SHELL) $(srcdir)/ready_boot.sh $(MACH) $(SCHEME_WORKAREA)
+ 
++scheme-via-scheme:
++	$(MAKE) $(SCHEME_WORKAREA)/boot/$(MACH)/scheme.boot
++	$(MAKE) mach-make
++
++$(SCHEME_WORKAREA)/boot/$(MACH)/scheme.boot:
++	mkdir -p $(SCHEME_WORKAREA)
++	$(MAKE) config-scheme CONFIG_SCHEME_MODE="$(CONFIG_SCHEME_MODE) --force"
++	cd $(SCHEME_WORKAREA) && $(MAKE) $(MACH).boot Scheme="$(SCHEME)" SCHEMEHEAPDIRS=: o=3 d=0 what=all
++
+ mach-make:
+ 	$(MAKE) config-scheme
+ 	cd $(SCHEME_WORKAREA) && $(MAKE)
+@@ -182,24 +197,33 @@ config-scheme:
+ 
+ scheme-cross:
+ 	env MAKE_BOOT_FOR_CROSS=yes SCHEME_SRC="$(SCHEME_DIR)" SCHEME_WORKAREA=$(SCHEME_WORKAREA) MACH="$(TARGET_MACH)" $(BOOTSTRAP_RACKET) "$(SCHEME_DIR)"/rktboot/make-boot.rkt
++	$(MAKE) finish-scheme-cross
++
++finish-scheme-cross:
+ 	$(SHELL) $(srcdir)/reset_boot.sh $(TARGET_MACH) $(SCHEME_WORKAREA)
+ 	cd $(SCHEME_WORKAREA) && "$(UP_SCHEME_DIR)"/configure @SCHEME_CROSS_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
+ 	cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/c && $(CHOST_HACK@T_CROSS_MODE@) $(MAKE) o=o cross=t
+-	$(MAKE) $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
++	$(MAKE) $(XPATCH_FILE)
++
++scheme-cross-via-scheme:
++	$(MAKE) $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot MACH=$(TARGET_MACH)
++	$(MAKE) finish-scheme-cross
+ 
+ # Rebuild patch file and cross "petite.boot" and "scheme.boot" when older
+-# than the build-host "scheme.boot" or when "make-boot.rkt" touchs dummy boot files
+-XPATCH_DEPS = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)/scheme.boot \
+-              $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot
++# than the build-<host "scheme.boot" or when "make-boot.rkt" touchs dummy boot files
++XPATCH_DEPS_built = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)/scheme.boot \
++                    $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot
++XPATCH_DEPS_existing = 
++XPATCH_DEPS = $(XPATCH_DEPS@USE_SCHEME_MODE@)
+ 
+-$(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch: $(XPATCH_DEPS)
++$(XPATCH_FILE): $(XPATCH_DEPS)
+ 	$(MAKE) bounce TARGET=build-xpatch-using-host
+ 
+ build-xpatch-using-host:
+ 	cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/s && $(MAKE) -f Mf-cross m=$(MACH) xm=$(TARGET_MACH) Scheme="$(SCHEME_BIN)" SCHEMEHEAPDIRS="$(SCHEME_INC)"
+ 
+ XPATCH =
+-XPATCHcross = --xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
++XPATCHcross = --xpatch $(XPATCH_FILE)
+ 
+ racket.boot: racket.so
+ 	$(SCHEME) --script $(srcdir)/convert-to-boot.ss @BOOT_COMPRESS_COMP@ $(XPATCH@CROSS_MODE@) racket.so racket.boot $(TARGET_MACH)
+@@ -410,7 +434,7 @@ install-cross:
+ 	$(MAKE) compile-xpatch.$(TARGET_MACH)
+ 	$(MAKE) library-xpatch.$(TARGET_MACH)
+ 
+-SCHEME_XPATCH = $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
++SCHEME_XPATCH = $(XPATCH_FILE)
+ 
+ CROSS_SERVE_DEPS = $(srcdir)/mk-cross-serve.ss $(srcdir)/cross-serve.ss \
+                    $(srcdir)/../expander/env.ss $(srcdir)/../linklet/config.ss
+diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure
+index 21695a431a..1eeef57753 100755
+--- a/racket/src/cs/c/configure
++++ b/racket/src/cs/c/configure
+@@ -654,6 +654,9 @@ MINGW
+ NOT_OSX
+ OSX
+ SETUP_BOOT_MODE
++USE_SCHEME_MODE
++MAKE_SCHEME_SCHEME
++MAKE_SCHEME_MODE
+ TT_CROSS_MODE
+ T_CROSS_MODE
+ CROSS_MODE
+@@ -1448,7 +1451,7 @@ Optional Features:
+   --enable-docs           build docs on install (enabled by default)
+   --enable-usersetup      setup user-specific files on install
+   --enable-racket=<path>  use <path> as Racket for build; or "auto" to create
+-  --enable-scheme=<path>  use <path> as host's build directory for cross
++  --enable-scheme=<path>  use <path> as host build for cross
+   --enable-mach=<mach>    use Chez Scheme machine type <mach>
+   --enable-target=<mach>  cross-build for Chez Scheme machine type <mach>
+   --enable-portable       prefer portable to host-specific
+@@ -2867,7 +2870,7 @@ show_explicitly_enabled "${enable_xonx}" "Unix style"
+ show_explicitly_enabled "${enable_libzo}" 'Compiled ".zo" files moved to lib'
+ 
+ show_explicitly_set "${enable_racket}" "Racket"
+-show_explicitly_set "${enable_scheme}" "Chez Scheme build directory"
++show_explicitly_set "${enable_scheme}" "Chez Scheme for build"
+ show_explicitly_set "${enable_mach}" "machine type"
+ show_explicitly_set "${enable_target}" "cross-build machine type"
+ show_explicitly_enabled "${enable_portable}" "portable"
+@@ -4745,9 +4748,21 @@ esac
+ 
+ SCHEME_DIR=${srcdir}/../../ChezScheme
+ MAKE_BUILD_SCHEME=checkout
++USE_SCHEME_MODE="_built"
++MAKE_SCHEME_MODE="${T_CROSS_MODE}"
+ 
+ if test "${enable_scheme}" != "" ; then
+-  CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
++   if test -d "${enable_scheme}" ; then
++     # Directory exists, so use it as a build directory
++     echo "Using supplied Scheme path as a build directory"
++     CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
++   else
++     # Directory does not exist, so assume it's an executable
++     echo "Using supplied Scheme path as an executable"
++     MAKE_SCHEME_MODE="${T_CROSS_MODE}-via-scheme"
++     MAKE_SCHEME_SCHEME="${enable_scheme}"
++     USE_SCHEME_MODE="_existing"
++   fi
+ fi
+ 
+ if test "${enable_racket}" != "" ; then
+@@ -6012,6 +6027,9 @@ SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${cs_auto_flags
+ 
+ 
+ 
++
++
++
+ 
+ 
+ 
+diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac
+index 464ebe1760..aaee88156d 100644
+--- a/racket/src/cs/c/configure.ac
++++ b/racket/src/cs/c/configure.ac
+@@ -23,7 +23,7 @@ AC_ARG_ENABLE(compressmore, [  --enable-compressmore   compress compiled code ev
+ AC_ARG_ENABLE(compressboot, [  --enable-compressboot   compress boot files])
+ m4_include(../ac/path_arg.m4)
+ AC_ARG_ENABLE(racket,     [  --enable-racket=<path>  use <path> as Racket for build; or "auto" to create])
+-AC_ARG_ENABLE(scheme,     [  --enable-scheme=<path>  use <path> as host's build directory for cross])
++AC_ARG_ENABLE(scheme,     [  --enable-scheme=<path>  use <path> as host build for cross])
+ AC_ARG_ENABLE(mach,       [  --enable-mach=<mach>    use Chez Scheme machine type <mach>])
+ AC_ARG_ENABLE(target,     [  --enable-target=<mach>  cross-build for Chez Scheme machine type <mach>])
+ m4_include(../ac/portable_arg.m4)
+@@ -81,7 +81,7 @@ show_explicitly_disabled "${enable_compressboot}" "Compressed boot files"
+ show_explicitly_enabled "${enable_xonx}" "Unix style"
+ m4_include(../ac/path_show.m4)
+ show_explicitly_set "${enable_racket}" "Racket"
+-show_explicitly_set "${enable_scheme}" "Chez Scheme build directory"
++show_explicitly_set "${enable_scheme}" "Chez Scheme for build"
+ show_explicitly_set "${enable_mach}" "machine type"
+ show_explicitly_set "${enable_target}" "cross-build machine type"
+ m4_include(../ac/portable_show.m4)
+@@ -504,9 +504,21 @@ esac
+ 
+ SCHEME_DIR=${srcdir}/../../ChezScheme
+ MAKE_BUILD_SCHEME=checkout
++USE_SCHEME_MODE="_built"
++MAKE_SCHEME_MODE="${T_CROSS_MODE}"
+ 
+ if test "${enable_scheme}" != "" ; then
+-  CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
++   if test -d "${enable_scheme}" ; then
++     # Directory exists, so use it as a build directory
++     echo "Using supplied Scheme path as a build directory"
++     CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
++   else
++     # Directory does not exist, so assume it's an executable
++     echo "Using supplied Scheme path as an executable"
++     MAKE_SCHEME_MODE="${T_CROSS_MODE}-via-scheme"
++     MAKE_SCHEME_SCHEME="${enable_scheme}"
++     USE_SCHEME_MODE="_existing"
++   fi     
+ fi
+ 
+ if test "${enable_racket}" != "" ; then
+@@ -821,6 +833,9 @@ AC_SUBST(DIFF_MACH)
+ AC_SUBST(CROSS_MODE)
+ AC_SUBST(T_CROSS_MODE)
+ AC_SUBST(TT_CROSS_MODE)
++AC_SUBST(MAKE_SCHEME_MODE)
++AC_SUBST(MAKE_SCHEME_SCHEME)
++AC_SUBST(USE_SCHEME_MODE)
+ AC_SUBST(SETUP_BOOT_MODE)
+ AC_SUBST(OSX)
+ AC_SUBST(NOT_OSX)
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch b/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
new file mode 100644
index 0000000000..1e018eaa79
--- /dev/null
+++ b/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
@@ -0,0 +1,26 @@
+From aa792e707b1fbc5cc33691bfaee5828dc3fbebaa Mon Sep 17 00:00:00 2001
+From: Matthew Flatt <mflatt@racket-lang.org>
+Date: Mon, 31 Jan 2022 15:31:22 -0700
+Subject: [PATCH] fix creation of tethered launchers
+
+Related to racket/racket#4133
+
+(cherry picked from commit 563c68432f127729592f234ef30c31e92618b517)
+---
+ gui-lib/mred/installer.rkt | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gui-lib/mred/installer.rkt b/gui-lib/mred/installer.rkt
+index b1691472..9ef06c53 100644
+--- a/gui-lib/mred/installer.rkt
++++ b/gui-lib/mred/installer.rkt
+@@ -72,4 +72,5 @@
+    (list "-A" (path->string (find-system-path 'addon-dir)))))
+ 
+ (define (config-flags)
+-  (list "-G" (path->string (find-config-dir))))
++  (list "-X" (path->string (find-collects-dir))
++        "-G" (path->string (find-config-dir))))
+-- 
+2.32.0
+
diff --git a/gnu/packages/patches/rust-coresimd-doctest.patch b/gnu/packages/patches/rust-coresimd-doctest.patch
deleted file mode 100644
index bfa0ab224b..0000000000
--- a/gnu/packages/patches/rust-coresimd-doctest.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Doctest coresimd::x86::__m256 failed on processors withouth "avx" feature.
-Backported patch with changes from https://github.com/rust-lang-nursery/stdsimd/issues/481
-
---- rustc-1.26.2-src-orig/src/stdsimd/coresimd/x86/mod.rs	1970-01-01 05:00:00.000000000 +0500
-+++ rustc-1.26.2-src/src/stdsimd/coresimd/x86/mod.rs	2018-06-22 00:01:55.142026720 +0500
-@@ -293,13 +293,13 @@
-     /// use std::arch::x86_64::*;
-     ///
-     /// # fn main() {
--    /// # #[target_feature(enable = "sse")]
-+    /// # #[target_feature(enable = "avx")]
-     /// # unsafe fn foo() {
-     /// let eight_zeros = _mm256_setzero_ps();
-     /// let eight_ones = _mm256_set1_ps(1.0);
-     /// let eight_floats = _mm256_set_ps(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0);
-     /// # }
--    /// # if is_x86_feature_detected!("sse") { unsafe { foo() } }
-+    /// # if is_x86_feature_detected!("avx") { unsafe { foo() } }
-     /// # }
-     /// ```
-     pub struct __m256(f32, f32, f32, f32, f32, f32, f32, f32);
diff --git a/gnu/packages/patches/screen-CVE-2021-26937.patch b/gnu/packages/patches/screen-CVE-2021-26937.patch
deleted file mode 100644
index d87a54a83f..0000000000
--- a/gnu/packages/patches/screen-CVE-2021-26937.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-https://salsa.debian.org/debian/screen/-/raw/debian/4.8.0-5/debian/patches/99_CVE-2021-26937.patch
-
-Description: [CVE-2021-26937] Fix out of bounds array access
-Author: Michael Schröder <mls@suse.de>
-Bug-Debian: https://bugs.debian.org/982435
-Bug: https://savannah.gnu.org/bugs/?60030
-Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
-Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
-Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
-
---- a/encoding.c
-+++ b/encoding.c
-@@ -43,7 +43,7 @@
- # ifdef UTF8
- static int   recode_char __P((int, int, int));
- static int   recode_char_to_encoding __P((int, int));
--static void  comb_tofront __P((int, int));
-+static void  comb_tofront __P((int));
- #  ifdef DW_CHARS
- static int   recode_char_dw __P((int, int *, int, int));
- static int   recode_char_dw_to_encoding __P((int, int *, int));
-@@ -1263,6 +1263,8 @@
-     {0x30000, 0x3FFFD},
-   };
- 
-+  if (c >= 0xdf00 && c <= 0xdfff)
-+    return 1;          /* dw combining sequence */
-   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
-           (cjkwidth &&
-            bisearch(c, ambiguous,
-@@ -1330,11 +1332,12 @@
- }
- 
- static void
--comb_tofront(root, i)
--int root, i;
-+comb_tofront(i)
-+int i;
- {
-   for (;;)
-     {
-+      int root = i >= 0x700 ? 0x801 : 0x800;
-       debug1("bring to front: %x\n", i);
-       combchars[combchars[i]->prev]->next = combchars[i]->next;
-       combchars[combchars[i]->next]->prev = combchars[i]->prev;
-@@ -1396,9 +1399,9 @@
-     {
-       /* full, recycle old entry */
-       if (c1 >= 0xd800 && c1 < 0xe000)
--        comb_tofront(root, c1 - 0xd800);
-+        comb_tofront(c1 - 0xd800);
-       i = combchars[root]->prev;
--      if (c1 == i + 0xd800)
-+      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
- 	{
- 	  /* completely full, can't recycle */
- 	  debug("utf8_handle_comp: completely full!\n");
-@@ -1422,7 +1425,7 @@
-   mc->font  = (i >> 8) + 0xd8;
-   mc->fontx = 0;
-   debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
--  comb_tofront(root, i);
-+  comb_tofront(i);
- }
- 
- #else /* !UTF8 */
diff --git a/gnu/packages/patches/sdcc-disable-non-free-code.patch b/gnu/packages/patches/sdcc-disable-non-free-code.patch
index 1c823c3c18..39046ae280 100644
--- a/gnu/packages/patches/sdcc-disable-non-free-code.patch
+++ b/gnu/packages/patches/sdcc-disable-non-free-code.patch
@@ -15,10 +15,10 @@ remove instructions that encourage the use of SDCC with non-free
 software.
 
 diff --git a/Makefile.common.in b/Makefile.common.in
-index 926b761..0362fd5 100644
+index 1a11f67..69d5efe 100644
 --- a/Makefile.common.in
 +++ b/Makefile.common.in
-@@ -71,7 +71,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
+@@ -73,7 +73,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
  OPT_DISABLE_SDBINUTILS  = @OPT_DISABLE_SDBINUTILS@
  OPT_DISABLE_SDCPP       = @OPT_DISABLE_SDCPP@
  OPT_DISABLE_UCSIM       = @OPT_DISABLE_UCSIM@
@@ -27,10 +27,10 @@ index 926b761..0362fd5 100644
  SLIB                    = $(top_builddir)/support/util
  
 diff --git a/Makefile.in b/Makefile.in
-index 5485074..3071472 100644
+index d899b62..554a1c3 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -100,9 +100,6 @@ endif
+@@ -105,9 +105,6 @@ endif
  ifeq ($(OPT_DISABLE_DEVICE_LIB), 0)
  TARGETS        += sdcc-device-lib
  PKGS           += device/lib
@@ -40,7 +40,7 @@ index 5485074..3071472 100644
  endif
  
  ifeq ($(OPT_DISABLE_PACKIHX), 0)
-@@ -123,9 +120,6 @@ endif
+@@ -128,9 +125,6 @@ endif
  TARGETS        += sdcc-libs sdcc-cc sdcc-device-inc sdcc-as sdcc-ld sdcc-scripts
  
  PKGS           += $(SDCC_LIBS) src device/include
@@ -50,7 +50,7 @@ index 5485074..3071472 100644
  PKGS           += $(SDCC_AS) sdas/linksrc $(SDCC_SCRIPTS)
  
  PORTS           = $(shell cat ports.build)
-@@ -171,21 +165,12 @@ sdcc-sdbinutils:
+@@ -176,21 +170,12 @@ sdcc-sdbinutils:
  
  sdcc-device-inc:
  	$(MAKE) -C device/include
@@ -73,10 +73,10 @@ index 5485074..3071472 100644
  
  # doc depends on latex and latex2html
 diff --git a/configure b/configure
-index 4c2226b..b8a9251 100755
+index 232d98e..3eeb17c 100755
 --- a/configure
 +++ b/configure
-@@ -632,7 +632,6 @@ LATEX
+@@ -659,7 +659,6 @@ LATEX
  LATEX2HTML
  LYX
  OPT_ENABLE_DOC
@@ -84,7 +84,7 @@ index 4c2226b..b8a9251 100755
  OPT_DISABLE_SDBINUTILS
  OPT_DISABLE_SDCDB
  OPT_DISABLE_SDCPP
-@@ -661,10 +660,7 @@ OPT_DISABLE_R2K
+@@ -690,10 +689,7 @@ OPT_DISABLE_R2K
  OPT_DISABLE_Z180
  OPT_DISABLE_Z80
  OPT_DISABLE_MCS51
@@ -95,7 +95,7 @@ index 4c2226b..b8a9251 100755
  include_dir_suffix
  inclib_dir_suffix
  LIB_TYPE
-@@ -785,7 +781,6 @@ enable_packihx
+@@ -821,7 +817,6 @@ enable_packihx
  enable_sdcpp
  enable_sdcdb
  enable_sdbinutils
@@ -103,7 +103,7 @@ index 4c2226b..b8a9251 100755
  enable_doc
  enable_libgc
  '
-@@ -806,10 +801,7 @@ sdccconf_h_dir_separator
+@@ -842,10 +837,7 @@ sdccconf_h_dir_separator
  LIB_TYPE
  inclib_dir_suffix
  include_dir_suffix
@@ -114,7 +114,7 @@ index 4c2226b..b8a9251 100755
  docdir'
  ac_subdirs_all='support/cpp
  support/packihx
-@@ -817,9 +809,7 @@ sim/ucsim
+@@ -853,9 +845,7 @@ sim/ucsim
  debugger/mcs51
  support/sdbinutils
  device/lib/pic14
@@ -125,7 +125,7 @@ index 4c2226b..b8a9251 100755
  
  # Initialize some variables set by options.
  ac_init_help=
-@@ -1473,7 +1463,6 @@ Optional Features:
+@@ -1509,7 +1499,6 @@ Optional Features:
    --disable-sdcpp         Disables building sdcpp
    --disable-sdcdb         Disables building sdcdb
    --disable-sdbinutils    Disables configuring and building of sdbinutils
@@ -133,7 +133,7 @@ index 4c2226b..b8a9251 100755
    --enable-doc            Enables building the documentation
    --enable-libgc          Use the Bohem memory allocator. Lower runtime
                            footprint.
-@@ -1502,16 +1491,8 @@ Some influential environment variables:
+@@ -1538,16 +1527,8 @@ Some influential environment variables:
                appended to datadir to define SDCC's include/lib directory
    include_dir_suffix
                appended to datadir to define SDCC's include directory
@@ -150,7 +150,7 @@ index 4c2226b..b8a9251 100755
    docdir      documentation installation directory
  
  Use these variables to override the choices made by `configure' or to help
-@@ -7156,19 +7137,6 @@ if test "${include_dir_suffix}" = ""; then
+@@ -7421,19 +7402,6 @@ if test "${include_dir_suffix}" = ""; then
      include_dir_suffix="${inclib_dir_suffix}/include"
  fi
  
@@ -170,7 +170,7 @@ index 4c2226b..b8a9251 100755
  # lib_dir_suffix:
  # *nix default: "sdcc/lib"
  
-@@ -7176,13 +7144,6 @@ if test "${lib_dir_suffix}" = ""; then
+@@ -7441,13 +7409,6 @@ if test "${lib_dir_suffix}" = ""; then
      lib_dir_suffix="${inclib_dir_suffix}/lib"
  fi
  
@@ -184,9 +184,9 @@ index 4c2226b..b8a9251 100755
  # docdir:
  # *nix default: "${datadir}/sdcc/doc"
  
-@@ -7349,24 +7310,6 @@ cat >>confdefs.h <<_ACEOF
- #define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}"
- _ACEOF
+@@ -7600,22 +7561,6 @@ esac
+ 
+ printf "%s\n" "#define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_inc_dir_suffix}\"" >>confdefs.h
  
 -norm_non_free_inc_dir_suffix=${non_free_include_dir_suffix}
 -case ":$norm_non_free_inc_dir_suffix:" in
@@ -202,16 +202,14 @@ index 4c2226b..b8a9251 100755
 - *) norm_non_free_inc_dir_suffix=`echo "$norm_non_free_inc_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
 -esac
 -
--cat >>confdefs.h <<_ACEOF
--#define NON_FREE_INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_non_free_inc_dir_suffix}"
--_ACEOF
+-printf "%s\n" "#define NON_FREE_INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_non_free_inc_dir_suffix}\"" >>confdefs.h
 -
  
  norm_lib_dir_suffix=${lib_dir_suffix}
  case ":$norm_lib_dir_suffix:" in
-@@ -7386,24 +7329,6 @@ cat >>confdefs.h <<_ACEOF
- #define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}"
- _ACEOF
+@@ -7633,22 +7578,6 @@ esac
+ 
+ printf "%s\n" "#define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_lib_dir_suffix}\"" >>confdefs.h
  
 -norm_non_free_lib_dir_suffix=${non_free_lib_dir_suffix}
 -case ":$norm_non_free_lib_dir_suffix:" in
@@ -227,19 +225,18 @@ index 4c2226b..b8a9251 100755
 - *) norm_non_free_lib_dir_suffix=`echo "$norm_non_free_lib_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
 -esac
 -
--cat >>confdefs.h <<_ACEOF
--#define NON_FREE_LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_non_free_lib_dir_suffix}"
--_ACEOF
+-printf "%s\n" "#define NON_FREE_LIB_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_non_free_lib_dir_suffix}\"" >>confdefs.h
 -
  
  # relative paths
  for _lcl_i in expanded_bindir:expanded_datadir:bin2data_dir; do
-@@ -8513,28 +8438,6 @@ _ACEOF
+@@ -8751,27 +8680,6 @@ printf "%s\n" "#define OPT_DISABLE_SDBINUTILS $OPT_DISABLE_SDBINUTILS" >>confdef
  
  
  
 -  # Check whether --enable-non-free was given.
--if test "${enable_non_free+set}" = set; then :
+-if test ${enable_non_free+y}
+-then :
 -  enableval=$enable_non_free;
 -fi
 -
@@ -253,17 +250,15 @@ index 4c2226b..b8a9251 100755
 -  fi
 -
 -
--cat >>confdefs.h <<_ACEOF
--#define OPT_DISABLE_NON_FREE $OPT_DISABLE_NON_FREE
--_ACEOF
+-printf "%s\n" "#define OPT_DISABLE_NON_FREE $OPT_DISABLE_NON_FREE" >>confdefs.h
 -
 -
 -
 -
  
    # Check whether --enable-doc was given.
- if test "${enable_doc+set}" = set; then :
-@@ -8929,20 +8832,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
+ if test ${enable_doc+y}
+@@ -9199,20 +9107,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
  
    test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic14"
  
@@ -283,8 +278,8 @@ index 4c2226b..b8a9251 100755
 -
  fi
  
- if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
-@@ -9019,15 +8914,9 @@ fi
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_SM83 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
+@@ -9289,15 +9189,9 @@ fi
  
  test $OPT_DISABLE_DEVICE_LIB = 0 && ac_config_files="$ac_config_files device/lib/Makefile"
  
@@ -300,7 +295,7 @@ index 4c2226b..b8a9251 100755
  cat >confcache <<\_ACEOF
  # This file is a shell script that caches the results of configure
  # tests run on this system so they can be shared between configure
-@@ -9768,7 +9657,6 @@ do
+@@ -10037,7 +9931,6 @@ do
      "device/lib/pdk15-stack-auto/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/pdk15-stack-auto/Makefile" ;;
      "sdas/aspdk16/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/aspdk16/Makefile" ;;
      "device/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/Makefile" ;;
@@ -308,7 +303,7 @@ index 4c2226b..b8a9251 100755
      "main.mk") CONFIG_FILES="$CONFIG_FILES main.mk:main_in.mk" ;;
      "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
      "device/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/include/Makefile" ;;
-@@ -9780,7 +9668,6 @@ do
+@@ -10049,7 +9942,6 @@ do
      "support/regression/ports/host/spec.mk") CONFIG_FILES="$CONFIG_FILES support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in" ;;
      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
      "Makefile.common") CONFIG_FILES="$CONFIG_FILES Makefile.common:Makefile.common.in" ;;
@@ -316,7 +311,7 @@ index 4c2226b..b8a9251 100755
  
    *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
    esac
-@@ -10589,54 +10476,6 @@ esac
+@@ -10856,54 +10748,6 @@ esac
  incPath3=`echo "$incPath3" | sed 's,\\\\\\\\,\\\\,g'`
  
  
@@ -371,7 +366,7 @@ index 4c2226b..b8a9251 100755
  
  libPath1=`echo "/${prefix2data_dir}/${norm_lib_dir_suffix}" | sed 's,/\./,/,g'`
  case ":$libPath1:" in
-@@ -10686,54 +10525,6 @@ esac
+@@ -10953,54 +10797,6 @@ esac
  libPath3=`echo "$libPath3" | sed 's,\\\\\\\\,\\\\,g'`
  
  
@@ -423,18 +418,18 @@ index 4c2226b..b8a9251 100755
 -nonFreeLibPath3=`echo "$nonFreeLibPath3" | sed 's,\\\\\\\\,\\\\,g'`
 -
 -
- { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result:
  sdcc ${VERSION} is now configured for
  
-@@ -10772,7 +10563,6 @@ sdcc ${VERSION} is now configured for
-     pdk15               ${enable_pdk15_port}
-     pdk16               ${enable_pdk16_port}
+@@ -11041,7 +10837,6 @@ sdcc ${VERSION} is now configured for
+     mos6502             ${enable_mos6502_port}
+     mos65c02            ${enable_mos65c02_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -10787,9 +10577,6 @@ sdcc ${VERSION} is now configured for
+@@ -11056,9 +10851,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -444,7 +439,7 @@ index 4c2226b..b8a9251 100755
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -10801,15 +10588,9 @@ sdcc ${VERSION} is now configured for
+@@ -11070,15 +10862,9 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[0])${incPath2}
                          ${incPath3}
@@ -458,17 +453,17 @@ index 4c2226b..b8a9251 100755
 -                        path(argv[0])${nonFreeLibPath2}${dirch}<model>
 -                        ${nonFreeLibPath3}${dirch}<model>
  " >&5
- $as_echo "
+ printf "%s\n" "
  sdcc ${VERSION} is now configured for
-@@ -10849,7 +10630,6 @@ sdcc ${VERSION} is now configured for
-     pdk15               ${enable_pdk15_port}
-     pdk16               ${enable_pdk16_port}
+@@ -11120,7 +10906,6 @@ sdcc ${VERSION} is now configured for
+     mos6502             ${enable_mos6502_port}
+     mos65c02            ${enable_mos65c02_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -10864,9 +10644,6 @@ sdcc ${VERSION} is now configured for
+@@ -11135,9 +10920,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -478,7 +473,7 @@ index 4c2226b..b8a9251 100755
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -10878,14 +10655,8 @@ sdcc ${VERSION} is now configured for
+@@ -11149,15 +10931,9 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[0])${incPath2}
                          ${incPath3}
@@ -493,11 +488,12 @@ index 4c2226b..b8a9251 100755
 -                        ${nonFreeLibPath3}${dirch}<model>
  " >&6; }
  # End of configure/configure.in
+ 
 diff --git a/configure.ac b/configure.ac
-index 455fee1..48e0a20 100644
+index cc5309e..5eb4326 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -548,19 +548,6 @@ if test "${include_dir_suffix}" = ""; then
+@@ -562,19 +562,6 @@ if test "${include_dir_suffix}" = ""; then
      include_dir_suffix="${inclib_dir_suffix}/include"
  fi
  
@@ -517,7 +513,7 @@ index 455fee1..48e0a20 100644
  # lib_dir_suffix:
  # *nix default: "sdcc/lib"
  AC_ARG_VAR([lib_dir_suffix], [appended to datadir to define SDCC's library root directory])
-@@ -568,13 +555,6 @@ if test "${lib_dir_suffix}" = ""; then
+@@ -582,13 +569,6 @@ if test "${lib_dir_suffix}" = ""; then
      lib_dir_suffix="${inclib_dir_suffix}/lib"
  fi
  
@@ -531,7 +527,7 @@ index 455fee1..48e0a20 100644
  # docdir:
  # *nix default: "${datadir}/sdcc/doc"
  AC_ARG_VAR([docdir], [documentation installation directory])
-@@ -615,19 +595,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
+@@ -629,19 +609,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
  adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$sdccconf_h_dir_separator])
  AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX,
                     DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}", [XXX])
@@ -551,7 +547,7 @@ index 455fee1..48e0a20 100644
  
  # relative paths
  adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir])
-@@ -803,7 +775,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
+@@ -819,7 +791,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
  AC_DO_DISABLER(sdcpp,      SDCPP,      [Disables building sdcpp])
  AC_DO_DISABLER(sdcdb,      SDCDB,      [Disables building sdcdb])
  AC_DO_DISABLER(sdbinutils, SDBINUTILS, [Disables configuring and building of sdbinutils])
@@ -559,7 +555,7 @@ index 455fee1..48e0a20 100644
  
  AC_DO_ENABLER(doc,   DOC,   [Enables building the documentation])
  AC_CHECK_PROG([LYX],        [lyx],        [lyx],        [:])
-@@ -874,16 +845,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
+@@ -897,16 +868,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
    AC_CONFIG_FILES(src/pic14/Makefile)
    test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic14)
  fi
@@ -574,9 +570,9 @@ index 455fee1..48e0a20 100644
 -  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/non-free/lib/pic16)
 -fi
  
- if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_SM83 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
    AC_CONFIG_FILES([src/z80/Makefile])
-@@ -947,7 +912,6 @@ fi
+@@ -970,7 +935,6 @@ fi
  
  
  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_FILES([device/lib/Makefile])
@@ -584,7 +580,7 @@ index 455fee1..48e0a20 100644
  
  AC_CONFIG_FILES([main.mk:main_in.mk
  src/Makefile
-@@ -961,9 +925,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
+@@ -984,9 +948,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
  Makefile
  Makefile.common:Makefile.common.in
  ])
@@ -594,7 +590,7 @@ index 455fee1..48e0a20 100644
  AC_OUTPUT
  
  # I found no better place
-@@ -981,16 +942,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
+@@ -1004,16 +965,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
  adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_inc_dir_suffix}, [incPath1], [$dirch])
  adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_inc_dir_suffix},    [incPath2], [$dirch])
  adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_inc_dir_suffix}, [incPath3], [$dirch])
@@ -611,15 +607,15 @@ index 455fee1..48e0a20 100644
  
  AC_MSG_RESULT([
  sdcc ${VERSION} is now configured for
-@@ -1030,7 +985,6 @@ sdcc ${VERSION} is now configured for
-     pdk15               ${enable_pdk15_port}
-     pdk16               ${enable_pdk16_port}
+@@ -1055,7 +1010,6 @@ sdcc ${VERSION} is now configured for
+     mos6502             ${enable_mos6502_port}
+     mos65c02            ${enable_mos65c02_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -1045,9 +999,6 @@ sdcc ${VERSION} is now configured for
+@@ -1070,9 +1024,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -629,7 +625,7 @@ index 455fee1..48e0a20 100644
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -1059,14 +1010,8 @@ sdcc ${VERSION} is now configured for
+@@ -1084,14 +1035,8 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[[0]])${incPath2}
                          ${incPath3}
@@ -875,7 +871,7 @@ index 01ad950..62839b9 100644
  
  clean-local:
 diff --git a/device/lib/pic16/Makefile.in b/device/lib/pic16/Makefile.in
-index e4e3abb..730066b 100644
+index 6a4c9cf..4b07384 100644
 --- a/device/lib/pic16/Makefile.in
 +++ b/device/lib/pic16/Makefile.in
 @@ -87,10 +87,7 @@ PRE_UNINSTALL = :
@@ -890,7 +886,7 @@ index e4e3abb..730066b 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-@@ -295,8 +292,7 @@ top_build_prefix = @top_build_prefix@
+@@ -297,8 +294,7 @@ top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
  SUBDIRS = debug libc libio libm libsdcc startup
@@ -900,7 +896,7 @@ index e4e3abb..730066b 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -310,11 +306,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -312,11 +308,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -915,19 +911,40 @@ index e4e3abb..730066b 100644
  all: config.h
  	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 diff --git a/device/lib/pic16/configure b/device/lib/pic16/configure
-index ed8ad06..65baa93 100755
+index add51b9..c451a74 100755
 --- a/device/lib/pic16/configure
 +++ b/device/lib/pic16/configure
-@@ -3657,7 +3657,6 @@ fi
+@@ -3828,7 +3828,6 @@ fi
  
  
  
 -LIBDEV="${srcdir}/../../non-free/lib/pic16/libdev"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking devices supported by gputils" >&5
- $as_echo_n "checking devices supported by gputils... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking devices supported by gputils" >&5
+ printf %s "checking devices supported by gputils... " >&6; }
  GOOD_PICS="";
+@@ -3839,20 +3838,6 @@ N_GOOD=0
+ N_BAD=0
+ mkdir -p ".checkdevices";
+ rm -f "$RESULT";
+-for i in "${LIBDEV}/pic1"*.c; do
+-  p="${i##*pic}";
+-  p="${p%.c}";
+-  P=$(echo "$p" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ);
+-  printf "  include \"p%s.inc\"\n  END" "$p" > "${CHECK}.asm";
+-  if "$mCCAS" -p "$p" -o "${CHECK}.o" -c "${CHECK}.asm" >/dev/null 2>&1 && "$mLD" "${CHECK}.o" >/dev/null 2>&1; then
+-    GOOD_PICS="$GOOD_PICS $p";
+-    N_GOOD=`expr $N_GOOD + 1`;
+-    echo "$P" >> "$RESULT";
+-  else
+-    BAD_PICS="$BAD_PICS $p";
+-    N_BAD=`expr $N_BAD + 1`;
+-  fi;
+-done;
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $N_GOOD devices ($GOOD_PICS)" >&5
+ printf "%s\n" "$N_GOOD devices ($GOOD_PICS)" >&6; }
+ 
 diff --git a/device/lib/pic16/configure.ac b/device/lib/pic16/configure.ac
-index 3966c11..cdbffc7 100644
+index 75bea9d..65e98be 100644
 --- a/device/lib/pic16/configure.ac
 +++ b/device/lib/pic16/configure.ac
 @@ -68,10 +68,6 @@ AC_SUBST(OBJEXT, [o])
@@ -942,7 +959,7 @@ index 3966c11..cdbffc7 100644
  
  # Checks for header files.
 diff --git a/device/lib/pic16/debug/Makefile.in b/device/lib/pic16/debug/Makefile.in
-index 8d5eb80..9dd8bb2 100644
+index 05108a8..a6a94bb 100644
 --- a/device/lib/pic16/debug/Makefile.in
 +++ b/device/lib/pic16/debug/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -957,7 +974,7 @@ index 8d5eb80..9dd8bb2 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -291,8 +288,7 @@ top_builddir = @top_builddir@
+@@ -292,8 +289,7 @@ top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
  lib_LIBRARIES = libdebug.a
  libdebug_a_SOURCES = gstack/gstack.c
@@ -967,7 +984,7 @@ index 8d5eb80..9dd8bb2 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -306,11 +302,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -307,11 +303,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -982,7 +999,7 @@ index 8d5eb80..9dd8bb2 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libc/Makefile.in b/device/lib/pic16/libc/Makefile.in
-index 659db72..cbb73bf 100644
+index 49a437d..5579b71 100644
 --- a/device/lib/pic16/libc/Makefile.in
 +++ b/device/lib/pic16/libc/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -997,7 +1014,7 @@ index 659db72..cbb73bf 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -381,8 +378,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
+@@ -382,8 +379,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
  	string/strpbrk.c string/strrchr.c string/strspn.c \
  	string/strstr.c string/strtok.c string/strupr.c \
  	utils/cnvfrac.S utils/cnvint.S utils/cvtdec.S
@@ -1007,7 +1024,7 @@ index 659db72..cbb73bf 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -396,11 +392,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -397,11 +393,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -1022,7 +1039,7 @@ index 659db72..cbb73bf 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libio/Makefile.in b/device/lib/pic16/libio/Makefile.in
-index 128ffcc..b298c7c 100644
+index 5b1a9b0..664958f 100644
 --- a/device/lib/pic16/libio/Makefile.in
 +++ b/device/lib/pic16/libio/Makefile.in
 @@ -481,10 +481,7 @@ POST_UNINSTALL = :
@@ -1037,7 +1054,7 @@ index 128ffcc..b298c7c 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -15600,8 +15597,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
+@@ -15601,8 +15598,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
  libio18lf8722_a_CFLAGS = -p18lf8722 $(AM_CFLAGS)
  libio18lf8723_a_SOURCES = dummy.c
  libio18lf8723_a_CFLAGS = -p18lf8723 $(AM_CFLAGS)
@@ -1047,7 +1064,7 @@ index 128ffcc..b298c7c 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -15615,11 +15611,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -15616,11 +15612,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -1107,7 +1124,7 @@ index 211604e..e8896bf 100755
  include \$(top_srcdir)/Makefile.common
  
 diff --git a/device/lib/pic16/libm/Makefile.in b/device/lib/pic16/libm/Makefile.in
-index af29662..05f1c24 100644
+index 285c5b8..ad6c293 100644
 --- a/device/lib/pic16/libm/Makefile.in
 +++ b/device/lib/pic16/libm/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -1122,7 +1139,7 @@ index af29662..05f1c24 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -312,8 +309,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
+@@ -313,8 +310,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
  	frexpf.c isinf.c isnan.c ldexpf.c log10f.c logf.c modff.c \
  	powf.c sincosf.c sincoshf.c sinf.c sinhf.c sqrtf.c tancotf.c \
  	tanf.c tanhf.c
@@ -1132,7 +1149,7 @@ index af29662..05f1c24 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -327,11 +323,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -328,11 +324,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -1147,7 +1164,7 @@ index af29662..05f1c24 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libsdcc/Makefile.in b/device/lib/pic16/libsdcc/Makefile.in
-index d384631..01129e3 100644
+index 808b8a5..412dc80 100644
 --- a/device/lib/pic16/libsdcc/Makefile.in
 +++ b/device/lib/pic16/libsdcc/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -1162,7 +1179,7 @@ index d384631..01129e3 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -413,8 +410,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
+@@ -414,8 +411,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
  	int/modsint.c int/moduint.c int/mulint.c long/divslong.c \
  	long/divulong.c long/modslong.c long/modulong.c long/mullong.c \
  	lregs/lrrest.c lregs/lrst.c stack/stack.S
@@ -1172,7 +1189,7 @@ index d384631..01129e3 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -428,11 +424,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -429,11 +425,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -1187,7 +1204,7 @@ index d384631..01129e3 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/startup/Makefile.in b/device/lib/pic16/startup/Makefile.in
-index 6169096..0172a25 100644
+index d57c254..7394a4c 100644
 --- a/device/lib/pic16/startup/Makefile.in
 +++ b/device/lib/pic16/startup/Makefile.in
 @@ -89,10 +89,7 @@ PRE_UNINSTALL = :
@@ -1202,7 +1219,7 @@ index 6169096..0172a25 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -308,8 +305,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
+@@ -309,8 +306,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
  # Force installation of .o files into $libdir
  crtdir = $(libdir)
  crt_DATA = crt0.o crt0i.o crt0iz.o
@@ -1212,7 +1229,7 @@ index 6169096..0172a25 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -323,11 +319,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -324,11 +320,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
@@ -1227,7 +1244,7 @@ index 6169096..0172a25 100644
  
  .SUFFIXES:
 diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
-index d630b99..8cd747f 100644
+index 3c4bc1f..0a6fdd5 100644
 --- a/doc/INSTALL.txt
 +++ b/doc/INSTALL.txt
 @@ -18,9 +18,7 @@ To install:
@@ -1261,10 +1278,10 @@ index d630b99..8cd747f 100644
  
  You can test the install by entering:
 diff --git a/doc/README.txt b/doc/README.txt
-index 88f8c98..a36db81 100644
+index 3720fd6..5a0d0a8 100644
 --- a/doc/README.txt
 +++ b/doc/README.txt
-@@ -35,10 +35,9 @@ Exception are pic device libraries and header files which are derived
+@@ -37,10 +37,9 @@ Exception are pic device libraries and header files which are derived
  from Microchip header (.inc) and linker script (.lkr) files. Microchip
  requires that "The header files should state that they are only to be
  used with authentic Microchip devices" which makes them incompatible
@@ -1276,13 +1293,13 @@ index 88f8c98..a36db81 100644
 +and run-time options that enable their use) are omitted in the SDCC
 +package distributed with GNU Guix.
  
- See:
- 
+ However: Many think that the Microchip requirement is not legally enforceable,
+ arguing that the header files only contain noncopyrightable facts.
 diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx
-index c8f8e73..e4afb0c 100644
+index 9ba31eb..3d69b5a 100644
 --- a/doc/sdccman.lyx
 +++ b/doc/sdccman.lyx
-@@ -1092,54 +1092,9 @@ A possible exception are pic device libraries and header files which are
+@@ -1093,54 +1093,9 @@ A possible exception are pic device libraries and header files which are
   to be used with authentic Microchip devices" which makes them incompatible
   with the GPL, if Microchip has any copyright in them (which might depend
   on local copyright laws).
@@ -1340,7 +1357,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \begin_layout Itemize
-@@ -2890,18 +2845,6 @@ include_dir_suffix environment variable, see table below
+@@ -2943,18 +2898,6 @@ include_dir_suffix environment variable, see table below
  \end_inset
  
  
@@ -1359,7 +1376,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset space ~
  \end_inset
  
-@@ -2914,22 +2857,6 @@ lib_dir_suffix environment variable, see table below
+@@ -2967,22 +2910,6 @@ lib_dir_suffix environment variable, see table below
  \end_inset
  
  
@@ -1382,7 +1399,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset space ~
  \end_inset
  
-@@ -3428,7 +3355,7 @@ These defaults are:
+@@ -3481,7 +3408,7 @@ These defaults are:
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1391,7 +1408,7 @@ index c8f8e73..e4afb0c 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0in">
  <column alignment="block" valignment="top" width="0in">
-@@ -3712,68 +3639,6 @@ sdcc/include
+@@ -3765,68 +3692,6 @@ sdcc/include
  include
  \end_layout
  
@@ -1460,7 +1477,7 @@ index c8f8e73..e4afb0c 100644
  \end_inset
  </cell>
  </row>
-@@ -3784,7 +3649,7 @@ lib
+@@ -3837,7 +3702,7 @@ lib
  \begin_layout Plain Layout
  
  \emph on
@@ -1469,7 +1486,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \end_inset
-@@ -3793,7 +3658,7 @@ NON_FREE_LIB_DIR_SUFFIX
+@@ -3846,7 +3711,7 @@ NON_FREE_LIB_DIR_SUFFIX
  \begin_inset Text
  
  \begin_layout Plain Layout
@@ -1478,7 +1495,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \end_inset
-@@ -3802,7 +3667,7 @@ sdcc/non-free/lib
+@@ -3855,7 +3720,7 @@ sdcc/non-free/lib
  \begin_inset Text
  
  \begin_layout Plain Layout
@@ -1487,7 +1504,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \end_inset
-@@ -4201,20 +4066,6 @@ include
+@@ -4254,20 +4119,6 @@ include
  \end_inset
  
   
@@ -1508,7 +1525,7 @@ index c8f8e73..e4afb0c 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4229,20 +4080,6 @@ lib
+@@ -4282,20 +4133,6 @@ lib
  \end_inset
  
   
@@ -1529,7 +1546,7 @@ index c8f8e73..e4afb0c 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4423,20 +4260,6 @@ include
+@@ -4476,20 +4313,6 @@ include
  \end_inset
  
   
@@ -1550,7 +1567,7 @@ index c8f8e73..e4afb0c 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4451,20 +4274,6 @@ lib
+@@ -4504,20 +4327,6 @@ lib
  \end_inset
  
   
@@ -1571,7 +1588,7 @@ index c8f8e73..e4afb0c 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4561,7 +4370,7 @@ Install paths
+@@ -4614,7 +4423,7 @@ Install paths
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1580,7 +1597,7 @@ index c8f8e73..e4afb0c 100644
  <features tabularvalignment="middle">
  <column alignment="left" valignment="top">
  <column alignment="left" valignment="top" width="4.5cm">
-@@ -4717,64 +4526,6 @@ include
+@@ -4770,64 +4579,6 @@ include
  <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
  \begin_inset Text
  
@@ -1645,7 +1662,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Plain Layout
  Library file**
  \end_layout
-@@ -4824,64 +4575,6 @@ sdcc
+@@ -4877,64 +4628,6 @@ sdcc
  lib
  \end_layout
  
@@ -1710,7 +1727,7 @@ index c8f8e73..e4afb0c 100644
  \end_inset
  </cell>
  </row>
-@@ -5204,7 +4897,7 @@ $PATH
+@@ -5257,7 +4950,7 @@ $PATH
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1719,7 +1736,7 @@ index c8f8e73..e4afb0c 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0.5cm">
  <column alignment="block" valignment="top" width="4.8cm">
-@@ -5482,203 +5175,13 @@ include
+@@ -5535,203 +5228,13 @@ include
  </cell>
  </row>
  <row>
@@ -1924,7 +1941,7 @@ index c8f8e73..e4afb0c 100644
  \end_inset
  </cell>
  <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-@@ -5694,21 +5197,13 @@ $DATADIR/
+@@ -5747,21 +5250,13 @@ $DATADIR/
  \end_inset
  
  
@@ -1947,7 +1964,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -5716,7 +5211,7 @@ $INCLUDE_DIR_SUFFIX
+@@ -5769,7 +5264,7 @@ $INCLUDE_DIR_SUFFIX
  \begin_inset Newline newline
  \end_inset
  
@@ -1956,7 +1973,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \end_inset
-@@ -5814,7 +5309,7 @@ model
+@@ -5867,7 +5362,7 @@ model
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1965,7 +1982,7 @@ index c8f8e73..e4afb0c 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0.5cm">
  <column alignment="block" valignment="top" width="4.5cm">
-@@ -6094,7 +5589,7 @@ lib
+@@ -6147,7 +5642,7 @@ lib
  </cell>
  </row>
  <row>
@@ -1974,7 +1991,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6103,7 +5598,7 @@ lib
+@@ -6156,7 +5651,7 @@ lib
  
  \end_inset
  </cell>
@@ -1983,7 +2000,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6134,7 +5629,7 @@ $LIB_DIR_SUFFIX/
+@@ -6187,7 +5682,7 @@ $LIB_DIR_SUFFIX/
  
  \end_inset
  </cell>
@@ -1992,7 +2009,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6149,7 +5644,7 @@ lib/
+@@ -6202,7 +5697,7 @@ lib/
  
  \end_inset
  </cell>
@@ -2001,7 +2018,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6172,308 +5667,6 @@ lib
+@@ -6225,308 +5720,6 @@ lib
  <model>
  \end_layout
  
@@ -2310,7 +2327,7 @@ index c8f8e73..e4afb0c 100644
  \end_inset
  </cell>
  </row>
-@@ -8737,14 +7930,6 @@ In <installdir>/share/sdcc/include
+@@ -8801,14 +7994,6 @@ In <installdir>/share/sdcc/include
  the include files
  \end_layout
  
@@ -2325,7 +2342,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Standard
  In <installdir>/share/sdcc/lib
  \end_layout
-@@ -8753,14 +7938,6 @@ In <installdir>/share/sdcc/lib
+@@ -8817,14 +8002,6 @@ In <installdir>/share/sdcc/lib
  the src and target subdirectories with the precompiled relocatables.
  \end_layout
  
@@ -2340,7 +2357,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Standard
  In <installdir>/share/sdcc/doc
  \end_layout
-@@ -15274,66 +14451,6 @@ splint
+@@ -15590,66 +14767,6 @@ splint
  myprogram.c
  \end_layout
  
@@ -2407,7 +2424,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Subsection
  Linker Options
  \begin_inset Index idx
-@@ -44653,66 +43770,9 @@ http://sourceforge.net/projects/gputils
+@@ -45248,66 +44365,9 @@ http://sourceforge.net/projects/gputils
  Pic device specific header and c source files are automatically generated
   from MPLAB include files, which are published by Microchip with a special
   requirement that they are only to be used with authentic Microchip devices.
@@ -2477,7 +2494,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -44766,7 +43826,7 @@ Makefile
+@@ -45361,7 +44421,7 @@ Makefile
  \begin_inset space ~
  \end_inset
  
@@ -2486,7 +2503,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -44860,7 +43920,7 @@ Makefile
+@@ -45455,7 +44515,7 @@ Makefile
  \begin_inset space ~
  \end_inset
  
@@ -2495,7 +2512,7 @@ index c8f8e73..e4afb0c 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -45142,47 +44202,6 @@ status collapsed
+@@ -45737,47 +44797,6 @@ status collapsed
  \begin_layout Plain Layout
  
  
@@ -2543,7 +2560,7 @@ index c8f8e73..e4afb0c 100644
  \backslash
  /
  \end_layout
-@@ -46055,47 +45074,6 @@ status collapsed
+@@ -46650,47 +45669,6 @@ status collapsed
  -all-callee-saves
  \end_layout
  
@@ -2591,7 +2608,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Subsection
  Port Specific Options
  \begin_inset Index idx
-@@ -47372,188 +46350,6 @@ Linker
+@@ -47967,188 +46945,6 @@ Linker
  \end_inset
  
  
@@ -2780,7 +2797,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \begin_layout Subsection
-@@ -48249,66 +47045,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
+@@ -48844,66 +47640,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
  Pic device specific header and c source files are automatically generated
   from MPLAB include files, which are published by Microchip with a special
   requirement that they are only to be used with authentic Microchip devices.
@@ -2850,7 +2867,7 @@ index c8f8e73..e4afb0c 100644
  \end_layout
  
  \begin_layout Subsection
-@@ -48554,195 +47293,6 @@ vfprintf.c
+@@ -49149,195 +47888,6 @@ vfprintf.c
   should also work, but is untested.
  \end_layout
  
@@ -3046,7 +3063,7 @@ index c8f8e73..e4afb0c 100644
  \begin_layout Subsection
  Memory Models
  \end_layout
-@@ -73528,6 +72078,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
+@@ -74082,6 +72632,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
   developers.
  \end_layout
  
@@ -3060,7 +3077,7 @@ index c8f8e73..e4afb0c 100644
  All product names mentioned herein may be trademarks
  \begin_inset Index idx
 diff --git a/sdcc.spec b/sdcc.spec
-index 3609ffe..4b4a5cb 100644
+index 85ae200..8e0ef4b 100644
 --- a/sdcc.spec
 +++ b/sdcc.spec
 @@ -89,9 +89,7 @@ rm -rf $RPM_BUILD_ROOT
@@ -3073,8 +3090,8 @@ index 3609ffe..4b4a5cb 100644
  
  %files doc
  %defattr(-,root,root)
-@@ -100,6 +98,8 @@ rm -rf $RPM_BUILD_ROOT
- %changelog
+@@ -102,6 +100,8 @@ rm -rf $RPM_BUILD_ROOT
+ - version updated to 4.2.0
  * Sat Feb 20 2021 - pkk AT spth.de
  - version updated to 4.0.0
 +* Tue Dec 08 2020 - simon AT simonsouth.net
@@ -3083,7 +3100,7 @@ index 3609ffe..4b4a5cb 100644
  - version updated to 4.0.0
  * Fri Apr 05 2019 - krauseph AT informatik.uni-freiburg.de
 diff --git a/sdcc_vc.h.in b/sdcc_vc.h.in
-index 06d8cca..736c325 100644
+index 8cf401b..19f5113 100644
 --- a/sdcc_vc.h.in
 +++ b/sdcc_vc.h.in
 @@ -23,8 +23,6 @@
@@ -3096,7 +3113,7 @@ index 06d8cca..736c325 100644
  #define BIN2DATA_DIR                "\\.."
  #define PREFIX2BIN_DIR              "\\bin"
 diff --git a/sdccconf_in.h b/sdccconf_in.h
-index eb6f48b..9f5b003 100644
+index ca8d69f..980af8d 100644
 --- a/sdccconf_in.h
 +++ b/sdccconf_in.h
 @@ -100,12 +100,6 @@
@@ -3112,9 +3129,9 @@ index eb6f48b..9f5b003 100644
  /* Define to 1 to disable the AVR port */
  #undef OPT_DISABLE_AVR
  
-@@ -130,9 +124,6 @@
+@@ -133,9 +127,6 @@
  /* XXX */
- #undef OPT_DISABLE_MCS51
+ #undef OPT_DISABLE_MOS65C02
  
 -/* XXX */
 -#undef OPT_DISABLE_NON_FREE
@@ -3123,10 +3140,10 @@ index eb6f48b..9f5b003 100644
  #undef OPT_DISABLE_PACKIHX
  
 diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h
-index 9383f68..c2f0b42 100644
+index b49fa1b..d357169 100644
 --- a/src/SDCCglobl.h
 +++ b/src/SDCCglobl.h
-@@ -288,7 +288,6 @@ struct options
+@@ -287,7 +287,6 @@ struct options
      int stack_size;             /* MCS51/DS390 - Tells the linker to allocate this space for stack */
      int acall_ajmp;             /* MCS51 - Use acall/ajmp instead of lcall/ljmp */
      int no_ret_without_call;    /* MCS51 - Do not use ret independent of acall/lcall */
@@ -3135,7 +3152,7 @@ index 9383f68..c2f0b42 100644
      int xstack_loc;             /* initial location of external stack */
      int stack_loc;              /* initial value of internal stack pointer */
 diff --git a/src/SDCCmain.c b/src/SDCCmain.c
-index 2a7a711..f46370f 100644
+index bc1493d..e775988 100644
 --- a/src/SDCCmain.c
 +++ b/src/SDCCmain.c
 @@ -151,7 +151,6 @@ char buffer[PATH_MAX * 2];
@@ -3146,7 +3163,7 @@ index 2a7a711..f46370f 100644
  #define OPTION_PEEP_RETURN          "--peep-return"
  #define OPTION_NO_PEEP_RETURN       "--no-peep-return"
  #define OPTION_NO_OPTSDCC_IN_ASM    "--no-optsdcc-in-asm"
-@@ -207,7 +206,6 @@ static const OPTION optionsTable[] = {
+@@ -209,7 +208,6 @@ static const OPTION optionsTable[] = {
    {0,   OPTION_STD_SDCC2X, NULL, "Use ISO C2X standard with SDCC extensions"},
    {0,   OPTION_DOLLARS_IN_IDENT, &options.dollars_in_ident, "Permit '$' as an identifier character"},
    {0,   OPTION_SIGNED_CHAR, &options.signed_char, "Make \"char\" signed by default"},
@@ -3154,7 +3171,7 @@ index 2a7a711..f46370f 100644
  
    {0,   NULL, NULL, "Code generation options"},
    {'m', NULL, NULL, "Set the port to use e.g. -mz80."},
-@@ -2113,10 +2111,6 @@ preProcess (char **envp)
+@@ -2132,10 +2130,6 @@ preProcess (char **envp)
        else
          addSet (&preArgvSet, Safe_strdup ("-D__SDCC_CHAR_UNSIGNED"));
  
@@ -3165,7 +3182,7 @@ index 2a7a711..f46370f 100644
        /* set the macro for large model  */
        switch (options.model)
          {
-@@ -2336,12 +2330,6 @@ setIncludePath (void)
+@@ -2365,12 +2359,6 @@ setIncludePath (void)
     *  6. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX
     *  7. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX
     *  8. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix)
@@ -3178,7 +3195,7 @@ index 2a7a711..f46370f 100644
     */
  
    if (!options.nostdinc)
-@@ -2357,17 +2345,6 @@ setIncludePath (void)
+@@ -2386,17 +2374,6 @@ setIncludePath (void)
          includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL);
        mergeSets (&includeDirsSet, tempSet);
  
@@ -3196,7 +3213,7 @@ index 2a7a711..f46370f 100644
        if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL)
          {
            struct dbuf_s dbuf;
-@@ -2392,9 +2369,6 @@ setLibPath (void)
+@@ -2421,9 +2398,6 @@ setLibPath (void)
     * 3. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/<model>
     * 4. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/<model>
     * 5. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix)
@@ -3206,7 +3223,7 @@ index 2a7a711..f46370f 100644
     */
  
    if (!options.nostdlib)
-@@ -2411,13 +2385,6 @@ setLibPath (void)
+@@ -2440,13 +2414,6 @@ setLibPath (void)
        dbuf_makePath (&dbuf, LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname);
        libDirsSet = processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL);
  
@@ -3221,7 +3238,7 @@ index 2a7a711..f46370f 100644
          {
            addSetHead (&libDirsSet, Safe_strdup (p));
 diff --git a/src/pic14/main.c b/src/pic14/main.c
-index ee90470..519ccfc 100644
+index 38d8730..a0eecdb 100644
 --- a/src/pic14/main.c
 +++ b/src/pic14/main.c
 @@ -42,7 +42,6 @@ static OPTION _pic14_poptions[] =
@@ -3232,7 +3249,7 @@ index ee90470..519ccfc 100644
      { 0, NULL, NULL, NULL }
    };
  
-@@ -176,16 +175,6 @@ _pic14_finaliseOptions (void)
+@@ -180,16 +179,6 @@ _pic14_finaliseOptions (void)
      addSet (&preArgvSet, Safe_strdup (dbuf_detach_c_str (&dbuf)));
    }
  
@@ -3274,10 +3291,10 @@ index cdfbba0..5877f09 100644
  
  extern pic16_options_t pic16_options;
 diff --git a/src/pic16/main.c b/src/pic16/main.c
-index d416642..bfe514d 100644
+index b0e717a..d7616f5 100644
 --- a/src/pic16/main.c
 +++ b/src/pic16/main.c
-@@ -655,7 +655,6 @@ OPTION pic16_optionsTable[]= {
+@@ -660,7 +660,6 @@ OPTION pic16_optionsTable[]= {
      { 0, "--pcode-verbose",     &pic16_pcode_verbose, "dump pcode related info"},
      { 0, "--calltree",          &pic16_options.dumpcalltree, "dump call tree in .calltree file"},
      { 0, "--gstack",            &pic16_options.gstack, "trace stack pointer push/pop to overflow"},
@@ -3285,7 +3302,7 @@ index d416642..bfe514d 100644
      { 0, NULL,                  NULL, NULL}
  };
  
-@@ -940,16 +939,6 @@ _pic16_finaliseOptions (void)
+@@ -945,16 +944,6 @@ _pic16_finaliseOptions (void)
        addSet (&asmOptionsSet, Safe_strdup ("-D__STACK_MODEL_SMALL"));
      }
  
@@ -3302,7 +3319,7 @@ index d416642..bfe514d 100644
    dbuf_destroy (&dbuf);
  }
  
-@@ -979,7 +968,6 @@ _pic16_setDefaultOptions (void)
+@@ -984,7 +973,6 @@ _pic16_setDefaultOptions (void)
    pic16_options.ip_stack = 1;       /* set to 1 to enable ipop/ipush for stack */
    pic16_options.gstack = 0;
    pic16_options.debgen = 0;
@@ -3496,10 +3513,10 @@ index 6db417a..4b35225 100755
    );
  
 diff --git a/support/scripts/sdcc.nsi b/support/scripts/sdcc.nsi
-index da63063..dae8d8d 100644
+index cebb8a6..778472a 100644
 --- a/support/scripts/sdcc.nsi
 +++ b/support/scripts/sdcc.nsi
-@@ -479,11 +479,6 @@ ${Section} "SDCC include files" SEC05
+@@ -480,11 +480,6 @@ ${Section} "SDCC include files" SEC05
  
    SetOutPath "$INSTDIR\include"
    File "${DEV_ROOT}\include\*.h"
@@ -3511,7 +3528,7 @@ index da63063..dae8d8d 100644
  ${SectionEnd}
  
  ${Section} "SDCC DS390 library" SEC06
-@@ -581,18 +576,12 @@ ${Section} "SDCC PIC16 library" SEC21
+@@ -582,18 +577,12 @@ ${Section} "SDCC PIC16 library" SEC21
    SetOutPath "$INSTDIR\lib\pic16"
    File "${DEV_ROOT}\lib\pic16\*.o"
    File "${DEV_ROOT}\lib\pic16\*.lib"
@@ -3530,7 +3547,7 @@ index da63063..dae8d8d 100644
  ${SectionEnd}
  
  ${Section} "SDCC STM8 small model library" SEC23
-@@ -697,10 +686,6 @@ ${Section} "SDCC library sources" SEC25
+@@ -702,10 +691,6 @@ ${Section} "SDCC library sources" SEC25
    File "${DEV_ROOT}\lib\src\pic14\libsdcc\enhanced\*.inc"
  #  File "${DEV_ROOT}\lib\src\pic14\libsdcc\Makefile"
  
@@ -3541,7 +3558,7 @@ index da63063..dae8d8d 100644
    SetOutPath "$INSTDIR\lib\src\pic14\libm"
  #  File "${DEV_ROOT}\lib\src\pic14\libm\*.c"
  
-@@ -752,10 +737,6 @@ ${Section} "SDCC library sources" SEC25
+@@ -757,10 +742,6 @@ ${Section} "SDCC library sources" SEC25
    File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
  #  File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
  
@@ -3552,7 +3569,7 @@ index da63063..dae8d8d 100644
    SetOutPath "$INSTDIR\lib\src\pic16\libio"
    File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
  #  File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
-@@ -1105,13 +1086,9 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1126,13 +1107,9 @@ ${Section} Uninstall SECUNINSTALL
  
    Delete "$INSTDIR\lib\pic14\*.lib"
  
@@ -3566,7 +3583,7 @@ index da63063..dae8d8d 100644
    Delete "$INSTDIR\lib\hc08\*.lib"
  
    Delete "$INSTDIR\lib\s08\*.lib"
-@@ -1182,9 +1159,7 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1208,9 +1185,7 @@ ${Section} Uninstall SECUNINSTALL
    Delete "$INSTDIR\include\pic14\*.h"
    Delete "$INSTDIR\include\pic14\*.txt"
    Delete "$INSTDIR\include\pic14\*.inc"
@@ -3576,7 +3593,7 @@ index da63063..dae8d8d 100644
    Delete "$INSTDIR\include\pic16\*.txt"
    Delete "$INSTDIR\include\mcs51\*.h"
    Delete "$INSTDIR\include\hc08\*.h"
-@@ -1246,9 +1221,7 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1273,9 +1248,7 @@ ${Section} Uninstall SECUNINSTALL
    Delete "$INSTDIR\uninstall.exe"
  
    RMDir /r "$INSTDIR\lib\src\pic14"
@@ -3586,8 +3603,8 @@ index da63063..dae8d8d 100644
    RMDir "$INSTDIR\lib\src\small"
    RMDir "$INSTDIR\lib\src\medium"
    RMDir "$INSTDIR\lib\src\large"
-@@ -1274,12 +1247,9 @@ ${Section} Uninstall SECUNINSTALL
-   RMDir "$INSTDIR\lib\src\tlcs90"
+@@ -1303,12 +1276,9 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\src\mos6502"
    RMDir "$INSTDIR\lib\src\z80n"
    RMDir "$INSTDIR\lib\src"
 -  RMDir "$INSTDIR\non-free\lib\src"
@@ -3599,8 +3616,8 @@ index da63063..dae8d8d 100644
    RMDir "$INSTDIR\lib\z80"
    RMDir "$INSTDIR\lib\z180"
    RMDir "$INSTDIR\lib\r2k"
-@@ -1305,15 +1275,12 @@ ${Section} Uninstall SECUNINSTALL
-   RMDir "$INSTDIR\lib\tlcs90"
+@@ -1336,15 +1306,12 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\mos6502"
    RMDir "$INSTDIR\lib\z80n"
    RMDir "$INSTDIR\lib"
 -  RMDir "$INSTDIR\non-free\lib"
@@ -3613,9 +3630,9 @@ index da63063..dae8d8d 100644
    RMDir "$INSTDIR\include\asm\pic14"
 -  RMDir "$INSTDIR\non-free\include\asm\pic14"
    RMDir "$INSTDIR\include\asm\mcs51"
-   RMDir "$INSTDIR\include\asm\gbz80"
+   RMDir "$INSTDIR\include\asm\sm83"
    RMDir "$INSTDIR\include\asm\ds390"
-@@ -1322,17 +1289,12 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1353,17 +1320,12 @@ ${Section} Uninstall SECUNINSTALL
    RMDir "$INSTDIR\include\asm"
    RMDir "$INSTDIR\include\z180"
    RMDir "$INSTDIR\include\pic14"
diff --git a/gnu/packages/patches/streamlink-update-test.patch b/gnu/packages/patches/streamlink-update-test.patch
deleted file mode 100644
index 2d90009192..0000000000
--- a/gnu/packages/patches/streamlink-update-test.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-https://github.com/streamlink/streamlink/commit/a3123346824ee7b9c461110f292ea6987ea9a78d.patch
-This is taken from upstream, and can be removed at the next release
-
-From c6f3994e177a42792238f2edd07ba9053c10abc9 Mon Sep 17 00:00:00 2001
-From: back-to <backto@protonmail.ch>
-Date: Sat, 21 Jul 2018 14:30:51 +0200
-Subject: [PATCH] tests.localization: use en_CA instead of en_US for
- test_equivalent
-
-**python-iso3166** got an update which breaks the Streamlink tests.
-https://pypi.org/project/iso3166/#history
-
-**python-iso3166** and **pycountry** have now a different `name` for _the United States of America_
-
-> python-iso3166: United States of America
-https://github.com/deactivated/python-iso3166/commit/e5f8b37f18b01fcb5fa0e8130d8296fc7a7b5a9f
-
-> pycountry: United States
-https://bitbucket.org/flyingcircus/pycountry/src/5aa4bb47e33798cb631a81521b7b5b18f7d6c919/src/pycountry/databases/iso3166-1.json?at=default&fileviewer=file-view-default#iso3166-1.json-1572:1578
-
-https://www.iso.org/obp/ui/#iso:code:3166:US
-
----
-
-use **en_CA** instead of **en_US** for backwards compatibility,
-as changing the **US** name would fail with older versions of **python-iso3166** / **pycountry**
----
- tests/test_localization.py | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/tests/test_localization.py b/tests/test_localization.py
-index 0b81ae591..90bb3ac31 100644
---- a/tests/test_localization.py
-+++ b/tests/test_localization.py
-@@ -32,11 +32,12 @@ def test_bad_language_code(self):
-         self.assertRaises(LookupError, l10n.Localization, "enUS")
- 
-     def test_equivalent(self):
--        l = l10n.Localization("en_US")
-+        l = l10n.Localization("en_CA")
-         self.assertTrue(l.equivalent(language="eng"))
-         self.assertTrue(l.equivalent(language="en"))
--        self.assertTrue(l.equivalent(language="en", country="US"))
--        self.assertTrue(l.equivalent(language="en", country="United States"))
-+        self.assertTrue(l.equivalent(language="en", country="CA"))
-+        self.assertTrue(l.equivalent(language="en", country="CAN"))
-+        self.assertTrue(l.equivalent(language="en", country="Canada"))
- 
-     def test_equivalent_remap(self):
-         l = l10n.Localization("fr_FR")
-@@ -48,7 +49,7 @@ def test_not_equivalent(self):
-         self.assertFalse(l.equivalent(language="eng"))
-         self.assertFalse(l.equivalent(language="en"))
-         self.assertFalse(l.equivalent(language="en", country="US"))
--        self.assertFalse(l.equivalent(language="en", country="United States"))
-+        self.assertFalse(l.equivalent(language="en", country="Canada"))
-         self.assertFalse(l.equivalent(language="en", country="ES"))
-         self.assertFalse(l.equivalent(language="en", country="Spain"))
- 
-@@ -71,8 +72,8 @@ def test_get_country(self):
-                          l10n.Localization.get_country("USA").alpha2)
-         self.assertEqual("GB",
-                          l10n.Localization.get_country("GB").alpha2)
--        self.assertEqual("United States",
--                         l10n.Localization.get_country("United States").name)
-+        self.assertEqual("Canada",
-+                         l10n.Localization.get_country("Canada").name)
- 
-     def test_get_country_miss(self):
-         self.assertRaises(LookupError, l10n.Localization.get_country, "XE")
diff --git a/gnu/packages/patches/tcc-boot-0.9.27.patch b/gnu/packages/patches/tcc-boot-0.9.27.patch
deleted file mode 100644
index 6f9d365788..0000000000
--- a/gnu/packages/patches/tcc-boot-0.9.27.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 1431ba3a99582e4c3d2693ac37e57f361858affd Mon Sep 17 00:00:00 2001
-From: Jan Nieuwenhuizen <janneke@gnu.org>
-Date: Mon, 11 Jun 2018 18:39:44 +0200
-Subject: [PATCH] bootstrappable: Force static link.
-
----
- libtcc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/libtcc.c b/libtcc.c
-index 3448f44..02ab850 100644
---- a/libtcc.c
-+++ b/libtcc.c
-@@ -735,6 +735,9 @@ LIBTCCAPI TCCState *tcc_new(void)
-     tcc_state = s;
-     ++nb_states;
- 
-+#if BOOTSTRAP
-+    s->static_link = 1;
-+#endif
-     s->alacarte_link = 1;
-     s->nocommon = 1;
-     s->warn_implicit_function_declaration = 1;
--- 
-2.16.2
-
diff --git a/gnu/packages/patches/transfig-gcc10-fno-common.patch b/gnu/packages/patches/transfig-gcc10-fno-common.patch
new file mode 100644
index 0000000000..ebe9236533
--- /dev/null
+++ b/gnu/packages/patches/transfig-gcc10-fno-common.patch
@@ -0,0 +1,33 @@
+Fixes "multiple definition" errors when building with GCC 10+.
+
+Based on <https://bugs.gentoo.org/show_bug.cgi?id=706706>.
+--- a/fig2dev/dev/gensvg.c	2010-07-01 22:41:16.000000000 +0200
++++ b/fig2dev/dev/gensvg.c	2022-02-27 20:02:33.379945500 +0100
+@@ -230,10 +230,12 @@
+ };
+ 
+ /* arrowhead arrays */
+-Point   points[50], fillpoints[50], clippoints[50];
+-int     npoints, nfillpoints, nclippoints;
+-int     arrowx1, arrowy1;	/* first point of object */
+-int     arrowx2, arrowy2;	/* second point of object */
++Point   fillpoints[50];
++int     nfillpoints;
++extern Point   points[50], clippoints[50];
++extern int     npoints, nclippoints;
++extern int     arrowx1, arrowy1;	/* first point of object */
++extern int     arrowx2, arrowy2;	/* second point of object */
+ 
+ static int tileno=0; /* number of current tile */ 
+ 
+--- a/fig2dev/fig2dev.h	2010-03-16 19:53:20.000000000 +0100
++++ b/fig2dev/fig2dev.h	2022-02-27 19:56:06.072253991 +0100
+@@ -126,7 +126,7 @@
+ extern char	*prog, *from, *to;
+ extern char	*name;
+ extern double	font_size;
+-Boolean	correct_font_size;	/* use correct font size */
++extern Boolean	correct_font_size;	/* use correct font size */
+ extern double	mag, fontmag;
+ extern FILE	*tfp;
+ 
diff --git a/gnu/packages/patches/upower-builddir.patch b/gnu/packages/patches/upower-builddir.patch
deleted file mode 100644
index a61d387faf..0000000000
--- a/gnu/packages/patches/upower-builddir.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 27ae011b31d831752b97eb209bc2b2206fcf40f7 Mon Sep 17 00:00:00 2001
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Mon, 28 Jun 2021 11:58:47 +0200
-Subject: [PATCH] gnu: upower: Fix build directory.
-
-Remove explicit set of UPOWER_CONF_FILE_NAME in up-self-test.c;
-instead the harness should set it.  In Guix we set it explicitly; the
-right thing is to use AM_TEST_ENVIRONMENT and regenerate the
-makefiles, but we can't regenerate because current autotools carp on
-some things, so we patch the Makefile.in instead.
-
-Also fix to not try to create /var/lib/upower if /var isn't writable.
-
-Based on a patch by Andy Wingo <wingo@igalia.com>
----
- src/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 3400139..f51ee89 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -181,7 +181,7 @@ $(systemdservice_DATA): $(systemdservice_in_files) Makefile
- endif
- 
- install-data-hook:
--	if test -w $(DESTDIR)$(prefix)/; then \
-+	if test -w $(DESTDIR)$(localstatedir)/; then \
- 		mkdir -p $(DESTDIR)$(historydir); \
- 	fi
- 
--- 
-2.32.0
-
diff --git a/gnu/packages/patches/vtk-8-fix-freetypetools-build-failure.patch b/gnu/packages/patches/vtk-8-fix-freetypetools-build-failure.patch
deleted file mode 100644
index 6988e65872..0000000000
--- a/gnu/packages/patches/vtk-8-fix-freetypetools-build-failure.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This fixes a build failure in VTK when building against recent versions
-of freetype.
-
-  https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7432
-
-Patch by Ben Boeckel <ben.boeckel@kitware.com>
-
-Subject: [PATCH] vtkFreeTypeTools: avoid using an internal macro
-
-This macro has been removed upstream as it was always intended to be
-private.
----
- Rendering/FreeType/vtkFreeTypeTools.cxx | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/Rendering/FreeType/vtkFreeTypeTools.cxx b/Rendering/FreeType/vtkFreeTypeTools.cxx
-index c54289dc60..03b899c4da 100644
---- a/Rendering/FreeType/vtkFreeTypeTools.cxx
-+++ b/Rendering/FreeType/vtkFreeTypeTools.cxx
-@@ -387,11 +387,8 @@ FTC_CMapCache* vtkFreeTypeTools::GetCMapCache()
- }
- 
- //----------------------------------------------------------------------------
--FT_CALLBACK_DEF(FT_Error)
--vtkFreeTypeToolsFaceRequester(FTC_FaceID face_id,
--                              FT_Library lib,
--                              FT_Pointer request_data,
--                              FT_Face* face)
-+static FT_Error vtkFreeTypeToolsFaceRequester(
-+  FTC_FaceID face_id, FT_Library lib, FT_Pointer request_data, FT_Face* face)
- {
- #if VTK_FTFC_DEBUG_CD
-   printf("vtkFreeTypeToolsFaceRequester()\n");
--- 
-2.30.1
-
diff --git a/gnu/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch b/gnu/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch
new file mode 100644
index 0000000000..18ddb645ad
--- /dev/null
+++ b/gnu/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch
@@ -0,0 +1,38 @@
+Share /gnu/store in the BubbleWrap container and remove FHS mounts.
+
+This is a Guix-specific patch not meant to be upstreamed.
+diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
+index f0a5e4b05dff..88b11f806968 100644
+--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
++++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
+@@ -854,27 +854,12 @@ GRefPtr<GSubprocess> bubblewrapSpawn(GSubprocessLauncher* launcher, const Proces
+         "--ro-bind", "/sys/dev", "/sys/dev",
+         "--ro-bind", "/sys/devices", "/sys/devices",
+ 
+-        "--ro-bind-try", "/usr/share", "/usr/share",
+-        "--ro-bind-try", "/usr/local/share", "/usr/local/share",
+         "--ro-bind-try", DATADIR, DATADIR,
+-
+-        // We only grant access to the libdirs webkit is built with and
+-        // guess system libdirs. This will always have some edge cases.
+-        "--ro-bind-try", "/lib", "/lib",
+-        "--ro-bind-try", "/usr/lib", "/usr/lib",
+-        "--ro-bind-try", "/usr/local/lib", "/usr/local/lib",
+         "--ro-bind-try", LIBDIR, LIBDIR,
+-#if CPU(ADDRESS64)
+-        "--ro-bind-try", "/lib64", "/lib64",
+-        "--ro-bind-try", "/usr/lib64", "/usr/lib64",
+-        "--ro-bind-try", "/usr/local/lib64", "/usr/local/lib64",
+-#else
+-        "--ro-bind-try", "/lib32", "/lib32",
+-        "--ro-bind-try", "/usr/lib32", "/usr/lib32",
+-        "--ro-bind-try", "/usr/local/lib32", "/usr/local/lib32",
+-#endif
+-
+         "--ro-bind-try", PKGLIBEXECDIR, PKGLIBEXECDIR,
++
++        // Bind mount the store inside the WebKitGTK sandbox.
++        "--ro-bind", "@storedir@", "@storedir@",
+     };
+ 
+     if (launchOptions.processType == ProcessLauncher::ProcessType::DBusProxy) {
diff --git a/gnu/packages/patches/webkitgtk-bind-all-fonts.patch b/gnu/packages/patches/webkitgtk-bind-all-fonts.patch
index e7b06cc650..27013180c4 100644
--- a/gnu/packages/patches/webkitgtk-bind-all-fonts.patch
+++ b/gnu/packages/patches/webkitgtk-bind-all-fonts.patch
@@ -1,26 +1,25 @@
-Add fonts from all XDG_DATA_DIRS, not just XDG_DATA_HOME.
+Upstream commit: https://github.com/WebKit/WebKit/commit/31ac354cbeecf866f9a38f7b2f8f59f7975d3f6a
 
-See <http://bugs.gnu.org/41174>.
-Author: Liliana Marie Prikler <liliana.prikler@gmail.com>
-Index: webkitgtk-2.28.2/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
-===================================================================
+diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
+index ecc804663784..8de174be3c0e 100644
 --- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
 +++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
-@@ -387,6 +387,7 @@ static void bindFonts(Vector<CString>& args)
+@@ -288,6 +288,7 @@ static void bindFonts(Vector<CString>& args)
      const char* homeDir = g_get_home_dir();
      const char* dataDir = g_get_user_data_dir();
      const char* cacheDir = g_get_user_cache_dir();
 +    const char* const * dataDirs = g_get_system_data_dirs();
-
+ 
      // Configs can include custom dirs but then we have to parse them...
      GUniquePtr<char> fontConfig(g_build_filename(configDir, "fontconfig", nullptr));
-@@ -403,6 +404,10 @@ static void bindFonts(Vector<CString>& args)
+@@ -304,6 +305,10 @@ static void bindFonts(Vector<CString>& args)
      bindIfExists(args, fontHomeConfigDir.get());
      bindIfExists(args, fontData.get());
      bindIfExists(args, fontHomeData.get());
-+    for (auto dataDir = dataDirs; dataDir != nullptr && *dataDir != nullptr; dataDir++) {
++    for (auto* dataDir = dataDirs; dataDir && *dataDir; dataDir++) {
 +        GUniquePtr<char> fontDataDir(g_build_filename(*dataDir, "fonts", nullptr));
 +        bindIfExists(args, fontDataDir.get());
 +    }
      bindIfExists(args, "/var/cache/fontconfig"); // Used by Debian.
  }
+ 
diff --git a/gnu/packages/patches/webkitgtk-canonicalize-paths.patch b/gnu/packages/patches/webkitgtk-canonicalize-paths.patch
new file mode 100644
index 0000000000..741d534831
--- /dev/null
+++ b/gnu/packages/patches/webkitgtk-canonicalize-paths.patch
@@ -0,0 +1,66 @@
+Upstream commit: https://github.com/WebKit/WebKit/commit/6a87eb254ef57a986a1a6ce9a3a4b66928afeb65
+
+diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
+index ecc804663784..a2a1c9d7a4dd 100644
+--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
++++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
+@@ -27,7 +27,6 @@
+ #include <seccomp.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+-#include <unistd.h>
+ #include <wtf/FileSystem.h>
+ #include <wtf/UniStdExtras.h>
+ #include <wtf/glib/GRefPtr.h>
+@@ -165,6 +164,15 @@ enum class BindFlags {
+     Device,
+ };
+ 
++static void bindSymlinksRealPath(Vector<CString>& args, const char* path, const char* bindOption = "--ro-bind")
++{
++    WTF::String realPath = FileSystem::realPath(path);
++    if (path != realPath) {
++        CString rpath = realPath.utf8();
++        args.appendVector(Vector<CString>({ bindOption, rpath.data(), rpath.data() }));
++    }
++}
++
+ static void bindIfExists(Vector<CString>& args, const char* path, BindFlags bindFlags = BindFlags::ReadOnly)
+ {
+     if (!path || path[0] == '\0')
+@@ -177,7 +185,16 @@ static void bindIfExists(Vector<CString>& args, const char* path, BindFlags bind
+         bindType = "--ro-bind-try";
+     else
+         bindType = "--bind-try";
+-    args.appendVector(Vector<CString>({ bindType, path, path }));
++
++    // Canonicalize the source path, otherwise a symbolic link could
++    // point to a location outside of the namespace.
++    bindSymlinksRealPath(args, path, bindType);
++
++    // As /etc is exposed wholesale, do not layer extraneous bind
++    // directives on top, which could fail in the presence of symbolic
++    // links.
++    if (!g_str_has_prefix(path, "/etc/"))
++        args.appendVector(Vector<CString>({ bindType, path, path }));
+ }
+ 
+ static void bindDBusSession(Vector<CString>& args, bool allowPortals)
+@@ -410,17 +427,6 @@ static void bindV4l(Vector<CString>& args)
+     }));
+ }
+ 
+-static void bindSymlinksRealPath(Vector<CString>& args, const char* path)
+-{
+-    char realPath[PATH_MAX];
+-
+-    if (realpath(path, realPath) && strcmp(path, realPath)) {
+-        args.appendVector(Vector<CString>({
+-            "--ro-bind", realPath, realPath,
+-        }));
+-    }
+-}
+-
+ // Translate a libseccomp error code into an error message. libseccomp
+ // mostly returns negative errno values such as -ENOMEM, but some
+ // standard errno values are used for non-standard purposes where their
diff --git a/gnu/packages/patches/webkitgtk-share-store.patch b/gnu/packages/patches/webkitgtk-share-store.patch
deleted file mode 100644
index 053d86fcf4..0000000000
--- a/gnu/packages/patches/webkitgtk-share-store.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Tell bubblewrap to share the store.  Required for programs that use the
-sandboxing features such as Epiphany.
-
-See <https://bugs.gnu.org/40837>.
-Author: Jack Hill <jackhill@jackhill.us>
----
-diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
---- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
-+++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
-@@ -737,6 +737,9 @@ GRefPtr<GSubprocess> bubblewrapSpawn(GSubprocessLauncher* launcher, const Proces
-         "--ro-bind-try", "/usr/local/share", "/usr/local/share",
-         "--ro-bind-try", DATADIR, DATADIR,
- 
-+       // Bind mount the store inside the WebKitGTK sandbox.
-+       "--ro-bind", "@storedir@", "@storedir@",
-+
-         // We only grant access to the libdirs webkit is built with and
-         // guess system libdirs. This will always have some edge cases.
-         "--ro-bind-try", "/lib", "/lib",
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index b6b1e3ad85..34abfb3c2d 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,10 +22,12 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages pciutils)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
@@ -33,6 +36,46 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages base))
 
+(define-public hwdata
+  (package
+    (name "hwdata")
+    (version "0.356")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vcrhonek/hwdata")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0m04d93dwiplwp9v74nhnc0hyi2n007mylkg8f0frb46z5qjrpl3"))))
+    (build-system gnu-build-system)
+    (outputs '("out" "iab" "oui" "pci" "pnp" "usb"))
+    (native-inputs (list gzip))
+    (arguments
+     ;; Tests require pciutils, python, podman. Disable to avoid recursive dep.
+     (list
+      #:tests? #f
+      #:configure-flags #~(list (string-append "--datadir=" #$output "/share"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'install
+            (lambda _
+              (install-file "iab.txt" (string-append #$output:iab "/share/hwdata"))
+              (install-file "oui.txt" (string-append #$output:oui "/share/hwdata"))
+              (install-file "pci.ids" (string-append #$output:pci "/share/hwdata"))
+              (install-file "pnp.ids" (string-append #$output:pnp "/share/hwdata"))
+              (install-file "usb.ids" (string-append #$output:usb "/share/hwdata")))))))
+    (home-page "https://github.com/vcrhonek/hwdata")
+    (synopsis "Hardware identification and configuration data")
+    (description "@code{hwdata} contains various hardware identification and
+configuration data, such as the @file{pci.ids} and @file{usb.ids} databases.
+Each database is contained in a specific package output, such as the
+@code{pci} output for @file{pci.ids}, the @code{usb} output for
+@file{usb.ids}, etc.")
+    (license (list license:gpl2+
+                   license:expat)))) ;XFree86 1.0
+
 (define-public pciutils
   (package
     (name "pciutils")
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index d4e97e1d82..74c6166cc0 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
@@ -17,7 +17,7 @@
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019 Ben Sturmfels <ben@sturm.com.au>
 ;;; Copyright © 2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -42,6 +42,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
@@ -601,7 +602,7 @@ by using the poppler rendering engine.")
 (define-public zathura
   (package
     (name "zathura")
-    (version "0.4.8")
+    (version "0.4.9")
     (source (origin
               (method url-fetch)
               (uri
@@ -609,7 +610,7 @@ by using the poppler rendering engine.")
                               version ".tar.xz"))
               (sha256
                (base32
-                "1nr0ym1mi2afk4ycdf1ppmkcv7i7hyzwn4p3r4m0j2qm3nvaiami"))))
+                "0msy7s57mlx0wya99qpia4fpcy40pbj253kmx2y97nb0sqnc8c7w"))))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("gettext" ,gettext-minimal)
                      ("glib:bin" ,glib "bin")
@@ -618,7 +619,7 @@ by using the poppler rendering engine.")
                      ("python-sphinx" ,python-sphinx)
 
                      ;; For building icons.
-                     ("librsvg" ,librsvg)
+                     ("librsvg" ,(librsvg-for-system))
 
                      ;; For tests.
                      ("check" ,check)
@@ -884,45 +885,40 @@ using a stylus.")
 (define-public xournalpp
   (package
     (name "xournalpp")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/xournalpp/xournalpp")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ldf58l5sqy52x5dqfpdjdh7ldjilj9mw42jzsl5paxg0md2k0hl"))))
+        (base32 "16pf50x1ps8dcynnvw5lz7ggl0jg7qvzv6gkd30xg3hkcxff8ch3"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags (list "-DENABLE_CPPUNIT=ON") ;enable tests
-       #:imported-modules ((guix build glib-or-gtk-build-system)
+     (list
+      #:configure-flags #~(list "-DENABLE_CPPUNIT=ON") ;enable tests
+      #:imported-modules `((guix build glib-or-gtk-build-system)
                            ,@%cmake-build-system-modules)
-       #:modules (((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+      #:modules '(((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                   (guix build cmake-build-system)
                   (guix build utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-permissions-on-po-files
-           (lambda _
-             ;; Make sure 'msgmerge' can modify the PO files.
-             (for-each make-file-writable
-                       (find-files "." "\\.po$"))))
-         ;; Fix path to addr2line utility, which the crash reporter uses.
-         (add-after 'unpack 'fix-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/util/Stacktrace.cpp"
-               ;; Match only the commandline.
-               (("\"addr2line ")
-                (string-append "\"" (which "addr2line") " ")))))
-         (add-after 'install 'glib-or-gtk-wrap
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Fix path to addr2line utility, which the crash reporter uses.
+          (add-after 'unpack 'fix-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/util/Stacktrace.cpp"
+                ;; Match only the commandline.
+                (("\"addr2line ")
+                 (string-append "\""
+                                (search-input-file inputs "/bin/addr2line")
+                                " ")))))
+          (add-after 'install 'glib-or-gtk-wrap
+            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (native-inputs
-     `(("cppunit" ,cppunit)
-       ("gettext" ,gettext-minimal)
-       ("help2man" ,help2man)
-       ("pkg-config" ,pkg-config)))
+     (list cppunit gettext-minimal help2man pkg-config))
     (inputs
      (list alsa-lib
            gtk+
diff --git a/gnu/packages/pep.scm b/gnu/packages/pep.scm
index d0dfb0a685..d245ac74a3 100644
--- a/gnu/packages/pep.scm
+++ b/gnu/packages/pep.scm
@@ -130,13 +130,12 @@ OPENPGP=SEQUOIA
      (list asn1c ; >= 0.9.27
            pkg-config yml2))
     (inputs
-     `(("libetpan" ,fdik-libetpan)
-       ("libiconv" ,libiconv)
-       ("nettle" ,nettle)
-       ("openssl" ,openssl)
-       ("sequoia" ,sequoia)
-       ("sqlite3" ,sqlite)
-       ("util-linux" ,util-linux "lib"))) ;; uuid.h
+     (list fdik-libetpan
+           nettle
+           openssl
+           sequoia
+           sqlite
+           `(,util-linux "lib"))) ;; uuid.h
     (home-page "https://pep.foundation/")
     (synopsis "Library for automatic key management and encryption of
 messages")
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index d6ca055147..ba65cc6e6d 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -11007,7 +11007,8 @@ defined by Annex #11 is used to determine breaking positions.")
     (build-system perl-build-system)
     ;; FIXME: Tests fail on 32-bit architectures:
     ;; <https://rt.cpan.org/Public/Bug/Display.html?id=127007>.
-    (arguments `(#:tests? ,(target-64bit?)))
+    (arguments `(#:tests? ,(and (not (%current-target-system))
+                                (target-64bit?))))
     (native-inputs
      (list perl-test-fatal perl-test-leaktrace perl-variable-magic
            perl-test-pod))
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 2aa7610b8c..2f561abc2f 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -457,7 +457,7 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "3.8.0")
+    (version "3.8.1")
     (source
      (origin
        (method url-fetch)
@@ -465,7 +465,7 @@ photographic equipment.")
              "https://github.com/darktable-org/darktable/releases/"
              "download/release-" version "/darktable-" version ".tar.xz"))
        (sha256
-        (base32 "01gp9dg5wr2rg1k8cqs0l3s7ism8a4q8qypgwccd4jh7ip3wfr9f"))))
+        (base32 "1xmyn9haagizh8qqg91bm1lx3dq1v8failxj943mipnvaj80dvl1"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBINARY_PACKAGE_BUILD=On"
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index c0cbd24c9d..4adb05f722 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages image)
@@ -268,14 +269,19 @@ colors, styles, options and details.")
 (define-public asymptote
   (package
     (name "asymptote")
-    (version "2.77")
+    (version "2.79")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/asymptote/"
                            version "/asymptote-" version ".src.tgz"))
        (sha256
-        (base32 "0v5r8g3b7f2dxsiba4f3yrgfkigr5nsdhg6jrdsnqrmf6y7dqgdf"))))
+        (base32 "060gy2h1wa3ivjn51g21g7vh79jn74zbkz5ha5pq45bxqn4xs5cs"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bundled RapidJSON.
+        #~(begin
+            (delete-file-recursively "LspCpp/third_party/rapidjson")))))
     (build-system gnu-build-system)
     ;; Note: The 'asy' binary retains a reference to docdir for use with its
     ;; "help" command in interactive mode, so adding a "doc" output is not
@@ -284,6 +290,7 @@ colors, styles, options and details.")
      (list autoconf
            automake
            boost
+           cmake
            emacs-minimal
            ghostscript                  ;for tests
            perl
@@ -338,63 +345,68 @@ colors, styles, options and details.")
                              #$output
                              "/share/texmf/tex/context/third"))
       #:phases
-      `(modify-phases %standard-phases
-         (add-after 'unpack 'locate-tirpc
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* (list "configure.ac")
-               (("/usr/include/tirpc")
-                (search-input-directory inputs "include/tirpc")))))
-         (add-after 'unpack 'fix-includes
-           (lambda _
-             (substitute* (find-files "." "\\.in$")
-               (("#include <primitives.h>") "#include \"primitives.h\""))
-             (substitute* (find-files "prc" "\\.h$")
-               (("#include \"config.h\"") "#include \"../config.h\""))
-             (substitute* "prc/oPRCFile.h"
-               (("#include \"xstream.h\"") "#include \"../xstream.h\""))
-             (substitute* "v3dfile.h"
-               (("#include <prc/oPRCFile.h>") "#include \"prc/oPRCFile.h\""))
-             (substitute* "LspCpp/LibLsp/lsp/ParentProcessWatcher.cpp"
-               (("#include <boost/process.hpp>" all)
-                (string-append "#include <algorithm>\n" all)))))
-         (replace 'bootstrap
-           (lambda _
-             (invoke "autoreconf" "-vfi")))
-         (add-after 'unpack 'move-info-location
-           ;; Build process installs info file in the unusual
-           ;; "%out/share/info/asymptote/" location.  Move it to
-           ;; "%out/share/info/" so it appears in the top-level directory.
-           (lambda _
-             (substitute* "doc/png/Makefile.in"
-               (("(\\$\\(infodir\\))/asymptote" _ infodir) infodir))
-             (substitute* "doc/asymptote.texi"
-               (("asymptote/asymptote") "asymptote"))))
-         (add-before 'build 'patch-pdf-viewer
-           (lambda _
-             ;; Default to a free pdf viewer.
-             (substitute* "settings.cc"
-               (("defaultPDFViewer=\"acroread\"")
-                "defaultPDFViewer=\"gv\""))))
-         (add-before 'check 'set-HOME
-           ;; Some tests require write access to $HOME, otherwise leading to
-           ;; "failed to create directory /homeless-shelter/.asy" error.
-           (lambda _
-             (setenv "HOME" "/tmp")))
-         (add-after 'install 'install-Emacs-data
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Install related Emacs libraries into an appropriate location.
-             (let* ((out (assoc-ref outputs "out"))
-                    (lisp-dir (string-append out "/share/emacs/site-lisp")))
-               (for-each (cut install-file <> lisp-dir)
-                         (find-files "." "\\.el$"))
-               (emacs-generate-autoloads ,name lisp-dir))))
-         (add-after 'install-Emacs-data 'wrap-python-script
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Make sure 'xasy' runs with the correct PYTHONPATH.
-             (let* ((out (assoc-ref outputs "out"))
-                    (path (getenv "GUIX_PYTHONPATH")))
-               (wrap-program (string-append out "/share/asymptote/GUI/xasy.py")
-                 `("GUIX_PYTHONPATH" ":" prefix (,path)))))))))
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'locate-tirpc
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* (list "configure.ac")
+                (("/usr/include/tirpc")
+                 (search-input-directory inputs "include/tirpc")))))
+          (add-after 'unpack 'unbundle-rapidjson
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* (list "Makefile.in")
+                (("\\$\\(CMAKE\\)" all)
+                 (string-append all " -DUSE_SYSTEM_RAPIDJSON=ON")))))
+          (add-after 'unpack 'fix-includes
+            (lambda _
+              (substitute* (find-files "." "\\.in$")
+                (("#include <primitives.h>") "#include \"primitives.h\""))
+              (substitute* (find-files "prc" "\\.h$")
+                (("#include \"config.h\"") "#include \"../config.h\""))
+              (substitute* "prc/oPRCFile.h"
+                (("#include \"xstream.h\"") "#include \"../xstream.h\""))
+              (substitute* "v3dfile.h"
+                (("#include <prc/oPRCFile.h>") "#include \"prc/oPRCFile.h\""))
+              (substitute* "LspCpp/src/lsp/ParentProcessWatcher.cpp"
+                (("#include <boost/process.hpp>" all)
+                 (string-append "#include <algorithm>\n" all)))))
+          (replace 'bootstrap
+            (lambda _
+              (invoke "autoreconf" "-vfi")))
+          (add-after 'unpack 'move-info-location
+            ;; Build process installs info file in the unusual
+            ;; "%out/share/info/asymptote/" location.  Move it to
+            ;; "%out/share/info/" so it appears in the top-level directory.
+            (lambda _
+              (substitute* "doc/png/Makefile.in"
+                (("(\\$\\(infodir\\))/asymptote" _ infodir) infodir))
+              (substitute* "doc/asymptote.texi"
+                (("asymptote/asymptote") "asymptote"))))
+          (add-before 'build 'patch-pdf-viewer
+            (lambda _
+              ;; Default to a free pdf viewer.
+              (substitute* "settings.cc"
+                (("defaultPDFViewer=\"acroread\"")
+                 "defaultPDFViewer=\"gv\""))))
+          (add-before 'check 'set-HOME
+            ;; Some tests require write access to $HOME, otherwise leading to
+            ;; "failed to create directory /homeless-shelter/.asy" error.
+            (lambda _
+              (setenv "HOME" "/tmp")))
+          (add-after 'install 'install-Emacs-data
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; Install related Emacs libraries into an appropriate location.
+              (let ((lisp-dir
+                     (string-append #$output "/share/emacs/site-lisp")))
+                (for-each (cut install-file <> lisp-dir)
+                          (find-files "." "\\.el$"))
+                (emacs-generate-autoloads #$name lisp-dir))))
+          (add-after 'install-Emacs-data 'wrap-python-script
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Make sure 'xasy' runs with the correct PYTHONPATH.
+              (let ((path (getenv "GUIX_PYTHONPATH")))
+                (wrap-program
+                    (string-append #$output "/share/asymptote/GUI/xasy.py")
+                  `("GUIX_PYTHONPATH" ":" prefix (,path)))))))))
     (home-page "http://asymptote.sourceforge.net")
     (synopsis "Script-based vector graphics language")
     (description
diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm
index 4eb0f4d3b6..6aa01ce871 100644
--- a/gnu/packages/prolog.scm
+++ b/gnu/packages/prolog.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,12 +22,15 @@
 
 (define-module (gnu packages prolog)
   #: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 build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
@@ -97,36 +101,68 @@ manner.  It also features an interactive interpreter.")
     (build-system cmake-build-system)
     (arguments
      `(#:parallel-build? #t
-       #:tests? #t
        #:configure-flags
-       (list "-DINSTALL_DOCUMENTATION=ON"
-             "-DSWIPL_INSTALL_IN_LIB=OFF") ; FIXME: Breaks RUNPATH validation.
+       ,#~(list
+           #$@(if (%current-target-system)
+                  ;; Set this manually, otherwise CMake would need to
+                  ;; run a cross-compiled binary, which it can't do.
+                  ;; These values were found on a Linux system.
+                  #~("-DBSD_SIGNALS=1" "-DQSORT_R_GNU=1"
+                     ;; If absent, the non-existent 'cc' is used.
+                     "-DCMAKE_HOST_CC=gcc"
+                     ;; swi-prolog needs a native copy of itself for
+                     ;; cross-compilation.
+                     "-DSWIPL_NATIVE_FRIEND=/nowhere"
+                     (string-append "-DPROG_SWIPL="
+                                    #+(this-package-native-input "swi-prolog")
+                                    "/bin/swipl"))
+                  #~())
+           "-DINSTALL_DOCUMENTATION=ON"
+           "-DSWIPL_INSTALL_IN_LIB=OFF") ; FIXME: Breaks RUNPATH validation.
        #:phases
-       (modify-phases %standard-phases
-         ;; XXX: Delete the test phase that attempts to write to the
-         ;; immutable store.
-         (add-after 'unpack 'delete-failing-tests
-           (lambda _
-             (substitute* "src/CMakeLists.txt"
-               ((" save") ""))
-             (substitute* "src/test.pl"
-               (("testdir\\('Tests/save'\\).") ""))
-             (with-directory-excursion "src/Tests"
-               (for-each delete-file-recursively
-                         '("save")))
-             #t)))))
+       ,#~(modify-phases %standard-phases
+            ;; XXX: Delete the test phase that attempts to write to the
+            ;; immutable store.
+            (add-after 'unpack 'delete-failing-tests
+              (lambda _
+                (substitute* "src/CMakeLists.txt"
+                  ((" save") ""))
+                (substitute* "src/test.pl"
+                  (("testdir\\('Tests/save'\\).") ""))
+                (delete-file-recursively "src/Tests/save")))
+            #$@(if (%current-target-system)
+                   ;; Prevent man_server.pl and swipl-lfr.pl from keeping a
+                   ;; reference to the native swi-prolog.
+                   ;; FIXME: libswipl.so and swipl-ld keep a reference to the
+                   ;; cross-compiler.
+                   #~((add-after 'install 'fix-cross-references
+                        (lambda _
+                          (define bin `(,(string-append #$output "/bin")))
+                          (for-each (lambda (file) (patch-shebang file bin))
+                                    (find-files #$output ".pl$")))))
+                   #~()))))
     (native-inputs
-     `(("zlib" ,zlib)
+     `(,@(if (%current-target-system)
+             (begin
+               (unless (equal? (target-64bit?)
+                               (target-64bit? (%current-system)))
+                 (error "swi-prolog requires --system and --target to have \
+the same word size"))
+               `(("swi-prolog" ,this-package)))
+             '())
+       ("texinfo" ,texinfo)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("bash-minimal" ,bash-minimal)   ;for some scripts in 'lib'
+       ("zlib" ,zlib)
        ("gmp" ,gmp)
        ("readline" ,readline)
-       ("texinfo" ,texinfo)
        ("libarchive" ,libarchive)
        ("libunwind" ,libunwind)
        ("libjpeg" ,libjpeg-turbo)
        ("libxft" ,libxft)
        ("fontconfig" ,fontconfig)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
        ("openssl" ,openssl)))
     (home-page "https://www.swi-prolog.org/")
     (synopsis "ISO/Edinburgh-style Prolog interpreter")
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index fe135be5d9..0fca9bd171 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -165,24 +165,3 @@ expressive types, inspired by Haskell and compiling to JavaScript.")
     (description
      "This package implements parser for the PureScript programming language.")
     (license license:bsd-3)))
-
-(define-public ghc-optparse-applicative-0.15.1.0
-  (package
-    (inherit ghc-optparse-applicative)
-    (name "ghc-optparse-applicative")
-    (version "0.15.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://hackage.haskell.org/package/optparse-applicative/optparse-applicative-"
-               version
-               ".tar.gz"))
-        (sha256
-          (base32 "1ws6y3b3f6hsgv0ff0yp6lw4hba1rps4dnvry3yllng0s5gngcsd"))))
-    (inputs
-      (list ghc-transformers-compat ghc-ansi-wl-pprint))
-    (native-inputs (list ghc-quickcheck))
-    (arguments
-      `(#:cabal-revision
-        ("1" "0zmhqkd96v2z1ilhqdkd9z4jgsnsxb8yi2479ind8m5zm9363zr9")))))
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 05a378601f..5bbe544113 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1658,7 +1658,9 @@ supported by the MyPy typechecker.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1v83flrdxh8grcp40qw04q4hzjflih9xwib64078vsxv2w36f817"))))
+         "1v83flrdxh8grcp40qw04q4hzjflih9xwib64078vsxv2w36f817"))
+       (patches
+        (search-patches "python-mypy-12332.patch"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 103a0c7eae..d331601c66 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1710,12 +1710,10 @@ signatures.")
              (when tests?
                (invoke "pytest")))))))
     (native-inputs
-     (list python-cryptography
-           python-pyasn1
-           python-pytest
-           python-singledispatch
-           python-six
+     (list python-pytest
            python-wheel))
+    (propagated-inputs (list python-cryptography python-pyasn1
+                             python-singledispatch python-six))
     (home-page "https://github.com/SecurityInnovation/PGPy")
     (synopsis "Python implementation of OpenPGP")
     (description
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 8df311baea..292f9dc11a 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -3,13 +3,13 @@
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016-2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
@@ -35,7 +35,10 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages image-processing)
@@ -58,6 +61,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
@@ -154,10 +158,7 @@ atlas_libs = openblas
                                       (tgt-dir (string-append html "/" dir)))
                                  (install-file file html)))
                              (find-files ".")))))))
-         ;; Tests can only be run after the library has been installed and not
-         ;; within the source directory.
-         (delete 'check)
-         (add-after 'install 'check
+         (replace 'check
            (lambda* (#:key tests? inputs outputs #:allow-other-keys)
              (when tests?
                (add-installed-pythonpath inputs outputs)
@@ -254,13 +255,13 @@ logic, also known as grey logic.")
 (define-public python-scikit-image
   (package
     (name "python-scikit-image")
-    (version "0.18.1")
+    (version "0.19.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scikit-image" version))
        (sha256
-        (base32 "0wgisa03smhrphcjnhq7waa5vyyd32b67hblapjbqrqqj751idpv"))))
+        (base32 "0vc6c78780jivsg79ja0cncn1ma2wysy9fyz97kik0kg59jb8cyl"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -290,23 +291,68 @@ logic, also known as grey logic.")
            python-networkx
            python-numpy
            python-pillow
+           python-pythran
            python-pywavelets
            python-scipy
            python-tifffile))
     (native-inputs
-     (list python-codecov
-           python-cython
-           python-flake8
+     (list python-cython
            python-pytest
-           python-pytest-cov
-           python-pytest-localserver
-           python-wheel))
+           python-pytest-localserver))
     (home-page "https://scikit-image.org/")
     (synopsis "Image processing in Python")
     (description
      "Scikit-image is a collection of algorithms for image processing.")
     (license license:bsd-3)))
 
+(define-public python-scikit-allel
+  (package
+    (name "python-scikit-allel")
+    (version "1.3.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "scikit-allel" version))
+        (sha256
+         (base32 "1vg88ng6gd175gzk39iz1drxig5l91dyx398w2kbw3w8036zv8gj"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (invoke "python" "setup.py" "build_ext" "--inplace")
+                 (invoke "python" "-m" "pytest" "-v" "allel"
+                         ;; AttributeError: 'Dataset' object has no attribute 'asstr'
+                         "-k" (string-append
+                                "not test_vcf_to_hdf5"
+                                " and not test_vcf_to_hdf5_exclude"
+                                " and not test_vcf_to_hdf5_rename"
+                                " and not test_vcf_to_hdf5_group"
+                                " and not test_vcf_to_hdf5_ann"))))))))
+    (propagated-inputs
+     (list python-dask
+           python-numpy))
+    (native-inputs
+     (list python-cython
+           ;; The following are all needed for the tests
+           htslib
+           python-h5py
+           python-hmmlearn
+           python-numexpr
+           python-pytest
+           python-scipy
+           python-setuptools-scm
+           python-zarr))
+    (home-page "https://github.com/cggh/scikit-allel")
+    (synopsis "Explore and analyze genetic variation data")
+    (description
+     "This package provides utilities for exploratory analysis of large scale
+genetic variation data.")
+    (license license:expat)))
+
 (define-public python-sgp4
   (package
     (name "python-sgp4")
@@ -509,6 +555,63 @@ doing practical, real world data analysis in Python.")
 context of a task dependency graph.  It has some similarities to make.")
     (license license:bsd-2)))
 
+(define-public python-pythran
+  (package
+    (name "python-pythran")
+    (version "0.11.0")
+    (home-page "https://github.com/serge-sans-paille/pythran")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0cm7wfcyvkp1wmq7n1lyf2d3sj6158jf63bagjpjmfnjwij19n0p"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Remove bundled Boost and xsimd.
+                  (delete-file-recursively "third_party")))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'do-not-install-third-parties
+                 (lambda _
+                   (substitute* "setup.py"
+                     (("third_parties = .*")
+                      "third_parties = []\n"))))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     ;; Remove compiler flag that trips newer GCC:
+                     ;; https://github.com/serge-sans-paille/pythran/issues/908
+                     (substitute* "pythran/tests/__init__.py"
+                       (("'-Wno-absolute-value',")
+                        ""))
+                     (setenv "HOME" (getcwd))
+                     ;; This setup is modelled after the upstream CI system.
+                     (call-with-output-file ".pythranrc"
+                       (lambda (port)
+                         (format port "[compiler]\nblas=openblas~%")))
+                     (invoke "pytest" "-vv"
+                             (string-append "--numprocesses="
+                                            (number->string
+                                             (parallel-job-count)))
+                             "pythran/tests/test_cases.py")))))))
+    (native-inputs
+     ;; For tests.
+     (list openblas python-pytest python-pytest-xdist))
+    (propagated-inputs
+     (list boost xsimd                  ;headers need to be available
+           python-beniget python-gast python-numpy python-ply))
+    (synopsis "Ahead of Time compiler for numeric kernels")
+    (description
+     "Pythran is an ahead of time compiler for a subset of the Python
+language, with a focus on scientific computing.  It takes a Python module
+annotated with a few interface descriptions and turns it into a native
+Python module with the same interface, but (hopefully) faster.")
+    (license license:bsd-3)))
+
 (define-public python-bottleneck
   (package
     (name "python-bottleneck")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index ffb899ccd2..3146cad933 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Alice Brenon <alice.brenon@ens-lyon.fr>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -268,27 +269,34 @@ for adding, removing and dropping callbacks.")
                 (find-files "." "_.*\\.pyx$")))))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               ;; This tests requires the 'proxy.py' module, not yet
-               ;; packaged.
-               (delete-file "tests/test_proxy_functional.py")
-               (invoke "pytest" "-vv"
-                       ;; Disable loading the aiohttp coverage plugin
-                       ;; to avoid a circular dependency (code coverage
-                       ;; is not very interesting to us anyway).
-                       "-o" "addopts=''" "--ignore=aiohttp"
-                       "-n" (number->string (parallel-job-count))
-                       "-k" (string-append
-                             ;; This test probably requires to be run with the
-                             ;; library loaded from the the build directory.
-                             "not test_c_parser_loaded and "
-                             ;; Disable the following tests as they require
-                             ;; networking.
-                             "not TestDeflateBuffer and "
-                             "not test_client_session_timeout_zero and "
-                             "not test_empty_body and "
-                             "not test_mark_formdata_as_processed[pyloop] and "
-                             "not test_receive_runtime_err[pyloop]"))))))))
+             (let ((skipped-tests
+                     (string-append
+                       ;; This test probably requires to be run with the
+                       ;; library loaded from the the build directory.
+                       "not test_c_parser_loaded and "
+                       ;; Disable the following tests as they require
+                       ;; networking.
+                       "not TestDeflateBuffer and "
+                       "not test_client_session_timeout_zero and "
+                       "not test_empty_body and "
+                       "not test_mark_formdata_as_processed[pyloop] and "
+                       "not test_receive_runtime_err[pyloop]")))
+               (when tests?
+                 ;; This tests requires the 'proxy.py' module, not yet
+                 ;; packaged.
+                 (delete-file "tests/test_proxy_functional.py")
+                 ;; Sometimes tests fail when run in parallel.
+                 (or
+                   (invoke "pytest" "-vv"
+                           ;; Disable loading the aiohttp coverage plugin
+                           ;; to avoid a circular dependency (code coverage
+                           ;; is not very interesting to us anyway).
+                           "-o" "addopts=''" "--ignore=aiohttp"
+                           "-n" (number->string (parallel-job-count))
+                           "-k" skipped-tests)
+                   (invoke "pytest" "-vv"
+                           "-o" "addopts=''" "--ignore=aiohttp"
+                           "-k" skipped-tests)))))))))
     (propagated-inputs
      (list python-aiodns
            python-aiosignal
@@ -741,14 +749,14 @@ other HTTP libraries.")
 (define-public httpie
   (package
     (name "httpie")
-    (version "3.0.2")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "httpie" version))
        (sha256
         (base32
-         "16ay8mx2v1z3rywsszy055l5k50qjiwyc3pds5wxxzd1n9a79w97"))))
+         "1npyfvrq0l56bil8rnpj78mav378mxx4zcqzq1jjx4aap1020jif"))))
     (build-system python-build-system)
     (arguments
      ;; The tests attempt to access external web servers, so we cannot run them.
@@ -1273,13 +1281,13 @@ and written in Python.")
 (define-public python-html5-parser
   (package
     (name "python-html5-parser")
-    (version "0.4.9")
+    (version "0.4.10")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "html5-parser" version))
               (sha256
                (base32
-                "13yl3vnf3sxl05m0nhpngnrz3g1jvyahd33lys3m3hfb91l8zzi5"))))
+                "195wgxls3df7djry9cz3p2k9644l6bfd66fczbaw55fsq0c48agr"))))
     (build-system python-build-system)
     (native-inputs
      (list pkg-config))
@@ -1466,13 +1474,13 @@ options.")
   (package
     (inherit python-cssutils)
     (name "python-css-parser")
-    (version "1.0.6")
+    (version "1.0.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "css-parser" version ".tar.gz"))
        (sha256
-        (base32 "0bmg4kiiir6pj9x3sd12x4dz2c1xpp2bn5nn60fxnbk2lnl4im2f"))))
+        (base32 "1ldv9s3an4pgk7b5x6z07rw9b5fdrasdldnf22829pb26b39dq15"))))
     (home-page "https://github.com/ebook-utils/css-parser")
     (synopsis "Fork of cssutils modified for parsing ebooks")
     (description
@@ -2781,6 +2789,36 @@ authenticated session objects providing things like keep-alive.")
       (native-inputs `(("python2-unittest2" ,python2-unittest2)
                        ,@(package-native-inputs base))))))
 
+(define-public python-unalix
+  (package
+    (name "python-unalix")
+    (version "0.9")
+    (source
+     (origin
+       ;; There's only a wheel on PyPI.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/AmanoTeam/Unalix")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0h8wc1axv26h753a8brc6dccqndx005c2bhr09gwg5c1hj9zsfml"))))
+    (build-system python-build-system)
+    (native-inputs (list python-pytest))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest")))))))
+    (home-page "https://pypi.org/project/Unalix/")
+    (synopsis "Python library for removing tracking fields from URLs")
+    (description "Unalix is a library written in Python implementing the
+specification used by the @url{https://github.com/ClearURLs/Addon, ClearURLs}
+addon for removing tracking fields from URLs.")
+    (license license:lgpl3+)))
+
 (define-public python-urllib3
   (package
     (name "python-urllib3")
@@ -4876,21 +4914,18 @@ is part of the Weblate translation platform.")
 (define-public python-gitlab
   (package
     (name "python-gitlab")
-    (version "1.15.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "python-gitlab" version))
-        (sha256
-         (base32
-          "0zl6kz8v8cg1bcy2r78b2snb0lpw0b573gdx2x1ps0nhsh75l4j5"))))
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-gitlab" version))
+              (sha256
+               (base32
+                "1gi4lp2g4k99zqcx2bgqx940bpmpbc1w9qkl5gy33hpy148yhvlg"))))
     (build-system python-build-system)
-    (propagated-inputs
-     (list python-requests python-six))
-    (native-inputs
-     (list python-httmock python-mock))
-    (home-page
-      "https://github.com/python-gitlab/python-gitlab")
+    (arguments
+     `(#:tests? #f))                             ;tests require network access
+    (propagated-inputs (list python-requests python-requests-toolbelt))
+    (home-page "https://github.com/python-gitlab/python-gitlab")
     (synopsis "Interact with GitLab API")
     (description "This package provides an extended library for interacting
 with GitLab instances through their API.")
@@ -5257,16 +5292,22 @@ them to a designated prefix.")
            "11afr6zy3r6rda81010iq496dazg4xid0izg3smg6ighpmvsnzf2"))))
       (build-system python-build-system)
       (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'skip-problematic-tests
-             (lambda _
-               ;; These tests fail due to networking requirements.
-               (substitute* "setup.py"
-                 (("pytest.main\\(\\[" all)
-                  (string-append all "'-k', '"
-                                 (string-append "not test_post_chunked and "
-                                                "not test_remote") "'"))))))))
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "pytest" "-vv"
+                          ;; These tests fail due to networking requirements.
+                          "-k" (format #f "not ~a"
+                                       (string-join
+                                        '("test_post_chunked"
+                                          "test_remote"
+                                          "test_capture_http_proxy"
+                                          "test_capture_https_proxy"
+                                          "test_capture_https_proxy_same_session")
+                                        " and not ")))))))))
       (native-inputs
        ;; These inputs are required for the test suite.
        (list python-httpbin python-pytest-cov python-requests
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index de2fecd0fc..5591210fce 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net>
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2019, 2022 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
@@ -116,6 +116,8 @@
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
+;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
+;;; Copyright © 2022 drozdov <drozdov@portalenergy.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -229,6 +231,7 @@
   #:use-module (gnu packages serialization)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
   #:use-module (guix gexp)
@@ -240,6 +243,24 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
 
+(define-public python-xmldiff
+  (package
+    (name "python-xmldiff")
+    (version "2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xmldiff" version))
+       (sha256
+        (base32 "0qygxi3z1jwb0471k7bh5gcqf7wqm4xhrkmwhf36gjgjw46a5gh5"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-lxml python-six))
+    (home-page "https://github.com/Shoobx/xmldiff")
+    (synopsis "Creates diffs of XML files")
+    (description "This Python tool figures out the differences between two
+similar XML files, in the same way the @command{diff} utility does it.")
+    (license license:expat)))
+
 (define-public python-janus
   (package
     (name "python-janus")
@@ -984,13 +1005,13 @@ access the technical and tag data for video and audio files.")
 (define-public python-psutil
   (package
     (name "python-psutil")
-    (version "5.8.0")
+    (version "5.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "psutil" version))
        (sha256
-        (base32 "1immnj532bnnrh1qmk5q3lsw3san8qfk9kxy1cpmy0knmfcwp70c"))))
+        (base32 "09fa4vfhansixvxd3lv664xcrbnfdyfn53hm2wr0rf3bsvdl5646"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: some tests do not return and time out.  Some tests fail because
@@ -2764,12 +2785,6 @@ system is highly configurable via command line options and embedded
 commands.")
     (license license:lgpl2.1+)))
 
-(define-public python2-empy
-  (let ((base (package-with-python2 (strip-python2-variant python-empy))))
-    (package/inherit base
-      (arguments `(,@(package-arguments base)
-                   #:tests? #t)))))
-
 (define-public python2-element-tree
   (package
     (name "python2-element-tree")
@@ -3156,6 +3171,41 @@ server.")
      "@code{pafy} is a python library to retrieve YouTube content and metadata.")
     (license license:lgpl3+)))
 
+(define-public python-miniupnpc
+  (package
+    (name "python-miniupnpc")
+    (version "2.2.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/miniupnp/miniupnp")
+         (commit
+          (string-append
+           "miniupnpc_" (string-replace-substring version "." "_")))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "03q1rlzvfzm15g1bfw2zqzavlsyaypnaf2k3cz6ha7k5rirkdy0l"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'subdir
+            (lambda* (#:key inputs #:allow-other-keys)
+              (chdir "miniupnpc")
+              (setenv "CC" #$(cc-for-target))
+              (substitute* "Makefile"
+                (("/bin/sh") (search-input-file inputs "/bin/sh"))))))))
+    (inputs (list python))              ;we are building a Python extension
+    (synopsis "UPnP client for Python")
+    (description "Miniupnpc is a client library for Python programs to set up
+port forwards using @acronym{UPnP, Universal Plug and Play}.")
+    (home-page "http://miniupnp.free.fr")
+    (license license:bsd-3)))
+
 (define-public python2-funcsigs
   (package
     (name "python2-funcsigs")
@@ -4621,7 +4671,7 @@ ecosystem, but can naturally be used also by other projects.")
 (define-public python-robotframework
   (package
     (name "python-robotframework")
-    (version "4.1.2")
+    (version "4.1.3")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -4631,39 +4681,54 @@ ecosystem, but can naturally be used also by other projects.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s6lakbd8h1pa4lfdj18sm13gpywszgpcns4hz026a4kam787kby"))
+        (base32 "0j71awmfkwk7prz82kr1zbcl3nrih3396sshrygnqlrdjmgivd3p"))
        (patches (search-patches
-                 "python-robotframework-source-date-epoch.patch"))))
+                 "python-robotframework-source-date-epoch.patch"
+                 "python-robotframework-ug2html.patch"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'build-and-install-doc
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((doc-output (assoc-ref outputs "doc"))
-                             (doc (string-append doc-output "/share/"
-                                                 ,name "-" ,version "/")))
-                        (invoke "invoke" "library-docs" "all")
-                        (mkdir-p doc)
-                        (copy-recursively "doc/libraries"
-                                          (string-append doc "/libraries")))))
-                  (replace 'check
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      ;; Some tests require timezone data.  Otherwise, they
-                      ;; look up /etc/localtime, which doesn't exist, and fail
-                      ;; with:
-                      ;;
-                      ;; OverflowError: mktime argument out of range
-                      (setenv "TZDIR"
-                              (search-input-directory inputs "share/zoneinfo"))
-                      (setenv "TZ" "Europe/Paris")
-
-                      (invoke "python" "utest/run.py"))))))
+     `(#:modules ((guix build python-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 match)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'build-and-install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((doc (string-append (assoc-ref outputs "doc")
+                                       "/share/doc/robotframework")))
+               (invoke "invoke" "library-docs" "all")
+               (invoke "doc/userguide/ug2html.py" "dist") ;user guide
+               (mkdir-p doc)
+               (with-directory-excursion "dist"
+                 (define user-guide-dir
+                   (match (scandir "." (cut string-prefix?
+                                            "robotframework-userguide-" <>))
+                     ((dir) dir)
+                     (_ (error "could not find the user guide directory"))))
+                 (copy-recursively user-guide-dir doc)))))
+         (replace 'check
+           (lambda* (#:key native-inputs inputs tests?
+                     #:allow-other-keys)
+             (when tests?
+               ;; Some tests require timezone data.  Otherwise, they
+               ;; look up /etc/localtime, which doesn't exist, and
+               ;; fail with:
+               ;;
+               ;; OverflowError: mktime argument out of range
+               (setenv "TZDIR"
+                       (search-input-directory
+                        (or native-inputs inputs) "share/zoneinfo"))
+               (setenv "TZ" "Europe/Paris")
+               (invoke "python" "utest/run.py")))))))
     (native-inputs
      `(("python-docutils" ,python-docutils)
        ("python-jsonschema" ,python-jsonschema)
        ("python-invoke" ,python-invoke)
+       ("python-pygments" ,python-pygments)
        ("python-rellu" ,python-rellu)
-       ("python:tk" ,python "tk")             ;used when building the HTML doc
+       ("python:tk" ,python "tk")       ;used when building the HTML doc
        ("tzdata" ,tzdata-for-tests)))
     (outputs '("out" "doc"))
     (home-page "https://robotframework.org")
@@ -4676,20 +4741,17 @@ process automation (RPA).")
 (define-public python-robotframework-datadriver
   (package
     (name "python-robotframework-datadriver")
-    (version "1.5.0")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "robotframework-datadriver" version))
        (sha256
-        (base32 "1kv6h47850gdqr8azknkh81z7hw6yz5pjn53mkn71ly4szw4pqb7"))))
+        (base32 "0qa2vry8jr49k5rbrvmkgggzsmis1wv06dp5dvwmp7afm7vjc51k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-readme-file-name
-           (lambda _
-             (rename-file "Readme.rst" "README.rst")))
          (add-before 'check 'skip-problematic-tests
            (lambda _
              ;; The test file 'tab-csv-file-name.tsv' contains special
@@ -4784,7 +4846,7 @@ trace directly to the terminal to ease debugging.")
 (define-public python-robotframework-sshlibrary
   (package
     (name "python-robotframework-sshlibrary")
-    (version "3.7.0")
+    (version "3.8.0")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -4795,16 +4857,18 @@ trace directly to the terminal to ease debugging.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "09ak22rh9qa9wlpvhkliyybcp4xafjhxsps28wz0pf0030771xav"))))
+         "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw"))
+       (patches (search-patches
+                 "python-robotframework-sshlibrary-rf5-compat.patch"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'build 'build-and-install-doc
            (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((doc-output (assoc-ref outputs "doc"))
-                    (doc (string-append doc-output "/share/"
-                                        ,name "-" ,version "/")))
+             (let ((doc (string-append
+                         (assoc-ref outputs "doc")
+                         "/share/doc/robotframework-sshlibrary")))
                (invoke "chmod" "-R" "+w" "docs")
                (invoke "invoke" "kw-docs" "project-docs")
                (mkdir-p doc)
@@ -5866,7 +5930,7 @@ readable format.")
                                         texlive-latex-upquote
                                         texlive-url
                                         texlive-latex-varwidth
-                                        texlive-latex-wrapfig)))
+                                        texlive-wrapfig)))
        ("texinfo" ,texinfo)
        ("perl" ,perl)
        ("scipy-sphinx-theme"
@@ -7787,9 +7851,12 @@ etc.  The core of this module is a decorator factory.")
     ;; The test suite requires libdrmaa which is provided by the cluster
     ;; environment.  At runtime the environment variable DRMAA_LIBRARY_PATH
     ;; should be set to the path of the libdrmaa library.
-    (arguments '(#:tests? #f))
-    (native-inputs
-     (list python-nose))
+    (arguments
+     '(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  ;; Loading the library fails because DRMAA_LIBRARY_PATH
+                  ;; is not configured.
+                  (delete 'sanity-check))))
     (home-page "https://pypi.org/project/drmaa/")
     (synopsis "Python bindings for the DRMAA library")
     (description
@@ -7895,7 +7962,10 @@ you to actually draw things with your favorite toolkit.")
         (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
+     '(#:tests? #f    ;FIXME: Requires python-cherrypy.
+       #:phases (modify-phases %standard-phases
+                  ;; Importing the web server module requires cherrypy, too.
+                  (delete 'sanity-check))))
     (propagated-inputs
      (list python-psutil python-drmaa python-pyzmq))
     (home-page "https://github.com/pygridtools/gridmap")
@@ -8957,7 +9027,7 @@ computing.")
                                         texlive-latex-upquote
                                         texlive-url
                                         texlive-latex-varwidth
-                                        texlive-latex-wrapfig)))
+                                        texlive-wrapfig)))
        ("texinfo" ,texinfo)))))
 
 (define-public python-urwid
@@ -12728,39 +12798,7 @@ time.")
        ;;("python-pyppeteer" ,python-pyppeteer)
        ("python-pytest" ,python-pytest)
        ("python-pytest-cov" ,python-pytest-cov)
-       ("python-pytest-dependency" ,python-pytest-dependency)
-       ("texlive" ,(texlive-updmap.cfg (list texlive-adjustbox
-                                        texlive-amsfonts
-                                        texlive-booktabs
-                                        texlive-caption
-                                        texlive-enumitem
-                                        texlive-eurosym
-                                        texlive-fonts-rsfs
-                                        texlive-generic-iftex
-                                        texlive-jknappen
-                                        texlive-latex-amsmath
-                                        texlive-latex-fancyvrb
-                                        texlive-latex-float
-                                        texlive-fontspec
-                                        texlive-latex-geometry
-                                        texlive-grffile
-                                        texlive-hyperref
-                                        texlive-latex-jknapltx
-                                        texlive-latex-ms
-                                        texlive-oberdiek
-                                        texlive-latex-parskip
-                                        texlive-latex-trimspaces
-                                        texlive-latex-upquote
-                                        texlive-latex-ucs
-                                        texlive-lm
-                                        texlive-mathpazo
-                                        texlive-stringenc
-                                        texlive-tcolorbox
-                                        texlive-titling
-                                        texlive-tools
-                                        texlive-ulem
-                                        texlive-xcolor
-                                        texlive-zapfding)))))
+       ("python-pytest-dependency" ,python-pytest-dependency)))
     (propagated-inputs
      (list python-bleach
            python-defusedxml
@@ -12776,7 +12814,40 @@ time.")
            python-testpath
            python-traitlets
            ;; Required, even if [serve] is not used.
-           python-tornado-6))
+           python-tornado-6
+           ;; Required at runtime for `jupyter nbconvert --to=pdf`.
+           (texlive-updmap.cfg (list texlive-adjustbox
+                                     texlive-amsfonts
+                                     texlive-booktabs
+                                     texlive-caption
+                                     texlive-enumitem
+                                     texlive-eurosym
+                                     texlive-fonts-rsfs
+                                     texlive-generic-iftex
+                                     texlive-jknappen
+                                     texlive-latex-amsmath
+                                     texlive-latex-fancyvrb
+                                     texlive-latex-float
+                                     texlive-fontspec
+                                     texlive-latex-geometry
+                                     texlive-grffile
+                                     texlive-hyperref
+                                     texlive-latex-jknapltx
+                                     texlive-latex-ms
+                                     texlive-oberdiek
+                                     texlive-latex-parskip
+                                     texlive-latex-trimspaces
+                                     texlive-latex-upquote
+                                     texlive-latex-ucs
+                                     texlive-lm
+                                     texlive-mathpazo
+                                     texlive-stringenc
+                                     texlive-tcolorbox
+                                     texlive-titling
+                                     texlive-tools
+                                     texlive-ulem
+                                     texlive-xcolor
+                                     texlive-zapfding))))
     (home-page "https://jupyter.org")
     (synopsis "Converting Jupyter Notebooks")
     (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
@@ -13919,20 +13990,8 @@ concurrent.futures package from Python 3.2")
     (synopsis "Promises/A+ implementation for Python")
     (description
      "Promises/A+ implementation for Python")
-    (properties `((python2-variant . ,(delay python2-promise))))
     (license license:expat)))
 
-(define-public python2-promise
-  (let ((promise (package-with-python2
-                   (strip-python2-variant python-promise))))
-    (package/inherit promise
-      (arguments (substitute-keyword-arguments (package-arguments promise)
-                   ((#:tests? _) #t)))
-      (native-inputs
-       `(("python2-futures" ,python2-futures)
-         ("python2-pytest" ,python2-pytest)
-         ,@(package-native-inputs promise))))))
-
 (define-public python-progressbar2
   (package
     (name "python-progressbar2")
@@ -14040,13 +14099,15 @@ text.")
                (substitute* (find-files "tests" "\\.py$")
                  (("#!/bin/bash") (string-append "#!" bash-exec))))))
          (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+           (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (add-installed-pythonpath inputs outputs)
                (invoke "pytest" "-vv" "-m" "not network" "-k"
                        (string-append
+                        ;; XXX: This test is timing sensitive and may
+                        ;; fail non-deterministically.
+                        "not test_cancel_pending_job"
                         ;; These tests require Docker.
-                        "not test_terminate_job"
+                        " and not test_terminate_job"
                         " and not test_invoke_function_from_sqs_exception"
                         " and not test_rotate_secret_lambda_invocations"
                         ;; These tests also require the network.
@@ -14063,7 +14124,7 @@ text.")
            python-pytest
            python-sure))
     (inputs
-     `(("bash" ,bash-minimal)))
+     (list bash-minimal))
     (propagated-inputs
      (list python-aws-xray-sdk
            python-boto
@@ -14713,6 +14774,27 @@ It is maintained by the Celery project, and used by kombu as a pure python
 alternative when librabbitmq is not available.")
     (license license:lgpl2.1+)))
 
+(define-public python-beniget
+  (package
+    (name "python-beniget")
+    (version "0.4.1")
+    (home-page "https://github.com/serge-sans-paille/beniget")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "beniget" version))
+       (sha256
+        (base32 "035c4f78yllpw2c5p1w92520rilm7nnpsqh7yvi3qmfhi8xlnmbm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-gast))
+    (synopsis "Extract semantic information about static Python code")
+    (description
+     "Beniget is a collection of analyzers for Python @acronym{AST,
+Abstract Syntax Tree}.  It is a building block for writing a static analyzer
+or compiler for Python.")
+    (license license:bsd-3)))
+
 (define-public python-txamqp
   (package
     (name "python-txamqp")
@@ -14956,7 +15038,7 @@ ISO 8859, etc.).")
      (list qtbase-5))
     (propagated-inputs
      (list python-h5py python-numpy python-pyopengl python-scipy
-           python-pyqt))
+           python-pyqt-without-qtwebkit))
     (home-page "http://www.pyqtgraph.org")
     (synopsis "Scientific graphics and GUI library for Python")
     (description
@@ -16974,7 +17056,7 @@ characters, mouse support, and auto suggestions.")
                (invoke "python" "-m" "pytest" "-vv"))
              #t)))))
     (native-inputs
-     (list python-colorama python-docopt python-django-2.2 python-pytest))
+     (list python-colorama python-docopt python-pytest))
     (propagated-inputs
      (list python-parso))
     (home-page "https://github.com/davidhalter/jedi")
@@ -17526,9 +17608,6 @@ multitouch applications.")
      ;; number of files with other licenses.
      (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
 
-(define-public python2-odfpy
-  (package-with-python2 python-odfpy))
-
 (define-public python-natsort
   (package
     (name "python-natsort")
@@ -17844,17 +17923,29 @@ multitouch applications.")
 (define-public python-pyelftools
   (package
     (name "python-pyelftools")
-    (version "0.25")
+    (version "0.28")
+    (home-page "https://github.com/eliben/pyelftools")
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri "pyelftools" version))
+       (method git-fetch)
+       (uri (git-reference (url home-page)
+                           (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "090vdksbz341f7ljvr0zswblw4lspa8qaiikzyjkf318arpxmil9"))))
+        (base32 "1z4fx39c9rds0bd4d2fjjq7n05b1nfxl36pmy523x8knm38l4gpr"))
+       (snippet
+        ;; Delete bundled readelf executable.
+        '(delete-file "test/external_tools/readelf"))))
     (build-system python-build-system)
-    (home-page
-     "https://github.com/eliben/pyelftools")
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        ;; Taken from tox.ini.
+                        (invoke "python" "test/run_all_unittests.py")
+                        (invoke "python" "test/run_examples_test.py")
+                        (invoke "python" "test/run_readelf_tests.py")))))))
     (synopsis
      "Analyze binary and library file information")
     (description "This Python library provides interfaces for parsing and
@@ -20122,13 +20213,13 @@ class ShellOutSSHClientTests"))))
 (define-public python-regex
   (package
     (name "python-regex")
-    (version "2020.6.8")
+    (version "2022.1.18")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "regex" version))
               (sha256
                (base32
-                "1b3k0zi1pd99q5mk7ri7vcx2y1mq5inm9hk8dryqyhrpkmh4xdp9"))))
+                "05ir92d0cmv8wkafn3r05j5q47l6shg7cpdblp2a8m407b02vwwp"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -20543,32 +20634,6 @@ executed more than a given number of times during a given period.")
 (define-public python2-ratelimiter
   (package-with-python2 python-ratelimiter))
 
-(define-public python-dukpy
-  (package
-    (name "python-dukpy")
-    (version "0.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/kovidgoyal/dukpy")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "13h21nqzasv4zj32xs61brmc106pr2cx243672crcmwxxnjgaxls"))))
-    (build-system python-build-system)
-    (home-page "https://github.com/kovidgoyal/dukpy")
-    (synopsis "Run JavaScript in python")
-    (description
-     "dukpy is a JavaScript runtime environment for Python using the duktape
-embeddable JavaScript engine.")
-    ;; Dukpy is licensed under MIT like the embedded duktape library,
-    ;; with 'errors.c' as GPL3.
-    (license (list license:expat license:gpl3))))
-
-(define-public python2-dukpy
-  (package-with-python2 python-dukpy))
-
 (define-public python-jsonrpclib-pelix
   (package
     (name "python-jsonrpclib-pelix")
@@ -23777,6 +23842,40 @@ a mypy plugin that smooths over some limitations in the basic type hints.
     ;; Either license applies.
     (license (list license:expat license:asl2.0))))
 
+(define-public python-trio-websocket
+  (package
+    (name "python-trio-websocket")
+    (version "0.9.2")
+    (source
+     (origin
+       (method git-fetch)               ;no tests in pypi archive
+       (uri (git-reference
+             (url "https://github.com/HyperionGray/trio-websocket")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests? (invoke "pytest" "-vv")))))))
+    (native-inputs (list python-pytest python-pytest-trio python-trustme))
+    (propagated-inputs (list python-async-generator python-trio python-wsproto))
+    (home-page "https://github.com/HyperionGray/trio-websocket")
+    (synopsis "WebSocket library for Trio")
+    (description "This library implements both server and client aspects of
+the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol},
+striving for safety, correctness, and ergonomics.  It is based on the
+@url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a
+@url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements
+the majority of the WebSocket protocol, including framing, codecs, and events.
+This library handles I/O using @url{https://trio.readthedocs.io/en/latest/,
+the Trio framework}.")
+    (license license:expat)))
+
 (define-public python-humanize
   (package
     (name "python-humanize")
@@ -24598,6 +24697,22 @@ itself.")
           (base32
            "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns"))))
       (build-system python-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-tests
+             (lambda _
+               ;; Fix test failures on Python 3.9.9+.
+               ;; Taken via <https://github.com/neithere/argh/issues/148>.
+               (substitute* "test/test_integration.py"
+                 (("assert run\\(p, '(bar|orig-name|nest bar)', exit=True\\)\
+\\.startswith\\('invalid choice'\\)" _ name)
+                  (string-append "assert 'invalid choice' in \
+run(p, '" name "', exit=True)")))))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (invoke "pytest" "-vv")))))))
       (propagated-inputs
        (list python-iocapture python-mock python-pytest python-pytest-cov
              python-pytest-xdist))
@@ -25985,7 +26100,7 @@ dictionaries.")
 (define-public pyzo
   (package
     (name "pyzo")
-    (version "4.12.0")
+    (version "4.12.3")
     (source
      (origin
        (method git-fetch)
@@ -25995,7 +26110,7 @@ dictionaries.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ndiplnz2d5qc6ppjhfwl4zswn79q6732s4vlkaw8xwc3kjrql5b"))))
+         "0v6rgp52bf9za2spxx9c1yc6wmskvlsj81iw0gipjy7y8vpypgn2"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -28979,3 +29094,136 @@ multipurpose analysis in Python.")
      "This packages provides a collection of library stubs for Python, with
 static types.")
     (license license:asl2.0)))
+
+(define-public python-pyfuse3
+  (package
+    (name "python-pyfuse3")
+    (version "3.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pyfuse3" version))
+        (sha256
+          (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92"))))
+    (build-system python-build-system)
+    (native-inputs (list pkg-config))
+    (inputs (list fuse-3))
+    (propagated-inputs (list python-pytest-trio))
+    (home-page "https://github.com/libfuse/pyfuse3")
+    (synopsis "Python bindings FUSE 3")
+    (description "This package provides Python 3 bindings for libfuse 3 with
+async I/O support.")
+    (license license:gpl2+)))
+
+(define-public python-ansicolors
+  (package
+    (name "python-ansicolors")
+    (version "1.1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ansicolors" version ".zip"))
+       (sha256
+        (base32 "1q3jqglkq4z0f6nkkn8bswcwqg012i2grrc27kabr8286dg4zycr"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-tox
+           python-pytest-cov
+           unzip))
+    (home-page "https://github.com/jonathaneunice/colors/")
+    (synopsis "ANSI colors for Python")
+    (description
+     "This package adds ANSI colors and decorations to your strings.")
+    (license license:isc)))
+
+(define-public python-types-ujson
+  (package
+    (name "python-types-ujson")
+    (version "4.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "types-ujson" version))
+              (sha256
+               (base32
+                "0k9n9hsq4k2zaakdwbkcsvi7m8d3mv2y9yl6f171y58ld4qpcxcy"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/python/typeshed")
+    (synopsis "Typing stubs for ujson")
+    (description
+     "This is a PEP 561 type stub package for the ujson package.  It can be
+used by type-checking tools like mypy, PyCharm, pytype etc. to check code that
+uses ujson.")
+    (license license:asl2.0)))
+
+(define-public python-stltools
+  (package
+    (name "python-stltools")
+    (version "2022.01.20")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rsmith-nl/stltools")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:use-setuptools? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((moddir (string-append (site-packages inputs outputs) "/stltools"))
+                   (bindir (string-append (assoc-ref outputs "out") "/bin")))
+               (copy-recursively "stltools" moddir)
+               (mkdir-p bindir)
+               (for-each
+                (lambda (script)
+                  (let ((source (string-append script ".py"))
+                        (target (string-append bindir "/" script)))
+                    (copy-file source target)
+                    (chmod target #o555)))
+                '("stl2pov" "stl2ps" "stl2pdf" "stlinfo")))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "py.test" "-v")))))))
+    (propagated-inputs (list python-pycairo))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/rsmith-nl/stltools")
+    (synopsis "Python modules and scripts for handling STL files")
+    (description "This package consists of Python modules and scripts for
+manipulating stereolithography (STL) files.  It can convert STL files into
+POV-ray meshes, PDF and PostScript.  The Python modules allow for reading and
+writing STL files.  It supports both the text and binary forms of STL.")
+    (license license:expat)))
+
+(define-public python-multipart
+  (package
+    (name "python-multipart")
+    (version "0.0.5")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-multipart" version))
+              (sha256
+               (base32
+                "0hzshd665rl1bkwvaj9va4j3gs8nmb478fbvligx20663xhmzfzp"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-six))
+    (native-inputs (list python-pyyaml python-mock python-pytest-cov))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  ;; There is a bug in the test_suit specification.
+                  (add-after 'unpack 'patch-test-suite
+                    (lambda _
+                      (substitute* "setup.py"
+                        (("test_suite = 'multipart.tests.suite'")
+                         "test_suite = 'multipart.tests.test_multipart.suite'")))))))
+    (home-page "https://github.com/andrew-d/python-multipart")
+    (synopsis "Streaming multipart parser for Python")
+    (description
+     "This package provides a streaming multipart parser for Python.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 5a55c522af..0163d02bc0 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -21,8 +21,9 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
-;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2878,15 +2879,18 @@ color-related widgets.")
            clang-toolchain
            qtbase-5
            qtdatavis3d
+           qtdeclarative
            qtlocation
            qtmultimedia
            qtquickcontrols
+           qtquickcontrols2
            qtscript
            qtscxml
            qtsensors
            qtspeech
            qtsvg
            qtwebchannel
+           qtwebengine
            qtwebsockets
            qtx11extras
            qtxmlpatterns))
@@ -2905,10 +2909,51 @@ color-related widgets.")
              (string-append "-DPYTHON_EXECUTABLE="
                             (assoc-ref %build-inputs "python")
                             "/bin/python"))
+       #:modules ((guix build cmake-build-system)
+                  (guix build utils)
+                  (srfi srfi-1))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'go-to-source-dir
            (lambda _ (chdir "sources/pyside2") #t))
+         (add-after 'go-to-source-dir 'fix-qt-module-detection
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Activate qt module support even if it not in the same
+             ;; directory as qtbase.
+             (substitute* "../cmake_helpers/helpers.cmake"
+               (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
+                "true"))
+             ;; Add include directories for qt modules.
+             (let ((dirs (map (lambda (name)
+                                (string-append (assoc-ref inputs name)
+                                               "/include/qt5"))
+                              '("qtdatavis3d"
+                                "qtdeclarative"
+                                "qtlocation"
+                                "qtmultimedia"
+                                "qtquickcontrols"
+                                "qtquickcontrols2"
+                                "qtscript"
+                                "qtscxml"
+                                "qtsensors"
+                                "qtspeech"
+                                "qtsvg"
+                                "qttools"
+                                "qtwebchannel"
+                                "qtwebengine"
+                                "qtwebsockets"
+                                "qtx11extras"
+                                "qtxmlpatterns"))))
+               (substitute* "cmake/Macros/PySideModules.cmake"
+                 (("\\$\\{PATH_SEP\\}\\$\\{core_includes\\}" all)
+                  (fold (lambda (dir paths)
+                          (string-append paths "${PATH_SEP}" dir))
+                        all
+                        dirs)))
+               (setenv "CXXFLAGS" (fold (lambda (dir paths)
+                                          (string-append paths " -I" dir))
+                                        ""
+                                        dirs)))))
          (add-before 'configure 'set-clang-dir
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((clang (assoc-ref inputs "clang-toolchain")))
@@ -3005,6 +3050,50 @@ being fully customizable and easy to extend.")
     ;; be used.
     (license (list license:gpl2 license:gpl3))))
 
+(define-public qhexedit
+  (package
+    (name "qhexedit")
+    (version "0.8.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Simsys/qhexedit2")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1j333kiwhbidphdx86yilkaivgl632spfh6fqx93bc80gk4is3xa"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "src/qhexedit.pro"
+               (("^unix:DESTDIR = /usr/lib")
+                (string-append "unix:DESTDIR = "
+                               (assoc-ref outputs "out") "/lib")))))
+         (replace 'configure
+           (lambda _
+             (chdir "src")
+             (invoke "qmake" "qhexedit.pro")))
+         (add-after 'install 'install-headers
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (include-dir (string-append out "/include")))
+               (mkdir-p include-dir)
+               (for-each (lambda (file)
+                           (install-file file include-dir))
+                         (find-files "." "\\.h$"))))))))
+    (inputs (list qtbase-5))
+    (native-inputs (list qttools))
+    (home-page "https://simsys.github.io")
+    (synopsis "Binary editor widget for Qt")
+    (description
+     "@code{QHexEdit} is a hex editor widget for the Qt framework.  It is a
+simple editor for binary data, just like @code{QPlainTextEdit} is for text
+data.")
+    (license license:lgpl2.1)))
 
 (define-public soqt
   (let ((commit-ref "fb8f655632bb9c9c60e0ff9fa69a5ba22d3ff99d")
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index d0a5ca494b..471a11dd48 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2021, 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -21,16 +21,17 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages racket)
-  #:use-module ((guix licenses)
-                #:select (asl2.0 expat lgpl3+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix gexp)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 exceptions)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bash)
@@ -45,13 +46,99 @@
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module ((guix licenses) #:prefix license:))
 
 ;; Commentary:
 ;;
-;; Here's how bootstrapping minimal Racket works:
+;; Anatomy of Racket:
+;; ------------------
+;;
+;; The main Racket Git repository (<https://github.com/racket/racket>) is
+;; organized broadly like this:
+;;
+;;     .
+;;     ├── Makefile
+;;     ├── pkgs/
+;;     └── racket/
+;;         ├── collects/
+;;         └── src/
+;;             ├── configure
+;;             ├── Makefile.in
+;;             ├── bc/
+;;             ├── cs/
+;;             ├── ChezScheme/
+;;             └── ...
+;;
+;; The 'racket/src/' directory contains the source of the runtime system, core
+;; compiler, and primitives for the major Racket implementations: this layer
+;; is called the ``Racket VM''. It is basically a normal autotools
+;; project. (Even when Racket VM implementations use components implemented in
+;; Racket, they are compiled in special modes to produce VM primitives.)
+;; (There are or have been experimental Racket VM implementations elsewhere,
+;; e.g. <https://github.com/pycket/pycket>.)
+;;
+;; The 'racket/collects/' directory contains ``built in'' Racket libraries
+;; that are not part of any package, including the implementation of
+;; 'racket/base': in particular, it must contain enough to implement `raco pkg
+;; install'. It is theoretically possible to use the Racket VM layer without
+;; the main collections, but it is not stable or useful.
+;;
+;; The 'pkgs/' directory contains Racket packages that are especially closely
+;; tied to the implementation of the Racket VM, including 'compiler-lib',
+;; 'racket-doc', and 'racket-test'. Some of these packages depend on Racket
+;; packages that are developed in other Git repositories, predominantly but
+;; not exclusively under the 'racket' GitHub organization. Conversely, not all
+;; of the packages developed in the main Git repository are part of the main
+;; Racket distribution.  (Additionally, components of the Racket VM that are
+;; implemented in Racket can be installed as packages, mostly for ease of
+;; development.)
+;;
+;; The top-level 'Makefile' is more like a directory of scripts: it has
+;; convienience targets for developing Racket, and it cooperates with the
+;; 'distro-build' package to assemble custom Racket distributions. It is not
+;; part of Racket source distributions: the root of a source distribution is
+;; basically 'racket/src' with some extra package sources and configuration
+;; added.
+;;
+;; A ''minimal Racket'' installation includes two packages: 'base', which is a
+;; sort of bridge between the current ``built-in'' collections and the package
+;; system's model of dependencies, and 'racket-lib', which, for installations
+;; that can not rely on a system package manager, pulls in the SQLite and
+;; OpenSSL shared libraries as platform-specific dependencies for use by the
+;; ``built-in'' collections.
+;;
+;; The main Racket distribution consists of installing the 'main-distribution'
+;; package and all of its dependencies.
+;;
+;; The default mode when building Racket (or installing it with the released
+;; installers) is an ``in-place build'', which produces a self-contained,
+;; relocatable, roughly FHS-like directory. (Racket also supports
+;; ``Unix-style'' installations, which rearrange the parts of an in-place
+;; build into Racket-specific subdirectories and generally tries to work for
+;; installation into an FHS-based system.) Certain tools, e.g. 'distro-build'
+;; and 'raco cross', are able to work with an in-place Racket build.
+;;
+;; This file defines the packages 'racket-vm-cgc', 'racket-vm-bc', and
+;; 'racket-vm-cs'. All three are in-place builds of 'racket/src/' and
+;; 'racket/collects/' and are installed to 'opt/racket-vm/' in the store
+;; output. The function 'racket-vm-for-system' returns the recomended Racket
+;; VM package for a given system.
+;;
+;; The file 'racket.scm' builds on these packages to define 'racket-minimal'
+;; and 'racket' packages. These use Racket's support for ``layered
+;; installations'', which allow an immutable base layer to be extended with
+;; additional packages. They use the layer configuration directly provide
+;; ready-to-install FHS-like trees, rather than relying on the built in
+;; ``Unix-style install'' mechanism.
+;;
+;; Bootstrapping Racket:
+;; ---------------------
+;;
+;; Here's how bootstrapping Racket works:
 ;;
 ;;   - Racket BC [CGC] can be built with only a C compiler (except for
 ;;     one caveat discussed below).
@@ -69,6 +156,10 @@
 ;;
 ;; So, we build CGC to build 3M to build bootfiles and CS.
 ;;
+;; (Note: since the CGC variant is basically only for bootstrapping, we
+;; often use "BC" to mean "3M", consistent with `(banner)` and the
+;; suffixes used on executables when more than one variant co-exists.)
+;;
 ;; One remaining bootstrapping limitation is that Racket's reader, module
 ;; system, and macro expander are implemented in Racket. For Racket CS,
 ;; they are compiled to R6RS libraries as discussed above. This note from the
@@ -96,439 +187,772 @@
 ;;
 ;; Code:
 
-(define cfg-flag:sh-for-rktio
-  `(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
-                  (assoc-ref %build-inputs "sh")
-                  "/bin/sh"))
-(define cfg-flag:enable-lt
-  `(string-append "--enable-lt="
-                  (assoc-ref %build-inputs "libtool")
-                  "/bin/libtool"))
-(define cfg-flag:enable-racket
-  `(let ((racket (assoc-ref %build-inputs "racket")))
-     (string-append "--enable-racket="
-                    racket
-                    "/bin/racket")))
+(define* (racket-vm-for-system #:optional
+                               (system (or (%current-target-system)
+                                           (%current-system))))
+  "Return 'racket-vm-cs' if it supports SYSTEM; 'racket-vm-bc' otherwise."
+  (if (nix-system->chez-machine system)
+      racket-vm-cs
+      racket-vm-bc))
 
-(define unpack-nanopass+stex
-  ;; Copied from chez-scheme.
-  ;; TODO: Eventually, we should refactor Chez Scheme
-  ;; enough to share more directly, so that we can make
-  ;; Racket's version of Chez avalable as a Guix package,
-  ;; e.g. for architectures not supported upstream.
-  ;; For now, we let Racket drive the Chez build process
-  ;; other than this step.
-  `(for-each (lambda (dep)
-               (define src
-                 (assoc-ref (or native-inputs inputs) dep))
-               (copy-recursively src dep
-                                 #:keep-mtime? #t))
-             '("nanopass" "stex")))
+(define %racket-version "8.4") ; Remember to update chez-scheme-for-racket!
+(define %racket-commit
+  (string-append "v" %racket-version))
+(define %racket-origin
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/racket/racket")
+          (commit %racket-commit)))
+    (sha256
+     (base32 "1vpl66gdgc8rnldmn8rmb7ar9l057jqjvgpfn29k57i3c5skr8s6"))
+    (file-name (git-file-name "racket" %racket-version))
+    (patches (search-patches "racket-minimal-sh-via-rktio.patch"
+                             ;; Remove by Racket 8.5:
+                             "racket-enable-scheme-backport.patch"))
+    (modules '((guix build utils)))
+    (snippet
+     #~(begin
+         (use-modules (guix build utils))
+         ;; Unbundle Chez submodules.
+         (with-directory-excursion "racket/src/ChezScheme"
+           ;; TODO: consider putting this in a (guix ...) or (guix build ...)
+           ;; module so it can be shared with the upstream Chez Scheme origin
+           ;; without cyclic issues.
+           (for-each (lambda (dir)
+                       (when (directory-exists? dir)
+                         (delete-file-recursively dir)))
+                     '("stex"
+                       "nanopass"
+                       "lz4"
+                       "zlib")))
+         ;; Unbundle libffi.
+         (delete-file-recursively "racket/src/bc/foreign/libffi")))))
 
+(define (racket-vm-common-configure-flags)
+  ;; under a lambda abstraction to avoid evaluating bash-minimal too early.
+  #~`(,@(cond
+         ((false-if-exception
+           (search-input-file %build-inputs "/bin/libtool"))
+          => (lambda (libtool)
+               (list (string-append "--enable-lt=" libtool))))
+         (else
+          '()))
+      ,@(cond
+         ((false-if-exception
+           (search-input-file %build-inputs "/opt/racket-vm/bin/racket"))
+          => (lambda (racket)
+               (list (string-append "--enable-racket=" racket))))
+         (else
+          '()))
+      ,(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
+                      #$(file-append bash-minimal "/bin/sh"))
+      "--disable-strip"
+      ;; XXX: origtree layout is required by some other packages down the
+      ;; bootstrap chain.  Remove these flags as soon as we can do without them.
+      "--enable-origtree"
+      ,(string-append "--prefix=" #$output "/opt/racket-vm")))
 
-(define-public racket-minimal
-  (package
-    (name "racket-minimal")
-    (version "8.3")            ; note: remember to also update racket!
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/racket/racket")
-             (commit (string-append "v" version))))
-       (sha256
-        "1i1jnv1wb0kanfg47hniafx2vhwjc33qqx66lq7wkf5hbmgsyws3")
-       (file-name (git-file-name name version))
-       (patches (search-patches "racket-minimal-sh-via-rktio.patch"))
-       (modules '((guix build utils)))
-       (snippet
-        (with-imported-modules '((guix build utils))
-          #~(begin
-              ;; Unbundle Chez submodules.
-              (with-directory-excursion "racket/src/ChezScheme"
-                ;; Remove bundled libraries (copied from 'chez-scheme').
-                (for-each delete-file-recursively
-                          '("stex"
-                            "nanopass"
-                            "lz4"
-                            "zlib")))
-              ;; Unbundle libffi.
-              (delete-file-recursively "racket/src/bc/foreign/libffi"))))))
-    (inputs
-     `(;; common to all racket-minimal variants:
-       ("openssl" ,openssl)
-       ("sqlite" ,sqlite)
-       ("sh" ,bash-minimal)
-       ;; only for CS
-       ("zlib" ,zlib)
-       ("zlib:static" ,zlib "static")
-       ("lz4" ,lz4)
-       ("lz4:static" ,lz4 "static")))
-    (native-inputs
-     `(("bootfiles" ,racket-bootstrap-chez-bootfiles)
-       ,@(package-native-inputs racket-bootstrap-chez-bootfiles)))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
-       (list "--enable-csonly"
-             "--enable-libz"
-             "--enable-liblz4"
-             ,cfg-flag:enable-racket
-             ,cfg-flag:sh-for-rktio)
-       #:out-of-source? #true
+(define-public racket-vm-cgc
+  ;; Eventually, it may make sense for some vm packages to not be hidden,
+  ;; but this one is especially likely to remain hidden.
+  (hidden-package
+   (package
+     (name "racket-vm-cgc")
+     (version %racket-version)
+     (source %racket-origin)
+     (inputs (list ncurses ;; <- common to all variants (for #%terminal)
+                   bash-minimal ;; <- common to all variants (for `system`)
+                   libffi)) ;; <- only for BC variants
+     (native-inputs (list libtool)) ;; <- only for BC variants
+     (outputs '("out" "debug"))
+     (build-system gnu-build-system)
+     (arguments
+      (list
+       #:configure-flags
+       #~(cons "--enable-cgcdefault"
+               #$(racket-vm-common-configure-flags))
        ;; Tests are in packages like racket-test-core and
-       ;; main-distribution-test that aren't part of the main distribution.
+       ;; main-distribution-test that aren't part of the main
+       ;; distribution.
        #:tests? #f
-       #:modules ((ice-9 match)
-                  (guix build gnu-build-system)
-                  (guix build utils))
+       ;; Upstream recommends #:out-of-source?, and it does
+       ;; help with debugging, but it confuses `install-license-files`.
+       #:modules '((ice-9 match)
+                   (ice-9 regex)
+                   (guix build gnu-build-system)
+                   (guix build utils))
+       #:strip-directories #~'("opt/racket-vm/bin"
+                               "opt/racket-vm/lib")
        #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-nanopass+stex
-           (lambda* (#:key inputs native-inputs #:allow-other-keys)
-             (with-directory-excursion "racket/src/ChezScheme"
-               ,unpack-nanopass+stex)
-             #t))
-         (add-after 'unpack-nanopass+stex 'unpack-bootfiles
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "racket/src/ChezScheme"
-               (copy-recursively
-                (string-append (assoc-ref inputs "bootfiles") "/boot")
-                "boot"))
-             #t))
-         (add-before 'configure 'initialize-config.rktd
-           (lambda* (#:key inputs #:allow-other-keys)
-             (define (write-racket-hash alist)
-               ;; inside must use dotted pair notation
-               (display "#hash(")
-               (for-each (match-lambda
-                           ((k . v)
-                            (format #t "(~s . ~s)" k v)))
-                         alist)
-               (display ")\n"))
-             (mkdir-p "racket/etc")
-             (with-output-to-file "racket/etc/config.rktd"
-               (lambda ()
-                 (write-racket-hash
-                  `((lib-search-dirs
-                     . (#f ,@(map (lambda (lib)
-                                    (string-append (assoc-ref inputs lib)
-                                                   "/lib"))
-                                  '("openssl"
-                                    "sqlite"))))
-                    (build-stamp . "")
-                    (catalogs
-                     . (,(string-append
-                          "https://download.racket-lang.org/releases/"
-                          ,version
-                          "/catalog/")
-                        #f))))))
-             #t))
-         (add-before 'configure 'change-directory
-           (lambda _
-             (chdir "racket/src")
-             #t))
-         (add-after 'install 'remove-pkgs-directory
-           ;; If the configured pkgs-dir exists, "pkgs.rktd" does not
-           ;; exist, and a lock file does not exist, commands like
-           ;; `raco pkg show` will try to create a lock file and fail
-           ;; due to the read-only store.
-           ;; Arguably this may be a bug in `pkg/private/lock`:
-           ;; see <https://github.com/racket/racket/issues/3851>.
-           ;; As a workaround, remove the directory.
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; rmdir because we want an error if it isn't empty
-             (rmdir (string-append (assoc-ref outputs "out")
-                                   "/share/racket/pkgs"))
-             #t)))))
-    (home-page "https://racket-lang.org")
-    (synopsis "Racket without bundled packages such as DrRacket")
-    (description
-     "Racket is a general-purpose programming language in the Scheme family,
-with a large set of libraries and a compiler based on Chez Scheme.  Racket is
-also a platform for language-oriented programming, from small domain-specific
-languages to complete language implementations.
-
-The ``minimal Racket'' distribution includes just enough of Racket for you to
-use @command{raco pkg} to install more.  Bundled packages, such as the
-DrRacket IDE, are not included.")
-    ;; https://download.racket-lang.org/license.html
-    ;; The LGPL components are only used by Racket BC.
-    (license (list asl2.0 expat))))
+       #~(modify-phases %standard-phases
+           (add-before 'configure 'initialize-config.rktd
+             (lambda* (#:key inputs #:allow-other-keys)
+               (define (write-racket-hash alist)
+                 ;; inside must use dotted pair notation
+                 (display "#hash(")
+                 (for-each (match-lambda
+                             ((k . v)
+                              (format #t "(~s . ~s)" k v)))
+                           alist)
+                 (display ")\n"))
+               (define maybe-release-catalog
+                 (let ((v #$(package-version this-package)))
+                   (if (string-match "^[0-9]+\\.[0-9]+($|\\.[0-8][0-9]*$)"
+                                     v)
+                       `(,(string-append
+                           "https://download.racket-lang.org/releases/"
+                           v
+                           "/catalog/"))
+                       '())))
+               (mkdir-p "racket/etc")
+               (with-output-to-file "racket/etc/config.rktd"
+                 (lambda ()
+                   (write-racket-hash
+                    `((build-stamp . "")
+                      (catalogs ,@maybe-release-catalog
+                                #f)))))))
+           (add-before 'configure 'chdir
+             (lambda _
+               (chdir "racket/src"))))))
+     (home-page "https://racket-lang.org")
+     (synopsis "Old Racket implementation used for bootstrapping")
+     (description "This variant of the Racket BC (``before Chez'' or
+``bytecode'') implementation is not recommended for general use.  It uses
+CGC (a ``Conservative Garbage Collector''), which was succeeded as default in
+PLT Scheme version 370 (which translates to 3.7 in the current versioning
+scheme) by the 3M variant, which in turn was succeeded in version 8.0 by the
+Racket CS implementation.
 
+Racket CGC is primarily used for bootstrapping Racket BC [3M].  It may
+also be used for embedding applications without the annotations needed in C
+code to use the 3M garbage collector.")
+     ;; https://download.racket-lang.org/license.html
+     ;; The LGPL components are only used by Racket BC.
+     (license (list license:lgpl3+ license:asl2.0 license:expat)))))
 
-(define-public racket-minimal-bc-3m
-  (hidden-package
-   (package
-     (inherit racket-minimal)
-     (name "racket-minimal-bc-3m")
-     (inputs
-      (modify-inputs (package-inputs racket-minimal)
-        (delete "zlib" "zlib:static" "lz4" "lz4:static")
-        (prepend libffi ;; <- only for BC variants
-                 )))
-     (native-inputs
-      `(("libtool" ,libtool)
-        ("racket" ,(if (%current-target-system)
-                       racket-minimal
-                       racket-minimal-bc-cgc))))
-     (arguments
-      (substitute-keyword-arguments (package-arguments racket-minimal)
-        ((#:configure-flags _ '())
-         `(list "--enable-bconly"
-                ,cfg-flag:enable-racket
-                ,cfg-flag:enable-lt
-                ,cfg-flag:sh-for-rktio))
-        ((#:phases usual-phases)
-         `(modify-phases ,usual-phases
-            (delete 'unpack-nanopass+stex)
-            (delete 'unpack-bootfiles)))))
-     (synopsis "Minimal Racket with the BC [3M] runtime system")
-     (description "The Racket BC (``before Chez'' or ``bytecode'')
+(define-public racket-vm-bc
+  (package
+    (inherit racket-vm-cgc)
+    (name "racket-vm-bc")
+    (native-inputs
+     (modify-inputs (package-native-inputs racket-vm-cgc)
+       (prepend racket-vm-cgc)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments racket-vm-cgc)
+       ((#:configure-flags _ '())
+        #~(cons "--enable-bconly"
+                #$(racket-vm-common-configure-flags)))))
+    (synopsis "Racket BC [3M] implementation")
+    (description "The Racket BC (``before Chez'' or ``bytecode'')
 implementation was the default before Racket 8.0.  It uses a compiler written
 in C targeting architecture-independent bytecode, plus a JIT compiler on most
 platforms.  Racket BC has a different C API and supports a slightly different
 set of architectures than the current default runtime system, Racket CS (based
-on ``Chez Scheme'').
+on ``Chez Scheme'').  It is the recommended implementation for architectures
+that Racket CS doesn't support.
 
 This package is the normal implementation of Racket BC with a precise garbage
 collector, 3M (``Moving Memory Manager'').")
-     ;; https://download.racket-lang.org/license.html
-     ;; The LGPL components are only used by Racket BC.
-     (license (list lgpl3+ asl2.0 expat)))))
-
+    ;; https://download.racket-lang.org/license.html
+    ;; The LGPL components are only used by Racket BC.
+    (license (list license:lgpl3+ license:asl2.0 license:expat))))
 
-(define-public racket-minimal-bc-cgc
+(define-public racket-vm-cs
   (package
-    (inherit racket-minimal-bc-3m)
-    (name "racket-minimal-bc-cgc")
+    (inherit racket-vm-bc)
+    (name "racket-vm-cs")
+    (inputs
+     (modify-inputs (package-inputs racket-vm-cgc)
+       (prepend zlib lz4)
+       (delete "libffi")))
     (native-inputs
-     (alist-delete "racket" (package-native-inputs racket-minimal-bc-3m)))
+     (modify-inputs (package-native-inputs racket-vm-cgc)
+       (delete "libtool")
+       (prepend chez-scheme-for-racket
+                chez-nanopass-bootstrap
+                racket-vm-bc)))
     (arguments
-     (substitute-keyword-arguments (package-arguments racket-minimal-bc-3m)
+     (substitute-keyword-arguments (package-arguments racket-vm-cgc)
+       ((#:phases those-phases #~%standard-phases)
+        #~(modify-phases #$those-phases
+            (add-after 'unpack 'unpack-nanopass+stex
+              (lambda args
+                (with-directory-excursion "racket/src/ChezScheme"
+                  #$unpack-nanopass+stex)))))
        ((#:configure-flags _ '())
-        `(list "--enable-cgcdefault"
-               ,cfg-flag:enable-lt
-               ,cfg-flag:sh-for-rktio))))
-    (synopsis "Old Racket implementation used for bootstrapping")
-    (description "This variant of the Racket BC (``before Chez'' or
-``bytecode'') implementation is not recommended for general use.  It uses
-CGC (a ``Conservative Garbage Collector''), which was succeeded as default in
-PLT Scheme version 370 (which translates to 3.7 in the current versioning
-scheme) by the 3M variant, which in turn was succeeded in version 8.0 by the
-Racket CS implementation.
+        #~(cons* "--enable-csonly"
+                 "--enable-libz"
+                 "--enable-lz4"
+                 (string-append "--enable-scheme="
+                                #$(this-package-native-input
+                                   "chez-scheme-for-racket")
+                                "/bin/scheme")
+                 #$(racket-vm-common-configure-flags)))))
+    (synopsis "Racket CS implementation")
+    (description "The Racket CS implementation, which uses ``Chez Scheme'' as
+its core compiler and runtime system, has been the default Racket VM
+implemetation since Racket 8.0.  It performs better than the Racket BC
+implementation for most programs.
 
-Racket BC [CGC] is primarily used for bootstrapping Racket BC [3M].  It may
-also be used for embedding applications without the annotations needed in C
-code to use the 3M garbage collector.")))
+Using the Racket VM packages directly is not recommended: instead, install the
+@code{racket-minimal} or @code{racket} packages.")
+    ;; https://download.racket-lang.org/license.html
+    ;; The LGPL components are only used by Racket BC.
+    (license (list license:asl2.0 license:expat))))
 
+(define (racket-packages-origin name origin specs)
+  "Extract from ORIGIN the sources for the Racket packages specified by SPECS,
+a non-empty list of package specifications.  In the resulting file-like
+object, each package's source will be in the directory
+\"/share/racket/pkgs/PKG/\", where PKG is the Racket name for the package.
+The NAME will be used in the store file name for the resulting file-like
+object.
 
-(define-public racket-bootstrap-chez-bootfiles
-  (hidden-package
-   (package
-     (inherit racket-minimal)
-     (name "racket-bootstrap-chez-bootfiles")
-     (inputs `())
-     (native-inputs
-      `(("racket" ,(if (%current-target-system)
-                       racket-minimal
-                       racket-minimal-bc-3m))
-        ("stex" ,@(assoc-ref (package-native-inputs chez-scheme) "stex"))
-        ("nanopass" ,@(assoc-ref (package-native-inputs chez-scheme)
-                                 "nanopass"))))
-     (arguments
-      `(#:phases
-        (modify-phases %standard-phases
-          (add-after 'unpack 'unpack-nanopass+stex
-            (lambda* (#:key inputs native-inputs #:allow-other-keys)
-              (with-directory-excursion "racket/src/ChezScheme"
-                ,unpack-nanopass+stex)
-              #t))
-          (delete 'configure)
-          (delete 'patch-generated-file-shebangs)
-          (replace 'build
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (with-directory-excursion "racket/src/ChezScheme"
-                (invoke (string-append (assoc-ref inputs "racket")
-                                       "/bin/racket")
-                        "rktboot/main.rkt"
-                        "--dest" (assoc-ref outputs "out")))
-              #t))
-          (delete 'check)
-          (delete 'install))))
-     (synopsis "Chez Scheme bootfiles bootstrapped by Racket")
-     (description "Chez Scheme is a self-hosting compiler: building it
-requires ``bootfiles'' containing the Scheme-implemented portions compiled for
-the current platform.  (Chez can then cross-compile bootfiles for all other
-supported platforms.)
+A package specification is a list of the form:
 
-The Racket package @code{cs-bootstrap} (part of the main Racket Git
-repository) implements enough of a Chez Scheme simulation to load the Chez
-Scheme compiler purely from source into Racket and apply the compiler to
-itself, thus bootstrapping Chez Scheme.  Bootstrapping takes about 10 times as
-long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
-7.1 and later, including the Racket BC variant.
+  (PKG PATH)
 
-Note that the generated bootfiles are specific to Racket's fork of Chez
-Scheme, and @code{cs-bootstrap} does not currently support building upstream
-Chez Scheme.")
-     (license (list asl2.0)))))
+where PATH is the path to the package source relative to ORIGIN---possibly
+\".\".  As a special case, a package specification may also be a string, which
+is equivalent to:
 
+  (PKG PKG)
 
-(define %installer-mirrors
-  ;; Source:
-  ;; https://github.com/racket/racket-lang-org/blob/master/download/data.rkt#L58
-  ;; Matthew Flatt says: "note that many are commented out"
-  ;; INVARIANT: End with a trailing "/"!
-  '("https://mirror.racket-lang.org/installers/"
-    "https://www.cs.utah.edu/plt/installers/"
-    "https://plt.cs.northwestern.edu/racket-mirror/"
-    "https://mirror.csclub.uwaterloo.ca/racket/racket-installers/"
-    ;; Universität Tübingen is using a self-signed HTTPS certificate:
-    "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
-    "https://racket.infogroep.be/"
-    ))
+Examples:
 
-(define %main-repo-main-distribution-pkgs
-  ;; These are the packages developed in the main Racket Git repository
-  ;; that are part of the main distribution.
-  '("at-exp-lib"
-    "base"
-    "compiler-lib"
-    ;; NOT "compiler-test"
-    "compiler"
-    "net-doc"
-    "net-lib"
-    ;; NOT "net-test"
-    "net"
-    ;; NOT "plt-services"
-    ;; NOT "racket-benchmarks"
-    ;; NOT "racket-build-guide"
-    "racket-doc"
-    "racket-index"
-    "racket-lib"
-    ;; NOT "racket-test-core"
-    ;; NOT "racket-test-extra"
-    ;; NOT "racket-test"
-    "zo-lib"))
+- \"expeditor\"
+- (\"main-distribution\" \".\")
+- (\"racket-lib\" \"pkgs/racket-lib\")"
+  (computed-file
+   (string-append "racket-pkg-" name "-sources")
+   (with-imported-modules `((guix build utils))
+     #~(begin
+         (use-modules (guix build utils))
+         (mkdir-p (string-append #$output "/share/racket/pkgs"))
+         (chdir (string-append #$output "/share/racket/pkgs"))
+         #$@(map (match-lambda
+                   ((? string? name)
+                    #~(copy-recursively #$(file-append origin (string-append "/" name))
+                                        #$name))
+                   ((name ".")
+                    #~(copy-recursively #$origin #$name))
+                   ((name path)
+                    #~(copy-recursively #$(file-append origin (string-append "/" path))
+                                        #$name)))
+                 specs)))))
+
+(define (simple-racket-origin repo hash specs)
+  "Like 'racket-packages-origin', but specialized for packages hosted at
+\"https://github.com/racket/REPO\" with sha256 checksum HASH.  REPO is also
+used to build the name of the resulting store item."
+  (racket-packages-origin
+   repo
+   (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url (format #f "https://github.com/racket/~a" repo))
+           (commit %racket-commit)))
+     (sha256 hash)
+     (file-name (git-file-name (string-append "racket-" repo)
+                               %racket-version)))
+   specs))
+
+(define-public racket-minimal
+  (package
+    (name "racket-minimal")
+    (version %racket-version)
+    (source #f)
+    ;; For cross-compilation, Matthew Flatt recommends reusing
+    ;; as much of `raco cross` as possible. So, put that off until
+    ;; we have a build system for Racket packages.
+    (inputs
+     (list openssl
+           sqlite
+           (racket-vm-for-system)
+           (racket-packages-origin
+            "base" %racket-origin
+            '(("base" "pkgs/base")
+              ("racket-lib" "pkgs/racket-lib")))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; Here and for the `racket` package, we're using #:configure-flags
+     ;; to pass flags for `configure-layer.rkt` and #:make-flags
+     ;; to pass arguments for `raco pkg install`.
+     (list
+      #:configure-flags
+      #~`("--tethered"
+          "--extra-foreign-lib-search-dirs"
+          ,(format
+            #f "~s"
+            (list #$(file-append (this-package-input "openssl") "/lib")
+                  #$(file-append (this-package-input "sqlite") "/lib"))))
+      #:make-flags #~`("racket-lib")
+      #:tests? #f ;; packaged separately
+      #:modules '((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build union)
+                  (ice-9 match))
+      #:imported-modules `((guix build union)
+                           ,@%gnu-build-system-modules)
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'unpack)
+          (replace 'configure
+            (lambda* (#:key inputs configure-flags #:allow-other-keys)
+              (let* ((vm-dir (search-input-directory inputs "opt/racket-vm"))
+                     (racket (string-append vm-dir "/bin/racket")))
+                (apply invoke
+                       racket
+                       #$configure-layer.rkt
+                       `(,@(cond
+                            ((false-if-exception
+                              (search-input-file
+                               inputs "etc/racket/config.rktd"))
+                             => (lambda (file)
+                                  `("--parent"
+                                    ,(dirname (dirname (dirname file))))))
+                            (else
+                             '()))
+                         ,@configure-flags
+                         ,vm-dir
+                         ,#$output))
+                (invoke racket
+                        "--config" (string-append #$output "/etc/racket")
+                        "-l" "raco" "setup"
+                        "--no-user"))))
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; We use "share/racket/pkgs" for sources to distinguish them
+              ;; from the "lib/racket/pkgs" of a potential parent layer.
+              (union-build (string-append #$output "/lib/racket/pkgs")
+                           (search-path-as-list '("share/racket/pkgs")
+                                                (map cdr inputs))
+                           #:create-all-directories? #t)))
+          (replace 'install
+            (lambda* (#:key inputs make-flags #:allow-other-keys)
+              (let ((racket
+                     (search-input-file inputs "/opt/racket-vm/bin/racket")))
+                (unless (null? make-flags)
+                  (invoke racket
+                          "-l-"
+                          "pkg/dirs-catalog"
+                          "--link"
+                          "local-catalog"
+                          (string-append #$output "/lib/racket/pkgs"))
+                  (apply invoke
+                         racket
+                         "--config" (string-append #$output "/etc/racket")
+                         "-l" "raco"
+                         "pkg" "install"
+                         "--installation"
+                         "--auto"
+                         "--catalog" "local-catalog"
+                         make-flags))))))))
+    (home-page "https://racket-lang.org")
+    (synopsis "Racket without bundled packages such as DrRacket")
+    (description
+     "Racket is a general-purpose programming language in the Scheme family,
+with a large set of libraries and a compiler based on Chez Scheme.  Racket is
+also a platform for language-oriented programming, from small domain-specific
+languages to complete language implementations.
 
+The ``minimal Racket'' distribution includes just enough of Racket for you to
+use @command{raco pkg} to install more.  Bundled packages, such as the
+DrRacket IDE, are not included.")
+    ;; https://download.racket-lang.org/license.html
+    ;; The LGPL components are only used by Racket BC.
+    (license (list license:asl2.0 license:expat))))
 
 (define-public racket
   (package
     (inherit racket-minimal)
     (name "racket")
-    (version (package-version racket-minimal)) ; needed for origin uri to work
-    (source
-     (origin
-       (method url-fetch)
-       (uri (map (lambda (base)
-                   (string-append base version "/racket-src.tgz"))
-                 %installer-mirrors))
-       (sha256
-        (base32
-         "0jdr0y7scvv2a3sq456ifrgq0yfsbiwavdf2m86zmrapp481mby4"))
-       (snippet
-        #~(begin
-            (use-modules (guix build utils)
-                         (ice-9 match)
-                         (ice-9 regex))
-            ;; unbundle minimal Racket
-            (for-each delete-file-recursively
-                      '("collects"
-                        "doc"
-                        "etc"
-                        "README"
-                        "src"))
-            ;; unbundle package sources included elsewhere
-            (with-directory-excursion "share/pkgs"
-              (for-each delete-file-recursively
-                        '#+%main-repo-main-distribution-pkgs))
-            #t))))
+    (source #f)
+    (native-inputs (list racket-minimal)) ; XXX: conservative estimate, untested
     (inputs
-     `(("cairo" ,cairo)
-       ("fontconfig" ,fontconfig)
-       ("glib" ,glib)
-       ("glu" ,glu)
-       ("gmp" ,gmp)
-       ("gtk+" ,gtk+)                   ; propagates gdk-pixbuf+svg
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libx11" ,libx11)
-       ("mesa" ,mesa)
-       ("mpfr" ,mpfr)
-       ("pango" ,pango)
-       ("unixodbc" ,unixodbc)
-       ("libedit" ,libedit)))
-    (native-inputs
-     `(("racket" ,racket-minimal)
-       ("extend-layer" ,extend-layer)
-       ("main-repo" ,(package-source racket-minimal))))
+     (list
+      cairo
+      fontconfig
+      glib
+      glu
+      gmp
+      gtk+ ;; propagates gdk-pixbuf+svg
+      libjpeg-turbo
+      libpng
+      libx11 ;; ?? wayland ??
+      mesa
+      mpfr
+      pango
+      unixodbc
+      libedit ;; TODO reconsider in light of expeditor and readline-gpl
+      racket-minimal ;; <-- TODO non-tethered layer
+      (racket-vm-for-system)
+      (simple-racket-origin
+       "2d" (base32 "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr")
+       '("2d" "2d-doc" "2d-lib"))
+      (simple-racket-origin
+       "algol60" (base32 "09kj6asypmc24n29w0izc9p0q8hpga2hpkchsypfwn5c8zpvihlx")
+       '(("algol60" ".")))
+      (racket-packages-origin
+       "racket" %racket-origin
+       '(("at-exp-lib" "pkgs/at-exp-lib")
+         ("compiler" "pkgs/compiler")
+         ("compiler-lib" "pkgs/compiler-lib")
+         ("net" "pkgs/net")
+         ("net-doc" "pkgs/net-doc")
+         ("net-lib" "pkgs/net-lib")
+         ("racket-doc" "pkgs/racket-doc")
+         ("racket-index" "pkgs/racket-index")
+         ("sandbox-lib" "pkgs/sandbox-lib")
+         ("zo-lib" "pkgs/zo-lib")))
+      (simple-racket-origin
+       "cext-lib" (base32 "00w38jpv88fpl4pgj6ndnysvn0s21rjvj0xhznay80msan0vc341")
+       '("cext-lib" "dynext-lib"))
+      (simple-racket-origin
+       "class-iop" (base32 "08z57q83cr7wnh6g8ah3hdhmsmf9zp1jfs7yvxv188l3hzvygy5l")
+       '("class-iop-lib"))
+      (simple-racket-origin
+       "compatibility" (base32 "0bfqwscjpyi325br5pa6g62g9c8lq18a80zp5g3d2qzn3n3mi6x0")
+       '("compatibility" "compatibility-doc" "compatibility-lib"))
+      (simple-racket-origin
+       "contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3")
+       '(("contract-profile" ".")))
+      (simple-racket-origin
+       "data" (base32 "10iabgrk9alaggvksnyb0hdq7f1p30pq6pq2bcakvhzpxwiv1f55")
+       '("data" "data-doc" "data-enumerate-lib" "data-lib"))
+      (simple-racket-origin
+       "datalog" (base32 "0n5j5gnqh7g31mvgx19ggl18hirzbvq2r189lbngmnrmbc7b73fp")
+       '(("datalog" ".")))
+      (simple-racket-origin
+       "db" (base32 "1n02ja0yj3mjjhmz0yv04yfhyvrsznbljn8bjviyfxnm4xf9rcc5")
+       '("db" "db-doc" "db-lib"))
+      (simple-racket-origin
+       "deinprogramm" (base32 "1is6fapgv6rxfjz47nh6qf3kh7y7sjdinakaxqffi46gf1al8prd")
+       '("deinprogramm" "deinprogramm-signature"))
+      (simple-racket-origin
+       "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0")
+       '("distributed-places" "distributed-places-doc" "distributed-places-lib"))
+      (simple-racket-origin
+       "draw" (base32 "1xgjfbh70hqw67z88iqqajg98d04qwbzn6im2wj47rs28jxlm9ly")
+       '("draw" "draw-doc" "draw-lib"))
+      (simple-racket-origin
+       "drracket" (base32 "0m3l4an3nq2ycd1h287s1az2v2zprjbzd8if2x7d5r71vaj4i00c")
+       '("drracket"
+         "drracket-plugin-lib"
+         "drracket-tool"
+         "drracket-tool-doc"
+         "drracket-tool-lib"
+         "drracket-tool-text-lib"))
+      (simple-racket-origin
+       "ds-store" (base32 "0ajr27kipp4dr1qlisaghsb3h7lhhjwrfw2r79b5myczsa1mp661")
+       '("ds-store" "ds-store-doc" "ds-store-lib"))
+      (simple-racket-origin
+       "eli-tester" (base32 "0icx6wn14gjm8kdmq1jppqgq87sxkras4qb5xmdr6wigxafhjqyk")
+       '(("eli-tester"  ".")))
+      (simple-racket-origin
+       "eopl" (base32 "1fmiixj6rxsgzwvgva8lvrvv0gl49v2405mp3s0i7ipis5c4n27s")
+       '(("eopl" ".")))
+      (simple-racket-origin
+       "errortrace" (base32 "14m7rhaxngj36070iw15am434hm438pfgmwjfsiqhsglz4pcxhip")
+       '("errortrace" "errortrace-doc" "errortrace-lib"))
+      (simple-racket-origin
+       "expeditor" (base32 "07djzxs6307l51mcsk3yr2g4g47ayxa3878g7sf5xhqdr4hd9vxf")
+       '("expeditor" "expeditor-doc" "expeditor-lib"))
+      (simple-racket-origin
+       "frtime" (base32 "0ydz2yn8vvv6z7brwlswcyx0f31a6y6d443i89rysfvd2xkhpfd5")
+       '(("frtime" ".")))
+      (simple-racket-origin
+       "future-visualizer" (base32 "1758qq769m0r14xf64sl2ix2l9z340kvapar0j7s5kdg42lmvnhm")
+       '("future-visualizer"
+         "future-visualizer-pict"
+         "future-visualizer-typed"))
+      (simple-racket-origin
+       "games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8415d")
+       '(("games" ".")))
+      (racket-packages-origin
+       "gui" (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/racket/gui")
+                     (commit %racket-commit)))
+               (sha256 (base32
+                        "1x33jgrx3r32k7hgwr591z3xqv1m2r5nc4km2fnxv0ak2xa0j3gj"))
+               (patches
+                ;; remove in Racket 8.5
+                ;; see https://github.com/racket/racket/issues/4133
+                (search-patches "racket-gui-tethered-launcher-backport.patch"))
+               (file-name (git-file-name "racket-gui" %racket-version)))
+       '("gui" "gui-doc" "gui-lib" "tex-table"))
+      (simple-racket-origin
+       "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5")
+       '("gui-pkg-manager-lib"))
+      (simple-racket-origin
+       "htdp" (base32 "0r4ykybcpr10y2db9rlza9pr0xh58nd7ac389mjcxp8g386hgihl")
+       '("htdp" "htdp-doc" "htdp-lib"))
+      (simple-racket-origin
+       "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x")
+       '("html" "html-doc" "html-lib"))
+      (simple-racket-origin
+       "icons" (base32 "1s5a6j11fg3fdr6b7vm2q7q178d7q8b8igy73bs211r27qrd1gg7")
+       '(("icons" ".")))
+      (simple-racket-origin
+       "images" (base32 "0rpjxqw34bq5m08kh1ldl1mr7s9z1lyydxxcyzb292kqh9qiqvfl")
+       '("images" "images-doc" "images-gui-lib" "images-lib"))
+      (simple-racket-origin
+       "lazy" (base32 "176ylzgbdsbmqknpihaz519afq71pyjkv1h87j5v8jfbpbddyfsf")
+       '(("lazy" ".")))
+      (simple-racket-origin
+       "macro-debugger" (base32 "14hyrwbkffr61fk44l02xb47bhv5zccw0ymaa9kxld86hvyqhqbm")
+       '("macro-debugger" "macro-debugger-text-lib"))
+      (simple-racket-origin
+       "main-distribution" (base32 "0m2n9s32s8a4a2gn4ywrm9l8jycdm5ayi5w9kh5wchhrrw7qzq7y")
+       '(("main-distribution" ".")))
+      (simple-racket-origin
+       "make" (base32 "10852fj30bz5r46c3d99s37fkgy5yh44gb01j29sf3kxnhi0g2sa")
+       '(("make" ".")))
+      (simple-racket-origin
+       "math" (base32 "02sqbnvxvmvslk33b44fx4v93zafcvhva0cx8z21jqbl5wp217ac")
+       '("math" "math-doc" "math-lib"))
+      (simple-racket-origin
+       "mysterx" (base32 "11p9jzrafw0hizhl0cs4sxx7rv281185q8hryic2rpk0kzjdyr48")
+       '(("mysterx" ".")))
+      (simple-racket-origin
+       "mzcom" (base32 "0rc9pfj7gwm5azghqvcibz6si1x5s2v8mr2yngk7ssq9gzfbi6a4")
+       '(("mzcom" ".")))
+      (simple-racket-origin
+       "mzscheme" (base32 "192c52zi726h5wjamxrhivjw2waq1im0zpyxhbrkrxknm8x84bs9")
+       '("mzscheme" "mzscheme-doc" "mzscheme-lib"))
+      (racket-packages-origin
+       "net-cookies" (origin
+                       (method git-fetch)
+                       (uri (git-reference
+                             (url "https://github.com/RenaissanceBug/racket-cookies")
+                             (commit %racket-commit)))
+                       (sha256 (base32
+                                "0k0hifxhywl5c3hjcaiizc098dpyk001d981p572gly116yvjxc1"))
+                       (file-name
+                        (git-file-name "RenaissanceBug-racket-cookies" %racket-version)))
+       '("net-cookies" "net-cookies-doc" "net-cookies-lib"))
+      (racket-packages-origin
+       "optimization-coach"
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/stamourv/optimization-coach")
+               (commit %racket-commit)))
+         (sha256 (base32
+                  "0b27sw48d7rhz0hin88c7rbr9vpg1c23sn82nd4jkmq54h6gasr1"))
+         (file-name
+          (git-file-name "stamourv-optimization-coach" %racket-version)))
+       '(("optimization-coach" ".")))
+      (simple-racket-origin
+       "option-contract" (base32 "026b7n5l0c3024nymshz8zp1yhn493rdzgpflzfd52hj7awafqhk")
+       '("option-contract" "option-contract-doc" "option-contract-lib"))
+      (simple-racket-origin
+       "parser-tools" (base32 "08pvz4zramirzm3j64hbhjm0mmh5zfy37iv4s3vmq0rj49cr8fl3")
+       '("parser-tools" "parser-tools-doc" "parser-tools-lib"))
+      (simple-racket-origin
+       "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1")
+       '("pconvert-lib"))
+      (simple-racket-origin
+       "pict" (base32 "0g1iwdr6qh1xb0crhj96830vjjnbds409xbpqn7j5sh0ksy6vr5x")
+       '("pict" "pict-doc" "pict-lib"))
+      (simple-racket-origin
+       "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x")
+       '("pict-snip" "pict-snip-doc" "pict-snip-lib"))
+      (simple-racket-origin
+       "picturing-programs" (base32 "1g6xr39hx1j03gb3d4dljm3v91xcj2gfpq3dgy5xvplzr6cmmxgr")
+       '(("picturing-programs" ".")))
+      (simple-racket-origin
+       "plai" (base32 "0i983sh0r0zm2ng4j44m5aw9669kh5fhp91bzpc9jm280rfcqvyl")
+       '("plai" "plai-doc" "plai-lib"))
+      (simple-racket-origin
+       "planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9")
+       '("planet" "planet-doc" "planet-lib"))
+      (simple-racket-origin
+       "plot" (base32 "07kq32si34ybcwz8idxxcrzssg8diyrp1nfgkcj0mmvr45321zm7")
+       '("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib"))
+      (simple-racket-origin
+       "preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg")
+       '(("preprocessor" ".")))
+      (simple-racket-origin
+       "profile" (base32 "179i86lyby29nywz60l4vnadi02w8b12h7501nm5h5g4pq9jjmbb")
+       '("profile" "profile-doc" "profile-lib"))
+      (racket-packages-origin
+       "quickscript" (origin
+                       (method git-fetch)
+                       (uri (git-reference
+                             (url "https://github.com/Metaxal/quickscript")
+                             (commit %racket-commit)))
+                       (sha256 (base32
+                                "100g3yqhbjdq06b6l6d72ywsw29awgy8crqg33wj7h12xq07nzcr"))
+                       (file-name (git-file-name "Metaxal-quickscript" %racket-version)))
+       '(("quickscript" ".")))
+      (simple-racket-origin
+       "r5rs" (base32 "1g3cysj7z88r38vkzvi8g2fb2hn4yg1fdhy5smxw303jxgl3inp6")
+       '("r5rs" "r5rs-doc" "r5rs-lib"))
+      (simple-racket-origin
+       "r6rs" (base32 "0b1ymzdp10r0flw2acbidjsh5ma1pm5hy54jss37sxf89z3xbvm4")
+       '("r6rs" "r6rs-doc" "r6rs-lib"))
+      (racket-packages-origin
+       "racket-cheat" (origin
+                        (method git-fetch)
+                        (uri (git-reference
+                              (url "https://github.com/jeapostrophe/racket-cheat")
+                              (commit %racket-commit)))
+                        (sha256 (base32
+                                 "06wcj558rzkbl2bwkmikyspya9v1f4iwlzwnwxpkc33h2xapwabr"))
+                        (file-name
+                         (git-file-name "jeapostrophe-racket-cheat" %racket-version)))
+       '(("racket-cheat" ".")))
+      (simple-racket-origin
+       "racklog" (base32 "1rgrvwy3kr9b9w5cghsffiv3ly00yfvvzr5xaaw83g1w7yin0mnb")
+       '(("racklog" ".")))
+      (simple-racket-origin
+       "rackunit" (base32 "057z31rja6h3nabh5b2xgwfrzmlm6h1cv1qcgf3xfy4g2q5dqn5p")
+       '("rackunit"
+         "rackunit-doc"
+         "rackunit-gui"
+         "rackunit-lib"
+         "rackunit-plugin-lib"
+         "rackunit-typed"
+         "schemeunit"
+         "testing-util-lib"))
+      (simple-racket-origin
+       "readline" (base32 "13kbcn2wchv82d709mw3r8n37bk8iwq0y4kpvm9dbzx0w2pxkfwn")
+       '("readline" "readline-doc" "readline-lib"))
+      (simple-racket-origin
+       "realm" (base32 "0hxcgla08iack54j8v40fj51811chpy66ym2zq76zb52c7kzn0hi")
+       '(("realm" ".")))
+      (simple-racket-origin
+       "redex" (base32 "0vlgxbnbgrlihk1hh5zd6hsc4566ldi4q76f87z5vai54dxkwy2f")
+       '("redex"
+         "redex-benchmark"
+         "redex-doc"
+         "redex-examples"
+         "redex-gui-lib"
+         "redex-lib"
+         "redex-pict-lib"))
+      (simple-racket-origin
+       "sasl" (base32 "0ibh4wb4gn8pggx6gkv4vk4d6rwzn5nrvjibhvkzhaynf6lhb824")
+       '("sasl" "sasl-doc" "sasl-lib"))
+      (simple-racket-origin
+       "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x")
+       '(("scheme-lib" ".")))
+      (simple-racket-origin
+       "scribble" (base32 "0rgvnsykrxkah6s5fw1vyp9lxsb4z9w6hgwk5j6wbwjp2gsfczbm")
+       '("scribble"
+         "scribble-doc"
+         "scribble-html-lib"
+         "scribble-lib"
+         "scribble-text-lib"))
+      (simple-racket-origin
+       "serialize-cstruct-lib"
+       (base32 "1rq3n1fa7ldjwx3lrh9ybhig7jlsw1crpzyklbzp3xqdw6jymfnz")
+       '(("serialize-cstruct-lib" ".")))
+      (simple-racket-origin
+       "sgl" (base32 "0nkymhdyjrwi5h199j4w5zh7y3x3ai42gsiwxzh0hy7yqrqqg9zv")
+       '(("sgl" ".")))
+      (simple-racket-origin
+       "shell-completion" (base32 "04m144gy2mp4fiq6rcbf12wjr8mws8k9scfhg9lc38vqppp4lxsj")
+       '(("shell-completion" ".")))
+      (simple-racket-origin
+       "simple-tree-text-markup"
+       (base32 "0fyd9gfz6bnv0m1901wv5mnhc05rm8hw9i6ddrqx33hs6qsg2zqr")
+       '("simple-tree-text-markup"
+         "simple-tree-text-markup-doc"
+         "simple-tree-text-markup-lib"))
+      (simple-racket-origin
+       "slatex" (base32 "0pkm2isbbdk63slrbsxcql7rr0wdrw5kapw1xq4ps5k8dhlzv8x0")
+       '(("slatex" ".")))
+      (simple-racket-origin
+       "slideshow" (base32 "1znv1i2d0610hhy71q932xy7wka00q3q50in1xfnk8ibg7nzkagm")
+       '("slideshow" "slideshow-doc" "slideshow-exe" "slideshow-lib" "slideshow-plugin"))
+      (simple-racket-origin
+       "snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj6hj")
+       '("snip" "snip-lib"))
+      (simple-racket-origin
+       "typed-racket" (base32 "1462kj9yswsxbnw71casylzlvhd7cxrml2v9j7rcsnn9hmrqx4vv")
+       '("source-syntax"
+         "typed-racket"
+         "typed-racket-compatibility"
+         "typed-racket-doc"
+         "typed-racket-lib"
+         "typed-racket-more"))
+      (racket-packages-origin
+       "srfi" (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/racket/srfi")
+                      ;; Includes an FSDG fix: return to %racket-commit in 8.5.
+                      ;; See <https://github.com/racket/srfi/pull/15>.
+                      (commit "7243029b135741ce08ae30f877e2f49a2a460b22")))
+                (sha256 (base32
+                         "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn"))
+                ;; Use the relevant version for srfi-doc and srfi-lib,
+                ;; since we're using a newer commit than the v8.4 tag.
+                (file-name (git-file-name "racket-srfi" "1.1")))
+       '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib"))
+      (simple-racket-origin
+       "string-constants" (base32 "1qizjq4n0hzdgdcjjpr94464gsywpsk2g9mnvwzqr7dcqbrsfvn6")
+       '("string-constants" "string-constants-doc" "string-constants-lib"))
+      (simple-racket-origin
+       "swindle" (base32 "164gdsphjzdl2vv7zxz7dfk9jwax8njpmim6sidm8qz8a8589y67")
+       '(("swindle" ".")))
+      (simple-racket-origin
+       "syntax-color" (base32 "1vf2fc3qvx8a1igi7swsg8gaqhx786sa0vqxd18xhbsidfgb5ywp")
+       '("syntax-color" "syntax-color-doc" "syntax-color-lib"))
+      (simple-racket-origin
+       "trace" (base32 "070ihla5j796hdarn5wxdwn4xj0xnkm50shgh49jy994mribvhia")
+       '(("trace" ".")))
+      (simple-racket-origin
+       "unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k0n9ph9vq0y")
+       '("unix-socket" "unix-socket-doc" "unix-socket-lib"))
+      (simple-racket-origin
+       "web-server" (base32 "1zgb6jl7zx6258ljs8f3lvryrq5n5zpd71dqzr698m92kw3x2pkn")
+       '("web-server" "web-server-doc" "web-server-lib"))
+      (simple-racket-origin
+       "wxme" (base32 "1qp5gr9gqsakiq3alw6m4yyv5vw4i3hp4y4nhq8vl2nkjmirvn0b")
+       '("wxme" "wxme-lib"))
+      (simple-racket-origin
+       "xrepl" (base32 "12zjgsy5zqm3fck3ihg4a70wj56s2cnnjyb4jlfi5nnsfqyrnxg3")
+       '("xrepl" "xrepl-doc" "xrepl-lib"))))
+    (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'unpack-packages
-           (let ((unpack (assoc-ref %standard-phases 'unpack)))
-             (lambda* (#:key  native-inputs inputs outputs #:allow-other-keys)
-               (let* ((racket (assoc-ref (or native-inputs inputs) "racket"))
-                      (prefix (assoc-ref outputs "out"))
-                      (pkgs-dir (string-append prefix "/share/racket/pkgs")))
-                 (mkdir-p pkgs-dir)
-                 (copy-recursively
-                  "share/links.rktd"
-                  (string-append prefix "/share/racket/links.rktd"))
-                 (copy-recursively "share/pkgs" pkgs-dir)
-                 ;; NOTE: unpack changes the working directory
-                 (unpack #:source (assoc-ref (or native-inputs inputs)
-                                             "main-repo"))
-                 (for-each (lambda (pkg)
-                             (define dest (string-append pkgs-dir "/" pkg))
-                             (mkdir-p dest)
-                             (copy-recursively (string-append "pkgs/" pkg)
-                                               dest))
-                           ',%main-repo-main-distribution-pkgs)
-                 #t))))
-         (replace 'configure
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             (let ((racket (assoc-ref (or native-inputs inputs) "racket"))
-                   (prefix (assoc-ref outputs "out")))
-               (apply invoke
-                      (string-append racket "/bin/racket")
-                      (assoc-ref inputs "extend-layer")
-                      racket
-                      prefix
-                      (map
-                       (lambda (lib)
-                         (string-append (assoc-ref inputs lib) "/lib"))
-                       '("cairo"
-                         "fontconfig"
-                         "glib"
-                         "glu"
-                         "gmp"
-                         "gtk+"
-                         "libjpeg"
-                         "libpng"
-                         "libx11"
-                         "mesa"
-                         "mpfr"
-                         "pango"
-                         "unixodbc"
-                         "libedit")))
-               #t)))
-         (replace 'build
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             (invoke (string-append (assoc-ref (or native-inputs inputs)
-                                               "racket")
-                                    "/bin/racket")
-                     "--config"
-                     (string-append (assoc-ref outputs "out")
-                                    "/etc/racket")
-                     "-l"
-                     "raco"
-                     "setup")
-             #t))
-         (delete 'install))
-       ;; we still don't have these:
-       #:tests? #f))
+     (substitute-keyword-arguments (package-arguments racket-minimal)
+       ((#:make-flags _ '())
+        #~`("main-distribution"))
+       ((#:configure-flags _ '())
+        #~`("--tethered"
+            "--extra-foreign-lib-search-dirs"
+            ,(format #f "~s"
+                     '(#$@(map (lambda (name)
+                                 (cond
+                                  ((this-package-input name)
+                                   => (cut file-append <> "/lib"))
+                                  (else
+                                   (raise-exception
+                                    (make-exception
+                                     (make-assertion-failure)
+                                     (make-exception-with-message
+                                      "missing input to the 'racket' package")
+                                     (make-exception-with-irritants
+                                      (list name)))))))
+                               '("cairo"
+                                 "fontconfig-minimal" ;; aka fontconfig
+                                 "glib"
+                                 "glu"
+                                 "gmp"
+                                 "gtk+"
+                                 "libjpeg-turbo"
+                                 "libpng"
+                                 "libx11"
+                                 "mesa"
+                                 "mpfr"
+                                 "pango"
+                                 "unixodbc"
+                                 "libedit"))))))))
     (synopsis "Programmable programming language in the Scheme family")
     (description
      "Racket is a general-purpose programming language in the Scheme family,
@@ -540,82 +964,126 @@ The main Racket distribution comes with many bundled packages, including the
 DrRacket IDE, libraries for GUI and web programming, and implementations of
 languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")))
 
-
-(define extend-layer
+(define configure-layer.rkt
   (scheme-file
-   "extend-layer.rkt"
+   "configure-layer.rkt"
    `(module
-     extend-layer racket/base
+     configure-layer racket/base
      (require racket/cmdline
               racket/match
               racket/file
+              racket/port
               racket/list
               racket/pretty)
-     (define config-file-pth
-       "etc/racket/config.rktd")
      (define (build-path-string . args)
        (path->string (apply build-path args)))
      (define rx:racket
        ;; Guile's reader doesn't support #rx"racket"
        (regexp "racket"))
-     (command-line
-      #:args (parent-layer prefix . lib-dir*)
-      (let* ([config
-              (for/fold
-               ([config (file->value (build-path parent-layer
-                                                 config-file-pth))])
-               ([spec (in-list
-                       '((lib-dir lib-search-dirs "lib/racket")
-                         (share-dir share-search-dirs "share/racket")
-                         (links-file
-                          links-search-files
-                          "share/racket/links.rktd")
-                         (pkgs-dir pkgs-search-dirs "share/racket/pkgs")
-                         (bin-dir bin-search-dirs "bin")
-                         (man-dir man-search-dirs "share/man")
-                         (doc-dir doc-search-dirs "share/doc/racket")
-                         (include-dir
-                          include-search-dirs
-                          "include/racket")))])
-               (match-define (list main-key search-key pth) spec)
-               (hash-set*
-                config
-                main-key
-                (build-path-string prefix pth)
-                search-key
-                (list* #f
-                       (hash-ref config
-                                 main-key
-                                 (build-path-string parent-layer pth))
-                       (filter values (hash-ref config search-key null)))))]
-             [config
-              (hash-set config
-                        'apps-dir
-                        (build-path-string prefix "share/applications"))]
-             [config
-              ;; place new foreign lib-search-dirs before old
-              ;; foreign dirs, but after Racket layers
-              (let-values
-                  ([(rkt extra)
-                    (partition (lambda (pth)
-                                 (or (not pth)
-                                     (regexp-match? rx:racket pth)))
-                               (hash-ref config 'lib-search-dirs))])
-                (hash-set config
+     (define tethered? #f)
+     (define parent #f)
+     (define extra-foreign-lib-search-dirs '())
+     (define-values [vm-dir prefix]
+       (command-line
+        #:once-each
+        [("--tethered") "create a tethered layer"
+         (set! tethered? #t)]
+        [("--parent") dir "path of parent layer, if any"
+         (set! parent dir)]
+        [("--extra-foreign-lib-search-dirs") dir-list
+         "foreign library directories, as a list of strings in `read` syntax"
+         (set! extra-foreign-lib-search-dirs
+               (call-with-input-string dir-list read))]
+        #:args (vm-dir prefix)
+        (values vm-dir prefix)))
+     (let* ([config
+             (for/fold
+              ([config (file->value
+                        (if parent
+                            (build-path parent "etc/racket/config.rktd")
+                            (build-path vm-dir "etc/config.rktd")))])
+              ([spec
+                (in-list
+                 '((lib-dir lib-search-dirs "lib/racket" "lib")
+                   (share-dir share-search-dirs "share/racket" "share")
+                   (links-file links-search-files
+                               "lib/racket/links.rktd"
+                               "share/links.rktd")
+                   (pkgs-dir pkgs-search-dirs "lib/racket/pkgs" "share/pkgs")
+                   ;; Partial workaround for:
+                   ;; https://github.com/racket/racket/issues/4133
+                   #;(bin-dir bin-search-dirs "bin" "bin")
+                   (bin-dir bin-search-dirs
+                            "lib/racket/bogus-untethered-bin"
+                            "bin")
+                   (man-dir man-search-dirs "share/man" "share/man")
+                   (doc-dir doc-search-dirs "share/doc/racket" "doc")
+                   (include-dir include-search-dirs
+                                "include/racket"
+                                "include")))])
+              (match-define (list main-key search-key pth vm-pth) spec)
+              (hash-set*
+               config
+               main-key
+               (build-path-string prefix pth)
+               search-key
+               (list* #f
+                      (hash-ref config
+                                main-key
+                                (lambda ()
+                                  (if parent
+                                      (build-path-string parent pth)
+                                      (build-path-string vm-dir vm-pth))))
+                      (filter values (hash-ref config search-key null)))))]
+            [config
+             (hash-update config
                           'lib-search-dirs
-                          (append rkt
-                                  lib-dir*
-                                  extra)))]
-             [bin-dir
-              (hash-ref config 'bin-dir)]
-             [config
-              (hash-set* config
-                         'config-tethered-console-bin-dir bin-dir
-                         'config-tethered-gui-bin-dir bin-dir)]
-             [new-config-pth
-              (build-path prefix config-file-pth)])
-        (make-parent-directory* new-config-pth)
-        (call-with-output-file*
-         new-config-pth
-         (lambda (out)
-           (pretty-write config out))))))))
+                          (lambda (dirs)
+                            ;; add after other layers, but before older
+                            ;; foreign lib search directories
+                            (define-values [rkt old-foreign-dirs]
+                              (partition (lambda (pth)
+                                           (or (not pth)
+                                               (regexp-match? rx:racket pth)))
+                                         dirs))
+                            (append rkt
+                                    extra-foreign-lib-search-dirs
+                                    old-foreign-dirs)))]
+            [config
+             (hash-set* config
+                        'apps-dir
+                        (build-path-string prefix "share/applications")
+                        'absolute-installation? #t
+                        ;; Let Guix coexist with other installation
+                        ;; methods without clobbering user-specific packages.
+                        ;; This could be set in various places, but doing
+                        ;; it here is convienient, at least until we support
+                        ;; cross-compilation.
+                        'installation-name
+                        (string-append (version)
+                                       "-guix"
+                                       (match (system-type 'gc)
+                                         ['cgc "-cgc"]
+                                         ;; workaround Guile reader/printer:
+                                         ['|3m| "-bc"]
+                                         [_ ""])))]
+            [config
+             (cond
+              [tethered?
+               ;; Partial workaround for:
+               ;; https://github.com/racket/racket/issues/4133
+               #;(define bin-dir (hash-ref config 'bin-dir))
+               (define bin-dir (build-path-string prefix "bin"))
+               (hash-set* config
+                          'config-tethered-apps-dir (hash-ref config 'apps-dir)
+                          'config-tethered-console-bin-dir bin-dir
+                          'config-tethered-gui-bin-dir bin-dir)]
+              [else
+               config])])
+       (define new-config-pth
+         (build-path prefix "etc/racket/config.rktd"))
+       (make-parent-directory* new-config-pth)
+       (call-with-output-file*
+        new-config-pth
+        (lambda (out)
+          (pretty-write config out)))))))
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index e487987738..dfc274a1de 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -8,6 +8,8 @@
 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
 ;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 Sheng Yang <styang@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -133,7 +135,7 @@ useful in modems implemented with @dfn{digital signal processing} (DSP).")
 (define-public liquid-dsp
   (package
     (name "liquid-dsp")
-    (version "1.3.2")
+    (version "1.4.0")
     (source
      (origin (method git-fetch)
              (uri (git-reference
@@ -141,7 +143,7 @@ useful in modems implemented with @dfn{digital signal processing} (DSP).")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
-              (base32 "1n6dbg13q8ga5qhg1yiszwly4jj0rxqr6f1xwm9waaly5z493xsd"))))
+              (base32 "0mr86z37yycrqwbrmsiayi1vqrgpjq0pn1c3p1qrngipkw45jnn0"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake))
@@ -169,41 +171,49 @@ mathematical operations, and much more.")
     (license license:expat)))
 
 (define-public rtl-sdr
-  (package
-    (name "rtl-sdr")
-    (version "0.6.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://git.osmocom.org/rtl-sdr/")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"))))
-    (build-system cmake-build-system)
-    (inputs
-     (list libusb))
-    (native-inputs
-     (list pkg-config))
-    (arguments
-     `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
-                           "-DINSTALL_UDEV_RULES=ON")
-       #:tests? #f ; No tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-paths
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "CMakeLists.txt"
-               (("DESTINATION \"/etc/udev/")
-                (string-append "DESTINATION \""
-                               (assoc-ref outputs "out")
-                               "/lib/udev/")))
-             #t)))))
-    (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
-    (synopsis "Software defined radio driver for Realtek RTL2832U")
-    (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
+  ;; No tagged release since 2018
+  (let ((commit "5e73f90f1d85d8db2e583f3dbf1cff052d71d59b")
+        (revision "1"))
+    (package
+      (name "rtl-sdr")
+      (version (git-version "0.6.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.osmocom.org/rtl-sdr/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "106fwzyr7cba952f3p3wm3hdqzm9zvm0v3gcz4aks2n7fnvrgrvn"))))
+      (build-system cmake-build-system)
+      (inputs
+       (list libusb))
+      (native-inputs
+       (list pkg-config))
+      (arguments
+       `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
+                             "-DINSTALL_UDEV_RULES=ON")
+         #:tests? #f ; No tests
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "CMakeLists.txt"
+                 (("DESTINATION \"/etc/udev/")
+                  (string-append "DESTINATION \""
+                                 (assoc-ref outputs "out")
+                                 "/lib/udev/")))))
+           (add-after 'fix-paths 'fix-udev-rules
+             (lambda _
+               (substitute* "rtl-sdr.rules"
+                 ;; The plugdev group does not exist; use dialout as in
+                 ;; the hackrf package.
+                 (("GROUP=\"plugdev\"")
+                  "GROUP=\"dialout\"")))))))
+      (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
+      (synopsis "Software defined radio driver for Realtek RTL2832U")
+      (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
 cheap software defined radio, since the chip allows transferring the raw I/Q
 samples to the host.  @code{rtl-sdr} provides drivers for this purpose.
 
@@ -218,7 +228,7 @@ system configuration:
 
 To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
 this package.  E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
-    (license license:gpl2+)))
+      (license license:gpl2+))))
 
 (define-public airspyhf
   (package
@@ -1113,6 +1123,30 @@ users.")
                            "--with-tcl-binding"
                            "--with-xml-support")))))
 
+(define-public jtdx-hamlib
+  ;; Fork of hamlib with custom patches used by jtdx.
+  (package
+    (inherit hamlib)
+    (name "jtdx-hamlib")
+    (version "2.2.158")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jtdx-project/jtdxhamlib.git")
+             (commit "158")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0m9i5k1n6j0nvmsqcy12x2ngqzjvxxlc3jg29igh93hb7lprlkjv"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs hamlib)
+       (prepend autoconf automake libtool texinfo)))
+    (arguments
+     `(#:configure-flags '("--disable-shared"
+                           "--enable-static"
+                           "--without-cxx-binding"
+                           "--disable-winradio")))))
+
 (define-public tlf
   (package
     (name "tlf")
@@ -1206,6 +1240,47 @@ weak-signal conditions.")
     (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
     (license license:gpl3)))
 
+(define-public jtdx
+  (package
+    (name "jtdx")
+    (version "2.2.158")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jtdx-project/jtdx")
+             (commit "158")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lw9q7ggh2jlasipl3v5pkbabysjr6baw15lnmg664ah3fwdrvnx"))))
+    (build-system qt-build-system)
+    (native-inputs
+     (list asciidoc gfortran pkg-config qttools ruby-asciidoctor))
+    (inputs
+     (list
+      boost
+      fftw
+      fftwf
+      jtdx-hamlib
+      libusb
+      qtbase-5
+      qtwebsockets
+      qtmultimedia
+      qtserialport))
+    (arguments
+     `(#:tests? #f)) ; No test suite
+    (synopsis "Weak-signal ham radio communication program, forked from WSJTX")
+    (description
+     "JTDX means \"JT,T10 and FT8 and FT4 modes for DXing\", it is being
+developed with main focus on the sensitivity and decoding efficiency, both, in
+overcrowded and half empty HF band conditions.
+
+It is modified WSJT-X software forked from WSJT-X r6462.  JTDX supports JT9,
+JT65, T10, FT8 and FT4 © digital modes for HF amateur radio communication,
+focused on DXing and being shaped by community of DXers.JTDX")
+    (home-page "https://www.jtdx.tech/en/")
+    (license license:gpl3)))
+
 (define-public js8call
   (package
     (inherit wsjtx)
@@ -1758,7 +1833,7 @@ receiver.")
 (define-public welle-io
   (package
     (name "welle-io")
-    (version "2.3")
+    (version "2.4")
     (source
      (origin
        (method git-fetch)
@@ -1767,7 +1842,7 @@ receiver.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw"))))
+        (base32 "0vl98pciw6xzcxyprcb4613rxn0i202f104lmy900jrny0pq4y65"))))
     (build-system qt-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 121948b4fc..acccc4d4c4 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -200,6 +200,20 @@ a focus on simplicity and productivity.")
         (base32
          "0h2w2ms4gx2s96v3lzdr3add94bd2qqkhdjzaycmaqhg21rpf3jp"))))))
 
+(define-public ruby-3.1
+  (package
+    (inherit ruby-2.7)
+    (version "3.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
+                           (version-major+minor version)
+                           "/ruby-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1akcl7vhmwfm6ybj7493kzy58ykh2r39ri9f4xfm2xmhg1msmvvs"))))))
+
 (define-public ruby-2.5
   (package
     (inherit ruby-2.6)
@@ -7358,11 +7372,11 @@ library.")
         (base32
          "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
     (build-system ruby-build-system)
-    (arguments '(#:tests? #t
-                 #:phases (modify-phases %standard-phases
+    (arguments '(#:phases (modify-phases %standard-phases
                             (replace 'check
-                              (lambda _
-                                (invoke "rspec"))))))
+                              (lambda* (#:key tests? #:allow-other-keys)
+                                (when tests?
+                                  (invoke "rspec")))))))
     (native-inputs
      (list ruby-rspec))
     (propagated-inputs
@@ -7486,7 +7500,8 @@ navigation capabilities to @code{pry}, using @code{byebug}.")
        (modify-phases %standard-phases
          (add-before 'check 'skip-dubious-test
            (lambda _
-             ,@(if (target-riscv64?)
+             ,@(if (or (target-riscv64?)
+                       (target-ppc32?))
                  ;; This unreliable test can fail with "Expected 32 to be <= 25."
                  '((substitute* "test/test_stackprof.rb"
                      ((".*assert_operator profile\\[:missed_samples.*") "")))
@@ -8265,8 +8280,8 @@ definitions.")
     (inherit ruby-yard)
     (name "ruby-yard-with-tests")
     (arguments
-     (substitute-keyword-arguments (package-arguments ruby-yard)
-       ((#:tests? _ #t) #t)
+     (substitute-keyword-arguments
+         (strip-keyword-arguments '(#:tests?) (package-arguments ruby-yard))
        ((#:test-target _ "default") "default")
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
@@ -8279,13 +8294,8 @@ definitions.")
                  (delete-file "Gemfile")
                  ;; $HOME needs to be set to somewhere writeable for tests to
                  ;; run.
-                 (setenv "HOME" "/tmp"))
-               #t))))))
-    (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-redcloth" ,ruby-redcloth)
-       ("ruby-asciidoc" ,ruby-asciidoctor)))))
+                 (setenv "HOME" "/tmp"))))))))
+    (native-inputs (list ruby-rspec ruby-rack ruby-redcloth ruby-asciidoctor))))
 
 (define-public ruby-spectroscope
   (package
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index a97fcc7968..6d97e289c2 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
-;;; Copyright © 2020–2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.ccom>
 ;;; Copyright © 2021, 2022 Zheng Junjie <873216071@qq.com>
@@ -53,6 +53,8 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages ibus)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages kde)
   #:use-module (gnu packages linux)
@@ -122,13 +124,6 @@ low-end hardware and serving many concurrent requests.")
        '("--release" "--"
          "--skip=dns::client::tests::test_tcp_client"
          "--skip=dns::client::tests::test_udp_client")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'relax-requirements
-           (lambda _
-             (substitute*
-                 "guix-vendor/rust-x25519-dalek-1.2.0.tar.gz/Cargo.toml"
-               (("version = \"=1.3\"") "version = \"^1.3\"")))))
        #:cargo-inputs
        (("rust-getopts" ,rust-getopts-0.2)
         ("rust-log" ,rust-log-0.4)
@@ -188,14 +183,14 @@ alternative zones.")
 (define-public bat
   (package
     (name "bat")
-    (version "0.19.0")
+    (version "0.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "bat" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0bvlgh2yf6f1ski86hd13lda4cr51wyyg1ycsxwjpn0dbb0a8wqq"))))
+        (base32 "05sj0chxpai26fhk1k7p5m54v3j7n1x64ayx53mcimsj1skdr77m"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -204,6 +199,7 @@ alternative zones.")
         ("rust-atty" ,rust-atty-0.2)
         ("rust-bincode" ,rust-bincode-1)
         ("rust-bugreport" ,rust-bugreport-0.4)
+        ("rust-bytesize" ,rust-bytesize-1)
         ("rust-clap" ,rust-clap-2)
         ("rust-clap" ,rust-clap-2)
         ("rust-clircle" ,rust-clircle-0.3)
@@ -1054,14 +1050,14 @@ of the project is to be runnable on untrusted networks without crashing.")
 (define-public tectonic
   (package
     (name "tectonic")
-    (version "0.8.0")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tectonic" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0hzyqpjxya6g1ifb3hvjvj0zl2aigx898pz7h5pl46z50jp2pdc8"))))
+        (base32 "041v887a3aybrkn5fnrjwy95wxfk4npl6lj8ar8dnidjmfh92bka"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-build-flags '("--release" "--features" "external-harfbuzz")
@@ -1084,13 +1080,14 @@ of the project is to be runnable on untrusted networks without crashing.")
         ("rust-tectonic-bundles" ,rust-tectonic-bundles-0.2)
         ("rust-tectonic-docmodel" ,rust-tectonic-docmodel-0.1)
         ("rust-tectonic-engine-bibtex" ,rust-tectonic-engine-bibtex-0.1)
+        ("rust-tectonic-engine-spx2html" ,rust-tectonic-engine-spx2html-0.1)
         ("rust-tectonic-engine-xdvipdfmx" ,rust-tectonic-engine-xdvipdfmx-0.1)
-        ("rust-tectonic-engine-xetex" ,rust-tectonic-engine-xetex-0.1)
+        ("rust-tectonic-engine-xetex" ,rust-tectonic-engine-xetex-0.2)
         ("rust-tectonic-errors" ,rust-tectonic-errors-0.2)
         ("rust-tectonic-geturl" ,rust-tectonic-geturl-0.3)
-        ("rust-tectonic-io-base" ,rust-tectonic-io-base-0.3)
+        ("rust-tectonic-io-base" ,rust-tectonic-io-base-0.4)
         ("rust-tectonic-status-base" ,rust-tectonic-status-base-0.2)
-        ("rust-tectonic-xdv" ,rust-tectonic-xdv-0.1)
+        ("rust-tectonic-xdv" ,rust-tectonic-xdv-0.2)
         ("rust-tectonic-xetex-layout" ,rust-tectonic-xetex-layout-0.1)
         ("rust-tempfile" ,rust-tempfile-3)
         ("rust-termcolor" ,rust-termcolor-1)
@@ -1115,10 +1112,14 @@ of the project is to be runnable on untrusted networks without crashing.")
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("harfbuzz" ,harfbuzz)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
+     (list fontconfig
+           freetype
+           graphite2
+           harfbuzz
+           icu4c
+           libpng
+           openssl
+           zlib))
     (home-page "https://tectonic-typesetting.github.io/")
     (synopsis "Complete, embeddable TeX/LaTeX engine")
     (description
@@ -1579,6 +1580,28 @@ library and a dynamic library, and a C header to be used by any C (and
 C-compatible) software.")
     (license license:expat)))
 
+(define-public rtss
+  (package
+    (name "rtss")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rtss" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1r1b6fynkjnpj5p3k209sa13mjvh4k0ghzwnribm48dh9v7lfnnv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-memchr" ,rust-memchr-2))))
+    (home-page "https://github.com/Freaky/rtss")
+    (synopsis "Annotate stdout/stderr with elapsed times")
+    (description "@code{rtss} annotates its output with relative durations between
+consecutive lines and since program start.")
+    (license license:expat)))
+
 (define-public swayhide
   (package
     (name "swayhide")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 378a5b4959..110fdad593 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2022 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -470,10 +471,11 @@ threads.")
     (license bsd-3)))
 
 (define-public sicp
-  (let ((commit "225c172f9b859902a64a3c5dd5e1f9ac1a7382de"))
+  (let ((commit "bda03f79d6e2e8899ac2b5ca6a3732210e290a79")
+        (revision "2"))
     (package
       (name "sicp")
-      (version (string-append "20170703-1." (string-take commit 7)))
+      (version (git-version "20180718" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -481,8 +483,8 @@ threads.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0bhdrdc1mgdjdsg4jksq9z6x129f3346jbf3zir2a0dfmsj6m10n"))
-                (file-name (string-append name "-" version "-checkout"))))
+                  "0mng7qrj2dvssyffr9ycnf4a5k0kadp4dslq7mc5bhzq1qxyjs2w"))
+                (file-name (git-file-name name version))))
       (build-system trivial-build-system)
       (native-inputs `(("gzip" ,gzip)
                        ("source" ,source)
@@ -506,8 +508,7 @@ threads.")
                      (string-append info-dir "/sicp.info")
                      (string-append source "/sicp-pocket.texi"))
              (for-each (cut invoke "gzip" "-9n" <>)
-                       (find-files info-dir))
-             #t))))
+                       (find-files info-dir))))))
       (home-page "https://sarabander.github.io/sicp")
       (synopsis "Structure and Interpretation of Computer Programs")
       (description "Structure and Interpretation of Computer Programs (SICP) is
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index d244ed1434..5e7708be6e 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -29,6 +29,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages hurd)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
@@ -39,18 +40,17 @@
 (define-public screen
   (package
     (name "screen")
-    (version "4.8.0")
+    (version "4.9.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/screen/screen-"
                                  version ".tar.gz"))
-             (patches (search-patches "screen-hurd-path-max.patch"
-                                      "screen-CVE-2021-26937.patch"))
+             (patches (search-patches "screen-hurd-path-max.patch"))
              (sha256
-              (base32 "18ascpjzsy70h6hk7wpg8zmzjwgdyrdr7c6z4pg5z4l9hhyv24bf"))))
+              (base32 "1x1hqy4h47i7hk85f779lkwkm7gkq8h8mxwd0znkh5adpf0m4czr"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("makeinfo" ,texinfo)))
+     (list autoconf automake texinfo))
     (inputs
      (list ncurses perl))
     (arguments
diff --git a/gnu/packages/scsi.scm b/gnu/packages/scsi.scm
index 12a623776e..8334f543b1 100644
--- a/gnu/packages/scsi.scm
+++ b/gnu/packages/scsi.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,10 +20,12 @@
 
 (define-module (gnu packages scsi)
   #:use-module ((guix licenses)
-                #:select (gpl2+ bsd-2 bsd-3))
+                #:select (gpl2+ bsd-2 bsd-3 lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools))
 
 (define-public sg3-utils
   (package
@@ -68,3 +71,32 @@ used in C and C++ programs to interact with SCSI devices.")
     ;;   various source code files refer to a file called "BSD_LICENSE" [...]."
     ;; Some files (like sg_compare_and_write.c) retain their 3-clause headers!
     (license (list gpl2+ bsd-2 bsd-3))))
+
+(define-public libiscsi
+  (package
+    (name "libiscsi")
+    (version "1.19.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sahlberg/libiscsi")
+             (commit version)))
+       (sha256
+        (base32
+         "0ajrkkg5awmi8m4b3mha7h07ylg18k252qprvk1sgq0qbyd66zy7"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs (list autoconf automake libtool))
+    (synopsis "Client-side library for iSCSI")
+    (description "Libiscsi is a client-side library to implement the iSCSI
+protocol that can be used to access the resources of an iSCSI target.  It is
+fully asynchronous with regards to iSCSI commands and SCSI tasks, but a
+synchronous layer is also provided for ease of use for simpler applications.")
+    (home-page "https://github.com/sahlberg/libiscsi")
+    (license (list
+              ;; For the src, examples and test-tool directories, except
+              ;; src/ld_iscsi.c.
+              gpl2+
+              ;; For the lib and include directories.
+              lgpl2.1+))))
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index dbca2b3c08..6f8d673694 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -474,14 +475,14 @@ conflict with slocate compatibility.")
 (define-public plocate
   (package
     (name "plocate")
-    (version "1.1.13")
+    (version "1.1.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://plocate.sesse.net/download/"
                            "plocate-" version ".tar.gz"))
        (sha256
-        (base32 "16lpiirjmj4mrdj5kkjv7rikkgjx3i64ac0sl3lz1rshflhxgqww"))))
+        (base32 "0l7igd81acsha5l5mv2rv7n9j1bc4f6ys4hfvs3ii0cbv9a5k1fi"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 8190e1e1e2..129b8f6122 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2021 Dhruvin Gandhi <contact@dhruvin.dev>
 ;;; Copyright © 2021 Ahmad Jarara <git@ajarara.io>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -723,6 +724,84 @@ udev rules to your system configuration to be able to configure the YubiKey as
 an unprivileged user.")
     (license license:bsd-2)))
 
+(define-public libnitrokey
+  (package
+    (name "libnitrokey")
+    (version "3.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Nitrokey/libnitrokey")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ngrvv61d36vvfwrfg0qxmp2wg18v4aaldwvwzgxvwaysjswhn9r"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; These tests do not require any device to be connected
+     '(#:configure-flags (list "-DCOMPILE_OFFLINE_TESTS=ON")))
+    (native-inputs (list catch-framework2 doxygen graphviz pkg-config))
+    (inputs (list hidapi libusb))
+    (home-page "https://github.com/Nitrokey/libnitrokey")
+    (synopsis "Communication library for Nitrokey")
+    (description "This packate provides communication library for Nitrokey.")
+    (license license:lgpl3+)))
+
+(define-public cppcodec
+  (package
+    (name "cppcodec")
+    (version "0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tplgy/cppcodec")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0z39f8w0zvra874az0f67ck1al9kbpaidpilggbl8jnfs05010ck"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags (list "-DBUILD_TESTING=on")))
+    (native-inputs (list pkg-config qttools))
+    (inputs (list catch-framework2))
+    (home-page "https://github.com/tplgy/cppcodec")
+    (synopsis "Header library to encode/decode base64, base64url, etc.")
+    (description "This package provides library to encode/decode base64,
+base64url, base32, base32hex and hex.")
+    (license license:expat)))
+
+(define-public nitrokey-app
+  (package
+    (name "nitrokey-app")
+    (version "1.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Nitrokey/nitrokey-app")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1imbvaf0yncz36ckjr99x94jwg2hnid49hsiqlxsv7ccxgk058bk"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ;no test suite
+    (native-inputs (list pkg-config qttools))
+    (inputs (list cppcodec
+                  hidapi
+                  libnitrokey
+                  libusb
+                  qtbase-5
+                  qtsvg))
+    (home-page "https://github.com/Nitrokey/nitrokey-app")
+    (synopsis "GUI tool for Nitrokey devices")
+    (description
+     "This package provides GUI tool that interfaces with Nitrokey Pro
+v0.7/v0.8 and Nitrokey Storage devices.")
+    (license license:gpl3+)))
+
 (define-public nitrocli
   (package
     (name "nitrocli")
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 1cdb5ba5b2..dda670d237 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -16,7 +16,7 @@
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;;
@@ -115,7 +115,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
 (define-public fish
   (package
     (name "fish")
-    (version "3.2.2")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
@@ -123,7 +123,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
                            "releases/download/" version "/"
                            "fish-" version ".tar.xz"))
        (sha256
-        (base32 "02a0dgz5cy4iv3ysvl5kzzd4ji8pxqv93zd45041plcki0ddli2r"))
+        (base32 "12dfkyqv5vm52i1fifz91h8f8xg60xjvv94kx6xjqxk9a8dfxd5m"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -148,6 +148,12 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((coreutils (assoc-ref inputs "coreutils"))
                    (bash (assoc-ref inputs "bash")))
+               ;; This test sporadically fails in the build container
+               ;; because of leftover zombie processes, which are not
+               ;; reaped automatically:
+;; "Found existing zombie processes. Clean up zombies before running this test."
+               ;; Disabling parallel tests does not reliably prevent it.
+               (delete-file "tests/checks/jobs.fish")
                ;; This test fails.
                (delete-file "tests/checks/pipeline-pgroup.fish")
                ;; This one tries to open a terminal & can't simply be deleted.
@@ -463,7 +469,7 @@ history mechanism, job control and a C-like syntax.")
 (define-public zsh
   (package
     (name "zsh")
-    (version "5.8")
+    (version "5.8.1")
     (source (origin
               (method url-fetch)
               (uri (list (string-append
@@ -474,7 +480,7 @@ history mechanism, job control and a C-like syntax.")
                            ".tar.xz")))
               (sha256
                (base32
-                "09yyaadq738zlrnlh1hd3ycj1mv3q5hh4xl1ank70mjnqm6bbi6w"))))
+                "06crvpqbpm8sq5c215f4b985z7npwnqnj0i0g53hnq6fp8h3b5xn"))))
     (build-system gnu-build-system)
     (arguments `(#:configure-flags
                  `("--with-tcsetpgrp"
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 3f9f8a27f4..d0f4068062 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -341,7 +341,14 @@ between various shells or commands.")
                (mkdir-p bin)
                (substitute* "setup.py"
                  (("add_script\\('")
-                  (string-append "add_script('" bin "/" )))))))))
+                  (string-append "add_script('" bin "/" ))))))
+         ;; Whenever setup.py is invoked, scripts in out/bin/ are
+         ;; replaced. Thus we cannot invoke setup.py for testing.
+         ;; Upstream also uses pytest.
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest")))))))
     (native-inputs
      (list python-pytest
            python-mock
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index dfbc3194ea..69a92b8b97 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
@@ -38,6 +38,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 python)
   #:use-module ((guix licenses) #:prefix license:)
@@ -911,17 +912,29 @@ executed during the Sphinx build process.")
     (version "0.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri "jupyter_sphinx" version))
+       ;; Pypi tarball doesn't contain tests.
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/jupyter/jupyter-sphinx")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1wma60787m2451nn4bc4jw7bzqksplplb84wqxm34iaw70499z1p"))))
+         "0bsb17vzbgvrzvh87pi88b157hyigdwnf1lhrgvan03i2300h15c"))))
     (build-system python-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (invoke "pytest")))))))
     (propagated-inputs
      (list python-ipython python-ipywidgets python-nbconvert
            python-nbformat))
     (native-inputs
-     (list python-sphinx))
+     (list python-pytest python-sphinx))
     (home-page "https://github.com/jupyter/jupyter-sphinx/")
     (synopsis "Jupyter Sphinx Extensions")
     (description
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 4dd8bb6d96..8a61b6e97a 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
@@ -184,7 +184,7 @@ a server that supports the SSH-2 protocol.")
 (define-public openssh
   (package
    (name "openssh")
-   (version "8.8p1")
+   (version "8.9p1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
@@ -192,7 +192,7 @@ a server that supports the SSH-2 protocol.")
              (patches (search-patches "openssh-hurd.patch"))
              (sha256
               (base32
-               "1s8z6f7mi1pwsl79cqai8cr350m5lf2ifcxff57wx6mvm478k425"))))
+               "1ry5prcax0134v6srkgznpl9ch5snkgq7yvjqvd8c5mbnxa7cjgx"))))
    (build-system gnu-build-system)
    (native-inputs (list groff pkg-config))
    (inputs `(("libedit" ,libedit)
@@ -310,7 +310,7 @@ Additionally, various channel-specific options can be negotiated.")
 (define-public guile-ssh
   (package
     (name "guile-ssh")
-    (version "0.13.1")
+    (version "0.15.1")
     (home-page "https://github.com/artyom-poptsov/guile-ssh")
     (source (origin
               (method git-fetch)
@@ -320,9 +320,7 @@ Additionally, various channel-specific options can be negotiated.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1xpxkvgj7wgcl450djkcrmrf957mcy2f36hfs5g6kpla1gax2d1g"))
-              (patches (search-patches "guile-ssh-fix-test-suite.patch"
-                                       "guile-ssh-read-error.patch"))))
+                "0zzn5hsf97b35gixyg4z14sspl15qwnp52y4h89wra4y31l7467q"))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
     (arguments
@@ -330,6 +328,13 @@ Additionally, various channel-specific options can be negotiated.")
        #:configure-flags '("--disable-static")
 
        #:phases (modify-phases %standard-phases
+                  (add-before 'bootstrap 'support-cross-compilation
+                    (lambda _
+                      ;; Support cross-compilation:
+                      ;; <https://github.com/artyom-poptsov/guile-ssh/issues/30>.
+                      (substitute* "libguile-ssh/Makefile.am"
+                        (("\\$\\(guile_snarf\\)")
+                         "CPP=\"$(CPP)\" $(guile_snarf)"))))
                   (add-before 'build 'fix-libguile-ssh-file-name
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; Build and install libguile-ssh.so so that we can use
@@ -382,28 +387,10 @@ programs written in GNU Guile interpreter.  It is a wrapper to the underlying
 libssh library.")
     (license license:gpl3+)))
 
-(define-public guile2.0-ssh
-  (package
-    (inherit guile-ssh)
-    (name "guile2.0-ssh")
-    (source (origin
-              (inherit (package-source guile-ssh))
-              (patches (search-patches "guile-ssh-fix-test-suite.patch"))))
-    (native-inputs
-     (modify-inputs (package-native-inputs guile-ssh)
-       (delete "guile")
-       (prepend guile-2.0 ;needed when cross-compiling.
-                )))
-    (inputs (modify-inputs (package-inputs guile-ssh)
-              (replace "guile" guile-2.0)))))
-
 (define-public guile2.2-ssh
   (package
     (inherit guile-ssh)
     (name "guile2.2-ssh")
-    (source (origin
-              (inherit (package-source guile-ssh))
-              (patches (search-patches "guile-ssh-fix-test-suite.patch"))))
     (native-inputs
      (modify-inputs (package-native-inputs guile-ssh)
        (delete "guile")
@@ -594,8 +581,7 @@ basis for almost any application.")
                     (("localhost") "127.0.0.1"))
 
                   (substitute* "src/testsuite/login-auth-test"
-                    (("/bin/cat") "cat"))
-                  #t))
+                    (("/bin/cat") "cat"))))
               (patches (search-patches "lsh-fix-x11-forwarding.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -629,7 +615,10 @@ basis for almost any application.")
 
                            ;; 'lsh_argp.h' checks HAVE_ARGP_PARSE but nothing
                            ;; defines it.
-                           "CPPFLAGS=-DHAVE_ARGP_PARSE")
+                           "CPPFLAGS=-DHAVE_ARGP_PARSE"
+
+                           ;; Fix the build of lsh@2.1 with GCC 10.
+                           "CFLAGS=-O2 -g -fcommon")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'disable-failing-tests
@@ -642,8 +631,7 @@ basis for almost any application.")
                (("seed-test \\\\")        ;prevent trailing slash
                 "seed-test")
                (("^\t(lsh|daemon|tcpip|socks|lshg|lcp|rapid7|lshd).*test.*")
-                ""))
-             #t))
+                ""))))
          (add-before 'configure 'pre-configure
            (lambda* (#:key inputs #:allow-other-keys)
              (let* ((nettle    (assoc-ref inputs "nettle"))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 648462be03..f849107cfe 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -34,6 +34,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages statistics)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -109,6 +110,14 @@
        (base32
         "0lqrash677b09zxdlxp89z6k02y4i23mbqg83956dwl69wc53dan"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'check 'prepare-tests
+                 ;; Prevent irrelevant errors that cause test output mismatches:
+                 ;; ‘Fontconfig error: No writable cache directories’
+                 (lambda _
+                   (setenv "XDG_CACHE_HOME" (getcwd)))))))
     (inputs
      (list cairo
            gettext-minimal
@@ -676,13 +685,13 @@ nonlinear mixed-effects models.")
 (define-public r-mgcv
   (package
    (name "r-mgcv")
-   (version "1.8-38")
+   (version "1.8-39")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "mgcv" version))
      (sha256
-      (base32 "1fyx8b0xjyx75mp90v314gayzydkca5y90p76jnwxzfnhxbys4nd"))))
+      (base32 "15h1k9qyn8s8xy4x2361mj42vdq8ml5xskzqpkc45zj1a3gss6w4"))))
    (build-system r-build-system)
    (propagated-inputs
     (list r-matrix r-nlme))
@@ -756,14 +765,14 @@ analysis.")
 (define-public r-survival
   (package
     (name "r-survival")
-    (version "3.2-13")
+    (version "3.3-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "survival" version))
        (sha256
         (base32
-         "0zrikancm9shixvgng89f1610sphlwljczi0fnjbdqn4l85rrarz"))))
+         "1isdrcvrzi118xiyigckj9sq1xl4m92180brmpzdqzhcrl2qg1ql"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-matrix))
@@ -1242,13 +1251,13 @@ aesthetic attributes.")
 (define-public r-ggdendro
   (package
     (name "r-ggdendro")
-    (version "0.1.22")
+    (version "0.1.23")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggdendro" version))
               (sha256
                (base32
-                "0skbj487b6f6pj2iz4yq2b9gbgb39cv5dyzhdl3w7ay1k0s5z9ph"))))
+                "1f4fz9llmbpb8gh90aid7dvriadx16xdhsl7832yw4pyqj4fjcrs"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ggplot2 r-mass))
@@ -1268,19 +1277,19 @@ agnes cluster diagrams.")
 (define-public r-gdtools
   (package
     (name "r-gdtools")
-    (version "0.2.3")
+    (version "0.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gdtools" version))
        (sha256
         (base32
-         "1p3ip0qwpg8f63jfx0b8vbac6l20ddid8xvxzkfi6i858pybnawp"))))
+         "0a1hqg5b484ji4g9dy0zi06wn9w7pk6hiy5ljzc1zgj9mbhlr21j"))))
     (build-system r-build-system)
     (native-inputs
      (list pkg-config))
     (inputs
-     (list cairo freetype zlib))
+     (list cairo fontconfig freetype zlib))
     (propagated-inputs
      (list r-rcpp r-systemfonts))
     (home-page "https://cran.r-project.org/web/packages/gdtools")
@@ -1293,14 +1302,14 @@ and to generate base64 encoded string from raster matrix.")
 (define-public r-svglite
   (package
     (name "r-svglite")
-    (version "2.0.0")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "svglite" version))
        (sha256
         (base32
-         "19ggknw5322yw7r1bzhw0bqggcrpn0qxddk7kblpqnra2zz2brkn"))))
+         "16wwhfmp9agdz9azslgd8qs77fllhdp6p0m304qfh2p8qy8gah5d"))))
     (build-system r-build-system)
     (inputs
      (list libpng zlib))
@@ -1398,13 +1407,13 @@ for template use among CRAN packages.")
 (define-public r-evaluate
   (package
     (name "r-evaluate")
-    (version "0.14")
+    (version "0.15")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "evaluate" version))
               (sha256
                (base32
-                "0a2y7j534gbgixkwj9r1z76l2vssw4g1hznzbpclc076wkdqpj58"))))
+                "0pbwj02y2j7r0msa7747ih1p32xm9bcyr8fa7bysfslb199ywnl8"))))
     (build-system r-build-system)
     (home-page "https://github.com/hadley/evaluate")
     (synopsis "Parsing and evaluation tools for R")
@@ -1510,13 +1519,13 @@ syntax that can be converted to XHTML or other formats.")
 (define-public r-yaml
   (package
     (name "r-yaml")
-    (version "2.2.2")
+    (version "2.3.5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "yaml" version))
               (sha256
                (base32
-                "0c7pk5fq79mkqpc398hg8zj01frv4araglyppli49sqr4yx6mp55"))))
+                "0h2ixd95ww12ir13fdzbvjq4lsz6l8hmgv4bbsi89qd0ah2nrpry"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/yaml/")
     (synopsis "Methods to convert R data to YAML and back")
@@ -1631,13 +1640,13 @@ you call it again with the same arguments it returns the pre-computed value.")
 (define-public r-crayon
   (package
     (name "r-crayon")
-    (version "1.4.2")
+    (version "1.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "crayon" version))
               (sha256
                (base32
-                "0mxq87qsvz5znfncrb6yjchzv6iwpn9lr386i02y6xiycizkjd7f"))))
+                "0m3rckps0c8v14h9vqnr81acv0az1jqwlsradcbkb2ndvnpjq4j4"))))
     (build-system r-build-system)
     (home-page "https://github.com/gaborcsardi/crayon")
     (synopsis "Colored terminal output for R")
@@ -1733,13 +1742,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "1.0.0")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "0skf75rhq9y6f09shcjlm1dlh7rlwpyr4mx1l8xn201igg4k8qdb"))))
+                "1k6pzl2x80pycpllvd8n1k62h5cfdwc0hsdwvbicrcxhdwz7rs4d"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1781,17 +1790,16 @@ and printing capabilities than traditional data frames.")
 (define-public r-dplyr
   (package
     (name "r-dplyr")
-    (version "1.0.7")
+    (version "1.0.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "dplyr" version))
               (sha256
                (base32
-                "0g8jsxclj9cgm7a2lyazy78sj62rbzw812lsw3fdsbz0pknkmznj"))))
+                "0xb04ckp29pva1h2rfahqhmk9gcwp2dbbx3av8ip40v7dnha6siv"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-ellipsis
-           r-generics
+     (list r-generics
            r-glue
            r-lifecycle
            r-magrittr
@@ -1900,14 +1908,14 @@ side.")
 (define-public r-locfit
   (package
     (name "r-locfit")
-    (version "1.5-9.4")
+    (version "1.5-9.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "locfit" version))
        (sha256
         (base32
-         "1vcw16qww4v4547w0gfvhqg60l051bsdlxa6zfcgcj9xbxf6dlyr"))))
+         "08yywswywmvyys8380576n43h3xyiviq1p2392zcivlbknnjp7zx"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice))
@@ -2259,18 +2267,18 @@ worries about execution time overhead.")
 (define-public r-bbmisc
   (package
     (name "r-bbmisc")
-    (version "1.11")
+    (version "1.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "BBmisc" version))
        (sha256
         (base32
-         "1lh1n4bvxzivb5rbz69mvd8xdgr3gr2bnqd68a39sd1530l8r90y"))))
+         "0gh5f342rwra79i7imv50x8vrhd2zkifm7khb0yv3ndpd4zn62lh"))))
     (properties `((upstream-name . "BBmisc")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-checkmate))
+     (list r-checkmate r-data-table))
     (home-page "https://github.com/berndbischl/BBmisc")
     (synopsis "Miscellaneous functions for R package development")
     (description
@@ -2334,13 +2342,13 @@ SLURM and Sun Grid Engine.  Multicore and SSH systems are also supported.")
 (define-public r-brew
   (package
     (name "r-brew")
-    (version "1.0-6")
+    (version "1.0-7")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "brew" version))
               (sha256
                (base32
-                "1vghazbcha8gvkwwcdagjvzx6yl8zm7kgr0i9wxr4jng06d1l3fp"))))
+                "0vp7d628j6zzxhh6xfw5jlkv7wh6z2l3snbwjgv7jd56vk0mkf1q"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/brew")
     (synopsis "Templating framework for report generation")
@@ -2353,17 +2361,17 @@ module, Java Server Pages, and Python's psp module.")
 (define-public r-desc
   (package
     (name "r-desc")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "desc" version))
        (sha256
         (base32
-         "0jfnwn1kpiill8v4hmzdk90yz4gk2ha0prr2p0hq36s40v3y8842"))))
+         "0m3g5m0g08k674zh4lq0ihmqiwz8jpsfqrdwfqp5p4ngxi8vp7lg"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-crayon r-r6 r-rprojroot))
+     (list r-cli r-r6 r-rprojroot))
     (home-page "https://github.com/r-pkgs/desc")
     (synopsis "Manipulate DESCRIPTION Files")
     (description
@@ -2375,14 +2383,14 @@ other packages.")
 (define-public r-commonmark
   (package
     (name "r-commonmark")
-    (version "1.7")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "commonmark" version))
        (sha256
         (base32
-         "024iz1qp2kv6iz6y69ir0jk3qhjps86rhkzlcmhqsxx97rx7cjni"))))
+         "0s765c650id19ygx57bsjsw93fwxywmp50zid671bkxi6wlyf1vx"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/commonmark")
     (synopsis "CommonMark and Github Markdown Rendering in R")
@@ -2432,14 +2440,14 @@ collation, and NAMESPACE files.")
 (define-public r-openssl
   (package
     (name "r-openssl")
-    (version "1.4.6")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "openssl" version))
        (sha256
         (base32
-         "0na3yficxg0hjql9pvz96f66yh4g5k2hfwcricb705z7f2pk5f23"))))
+         "0jsnzxa72bfxsdai25xyklmmrraaf9yv2nmqmf0bgzrkbzkgsa7b"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -2581,13 +2589,13 @@ tools to simplify the devolpment of R packages.")
 (define-public r-withr
   (package
     (name "r-withr")
-    (version "2.4.3")
+    (version "2.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "withr" version))
               (sha256
                (base32
-                "0k4x2bd9wb24n3dyg7rdjicdjs5ay2kk5lfgkrcjsv6cki2wgnlv"))))
+                "1h4bzj0am9lawbh1cam1jmgk1xjmn9da14r90w3q984hswz7nc9p"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -2805,17 +2813,18 @@ certain criterion, e.g., it contains a certain regular file.")
 (define-public r-rmarkdown
   (package
     (name "r-rmarkdown")
-    (version "2.11")
+    (version "2.13")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "rmarkdown" version))
         (sha256
-          (base32 "0xcpg9d009a71p5i6jczw02qcp907p5d52lp6vclrsp7019jawck"))))
+          (base32 "0i07p3dxxv2s2a4xmyhc3qxmwg86vakniq5jjjclmcq2sahvw5vj"))))
     (properties `((upstream-name . "rmarkdown")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-evaluate
+     (list r-bslib
+           r-evaluate
            r-htmltools
            r-jquerylib
            r-jsonlite
@@ -2919,13 +2928,13 @@ a column in data frame.")
 (define-public r-rsqlite
   (package
     (name "r-rsqlite")
-    (version "2.2.9")
+    (version "2.2.10")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RSQLite" version))
               (sha256
                (base32
-                "075vsnbkcwpwnn87b06mhbg2fflqhjvbylhbkg0d3v3rl7zg28s4"))))
+                "1a00i24g4d4gvp7qmivpyfm24yfz4w4wsy2kplgfz0i0j0rzzbh6"))))
     (properties `((upstream-name . "RSQLite")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2992,13 +3001,13 @@ ldap, and also supports cookies, redirects, authentication, etc.")
 (define-public r-xml
   (package
     (name "r-xml")
-    (version "3.99-0.8")
+    (version "3.99-0.9")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "XML" version))
               (sha256
                (base32
-                "0l3bsgqw4bicv3sl2bfag7p4rh1y2pcyg0ajr73kkbg85qf6j7q8"))))
+                "02ba407ddgil4jbjzrbw756hlxzy3mihc5dk1ngcbvsp67gxw5cw"))))
     (properties
      `((upstream-name . "XML")))
     (build-system r-build-system)
@@ -3178,14 +3187,14 @@ standard R subsetting and Kronecker products.")
 (define-public r-iterators
   (package
     (name "r-iterators")
-    (version "1.0.13")
+    (version "1.0.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "iterators" version))
        (sha256
         (base32
-         "190i1y2493v5c9z8978rb3idlwsjymy67k1assa9znljqbj313kp"))))
+         "0yv7rh6ghlfx727xy2aq64a7skyxp9msakaffs641q9h15d0gwyf"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/iterators")
     (synopsis "Iterator construct for R")
@@ -3198,14 +3207,14 @@ data.")
 (define-public r-foreach
   (package
     (name "r-foreach")
-    (version "1.5.1")
+    (version "1.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "foreach" version))
        (sha256
         (base32
-         "1qb83b1jvpmk8d6kfibkm5q2hiki0x5gipy758mwa62n56gdcnpv"))))
+         "1r5gdf9fp3rprvrhf0gzl9qmmqhgdn5gscpm5hk8zxpraf3qscsn"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-codetools r-iterators))
@@ -3227,14 +3236,14 @@ parallel.")
 (define-public r-doparallel
   (package
     (name "r-doparallel")
-    (version "1.0.16")
+    (version "1.0.17")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doParallel" version))
        (sha256
         (base32
-         "1cjf0mxrxgls5pl7aj22fv9j488craib1wkc9np4f3gkckwjdfzi"))))
+         "1mxbg2qqda1775vb4s26gz27p5n91lljgjmlqxq4sras22njasmr"))))
     (properties `((upstream-name . "doParallel")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3249,14 +3258,14 @@ using the parallel package.")
 (define-public r-domc
   (package
     (name "r-domc")
-    (version "1.3.7")
+    (version "1.3.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doMC" version))
        (sha256
         (base32
-         "0kdmfhp5m1wisjbfyl9d040jrmjmhcgjb0vdi536g2i9vixb5yny"))))
+         "18qrcvqwm4cclvk8spvyi281y8prwzivj52xmzk1l9a82j2ny65j"))))
     (properties `((upstream-name . "doMC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3556,13 +3565,13 @@ using the multicore functionality of the parallel package.")
             "datatables-extensions/Select"))))
     (package
       (name "r-dt")
-      (version "0.20")
+      (version "0.21")
       (source (origin
                 (method url-fetch)
                 (uri (cran-uri "DT" version))
                 (sha256
                  (base32
-                  "17xs18i439p15agyk7z2xyyrwgrpn5pw09kd3jwxn7qhxi4pyvf6"))
+                  "1yhlph9h8z78wqjddv598l2xrqpp605d70cxfb69m53hanw4hmzn"))
                 (modules '((guix build utils)))
                 (snippet
                  '(for-each delete-file
@@ -4148,14 +4157,14 @@ more complete @code{viridis} package.")
 (define-public r-tidyselect
   (package
     (name "r-tidyselect")
-    (version "1.1.1")
+    (version "1.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidyselect" version))
        (sha256
         (base32
-         "0ss8mq05mwif64cj8zmrfx0ljgy3n0fvyv7f37782shr8rknmsqq"))))
+         "0w423pmg9wjx6q2rnp2ap66323rxvpmzd4nnsqq4m58pajqs7283"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ellipsis r-glue r-purrr r-rlang r-vctrs))
@@ -4173,14 +4182,14 @@ selection.")
 (define-public r-tidyr
   (package
     (name "r-tidyr")
-    (version "1.1.4")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidyr" version))
        (sha256
         (base32
-         "0h8jfsmn4r7zgfyjmg2qkjd54n0sncq07xjh4mdf2cx4k2z9h30b"))))
+         "1a0k296a0jb2xi5zgfrqfmmw8197bwibjl7a04fm49vqx6livl4c"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cpp11
@@ -5035,14 +5044,14 @@ perform @dfn{independent component analysis} (ICA) and projection pursuit.")
 (define-public r-randomforest
   (package
     (name "r-randomforest")
-    (version "4.6-14")
+    (version "4.7-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "randomForest" version))
        (sha256
         (base32
-         "0kbmm0l42fc2d1rdq0l7k09d34kd87q4lx651ffsic4y84h8kf7l"))))
+         "04q6gb917md4yw837cf9vlx1q8ljl06jw7yhykzb6nl47w55jnkq"))))
     (properties `((upstream-name . "randomForest")))
     (build-system r-build-system)
     (home-page "https://www.stat.berkeley.edu/~breiman/RandomForests/")
@@ -5235,14 +5244,14 @@ analysis} (PCA) by projection pursuit.")
 (define-public r-rrcov
   (package
     (name "r-rrcov")
-    (version "1.6-1")
+    (version "1.6-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rrcov" version))
        (sha256
         (base32
-         "142x60zcgz61iw0ps78hh4cmny3ch0hb3lac6z87bhys5c7m0fwz"))))
+         "18x8y2b9n2plpn4086nkjk9c27p7gb78kbrv5pj9r8fb0idl5rn5"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice r-mvtnorm r-pcapp r-robustbase))
@@ -5286,14 +5295,14 @@ generally.")
 (define-public r-robust
   (package
     (name "r-robust")
-    (version "0.6-1")
+    (version "0.7-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robust" version))
        (sha256
         (base32
-         "0z8i0qqlsa6vpl457qir3dlsynhjfn2g22436d776vxwyqjx4vs9"))))
+         "1fc4h19b7gn9ya2j2ia8vfgsycwlyc23frj54k11dr45w4qaq6jy"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-fit-models r-lattice r-mass r-robustbase r-rrcov))
@@ -5363,13 +5372,13 @@ groupings.")
 (define-public r-vgam
   (package
     (name "r-vgam")
-    (version "1.1-5")
+    (version "1.1-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "VGAM" version))
        (sha256
-        (base32 "1fx123h4x5awzshv0m4jqbbllrdjfpslb2i8gl9phm1y1wahn69h"))))
+        (base32 "05yl1lbpambwg3i3rqn6aanaym7c3s8g7hi0bph98iyxqnx62sj4"))))
     (properties `((upstream-name . "VGAM")))
     (build-system r-build-system)
     (native-inputs
@@ -5498,13 +5507,13 @@ using modular prediction and response module classes.")
 (define-public r-quantreg
   (package
     (name "r-quantreg")
-    (version "5.87")
+    (version "5.88")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantreg" version))
        (sha256
-        (base32 "13m3znkrrkf19s3lz6984lzrznng4nma38yy17pqjfzmwl4yzmws"))))
+        (base32 "0grsha18zkiil0qnxc1d7kc3w26i6aaa4av9n9ahdm8yf59yah0r"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran))
@@ -5551,14 +5560,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-27.1")
+    (version "1.1-28")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "1i9f8kl2qj48j75dbn1vmwxz1xlbikdr7v2yq542w6dq74z8gyi5"))))
+         "03nw76bfyas6cdm9chyxqm5ks6r0qklf2fdy7h4pqrqss325x1fi"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-boot
@@ -5759,14 +5768,14 @@ first and second order derivatives.")
 (define-public r-sn
   (package
     (name "r-sn")
-    (version "2.0.1")
+    (version "2.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sn" version))
        (sha256
         (base32
-         "1z58kwvq8igjm3biyyjdlhs2qq8hfjq5d9x0lzy80yk5hw08kcw6"))))
+         "140p1pl5sq0laxhcm16kbqm986hlhqj90gj3jccga491gh14jywm"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-mnormt r-numderiv r-quantreg))
@@ -6160,6 +6169,45 @@ structure, and allows relevant features to be embedded directly onto the
 visualization, facilitating interpretation of the data.")
       (license license:gpl2))))
 
+(define-public r-languageserver
+  (let ((commit "004da9388f9b19990f031c8dc9b527fb406378ba")
+        (revision "1"))
+    (package
+      (name "r-languageserver")
+      (version (git-version "0.3.12" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/REditorSupport/languageserver")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "05f22bjpc87fngzq4jsk2q2yb2i3ha03b377r0wx15d0b8xaa1ix"))))
+      (properties `((upstream-name . "languageserver")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-callr
+             r-collections
+             r-fs
+             r-jsonlite
+             r-lintr
+             r-r6
+             r-roxygen2
+             r-stringi
+             r-styler
+             r-xml2
+             r-xmlparsedata))
+      (home-page "https://github.com/REditorSupport/languageserver")
+      (synopsis "Language Server for R")
+      (description
+       "This package provides an implementation of the Language Server
+Protocol for R.  The
+@url{https://microsoft.github.io/language-server-protocol/,Language Server
+protocol} is used by an editor client to integrate features like auto
+completion.")
+      (license license:expat))))
+
 (define-public python-rpy2
   (package
     (name "python-rpy2")
@@ -6939,3 +6987,109 @@ is used to allow menus, dialogs, and the response to mouse actions to be
  customized.")
       (home-page "http://homepage.divms.uiowa.edu/~luke/xls/xlsinfo/")
       (license license:expat))))
+
+(define-public r-rlrsim
+  (package
+    (name "r-rlrsim")
+    (version "3.1-6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "RLRsim" version))
+        (sha256
+          (base32 "1wkkibr250frsbfq70m9jdrylxb492zibf5w03z6zis98pjffssp"))))
+    (properties `((upstream-name . "RLRsim")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-lme4 r-mgcv r-nlme r-rcpp))
+    (home-page "https://github.com/fabian-s/RLRsim")
+    (synopsis
+      "Exact (Restricted) Likelihood Ratio Tests for Mixed and Additive Models")
+    (description
+      "Rapid, simulation-based exact (restricted) likelihood ratio tests for testing
+the presence of variance components/nonparametric terms for models fit with
+@code{nlme::lme()}, @code{lme4::lmer()}, @code{lmeTest::lmer()},
+@code{gamm4::gamm4()}, @code{mgcv::gamm()} and @code{SemiPar::spm()}.")
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-binom
+  (package
+    (name "r-binom")
+    (version "1.1-1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "binom" version))
+        (sha256
+          (base32 "0mjj92dqf5q69jxzqya4izb1mly3mkydbnmlm4wb3zqqg82a324c"))))
+    (properties `((upstream-name . "binom")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=binom")
+    (synopsis "Binomial Confidence Intervals For Several Parameterizations")
+    (description
+      "Constructs confidence intervals on the probability of success in a binomial
+experiment via several parameterizations")
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-simr
+  (package
+    (name "r-simr")
+    (version "1.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "simr" version))
+       (sha256
+        (base32 "1q8ip54c5pc7pjf8127jpk56nr3f8rmwqdcrr84faj4lfbr27wqb"))))
+    (properties `((upstream-name . "simr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-binom
+           r-car
+           r-iterators
+           r-lme4
+           r-lmertest
+           r-pbkrtest
+           r-plotrix
+           r-plyr
+           r-rlrsim
+           r-stringr))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/pitakakariki/simr")
+    (synopsis
+     "Power analysis for generalized linear mixed models by simulation")
+    (description
+     "This package lets you calculate power for generalized linear mixed
+models, using simulation.  It was designed to work with models fit using the
+@code{lme4} package.  The package is described in
+@url{doi:10.1111/2041-210X.12504, Green and MacLeod (2016)}.")
+    (license license:gpl2+)))
+
+(define-public r-mixedpower
+  (package
+    (name "r-mixedpower")
+    (version "2.0")
+    (source
+      (origin
+        ;; Not available on CRAN.
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/DejanDraschkow/mixedpower")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1dy1i8lijbq59xl7482j17a0r4rsdy61smzddk8jsr8nygp2gqy8"))))
+    (properties `((upstream-name . "mixedpower")))
+    (build-system r-build-system)
+    (propagated-inputs
+      (list r-doparallel r-foreach r-ggplot2 r-lme4 r-reshape2))
+    (home-page "https://github.com/DejanDraschkow/mixedpower")
+    (synopsis
+      "Pilotdata based simulations for estimating power in linear mixed models")
+    (description
+      "Implementation of a simulation based aproach to power analysis.  Mixedpower uses
+lotdata and a linear mixed model fitted with lme4 to simulate new data sets.
+wer is computed seperate for every effect in the model output as the relation
+significant simulations to all simulations.  More conservative simulations as
+protection against a bias in the pilotdata are available aswell as methods for
+otting the results.")
+    (license license:gpl3)))
diff --git a/gnu/packages/stenography.scm b/gnu/packages/stenography.scm
index 969395cbcf..3b86ab6bcf 100644
--- a/gnu/packages/stenography.scm
+++ b/gnu/packages/stenography.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,7 +34,7 @@
 (define-public plover
   (package
     (name "plover")
-    (version "4.0.0.dev8")
+    (version "4.0.0.dev10")
     (source
      (origin
        (method git-fetch)
@@ -42,10 +43,10 @@
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1b2ys77bkjsdmyg97i7lq3lj45q56bycvsm06d4rs656kxhvc0a3"))))
+        (base32 "1nyllqv4jq4idgn4cp5mypransw3rh3x8c1h9p6ld1anfr3zx7m0"))))
     (build-system python-build-system)
     (native-inputs
-     (list python-mock python-pytest python-setuptools-scm))
+     (list python-pytest))
     (inputs
      (list python-appdirs
            python-pyqt
@@ -53,7 +54,6 @@
            python-dbus
            python-hidapi
            python-pyserial
-           python-wxpython
            python-xlib))
     (home-page "https://www.openstenoproject.org/plover/")
     (synopsis "Stenography engine")
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 708eb2c338..5aa37657b9 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;; Copyright © 2021 Nikolay Korotkiy <sikmir@disroot.org>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -273,14 +274,14 @@ optimising the environment for the application in use and the task performed.")
 (define-public dmenu
   (package
     (name "dmenu")
-    (version "5.0")
+    (version "5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dl.suckless.org/tools/dmenu-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1lvfxzg3chsgcqbc2vr0zic7vimijgmbvnspayx73kyvqi1f267y"))))
+                "1mcg6i5g2c4wsyq9ap739si4zghk1xg6c3msdqrbfzm3pfg70k8z"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index ebf7c2322e..107b97e547 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -46,7 +46,7 @@
 (define-public syncthing
   (package
     (name "syncthing")
-    (version "1.19.0")
+    (version "1.19.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/syncthing/syncthing"
@@ -54,7 +54,7 @@
                                   "/syncthing-source-v" version ".tar.gz"))
               (sha256
                (base32
-                "13b8dsvqgah13w5sfbwv1fpwj6sfqj2lv0d0x9433ljjq92lxkbg"))))
+                "09silpbpciqzpr4y4ycpkxrwi9zf90xgd13844m145134cpyrigz"))))
     (build-system go-build-system)
     ;; The primary Syncthing executable goes to "out", while the auxiliary
     ;; server programs and utility tools go to "utils".  This reduces the size
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 421751bed2..0417737d7d 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -291,7 +291,11 @@ cards.")
            (assoc-ref gnu:%standard-phases 'install)))))
     (native-search-paths
      ;; Newsboat respects CURL_CA_BUNDLE.
-     (package-native-search-paths curl))
+     (list (search-path-specification
+            (variable "CURL_CA_BUNDLE")
+            (file-type 'regular)
+            (separator #f)                        ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
     (home-page "https://newsboat.org/")
     (synopsis "Text-mode RSS and Atom feed reader with podcast support")
     (description "Newsboat is a feed reader for @dfn{RSS} and @dfn{Atom}, XML
@@ -511,56 +515,6 @@ a simple interface that makes it easy to organize and browse feeds.")
 formats, including all versions of RSS and Atom.")
     (license license:gpl2+)))
 
-(define-public quiterss
-  (package
-    (name "quiterss")
-    (version "0.19.4")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/QuiteRSS/quiterss")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1cgvl67vhn5y7bj5gbjbgk26bhb0196bgrgsp3r5fmrislarj8s6"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* (find-files "." "\\.cpp$")
-                    ;; Disable Google Analytics spyware by default,
-                    ;; removing completely is not trivial.
-                    (("settings\\.value\\(\"Settings/statisticsEnabled2\", true\\)")
-                     "settings.value(\"Settings/statisticsEnabled2\", false)")
-                    ;; Disable update check spyware by default, otherwise runs
-                    ;; at every startup, nasty. Not needed on GNU Guix as a
-                    ;; feature either way.
-                    (("settings\\.value\\(\"Settings/updateCheckEnabled\", true\\)")
-                     "settings.value(\"Settings/updateCheckEnabled\", false)"))
-                  #t))))
-    (build-system qt-build-system)
-    (arguments
-     `(#:tests? #f ;; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (invoke "qmake" "CONFIG+=release"
-                     (string-append "PREFIX="
-                                    (assoc-ref outputs "out"))
-                     (string-append "QMAKE_LRELEASE="
-                                    (assoc-ref inputs "qttools")
-                                    "/bin/lrelease")))))))
-    (native-inputs
-     (list pkg-config qttools))
-    (inputs
-     (list qtwebkit qtbase-5 qtmultimedia phonon sqlite))
-    (home-page "https://quiterss.org/")
-    (synopsis "RSS/Atom news feeds reader written on Qt/C++")
-    (description "QuiteRSS is an RSS/Atom news feeds reader written on Qt/C++
-that aims to be quite fast and comfortable to its user.")
-    (license license:gpl3+)))
-
 (define-public gfeeds
   (package
     (name "gfeeds")
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 5b036f4767..6c5efc50b9 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -23,7 +23,6 @@
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
@@ -409,7 +408,6 @@ Telegram project, for its use in telegram desktop client.")
        ("gtk+" ,gtk+)
        ("hime" ,hime)
        ("hunspell" ,hunspell)
-       ("iconv" ,libiconv)
        ("jemalloc" ,jemalloc)
        ("kwayland" ,kwayland)
        ("lib-base-source"
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index b4b2585935..e3071d9b75 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -50,6 +50,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
@@ -91,6 +92,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
@@ -536,34 +538,48 @@ address of one of the participants.")
     (home-page "http://holdenc.altervista.org/seren/")
     (license license:gpl3+)))
 
+(define find-python-interpreter-cmake-modules
+  (let ((commit "bb4d3ea8434eebef40df35434a9b6ef410fce0b2")
+        (revision "0"))
+   (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/Krzmbrzl/FindPythonInterpreter")
+          (commit commit)))
+    (file-name (git-file-name "find-python-interpreter"
+                              (git-version "0" revision commit)))
+    (sha256
+     (base32
+      "1ryhda2yqgrhnwndfg52mscdsclg1ivv746hvalcay5m1wy2h5bm")))))
+
 (define-public mumble
   (package
     (name "mumble")
-    (version "1.3.4")
+    (version "1.4.230")
     (source (origin
               (method url-fetch)
               (uri
                (string-append
-                "https://github.com/mumble-voip/mumble/releases/download/"
+                "https://github.com/mumble-voip/mumble/releases/download/v"
                 version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "14v0rgy1a5alxmz7ly95y38bdj0hx79yysgkcd8r8p9qqfzlwpv1"))
+                "1c1lwj0cpyawr74adpdrsnxk8ra5kqrjbg65cnwk8n6cwss84zdn"))
               (modules '((guix build utils)
                          (ice-9 ftw)
                          (srfi srfi-1)))
               (snippet
                `(begin
                   (let ((keep
-                         '("arc4random-src"
+                         '("arc4random"
                            "celt-0.7.0-build"
                            "celt-0.7.0-src"
                            "celt-0.11.0-build"
                            "celt-0.11.0-src"
-                           "qqbonjour-src"
+                           "qqbonjour"
                            "rnnoise-build"
                            "rnnoise-src"
-                           "smallft-src")))
+                           "smallft")))
 	            (with-directory-excursion "3rdparty"
 	              (for-each delete-file-recursively
 			        (lset-difference string=?
@@ -572,105 +588,70 @@ address of one of the participants.")
                     #t)))))
     (build-system qt-build-system)
     (arguments
-     `(#:tests? #f  ; no "check" target
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (invoke "qmake" "main.pro" "QMAKE_LRELEASE=lrelease"
-                     (string-append "MUMBLE_PYTHON="
-                                    (search-input-file inputs
-                                                       "/bin/python3"))
-                     (string-append "CONFIG+="
-                                    (string-join
-                                     ;; Options used are listed in the same order
-                                     ;; as in the "INSTALL" file
-                                     ;; (plus the final "packaged" and "release").
-                                     (list "no-bundled-speex" ; in speex
-                                           "no-bundled-opus" ; in opus
-                                           "no-g15" ; not packaged
-                                           "no-jackaudio" ; use pulse
-                                           "no-oss" ; use pulse
-                                           "no-alsa" ; use pulse
-                                           "no-update"
-                                           "no-embed-qt-translations"
-                                           "no-ice" ; not packaged
-                                           "packaged"
-                                           "release")))
-                     (string-append "DEFINES+="
-                                    "PLUGIN_PATH="
-                                    (assoc-ref outputs "out")
-                                    "/lib/mumble"))))
-         (add-before 'configure 'fix-libspeechd-include
-           (lambda _
-             (substitute* "src/mumble/TextToSpeech_unix.cpp"
-               (("libspeechd.h") "speech-dispatcher/libspeechd.h"))
-             #t))
-         ;; disable statistic gathering by default. see <https://bugs.gnu.org/25201>
-         (add-before 'configure 'fix-statistic-gathering-default
-           (lambda _
-             (substitute* "src/mumble/Settings.cpp"
-               (("bUsage = true;") "bUsage = false;"))
-             #t))
-         (add-before 'configure 'fix-mumble-overlay
-           (lambda* (#:key outputs #:allow-other-keys)
+     (list
+      #:configure-flags
+      #~(list "-Dbundled-speex=off"
+              "-Dbundled-opus=off"
+              ;; "-Dbundled-rnnoise=off" ; XXX: not yet in release
+              "-Dalsa=off" ; use pulse
+              "-Dcoreaudio=off" ; use pulse
+              "-Dice=off" ; not packaged
+              "-Djackaudio=off" ; use pulse
+              "-Doss=off" ; use pulse
+              "-Dpulseaudio=on"
+              "-Dportaudio=off" ; use pulse
+              "-Dpipewire=off" ; use pulse
+              "-Doverlay-xcompile=off"
+              "-Dupdate=off" ; don't phone home
+              "-Dtests=on"
+              "-Dbundle-qt-translations=off")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'unpack-submodules
+            (lambda _
+              (copy-recursively #$find-python-interpreter-cmake-modules
+                                "3rdparty/FindPythonInterpreter")))
+          (add-after 'unpack 'disable-murmur-ice
+            (lambda _
+              (substitute* "scripts/murmur.ini"
+                (("^ice=") ";ice="))))
+          ;; disable statistic gathering by default. see <https://bugs.gnu.org/25201>
+          (add-after 'unpack 'fix-statistic-gathering-default
+            (lambda _
+              (substitute* "src/mumble/Settings.h"
+                (("bUsage *= true;") "bUsage = false;"))))
+          (add-after 'unpack 'fix-mumble-overlay
+            (lambda* (#:key inputs outputs #:allow-other-keys)
               (with-output-to-file "scripts/mumble-overlay"
                 (lambda ()
-                  (format #t "#!~a~%" (which "bash"))
+                  (format #t "#!~a~%" (search-input-file inputs "/bin/bash"))
                   (format #t "export LD_PRELOAD=\"~a $LD_PRELOAD\"~%"
                           (string-append (assoc-ref outputs "out")
-                                         "/lib/mumble/libmumble.so.1"))
-                  (format #t "exec \"${@}\"")))
-              #t))
-         (add-before 'install 'disable-murmur-ice
-           (lambda _
-             (substitute* "scripts/murmur.ini.system"
-               (("^ice=") ";ice="))
-             #t))
-         (replace 'install ; install phase does not exist
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (etc (string-append out "/etc/murmur"))
-                    (dbus (string-append out "/etc/dbus-1/system.d/"))
-                    (bin (string-append out "/bin"))
-                    (services (string-append out "/share/services"))
-                    (applications (string-append out "/share/applications"))
-                    (icons (string-append out "/share/icons/hicolor/scalable/apps"))
-                    (man (string-append out "/share/man/man1"))
-                    (lib (string-append out "/lib/mumble")))
-               (install-file "release/mumble" bin)
-               (install-file "scripts/mumble-overlay" bin)
-               (install-file "scripts/mumble.protocol" services)
-               (install-file "scripts/mumble.desktop" applications)
-               (install-file "icons/mumble.svg" icons)
-               (install-file "man/mumble-overlay.1" man)
-               (install-file "man/mumble.1" man)
-               (install-file "release/murmurd" bin)
-               (install-file "scripts/murmur.ini.system" etc)
-               (rename-file (string-append etc "/murmur.ini.system")
-                            (string-append etc "/murmur.ini"))
-               (install-file "scripts/murmur.conf" dbus)
-               (install-file "man/murmurd.1" man)
-               (for-each (lambda (file) (install-file file lib))
-                         (find-files "." "\\.so\\."))
-               (for-each (lambda (file) (install-file file lib))
-                         (find-files "release/plugins" "\\.so$"))
-               #t))))))
+                                         "/lib/mumble/libmumbleoverlay.so"))
+                  (format #t "exec \"${@}\"")))))
+          (add-after 'unpack 'hardcode-pulseaudio
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/mumble/PulseAudio.cpp"
+                (("libpulse.so") (search-input-file inputs "/lib/libpulse.so"))))))))
     (inputs
      (list avahi
            boost
+           glib ; for speech-dispatcher
            libsndfile
            libxi
            mesa ; avoid bundled
            openssl
            opus ; avoid bundled
+           poco
            protobuf
            pulseaudio
            qtbase-5
            qtsvg
            speech-dispatcher
            speex ; avoid bundled
-           speexdsp)) ; avoid bundled
+           speexdsp ; avoid bundled
+           ;; xiph-rnnoise ; TODO: unbundle rnnoise
+           ))
     (native-inputs
      (list pkg-config python qttools))
     (synopsis "Low-latency, high quality voice chat software")
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 88923d5058..eb81b5424e 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -836,7 +837,7 @@ eye-candy, customizable, and reasonably lightweight.")
 (define-public foot
   (package
     (name "foot")
-    (version "1.10.3")
+    (version "1.11.0")
     (home-page "https://codeberg.org/dnkl/foot")
     (source (origin
               (method git-fetch)
@@ -844,7 +845,7 @@ eye-candy, customizable, and reasonably lightweight.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13v6xqaw3xn1x84dn4gnkiimcsllb19mrbvcdj2fnm8klnrys3gs"))))
+                "1d9bk8lhmw5lc8k0mw80g0vbwgxyh3gw5c7ppy3sir07s9y0y0fn"))))
     (build-system meson-build-system)
     (arguments
      `(;; Using a "release" build is recommended both for performance, and
@@ -1366,7 +1367,7 @@ made by suckless.")
 (define-public tio
   (package
     (name "tio")
-    (version "1.32")
+    (version "1.35")
     (source
      (origin
        (method url-fetch)
@@ -1374,8 +1375,8 @@ made by suckless.")
              "https://github.com/tio/tio/releases/download/v"
              version "/tio-" version ".tar.xz"))
        (sha256
-        (base32 "0i5fhi4xdk4yznj8wahniizddmx6wlcnnhda1dw9djyajilyvxd8"))))
-    (build-system gnu-build-system)
+        (base32 "02cx3hjk2rv2dmds2xi17ymi93k6zybapa33ydyfkx3mfvgfq28k"))))
+    (build-system meson-build-system)
     (home-page "https://tio.github.io/")
     (synopsis "Simple TTY terminal I/O application")
     (description "tio is a simple TTY terminal application which features a
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 753a6e8d8d..34e9aa1e06 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -436,6 +436,18 @@ files from LOCATIONS with expected checksum HASH.  CODE is not currently in use.
            (lambda _
              (substitute* "texk/kpathsea/config.h"
                (("#define ST_NLINK_TRICK") ""))))
+
+         ,@(if (target-arm32?)
+               `((add-after 'unpack 'skip-faulty-test
+                   (lambda _
+                     ;; Skip this faulty test on armhf-linux:
+                     ;;   https://issues.guix.gnu.org/54055
+                     (substitute* '("texk/mendexk/tests/mendex.test"
+                                    "texk/upmendex/tests/upmendex.test")
+                       (("^TEXMFCNF=" all)
+                        (string-append "exit 77 # skip\n" all))))))
+               '())
+
          (add-after 'check 'customize-texmf.cnf
            ;; The default texmf.cnf is provided by this package, texlive-bin.
            ;; Every variable of interest is set relatively to the GUIX_TEXMF
@@ -1431,11 +1443,12 @@ details can be found in the documentation.")
                          "/fonts/source/public/amsfonts/"
                          "/fonts/type1/public/amsfonts/"
                          "/fonts/afm/public/amsfonts/"
+                         "/fonts/tfm/public/amsfonts/"
                          "/fonts/map/dvips/amsfonts/"
                          "/tex/plain/amsfonts/"
                          "/doc/fonts/amsfonts/")
                    (base32
-                    "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw"))))
+                    "1rpl87643q8v6gcqsz68mjha8wac6cqx7mr16ds8f0ccbw7a4w9b"))))
     (package
       (inherit template)
       (arguments
@@ -1444,135 +1457,17 @@ details can be found in the documentation.")
           '(list "amsfonts.ins"))
          ((#:tex-directory _ #t)
           "latex/amsfonts")
-         ((#:modules modules '())
-          `((guix build texlive-build-system)
-            (guix build utils)
-            (ice-9 match)
-            (srfi srfi-1)
-            (srfi srfi-26)))
          ((#:phases phases)
           `(modify-phases ,phases
-             (add-before 'build 'build-fonts
-               (lambda* (#:key inputs #:allow-other-keys)
-                 ;; Allow self fonts sources and other resources to be
-                 ;; discovered.
-                 (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF")
-                                                     ":" (getcwd)))
-
-                 (let ((build "/tmp/build-fonts"))
-                   (mkdir-p build)
-                   (with-directory-excursion "fonts/source/public/amsfonts"
-                     (for-each (lambda (font)
-                                 (format #t "building font ~a\n" (basename font ".mf"))
-                                 (with-directory-excursion (dirname font)
-                                   (let ((outdir (string-append build "/" (dirname font))))
-                                     (mkdir-p outdir)
-                                     (invoke "mf" "-progname=mf"
-                                             (string-append "-output-directory=" outdir)
-                                             (string-append "\\"
-                                                            "mode:=ljfour; "
-                                                            "mag:=1; "
-                                                            "nonstopmode; "
-                                                            "input "
-                                                            (getcwd) "/"
-                                                            (basename font ".mf"))))))
-                               (find-files "." "([0-9]+|dummy)\\.mf$"))))
-
-                 ;; There are no metafont sources for the Euler fonts, so we
-                 ;; convert the afm files instead.
-                 (let ((build "/tmp/build-fonts"))
-                   (mkdir-p build)
-                   (with-directory-excursion "fonts/afm/public/amsfonts/"
-                     ;; These files have bogus values for the Descender field,
-                     ;; so we can't process them.
-                     (substitute* (find-files "." "eus(b|m).*\\.afm$")
-                       (("^Descender -2147483648") ""))
-
-                     (for-each (lambda (font)
-                                 (let ((directory (string-append build "/" (dirname font))))
-                                   (mkdir-p directory)
-                                   (format #t "converting afm font ~a\n" (basename font ".afm"))
-                                   (invoke "afm2tfm" font
-                                           (string-append directory "/"
-                                                          (basename font ".afm")
-                                                          ".tfm"))))
-                               (find-files "." "\\.afm$")))
-
-                   ;; Frustratingly, not all fonts can be created this way.  To
-                   ;; generate eufm8.tfm, for example, we first scale down
-                   ;; eufm10.afm to eufm8.pl, and then generate the tfm file from
-                   ;; the pl file.
-                   (setenv "TEXINPUTS"
-                           (string-append ":" build "//:"
-                                          (getcwd) "/fonts/afm/public/amsfonts//:"
-                                          (getcwd) "/source/latex/amsfonts//:"))
-
-                   (with-directory-excursion (string-append build "/euler")
-                     (for-each (match-lambda
-                                 (((target-base target-size)
-                                   (source-base source-size))
-                                  (let ((factor (number->string
-                                                 (truncate/ (* 1000 target-size)
-                                                            source-size))))
-                                    (invoke "tex"
-                                            "-interaction=scrollmode"
-                                            (string-append "\\input fontinst.sty "
-                                                           "\\transformfont{" target-base "}"
-                                                           "{\\scalefont{" factor "}"
-                                                           "{\\fromafm{" source-base "}}} "
-                                                           "\\bye")))
-                                  (invoke "pltotf"
-                                          (string-append target-base ".pl")
-                                          (string-append target-base ".tfm"))
-                                  (delete-file (string-append target-base ".pl"))))
-
-                               '((("eufb6" 6) ("eufb7" 7))
-                                 (("eufb8" 8) ("eufb10" 10))
-                                 (("eufb9" 9) ("eufb10" 10))
-
-                                 (("eufm6" 6) ("eufm7" 7))
-                                 (("eufm8" 8) ("eufm10" 10))
-                                 (("eufm9" 9) ("eufm10" 10))
-
-                                 (("eurb6" 6) ("eurb7" 7))
-                                 (("eurb8" 8) ("eurb10" 10))
-                                 (("eurb9" 9) ("eurb10" 10))
-
-                                 (("eurm6" 6) ("eurm7" 7))
-                                 (("eurm8" 8) ("eurm10" 10))
-                                 (("eurm9" 9) ("eurm10" 10))
-
-                                 (("eusb6" 6) ("eusb7" 7))
-                                 (("eusb8" 8) ("eusb10" 10))
-                                 (("eusb9" 9) ("eusb10" 10))
-
-                                 (("eusm6" 6) ("eusm7" 7))
-                                 (("eusm8" 8) ("eusm10" 10))
-                                 (("eusm9" 9) ("eusm10" 10))))))))
-             (add-after 'install 'install-generated-fonts
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (copy-recursively "/tmp/build-fonts"
-                                   (string-append
-                                    (assoc-ref outputs "out")
-                                    "/share/texmf-dist/fonts/tfm/public/amsfonts"))))
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/amsfonts")))
+             (add-before 'copy-files 'unchdir
+               (lambda _ (chdir "../../..")))
              (add-after 'copy-files 'remove-extra-files
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let ((prefix (string-append
-                                (assoc-ref outputs "out")
-                                "/share/texmf-dist/fonts/")))
-                   (for-each delete-file
-                             (find-files (string-append prefix
-                                                        "tfm/public/amsfonts/")
-                                         "\\.(mtx|pl|log|600gf)"))
-                   (for-each delete-file-recursively
-                             (list (string-append (assoc-ref outputs "out")
-                                                  "/share/texmf-dist/build/")
-                                   (string-append prefix
-                                                  "tfm/public/amsfonts/cm/")
-                                   (string-append prefix
-                                                  "tfm/public/amsfonts/latxfont/"))))))))))
-      (native-inputs
-       (list (texlive-updmap.cfg (list texlive-fontinst))))
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (delete-file-recursively
+                  (string-append (assoc-ref outputs "out")
+                                 "/share/texmf-dist/source/latex/amsfonts/build/"))))))))
       (home-page "https://www.ctan.org/pkg/amsfonts")
       (synopsis "TeX fonts from the American Mathematical Society")
       (description
@@ -4017,6 +3912,8 @@ loading fonts by their proper names instead of file names.")
               (sha256
                (base32
                 "172zybw7rp05jca8wl6x0mh6z6gncdyi1j9wdfyjnhbvqw0z4wi4"))))
+    ;; This package misses important files
+    (replacement texlive-amsmath)
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/amsmath"))
     (home-page "https://www.ctan.org/pkg/amsmath")
@@ -4120,6 +4017,8 @@ distribution.")
                     "0qr5vjp79g1c1l6k173qhfdfabgbky73wymzhm56pazx4a8r08wz"))))
     (package
       (inherit template)
+      ;; TODO: This package is missing files.
+      (replacement texlive-babel/fixed)
       (arguments
        (substitute-keyword-arguments (package-arguments template)
          ((#:tex-directory _ #t)
@@ -4414,6 +4313,8 @@ language that is written in a Cyrillic alphabet.")
                     "11f14dzhwsy4pli21acccip43d36nf3pac33ihjffnps1i2mhqkd"))))
     (package
       (inherit template)
+      ;; TODO: This package is missing files.
+      (replacement texlive-psnfss/fixed)
       (arguments
        (substitute-keyword-arguments (package-arguments template)
          ((#:tex-directory _ #t)
@@ -5935,14 +5836,16 @@ optional arguments, or for macros that are defined as robust macros by
 that also takes care of the involved internal macros.")
     (license license:lppl1.3c+)))
 
-(define-public texlive-latex-listings
+(define-public texlive-listings
   (package
-    (name "texlive-latex-listings")
+    (name "texlive-listings")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
               (uri (texlive-ref "latex" "listings"))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name
+               ;; TODO: Drop "latex-" on next rebuild cycle.
+               (string-append "texlive-latex-listings-" version "-checkout"))
               (sha256
                (base32
                 "082zri3gp8s6p2difhk1pbix2vzmvsf6fmld2z78v35xwk3fiya0"))))
@@ -5959,6 +5862,9 @@ is needed.  Keywords, comments and strings can be typeset using different
 styles.  Support for @code{hyperref} is provided.")
     (license license:lppl1.3+)))
 
+(define-public texlive-latex-listings
+  (deprecated-package "texlive-latex-listings" texlive-listings))
+
 (define-public texlive-latex-jknapltx
   (package
     (name "texlive-latex-jknapltx")
@@ -6508,6 +6414,8 @@ use this package to insert PostScript files, in addition to PDF files.")
                     "0yn0yl6x1z9ab5gb56lhvkqabd2agz3ggxifwxkiysrj5780j29z"))))
     (package
       (inherit template)
+      ;; TODO: This package is missing files.
+      (replacement texlive-stmaryrd/fixed)
       (arguments (substitute-keyword-arguments (package-arguments template)
                    ((#:tex-directory _ #t)
                     "latex/stmaryrd")
@@ -7201,33 +7109,15 @@ implements an easy to use interface for these symbols.")
 
 (define-deprecated-package texlive-latex-wasysym texlive-wasysym)
 
-(define-public texlive-latex-wrapfig
+(define-public texlive-wrapfig
   (package
-    (name "texlive-latex-wrapfig")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (svn-reference
-                    (url (string-append "svn://www.tug.org/texlive/tags/"
-                                        %texlive-tag "/Master/texmf-dist/"
-                                        "/tex/latex/wrapfig"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "16xpyl0csmmwndz1xhzqfg9l0zcsnqxslsixsqkwd4zsvfj30sv4"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/wrapfig")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/wrapfig")
+    (inherit
+     (simple-texlive-package
+      "texlive-wrapfig"
+      (list "doc/latex/wrapfig/" "tex/latex/wrapfig/")
+      (base32 "0wk1vp0dqsp597xzsqbwj8xk80v7d77qmpjir84n54f920rf9ka9")
+      #:trivial? #t))
+    (home-page "https://ctan.org/macros/latex/contrib/wrapfig")
     (synopsis "Produces figures which text can flow around")
     (description
      "This package allows figures or tables to have text wrapped around them.
@@ -7235,6 +7125,8 @@ It does not work in combination with list environments, but can be used in a
 @code{parbox} or @code{minipage}, and in two-column format.")
     (license license:lppl)))
 
+(define-deprecated-package texlive-latex-wrapfig texlive-wrapfig)
+
 (define-public texlive-latex-ucs
   (package
     (name "texlive-latex-ucs")
@@ -8093,9 +7985,9 @@ striking out (line through words) and crossing out (/// over words).")
 
 (define-deprecated-package texlive-generic-ulem texlive-ulem)
 
-(define-public texlive-latex-pgf
+(define-public texlive-pgf
   (package
-    (name "texlive-latex-pgf")
+    (name "texlive-pgf")
     (version (number->string %texlive-revision))
     (source
      (origin
@@ -8152,6 +8044,9 @@ works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt.  Unlike pstricks, it can
 produce either PostScript or PDF output.")
     (license license:lppl1.3c+)))
 
+(define-public texlive-latex-pgf
+  (deprecated-package "texlive-latex-pgf" texlive-pgf))
+
 (define-public texlive-latex-koma-script
   (package
     (name "texlive-latex-koma-script")
@@ -8776,7 +8671,7 @@ for a wealth of support information.")
               #:trivial? #t))
     (propagated-inputs
      (list texlive-hyperref texlive-oberdiek texlive-etoolbox
-           texlive-latex-pgf))
+           texlive-pgf))
     (home-page "https://www.ctan.org/pkg/beamer")
     (synopsis "LaTeX class for producing presentations and slides")
     (description "The beamer LaTeX class can be used for producing slides.
@@ -9130,11 +9025,16 @@ are part of the LaTeX required tools distribution, comprising the packages:
            texlive-graphics-def
            texlive-xcolor
            texlive-latex-footmisc
+
+           ;; TODO: Use non-deprecated name on next rebuild cycle.
            texlive-latex-listings
+
            texlive-generic-iftex
            texlive-pstricks
            texlive-pst-text
            texlive-tools
+
+           ;; TODO: Use non-deprecated name on next rebuild cycle.
            texlive-latex-pgf))
     (home-page "http://www.ctan.org/pkg/xkeyval")
     (synopsis "Extension of the keyval package")
@@ -9344,7 +9244,7 @@ section.
     (package
       (inherit template)
       (propagated-inputs
-       (list texlive-latex-pgf texlive-latex-xkeyval))
+       (list texlive-pgf texlive-latex-xkeyval))
       (home-page "http://www.ctan.org/pkg/todonotes")
       (synopsis "Marking things to do in a LaTeX document")
       (description "The @code{todonotes} package lets the user mark
@@ -10071,7 +9971,7 @@ the list of graphics file extensions recognised by package graphics.")
       (native-inputs
        (list texlive-ydoc))
       (propagated-inputs
-       (list texlive-latex-pgf
+       (list texlive-pgf
              texlive-latex-varwidth
              texlive-latex-xkeyval
              texlive-collectbox
@@ -10101,7 +10001,7 @@ provided box macros are @code{\\lapbox}, @code{\\marginbox},
     (package
       (inherit template)
       (propagated-inputs
-       (list texlive-etoolbox texlive-latex-environ texlive-latex-pgf
+       (list texlive-etoolbox texlive-latex-environ texlive-pgf
              texlive-latex-tools))
       (home-page "https://www.ctan.org/pkg/tcolorbox")
       (synopsis "Colored boxes, for LaTeX examples and theorems, etc")
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 0ae1ca4588..45cc61765a 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019, 2020, 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
 ;;; Copyright © 2020 Mark Meyer <mark@ofosos.org>
@@ -900,33 +900,34 @@ Octave.  TeXmacs is completely extensible via Guile.")
 (define-public scintilla
   (package
     (name "scintilla")
-    (version "5.1.5")
+    (version "5.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (let ((v (apply string-append (string-split version #\.))))
               (string-append "https://www.scintilla.org/scintilla" v ".tgz")))
        (sha256
-        (base32 "0mwyhjvmvxyip9z169bgpkz4k9la802z438m8bb0f4gyqfbif999"))))
+        (base32 "1q6z8v2anbdwcxqfqjs0mwl2z4cdzarj0hqxj86fvvdxsr25649r"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "GTK3=1"
-                          ,(string-append "CC=" (cc-for-target))
-                          "-Cgtk")
-       #:tests? #f                      ;require un-packaged Pyside
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ;no configure script
-         (replace 'install
-           ;; Upstream provides no install script.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib"))
-                    (include (string-append out "/include")))
-               (for-each (lambda (f) (install-file f lib))
-                         (find-files "bin/" "\\.so$"))
-               (for-each (lambda (f) (install-file f include))
-                         (find-files "include/" "."))))))))
+     (list
+      #:make-flags
+      #~(list "GTK3=1"
+              (string-append "CC=" #$(cc-for-target))
+              "-Cgtk")
+      #:tests? #f                       ;require un-packaged Pyside
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)           ;no configure script
+          (replace 'install
+            ;; Upstream provides no install script.
+            (lambda _
+              (let ((lib (string-append #$output "/lib"))
+                    (inc (string-append #$output "/include")))
+                (for-each (lambda (f) (install-file f lib))
+                          (find-files "bin/" "\\.so$"))
+                (for-each (lambda (f) (install-file f inc))
+                          (find-files "include/" "."))))))))
     (native-inputs
      (list pkg-config python-wrapper))
     (inputs
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 11c01a8d2a..c776085cad 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -513,7 +513,7 @@ OpenSSL for TARGET."
   (package
     (inherit openssl)
     (name "openssl")
-    (version "1.1.1m")
+    (version "1.1.1n")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -526,12 +526,12 @@ OpenSSL for TARGET."
               (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
               (sha256
                (base32
-                "15kcvdi69jka67sk1l3a50c26cb7xv9xiwdrgky4bji3ifz9k4gq"))))))
+                "0ymif8rlc5cf5qp5bh2pxlrgq6xryh7g4sqfvrdjg9gnli8ypp20"))))))
 
 (define-public openssl-3.0
   (package
     (inherit openssl)
-    (version "3.0.1")
+    (version "3.0.2")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -544,7 +544,7 @@ OpenSSL for TARGET."
               (patches (search-patches "openssl-3.0-c-rehash-in.patch"))
               (sha256
                (base32
-                "1l86kgn57av5yh711qp7c9zmi2haqmiah0ddxnbfgg2k6f2ss4f3"))))
+                "0qyvvw8n97f0gs786l2dkxnmi3hs344mxplw7jp5cisdmp71rscq"))))
     (arguments
      (substitute-keyword-arguments (package-arguments openssl)
        ((#:phases phases '%standard-phases)
diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm
index e980438ca9..fd3385122e 100644
--- a/gnu/packages/toolkits.scm
+++ b/gnu/packages/toolkits.scm
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,8 +19,10 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages toolkits)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages sdl)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -28,7 +32,7 @@
 (define-public imgui
   (package
     (name "imgui")
-    (version "1.86")
+    (version "1.87")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -37,68 +41,103 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n"))
+                "10qil22s5qak3as41787iz273sibpq1bq66bakgn7yvhj5fym6hz"))
               (modules '((guix build utils)))
               (snippet
-               '(begin
-                  ;; Contains fonts and other unneeded files.
-                  (delete-file-recursively "misc")))))
+               ;; Remove bundled fonts.
+               '(delete-file-recursively "misc/fonts"))))
     (outputs '("out" "doc"))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ;no test suite
-       #:modules ((guix build gnu-build-system)
+     (list
+      #:tests? #f                       ;no test suite
+      #:modules '((guix build gnu-build-system)
                   (guix build utils)
                   (ice-9 ftw)
                   (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-includes
-           (lambda _
-             (substitute* (find-files "." "(\\.cpp|\\.mm)$")
-               (("#include <SDL")
-                "#include <SDL2/SDL"))))
-         (delete 'configure)
-         (replace 'build
-           (lambda _
-             ;; Build main library.
-             (invoke ,(cc-for-target) "-I" (getcwd)
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'adjust-includes
+            (lambda _
+              (substitute* (find-files "." "(\\.cpp|\\.mm)$")
+                (("#include <SDL")
+                 "#include <SDL2/SDL"))))
+          (delete 'configure)
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Build main library.
+              (apply invoke #$(cc-for-target) "-I" (getcwd)
+                     "-I" (search-input-directory inputs "include/freetype2")
                      "-g" "-O2" "-fPIC" "-shared"
                      "-lGL" "-lSDL2" "-lglfw"
                      "-o" "libimgui.so"
                      "imgui.cpp"
                      "imgui_draw.cpp"
+                     "imgui_tables.cpp"
+                     "imgui_widgets.cpp"
                      ;; Include the supported backends.
                      "backends/imgui_impl_glfw.cpp"
                      "backends/imgui_impl_sdl.cpp"
                      "backends/imgui_impl_opengl2.cpp"
-                     "backends/imgui_impl_opengl3.cpp")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc"))
-                    (header? (cut string-suffix? ".h" <>))
-                    (imgui-headers (scandir "." header?))
-                    (backend-headers (find-files
-                                      "backends"
-                                      "(glfw|opengl|sdl|vulkan).*\\.h$")))
-               (install-file "libimgui.so" (string-append out "/lib"))
-               ;; Install headers.
-               (for-each (lambda (f)
-                           (install-file f (string-append out "/include/imgui")))
-                         imgui-headers)
-               (for-each (lambda (f)
-                           (install-file f (string-append
-                                            out "/include/imgui/backends")))
-                         backend-headers)
-               ;; Install examples.
-               (copy-recursively
-                "examples" (string-append
-                            doc "/share/imgui/examples"))))))))
-    (inputs (list glfw mesa sdl2))
+                     "backends/imgui_impl_opengl3.cpp"
+                     ;; Include wrappers for C++ standard library (STL) and
+                     ;; fontconfig.
+                     (find-files "misc" "\\.cpp$"))))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (doc (assoc-ref outputs "doc"))
+                     (header? (cut string-suffix? ".h" <>))
+                     (imgui-headers (scandir "." header?))
+                     (backend-headers (find-files
+                                       "backends"
+                                       "(glfw|opengl|sdl|vulkan).*\\.h$"))
+                     (misc-headers (find-files "misc" "\\.h$")))
+                (install-file "libimgui.so" (string-append out "/lib"))
+                ;; Install headers.
+                (for-each (lambda (f)
+                            (install-file f (string-append out "/include/imgui")))
+                          imgui-headers)
+                (for-each (lambda (f)
+                            (install-file f (string-append
+                                             out "/include/imgui/backends")))
+                          backend-headers)
+                (for-each (lambda (f)
+                            (install-file f (string-append
+                                             out "/include/imgui/" (dirname f))))
+                          misc-headers)
+                ;; Install examples.
+                (copy-recursively
+                 "examples" (string-append
+                             doc "/share/imgui/examples"))))))))
+    (inputs (list fontconfig glfw mesa sdl2))
     (home-page "https://github.com/ocornut/imgui")
-    (synopsis "Graphical user interface library for C++")
+    (synopsis "Immediate-mode C++ GUI library with minimal dependencies")
     (description "@code{dear imgui} (also know as ImGui) is a graphical user
-interface library for C++.  It outputs vertex buffers that can be rendered in
-a 3D application.  It is fast, renderer agnostic and self-contained.")
+interface library for C++.  It creates optimized vertex buffers that you can
+render anytime in your 3D-pipeline-enabled application.  It's fast, portable,
+renderer-agnostic, and self-contained, without external dependencies.
+
+ImGui is aimed at content creation, visualization, and debugging tools as
+opposed to average end-user interfaces.  Hence it favors simplicity and
+productivity but lacks certain features often found in higher-level libraries.
+It is particularly suited to integration in game engine tooling, real-time 3D
+applications, full-screen applications, and embedded platforms without
+standard operating system features.")
     (license license:expat)))
+
+(define-public imgui-1.86
+  (package
+    (inherit imgui)
+    (name "imgui")
+    (version "1.86")
+    (source (origin
+              (inherit (package-source imgui))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ocornut/imgui")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n"))))))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index c1d5c1479b..cc11255a24 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -57,14 +57,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.6.9")
+    (version "0.4.6.10")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1ad99k4wysxrnlaprv7brxr2nc0h5zdnrh0rma10pqlck2037sf7"))
+               "077374vqk9mxi63viksq5zwn05i4xa2bqcihwwxz6n750h7ddk4l"))
              (patches (search-patches "tor-sandbox-i686.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index 9c7c4d40c0..1cdc0f3b71 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
@@ -82,6 +82,8 @@
 tools.  There are Valgrind tools that can automatically detect many memory
 management and threading bugs, and profile your programs in detail.  You can
 also use Valgrind to build new tools.")
+    ;; https://valgrind.org/info/platforms.html
+    (supported-systems (delete "riscv64-linux" %supported-systems))
     (license gpl2+)
 
     ;; Hide this variant so end users get the "interactive" Valgrind below.
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 93366a306c..0aa7fcc5b1 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -43,6 +43,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1561,7 +1562,7 @@ control to Git repositories.")
 (define-public gitile
   (package
     (name "gitile")
-    (version "0.1.3")
+    (version "0.1.4")
     (source
      (origin
        (method git-fetch)
@@ -1570,7 +1571,7 @@ control to Git repositories.")
               (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fnmgrrsdc24mvicj2gkv3vasag7h5x27xc12w55i0id9vw7k9sw"))))
+        (base32 "1wb1rajcrzdqjncv40s7hjsnvlh1gq4z9pn9gf210g1iy35vimmz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:imported-modules ((guix build guile-build-system)
@@ -1879,14 +1880,14 @@ can be used for signing.")
 (define-public neon
   (package
     (name "neon")
-    (version "0.31.2")
+    (version "0.32.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://notroj.github.io/neon/neon-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0y46dbhiblcvg8k41bdydr3fivghwk73z040ki5825d24ynf67ng"))))
+               "11mj5zpp317dmds874wfwcpgij9i3scaahdi1xfzr5b2ii36crcq"))))
     (build-system gnu-build-system)
     (native-inputs
      (list perl pkg-config))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d45e128089..fb01e3f30c 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -261,42 +261,41 @@
         ;"--enable-pv3"
         ;"--enable-nuv"
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("iconv" ,libiconv)
-       ("libtool" ,libtool)
-       ("libxml2" ,libxml2)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list autoconf
+           automake
+           libtool
+           libxml2
+           perl
+           pkg-config
+           python-wrapper))
     (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("faac" ,faac)
-       ("ffmpeg" ,ffmpeg)
-       ("freetype" ,freetype)
-       ("imagemagick" ,imagemagick)
-       ("lame" ,lame)
-       ("liba52" ,liba52)
-       ("libdv" ,libdv)
-       ("libdvdread" ,libdvdread)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libmpeg2" ,libmpeg2)
-       ("libogg" ,libogg)
-       ("libquicktime" ,libquicktime)
-       ("libtheora" ,libtheora)
-       ("libvorbis" ,libvorbis)
-       ("lzo" ,lzo)
-       ("mjepgtools" ,mjpegtools)
-       ("sdl" ,sdl)
-       ;; ("v4l-utils" ,v4l-utils)
-       ("x11" ,libx11)
-       ("x264" ,libx264)
-       ("xaw" ,libxaw)
-       ("xext" ,libxext)
-       ("xpm" ,libxpm)
-       ("xv" ,libxv)
-       ("xvid" ,xvid)
-       ("zlib" ,zlib)))
+     (list alsa-lib
+           faac
+           ffmpeg
+           freetype
+           imagemagick
+           lame
+           liba52
+           libdv
+           libdvdread
+           libjpeg-turbo
+           libmpeg2
+           libogg
+           libquicktime
+           libtheora
+           libvorbis
+           lzo
+           mjpegtools
+           sdl
+           ;; ("v4l-utils" ,v4l-utils)
+           libx11
+           libx264
+           libxaw
+           libxext
+           libxpm
+           libxv
+           xvid
+           zlib))
     (synopsis "Audio/Video Transcoder")
     (description "Transcode is a fast, versatile and command-line based
 audio/video everything to everything converter primarily focused on producing
@@ -2265,7 +2264,7 @@ the last played position, etc.")
 (define-public gallery-dl
   (package
     (name "gallery-dl")
-    (version "1.20.3")
+    (version "1.20.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mikf/gallery-dl"
@@ -2273,15 +2272,15 @@ the last played position, etc.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0mh57fbq9xkkhqiy7cq5ahwjp464hgxmkrvq0pxxr85212yrf7bd"))))
+                "0149hd4nh7bk2yqjdnvrkvag5mwgsb6gxrgfcd88q4cv3k2ji42h"))))
     (build-system python-build-system)
     (inputs (list python-requests ffmpeg))
     (home-page "https://github.com/mikf/gallery-dl")
     (synopsis "Command-line program to download images from several sites")
-    (description "Command-line program to download image galleries
-and collections from several image hosting sites
-While this package can use youtube-dl or yt-dlp packages to download videos,
-the focus is more on images and image hosting sites.")
+    (description "Gallery-dl is a command-line program that downloads image
+galleries and collections from several image hosting sites.  While this package
+can use youtube-dl or yt-dlp packages to download videos, the focus is more on
+images and image hosting sites.")
     (license license:gpl2)))
 
 (define-public gnome-mpv
@@ -2454,7 +2453,7 @@ YouTube.com and many more sites.")
 (define-public yt-dlp
   (package/inherit youtube-dl
     (name "yt-dlp")
-    (version "2021.10.22")
+    (version "2022.02.04")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/yt-dlp/yt-dlp/"
@@ -2462,7 +2461,7 @@ YouTube.com and many more sites.")
                                   version "/yt-dlp.tar.gz"))
               (sha256
                (base32
-                "0xh4cwmvx49pxn8x07wj2dy8ynj6xg8977l5493vv0l8zc27wp87"))
+                "1qx8sx47lzyrcl00r2657zjaq0mwfbzjyfnv5lr5dlm552f13pf8"))
               (snippet
                '(begin
                   ;; Delete the pre-generated files, except for the man page
@@ -3211,7 +3210,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "7.2.0")
+    (version "7.4.0")
     (source
      (origin
        (method git-fetch)
@@ -3220,21 +3219,37 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "17d4gs46ca3n0qg6z69hl6mmllnqj2id8ccrv8fyz8c5zm55ghqm"))))
+        (base32 "132y3niv9p1pwms1d5dr0w1jifvr52yfjy6zza3g7qaha0yzfh0c"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ;requires "Kwalify"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'override-LDFLAGS
-           (lambda* (#:key outputs #:allow-other-keys)
-             (setenv "LDFLAGS"
-                     (string-append
-                      "-Wl,-rpath="
-                      (assoc-ref outputs "out") "/lib")))))))
+     (list
+      #:tests? #f                       ;requires "Kwalify"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'override-LDFLAGS
+            (lambda _
+              (setenv "LDFLAGS"
+                      (string-append "-Wl,-rpath=" #$output "/lib"))))
+          (add-after 'install 'wrap-executable
+            (lambda _
+              (let* ((frei0r #$(this-package-input "frei0r-plugins"))
+                     (ladspa #$(this-package-input "ladspa"))
+                     ;; In MLT 7, 'melt' symlinks to 'melt-7'.  Try to keep
+                     ;; compatibility with MLT 6 where it's only 'melt'.
+                     (major #$(version-major version))
+                     (exec (if (file-exists?
+                                (string-append #$output "/bin/melt-" major))
+                               (string-append "melt-" major)
+                               "melt")))
+                (wrap-program (string-append #$output "/bin/" exec)
+                  `("FREI0R_PATH" ":" =
+                    (,(string-append frei0r "/lib/frei0r-1")))
+                  `("LADSPA_PATH" ":" =
+                    (,(string-append ladspa "/lib/ladspa"))))))))))
     (inputs
      (list alsa-lib
            `(,alsa-plugins "pulseaudio")
+           bash-minimal
            ffmpeg
            fftw
            frei0r-plugins
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 1f10c58525..4ed6708eb5 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -76,7 +76,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.4306")
+    (version "8.2.4564")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -85,7 +85,7 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "1jppzgmngcdd7jfb5rnkkvf5d47svnjbn7qj4mvjacd9az3c7s9r"))))
+               "1ggvmvd6xsj9xvknjcvpj52na2km2wxvxfj8l29mqp03g4wwyzrr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -97,10 +97,11 @@
              (substitute* "runtime/tools/mve.awk"
                (("/usr/bin/nawk") (which "gawk")))
              (substitute* '("src/testdir/Makefile"
+                            "src/testdir/test_filetype.vim"
                             "src/testdir/test_normal.vim"
                             "src/testdir/test_popupwin.vim"
                             "src/testdir/test_shell.vim"
-                            "src/testdir/test_system.vim"
+                            "src/testdir/test_suspend.vim"
                             "src/testdir/test_terminal.vim"
                             "src/testdir/test_terminal2.vim")
                (("/bin/sh") (which "sh")))
@@ -716,7 +717,6 @@ are detected, the user is notified.")))
        ("libvterm" ,libvterm)
        ("unibilium" ,unibilium)
        ("jemalloc" ,jemalloc)
-       ("libiconv" ,libiconv)
        ("lua" ,lua-5.1)
        ("lua-luv" ,lua5.1-luv)
        ("lua-lpeg" ,lua5.1-lpeg)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 1c1be29d9b..90472b9221 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -52,6 +53,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cluster)
@@ -215,6 +217,18 @@
                ;; fails within the build environment.
                ((".*'test-char':.*" all)
                 (string-append "# " all)))))
+         ,@(if (target-riscv64?)
+             `((add-after 'unpack 'disable-some-tests
+                 (lambda _
+                   ;; qemu.qmp.QMPConnectError: Unexpected empty reply from server
+                   (delete-file "tests/qemu-iotests/040")
+                   (delete-file "tests/qemu-iotests/041")
+                   (delete-file "tests/qemu-iotests/256")
+
+                   ;; No 'PCI' bus found for device 'virtio-scsi-pci'
+                   (delete-file "tests/qemu-iotests/127")
+                   (delete-file "tests/qemu-iotests/267"))))
+             '())
          (add-after 'patch-source-shebangs 'patch-embedded-shebangs
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; Ensure the executables created by these source files reference
@@ -321,6 +335,7 @@ exec smbd $@")))
            libjpeg-turbo
            libpng
            libseccomp
+           liburing
            libusb                       ;USB pass-through support
            mesa
            ncurses
@@ -333,7 +348,10 @@ exec smbd $@")))
            util-linux
            vde2
            virglrenderer
-           zlib))
+
+           ;; Formats to support for .qcow2 (and possibly other) compression.
+           zlib
+           `(,zstd "lib")))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")               ;gtester, etc.
@@ -1001,6 +1019,29 @@ Guix to build virtual machines.")
 Debian or a derivative using @command{debootstrap}.")
     (license license:gpl2+)))
 
+(define-public spike
+  (package
+    (name "spike")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/riscv-software-src/riscv-isa-sim")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0cik2m0byfp9ppq0hpg3xyrlp5ag1i4dww7a7872mlm36xxqagg0"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list dtc))
+    (native-inputs
+     (list python-wrapper))
+    (home-page "https://github.com/riscv-software-src/riscv-isa-sim")
+    (synopsis "RISC-V ISA Simulator")
+    (description "Spike, the RISC-V ISA Simulator, implements a functional model
+of one or more RISC-V harts.")
+    (license license:bsd-3)))
+
 (define-public libosinfo
   (package
     (name "libosinfo")
@@ -1605,11 +1646,13 @@ domains, their live performance and resource utilization statistics.")
     (native-inputs
      (list pkg-config
            perl
-           protobuf-c
            asciidoc
            xmlto
            docbook-xml
            docbook-xsl))
+    (propagated-inputs
+     ;; included by 'rpc.pb-c.h'
+     (list protobuf-c))
     (home-page "https://criu.org")
     (synopsis "Checkpoint and restore in user space")
     (description "Using this tool, you can freeze a running application (or
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index a82db31e30..5bf5a62481 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2022 Josselin Poiret <josselin.poiret@protonmail.ch>
+;;; Copyright © 2022 Lu hui <luhux76@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,6 +40,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
@@ -294,6 +296,47 @@ by creating encrypted host-to-host tunnels between multiple
 endpoints.")
     (license license:gpl3+)))
 
+(define-public n2n
+  (package
+    (name "n2n")
+    (version "2.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ntop/n2n")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ph2npvnqh1xnmkp96pdzpxm033jkb8zznd3nc59l9arhn0pq4nv"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:make-flags
+      #~(list (string-append "PREFIX=" #$output)
+              (string-append "CC=" #$(cc-for-target)))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'bootstrap 'move-configure
+            ;; Don't execute configure script in bootstrap.
+            (lambda _
+              (substitute* "autogen.sh"
+                (("./configure") ""))))
+          (add-before 'configure 'fix-configure
+            (lambda* (#:key inputs native-inputs #:allow-other-keys)
+              (substitute* "configure"
+                (("/bin/sh")
+                 (search-input-file (or native-inputs inputs) "/bin/sh"))))))
+      #:tests? #f))                     ;there is no check target
+    (native-inputs
+     (list autoconf automake bash-minimal pkg-config))
+    (home-page "https://github.com/ntop/n2n")
+    (synopsis "Peer-to-peer VPN client and server")
+    (description
+     "n2n is a light VPN software which makes it easy to create virtual
+networks bypassing intermediate firewalls.")
+    (license license:gpl3+)))
+
 (define-public strongswan
   (package
     (name "strongswan")
diff --git a/gnu/packages/weather.scm b/gnu/packages/weather.scm
new file mode 100644
index 0000000000..6ba656017f
--- /dev/null
+++ b/gnu/packages/weather.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;;
+;;; 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 weather)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system go)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages golang))
+
+(define-public wego
+  (package
+    (name "wego")
+    (version "2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/schachmat/wego")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0bji9fywa0kg29zj1vrwq7l5f18hh0lcz6rl6sppi5id0qbjpiwl"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/schachmat/wego"))
+    (propagated-inputs
+     (list go-golang-org-x-sys
+           go-github-com-rivo-uniseg
+           go-github-com-mattn-go-isatty
+           go-github-com-schachmat-ingo
+           go-github-com-mattn-go-runewidth
+           go-github-com-mattn-go-colorable))
+    (home-page "https://github.com/schachmat/wego")
+    (synopsis "Weather client for the terminal")
+    (description "Wego is a weather client for the terminal.  It shows
+forecast for one or seven days.  Displayed information includes temperature
+range---felt and measured---, wind speed and direction, viewing distance,
+precipitation amount and probability.")
+    (license license:isc)))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index f3ef5bcc04..60d042fb66 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -16,7 +16,7 @@
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2021 Cage <cage-dev@twistfold.it>
+;;; Copyright © 2021, 2022 Cage <cage-dev@twistfold.it>
 ;;; Copyright © 2021 Benoit Joly <benoit@benoitj.ca>
 ;;; Copyright © 2021 Alexander Krotov <krotov@iitp.ru>
 ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -693,7 +693,7 @@ is fully configurable and extensible in Common Lisp.")
 (define-public lagrange
   (package
     (name "lagrange")
-    (version "1.10.5")
+    (version "1.11.2")
     (source
      (origin
        (method url-fetch)
@@ -701,7 +701,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 "1kimdy0k26l3b673sg12gd0d94mxx5lycyxlmla9hxxcsfn2rlqy"))
+        (base32 "07vr0n8zpxcf6vjf4rz30s75llzxg9yndqphar4b1iygig9rx6jf"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -715,7 +715,8 @@ is fully configurable and extensible in Common Lisp.")
     (native-inputs
      (list pkg-config zip))
     (inputs
-     (list fribidi
+     (list freetype
+           fribidi
            harfbuzz
            libunistring
            libwebp
@@ -773,7 +774,7 @@ history, and page outlines.")
 (define-public bombadillo
   (package
     (name "bombadillo")
-    (version "2.3.3")
+    (version "2.4.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -781,28 +782,28 @@ history, and page outlines.")
                     (commit version)))
               (sha256
                (base32
-                "02w6h44sxzmk3bkdidl8xla0i9rwwpdqljnvcbydx5kyixycmg0q"))
+                "03gcd813bmiy7ad179zg4p61nfa9z5l94sdmsmmn2x204h1ksd8n"))
               (file-name (git-file-name name version))))
     (build-system go-build-system)
     (arguments
-     `(#:import-path "tildegit.org/sloum/bombadillo"
-       #:install-source? #f
-       #:phases (modify-phases %standard-phases
-                  (add-after 'install 'install-data
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((builddir "src/tildegit.org/sloum/bombadillo")
-                             (out (assoc-ref outputs "out"))
-                             (pkg (strip-store-file-name out))
-                             (sharedir (string-append out "/share"))
-                             (appdir (string-append sharedir "/applications"))
-                             (docdir (string-append sharedir "/doc/" pkg))
-                             (mandir (string-append sharedir "/man/man1"))
-                             (pixdir (string-append sharedir "/pixmaps")))
-                        (with-directory-excursion builddir
-                          (install-file "bombadillo.desktop" appdir)
-                          (install-file "bombadillo.1" mandir)
-                          (install-file "bombadillo-icon.png" pixdir)
-                          #t)))))))
+     (list
+      #:import-path "tildegit.org/sloum/bombadillo"
+      #:install-source? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-data
+            (lambda _
+              (let* ((builddir "src/tildegit.org/sloum/bombadillo")
+                     (pkg (strip-store-file-name #$output))
+                     (sharedir (string-append #$output "/share"))
+                     (appdir (string-append sharedir "/applications"))
+                     (docdir (string-append sharedir "/doc/" pkg))
+                     (mandir (string-append sharedir "/man/man1"))
+                     (pixdir (string-append sharedir "/pixmaps")))
+                (with-directory-excursion builddir
+                  (install-file "bombadillo.desktop" appdir)
+                  (install-file "bombadillo.1" mandir)
+                  (install-file "bombadillo-icon.png" pixdir))))))))
     (home-page "https://bombadillo.colorfield.space")
     (synopsis "Terminal browser for the gopher, gemini, and finger protocols")
     (description "Bombadillo is a non-web browser for the terminal with
@@ -815,7 +816,7 @@ http, and https via third-party applications.")
 (define-public tinmop
   (package
     (name "tinmop")
-    (version "0.9.2")
+    (version "0.9.6")
     (source
      (origin
        (method git-fetch)
@@ -824,47 +825,52 @@ http, and https via third-party applications.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1cgx2g2kryfmcwqzzjzcpbdc6zzj10xc52gz0cj2dx5ylc0yg7k3"))))
+        (base32 "19rr1wcadm4698q5gyq0pxv81220l5g8zfnp61s43a4q7kn4mi1z"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("automake" ,automake)
-       ("autoreconf" ,autoconf)
-       ("gettext" ,gnu-gettext)
-       ("mandoc" , mandoc)
-       ("nano" ,nano)
-       ("openssl" ,openssl)
-       ("sbcl" ,sbcl)
-       ("xdg-utils" ,xdg-utils)))
+     (list autoconf
+           automake
+           gnu-gettext
+           mandoc
+           nano
+           openssl
+           sbcl
+           unzip
+           xdg-utils))
     (inputs
-     `(("access" ,sbcl-access)
-       ("alexandria" ,sbcl-alexandria)
-       ("babel" ,sbcl-babel)
-       ("bordeaux-threads" ,sbcl-bordeaux-threads)
-       ("cl-base64" ,sbcl-cl-base64)
-       ("cl-colors2" ,sbcl-cl-colors2)
-       ("cl-html5-parser" ,sbcl-cl-html5-parser)
-       ("cl-i18n" ,sbcl-cl-i18n)
-       ("cl-ppcre" ,sbcl-cl-ppcre)
-       ("cl-spark" ,sbcl-cl-spark)
-       ("cl-sqlite" ,sbcl-cl-sqlite)
-       ("cl+ssl" ,sbcl-cl+ssl)
-       ("clunit2" ,sbcl-clunit2)
-       ("croatoan" ,sbcl-croatoan)
-       ("crypto-shortcuts" ,sbcl-crypto-shortcuts)
-       ("drakma" ,sbcl-drakma)
-       ("esrap" ,sbcl-esrap)
-       ("ieee-floats" ,sbcl-ieee-floats)
-       ("local-time" ,sbcl-local-time)
-       ("log4cl" ,sbcl-log4cl)
-       ("marshal" ,sbcl-marshal)
-       ("osicat" ,sbcl-osicat)
-       ("parse-number" ,sbcl-parse-number)
-       ("percent-encoding" ,sbcl-percent-encoding)
-       ("sxql" ,sbcl-sxql)
-       ("sxql-composer" ,sbcl-sxql-composer)
-       ("tooter" ,sbcl-tooter)
-       ("unix-opts" ,sbcl-unix-opts)
-       ("usocket" ,sbcl-usocket)))
+     (list ncurses
+           sbcl-access
+           sbcl-alexandria
+           sbcl-babel
+           sbcl-bordeaux-threads
+           sbcl-cl+ssl
+           sbcl-cl-base64
+           sbcl-cl-colors2
+           sbcl-cl-html5-parser
+           sbcl-cl-i18n
+           sbcl-cl-ppcre
+           sbcl-cl-spark
+           sbcl-cl-sqlite
+           sbcl-clunit2
+           sbcl-croatoan
+           sbcl-crypto-shortcuts
+           sbcl-drakma
+           sbcl-esrap
+           sbcl-ieee-floats
+           sbcl-local-time
+           sbcl-log4cl
+           sbcl-marshal
+           sbcl-osicat
+           sbcl-parse-number
+           sbcl-percent-encoding
+           sbcl-purgatory
+           sbcl-sxql
+           sbcl-sxql-composer
+           sbcl-tooter
+           sbcl-trivial-clipboard
+           sbcl-unix-opts
+           sbcl-usocket
+           sqlite))
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
@@ -893,9 +899,9 @@ http, and https via third-party applications.")
                  '("LISP_COMPILER) --eval \"(require 'asdf)\" "
                    "--eval \"(push \\\"$$(pwd)/\\\" asdf:*central-registry*)\"  "))))
              #t)))))
-    (synopsis "Gemini and pleroma client with a terminal interface")
+    (synopsis "Gemini, kami and pleroma client with a terminal interface")
     (description
-     "This package provides a Gemini and pleroma client with a terminal
+     "This package provides a Gemini, kami and pleroma client with a terminal
 interface.")
     (home-page "https://www.autistici.org/interzona/tinmop.html")
     (license license:gpl3+)))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 84cd711d71..89533d8469 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -55,6 +55,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2022 cage <cage-dev@twistfold.it>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4667,8 +4668,8 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
                    license:freebsd-doc)))) ; documentation
 
 (define-public guix-data-service
-  (let ((commit "4a1088c21687531de0b4e062e1bf9ec491e5d4da")
-        (revision "29"))
+  (let ((commit "27c34a9ca5ea010f207a4acad597ce98e84d3567")
+        (revision "30"))
     (package
       (name "guix-data-service")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -4680,7 +4681,7 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1k9hnpx47l91l0x3gvjrzx4772lnkb55lk66axgl3a8g1fhaji4l"))))
+                  "1jjdvld3gp711dp8qd4rnhicbl7322jjzx4plizkg89k7j4x0xhx"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
@@ -4739,16 +4740,18 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
                  #t)))
            (delete 'strip))))           ; As the .go files aren't compatible
       (inputs
+       (list ephemeralpg
+             util-linux
+             postgresql-13
+             sqitch
+             bash-minimal))
+      (propagated-inputs
        (list guix
              guile-fibers-1.1
              guile-json-4
              guile-email
              guile-prometheus
-             guile-squee
-             ephemeralpg
-             util-linux
-             postgresql-13
-             sqitch))
+             guile-squee))
       (native-inputs
        (list (car (assoc-ref (package-native-inputs guix) "guile"))
              autoconf
@@ -7836,6 +7839,82 @@ solution for any project's interface needs:
 @end itemize\n")
     (license license:expat)))
 
+(define-public gmid
+  (package
+    (name "gmid")
+    (version "1.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/omar-polo/gmid/releases/download/"
+                    version "/gmid-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0m4809mwy888bqsacmyck68grqfvynq74kswm109al6wjbvd61bn"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:test-target "regress"
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'configure
+                 (lambda _
+                   (setenv "CC" #$(cc-for-target))
+                   (invoke "./configure"
+                           (string-append "PREFIX=" #$output)))))))
+    (native-inputs (list bison
+                         coreutils
+                         flex
+                         pkg-config
+                         procps
+                         which))
+    (inputs (list libevent libressl))
+    (home-page "https://git.omarpolo.com/gmid/about/")
+    (synopsis "Simple and secure Gemini server")
+    (description "@command{gmid} is a fast Gemini server written with security
+in mind.  It has features such as:
+@itemize
+@item reload the running configuration without interruption
+@item automatic redirect/error pages
+@item IRI support (RFC3987)
+@item reverse proxying
+@item CGI and FastCGI support
+@item virtual hosts
+@item location rules
+@item event-based asynchronous I/O model
+@item low memory footprint.
+@end itemize")
+    (license license:isc)))
+
+(define-public siege
+  (package
+    (name "siege")
+    (version "4.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.joedog.org/siege/siege-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1a74py0ib1gr3znv9ah5acw67ngl08b14dbc90ww9clvgdr2ag0l"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags (list (string-append "--with-zlib="
+                                              (assoc-ref %build-inputs "zlib"))
+                               (string-append "--with-ssl="
+                                              (assoc-ref %build-inputs
+                                                         "openssl")))))
+    (inputs (list openssl zlib))
+    (home-page "https://www.joedog.org/siege-home/")
+    (synopsis "HTTP/FTP load tester and benchmarking utility")
+    (description
+     "Siege is a multi-threaded HTTP/FTP load tester and benchmarking utility.  It
+can stress test a single URL with a user defined number of simulated users, or
+it can read many URLs into memory and stress them simultaneously.  The program
+reports the total number of hits recorded, bytes transferred, response time,
+concurrency, and return status.")
+    ;; GPLv3+ with OpenSSL linking exception.
+    (license license:gpl3+)))
+
 (define-public gmnisrv
   (package
     (name "gmnisrv")
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index dfe780346e..f79d6bd4f6 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -239,16 +239,17 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.")
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.34.4")
+    (version "2.34.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   "webkitgtk-" version ".tar.xz"))
               (sha256
                (base32
-                "01m4mfqxqkcx72kps46hpkir92x105ggfp43j68nk9wv34cm0pwp"))
-              (patches (search-patches "webkitgtk-share-store.patch"
-                                       "webkitgtk-bind-all-fonts.patch"))))
+                "1xn1hhd0qaxmjf6vy6664i4mmmjsw9zgrr4w8ni3415d981zvj3b"))
+              (patches (search-patches "webkitgtk-bind-all-fonts.patch"
+                                       "webkitgtk-adjust-bubblewrap-paths.patch"
+                                       "webkitgtk-canonicalize-paths.patch"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc" "debug"))
     (arguments
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 472b67a416..ec655b95bd 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -25,7 +25,6 @@
 (define-module (gnu packages wget)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gnunet)
@@ -158,15 +157,14 @@ online pastebin services.")
             #t)))
       #:configure-flags '("--enable-static=no")))
    (inputs
-    `(("bzip2" ,bzip2)
-      ("gnutls" ,gnutls/dane)
-      ("gpgme" ,gpgme)
-      ("libiconv" ,libiconv)
-      ("libidn2" ,libidn2)
-      ("libmicrohttpd" ,libmicrohttpd)
-      ("libpsl" ,libpsl)
-      ("pcre2" ,pcre2)
-      ("zlib" ,zlib)))
+    (list bzip2
+          gnutls/dane
+          gpgme
+          libidn2
+          libmicrohttpd
+          libpsl
+          pcre2
+          zlib))
    ;; TODO: Add libbrotlidec, libnghttp2.
    (native-inputs
     (list pkg-config))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f39df605e7..3de760d7a6 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
-;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016, 2022 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
@@ -50,6 +50,7 @@
 ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Gabriel Wicki <gabriel@erlikon.ch>
+;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -936,16 +937,15 @@ tiling window manager for X.")
 (define-public evilwm
   (package
     (name "evilwm")
-    (version "1.1.1")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
+       (uri (string-append "http://www.6809.org.uk/evilwm/dl/evilwm-"
                            version ".tar.gz"))
        (sha256
         (base32
-         "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
-       (patches (search-patches "evilwm-lost-focus-bug.patch"))))
+         "1jry36qkg2l02v37zvzszxvxm2d8c62z25gks5gdqqjl9ifbpv1j"))))
     (build-system gnu-build-system)
     (inputs
      (list libx11 libxext libxrandr))
@@ -1034,7 +1034,7 @@ experience.")
 (define-public fnott
   (package
     (name "fnott")
-    (version "1.1.2")
+    (version "1.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1043,7 +1043,7 @@ experience.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0vkwyci4z4jj2aczxkrmj0861j5jczjr8isasa7gml93nlvyw7gv"))))
+                "1770p5hfswbaa15zmjh10n7fskch00d3y03ij3gfb1v4q314nb9n"))))
     (build-system meson-build-system)
     (arguments `(#:build-type "release"))
     (native-inputs
@@ -2247,41 +2247,40 @@ PNG files.")
     (license license:gpl3+)))
 
 (define-public lemonbar
-  (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
-        (revision "1"))
-    (package
-      (name "lemonbar")
-      (version (git-version "1.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/LemonBoy/bar")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                    ; no test suite
-         #:make-flags
-         (list ,(string-append "CC=" (cc-for-target))
-               (string-append "PREFIX=" %output))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure))))
-      (inputs
-       (list libxcb))
-      (native-inputs
-       (list perl))
-      (home-page "https://github.com/LemonBoy/bar")
-      (synopsis "Featherweight status bar")
-      (description
-       "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
+  (package
+    (name "lemonbar")
+    (version "1.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/LemonBoy/bar")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0sm1lxxf0y2n87nvc8mz6i6mzb32f4qab80ppb28ibrwfir6jsln"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:make-flags
+      #~(list #$(string-append "CC=" (cc-for-target))
+              (string-append "PREFIX=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure))))
+    (inputs
+     (list libxcb))
+    (native-inputs
+     (list perl))
+    (home-page "https://github.com/LemonBoy/bar")
+    (synopsis "Featherweight status bar")
+    (description
+     "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
 bar entirely based on XCB.  Provides full UTF-8 support, basic
 formatting, RandR and Xinerama support and EWMH compliance without
 wasting your precious memory.")
-      (license license:x11))))
+    (license license:x11)))
 
 (define-public lemonbar-xft
   ;; Upstream v2.0 tag is several years behind HEAD
@@ -2305,17 +2304,12 @@ wasting your precious memory.")
       (arguments
        (substitute-keyword-arguments (package-arguments lemonbar)
          ((#:make-flags make-flags)
-          `(append
-            ,make-flags
-            (list (string-append
-                   "CFLAGS="
-                   (string-join
-                    (list (string-append
-                           "-I" (assoc-ref %build-inputs "freetype")
-                           "/include/freetype2")
-                          (string-append
-                           "-D" "VERSION="
-                           (format #f "'~s'" ,version))))))))))
+          #~(#$@make-flags
+             (format #f "CFLAGS=~a -DVERSION='~s'"
+                     (string-append
+                      "-I" #$(this-package-input "freetype")
+                      "/include/freetype2")
+                     #$version)))))
       (home-page "https://github.com/drscream/lemonbar-xft")
       (synopsis
        (string-append
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 42452d0721..d2caee85ec 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -43,7 +43,7 @@
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Renzo Poddighe <renzo@poddighe.nl>
 ;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
@@ -492,7 +492,7 @@ X11 (yet).")
 (define-public xdotool
   (package
     (name "xdotool")
-    (version "3.20160805.1")
+    (version "3.20211022.1")
     (source
       (origin
         (method url-fetch)
@@ -501,7 +501,7 @@ X11 (yet).")
               version "/xdotool-" version ".tar.gz"))
         (sha256
           (base32
-           "1a6c1zr86zb53352yxv104l76l8x21gfl2bgw6h21iphxpv5zgim"))))
+           "1nlsbwsdsgys607f00sc8xgb7l7cdzsb14avsg5fly3dvv7zmw4n"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; Test suite requires a lot of black magic
@@ -972,7 +972,7 @@ to find buttons, etc, on the screen to click on.")
 (define-public xbanish
   (package
     (name "xbanish")
-    (version "1.7")
+    (version "1.8")
     (home-page "https://github.com/jcs/xbanish")
     (source (origin
               (method git-fetch)
@@ -981,7 +981,7 @@ to find buttons, etc, on the screen to click on.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ic5f7zgc32p5g1wxas9y5h8dhik0pvsa8wmn6skdry56gw9vg9q"))))
+                "12mjwn8hvrrhwyg3wi20bqr6k8d57xf9m5qr3s4nn511dcksh04g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -1000,29 +1000,28 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
 (define-public xlockmore
   (package
     (name "xlockmore")
-    (version "5.67")
+    (version "5.68")
     (source (origin
-             (method url-fetch)
-             (uri (list (string-append "http://sillycycle.com/xlock/"
-                                       "xlockmore-" version ".tar.xz")
-                        ;; Previous releases are moved to a subdirectory.
-                        (string-append "http://sillycycle.com/xlock/"
-                                       "recent-releases/"
-                                       "xlockmore-" version ".tar.xz")))
-             (sha256
-              (base32
-               "0k13gxgnk4i041g1fzixfwlf3l5hrvvkhfvxf27szx0d1qbpwq58"))))
+              (method url-fetch)
+              (uri (list (string-append "http://sillycycle.com/xlock/"
+                                        "xlockmore-" version ".tar.xz")
+                         ;; Previous releases are moved to a subdirectory.
+                         (string-append "http://sillycycle.com/xlock/"
+                                        "recent-releases/"
+                                        "xlockmore-" version ".tar.xz")))
+              (sha256
+               (base32
+                "0vndfwccnvkaaraprjam8pmx0aj55va0ag64q6snxw83nbf1ywrh"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags (list (string-append "--enable-appdefaultdir="
-                                              (assoc-ref %outputs "out")
-                                              "/lib/X11/app-defaults"))
-       #:tests? #f))                            ;no such thing as a test suite
+     (list
+      #:configure-flags
+      #~(list (string-append "--enable-appdefaultdir="
+                             #$output
+                             "/lib/X11/app-defaults"))
+      #:tests? #f))                     ;no such thing as a test suite
     (inputs
-     `(("libX11" ,libx11)
-       ("libXext" ,libxext)
-       ("libXt" ,libxt)
-       ("linux-pam" ,linux-pam)))
+     (list libx11 libxext libxt linux-pam))
     (home-page "https://sillycycle.com/xlockmore.html")
     (synopsis "Screen locker for the X Window System")
     (description
@@ -1059,14 +1058,14 @@ transparent text on your screen.")
 (define-public wob
   (package
     (name "wob")
-    (version "0.12")
+    (version "0.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/francma/wob/releases/download/"
                            version "/wob-" version ".tar.gz"))
        (sha256
-        (base32 "080pwz8pvqqq068lavzz48dl350iszpdswjd86bjk6zra5h5d10q"))))
+        (base32 "0i8y6kq37qcgdq85ll4rapisjl7zw6aa11yx2f2xw2d3j93kdxh8"))))
     (build-system meson-build-system)
     (native-inputs
      (list pkg-config scdoc))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 462736d63a..cdd98f2863 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -1106,7 +1106,7 @@ several different time zones.")
 (define-public xfce4-notifyd
   (package
     (name "xfce4-notifyd")
-    (version "0.6.2")
+    (version "0.6.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/apps/"
@@ -1114,7 +1114,7 @@ several different time zones.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0ib5s7kjbr9sy8nh89nfcc4w6qplacnk4s92iycijy2wcv389aqr"))))
+                "17w5j3cwxlza7p3clvm7sp3vfacyi4dbn2dy58ph8q6lmsaziaan"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list intltool pkg-config))
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index 9004c79e22..1d4d17527c 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -85,7 +86,10 @@ selected in various ways.  For text, 35 fonts are available.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0i3p7qmg2w8qrad3pn42b0miwarql7yy0gpd49b1bpal6bqsiicf"))))
+         "0i3p7qmg2w8qrad3pn42b0miwarql7yy0gpd49b1bpal6bqsiicf"))
+       (patches
+        (search-patches
+         "transfig-gcc10-fno-common.patch")))) ; fix GCC10 build
     (build-system gnu-build-system)
     (native-inputs
      (list imake makedepend))
@@ -123,6 +127,7 @@ selected in various ways.  For text, 35 fonts are available.")
                (invoke "xmkmf" "-a")
                (substitute* '("Makefile"
                               "fig2dev/Makefile"
+                              "fig2dev/dev/Makefile"
                               "transfig/Makefile")
                  ;; These imake variables somehow remain undefined
                  (("DefaultGcc2[[:graph:]]*Opt") "-O2")
@@ -131,7 +136,12 @@ selected in various ways.  For text, 35 fonts are available.")
                  (("(MANPATH = )[[:graph:]]*" _ front)
                   (string-append front out "/share/man"))
                  (("(CONFDIR = )([[:graph:]]*)" _ front default)
-                  (string-append front out default)))
+                  (string-append front out default))
+                 ;; The "l" option was silently ignored until binutils 2.36,
+                 ;; where it got a different purpose.  So remove it to avoid
+                 ;; "ar: libdeps specified more than once".
+                 (("((AR|MODAR) = ar )clq" _ front)
+                  (string-append front "cq")))
                #t)))
          (add-after 'install 'install/doc
            (lambda _
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 6a897648eb..49275c3e0c 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -158,7 +158,7 @@ things the parser might find in the XML document (like start tags).")
 (define expat/fixed
   (package
     (inherit expat)
-    (version "2.4.4")
+    (version "2.4.7")
     (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
               (origin
                 (method url-fetch)
@@ -170,7 +170,7 @@ things the parser might find in the XML document (like start tags).")
                             "/expat-" version ".tar.xz")))
                 (sha256
                  (base32
-                  "1f0iqdy21wcd5nbfgsf8r2d5ilh15mrv8qmm37nw4l9k6xp5vlmm")))))))
+                  "0zbss0dssn17mjmvk17qfi5cmvm0lcyzs62cwvqr219hhl864xcq")))))))
 
 (define-public libebml
   (package
@@ -1468,9 +1468,6 @@ files.  It is designed to be fast and to handle large input files.")
      "Defusedxml provides XML bomb protection for Python stdlib modules.")
     (license license:psfl)))
 
-(define-public python2-defusedxml
-  (package-with-python2 python-defusedxml))
-
 (define-public freexl
   (package
     (name "freexl")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 02b5f58e72..dd0878a98c 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com>
-;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -4755,13 +4755,29 @@ cannot be adequately worked around on the client side of the wire.")
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
-       (list "--disable-static" ,@(malloc0-flags))))
+       (list "--disable-static" ,@(malloc0-flags))
+       ,@(if (and (%current-target-system)
+                  (target-riscv64?))
+           `(#:phases
+             (modify-phases %standard-phases
+               (add-after 'unpack 'update-config
+                 (lambda* (#:key native-inputs #:allow-other-keys)
+                   (install-file
+                     (search-input-file native-inputs "/bin/config.sub") ".")
+                   (install-file
+                     (search-input-file native-inputs "/bin/config.guess") ".")))))
+           '())))
     (propagated-inputs
       (list xorgproto))
     (inputs
       (list libx11))
     (native-inputs
-      (list pkg-config))
+     (append
+       (if (and (%current-target-system)
+                (target-riscv64?))
+         (list config)
+         '())
+       (list pkg-config)))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg Render Extension library")
     (description "Library for the Render Extension to the X11 protocol.")
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index b3de72226b..4c048ef580 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -29,7 +29,7 @@
 (define-public zig
   (package
     (name "zig")
-    (version "0.9.0")
+    (version "0.9.1")
     (source
      (origin
        (method git-fetch)
@@ -38,7 +38,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zdz5s434c48z3y0c8l9wm2z1gxa7yyzd53zmr68lwj6mcl7by8x"))
+        (base32 "0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7"))
        (patches
         (search-patches
          "zig-disable-libc-note-test.patch"