summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-06-08 14:53:16 +0200
committerLudovic Courtès <ludo@gnu.org>2022-06-08 14:53:16 +0200
commit091eb323ba2787ce64a1fb2796e7e06dbee6037c (patch)
tree446a869245541bd48f303caef76e4c24f6e7d0bb /gnu
parent05fef7bfc60058763f5a64ec0feaf3876b56281d (diff)
parent0c5299200ffcd16370f047b7ccb187c60f30da34 (diff)
downloadguix-091eb323ba2787ce64a1fb2796e7e06dbee6037c.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu')
-rw-r--r--gnu/bootloader/grub.scm34
-rw-r--r--gnu/home/services.scm12
-rw-r--r--gnu/local.mk6
-rw-r--r--gnu/packages.scm32
-rw-r--r--gnu/packages/admin.scm41
-rw-r--r--gnu/packages/autogen.scm4
-rw-r--r--gnu/packages/backup.scm4
-rw-r--r--gnu/packages/bioinformatics.scm61
-rw-r--r--gnu/packages/bittorrent.scm5
-rw-r--r--gnu/packages/bootloaders.scm10
-rw-r--r--gnu/packages/code.scm124
-rw-r--r--gnu/packages/commencement.scm52
-rw-r--r--gnu/packages/containers.scm6
-rw-r--r--gnu/packages/crypto.scm5
-rw-r--r--gnu/packages/databases.scm50
-rw-r--r--gnu/packages/dezyne.scm13
-rw-r--r--gnu/packages/diffoscope.scm31
-rw-r--r--gnu/packages/disk.scm12
-rw-r--r--gnu/packages/emacs-xyz.scm434
-rw-r--r--gnu/packages/emacs.scm6
-rw-r--r--gnu/packages/finance.scm144
-rw-r--r--gnu/packages/ftp.scm3
-rw-r--r--gnu/packages/games.scm144
-rw-r--r--gnu/packages/geo.scm82
-rw-r--r--gnu/packages/gnome-xyz.scm9
-rw-r--r--gnu/packages/gnome.scm97
-rw-r--r--gnu/packages/gnu-doc.scm4
-rw-r--r--gnu/packages/gnucash.scm10
-rw-r--r--gnu/packages/gnunet.scm11
-rw-r--r--gnu/packages/gnupg.scm6
-rw-r--r--gnu/packages/gnuzilla.scm12
-rw-r--r--gnu/packages/gtk.scm2
-rw-r--r--gnu/packages/guile-xyz.scm114
-rw-r--r--gnu/packages/hardware.scm68
-rw-r--r--gnu/packages/hexedit.scm9
-rw-r--r--gnu/packages/image.scm21
-rw-r--r--gnu/packages/iso-codes.scm25
-rw-r--r--gnu/packages/javascript.scm6
-rw-r--r--gnu/packages/linux.scm40
-rw-r--r--gnu/packages/llvm.scm10
-rw-r--r--gnu/packages/mail.scm60
-rw-r--r--gnu/packages/maths.scm17
-rw-r--r--gnu/packages/matrix.scm2
-rw-r--r--gnu/packages/mes.scm4
-rw-r--r--gnu/packages/messaging.scm92
-rw-r--r--gnu/packages/minetest.scm226
-rw-r--r--gnu/packages/mpi.scm6
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/networking.scm22
-rw-r--r--gnu/packages/node.scm17
-rw-r--r--gnu/packages/ocaml.scm20
-rw-r--r--gnu/packages/package-management.scm4
-rw-r--r--gnu/packages/patches/clang-14.0-libc-search-path.patch21
-rw-r--r--gnu/packages/patches/irrlicht-link-against-needed-libs.patch24
-rw-r--r--gnu/packages/patches/irrlicht-use-system-libs.patch95
-rw-r--r--gnu/packages/patches/libmicrohttpd-0.9.73-test-ssl3.patch35
-rw-r--r--gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch156
-rw-r--r--gnu/packages/patches/ncftp-reproducible.patch29
-rw-r--r--gnu/packages/patches/pigx-bsseq-no-citeproc.patch33
-rw-r--r--gnu/packages/patches/pigx-chipseq-no-citeproc.patch33
-rw-r--r--gnu/packages/perl.scm31
-rw-r--r--gnu/packages/profiling.scm8
-rw-r--r--gnu/packages/python-check.scm4
-rw-r--r--gnu/packages/python-web.scm37
-rw-r--r--gnu/packages/python-xyz.scm390
-rw-r--r--gnu/packages/python.scm58
-rw-r--r--gnu/packages/rcm.scm9
-rw-r--r--gnu/packages/search.scm4
-rw-r--r--gnu/packages/serialization.scm17
-rw-r--r--gnu/packages/simulation.scm78
-rw-r--r--gnu/packages/sml.scm22
-rw-r--r--gnu/packages/sssd.scm24
-rw-r--r--gnu/packages/statistics.scm6
-rw-r--r--gnu/packages/storage.scm6
-rw-r--r--gnu/packages/task-management.scm4
-rw-r--r--gnu/packages/tex.scm54
-rw-r--r--gnu/packages/text-editors.scm33
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/version-control.scm37
-rw-r--r--gnu/packages/video.scm15
-rw-r--r--gnu/packages/web.scm12
-rw-r--r--gnu/packages/xdisorg.scm58
-rw-r--r--gnu/packages/xml.scm8
-rw-r--r--gnu/packages/xorg.scm2
-rw-r--r--gnu/services/base.scm16
-rw-r--r--gnu/services/dns.scm3
-rw-r--r--gnu/services/guix.scm2
-rw-r--r--gnu/services/messaging.scm11
-rw-r--r--gnu/system.scm3
-rw-r--r--gnu/system/install.scm250
-rw-r--r--gnu/tests/virtualization.scm32
91 files changed, 2398 insertions, 1501 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 120cd55012..65d7171432 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
+;;; Copyright © 2022 Karl Hallsby <karl@hallsby.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -50,10 +51,12 @@
             grub-theme-color-highlight
             grub-theme-gfxmode
 
+            install-grub-efi-removable
             install-grub-efi-netboot
 
             grub-bootloader
             grub-efi-bootloader
+            grub-efi-removable-bootloader
             grub-efi-netboot-bootloader
             grub-mkrescue-bootloader
             grub-minimal-bootloader
@@ -608,6 +611,31 @@ fi~%"))))
                         "--bootloader-id=Guix"
                         "--efi-directory" target-esp)))))
 
+(define install-grub-efi-removable
+  #~(lambda (bootloader efi-dir mount-point)
+      ;; NOTE: mount-point is /mnt in guix system init /etc/config.scm /mnt/point
+      ;; NOTE: efi-dir comes from target list of booloader configuration
+      ;; There is nothing useful to do when called in the context of a disk
+      ;; image generation.
+      (when efi-dir
+        ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the
+        ;; system whose root is mounted at MOUNT-POINT.
+        (let ((grub-install (string-append bootloader "/sbin/grub-install"))
+              (install-dir (string-append mount-point "/boot"))
+              ;; When installing Guix, it's common to mount EFI-DIR below
+              ;; MOUNT-POINT rather than /boot/efi on the live image.
+              (target-esp (if (file-exists? (string-append mount-point efi-dir))
+                              (string-append mount-point efi-dir)
+                              efi-dir)))
+          ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
+          ;; root partition.
+          (setenv "GRUB_ENABLE_CRYPTODISK" "y")
+          (invoke/quiet grub-install "--boot-directory" install-dir
+                        "--removable"
+                        ;; "--no-nvram"
+                        "--bootloader-id=Guix"
+                        "--efi-directory" target-esp)))))
+
 (define (install-grub-efi-netboot subdir)
   "Define a grub-efi-netboot bootloader installer for installation in SUBDIR,
 which is usually efi/Guix or efi/boot."
@@ -734,6 +762,12 @@ considered for security aspects."
    (name 'grub-efi)
    (package grub-efi)))
 
+(define grub-efi-removable-bootloader
+  (bootloader
+   (inherit grub-efi-bootloader)
+   (name 'grub-efi-removable-bootloader)
+   (installer install-grub-efi-removable)))
+
 (define grub-efi-netboot-bootloader
   (bootloader
    (inherit grub-efi-bootloader)
diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index 8284a4f3fc..5ee3357792 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -33,6 +33,7 @@
   #:use-module (guix modules)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 vlist)
 
   #:export (home-service-type
             home-profile-service-type
@@ -50,6 +51,7 @@
             xdg-data-files-directory
 
             fold-home-service-types
+            lookup-home-service-types
             home-provenance
 
             %initialize-gettext)
@@ -605,3 +607,13 @@ environment, and its configuration file, when available.")))
 
 (define* (fold-home-service-types proc seed)
   (fold-service-types proc seed (all-home-service-modules)))
+
+(define lookup-home-service-types
+  (let ((table
+         (delay (fold-home-service-types (lambda (type result)
+                                           (vhash-consq (service-type-name type)
+                                                        type result))
+                                         vlist-null))))
+    (lambda (name)
+      "Return the list of services with the given NAME (a symbol)."
+      (vhash-foldq* cons '() name (force table)))))
diff --git a/gnu/local.mk b/gnu/local.mk
index fe9576d1de..918c9ebfa7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1299,6 +1299,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/iputils-libcap-compat.patch		\
   %D%/packages/patches/ipxe-reproducible-geniso.patch	        \
   %D%/packages/patches/irrlicht-use-system-libs.patch		\
+  %D%/packages/patches/irrlicht-link-against-needed-libs.patch	\
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch	\
   %D%/packages/patches/itk-snap-alt-glibc-compat.patch		\
   %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
@@ -1403,7 +1404,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmad-length-check.patch		\
   %D%/packages/patches/libmad-md_size.patch			\
   %D%/packages/patches/libmad-mips-newgcc.patch			\
-  %D%/packages/patches/libmicrohttpd-0.9.73-test-ssl3.patch	\
   %D%/packages/patches/libmp4v2-c++11.patch			\
   %D%/packages/patches/libmpeg2-arm-private-symbols.patch	\
   %D%/packages/patches/libmpeg2-global-symbol-test.patch	\
@@ -1491,7 +1491,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/meson-allow-dirs-outside-of-prefix.patch	\
   %D%/packages/patches/mhash-keygen-test-segfault.patch		\
   %D%/packages/patches/mia-fix-boost-headers.patch		\
-  %D%/packages/patches/minetest-add-MINETEST_MOD_PATH.patch	\
   %D%/packages/patches/mingw-w64-6.0.0-gcc.patch		\
   %D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch	\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
@@ -1520,6 +1519,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/m4-gnulib-libio.patch			\
   %D%/packages/patches/nautilus-add-libportal-gtk3.patch	\
   %D%/packages/patches/ncompress-fix-softlinks.patch		\
+  %D%/packages/patches/ncftp-reproducible.patch			\
   %D%/packages/patches/netcdf-date-time.patch			\
   %D%/packages/patches/netpbm-CVE-2017-2586.patch		\
   %D%/packages/patches/netpbm-CVE-2017-2587.patch		\
@@ -1628,8 +1628,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/picard-fix-id3-rename-test.patch		\
   %D%/packages/patches/picprog-non-intel-support.patch		\
   %D%/packages/patches/pidgin-add-search-path.patch		\
-  %D%/packages/patches/pigx-bsseq-no-citeproc.patch		\
-  %D%/packages/patches/pigx-chipseq-no-citeproc.patch		\
   %D%/packages/patches/pinball-system-ltdl.patch		\
   %D%/packages/patches/pingus-boost-headers.patch		\
   %D%/packages/patches/pingus-sdl-libs-config.patch		\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 2ba838fd0a..61345f75a9 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
+;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,11 +40,11 @@
   #:use-module (ice-9 binary-ports)
   #:autoload   (system base compile) (compile)
   #:use-module (srfi srfi-1)
-  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-39)
+  #:use-module (srfi srfi-71)
   #:export (search-patch
             search-patches
             search-auxiliary-file
@@ -65,6 +66,7 @@
             specification->package+output
             specification->location
             specifications->manifest
+            specifications->packages
 
             package-unique-version-prefix
 
@@ -141,13 +143,10 @@ flags."
   ;; Search path for package modules.  Each item must be either a directory
   ;; name or a pair whose car is a directory and whose cdr is a sub-directory
   ;; to narrow the search.
-  (let*-values (((not-colon)
-                 (char-set-complement (char-set #\:)))
-                ((environment)
-                 (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "")
-                                  not-colon))
-                ((channels-scm channels-go)
-                 (package-path-entries)))
+  (let* ((not-colon   (char-set-complement (char-set #\:)))
+         (environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "")
+                                       not-colon))
+         (channels-scm channels-go (package-path-entries)))
     ;; Automatically add channels and items from $GUIX_PACKAGE_PATH to Guile's
     ;; search path.  For historical reasons, $GUIX_PACKAGE_PATH goes to the
     ;; front; channels go to the back so that they don't override Guix' own
@@ -500,13 +499,13 @@ return its return value."
   "Return a package matching SPEC.  SPEC may be a package name, or a package
 name followed by an at-sign and a version number.  If the version number is not
 present, return the preferred newest version."
-  (let-values (((name version) (package-name->name+version spec)))
+  (let ((name version (package-name->name+version spec)))
     (%find-package spec name version)))
 
 (define (specification->location spec)
   "Return the location of the highest-numbered package matching SPEC, a
 specification such as \"guile@2\" or \"emacs\"."
-  (let-values (((name version) (package-name->name+version spec)))
+  (let ((name version (package-name->name+version spec)))
     (match (find-package-locations name version)
       (()
        (if version
@@ -541,8 +540,8 @@ version; if SPEC does not specify an output, return OUTPUT.
 
 When OUTPUT is false and SPEC does not specify any output, return #f as the
 output."
-  (let-values (((name version sub-drv)
-                (package-specification->name+version+output spec output)))
+  (let ((name version sub-drv
+              (package-specification->name+version+output spec output)))
     (match (%find-package spec name version)
       (#f
        (values #f #f))
@@ -554,13 +553,20 @@ output."
                   (package-full-name package)
                   sub-drv))))))
 
+(define (specifications->packages specs)
+  "Given SPECS, a list of specifications such as \"emacs@25.2\" or
+\"guile:debug\", return a list of package/output tuples."
+  ;; This procedure exists so users of 'guix home' don't have to write out the
+  ;; (map (compose list specification->package+output)... boilerplate.
+  (map (compose list specification->package+output) specs))
+
 (define (specifications->manifest specs)
   "Given SPECS, a list of specifications such as \"emacs@25.2\" or
 \"guile:debug\", return a profile manifest."
   ;; This procedure exists mostly so users of 'guix package -m' don't have to
   ;; fiddle with multiple-value returns.
   (packages->manifest
-   (map (compose list specification->package+output) specs)))
+   (specifications->packages specs)))
 
 (define (package-unique-version-prefix name version)
   "Search among all the versions of package NAME that are available, and
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 2d817fc00f..42ae928419 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -407,7 +408,7 @@ inspired by @command{vi}.")
 (define-public cloud-utils
   (package
     (name "cloud-utils")
-    (version "0.32")
+    (version "0.33")
     (source
      (origin
        (method url-fetch)
@@ -419,7 +420,11 @@ inspired by @command{vi}.")
          "0xxdi55lzw7j91zfajw7jhd2ilsqj2dy04i9brlk8j3pvb5ma8hk"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags
+     '(#:modules
+       ((guix build gnu-build-system)
+        (guix build utils)
+        (srfi srfi-26))
+       #:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "BINDIR=" out "/bin")
                (string-append "MANDIR=" out "/share/man/man1")
@@ -433,11 +438,15 @@ inspired by @command{vi}.")
              (let ((growpart (string-append (assoc-ref outputs "out")
                                             "/bin/growpart")))
                (wrap-program growpart
-                 `("PATH" ":" prefix (,(dirname (which "sfdisk"))
-                                      ,(dirname (which "readlink"))))))
-             #t)))))
+                 `("PATH" ":" prefix
+                   ,(map dirname
+                         (map (cut search-input-file inputs <>)
+                              (list "bin/readlink"
+                                    "sbin/sfdisk")))))))))))
     (inputs
-     (list python util-linux)) ; contains sfdisk for growpart
+     (list coreutils                    ; for readlink
+           python
+           util-linux))                 ; sfdisk for growpart
     (home-page "https://launchpad.net/cloud-utils")
     (synopsis "Set of utilities for cloud computing environments")
     (description
@@ -525,7 +534,7 @@ services.")
         (base32 "0w4g0iyssyw7dd0061881z8s5czcl01mz6v00znax57zfxjqpvnm"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f))          ; No tests available.
-    (home-page "http://software.clapper.org/daemonize/")
+    (home-page "https://software.clapper.org/daemonize/")
     (synopsis "Command line utility to run a program as a daemon")
     (description
      "daemonize runs a command as a Unix daemon.  It will close all open file
@@ -1760,7 +1769,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.9.10")
+    (version "1.9.11")
     (source (origin
               (method url-fetch)
               (uri
@@ -1770,7 +1779,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "1x34k8sd2msfjjsahff1q143gr5j9z19jx2rmkkbiiz7k084d8a4"))
+                "1gjingc1h7d6p17m0nn87yiwh8gbdchg4w4kv8s4g89wv0q6wixm"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -2028,10 +2037,16 @@ command.")
           (add-after 'install-documentation 'install-dbus-conf
             (lambda* (#:key outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
-                     (dir (string-append out "/etc/dbus-1/system.d")))
-                (mkdir-p dir)
+                     (interfaces (string-append out "/etc/dbus-1/system.d"))
+                     (services (string-append out
+                                              "/share/dbus-1/system-services")))
+                (mkdir-p interfaces)
                 (copy-file "dbus/dbus-wpa_supplicant.conf"
-                           (string-append dir "/wpa_supplicant.conf")))
+                           (string-append interfaces "/wpa_supplicant.conf"))
+                (mkdir-p services)
+                (copy-file "dbus/fi.w1.wpa_supplicant1.service"
+                           (string-append services
+                                          "/fi.w1.wpa_supplicant1.service")))
               #t))))))))
 
 (define-public wpa-supplicant-gui
@@ -4152,7 +4167,7 @@ Python loading in HPC environments.")
                              (string-append dir "/lib/perl5/site_perl"))
                             (_ ""))
                           %build-inputs)))))
-             (invoke "gzip" "inxi.1")
+             (invoke "gzip" "-n" "inxi.1")
              (install-file "inxi.1.gz"
                            (string-append %output "/share/man/man1"))))))
       (home-page "https://smxi.org/docs/inxi.htm")
diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm
index 7213776f07..d0c8df17ec 100644
--- a/gnu/packages/autogen.scm
+++ b/gnu/packages/autogen.scm
@@ -62,6 +62,10 @@
 
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'set-man-page-date
+           ;; Avoid embedding the current date for reproducible builds
+           (lambda _
+             (setenv "MAN_PAGE_DATE" "2012-04-18")))
          (add-before 'patch-source-shebangs 'patch-test-scripts
            (lambda _
              (let ((sh (which "sh")))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 7bddd1c378..5646d909e5 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -632,13 +632,13 @@ detection, and lossless compression.")
 (define-public borg
   (package
     (name "borg")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "borgbackup" version))
        (sha256
-        (base32 "0rvzmy9qyicfs65qwy0n1nkvsidkcvx7kix43885dx1fj13mb6p3"))
+        (base32 "0cy6chpa053rlvy4448vf9klb5v0v1vq3l76gqa3mcrwjb8y574z"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 1ffac1a0ca..c53a2920ac 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3145,6 +3145,11 @@ data and settings.")
      `(#:tests? #f                      ; there are no tests
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'set-force-source-date
+           ;; for reproducible dates, texlive needs this to respect respect
+           ;; SOURCE_DATE_EPOCH
+           (lambda _
+             (setenv "FORCE_SOURCE_DATE" "1")))
          (add-after 'unpack 'fix-latex-errors
            (lambda _
              (with-fluids ((%default-port-encoding #f))
@@ -10526,7 +10531,7 @@ expression report comparing samples in an easily configurable manner.")
 (define-public pigx-chipseq
   (package
     (name "pigx-chipseq")
-    (version "0.0.53")
+    (version "0.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@@ -10534,25 +10539,12 @@ expression report comparing samples in an easily configurable manner.")
                                   "/pigx_chipseq-" version ".tar.gz"))
               (sha256
                (base32
-                "0c6npx35sszycf059w1x1k4k9hq1qqxny0i4p57q1188czr4561h"))
-              (patches (search-patches "pigx-chipseq-no-citeproc.patch"))))
+                "008n6drj9q5av86xihxlj4py2c9p3c5z5ld89c3bksrp77zxiy67"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; parts of the tests rely on access to the network
        #:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             ;; This was fixed in commit
-             ;; 0b1c9f7f2e4d0ff601f1de95ab8b2953f4d5dbc7, but there is no
-             ;; release with this fix.
-             (call-with-output-file "VERSION"
-               (lambda (port) (display ,version port)))
-             ;; See https://github.com/BIMSBbioinfo/pigx_chipseq/issues/176
-             (substitute* "m4/ax_r_package.m4"
-               (("if\\(is.na\\(packageDescription\\(\"PKG\"\\)\\)\\)")
-                "if(system.file(package=\"PKG\") == \"\")"))
-             (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-PYTHONPATH
            (lambda _
              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH")))))))
@@ -10606,7 +10598,7 @@ expression report comparing samples in an easily configurable manner.")
            bedtools
            kentutils))
     (native-inputs
-     (list autoconf automake python-pytest))
+     (list python-pytest))
     (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for ChIP sequencing experiments")
     (description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak
@@ -10621,7 +10613,7 @@ in an easily configurable manner.")
 (define-public pigx-bsseq
   (package
     (name "pigx-bsseq")
-    (version "0.1.6")
+    (version "0.1.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_bsseq/"
@@ -10629,8 +10621,7 @@ in an easily configurable manner.")
                                   "/pigx_bsseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1dipikph0xdr8fp0h1flpafcrg60y4aabljg8fl1v92j3gxdggmw"))
-              (patches (search-patches "pigx-bsseq-no-citeproc.patch"))))
+                "1hfiignq3410dbl6f67vc6zr69abknpcgxixx475dspky2jb5lyn"))))
     (build-system gnu-build-system)
     (arguments
      `(;; TODO: tests currently require 12+GB of RAM.  See
@@ -10638,18 +10629,6 @@ in an easily configurable manner.")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             ;; This was fixed in commit
-             ;; d56ac732524da659afbbb0972f7a87fa178ae58e, but there is no
-             ;; release with this fix.
-             (call-with-output-file "VERSION"
-               (lambda (port) (display ,version port)))
-             ;; https://github.com/BIMSBbioinfo/pigx_bsseq/issues/181
-             (substitute* "m4/ax_r_package.m4"
-               (("if\\(is.na\\(packageDescription\\(\"PKG\"\\)\\)\\)")
-                "if(system.file(package=\"PKG\") == \"\")"))
-             (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-PYTHONPATH
            (lambda _
              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH"))))
@@ -10661,7 +10640,7 @@ in an easily configurable manner.")
                      (search-input-directory inputs
                                              "share/zoneinfo")))))))
     (native-inputs
-     (list tzdata automake autoconf))
+     (list tzdata))
     (inputs
      (list coreutils
            sed
@@ -10705,7 +10684,7 @@ methylation and segmentation.")
 (define-public pigx-scrnaseq
   (package
     (name "pigx-scrnaseq")
-    (version "1.1.8")
+    (version "1.1.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_scrnaseq/"
@@ -10713,23 +10692,11 @@ methylation and segmentation.")
                                   "/pigx_scrnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1lc42hl8mz95kilh0z39s3wnv092mhm6vl2i394n0yfvdzk4f885"))))
+                "0adx7877c3lhlrzfid76i8bc829wcmzvrm0jx47gyid8mxqb7vqs"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             ;; This was fixed in commit
-             ;; c4ac067438ae9312b5786a72e2bfb3d795e3ec8a, but there is no
-             ;; release with this fix.
-             (call-with-output-file "VERSION"
-               (lambda (port) (display ,version port)))
-             ;; https://github.com/BIMSBbioinfo/pigx_scrnaseq/issues/59
-             (substitute* "m4/ax_r_package.m4"
-               (("if\\(is.na\\(packageDescription\\(\"PKG\"\\)\\)\\)")
-                "if(system.file(package=\"PKG\") == \"\")"))
-             (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-additional-environment-variables
            (lambda _
              ;; Needed because of loompy
@@ -10778,8 +10745,6 @@ methylation and segmentation.")
            r-singlecellexperiment
            r-stringr
            r-yaml))
-    (native-inputs
-     (list autoconf automake))
     (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for single-cell RNA sequencing experiments")
     (description
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 1c9358b896..bc0364d87c 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -105,6 +105,11 @@
        #:glib-or-gtk-wrap-excluded-outputs '("out")
        #:phases
        (modify-phases %standard-phases
+         ;; Avoid embedding kernel version for reproducible build
+         (add-after 'unpack 'remove-kernel-version
+           (lambda _
+             (substitute* "third-party/miniupnpc/updateminiupnpcstrings.sh"
+               (("OS_VERSION=`uname -r`") "OS_VERSION=Guix"))))
          (add-after 'install 'move-gui
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Move the GUI to its own output, so that "out" doesn't
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7ea6f5a647..91d259475a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1131,14 +1131,14 @@ tools, and more.")
 (define-public os-prober
   (package
     (name "os-prober")
-    (version "1.79")
+    (version "1.80")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://debian/pool/main/o/os-prober/os-prober_"
                            version ".tar.xz"))
        (sha256
-        (base32 "1vhhk0bl2j4910513gn5h3z8nsaavyv3c8764bim2klc0xyk3rmb"))))
+        (base32 "13z3rshgz5xj0328a80wavdimjw925yha9s1ks398sq0kn5w6qw0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1155,8 +1155,7 @@ tools, and more.")
              (substitute* (find-files ".")
                (("/usr") (assoc-ref outputs "out")))
              (substitute* (find-files "." "50mounted-tests$")
-               (("mkdir") "mkdir -p"))
-             #t))
+               (("mkdir") "mkdir -p"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (define (find-files-non-recursive directory)
@@ -1187,8 +1186,7 @@ tools, and more.")
                    (append (find-files-non-recursive (string-append directory "/common"))
                            (find-files-non-recursive (string-append directory "/x86")))))
                 (list "os-probes" "os-probes/mounted" "os-probes/init"
-                      "linux-boot-probes" "linux-boot-probes/mounted"))
-               #t))))))
+                      "linux-boot-probes" "linux-boot-probes/mounted"))))))))
     (home-page "https://joeyh.name/code/os-prober")
     (synopsis "Detect other operating systems")
     (description "os-prober probes disks on the system for other operating
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index e96a55e5b0..4432e0b851 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -11,11 +11,11 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2021 lu hui <luhuins@163.com>
-;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2021, 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,12 +48,14 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages llvm)
@@ -65,7 +67,9 @@
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
@@ -117,6 +121,13 @@ a major mode for Emacs for examining the flowcharts that it produces.")
                (base32
                 "0lr0l9kj2w3jilz9h9y4np9pf9i9ccpy6331lanki2fnz4z8ldvd"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'set-man-page-date
+                 ;; Avoid embedding the current date for reproducible builds
+                 (lambda _
+                   (setenv "MAN_PAGE_DATE" "2012-04-18"))))))
     (native-inputs
      (list texinfo autogen))
     (home-page "https://www.gnu.org/software/complexity/")
@@ -925,6 +936,88 @@ extensions over the standard utility.")
 source and header amalgamation in projects.")
       (license license:bsd-3))))
 
+(define-public cdecl
+  (package
+    (name "cdecl")
+    (version "2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.ibiblio.org/pub/linux/devel/lang/c/cdecl-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "0dm98bp186r4cihli6fmcwzjaadgwl1z3b0zdxfik8h7hkqawk5p"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       ,#~(list "LIBS=-lreadline"
+                (string-append "BINDIR=" #$output "/bin")
+                (string-append "MANDIR=" #$output "/share/man/man1"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)  ; No configure script.
+         (add-after 'unpack 'fix-build
+           (lambda _
+             (substitute* "Makefile"
+               (("lex cdlex.l")
+                "flex cdlex.l"))
+             (substitute* "cdecl.c"
+               ;; Fix "error: conflicting types for ‘getline’".
+               (("char \\* getline\\(\\)")
+                "char * our_getline(void)")
+               (("char \\* getline \\(\\)")
+                "char * our_getline(void)")
+               (("line = getline\\(\\)")
+                "line = our_getline()")
+               ;; Fix "error: conflicting types for ‘getopt’".
+               (("int getopt\\(int,char \\*\\*,char \\*\\);")
+                "")
+               ;; Fix invalid use of "restrict" as a variable name.
+               (("i, j, restrict")
+                "i, j, restriction")
+               (("restrict =")
+                "restriction =")
+               ;; Fix "warning: implicit declaration of function ‘add_history’".
+               (("# include <readline/readline.h>" all)
+                (string-append all "\n# include <readline/history.h>"))
+               ;; Fix "warning: implicit declaration of function ‘dotmpfile_from_string’".
+               (("void setprogname\\(char \\*\\);" all)
+                (string-append all "\nint dotmpfile_from_string(char *);"))
+               ;; Fix "warning: implicit declaration of function ‘completion_matches’".
+               (("matches = completion_matches\\(text, command_completion\\);")
+                "matches = rl_completion_matches(text, command_completion);")
+               (("char \\* command_completion\\(char \\*, int\\);")
+                "char * command_completion(const char *, int);")
+               (("char \\* command_completion\\(char \\*text, int flag\\)")
+                "char * command_completion(const char *text, int flag)")
+               ;; Fix "warning: ‘CPPFunction’ is deprecated".
+               (("rl_attempted_completion_function = \\(CPPFunction \\*\\)attempt_completion;")
+                "rl_attempted_completion_function = (rl_completion_func_t *)attempt_completion;")
+               ;; Fix "warning: ‘Function’ is deprecated".
+               (("rl_completion_entry_function = \\(Function \\*\\)keyword_completion;")
+                "rl_completion_entry_function = (rl_compentry_func_t *)keyword_completion;"))
+             ;; Fix typo in man page.
+             (substitute* "cdecl.1"
+               (("<storage>\t::= auto \\| extern \\| register \\| auto")
+                "<storage>\t::= auto | extern | register | static"))))
+         (add-before 'install 'create-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man/man1")))
+               (mkdir-p bin)
+               (mkdir-p man)))))
+       #:tests? #f))  ; No "check" target.
+    (native-inputs (list bison flex))
+    (inputs (list readline))
+    (home-page "https://www.ibiblio.org/pub/linux/devel/lang/c/")
+    (synopsis "Turn English phrases into C or C++ declarations and vice versa")
+    (description "@code{cdecl} is a program that turns English-like phrases into C
+declarations.  It can also translate C into pseudo-English.  It also handles
+type casts and C++.  It has command-line editing and history with the GNU
+Readline library.")
+    (license license:public-domain)))
+
 (define-public cscope
   (package
     (name "cscope")
@@ -953,3 +1046,30 @@ also be used for C++ code.
 
 Using cscope, you can easily search for where symbols are used and defined.")
     (license license:bsd-3)))
+
+(define-public xenon
+  (package
+    (name "xenon")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xenon" version))
+       (sha256
+        (base32
+         "1f4gynjzfckm3rjfywwgz1c7icfx3zjqirf16aj73xv0c9ncpffj"))))
+    (build-system python-build-system)
+    (arguments (list #:tests? #f)) ;test suite not shipped with the PyPI archive
+    (inputs (list python-pyyaml python-radon python-requests))
+    (home-page "https://xenon.readthedocs.org/")
+    (synopsis "Monitor code metrics for Python on your CI server")
+    (description
+     "Xenon is a monitoring tool based on Radon.  It monitors code complexity.
+Ideally, @code{xenon} is run every time code is committed.  Through command
+line options, various thresholds can be set for the complexity of code.  It
+will fail (i.e.  it will exit with a non-zero exit code) when any of these
+requirements is not met.")
+    (license license:expat)))
+
+(define-public python-xenon
+  (deprecated-package "python-xenon" xenon))
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 89fc325208..820ff7281f 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -463,9 +463,11 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
     (version "0.9.26-1103-g6e62e0e")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "http://lilypond.org/janneke/mes/20191117/"
-                    "/tcc-" version ".tar.gz"))
+              (uri (list (string-append "mirror://gnu/guix/mirror/tcc-"
+                                        version ".tar.gz")
+                         (string-append
+                          "http://lilypond.org/janneke/mes/20191117/"
+                          "/tcc-" version ".tar.gz")))
               (sha256
                (base32
                 "1qbybw7mxbgkv3sazvz1v7c8byq998vk8f1h25ik8w3d2l63lxng"))))
@@ -3001,19 +3003,20 @@ memoized as a function of '%current-system'."
 
 (define gnumach-headers-boot0
   (with-boot0
-   (package-with-bootstrap-guile
-    (package
-      (inherit gnumach-headers)
-      (version "1.8-116-g28b53508")
-      (source (bootstrap-origin
-               (origin
-                 (method url-fetch)
-                 (uri (string-append "https://lilypond.org/janneke/hurd/"
-                                     "gnumach-" version ".tar.gz"))
-                 (sha256
-                  (base32
-                   "006i0zgwy81vxarpfm12vip4q6i5mgmi5mmy5ldvxp5hx9h3l0zg")))))
-      (native-inputs '())))))
+   (package
+     (inherit gnumach-headers)
+     (version "1.8-116-g28b53508")
+     (source (bootstrap-origin
+              (origin
+                (method url-fetch)
+                (uri (list (string-append "mirror://gnu/guix/mirror/gnumach-"
+                                          version ".tar.gz")
+                           (string-append "https://lilypond.org/janneke/hurd/"
+                                          "gnumach-" version ".tar.gz")))
+                (sha256
+                 (base32
+                  "006i0zgwy81vxarpfm12vip4q6i5mgmi5mmy5ldvxp5hx9h3l0zg")))))
+     (native-inputs '()))))
 
 (define mig-boot0
   (let* ((mig (package
@@ -3030,14 +3033,15 @@ memoized as a function of '%current-system'."
 (define hurd-version-boot0 "0.9-229-ga1efcee8")
 (define hurd-source-boot0
   (let ((version hurd-version-boot0))
-    (bootstrap-origin
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://lilypond.org/janneke/hurd/"
-                           "hurd-v" version ".tar.gz"))
-       (sha256
-        (base32
-         "0bq2q2jisxcy0kgcm6rz0z2fddwxxm7azsama7li28a2m08kdpzy"))))))
+    (origin
+      (method url-fetch)
+      (uri (list (string-append "mirror://gnu/guix/mirror/hurd-v"
+                                version ".tar.gz")
+                 (string-append "https://lilypond.org/janneke/hurd/"
+                                "hurd-v" version ".tar.gz")))
+      (sha256
+       (base32
+        "0bq2q2jisxcy0kgcm6rz0z2fddwxxm7azsama7li28a2m08kdpzy")))))
 
 (define hurd-headers-boot0
   (let ((hurd-headers (package (inherit hurd-headers)
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index c978be75ff..a156f4191c 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -47,10 +47,10 @@
   #:use-module (gnu packages web))
 
 (define-public crun
-  (let ((commit "8e5757a4e68590326dafe8a8b1b4a584b10a1370"))
+  (let ((commit "c381048530aa750495cf502ddb7181f2ded5b400"))
     (package
       (name "crun")
-      (version "1.3")
+      (version "1.4.5")
       (source
        (origin
          (method git-fetch)
@@ -59,7 +59,7 @@
                (commit commit)
                (recursive? #t)))
          (sha256
-          (base32 "01yiss2d57kwlxb7zlqzjwlg9fyaf19yjngd1mw9n4hxls3dfj3k"))
+          (base32 "0x2xmr5sv9ivvcv5fl5jjk4kq9b3n97s5hsqiqfwl4rz8qcz4xk1"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index e98d9634dc..6e4b1331e7 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -398,6 +398,11 @@ the wrong hands.")
            #:phases
            #~(modify-phases %standard-phases
                (delete 'configure)      ; no configure script
+               (add-after 'unpack 'avoid-embedding-timestamp
+                 ;; Do not embed build timestamp
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("shell date") "shell true"))))
                (add-after 'install 'install:static
                  (lambda _
                    (with-directory-excursion #$output
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4556ef4590..007bcc0a6f 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -729,22 +729,16 @@ autocompletion and syntax highlighting.")
 (define-public mycli
   (package
     (name "mycli")
-    (version "1.24.1")
+    (version "1.25.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "mycli" version))
        (sha256
-        (base32 "0rij9nw20zhqr7cqnkm8daw8b1wdc9zb6ny1ji9qz5557nz9i3bl"))))
+        (base32 "0231v7f6q84mjmi1h0ni3s55m2g8p5d7x5q49bgkxlaz2bc2xwgy"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f                      ; tests expect a running MySQL
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'loosen-requirements
-                    (lambda _
-                      ;; Permit newer versions of sqlparse.
-                      (substitute* "setup.py"
-                        (("<0\\.4\\.0") "<0.5.0")))))))
+     '(#:tests? #f))                    ; tests expect a running MySQL
     (propagated-inputs
      (list python-cli-helpers
            python-click
@@ -1344,6 +1338,13 @@ pictures, sounds, or video.")
                                   "src/loader/CMakeLists.txt")
                      (("\\$\\{PG_PKGLIBDIR\\}")
                       (string-append #$output "/lib")))))
+               (add-after 'unpack 'remove-kernel-version
+                 ;; Do not embed the running kernel version for reproducible
+                 ;; builds
+                 (lambda _
+                   (substitute* "src/config.h.in"
+                     (("BUILD_OS_VERSION ..CMAKE_SYSTEM_VERSION.")
+                      "BUILD_OS_VERSION \""))))
                ;; Run the tests after install to make it easier to create the
                ;; required PostgreSQL+TimescaleDB filesystem union.
                (delete 'check)
@@ -3212,6 +3213,37 @@ Memory-Mapped Database} (LMDB), a high-performance key-value store.")
          (replace 'bootstrap
            (lambda _
              (invoke "sh" "autogen.sh")))
+         (add-after 'unpack 'avoid-embedding-kernel-and-timestamps
+           ;; For a reproducible build, avoid embedding the kernel version and
+           ;; timestamps.
+           (lambda _
+             (substitute*
+                 (list "bin/makever"
+                       "appsrc/ODS-Polls/make_vad.sh"
+                       "appsrc/ODS-Blog/make_vad.sh"
+                       "appsrc/ODS-Community/make_vad.sh"
+                       "appsrc/ODS-Framework/make_vad.sh"
+                       "appsrc/ODS-Framework/oauth/make_vad.sh"
+                       "appsrc/ODS-WebMail/make_vad.sh"
+                       "appsrc/ODS-Calendar/make_vad.sh"
+                       "appsrc/ODS-Gallery/make_vad.sh"
+                       "appsrc/ODS-Briefcase/make_vad.sh"
+                       "appsrc/ODS-FeedManager/make_vad.sh"
+                       "appsrc/ODS-Bookmark/make_vad.sh"
+                       "appsrc/ODS-Addressbook/make_vad.sh"
+                       "binsrc/dbpedia/make_vad.sh"
+                       "binsrc/samples/demo/make_vad.sh"
+                       "binsrc/samples/demo/mkdoc.sh"
+                       "binsrc/samples/sparql_demo/make_vad.sh"
+                       "binsrc/bpel/make_vad.sh"
+                       "binsrc/fct/make_vad.sh"
+                       "binsrc/rdf_mappers/make_vad.sh"
+                       "binsrc/isparql/make_vad.sh"
+                       "binsrc/conductor/mkvad.sh")
+               (("^UNAME_SYSTEM=.*") "UNAME_SYSTEM=unknown\n")
+               (("^UNAME_RELEASE=.*") "UNAME_RELEASE=unknown\n")
+               (("^PACKDATE=.*") "PACKDATE=2012-04-18\n")
+               (("^DATE=.*") "DATE=2012-04-18\n"))))
          ;; Even with "--enable-static=no", "libvirtuoso-t.a" is left in
          ;; the build output.  The following phase removes it.
          (add-after 'install 'remove-static-libs
diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm
index 9b3b3c43f6..af1abf11a9 100644
--- a/gnu/packages/dezyne.scm
+++ b/gnu/packages/dezyne.scm
@@ -31,14 +31,14 @@
 (define-public dezyne
   (package
     (name "dezyne")
-    (version "2.15.0")
+    (version "2.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dezyne.org/download/dezyne/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "1sh9chg5q10c3bzsmgl1pb7pmdf04j2lqszhw8jk5qlxr9y8ybcq"))))
+        (base32 "0yid2a9xvp4hc7fry07zp0q2hva89czri6i1m2d1n22srh7r0my6"))))
     (inputs (list bash-minimal
                   guile-3.0-latest
                   guile-json-4
@@ -53,15 +53,6 @@
                   ,@%gnu-build-system-modules)
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'disable-tests
-            (lambda _
-              ;; The mCRL2 output for these tests is unstable, i.e., varies
-              ;; between different builds.
-              (substitute* "Makefile.in"
-                (("test/all/compliance_blocking_double_release ") " ")
-                (("test/all/illegal_external_nonsynchronous ") " ")
-                (("test/all/livelock_synchronous_illegal ") " ")
-                (("test/all/queuefull_external_sync ") " "))))
           (add-before 'configure 'setenv
             (lambda _
               (setenv "GUILE_AUTO_COMPILE" "0")))
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 16e3b2a481..1cb0a7ad76 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -74,7 +74,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "214")
+    (version "215")
     (source
      (origin
        (method git-fetch)
@@ -83,7 +83,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "05vzvs8yn963wzxmnqifj0zsa9scxcq3iqrq9msm0vqznb1xgp7q"))
+        (base32 "16pyqbyrfsxjnpmr9913x2brz3mxplhz62rxwix1c0p7afwjw835"))
        (patches
         (search-patches "diffoscope-fix-llvm-test.patch"))))
     (build-system python-build-system)
@@ -98,19 +98,19 @@
                   (add-after 'unpack 'embed-tool-references
                     (lambda* (#:key inputs #:allow-other-keys)
                       (substitute* "diffoscope/comparators/utils/compare.py"
-                        (("\\['xxd',")
-                         (string-append "['" (which "xxd") "',")))
-                      (substitute* "diffoscope/comparators/elf.py"
-                        (("@tool_required\\('readelf'\\)") "")
-                        (("get_tool_name\\('readelf'\\)")
-                         (string-append "'" (which "readelf") "'")))
+                        (("\\[\"xxd\",")
+                         (string-append "[\"" (which "xxd") "\",")))
+                      (substitute* "diffoscope/diff.py"
+                        (("@tool_required\\(\"diff\"\\)") "")
+                        (("get_tool_name\\(\"diff\"\\)")
+                         (string-append "get_tool_name(\"" (which "diff") "\")")))
                       (substitute* "diffoscope/comparators/directory.py"
-                        (("@tool_required\\('stat'\\)") "")
-                        (("@tool_required\\('getfacl'\\)") "")
-                        (("\\['stat',")
-                         (string-append "['" (which "stat") "',"))
-                        (("\\['getfacl',")
-                         (string-append "['" (which "getfacl") "',")))))
+                        (("@tool_required\\(\"stat\"\\)") "")
+                        (("@tool_required\\(\"getfacl\"\\)") "")
+                        (("\\[\"stat\",")
+                         (string-append "[\"" (which "stat") "\","))
+                        (("\\[\"getfacl\",")
+                         (string-append "[\"" (which "getfacl") "\",")))))
                   (add-after 'build 'build-man-page
                     (lambda* (#:key (make-flags '()) #:allow-other-keys)
                       (apply invoke "make" "-C" "doc" make-flags)))
@@ -147,7 +147,8 @@
                   python-magic
                   python-tlsh
                   acl ;for getfacl
-                  colordiff
+                  coreutils ;for stat
+                  diffutils ;for diff
                   xxd))
     (native-inputs
      (append
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 40886a9e79..974467d72c 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -988,7 +988,7 @@ to create devices with respective mappings for the ATARAID sets discovered.")
 (define-public libblockdev
   (package
     (name "libblockdev")
-    (version "2.26")
+    (version "2.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/storaged-project/"
@@ -996,7 +996,7 @@ to create devices with respective mappings for the ATARAID sets discovered.")
                                   version "-1/libblockdev-" version ".tar.gz"))
               (sha256
                (base32
-                "0sg068jb87ljhn8yazrqxi6ri10ic2sh1lp6ikd2nqxc6l5y3h64"))))
+                "05rm9h8v30rahr245jcw6if6b5g16mb5hnz7wl1shzip0wky3k3d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1007,10 +1007,10 @@ to create devices with respective mappings for the ATARAID sets discovered.")
               (substitute* "src/lib/blockdev.c"
                (("/etc/libblockdev/conf.d/" path) (string-append out path)))))))))
     (native-inputs
-     `(("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("util-linux" ,util-linux)))
+     (list gobject-introspection
+           pkg-config
+           python-wrapper
+           util-linux))
     (inputs
      (list btrfs-progs
            cryptsetup
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 22d723c879..4bc5e10624 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -94,7 +94,7 @@
 ;;; Copyright © 2021 Yurii Kholodkov <urist.mckorobochka@gmail.com>
 ;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
-;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2021, 2022 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Eugene Klimov <lipklim@mailbox.org>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
@@ -109,6 +109,10 @@
 ;;; Copyright © 2022 Brandon Lucas <br@ndon.dk>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev>
+;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io>
+;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
+;;; Copyright © 2022 Thomas Albers Raviola <thomas@thomaslabs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1936,6 +1940,28 @@ can be referred to during the expression.  This technique can improve clarity
 in certain cases.  It also enables recursion for anonymous functions.")
     (license license:public-domain)))
 
+(define-public emacs-xah-fly-keys
+  (package
+    (name "emacs-xah-fly-keys")
+    (version "17.13.20220526011611")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/xahlee/xah-fly-keys")
+                    (commit "b1b1ea62c3f1a329376d9125592175cf2027ebc7")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1gv8d9zgmhzjg6zk2a7y76dz30a3l91xb1p15vldka95faz197wn"))))
+    (build-system emacs-build-system)
+    (home-page "http://xahlee.info/emacs/misc/ergoemacs_vi_mode.html")
+    (synopsis "Modal keybinding system for Emacs, based on command frequency and
+ergonomics")
+    (description "xah-fly-keys.el is a modal editing mode for Emacs, like Vi,
+but the design of key/command choice is based on command frequency statistics
+and ease-of-key score.  Most frequently used commands have most easy keys.")
+    (license license:gpl3)))
+
 (define-public emacs-xr
   (package
     (name "emacs-xr")
@@ -3109,7 +3135,7 @@ of bibliographic references.")
 (define-public emacs-corfu
   (package
     (name "emacs-corfu")
-    (version "0.22")
+    (version "0.25")
     (source
      (origin
        (method git-fetch)
@@ -3118,13 +3144,13 @@ of bibliographic references.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "062lxyqh7nfaixmgfgmqfbkainxc8ypdkj6qjq38xigk55s7c5wk"))))
+        (base32 "1brq8dfn4mx5mxyqqikmhwpwlqdrfq1z0wprm6awxr89xk506g77"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; Move the extensions source files to the top level, which is included in
-         ;; the EMACSLOADPATH.
+         ;; Move the extensions source files to the top level, which is included
+         ;; in the EMACSLOADPATH.
          (add-after 'unpack 'move-source-files
            (lambda _
              (let ((el-files (find-files "./extensions" ".*\\.el$")))
@@ -3133,12 +3159,36 @@ of bibliographic references.")
                          el-files)))))))
     (home-page "https://github.com/minad/corfu")
     (synopsis "Completion overlay region function")
-    (description "Corfu enhances the default completion in region function
-with a completion overlay.  The current candidates are shown in a popup
-overlay below or above the point.  Corfu can be considered the minimalistic
+    (description
+     "Corfu enhances the default completion in region function with a completion
+overlay.  The current candidates are shown in a popup overlay below or above
+the point.  Corfu can be considered the minimalistic
 @code{completion-in-region} counterpart of the Vertico minibuffer UI.")
     (license license:gpl3+)))
 
+(define-public emacs-corfu-doc
+  (package
+    (name "emacs-corfu-doc")
+    (version "0.6.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/galeo/corfu-doc")
+             (commit "f9566cf13f6730a45b2f3c12e491a3fa2097e5d5")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "098yf29yv1b11p7kvdc7n4ra7f5vcmf6nlvhl85jgwqrsdz1795b"))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-corfu))
+    (home-page "https://github.com/galeo/corfu-doc")
+    (synopsis "Documentation popup for Corfu")
+    (description
+     "The @code{corfu-doc} package provides a way to display a documentation
+popup for completion candidates when using @code{emacs-corfu}.  It can
+be regarded as @code{emacs-company-quickhelp} for @code{emacs-corfu}.")
+    (license license:gpl3+)))
+
 (define-public emacs-cape
   (package
     (name "emacs-cape")
@@ -8463,6 +8513,30 @@ transparent background.  If you load it from a GUI, it will default to a
 dark background.")
     (license license:gpl3+)))
 
+(define-public emacs-color-theme-modern
+  ;; No release since October 2019
+  (let ((commit "74ad69bbca6fcfff3c0960d888c7c9c1f9f3e2e8")
+        (revision "1"))
+    (package
+      (name "emacs-color-theme-modern")
+      (version (git-version "0.0.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/emacs-jp/replace-colorthemes.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "13ff4s372wsl5x13vh4vywhi6qcc54gybhp6rxl0r1l4wxidanwn"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/emacs-jp/replace-colorthemes")
+      (synopsis "Emacs color themes implemented via built-in customization")
+      (description "This package contains several themes that were originally
+implemented with the venerable @code{color-themes} package, ported to Emacs'
+built-in custom themes.")
+      (license license:gpl3+))))
+
 (define-public emacs-gruvbox-theme
   (package
     (name "emacs-gruvbox-theme")
@@ -12174,7 +12248,7 @@ extensions.")
 (define-public emacs-evil-collection
   (package
     (name "emacs-evil-collection")
-    (version "0.0.7")
+    (version "0.0.8")
     (source
      (origin
        (method git-fetch)
@@ -12183,7 +12257,7 @@ extensions.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1f5mbg2k527brn6b7njdjizpbzj252c53crzl8sf2564czcprqj0"))))
+        (base32 "159i3qvjnp7jiffwpr517nnxcy3w3g40302vyzxvz6mb6qay6f2c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-evil emacs-annalist))
@@ -12964,6 +13038,30 @@ properties are set on a heading, and when it is changing from a TODO state to
 a DONE state.")
     (license license:gpl3+)))
 
+(define-public emacs-toodoo
+  ;; Package has no release.  Version is extracted from "Version:" keyword in
+  ;; main file, and commit below matches version bump.
+  (package
+    (name "emacs-toodoo")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ChanderG/toodoo.el")
+             (commit "149a563863c2f728c5f903475dbce50547c51000")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "00q7aym0kl03j9m66pivgy0snxcjjg402049b2wdy18kgyypfvx8"))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-transient emacs-evil))
+    (home-page "https://github.com/ChanderG/toodoo.el")
+    (synopsis "Magit-like interface for a Todo workflow built on top of Org")
+    (description "This package provides a minor mode for fast and easy management of Todos
+using Org mode and transients.")
+    (license license:asl2.0)))
+
 (define-public emacs-flx
   (package
     (name "emacs-flx")
@@ -15731,6 +15829,30 @@ of commands is displayed in a handy popup.")
 characters from end of lines.")
     (license license:gpl3+)))
 
+(define-public emacs-opencl-mode
+  ;; Upstream never makes any formal releases, there is only v1.0.
+  ;; Use the latest commit instead.
+  (let ((commit "15091eff92c33ee0d1ece40eb99299ef79fee92d")
+        (revision "1"))
+    (package
+      (name "emacs-opencl-mode")
+      (version (git-version "1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/salmanebah/opencl-mode")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "1zn6rr48w0ai0sn51zzyp546va6flfgf9lm12vfrdb6kkiiiq403"))))
+      (build-system emacs-build-system)
+      (synopsis "Emacs major mode for editing OpenCL kernels")
+      (description "This Emacs package provides the @code{opencl-mode} major
+mode for editing OpenCL kernels.  It supports syntax highlighting and online
+access to the OpenCL documentation through the @code{opencl-lookup} function.")
+      (home-page "https://github.com/salmanebah/opencl-mode")
+      (license license:gpl3+))))
+
 (define-public emacs-openwith
   ;; There is no release tag. Version is extracted from main file.
   (let ((version "20120531")
@@ -15809,29 +15931,26 @@ multiplexer.")
     (license license:gpl3+)))
 
 (define-public emacs-plz
-  (let ((commit "7e456638a651bab3a814e3ea81742dd917509cbb")
-        (revision "1"))
-    (package
-      (name "emacs-plz")
-      (version (git-version "0.1-pre" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/alphapapa/plz.el")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "05kgxrps1s20im5hhq799nrs3615bvssm4r0ysgmwm203mmzsjgj"))))
-      (build-system emacs-build-system)
-      (inputs (list curl))
-      (home-page "https://github.com/alphapapa/plz.el")
-      (synopsis "HTTP library for Emacs")
-      (description
-       "This package provides HTTP library for Emacs.  It uses curl as
-a backend, which avoids some of the issues with using Emacs’s built-in url
-library.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-plz")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alphapapa/plz.el")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0psdjmj1r4g57vhm6c4hajmma72jk893fk820fbjgjwqihr1bxx9"))))
+    (build-system emacs-build-system)
+    (inputs (list curl))
+    (home-page "https://github.com/alphapapa/plz.el")
+    (synopsis "HTTP library for Emacs")
+    (description
+     "This package provides HTTP library for Emacs.  It uses Curl as a backend,
+which avoids some of the issues with using Emacs’s built-in Url library.")
+    (license license:gpl3+)))
 
 (define-public emacs-ement
   (let ((commit "c951737dc855604aba389166bb0e7366afadc533")
@@ -19699,7 +19818,7 @@ by the status of listed files.")
 (define-public emacs-elm-mode
   (package
     (name "emacs-elm-mode")
-    (version "0.21.0")
+    (version "0.22.0")
     (source
      (origin
        (method git-fetch)
@@ -19709,7 +19828,7 @@ by the status of listed files.")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0iwk4fmw8hq3ry4ky1zc7lgl4cpbnrjyk74c2xzddfspi3ks41fd"))))
+        (base32 "1gnr61ibzcznfqy5f8capmbz75rcfikwy106rjdmp45qz2jwp4di"))))
     (propagated-inputs
      (list emacs-dash emacs-f emacs-reformatter emacs-s))
     (build-system emacs-build-system)
@@ -20229,24 +20348,26 @@ functions.")
     (license license:gpl3+)))
 
 (define-public emacs-benchmark-init
-  (package
-    (name "emacs-benchmark-init")
-    (version "1.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/dholm/benchmark-init-el")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1kyn1izm5sbqbp9whnhk9dn3yc7zy8bz5san5w3ivi3rpx15fh94"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/dholm/benchmark-init-el")
-    (synopsis "Benchmark Emacs @code{require} and @code{load} calls")
-    (description "@code{benchmark-init} provides a way to keep track of where
+  (let ((commit "02435560415bbadbcf5051fb7042880549170e7e")
+        (revision "1"))
+    (package
+      (name "emacs-benchmark-init")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dholm/benchmark-init-el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "19375vamhld4xm2qrdmhlp2nczfvalmz9x6ahl23zwkilr8n1nbw"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/dholm/benchmark-init-el")
+      (synopsis "Benchmark Emacs @code{require} and @code{load} calls")
+      (description "@code{benchmark-init} provides a way to keep track of where
 time is being spent during Emacs startup in order to optimize startup time.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-magit-gerrit
   (package
@@ -24824,6 +24945,34 @@ debug server.  It is similar to the LSP but provides integration with
 Debug server.")
     (license license:gpl3+)))
 
+(define-public emacs-bfuture
+  (package
+    (name "emacs-bfuture")
+    (version "1.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.sr.ht/~plattfot/bfuture")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32
+         "1m4v4xbsvg26z7nvg2c8q7x1nvv7v4ajm56l0nbkwcbdbrgahpva"))
+       (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (arguments
+     (list #:tests? (not (%current-target-system))
+           #:test-command #~'("ert-runner")))
+    (native-inputs (list emacs-ert-runner))
+    (home-page "https://github.com/plattfot/bfuture.el")
+    (synopsis "Basic future concept for Emacs with Tramp support")
+    (description
+     "This package provides basic functions for spawning processes asynchronous in
+Emacs and retrieving the output.  It is similar to @code{emacs-pfuture} except
+that this works over Tramp but the feature set is more limited.  For example,
+it cannot tell stdout and stderr apart.")
+    (license license:gpl3+)))
+
 (define-public emacs-pfuture
   (package
     (name "emacs-pfuture")
@@ -27131,8 +27280,8 @@ zip utility (default is @code{zip}).")
 
 (define-public emacs-ox-gemini
   ;; No releases yet
-  (let ((commit "d88c10bcb10fc463fa5a2f6e29c8c94b75a314c0")
-        (revision "0"))
+  (let ((commit "168f820ea401fb813435a3a55af295873a4c110b")
+        (revision "1"))
     (package
       (name "emacs-ox-gemini")
       (version (git-version "0" revision commit))
@@ -27144,7 +27293,7 @@ zip utility (default is @code{zip}).")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1f8kbg5vjd1k7fak3v56b77yk612j6vmzx4xzx3m2vq3f0nyxq29"))))
+          (base32 "0jmiya3f9vv4v64p5kxla6wiiyv4wg4w7f4a6zmdrjcn11hflqmm"))))
       (build-system emacs-build-system)
       (home-page "https://sr.ht/~abrahms/ox-gemini")
       (synopsis "Export Org files in Gemini format")
@@ -27178,7 +27327,7 @@ producing output appropriate for Haunt's @code{html-reader}.")
 (define-public emacs-ox-hugo
   (package
     (name "emacs-ox-hugo")
-    (version "0.8")
+    (version "0.12.1")
     (source
      (origin
        (method git-fetch)
@@ -27188,8 +27337,10 @@ producing output appropriate for Haunt's @code{html-reader}.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "11h464cyc28ld0b0zridgm4drydc1qjxbm1y24zrwlkyqqjk6yr7"))))
+         "0q4gyjzvxzw6a0phw2x2v9n43i28n3g9m7szwbhzch4j6ggxzcw4"))))
     (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-tomelr))
     (home-page "https://ox-hugo.scripter.co")
     (synopsis "Hugo markdown back-end for Org export engine")
     (description
@@ -27662,7 +27813,9 @@ contrast and few colors.")
                ;; EMACSLOADPATH.
                (for-each (lambda (f)
                            (rename-file f (basename f)))
-                         (find-files "./themes" ".*\\.el$"))
+                         (append
+                          (find-files "./themes" ".*\\.el$")
+                          (find-files "./extensions" ".*\\.el$")))
                #t)))))
       (synopsis "Wide collection of color themes for Emacs")
       (description "Emacs-doom-themes contains numerous popular color themes for
@@ -27673,7 +27826,7 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-themes
   (package
     (name "emacs-modus-themes")
-    (version "2.3.3")
+    (version "2.4.0")
     (source
      (origin
        (method git-fetch)
@@ -27682,7 +27835,7 @@ Emacs that integrate with major modes like Org-mode.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "14nfb94y9vcnpmwj9acwl6h5v0h1c6swqf33ch4zimxxqgx9zrm4"))))
+        (base32 "0ia6r68fqbv64r9jm92vmqypq15nl8yy07n18hqrfbp1fy47zds1"))))
     (native-inputs (list texinfo))
     (build-system emacs-build-system)
     (arguments
@@ -30353,6 +30506,62 @@ built-in generator package.  It provides @code{iter2-defun} and
 original package.")
     (license license:gpl3+)))
 
+(define-public emacs-bind-map
+  (let ((commit "510a24138d8de3b8df0783f1ac493a551fc9bd74")
+        (revision "0"))
+    (package
+      (name "emacs-bind-map")
+      (version (git-version "1.1.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/justbur/emacs-bind-map")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0crxjy1ykgb429z8ikjv5iy8vg5i0qn8n86p2lgri4glx45sxxx0"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/justbur/emacs-bind-map")
+      (synopsis "Bind personal keymaps in multiple locations")
+      (description
+       "@code{emacs-bind-map} provides a macro bind-map which can be used to
+make a keymap available across different leader keys including ones
+tied to evil states.  It is essentially a generalization of the idea
+of a leader key as used in Vim or the @code{emacs-evil-leader} package,
+and allows for an arbitrary number of leader keys.")
+      (license license:gpl3+))))
+
+(define-public emacs-spaceleader
+  (let ((commit "35368b03c094399c487cce93ab5b7ac725bd04f5")
+        (revision "0"))
+    (package
+      (name "emacs-spaceleader")
+      (version (git-version "0.0.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mohkale/spaceleader")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1lg51y59z6igqjw3vgyjc5zw32j11xhzw8y0svlx3ry415b0lnls"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       (list emacs-dash
+             emacs-general
+             emacs-which-key
+             emacs-use-package
+             emacs-bind-map))
+      (home-page "https://github.com/mohkale/spaceleader")
+      (synopsis "Emacs leader key implementation from Spacemacs")
+      (description
+       "@code{emacs-spaceleader} replicates Spacemacs' leader key features,
+without requiring all of Spacemacs.  The @code{<Leader>} key, inspired by Vim,
+provides an easy way to bind keys under a configurable prefix key.")
+      (license license:gpl3+))))
+
 (define-public emacs-promise
   (package
     (name "emacs-promise")
@@ -31084,6 +31293,25 @@ wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
 
+(define-public emacs-seq
+  (package
+    (name "emacs-seq")
+    (version "2.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/seq-" version ".tar"))
+       (sha256
+        (base32 "1lbxnrzq88z8k9dyylg2636pg9vc8bzfprs1hxwp9ah0zkvsn52p"))))
+    (build-system emacs-build-system)
+    (home-page "https://elpa.gnu.org/packages/seq.html")
+    (synopsis "Sequence manipulation functions")
+    (description
+     "This Emacs package provides sequence manipulation functions that
+complement basic functions provided by @file{subr.el}.  All its functions
+are prefixed with @code{seq-} and work on lists, strings, and vectors.")
+    (license license:gpl3+)))
+
 (define-public emacs-setup
   (package
     (name "emacs-setup")
@@ -31107,6 +31335,28 @@ extended by the user via @code{setup-define}.  A list of currently known
 local macros are documented in the docstring for @code{setup}.")
     (license license:gpl3+)))
 
+(define-public emacs-tomelr
+  (package
+    (name "emacs-tomelr")
+    (version "0.4.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kaushalmodi/tomelr/")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "03iih7arjlfg8gdp4v2xglas9z519q1s11l28igr8l0m5y0pdrnk"))
+       (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-map emacs-seq))
+    (home-page "https://github.com/kaushalmodi/tomelr/")
+    (synopsis "Emacs-Lisp library for converting S-expressions to TOML")
+    (description
+     "This package provides the @code{tomelr-encode} function to convert a Lisp
+data expression in Alist or Plist format to a TOML string.")
+    (license license:gpl3+)))
+
 (define-public emacs-ed-mode
   ;; XXX: Upstream did not tag any commits yet.
   (let ((commit "69f4fb34eca8df6a3bfe24bd8d8075551f0264ac")
@@ -31195,6 +31445,43 @@ buffers using font locking and text properties.  The package styles
 headlines, keywords, tables and source blocks.")
    (license license:gpl3+)))
 
+(define-public emacs-pyimport
+  (let ((commit "a6f63cf7ed93f0c0f7c207e6595813966f8852b9")
+        (revision "0"))
+    (package
+      (name "emacs-pyimport")
+      (version (git-version "1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/Wilfred/pyimport")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1q5gqhvh4zq5dy8vns694warcz48j1hdnxg16sjck4gsi9xivbvs"))))
+      (build-system emacs-build-system)
+      (inputs
+        (list python-pyflakes))
+      (propagated-inputs
+        (list emacs-dash emacs-s emacs-shut-up))
+      (arguments
+        (list #:phases
+              #~(modify-phases %standard-phases
+                  (add-after 'unpack 'patch-pyflakes-executable
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((pyflakes (search-input-file inputs "/bin/pyflakes")))
+                        (make-file-writable "pyimport.el")
+                        (substitute* "pyimport.el"
+                          (("\"pyflakes")
+                           (string-append "\"" pyflakes)))))))))
+      (home-page "https://github.com/Wilfred/pyimport")
+      (synopsis "Manage Python imports from Emacs")
+      (description
+"@code{emacs-pyimport} manages python imports from Emacs via @code{python-pyflakes}.")
+      (license license:gpl3+)))) ; License is in pyimport.el
+
 (define-public emacs-osm
   (package
     (name "emacs-osm")
@@ -31225,6 +31512,33 @@ zoomable and moveable map display, display of tracks and POIs from GPX files,
 parallel fetching of tiles with cURL, and more.")
     (license license:gpl3+)))
 
+(define-public emacs-popon
+  ;; Upstream does not tag releases.  The commit below matches the version
+  ;; bump.
+  (let ((commit "d16cb747d356eab3f1bc4061ecee473732f7b8bb"))
+    (package
+      (name "emacs-popon")
+      (version "0.4")
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://codeberg.org/akib/emacs-popon")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1i5rp0gvcdqakzaznsh0lqzvlq5kif9q2grq4l80gl75dmqdpym7"))))
+      (build-system emacs-build-system)
+      (home-page "https://codeberg.org/akib/emacs-popon/")
+      (synopsis "Pop floating text on a window")
+      (description
+       "@code{emacs-popon} allows you to pop text on a window, what we call
+a popon.  Popons are window-local and sticky, they don't move while
+scrolling, and they even don't go away when switching buffer, but you
+can bind a popon to a specific buffer to only show on that buffer.")
+      (license license:gpl3+))))
+
 (define-public emacs-bitbake-modes
   (package
    (name "emacs-bitbake-modes")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index a4df02ec49..31b5c04324 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -323,8 +323,8 @@ languages.")
     (license license:gpl3+)))
 
 (define-public emacs-next
-  (let ((commit "38d87c43c2ad727406dcfe316aac5e24e202c251")
-        (revision "0"))
+  (let ((commit "0a5477b448e6b62bcedc1803e531ec7686eea48d")
+        (revision "1"))
     (package
       (inherit emacs)
       (name "emacs-next")
@@ -339,7 +339,7 @@ languages.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0h206asgaqfzhz36p78n23yj4p7kbr6a1f0j0njzxf0ypqrmw9yr"))))
+           "0dqmrawkvbypxp8gcnspnhhmfamzp3l62gfgp1pw2l6svz58v991"))))
       (native-inputs
        (modify-inputs (package-native-inputs emacs)
          (prepend autoconf))))))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index f2904d2106..96dfc34075 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -28,6 +28,7 @@
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -587,7 +588,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
 (define-public electron-cash
   (package
     (name "electron-cash")
-    (version "4.2.7")
+    (version "4.2.10")
     (source
      (origin
        (method git-fetch)
@@ -596,68 +597,68 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qiql2svjyxlgbg4c5b7grgsv8nx2cx33x3x13mvjjngjz3vgilv"))))
+        (base32 "0axpypq9byda61rp3sznrq24b24qxbfwk56j75qp06s1ackg0pcv"))))
     (build-system python-build-system)
-    (inputs
-     `(("libevent" ,libevent)
-       ("libsecp256k1" ,libsecp256k1-bitcoin-cash)
-       ("openssl" ,openssl)
-       ("python-cython" ,python-cython)
-       ("python-dateutil" ,python-dateutil)
-       ("python-dnspython" ,python-dnspython)
-       ("python-ecdsa" ,python-ecdsa)
-       ("python-hidapi" ,python-hidapi)
-       ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix)
-       ("python-keepkey" ,python-keepkey)
-       ("python-pathvalidate" ,python-pathvalidate)
-       ("python-protobuf" ,python-protobuf)
-       ("python-pyaes" ,python-pyaes)
-       ("python-pyqt" ,python-pyqt)
-       ("python-pysocks" ,python-pysocks)
-       ("python-qdarkstyle" ,python-qdarkstyle)
-       ("python-qrcode" ,python-qrcode)
-       ("python-requests" ,python-requests)
-       ("python-stem" ,python-stem)
-       ("python-trezor" ,python-trezor)
-       ("qtsvg" ,qtsvg)
-       ("zlib" ,zlib)))
     (arguments
-     `(#:tests? #f                      ; no tests
-       #:modules ((guix build python-build-system)
+     (list
+      #:tests? #f                       ; no tests
+      #:modules '((guix build python-build-system)
                   (guix build qt-utils)
                   (guix build utils))
-       #:imported-modules (,@%python-build-system-modules
+      #:imported-modules `(,@%python-build-system-modules
                            (guix build qt-utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'create-output-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; setup.py installs to ~/.local/share if this doesn't exist.
-             (mkdir-p (string-append (assoc-ref outputs "out") "/share"))))
-         (add-after 'unpack 'use-libsecp256k1-input
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "electroncash/secp256k1.py"
-               (("library_paths = .* 'libsecp256k1.so.0'.")
-                (string-append "library_paths = ('"
-                               (assoc-ref inputs "libsecp256k1")
-                               "/lib/libsecp256k1.so.0'")))))
-         (add-after 'unpack 'relax-requirements
-           (lambda _
-             (substitute* "contrib/requirements/requirements.txt"
-               (("qdarkstyle==2\\.6\\.8")
-                "qdarkstyle"))))
-         (add-after 'install 'wrap-qt
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-qt-program "electron-cash" #:output out #:inputs inputs))
-             #t)))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'create-output-directories
+            (lambda _
+              ;; setup.py installs to ~/.local/share if this doesn't exist.
+              (mkdir-p (string-append #$output "/share"))))
+          (add-after 'unpack 'use-libsecp256k1-input
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "electroncash/secp256k1.py"
+                (("libsecp256k1.so.0")
+                 (search-input-file inputs "lib/libsecp256k1.so.0")))))
+          (add-after 'unpack 'relax-requirements
+            (lambda _
+              (substitute* "contrib/requirements/requirements.txt"
+                (("qdarkstyle==2\\.6\\.8")
+                 "qdarkstyle"))))
+          (add-after 'install 'wrap-qt
+            (lambda* (#:key outputs inputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (wrap-qt-program "electron-cash"
+                                 #:output out #:inputs inputs)))))))
+    (inputs
+     (list libevent
+           libsecp256k1-bitcoin-cash
+           openssl
+           python-cython
+           python-dateutil
+           python-dnspython
+           python-ecdsa
+           python-hidapi
+           python-jsonrpclib-pelix
+           python-keepkey
+           python-pathvalidate
+           python-protobuf
+           python-pyaes
+           python-pyqt
+           python-pysocks
+           python-qdarkstyle
+           python-qrcode
+           python-requests
+           python-stem
+           python-trezor
+           qtsvg
+           zlib))
     (home-page "https://electroncash.org/")
     (synopsis "Bitcoin Cash wallet")
     (description
      "Electroncash is a lightweight Bitcoin Cash client, based on a client-server
 protocol.  It supports Simple Payment Verification (SPV) and deterministic key
 generation from a seed.  Your secret keys are encrypted and are never sent to
-other machines/servers.  Electroncash does not download the Bitcoin Cash blockchain.")
+other machines/servers.  Electroncash does not download the Bitcoin Cash
+blockchain.")
     (license license:expat)))
 
 (define-public monero
@@ -875,14 +876,12 @@ the Monero GUI client.")
            ;; a built-in implementation supported in python-trezor-agent.
            (lambda _
              (substitute* "setup.py"
-               (("'backports.shutil_which>=3.5.1',") ""))
-             #t))
+               (("'backports.shutil_which>=3.5.1',") ""))))
          (delete 'check)
          (add-after 'install 'check
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             ;; Make installed package available for running the tests.
-             (add-installed-pythonpath inputs outputs)
-             (invoke "py.test"))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest" "-v")))))))
     (propagated-inputs
      (list python-configargparse
            python-daemon
@@ -1001,7 +1000,7 @@ Nano dongle.")
 (define-public python-trezor
   (package
     (name "python-trezor")
-    (version "0.12.4")
+    (version "0.13.0")
     (source
      (origin
        (method git-fetch)
@@ -1010,7 +1009,7 @@ Nano dongle.")
              (commit (string-append "python/v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1k0zk94jnkhr4iyngjfhfvff5mibx265q81v8jhvhd3m4clzgc45"))
+        (base32 "1wy584bxx5p2av4lv1bx9hl1q0b5n7hqz0hnqb9shjriarvl5ckd"))
        (modules
         '((guix build utils)
           (srfi srfi-26)
@@ -1028,13 +1027,21 @@ Nano dongle.")
                                     (string-append "./" file-name)))
                      (scandir "./python/"
                               (negate (cut member <> '("." "..") string=))))
-           (delete-file-recursively "./python")))))
+           (delete-file-recursively "./python")
+           ;; Delete now broken symbolic links.
+           (for-each delete-file
+                     (append (find-files "." "^CHANGELOG.unreleased$")
+                             (find-files "." "^.towncrier.template.md$")))))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-attrs
-           python-click
+           ;; TOOD: Use the latest click version after release 0.13.1 or later
+           ;; is made (see:
+           ;; https://github.com/trezor/trezor-firmware/issues/2199).
+           python-click-7
            python-construct
            python-ecdsa
+           python-hidapi
            python-libusb1
            python-mnemonic
            python-requests
@@ -1043,8 +1050,8 @@ Nano dongle.")
      ;; For tests.
      (list protobuf
            python-black
-           python-protobuf
            python-isort
+           python-protobuf
            python-pyqt
            python-pytest))
     (home-page "https://github.com/trezor/python-trezor")
@@ -1104,7 +1111,7 @@ the KeepKey Hardware Wallet.")
 (define-public trezor-agent
   (package
     (name "trezor-agent")
-    (version "0.11.0-1")
+    (version "0.14.4")
     (source
      (origin
        (method git-fetch)
@@ -1144,6 +1151,11 @@ the KeepKey Hardware Wallet.")
          ;; This package only has a Python script, not a Python module, so the
          ;; sanity-check phase can't work.
          (delete 'sanity-check)
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "setup.py"
+               (("'trezor\\[hidapi]>=0.12.0,<0.13'")
+                "'trezor[hidapi]>=0.13'"))))
          (add-after 'wrap 'fixup-agent-py
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out")))
@@ -1806,7 +1818,7 @@ editing on the Web.")
 (define-public quantlib
   (package
     (name "quantlib")
-    (version "1.24")
+    (version "1.26")
     (source
      (origin
        (method url-fetch)
@@ -1814,7 +1826,7 @@ editing on the Web.")
              "https://github.com/lballabio/QuantLib/releases/download/QuantLib-v"
              version "/QuantLib-" version ".tar.gz"))
        (sha256
-        (base32 "1rxjhkc32a8z0g5gmh0iw5nx0fr31cjsrfgq7c8g6nib003kgnnx"))))
+        (base32 "1sbk6rg51x5xpa93xmqmrj32a1l9vba51xck0017cxzblg0nrzh4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index cf6cdb630f..3f17dcf407 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -103,6 +103,9 @@ reliability in mind.")
               (sha256
                (base32
                 "1389657cwgw5a3kljnqmhvfh4vr2gcr71dwz1mlhf22xq23hc82z"))
+              (patches
+               (search-patches
+                "ncftp-reproducible.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 58ccf080a7..c011622f8e 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
 ;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
@@ -71,6 +71,7 @@
 ;;; Copyright © 2022 Yovan Naumovski <yovan@gorski.stream>
 ;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
 ;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3531,7 +3532,7 @@ are primarily in English, however some in other languages are provided.")
 (define-public irrlicht
   (package
     (name "irrlicht")
-    (version "1.8.4")
+    (version "1.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3540,8 +3541,9 @@ are primarily in English, however some in other languages are provided.")
                     "/" version "/irrlicht-" version ".zip"))
               (sha256
                (base32
-                "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
-              (patches (search-patches "irrlicht-use-system-libs.patch"))
+                "0gagjh2l3a3m8hsixxhhhan3m5xl7735ka8m4g79jl4qsgp7pyzg"))
+              (patches (search-patches "irrlicht-use-system-libs.patch"
+                                       "irrlicht-link-against-needed-libs.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3555,8 +3557,7 @@ are primarily in English, however some in other languages are provided.")
                        "source/Irrlicht/zlib"))
                   (delete-file "source/Irrlicht/glext.h")
                   (delete-file "source/Irrlicht/glxext.h")
-                  (delete-file "source/Irrlicht/wglext.h")
-                  #t))))
+                  (delete-file "source/Irrlicht/wglext.h")))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -3564,33 +3565,39 @@ are primarily in English, however some in other languages are provided.")
          (add-after 'unpack 'chdir-to-source
            (lambda _
              ;; The actual source is buried a few directories deep.
-             (chdir "source/Irrlicht/")
-             #t))
+             (chdir "source/Irrlicht/")))
          (add-after 'chdir-to-source 'remove-<sys/sysctl.h>
            (lambda _
              (substitute* "COSOperator.cpp"
                (("#include <sys/sysctl.h>") ""))))
+         (add-after 'chdir-to-source 'delete-broken-install-rule
+           (lambda _
+             (substitute* "Makefile"
+               ;; We neither build nor want a static library.  Skip it.
+               ((".*\\bcp .*\\$\\(STATIC_LIB\\).*") ""))))
          (add-after 'chdir-to-source 'fix-build-env
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* "Makefile"
                  (("INSTALL_DIR = /usr/local/lib")
                   (string-append "INSTALL_DIR = " out "/lib"))
-                 ;; Add '-fpermissive' to the CXXFLAGS
+                 ;; Add '-fpermissive' to the CXXFLAGS.
                  (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
                ;; The Makefile assumes these directories exist.
                (mkdir-p (string-append out "/lib"))
                (mkdir-p (string-append out "/include")))))
          (delete 'configure))           ; no configure script
        #:tests? #f                      ; no check target
-       #:make-flags '("CC=gcc" "sharedlib")))
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             "sharedlib")))
     (inputs
-     `(("bzip2" ,bzip2)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libx11" ,libx11)
-       ("libxxf86vm" ,libxxf86vm)
-       ("mesa" ,mesa)))
+     (list bzip2
+           libjpeg-turbo
+           libpng
+           libx11
+           libxxf86vm
+           mesa))
     (synopsis "3D game engine written in C++")
     (description
      "The Irrlicht Engine is a high performance realtime 3D engine written in
@@ -3600,6 +3607,25 @@ for common mesh file formats, and collision detection.")
     (home-page "https://irrlicht.sourceforge.io/")
     (license license:zlib)))
 
+(define-public irrlicht-for-minetest
+  (package
+    (inherit irrlicht)
+    (name "irrlicht-for-minetest")
+    (version "1.9.0mt5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/minetest/irrlicht")
+             (commit version)))
+       (sha256
+        (base32
+         "1jxk1x0f60n8lrz8a6x62aj2pqg0qnbajsld3lqncvwsfbi0xjx1"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; No check target.
+     (list #:tests? #f))))
+
 (define-public mars
   ;; The latest release on SourceForge relies on an unreleased version of SFML
   ;; with a different API, so we take the latest version from the official
@@ -7658,7 +7684,13 @@ original.")
         (base32 "1f2zif3s6vddbhph4jr1cymdsn7gagg59grrxs0yap6myqmy8shg"))))
     (build-system cmake-build-system)
     (arguments
-     (list #:test-target "check"
+     (list #:configure-flags
+           #~(let ((fortunes (string-append #$output "/share/fortunes")))
+               (list (string-append "-DLOCALDIR=" fortunes)
+                     (string-append "-DLOCALODIR=" fortunes "/off")
+                     (string-append "-DCOOKIEDIR=" fortunes)
+                     (string-append "-DOCOOKIEDIR=" fortunes "/off")))
+           #:test-target "check"
            #:phases
            #~(modify-phases %standard-phases
                (add-after 'unpack 'enter-build-directory
@@ -7683,16 +7715,13 @@ original.")
                    (with-output-to-file "tests/scripts/split-valgrind.pl"
                      (const #t))))
                (add-after 'install 'fix-install-directory
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Move binary from "games/" to "bin/" and remove the
-                   ;; latter.  This is easier than patching CMakeLists.txt
-                   ;; since the tests hard-code the location as well.
-                   (let* ((out   (assoc-ref outputs "out"))
-                          (bin   (string-append out "/bin"))
-                          (games (string-append out "/games")))
-                     (rename-file (string-append games "/fortune")
-                                  (string-append bin "/fortune"))
-                     (rmdir games)))))))
+                 ;; Move fortune from "games/" to "bin/" and remove the
+                 ;; former.  This is easier than patching CMakeLists.txt
+                 ;; since the tests hard-code the location as well.
+                 (lambda _
+                   (with-directory-excursion #$output
+                     (rename-file "games/fortune" "bin/fortune")
+                     (rmdir "games")))))))
     (inputs (list recode))
     (native-inputs
      (list perl
@@ -12059,7 +12088,7 @@ protect you.")
 (define-public 7kaa
   (package
     (name "7kaa")
-    (version "2.15.4p1")
+    (version "2.15.5")
     (source
      (origin
        (method url-fetch)
@@ -12067,7 +12096,7 @@ protect you.")
                            "releases/download/v" version "/"
                            "7kaa-" version ".tar.xz"))
        (sha256
-        (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
+        (base32 "0axbv14fh87hwjabrb3zv7ivj88rs6kd2xq6s9qlpsszk20jc2im"))))
     (build-system gnu-build-system)
     (native-inputs
      (list gettext-minimal pkg-config))
@@ -12650,6 +12679,31 @@ Magic II (aka HOMM2) game engine.  It requires assets and game resources to
 play; it will look for them at @file{~/.local/share/fheroes2} folder.")
     (license license:gpl2)))
 
+(define-public apricots
+  (package
+    (name "apricots")
+    (version "0.2.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/moggers87/apricots")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0vis217hhnb9fbs9sf8mmcm71qp44kr3xqmffc1gdiixvi90c781"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs (list autoconf  ; autom4te used in ./bootstrap
+                         automake  ; aclocal used in ./bootstrap
+                         cppcheck))
+    (inputs (list freealut openal sdl2))
+    (home-page "https://github.com/moggers87/apricots")
+    (synopsis "Arcade airplane game")
+    (description "@code{apricots} is a game where you fly a little plane
+around the screen and shoot things and drop bombs on enemy targets.  It's
+meant to be quick and fun.")
+    (license license:gpl2+)))
+
 (define-public liquidwar6
   (package
     (name "liquidwar6")
@@ -12690,3 +12744,35 @@ liquid and you have to try and eat your opponents.  Rules are very simple yet
 original, they have been invented by Thomas Colcombet.")
     (home-page "https://www.gnu.org/software/liquidwar6/")
     (license license:gpl3+)))
+
+(define-public freerct
+  (package
+    (name "freerct")
+    (version "0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/FreeRCT/FreeRCT")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1szwy2cq4ffp4yxm9pp9vdyia0i5nz0wnppdd1xb9w7v3wa4mywi"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))
+    (native-inputs (list flex bison))
+    (inputs (list libpng sdl2 sdl2-ttf))
+    (home-page "https://freerct.net/")
+    (synopsis "Theme park management simulation game")
+    (description
+     "FreeRCT is a game that captures the look and feel of the popular games
+RollerCoaster Tycoon 1 and 2, graphics- and gameplay-wise.
+
+In this game, you play as a manager of a theme park, allowing you to make a
+park of your dreams.  The list of responsiblities includes managing staff,
+finances, landscaping, and most importantly: rides.  Good managers follow the
+principle of prioritizing the guests' happiness with a well-maintained park.
+Should they go unwise, a theme park plunge into chaos with vandalizing guests
+and unsafe rides.  Which path will you take?")
+    (license license:gpl2)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 0c9240eea7..ea7483f16f 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -739,6 +739,71 @@ enables you to easily do operations in Python that would otherwise
 require a spatial database such as PostGIS.")
     (license license:bsd-3)))
 
+(define-public python-osmnx
+  (package
+    (name "python-osmnx")
+    (version "1.1.2")
+    (source
+     (origin
+       ; Fetch from github as the pypi package is missing the tests dir.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gboeing/osmnx")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n8qjn184p5a2s3j6x6iyc1i7p3l3xnbqqxm6ajwgwv6j5fw1d5a"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               ; TODO: Disable network tests
+               (invoke "pytest" "tests"
+                       "-k"
+                       (string-append
+                         ;; The following tests require network access.
+                         "not test_geocode_to_gdf"
+                         " and not test_stats"
+                         " and not test_osm_xml"
+                         " and not test_elevation"
+                         " and not test_routing"
+                         " and not test_plots"
+                         " and not test_find_nearest"
+                         " and not test_api_endpoints"
+                         " and not test_graph_save_load"
+                         " and not test_graph_from_functions"
+                         " and not test_geometries"))))))))
+    (propagated-inputs
+      (list python-folium
+            python-geopandas
+            python-matplotlib
+            python-networkx
+            python-numpy
+            python-pandas
+            python-pyproj
+            python-requests
+            python-rtree
+            python-shapely))
+    (native-inputs
+      (list python-numpy python-pytest))
+    (home-page "https://github.com/gboeing/osmnx")
+    (synopsis
+      "Retrieve, model, analyze, and visualize OpenStreetMap street networks")
+    (description
+      "OSMnx is a Python library that lets you download geospatial data
+from OpenStreetMap and model, project, visualize, and analyze real-world
+street networks and any other geospatial geometries.  You can download
+and model walkable, drivable, or bikeable urban networks with a single
+line of Python code then easily analyze and visualize them.  You can
+just as easily download and work with other infrastructure types,
+amenities/points of interest, building footprints, elevation data,
+street bearings/orientations, and speed/travel time.")
+    (license license:expat)))
+
 (define-public mapnik
   (package
     (name "mapnik")
@@ -1486,27 +1551,28 @@ persisted.
 (define-public python-rtree
   (package
     (name "python-rtree")
-    (version "0.9.7")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Rtree" version))
        (sha256
-        (base32 "0gna530vy6rh76035cqh7i2lx199cvxjrzjczg9rm6k96k5751xy"))))
+        (base32 "10lnhf67c9pb0yisxdqmb52dy6lj1za1h9d4p69v0ihk2a138j6h"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'find-libspatialindex
            (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "SPATIALINDEX_C_LIBRARY"
-                     (string-append (assoc-ref inputs "libspatialindex")
-                                    "/lib/libspatialindex.so"))))
+             (let ((libspatialindex (assoc-ref inputs "libspatialindex")))
+               (substitute* "rtree/finder.py"
+                 (("find_library\\(\"spatialindex_c\"\\)")
+                  (string-append  "\"" libspatialindex
+                                  "/lib/libspatialindex_c.so\""))))))
          (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+           (lambda* (#:key outputs tests? #:allow-other-keys)
              (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "-m" "pytest")))))))
+                 (invoke "pytest")))))))
     (native-inputs
      (list python-numpy python-pytest python-wheel))
     (inputs
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index daec119012..e143d5378c 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -190,7 +190,7 @@ simple and consistent.")
 (define-public papirus-icon-theme
   (package
     (name "papirus-icon-theme")
-    (version "20210101")
+    (version "20220508")
     (source
      (origin
        (method git-fetch)
@@ -198,12 +198,11 @@ simple and consistent.")
              (url "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme")
              (commit version)))
        (sha256
-        (base32
-         "0w6qg3zjhfvjg1gg5inranf8ianb4mrp0jm9qgi6hg87ig1rashs"))
+        (base32 "0rpcniaw8xbn23q67m26vgx3fynn4v056azrfp63lxdh46gfsvmc"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f
+     '(#:tests? #f                      ; no test suite
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
@@ -211,7 +210,7 @@ simple and consistent.")
          (delete 'configure)
          (delete 'build))))
     (native-inputs
-     `(("gtk+:bin" ,gtk+ "bin")))
+     (list `(,gtk+ "bin")))
     (home-page "https://git.io/papirus-icon-theme")
     (synopsis "Fork of Paper icon theme with a lot of new icons and a few extras")
     (description "Papirus is a fork of the icon theme Paper with a lot of new icons
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 587224ae08..f778068821 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4065,14 +4065,15 @@ Hints specification (EWMH).")
 (define-public goffice
   (package
     (name "goffice")
-    (version "0.10.50")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/goffice/"
-                                  (version-major+minor version)  "/"
-                                  "goffice-" version ".tar.xz"))
-              (sha256
-               (base32 "1p5zbj7cbcfcxd6l8pnph54p6ah1bwf146y810j4bcq8ggf3sp1c"))))
+    (version "0.10.52")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/goffice/"
+                           (version-major+minor version)  "/"
+                           "goffice-" version ".tar.xz"))
+       (sha256
+        (base32 "0344k0ffndd79as3c4nfq3mia7mrds6aq2jg76drdw3h8gcyzfb0"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                  ; 4.0 MiB of gtk-doc
@@ -4083,8 +4084,7 @@ Hints specification (EWMH).")
     (inputs
      (list gtk+ libgsf librsvg libxslt libxml2))
     (native-inputs
-     (list intltool
-           `(,glib "bin") pkg-config))
+     (list intltool `(,glib "bin") pkg-config))
     (home-page "https://developer.gnome.org/goffice/")
     (synopsis "Document-centric objects and utilities")
     (description "A GLib/GTK+ set of document-centric objects and utilities.")
@@ -4124,7 +4124,7 @@ Hints specification (EWMH).")
 (define-public gnumeric
   (package
     (name "gnumeric")
-    (version "1.12.50")
+    (version "1.12.52")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnumeric/"
@@ -4132,7 +4132,7 @@ Hints specification (EWMH).")
                                   "gnumeric-" version ".tar.xz"))
               (sha256
                (base32
-                "1f0lrj5msg80pgjp38jj6rddf352gwddgip7z4lki66n3fx1k23m"))))
+                "0fw201j0sks95wgvns3vydgprhwf6z4v4xb2a0ldi892k8277kvk"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(;; The gnumeric developers don't worry much about failing tests.
@@ -4164,12 +4164,12 @@ Hints specification (EWMH).")
            python-pygobject
            zlib))
     (native-inputs
-     `(("bison" ,bison)
-       ("docbook-xml" ,docbook-xml)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)))
+     (list bison
+           docbook-xml
+           `(,glib "bin")
+           intltool
+           itstool
+           pkg-config))
     (home-page "http://www.gnumeric.org")
     (synopsis "Spreadsheet application")
     (description
@@ -4948,7 +4948,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public five-or-more
   (package
     (name "five-or-more")
-    (version "3.32.2")
+    (version "3.32.3")
     (source
      (origin
        (method url-fetch)
@@ -4956,7 +4956,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            (version-major+minor version) "/"
                            "five-or-more-" version ".tar.xz"))
        (sha256
-        (base32 "19pf8wzbf3ciqf2k4bj9sddvyhckfd62x86pnqr6s8h4vn9jc6ii"))))
+        (base32 "1x4ys18rn37hsavivh532py2avj9686aycnn8ys29cyyxwpdf41d"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -4965,19 +4965,17 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
          (add-after 'unpack 'skip-gtk-update-icon-cache
            (lambda _
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t)))))
+               (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("appstream-glib" ,appstream-glib)
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("vala" ,vala)
-       ("xmllint" ,libxml2)))
+     (list appstream-glib
+           desktop-file-utils
+           `(,glib "bin")               ; for glib-compile-resources
+           intltool
+           itstool
+           pkg-config
+           vala))
     (inputs
-     (list gtk+ libgnome-games-support librsvg))
+     (list gtk+ libgnome-games-support librsvg libxml2))
     (home-page "https://wiki.gnome.org/Apps/Five%20or%20more")
     (synopsis "Logic puzzle game")
     (description "Five or More is a game where you try to align
@@ -4989,7 +4987,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public gnome-mines
   (package
     (name "gnome-mines")
-    (version "40.0")
+    (version "40.1")
     (source
      (origin
        (method url-fetch)
@@ -4997,7 +4995,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            (version-major version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "0sf6kdvhr4pr3hddnj6ql9larz2wy108sri31id6x9g459nbly8z"))))
+        (base32 "0whjwdxhyw5bvibd9qvpm2yc5g7yhy8h3rn027kv5cqwyyryj0im"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -5008,17 +5006,16 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
              (substitute* "build-aux/meson_post_install.py"
                (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin")       ; for glib-compile-resources
-       ("pkg-config" ,pkg-config)
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("python" ,python-wrapper)       ; for meson_post_install.py
-       ("vala" ,vala)
-       ("yelp" ,yelp)
-       ("appstream-glib" ,appstream-glib)))
+     (list appstream-glib
+           desktop-file-utils
+           `(,glib "bin")               ; for glib-compile-resources
+           intltool
+           itstool
+           pkg-config
+           python-wrapper               ; for meson_post_install.py
+           vala))
     (inputs
-     (list gtk+ libgnome-games-support librsvg))
+     (list gtk+ libgnome-games-support librsvg yelp))
     (home-page "https://wiki.gnome.org/Apps/Mines")
     (synopsis "Minesweeper game")
     (description
@@ -8788,7 +8785,7 @@ core C library, and bindings for Python (PyGTK).")
 (define-public gnome-autoar
   (package
     (name "gnome-autoar")
-    (version "0.4.1")
+    (version "0.4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -8796,11 +8793,10 @@ core C library, and bindings for Python (PyGTK).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03hmm7cjgjvyxlflghfa89s1amj16qapl2c9pv0r2bfrp87dasv4"))))
+                "124y4j3wgb6axgfzw9f00865r033fg7b0qy9qgfsp5ilan4hgpvv"))))
     (build-system meson-build-system)
     (native-inputs
-     (list gobject-introspection
-           `(,glib "bin") pkg-config))
+     (list gobject-introspection `(,glib "bin") pkg-config))
     (propagated-inputs
      (list libarchive))  ; Required by gnome-autoar-0.pc
     (inputs
@@ -12523,7 +12519,7 @@ world.")
 (define-public ocrfeeder
   (package
     (name "ocrfeeder")
-    (version "0.8.3")
+    (version "0.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/ocrfeeder/"
@@ -12531,7 +12527,7 @@ world.")
                                   "ocrfeeder-" version ".tar.xz"))
               (sha256
                (base32
-                "12f5gnq92ffnd5zaj04df7jrnsdz1zn4zcgpbf5p9qnd21i2y529"))))
+                "1vaaphzk6zn7pp2x9scphdzlbsma910wnbhd9xry50nx95cjlgdh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -12548,8 +12544,7 @@ world.")
                                         "/site-packages")))
               (wrap-program prog
                 `("PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-              #t))))))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
     (native-inputs
      `(("glib:bin" ,glib "bin")                   ; for glib-compile-resources
        ("gobject-introspection" ,gobject-introspection)
diff --git a/gnu/packages/gnu-doc.scm b/gnu/packages/gnu-doc.scm
index 9fb746ee97..22fc976425 100644
--- a/gnu/packages/gnu-doc.scm
+++ b/gnu/packages/gnu-doc.scm
@@ -89,8 +89,8 @@ list.")
                     (string-append source "/maintain.texi"))
             (invoke "makeinfo" "--output" info-dir
                     (string-append source "/standards.texi"))
-            (invoke "gzip" (string-append info-dir "/maintain.info"))
-            (invoke "gzip" (string-append info-dir "/standards.info"))))))
+            (invoke "gzip" "-n" (string-append info-dir "/maintain.info"))
+            (invoke "gzip" "-n" (string-append info-dir "/standards.info"))))))
     (home-page "https://www.gnu.org/prep/standards/")
     (synopsis "GNU coding standards and maintainer information")
     (description "The GNU Coding Standards were written by Richard Stallman
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index ec50c8aaa6..01099375d3 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -303,7 +303,15 @@ applications and libraries.  It is used by AqBanking.")
     (arguments
      `(;; Parallel building fails because aqhbci is required before it's
        ;; built.
-       #:parallel-build? #f))
+       #:parallel-build? #f
+       #:phases
+       (modify-phases %standard-phases
+         ;; Embed the package version instead of the build date
+         (add-after 'unpack 'use-version-instead-of-date
+           (lambda _
+             (substitute*
+                 "src/libs/plugins/backends/aqhbci/header.xml.in"
+               (("@DATETIME@") ,version)))))))
     (propagated-inputs
      (list gwenhywfar))
     (inputs
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 41e8f3b80f..a0f902e534 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nikita <nikita@n0.is>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
@@ -69,6 +69,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages backup)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -161,16 +162,18 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.73")
+   (version "0.9.75")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "0bh39irwzkv48fkw43skfgkk8ka3793bx1lm21sgw6zxi0djyyx3"))
-            (patches (search-patches "libmicrohttpd-0.9.73-test-ssl3.patch"))))
+              "1fz3ljqfvfyfb5inzihy66bys22id9jgsi4nmcd3j6spdxx90y4j"))))
    (build-system gnu-build-system)
+   (arguments
+    (list #:configure-flags
+          #~(list "--disable-static")))
    (inputs
     (list curl gnutls/dane libgcrypt openssl zlib))
    (synopsis "C library implementing an HTTP 1.1 server")
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index c9b233c1e4..08fa1570d6 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2017, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -992,14 +992,14 @@ them to transform your existing public key into a secret key.")
 (define-public pgpdump
   (package
     (name "pgpdump")
-    (version "0.34")
+    (version "0.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.mew.org/~kazu/proj/pgpdump/pgpdump-"
                            version ".tar.gz"))
        (sha256
-        (base32 "080ayqqxb13ngpg6zvaipszwnjadafw3ni7w7gg189cmh3lab7cq"))))
+        (base32 "0kslr62h3wazg4x0l38lsmswvh2dizpnwcrdsmqz62b3plnr40jf"))))
     (build-system gnu-build-system)
     (arguments
      (list #:tests? #f                  ; no make check
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 41dd32955d..6fbcf12a04 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -977,11 +977,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20220503000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20220531000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "91.9.0")
+    (version "91.10.0")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1260,7 +1260,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 "8b44d29de6525d6379f163f50c1a900d4540ef1b"))
+        ,(let ((changeset "4a4b901410a9055d078d0cdd7c62b2b5d56ffbad"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1269,10 +1269,10 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "1k7zy53il3i4k2k7mc33j0wsgpjrsghmmj6afs14hk9j95byvayy")))))
+               "0i2wpi08jfksqqc0j6q362nyk3zmlqd5ds2w7mm74infvrw6fzzq")))))
        ("cargo" ,rust "cargo")
-       ("clang" ,clang-11)
-       ("llvm" ,llvm-11)
+       ("clang" ,clang)
+       ("llvm" ,llvm)
        ("m4" ,m4)
        ("nasm" ,nasm)
        ("node" ,node)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 64bac20f3d..3bf986403a 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -990,7 +990,7 @@ application suites.")
            cups
            graphene
            harfbuzz
-           iso-codes
+           iso-codes/official ;XXX TODO core-updates: use iso-codes
            json-glib-minimal
            libxml2
            rest))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 3c02a85bc3..c6f73a38e9 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -607,73 +607,36 @@ Unix-style DSV format and RFC 4180 format.")
     (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
 
 (define-public guile-fibers-1.1
-  ;; Pick one commit above 1.1.0, which fixes a bug that's critical for the
-  ;; Shepherd: <https://github.com/wingo/fibers/pull/57>.
-  (let ((commit "c25dcb9cc4b5b977474ffe555b40ce2f1d0d1edc")
-        (revision "0"))
-   (package
-     (name "guile-fibers")
-     (version (git-version "1.1.0" revision commit))
-     (source (origin
-               (method git-fetch)
-               (uri (git-reference
-                     (url "https://github.com/wingo/fibers")
-                     (commit commit)))
-               (file-name (git-file-name name version))
-               (sha256
-                (base32
-                 "1jwr0y5x8mv8fm4df2vc3ll38fwwbkrm2iwfsfxa8l783a1a6143"))
-               (patches
-                (search-patches "guile-fibers-wait-for-io-readiness.patch"))))
-     (build-system gnu-build-system)
-     (arguments
-      '(#:phases (modify-phases %standard-phases
-                   (add-after 'unpack 'support-cross-compilation
-                     (lambda* (#:key target #:allow-other-keys)
-                       ;; Support cross-compilation.  These issues are fixed in
-                       ;; Fibers commit c4756b9c336374546a41ac90a4431fcc8f7e98ee
-                       ;; and this phase can be removed for 1.1.1.
-                       (when target
-                         (substitute* "build-aux/guile.am"
-                           (("\\$\\(AM_V_GEN\\)" all)
-                            (string-append all " FIBERS_CROSS_COMPILING=yes "))
-                           (("compile")
-                            (string-append "compile --target=" target
-                                           " -L $(abs_top_srcdir)")))
-                         (substitute* "fibers/epoll.scm"
-                           (("\\(dynamic-call")
-                            "(unless (getenv \"FIBERS_CROSS_COMPILING\") (dynamic-call")
-                           (("\\(dynamic-link.*" all)
-                            (string-append all ")\n"))
-                           (("#,(%sizeof|%offsetof)" _ prefix)
-                            prefix)))))
-                   (add-after 'install 'mode-guile-objects
-                     (lambda* (#:key outputs #:allow-other-keys)
-                       ;; .go files are installed to "lib/guile/X.Y/cache".
-                       ;; This phase moves them to "…/site-ccache".
-                       (let* ((out (assoc-ref outputs "out"))
-                              (lib (string-append out "/lib/guile"))
-                              (old (car (find-files lib "^ccache$"
-                                                    #:directories? #t)))
-                              (new (string-append (dirname old)
-                                                  "/site-ccache")))
-                         (rename-file old new)
-                         #t))))))
-     (native-inputs
-      (list texinfo pkg-config autoconf automake libtool
-            guile-3.0           ;for 'guild compile
-            ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
-            gettext-minimal))
-     (inputs
-      (list guile-3.0))                           ;for libguile-3.0.so
-     (supported-systems
-      ;; This version requires 'epoll' and is thus limited to Linux-based
-      ;; systems, but this may change soon:
-      ;; <https://github.com/wingo/fibers/pull/53>.
-      (filter (cut string-suffix? "-linux" <>) %supported-systems))
-     (synopsis "Lightweight concurrency facility for Guile")
-     (description
-      "Fibers is a Guile library that implements a a lightweight concurrency
+  (package
+    (name "guile-fibers")
+    (version "1.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wingo/fibers")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ll63d7202clapg1k4bilbnlmfa4qvpjnsd7chbkka4kxf5klilc"))
+              (patches
+               (search-patches "guile-fibers-wait-for-io-readiness.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list texinfo pkg-config autoconf automake libtool
+           guile-3.0            ;for 'guild compile
+           ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
+           gettext-minimal))
+    (inputs
+     (list guile-3.0))                            ;for libguile-3.0.so
+    (supported-systems
+     ;; This version requires 'epoll' and is thus limited to Linux-based
+     ;; systems, but this may change soon:
+     ;; <https://github.com/wingo/fibers/pull/53>.
+     (filter (cut string-suffix? "-linux" <>) %supported-systems))
+    (synopsis "Lightweight concurrency facility for Guile")
+    (description
+     "Fibers is a Guile library that implements a a lightweight concurrency
 facility, inspired by systems like Concurrent ML, Go, and Erlang.  A fiber is
 like a \"goroutine\" from the Go language: a lightweight thread-like
 abstraction.  Systems built with Fibers can scale up to millions of concurrent
@@ -683,9 +646,9 @@ communication between fibers.
 
 Note that Fibers makes use of some Guile 2.1/2.2-specific features and
 is not available for Guile 2.0.")
-     (home-page "https://github.com/wingo/fibers")
-     (properties '((upstream-name . "fibers")))
-     (license license:lgpl3+))))
+    (home-page "https://github.com/wingo/fibers")
+    (properties '((upstream-name . "fibers")))
+    (license license:lgpl3+)))
 
 (define-public guile-fibers
   (package
@@ -4009,7 +3972,7 @@ over, or update a value in arbitrary data structures.")
 (define-public guile-xapian
   (package
     (name "guile-xapian")
-    (version "0.1.0")
+    (version "0.2.0")
     (home-page "https://git.systemreboot.net/guile-xapian")
     (source
      (origin
@@ -4019,14 +3982,7 @@ over, or update a value in arbitrary data structures.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Guile >= 3.0.7 no longer uses libltdl so we need to explicitly add
-        ;; ".libs" so that 'load-extension' finds the '.so' file.
-        '(substitute* "pre-inst-env.in"
-           (("^LD_LIBRARY_PATH=.*$")
-            "LD_LIBRARY_PATH=\"$abs_top_builddir/.libs\"\n")))))
+         "140cwzpzk4y16ajxrg5zd2d7q60f5ivx5jk8w1h0qfjq2mp14sh7"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 946cd9aba4..d4e43feb06 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 Evgeny Pisemsky <evgeny@pisemsky.com>
@@ -13,6 +13,7 @@
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Marcel Kupiec <formbi@protonmail.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -113,7 +114,7 @@ sets, and tools to deal with register databases.")
 (define-public hwinfo
   (package
     (name "hwinfo")
-    (version "21.80")
+    (version "21.81")
     (home-page "https://github.com/openSUSE/hwinfo")
     (source
      (origin
@@ -124,14 +125,14 @@ sets, and tools to deal with register databases.")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07058vjqdcd3la8y4b92f7fvcqxvmw1p0q4lg5kcn85pvbbg52ag"))
+        (base32 "0iyx1fb66s6b5ai4agw91nvl9wwk7z8g6y475vry3wv80dngzc43"))
        (modules
         '((guix build utils)))
        (snippet
         `(begin
            ;; Remove git2log program file.
            (delete-file "git2log")
-           ;; Remove variables that depends on git2log.
+           ;; Remove variables that depend on git2log.
            (substitute* "Makefile"
              (("GIT2LOG.*\\:=.*$") "")
              (("GITDEPS.*\\:=.*$") "")
@@ -141,7 +142,7 @@ sets, and tools to deal with register databases.")
              (lambda (port)
                (format port ,version)))))))
     (build-system gnu-build-system)
-    (outputs '("out" "dev" "doc"))
+    (outputs '("out" "lib" "doc"))
     (arguments
      `(#:tests? #f                      ; no test-suite available
        #:phases
@@ -149,10 +150,10 @@ sets, and tools to deal with register databases.")
          (add-after 'unpack 'patch
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (dev (assoc-ref outputs "dev"))
+                    (lib (assoc-ref outputs "lib"))
                     (doc (assoc-ref outputs "doc"))
-                    (incl-dir (string-append dev "/include"))
-                    (lib-dir (string-append dev "/lib"))
+                    (incl-dir (string-append lib "/include"))
+                    (lib-dir (string-append lib "/lib"))
                     (sbin-dir (string-append out "/sbin"))
                     (share-dir (string-append out "/share"))
                     (doc-dir (string-append doc "/share/doc")))
@@ -172,16 +173,16 @@ sets, and tools to deal with register databases.")
                  (("/usr/sbin") sbin-dir)
                  (("/usr/share") share-dir)
                  (("\\$\\(DESTDIR\\)/sbin ") ""))
-               ;; Add output "dev" to the run-path.
+               ;; Add the "lib" output to the run-path.
                (substitute* "Makefile.common"
                  (("-Lsrc")
                   (string-append "-Lsrc " "-Wl,-rpath=" lib-dir)))
                ;; Correct program name of the lexical analyzer.
                (substitute* "src/isdn/cdb/Makefile"
                  (("lex isdn_cdb.lex") "flex isdn_cdb.lex"))
-               ;; Patch pkgconfig file to point to output "dev".
+               ;; Patch pkg-config file to point to the "lib" output.
                (substitute* "hwinfo.pc.in"
-                 (("/usr") dev)))))
+                 (("/usr") lib)))))
          (delete 'configure)
          (replace 'build
            (lambda _
@@ -270,14 +271,14 @@ RGB animations.")
 (define-public ddcutil
   (package
     (name "ddcutil")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.ddcutil.com/tarballs/"
                            "ddcutil-" version ".tar.gz"))
        (sha256
-        (base32 "0fp7ffjn21p0bsc5b1ipf3dbpzwn9g6j5dpnwdnca052ifzk2w7i"))))
+        (base32 "18fbd45h2r3r702dvmlmyrwgs3ymr4mhm4f12lgv9jqb5csalbw2"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
@@ -314,7 +315,7 @@ calibrated, and restored when the calibration is applied.")
 (define-public ddcui
   (package
     (name "ddcui")
-    (version "0.1.2")
+    (version "0.2.1")
     (source
      (origin
        (method git-fetch)
@@ -323,7 +324,7 @@ calibrated, and restored when the calibration is applied.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0myma1zw6dlygv3xbin662d91zcnwss10syf12q2fppkrd8qdgqf"))))
+        (base32 "0a9xfv80dpimx9wi9igjbbfydyfsgnbk6dv1plhjzyp2a9shdibb"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; No test suite
@@ -375,6 +376,43 @@ through the Display Data Channel Command Interface (@dfn{DDC/CI}) protocol.")
 human-readable format and checks if it conforms to the standards.")
       (license license:expat))))
 
+(define-public h-client
+  (let ((commit "63ff4a3bf9c3c3b6297091e08192d34991465431")
+        (revision "0"))
+    (package
+      (name "h-client")
+      (version (git-version "0.0a0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               ;; Use this Python 3 fork until the changes have been reviewed
+               ;; and integrated into the official Savannah repository (in
+               ;; progress).
+               (url "https://git.sr.ht/~apteryx/h-client")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0c6s96a1zmsnn7bnfhm790c1fr8sid0zdyh9mwig4y6ffn83czh5"))))
+      (build-system python-build-system)
+      (inputs
+       (list gdk-pixbuf
+             gtk+
+             pciutils
+             python-pycurl
+             python-pygobject
+             usbutils))
+      (synopsis "Graphical client for the h-node hardware database project")
+      (description
+       "The h-node project (https://www.h-node.org) aims to build a database of
+hardware that works with fully free operating systems.  h-client is a GTK+
+graphical client that is able to retrieves information on the hardware inside
+the computer it's running on, and on peripherals connected to it, and helps
+you submit that information to the h-node project along with whether the
+hardware works with a fully free operating system or not.")
+      (home-page "https://savannah.nongnu.org/projects/h-source/")
+      (license license:gpl3+))))
+
 (define-public headsetcontrol
   (package
     (name "headsetcontrol")
diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 20f3cbfe7b..3f3c364272 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -34,7 +34,7 @@
 (define-public hexedit
   (package
     (name "hexedit")
-    (version "1.5")
+    (version "1.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -43,7 +43,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1sfa4i374n1xrz2ivvzcd8jzc296ly11x1713s4bplvszcqpw6dv"))))
+                "00l8vazbjzdg09azp6w3nzq4rl7qyh06i65dh621r6zaprp0z23w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -57,8 +57,7 @@
                 (string-append "\"" (assoc-ref inputs "man-db") "/bin/man\""))
                (("\"hexedit\"")
                 (string-append "\"" (assoc-ref outputs "out")
-                               "/share/man/man1/hexedit.1.gz\"")))
-             #t)))))
+                               "/share/man/man1/hexedit.1.gz\""))))))))
     (native-inputs
      (list autoconf automake))
     (inputs
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 2f82524afd..5a13ce56b3 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -9,7 +9,7 @@
 ;;; 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, 2022 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
@@ -511,15 +511,18 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t
 (define-public jpegoptim
   (package
    (name "jpegoptim")
-   (version "1.4.6")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "http://www.kokkonen.net/tjko/src/jpegoptim-"
-                                version ".tar.gz"))
-            (sha256 (base32
-                     "1dss7907fclfl8zsw0bl4qcw0hhz6fqgi3867w0jyfm3q9jfpcc8"))))
+   (version "1.4.7")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/tjko/jpegoptim")
+            (commit (string-append "v" version))))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32 "06f6d08xvmsiki4mc1qs985gsjqmsxx793a93b72y25q84wbg9x9"))))
    (build-system gnu-build-system)
-   (inputs `(("libjpeg" ,libjpeg-turbo)))
+   (inputs (list libjpeg-turbo))
    (arguments
     '(#:tests? #f))                     ; no tests
    (synopsis "Optimize JPEG images")
diff --git a/gnu/packages/iso-codes.scm b/gnu/packages/iso-codes.scm
index c34911fe9b..f8775c5eaa 100644
--- a/gnu/packages/iso-codes.scm
+++ b/gnu/packages/iso-codes.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +29,9 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python))
 
-(define-public iso-codes
+(define-public iso-codes/official
+  ;; This package variant is intended for ‘external’ use, such as users running
+  ;; ‘guix install’, where any deviation from ISO gospel might be harmful.
   (package
     (name "iso-codes")
     (version "4.5.0")
@@ -77,6 +79,25 @@ changes in the ISO standard and will not work with outdated
 information.")
     (license license:gpl2+)))           ; some bits use the lgpl2
 
+(define-public iso-codes
+  ;; This package should be used universally within Guix, e.g., as an input to
+  ;; other Guix packages or in the Guix System installer's country selector.
+  (hidden-package
+   (package
+     (inherit iso-codes/official)
+     (source
+      (origin
+        (inherit (package-source iso-codes/official))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (substitute* (find-files "." "\\.po$")
+              (("#.*Name for TWN,.*") "")
+              (("^msgid \"Taiwan, .*") "# Guix doesn't use "))
+            (substitute* "data/iso_3166-1.json"
+              (("(Taiwan), [^\"]*" _ name) name))))))
+     (synopsis "Various ISO standards as used by GNU@tie{}Guix"))))
+
 (define-public python-iso639
   (package
     (name "python-iso639")
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 8ab8c46cd3..028b5c4391 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -837,6 +837,12 @@ and vice versa.")
        `(#:phases
          (modify-phases
              %standard-phases
+           (add-after 'unpack 'remove-build-dates
+             ;; Avoid embedding build date for reproducible builds
+             (lambda _
+               (substitute*
+                   "build.properties"
+                 (("..implementation.date.") ""))))
            (replace 'check
              (lambda* (#:key tests? inputs native-inputs
                        #:allow-other-keys)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9b4dbe4daa..9c3ba1f7aa 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -62,6 +62,7 @@
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;; Copyright © 2022 Rene Saavedra <nanuui@protonmail.com>
 
 ;;;
 ;;; This file is part of GNU Guix.
@@ -111,6 +112,7 @@
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages gperf)
@@ -9226,3 +9228,41 @@ older system-wide @file{/sys} interface.")
      "This tool turns @command{ldd} into a tree and explains how shared
 libraries are found or why they cannot be located.")
     (license license:expat)))
+
+(define-public touchegg
+  (package
+    (name "touchegg")
+    (version "2.0.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JoseExposito/touchegg")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0shvslz0c8nqx5f988z55qjc9xw0in9rb7b19r6vr1f7cdkqb6yr"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; No tests exist
+       #:configure-flags
+       (list "-DUSE_SYSTEMD=OFF"))) ; No systemd
+    (native-inputs
+     (list
+      pkg-config))
+    (inputs
+     (list
+      cairo
+      gtk+
+      libgudev
+      libinput
+      libxrandr
+      libxtst
+      pugixml))
+    (home-page "https://github.com/JoseExposito/touchegg")
+    (synopsis "Multitouch gesture recognizer")
+    (description
+     "Touchégg is an application that runs in the background and transform the
+gestures you make on your touchpad or touchscreen into visible actions in your
+desktop.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index d3b16f2759..88b582d85b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -541,10 +541,10 @@ output), and Binutils.")
               ("libc-static" ,glibc "static")))))
 
 (define %llvm-monorepo-hashes
-  '(("14.0.3" . "0makhpbrg46m2gi8wyp5h21ln4mgilahh3clk4d1b2ln2ck3v7m8")))
+  '(("14.0.4" . "1y4yvx749cn3gkpc9kf48xbd2wc2lry8x5zdpk3sbrkqs8vrji4q")))
 
 (define %llvm-patches
-  '(("14.0.3" . ("clang-14.0-libc-search-path.patch"))))
+  '(("14.0.4" . ("clang-14.0-libc-search-path.patch"))))
 
 (define (llvm-monorepo version)
   (origin
@@ -559,7 +559,7 @@ output), and Binutils.")
 (define-public llvm-14
   (package
     (name "llvm")
-    (version "14.0.3")
+    (version "14.0.4")
     (source (llvm-monorepo version))
     (build-system cmake-build-system)
     (outputs '("out" "opt-viewer"))
@@ -647,7 +647,7 @@ of programming tools as well as libraries with equivalent functionality.")
                                            (package-version llvm-14)))
                             (sha256
                              (base32
-                              "188hh6l956gkl6hgjzzdraj5jp538zhhhllxvy23gml6slrmbj7j"))))))
+                              "1vcgmvh0r28a1z87p3y4h2326zi8liq7l9mcfvmx22x9bmbcpfn8"))))))
     (package
       (inherit template)
       (arguments
@@ -1176,7 +1176,7 @@ of programming tools as well as libraries with equivalent functionality.")
 (define-public lld-14
   (package
     (name "lld")
-    (version "14.0.3")
+    (version "14.0.4")
     (source (llvm-monorepo version))
     (build-system cmake-build-system)
     (inputs
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index f1af69faab..53c7785020 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -46,6 +46,7 @@
 ;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2022 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li>
+;;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -555,7 +556,7 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "2.2.5")
+    (version "2.2.6")
     (source (origin
              (method url-fetch)
              (uri (list
@@ -565,7 +566,7 @@ aliasing facilities to work just as they would on normal mail.")
                                    version ".tar.gz")))
              (sha256
               (base32
-               "0ivyfld4a4sfzsdiaajqiarvfx4i85g1smbb2b5dqjkrb48pi2zz"))
+               "1lw8111wbsw4hkvrlfsd2cf2l1j25vqwbzys07z0ding2wsxk8pz"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -1157,7 +1158,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
 (define-public mu
   (package
     (name "mu")
-    (version "1.6.10")
+    (version "1.6.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/djcb/mu/releases/"
@@ -1165,7 +1166,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
                                   "mu-" version ".tar.xz"))
               (sha256
                (base32
-                "1dh0x4lqnjflb0k8fybr5clqjxv35scf055g1590pr5znam29hhb"))))
+                "13gchks9znyw0axw1wlks7f7h4442rfagmj7kx0jm3qhvi0b5sk0"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2887,6 +2888,14 @@ powerful user customization features.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'remove-build-timestamps
+           ;; Avoid embedding timestamps for reproducible build
+           (lambda _
+                  (substitute*
+                      (list
+                       "devtools/bin/configure.sh"
+                       "cf/sh/makeinfo.sh")
+                    (("on `date`") ""))))
          (add-before 'build 'replace-/bin/sh
            (lambda _
              (substitute*
@@ -3943,8 +3952,8 @@ It is a replacement for the @command{urlview} program.")
     (license license:gpl2+)))
 
 (define-public mumi
-  (let ((commit "f5232c49fe8a3b127c96f7b502775f16aebf3033")
-        (revision "7"))
+  (let ((commit "9b28ec7d152623692877bcb767e5c654e59e57ed")
+        (revision "8"))
     (package
       (name "mumi")
       (version (git-version "0.0.1" revision commit))
@@ -3956,7 +3965,7 @@ It is a replacement for the @command{urlview} program.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1dc4m7l9mmi7lm0cfmyf5yg6bkpirsvmfq347sf1ch1svg5r7y9n"))))
+                  "1njnzqv4h2msfa86qfbvm54vfdwlikwzs4134fcffcf4l86bs9fl"))))
       (build-system gnu-build-system)
       (arguments
        `(#:modules ((guix build gnu-build-system)
@@ -4069,7 +4078,7 @@ Git and exports them in maildir format or to an MDA through a pipe.")
 (define-public public-inbox
   (package
     (name "public-inbox")
-    (version "1.6.1")
+    (version "1.8.0")
     (source
      (origin (method git-fetch)
              (uri (git-reference
@@ -4077,19 +4086,20 @@ Git and exports them in maildir format or to an MDA through a pipe.")
                    (commit (string-append "v" version))))
              (sha256
               (base32
-               "0mlwnp5knr7rk9kv8grlh342wsq2193m22zs83cjn9p7x9r2x5f9"))
+               "0xni1l54v1z3p0zb52807maay0yqabp8jgf5iras5zmhgjyk3swz"))
              (file-name (git-file-name name version))))
     (build-system perl-build-system)
     (arguments
-     '(#:phases
+     '(#:tests? #f
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'qualify-paths
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              ;; Use absolute paths for 'xapian-compact'.
-             (let ((xapian-compact (which "xapian-compact")))
-               (substitute* "script/public-inbox-compact"
-                 (("xapian-compact") xapian-compact)))
-             #t))
+             (substitute* "lib/PublicInbox/Xapcmd.pm"
+               (("'xapian-compact'")
+                (format #f "'~a'" (search-input-file inputs
+                                                     "/bin/xapian-compact"))))))
          (add-before 'check 'pre-check
            (lambda _
              (substitute* "t/spawn.t"
@@ -4100,8 +4110,7 @@ Git and exports them in maildir format or to an MDA through a pipe.")
              ;; XXX: This test fails due to zombie process is not reaped by
              ;; the builder.
              (substitute* "t/httpd-unix.t"
-               (("^SKIP: \\{") "SKIP: { skip('Guix');"))
-             #t))
+               (("^SKIP: \\{") "SKIP: { skip('Guix');"))))
          (add-after 'install 'wrap-programs
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -4115,15 +4124,16 @@ Git and exports them in maildir format or to an MDA through a pipe.")
                     ;; 'git' is invoked in various files of the PublicInbox
                     ;; perl module.
                     `("PATH" ":" prefix
-                      (,(dirname (search-input-file inputs "/bin/git"))))))
-                (find-files (string-append out "/bin"))))
-             #t)))))
+                      (,(dirname (search-input-file inputs "/bin/git"))
+                       ,(dirname (search-input-file inputs "/bin/curl"))))))
+                (find-files (string-append out "/bin")))))))))
     (native-inputs
-     (list xapian
-           ;; For testing.
+     (list ;; For testing.
            lsof openssl))
     (inputs
-     (list git
+     (list bash-minimal
+           curl
+           git
            perl-dbd-sqlite
            perl-dbi
            perl-email-address-xs
@@ -4135,6 +4145,7 @@ Git and exports them in maildir format or to an MDA through a pipe.")
            perl-plack-middleware-reverseproxy
            perl-plack
            perl-search-xapian
+           perl-socket-msghdr
            perl-timedate
            perl-uri-escape
            perl-inline-c
@@ -4145,7 +4156,8 @@ Git and exports them in maildir format or to an MDA through a pipe.")
            ;; ("highlight" ,highlight)
            ;; For testing.
            perl-ipc-run
-           perl-xml-feed))
+           perl-xml-feed
+           xapian))
     (home-page "https://public-inbox.org/README.html")
     (synopsis "Archive mailing lists in Git repositories")
     (description
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index e2eed7ecb3..0ad14ba36e 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1724,7 +1724,18 @@ HDF5 file is encoded according to the HDF File Format Specification.")
         (base32
          "14ddy2xnb6sgp4hiax9v5sv4pr4l4dd4ps76nfha3nrpr1ikhcqm"))))
     (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ; Tests require googletest *sources*
+    (arguments `(#:tests? #f ; Tests require googletest *sources*
+                 #:phases
+                 (modify-phases %standard-phases
+                   (add-after 'unpack 'set-man-page-date
+                     (lambda _
+                       (substitute* "itpp-config.1.cmake.in"
+                         ((".PACKAGE_DATE.") "2012-04-18"))))
+                   (add-before 'build 'set-force-source-date
+                     ;; for reproducible dates, texlive needs this to respect respect
+                     ;; SOURCE_DATE_EPOCH
+                     (lambda _
+                       (setenv "FORCE_SOURCE_DATE" "1"))))))
     (inputs (list lapack fftw))
     ;; FIXME: Even though the fonts are available dvips complains:
     ;; "Font cmmi10 not found; characters will be left blank."
@@ -3822,14 +3833,14 @@ sparse system of linear equations A x = b using Gaussian elimination.")
 (define-public ruby-asciimath
   (package
     (name "ruby-asciimath")
-    (version "2.0.1")
+    (version "2.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "asciimath" version))
        (sha256
         (base32
-         "1aapydwwkydbwgz07n7ma3a5jy9n3v0shy6q6j8mi4wr3crhx45a"))))
+         "1fy2jrn3gr7cl33qydp3pwyfilcmb4m4z6hfhnvydzg8r3srp36j"))))
     (build-system ruby-build-system)
     (native-inputs
      (list ruby-nokogiri ruby-rspec))
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 9ac999b5fd..2ba6d8ba1f 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -211,7 +211,7 @@ homeserver and generally help bootstrap the ecosystem.")
      (list python-aiofiles
            python-aiohttp
            python-aiohttp-socks
-           python-atomicwrites-1.4
+           python-atomicwrites
            python-cachetools
            python-future
            python-h11
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 17a58fbf61..2823297e3f 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -98,14 +98,14 @@ extensive examples, including parsers for the Javascript and C99 languages.")
 (define-public nyacc
   (package
     (inherit nyacc-0.99)
-    (version "1.06.5")
+    (version "1.07.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/nyacc/nyacc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1fbzz9bm4mkz4j40l2z02zjlbqj82dmv2ayz83zl3j8gj6z3lpdg"))
+                "01qb6h6bk684z8xda5d71q5f5l2z3q9jjz36if3jbpjc7b8dxjap"))
               (modules '((guix build utils)))
               (snippet
                '(substitute* "configure"
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 5dc49503ec..d361034721 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2063,45 +2064,10 @@ is also scriptable and extensible via Guile.")
     (home-page "https://www.gnu.org/software/freetalk/")
     (license license:gpl3+)))
 
-(define-public libmesode
-  (package
-    (name "libmesode")
-    (version "0.10.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/profanity-im/libmesode")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1bxnkhrypgv41qyy1n545kcggmlw1hvxnhwihijhhcf2pxd2s654"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags (list "--disable-static")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-make
-           (lambda _
-             (substitute* "Makefile.am"
-               (("'\\^xmpp_'") "'.'"))
-             #t)))))
-    (inputs
-     (list expat openssl))
-    (native-inputs
-     (list autoconf automake libtool pkg-config))
-    (synopsis "C library for writing XMPP clients")
-    (description "Libmesode is a fork of libstrophe for use with Profanity
-XMPP Client.  In particular, libmesode provides extra TLS functionality such as
-manual SSL certificate verification.")
-    (home-page "https://github.com/profanity/libmesode")
-    ;; Dual-licensed.
-    (license (list license:gpl3+ license:x11))))
-
 (define-public libstrophe
   (package
     (name "libstrophe")
-    (version "0.10.1")
+    (version "0.12.0")
     (source
      (origin
        (method git-fetch)
@@ -2110,17 +2076,23 @@ manual SSL certificate verification.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11d341avsfr0z4lq15cy5dkmff6qpy91wkgzdpfdy31l27pa1g79"))))
+        (base32 "1apply301lxyjax2677bd5mc0a3233nm5qb7fiqpawq2n7vh17v0"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags (list "--disable-static")
+     (list #:configure-flags '(list "--disable-static")
        #:phases
-       (modify-phases %standard-phases
+       #~(modify-phases %standard-phases
          (add-after 'unpack 'patch-make
            (lambda _
              (substitute* "Makefile.am"
                (("'\\^xmpp_'") "'.'"))
-             #t)))))
+             #t))
+         (add-after 'install-licence-files 'install-extra-licence-files
+           (lambda _
+            (let ((license-directory (string-append #$output
+                                                    "/share/doc/"
+                                                    #$name "-" #$version "/")))
+              (install-file "MIT-LICENSE.txt" license-directory)))))))
     (inputs
      (list expat openssl))
     (native-inputs
@@ -2129,23 +2101,23 @@ manual SSL certificate verification.")
     (description "Libstrophe is a minimal XMPP library written in C.  It has
 almost no external dependencies, only an XML parsing library (expat or libxml
 are both supported).")
-    (home-page "http://strophe.im/libstrophe")
+    (home-page "https://strophe.im/libstrophe/")
     ;; Dual-licensed.
     (license (list license:gpl3+ license:x11))))
 
 (define-public profanity
   (package
     (name "profanity")
-    (version "0.11.1")
+    (version "0.12.1")
     (source
      (origin
        (method url-fetch)
        (uri
-        (string-append "https://profanity-im.github.io/profanity-"
+        (string-append "https://profanity-im.github.io/tarballs/profanity-"
                        version ".tar.gz"))
        (sha256
         (base32
-         "0idx0a5g077a57q462w01m0h8i4vyvabzlj87p8527wpqbv4s6vg"))))
+         "0vihmlzxr6n3y6v0vdzzxh5p1i09p0hx6sd1b2pnpcgkgcg4hi73"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -2167,26 +2139,26 @@ are both supported).")
            libtool
            pkg-config))
     (inputs
-     `(("curl" ,curl)
-       ("expat" ,expat)
-       ("glib" ,glib)
-       ("gpgme" ,gpgme)
-       ("gtk+" ,gtk+-2)
-       ("libgcrypt" ,libgcrypt)
-       ("libmesode" ,libmesode)
-       ("libnotify" ,libnotify)
-       ("libotr" ,libotr)
-       ("libsignal-protocol-c" ,libsignal-protocol-c)
-       ;; ("libxss" ,libxss)
-       ("ncurses" ,ncurses)
-       ("openssl" ,openssl)
-       ("python" ,python-wrapper)
-       ("readline" ,readline)
-       ("sqlite" ,sqlite)))
+     (list curl
+           expat
+           glib
+           gpgme
+           gtk+-2
+           libgcrypt
+           libnotify
+           libotr
+           libsignal-protocol-c
+           libstrophe
+           ncurses
+           openssl
+           python-wrapper
+           readline
+           sqlite))
     (synopsis "Console-based XMPP client")
     (description "Profanity is a console based XMPP client written in C
 using ncurses and libmesode, inspired by Irssi.")
     (home-page "https://profanity-im.github.io")
+    (properties `((release-monitoring-url . ,home-page)))
     (license license:gpl3+)))
 
 (define-public libircclient
diff --git a/gnu/packages/minetest.scm b/gnu/packages/minetest.scm
index c431942473..fd0dbec6a2 100644
--- a/gnu/packages/minetest.scm
+++ b/gnu/packages/minetest.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Trevor Hass <thass@okstate.edu>
-;;; Copyright © 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2020, 2021, 2022 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +26,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages games)
@@ -41,6 +42,7 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
@@ -51,7 +53,7 @@
 (define-public minetest
   (package
     (name "minetest")
-    (version "5.4.1")
+    (version "5.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -60,11 +62,8 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "062ilb7s377q3hwfhl8q06vvcw2raydz5ljzlzwy2dmyzmdcndb8"))
+                "042v71gkk0xfixcsn82az2fri0n28fgf9d2zcz31bijqmg5q7imj"))
               (modules '((guix build utils)))
-              (patches
-               (search-patches
-                "minetest-add-MINETEST_MOD_PATH.patch"))
               (snippet
                '(begin
                   ;; Delete bundled libraries.
@@ -72,42 +71,49 @@
                   #t))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-DRUN_IN_PLACE=0"
-             "-DENABLE_FREETYPE=1"
-             "-DENABLE_GETTEXT=1"
-             "-DENABLE_SYSTEM_JSONCPP=TRUE"
-             (string-append "-DIRRLICHT_INCLUDE_DIR="
-                            (assoc-ref %build-inputs "irrlicht")
-                            "/include/irrlicht")
-             (string-append "-DCURL_INCLUDE_DIR="
-                            (assoc-ref %build-inputs "curl")
-                            "/include/curl"))
+     (list
+      #:configure-flags
+      #~(list "-DRUN_IN_PLACE=0"
+              "-DENABLE_FREETYPE=1"
+              "-DENABLE_GETTEXT=1"
+              "-DENABLE_SYSTEM_JSONCPP=TRUE"
+              (string-append "-DIRRLICHTMT_INCLUDE_DIR="
+                             (search-input-directory %build-inputs
+                                                     "include/irrlichtmt"))
+              (string-append "-DCURL_INCLUDE_DIR="
+                             (search-input-directory %build-inputs
+                                                     "include/curl"))
+              (string-append "-DZSTD_INCLUDE_DIR="
+                             (dirname
+                              (search-input-file %build-inputs
+                                                 "include/zstd.h")))
+              (string-append "-DZSTD_LIBRARY="
+                             (search-input-file %build-inputs
+                                                "lib/libzstd.so")))
        #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/filesys.cpp"
-               ;; Use store-path for "rm" instead of non-existing FHS path.
-               (("\"/bin/rm\"")
-                (string-append "\"" (assoc-ref inputs "coreutils") "/bin/rm\"")))
-             (substitute* "src/CMakeLists.txt"
-               ;; Let minetest binary remain in build directory.
-               (("set\\(EXECUTABLE_OUTPUT_PATH .*\\)") ""))
-             (substitute* "src/unittest/test_servermodmanager.cpp"
-               ;; do no override MINETEST_SUBGAME_PATH
-               (("(un)?setenv\\(\"MINETEST_SUBGAME_PATH\".*\\);")
-                "(void)0;"))
-             (setenv "MINETEST_SUBGAME_PATH"
-                     (string-append (getcwd) "/games")) ; for check
-             #t))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             ;; Thanks to our substitutions, the tests should also run
-             ;; when invoked on the target outside of `guix build'.
-             (when tests?
-               (setenv "HOME" "/tmp")
-               (invoke "src/minetest" "--run-unittests")))))))
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'patch-sources
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "src/filesys.cpp"
+                 ;; Use store-path for "rm" instead of non-existing FHS path.
+                 (("\"/bin/rm\"")
+                  (format #f "~s" (search-input-file inputs "bin/rm"))))
+               (substitute* "src/CMakeLists.txt"
+                 ;; Let minetest binary remain in build directory.
+                 (("set\\(EXECUTABLE_OUTPUT_PATH .*\\)") ""))
+               (substitute* "src/unittest/test_servermodmanager.cpp"
+                 ;; do no override MINETEST_SUBGAME_PATH
+                 (("(un)?setenv\\(\"MINETEST_SUBGAME_PATH\".*\\);")
+                  "(void)0;"))
+               (setenv "MINETEST_SUBGAME_PATH" ; for check
+                       (string-append (getcwd) "/games"))))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               ;; Thanks to our substitutions, the tests should also run
+               ;; when invoked on the target outside of `guix build'.
+               (when tests?
+                 (setenv "HOME" "/tmp")
+                 (invoke "src/minetest" "--run-unittests")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "MINETEST_SUBGAME_PATH")
@@ -118,23 +124,24 @@
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("coreutils" ,coreutils)
-       ("curl" ,curl)
-       ("freetype" ,freetype)
-       ("gettext" ,gettext-minimal)
-       ("gmp" ,gmp)
-       ("irrlicht" ,irrlicht)
-       ("jsoncpp" ,jsoncpp)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libogg" ,libogg)
-       ("libvorbis" ,libvorbis)
-       ("libxxf86vm" ,libxxf86vm)
-       ("luajit" ,luajit)
-       ("mesa" ,mesa)
-       ("ncurses" ,ncurses)
-       ("openal" ,openal)
-       ("sqlite" ,sqlite)))
+     (list coreutils
+           curl
+           freetype
+           gettext-minimal
+           gmp
+           irrlicht-for-minetest
+           jsoncpp
+           libjpeg-turbo
+           libpng
+           libogg
+           libvorbis
+           libxxf86vm
+           luajit
+           mesa
+           ncurses
+           openal
+           sqlite
+           `(,zstd "lib")))
     (propagated-inputs
      (list minetest-data))
     (synopsis "Infinite-world block sandbox game")
@@ -159,22 +166,11 @@ in different ways.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0i45lbnikvgj9kxdp0yphpjjwjcgp4ibn49xkj78j5ic1s9n8jd4"))))
-    (build-system trivial-build-system)
-    (native-inputs
-     `(("source" ,source)))
+                "12cpaiww148szvnrc8r8cffwvl33smnrl7k29sh401yv0pbqi3j8"))))
+    (build-system copy-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder (begin
-                   (use-modules (guix build utils))
-                   (let ((install-dir (string-append
-                                       %output
-                                       "/share/minetest/games/minetest_game")))
-                     (mkdir-p install-dir)
-                     (copy-recursively
-                      (assoc-ref %build-inputs "source")
-                      install-dir)
-                     #t))))
+     (list #:install-plan
+           #~'(("." "/share/minetest/games/minetest_game"))))
     (synopsis "Main game data for the Minetest game engine")
     (description
      "Game data for the Minetest infinite-world block sandbox game.")
@@ -208,25 +204,65 @@ as swords and tools made of different materials.  It also adds copper rails.")
     (license license:zlib)
     (properties `((upstream-name . "Calinou/moreores")))))
 
+(define-public minetest-sound-api-core
+  (package
+    (name "minetest-sound-api-core")
+    ;; No tags, no releases. The author intended to let users use it as a
+    ;; submodules for other projects.
+    ;; https://github.com/mt-mods/basic_materials/issues/4
+    (version "2022-02-27")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mt-mods/sound_api_core")
+             (commit "6956e49e775f325116f8e0c643899c089c691e1e")))
+       (sha256
+        (base32 "1ys6g2skhkksa4cx9agxhsibj5js8z4y2q1ngis9ddr38p756pcy"))
+       (file-name (git-file-name name version))
+       (snippet
+        '(begin
+           (call-with-output-file "mod.conf"
+             (lambda (port)
+               (format port "\
+name = sound_api_core")))))))
+    (build-system minetest-mod-build-system)
+    (propagated-inputs '())
+    (home-page "https://github.com/mt-mods/sound_api_core")
+    (synopsis "Core for game agnostic sounds")
+    (description
+     "This library can be used to get some specific sounds, whatever the game.")
+    (license license:expat)))
+
 (define-public minetest-basic-materials
   (package
     (name "minetest-basic-materials")
     ;; Upstream uses dates as version numbers.
-    (version "2021-12-26")
+    (version "2022-03-28")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mt-mods/basic_materials")
-             (commit "0893974b054a2191b5e2d5447ee4fc73f9c35f6a")))
+             (commit "9d55f9916d20779ecbf93c7e95dae8adebd2079b")))
        (sha256
-        (base32 "0p4nnfsjv7284zmgr781zkyjbp049wp1jy1l7n585zzj181ns57p"))
-       (file-name (git-file-name name version))))
+        (base32 "0nzx5mdw26mk2by14hxyvbqckgz8k67vlh2ch30skssvh4984bjw"))
+       (file-name (git-file-name name version))
+       (snippet
+        '(begin
+           (use-modules (guix build utils))
+           (substitute* "mod.conf"
+             (("optional_depends =")
+              "depends = sound_api_core
+optional_depends ="))
+           (substitute* "nodes.lua"
+             (("basic_materials.modpath \\.\\. \"/sound_api_core/init.lua\"")
+              "minetest.get_modpath(\"sound_api_core\") .. \"/init.lua\""))))))
     (build-system minetest-mod-build-system)
     (propagated-inputs
      ;; basic_materials:silver_wire cannot be crafted without
      ;; moreores:silver_ingot.
-     (list minetest-moreores))
+     (list minetest-moreores minetest-sound-api-core))
     (home-page (minetest-topic 21000))
     (synopsis "Some \"basic\" materials and items for other Minetest mods to use")
     (description
@@ -299,15 +335,15 @@ special items, intending to make an interesting adventure.")
     (name "minetest-homedecor-modpack")
     ;; Upstream doesn't tag releases, so use the release title from
     ;; ContentDB as version.
-    (version "2021-12-26")
+    (version "2022-05-18")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mt-mods/homedecor_modpack")
-             (commit "a8fceb249d63f081855cfba1fbd6e2aa86365224")))
+             (commit "5ffdc26673169e05492141709fbb18e8fb6e5937")))
        (sha256
-        (base32 "1lqcycgkykd86853jjr50m1qv2as2dlqf52gbds4mhiafslnp9mi"))
+        (base32 "03pf254r3hnznklw7lf3q4rzqg0a1y4c9rjjhzssf1q7ai5pdrkn"))
        (file-name (git-file-name name version))))
     (build-system minetest-mod-build-system)
     (propagated-inputs
@@ -326,8 +362,8 @@ and a variety of other stuff.")
 
 (define-public minetest-mesecons
   ;; The release on ContentDB does not have its own version number.
-  (let ((commit "db5879706d04d3480bc4863ce0c03fa73e5f10c7")
-        (revision "0"))
+  (let ((commit "27c3c515b49af91c1dbc427f31a820722854eb24")
+        (revision "63"))
     (package
       (name "minetest-mesecons")
       (version (git-version "1.2.1" revision commit))
@@ -338,7 +374,7 @@ and a variety of other stuff.")
                (url "https://github.com/minetest-mods/mesecons")
                (commit commit)))
          (sha256
-          (base32 "04m9s9l3frw1lgki41hgvjsw2zkrvfv0sy750b6j12arzb3lv645"))
+          (base32 "1l0kwjj8ns8hv6z520g6ph5swknar336dbi5qr3dfsy18ydk1j92"))
          (file-name (git-file-name name version))))
       (build-system minetest-mod-build-system)
       (home-page "https://mesecons.net")
@@ -353,26 +389,22 @@ pressure plates and note blocks.
 Mesecons has a similar goal to Redstone in Minecraft, but works in its own way,
 with different rules and mechanics.")
       ;; LGPL for code, CC-BY-SA for textures.
-      ;; The README.md and COPYING.txt disagree about the "+" in license:lgpl3+.
-      ;; For now, assume README.md is correct.  Upstream has been asked to
-      ;; correct the inconsistency:
-      ;; <https://github.com/minetest-mods/mesecons/issues/575>.
-      (license (list license:lgpl3+ license:cc-by-sa3.0))
+      (license (list license:lgpl3 license:cc-by-sa3.0))
       (properties `((upstream-name . "Jeija/mesecons"))))))
 
 (define-public minetest-mineclone
   (package
     (name "minetest-mineclone")
-    (version "0.71.0")
+    (version "0.75.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://git.minetest.land/Wuzzy/MineClone2")
+                    (url "https://git.minetest.land/MineClone2/MineClone2")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0qm809dqvxc7pa1cr9skmglq9vrbq5hhm4c4m5yi46ldh1v96dgf"))))
+                "10apja8bp8wmrbjlxg3gvrw5bdc8mizcngvnfi2ff790f6bsc5ip"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
@@ -476,15 +508,15 @@ breakers simulate a player punching a node.")
     (name "minetest-technic")
     ;; Upstream doesn't keep version numbers, so use the release
     ;; date on ContentDB instead.
-    (version "2021-09-11")
+    (version "2022-02-06")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/minetest-mods/technic")
-             (commit "140701c99efb60d81bf63c9a9087720b21c414ca")))
+             (commit "d2b68a6bef53e34e166deadd64e02b58bcae59a1")))
        (sha256
-        (base32 "1fkhcv8sg3kxfadc2jnfdw6bxxkkkcczsh4bf62rgwwmv2ky7zrx"))
+        (base32 "0vmi1y39q0x39s9w0hhgi979a4hf6n1ah5jaazjvmjf02pjcvvy1"))
        (file-name (git-file-name name version))))
     (build-system minetest-mod-build-system)
     (propagated-inputs
@@ -651,7 +683,7 @@ track of important locations.")
 (define-public minetest-advtrains
   (package
     (name "minetest-advtrains")
-    (version "2.3.1")
+    (version "2.4.1")
     (source
      (origin
        (method git-fetch)
@@ -659,7 +691,7 @@ track of important locations.")
              (url "https://git.bananach.space/advtrains.git")
              (commit (string-append "release-" version))))
        (sha256
-        (base32 "1ijqlchh269jpvmgmdmdvy3nsnk0bszkvvcqk6vaysvxam695ggw"))
+        (base32 "1q2jj8181pjgsakl28xadv0z4sszq1lb5rpgj070wr0px6mp447p"))
        (file-name (git-file-name name version))))
     (build-system minetest-mod-build-system)
     (home-page "http://advtrains.de/")
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index b98b713b9c..954c12c6f2 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;;
@@ -184,7 +184,7 @@ bind processes, and much more.")
 (define-public openmpi
   (package
     (name "openmpi")
-    (version "4.1.3")
+    (version "4.1.4")
     (source
      (origin
       (method url-fetch)
@@ -192,7 +192,7 @@ bind processes, and much more.")
                           (version-major+minor version)
                           "/downloads/openmpi-" version ".tar.bz2"))
       (sha256
-       (base32 "0fqagib5ic0fb3rbl77z90gjrmyqk2qgyrd4f4w5vdggai6d109x"))
+       (base32 "03ckngrff1cl0l81vfvrfhp99rbgk7s0633kr1l468yibwbjx4cj"))
       (patches (search-patches "openmpi-mtl-priorities.patch"))))
 
     (properties
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 554d70f266..afd7ff40cf 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -47,6 +47,7 @@
 ;;; Copyright © 2022 Sughosha <sughosha@disroot.org>
 ;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -179,6 +180,7 @@
   #:use-module (gnu packages vim)       ;for 'xxd'
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages wm)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
@@ -6738,7 +6740,9 @@ streaming audio server.")
            gst-plugins-ugly
            gstreamer
            gtk+
+           gtksourceview ; undo, redo, multiline text fields
            hicolor-icon-theme
+           keybinder-3.0 ; keybindings outside of GNOME
            librsvg
            libsoup-minimal-2
            python
@@ -6747,9 +6751,11 @@ streaming audio server.")
            python-feedparser
            python-gst
            python-iniconfig
+           python-musicbrainzngs
            python-mutagen
            python-pycairo
            python-pygobject
+           python-pyinotify
            python-pytest
            python-sgmllib3k
            python-toml))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index bfa956149d..19fd3b44fc 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -4161,7 +4161,7 @@ on hub/switched networks.  It is based on @acronym{ARP} packets, it will send
 (define-public putty
   (package
     (name "putty")
-    (version "0.76")
+    (version "0.77")
     (source
      (origin
        (method url-fetch)
@@ -4170,18 +4170,26 @@ on hub/switched networks.  It is based on @acronym{ARP} packets, it will send
                   (string-append "http://www.putty.be/" version
                                  "/putty-" version ".tar.gz")))
        (sha256
-        (base32 "0gvi8phabszqksj2by5jrjmshm7bpirhgavz0dqyz1xaimxdjz2l"))))
-    (build-system gnu-build-system)
+        (base32 "1rgabc447a5aa9h16krpg3x78vh5jf4l6hkbqzr4bz9qabs7d6j1"))))
+    (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'chdir
-           (lambda _
-             (chdir "unix"))))))
+         (replace 'check
+           ;; As ‘documented’ in ./Buildscr and the 0.76 Makefile.in.
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "PUTTY_TESTCRYPT" "./testcrypt")
+               (invoke (string-append "../putty-" ,version
+                                      "/test/cryptsuite.py"))))))))
     (inputs
      (list gtk+))
     (native-inputs
-     (list pkg-config python)) ; for tests
+     (list perl
+           pkg-config
+
+           ;; For tests.
+           python))
     (synopsis "Graphical @acronym{SSH, Secure SHell} and telnet client")
     (description "PuTTY is a graphical text terminal client.  It supports
 @acronym{SSH, Secure SHell}, telnet, and raw socket connections with good
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index ce94557a8c..c8d81fbd22 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -128,7 +128,7 @@
                        (cons sigxfsz common)
                        common))
                (("'/bin/sh'")
-                (string-append "'" (assoc-ref inputs "bash") "/bin/sh'")))
+                (string-append "'"  (search-input-file inputs "/bin/sh") "'")))
 
              ;; Fix hardcoded /usr/bin/env references.
              (substitute* '("test/parallel/test-child-process-default-options.js"
@@ -245,7 +245,8 @@
                                   (search-input-file inpts "/bin/python3")
                                   (raise-exception e)))
                           (lambda ()
-                            (search-input-file inpts "/bin/python"))))
+                            (search-input-file inpts "/bin/python"))
+                          #:unwind? #t))
                       "configure"
                       flags))))
          (add-after 'patch-shebangs 'patch-nested-shebangs
@@ -735,14 +736,14 @@ source files.")
 (define-public node-lts
   (package
     (inherit node)
-    (version "14.18.3")
+    (version "14.19.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nodejs.org/dist/v" version
                                   "/node-v" version ".tar.xz"))
               (sha256
                (base32
-                "026nd6vihjdqz4jn0slg89m8m5vvkvjzgg1aip3dcg9lrm1w8fkq"))
+                "15691j5zhiikyamiwwd7f282g6d9acfhq91nrwx54xya38gmpx2w"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -814,7 +815,9 @@ source files.")
                            "test/parallel/test-dns-lookupService-promises.js"))
 
                ;; These tests require networking.
-               (delete-file "test/parallel/test-https-agent-unref-socket.js")
+               (for-each delete-file
+                         '("test/parallel/test-https-agent-unref-socket.js"
+                           "test/parallel/test-corepack-yarn-install.js"))
 
                ;; This test is timing-sensitive, and fails sporadically on
                ;; slow, busy, or even very fast machines.
@@ -861,7 +864,7 @@ source files.")
      (list ;; Runtime dependencies for binaries used as a bootstrap.
            c-ares-for-node
            brotli
-           icu4c-67
+           icu4c-70
            libuv-for-node
            `(,nghttp2 "lib")
            openssl
@@ -876,7 +879,7 @@ source files.")
      (list bash-minimal
            coreutils
            c-ares-for-node
-           icu4c-67
+           icu4c-70
            libuv-for-node
            llhttp-bootstrap
            brotli
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 5591e08d78..093835d370 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -621,7 +621,7 @@ Software distribution.")
 (define-public ocaml-mccs
   (package
     (name "ocaml-mccs")
-    (version "1.1+13")
+    (version "1.1+14")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -630,7 +630,7 @@ Software distribution.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15slv97jlvbaxj221wp4sjxk4lbdfyj9vcig0jwd4n54v89ksvib"))))
+                "17bvm0jhhs8h3p5sbb65asj53a8sxl634cc0kvcivpams74837zq"))))
     (build-system dune-build-system)
     (propagated-inputs (list ocaml-cudf))
     (home-page "https://www.i3s.unice.fr/~cpjm/misc/")
@@ -1704,7 +1704,7 @@ full_split, cut, rcut, etc..")
 (define dune-bootstrap
   (package
     (name "dune")
-    (version "3.1.1")
+    (version "3.2.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1713,7 +1713,7 @@ full_split, cut, rcut, etc..")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ljv4gnalxq77byic23c8hrjmsqvn87gqj0ijm7rdx4xr1pff1jg"))))
+                "0fa8fkj2piis8b56phl6p77pl1na81krdnmmvyw16hq45zbmm9rk"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f; require odoc
@@ -3490,7 +3490,7 @@ build system and allows external tools to analyse your project easily.")
 (define-public ocaml-cppo
   (package
     (name "ocaml-cppo")
-    (version "1.6.8")
+    (version "1.6.9")
     (source
       (origin
         (method git-fetch)
@@ -3499,7 +3499,7 @@ build system and allows external tools to analyse your project easily.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256 (base32
-                 "0xjb1dnj8lvdcccskrhrakknd9q4vfy5330sjbqpf4h95dsz90k9"))))
+                 "1c8jlr2s0allw1h6czz5q24vn5jsnrrh44j7hjyilzaifm17dlrm"))))
     (build-system dune-build-system)
     (arguments
      `(#:tests? #f))
@@ -4333,9 +4333,7 @@ long and size_t whose sizes depend on the host platform.")
                "0ilzq9qzvwv9rc08cc9wchsx636zp870i7qvqmbigaa2qb812m0z"))))
    (build-system ocaml-build-system)
    (arguments
-    `(#:make-flags
-      (list (string-append "INSTALL_HEADERS = $(wildcard $($(PROJECT).dir)/*.h)"))
-      #:phases
+    `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'make-writable
           (lambda _
@@ -7593,7 +7591,7 @@ convenience functions for vectors and matrices.")
 (define-public ocaml-cairo2
   (package
     (name "ocaml-cairo2")
-    (version "0.6.2")
+    (version "0.6.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -7602,7 +7600,7 @@ convenience functions for vectors and matrices.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04rp5y1rlq1pw592yywhvqd5x7csmyi9ad4f32g99nakb10s4nhx"))))
+                "1m0wh0s0sqjfa3mgq99lwk0dsg0bwxipaz93hq18m0lz5fqxib1m"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "tests"))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 16ad4fe9db..ad3a6db9af 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1820,7 +1820,7 @@ for packaging and deployment of cross-compiled Windows applications.")
 (define-public libostree
   (package
     (name "libostree")
-    (version "2022.2")
+    (version "2022.3")
     (source
      (origin
        (method url-fetch)
@@ -1828,7 +1828,7 @@ for packaging and deployment of cross-compiled Windows applications.")
              "https://github.com/ostreedev/ostree/releases/download/v"
              (version-major+minor version) "/libostree-" version ".tar.xz"))
        (sha256
-        (base32 "0sv70dqmf2w2lshp80sfh9m6qv5mrg72zqqbx63bd32dg2szbqkn"))))
+        (base32 "04pn4ibak8k7qlm0722im5ng8gyn1r5y5ggyz75ca0smrnfzs8xq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/patches/clang-14.0-libc-search-path.patch b/gnu/packages/patches/clang-14.0-libc-search-path.patch
index 7e439cd1ef..78b0637cab 100644
--- a/gnu/packages/patches/clang-14.0-libc-search-path.patch
+++ b/gnu/packages/patches/clang-14.0-libc-search-path.patch
@@ -7,6 +7,7 @@ the distro-specific stuff and removes the hard-coded FHS directory names
 to make sure Clang also works on foreign distros.
 
 diff --git a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp
+index 5ac38c34d112..2a704b418fdc 100644
 --- a/clang/lib/Driver/Distro.cpp
 +++ b/clang/lib/Driver/Distro.cpp
 @@ -96,6 +96,10 @@ static Distro::DistroType DetectLsbRelease(llvm::vfs::FileSystem &VFS) {
@@ -21,6 +22,7 @@ diff --git a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp
  
    // Newer freedesktop.org's compilant systemd-based systems
 diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp
+index 4a9f6d4c4e3e..0ae13ebebd27 100644
 --- a/clang/lib/Driver/ToolChains/Cuda.cpp
 +++ b/clang/lib/Driver/ToolChains/Cuda.cpp
 @@ -117,6 +117,9 @@ CudaInstallationDetector::CudaInstallationDetector(
@@ -34,6 +36,7 @@ diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/
      std::string Path;
      bool StrictChecking;
 diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
+index 83cb41159de7..6b920e33d1ef 100644
 --- a/clang/lib/Driver/ToolChains/Linux.cpp
 +++ b/clang/lib/Driver/ToolChains/Linux.cpp
 @@ -186,6 +186,10 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
@@ -72,21 +75,19 @@ diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains
    Generic_GCC::AddMultiarchPaths(D, SysRoot, OSLibDir, Paths);
  
 +#if 0
-   // Similar to the logic for GCC above, if we are currently running Clang
-   // inside of the requested system root, add its parent library path to those
-   // searched.
-@@ -313,9 +321,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
-     if (OSLibDir != "lib")
-       addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
-   }
+   // The deprecated -DLLVM_ENABLE_PROJECTS=libcxx configuration installs
+   // libc++.so in D.Dir+"/../lib/". Detect this path.
+   // TODO Remove once LLVM_ENABLE_PROJECTS=libcxx is unsupported.
+@@ -310,6 +318,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ 
+   addPathIfExists(D, SysRoot + "/lib", Paths);
+   addPathIfExists(D, SysRoot + "/usr/lib", Paths);
 +#endif
 +
 +  // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
 +  // and friends can be found.
 +  addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
- 
--  addPathIfExists(D, SysRoot + "/lib", Paths);
--  addPathIfExists(D, SysRoot + "/usr/lib", Paths);
++
 +  // Add GCC's lib/ directory so libstdc++.so can be found.
 +  addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
  }
diff --git a/gnu/packages/patches/irrlicht-link-against-needed-libs.patch b/gnu/packages/patches/irrlicht-link-against-needed-libs.patch
new file mode 100644
index 0000000000..2e9f5c78d5
--- /dev/null
+++ b/gnu/packages/patches/irrlicht-link-against-needed-libs.patch
@@ -0,0 +1,24 @@
+From: Christoph Egger <Christoph.Egger@gmx.de>
+Subject: [PATCH] debian/link-against-needed-libs
+
+There are quite some libraries irrlicht needs but does not link
+against. This patch makes irrlicht link correctly against all the
+needed libraries.
+
+Signed-off-by: Christoph Egger <Christoph.Egger@gmx.de>
+
+---
+ source/Irrlicht/Makefile |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- irrlicht.orig/source/Irrlicht/Makefile
++++ irrlicht/source/Irrlicht/Makefile
+@@ -90,7 +90,7 @@
+ LIB_PATH = ../../lib/$(SYSTEM)

+ INSTALL_DIR = /usr/local/lib

+ sharedlib install: SHARED_LIB = libIrrlicht.so

+-sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm

++staticlib sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lX11 -lz -lpng -ljpeg -lbz2

+ staticlib sharedlib: CXXINCS += -I/usr/X11R6/include

+ 

+ #OSX specific options

diff --git a/gnu/packages/patches/irrlicht-use-system-libs.patch b/gnu/packages/patches/irrlicht-use-system-libs.patch
index e764f411d3..06cb6db062 100644
--- a/gnu/packages/patches/irrlicht-use-system-libs.patch
+++ b/gnu/packages/patches/irrlicht-use-system-libs.patch
@@ -1,40 +1,13 @@
-This patch is a combination of the two following patches with minor
-changes to the install code
-https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/link-against-needed-libs.diff/
-https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/use-system-libs.diff/
+Subject: [PATCH] debian/use-system-libs
 
+Path to build irrlicht using the system libraries for png,zlib and
+jpeg as well as the glext family of header files.
 
----
- include/IrrCompileConfig.h                  | 26 +++++++++------------
- source/Irrlicht/CIrrDeviceLinux.h           |  2 +-
- source/Irrlicht/COpenGLExtensionHandler.h   |  8 +++----
- source/Irrlicht/COpenGLSLMaterialRenderer.h |  2 +-
- source/Irrlicht/Makefile                    | 15 ++++++------
- 5 files changed, 25 insertions(+), 28 deletions(-)
+Signed-off-by: Christoph Egger <debian@christoph-egger.org
 
-diff --git a/include/IrrCompileConfig.h b/include/IrrCompileConfig.h
-index 6bb0589..2216353 100644
---- a/include/IrrCompileConfig.h
-+++ b/include/IrrCompileConfig.h
-@@ -238,6 +238,17 @@ for Windows based systems. You also have to set #define UNICODE for this to comp
- #undef _IRR_WCHAR_FILESYSTEM

- #endif

- 

-+//! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib.

-+/** This enables the engine to read from compressed .zip archives. If you

-+disable this feature, the engine can still read archives, but only uncompressed

-+ones. */

-+#define _IRR_COMPILE_WITH_ZLIB_

-+

-+//! Define _IRR_USE_NON_SYSTEM_ZLIB_ to let irrlicht use the zlib which comes with irrlicht.

-+/** If this is commented out, Irrlicht will try to compile using the zlib installed in the system.

-+	This is only used when _IRR_COMPILE_WITH_ZLIB_ is defined. */

-+#undef _IRR_USE_NON_SYSTEM_ZLIB_

-+

- //! Define _IRR_COMPILE_WITH_JPEGLIB_ to enable compiling the engine using libjpeg.

- /** This enables the engine to read jpeg images. If you comment this out,

- the engine will no longer read .jpeg images. */

-@@ -249,10 +260,7 @@ the engine will no longer read .jpeg images. */
+--- irrlicht.orig/include/IrrCompileConfig.h
++++ irrlicht/include/IrrCompileConfig.h
+@@ -253,10 +253,7 @@
  //! Define _IRR_USE_NON_SYSTEM_JPEG_LIB_ to let irrlicht use the jpeglib which comes with irrlicht.

  /** If this is commented out, Irrlicht will try to compile using the jpeg lib installed in the system.

  	This is only used when _IRR_COMPILE_WITH_LIBJPEG_ is defined. */

@@ -45,7 +18,7 @@ index 6bb0589..2216353 100644
  

  //! Define _IRR_COMPILE_WITH_LIBPNG_ to enable compiling the engine using libpng.

  /** This enables the engine to read png images. If you comment this out,

-@@ -265,10 +273,7 @@ the engine will no longer read .png images. */
+@@ -269,10 +266,7 @@
  //! Define _IRR_USE_NON_SYSTEM_LIBPNG_ to let irrlicht use the libpng which comes with irrlicht.

  /** If this is commented out, Irrlicht will try to compile using the libpng installed in the system.

  	This is only used when _IRR_COMPILE_WITH_LIBPNG_ is defined. */

@@ -56,7 +29,7 @@ index 6bb0589..2216353 100644
  

  //! Define _IRR_D3D_NO_SHADER_DEBUGGING to disable shader debugging in D3D9

  /** If _IRR_D3D_NO_SHADER_DEBUGGING is undefined in IrrCompileConfig.h,

-@@ -602,10 +607,7 @@ ones. */
+@@ -606,10 +600,7 @@
  /** If this is commented out, Irrlicht will try to compile using the zlib

  installed on the system. This is only used when _IRR_COMPILE_WITH_ZLIB_ is

  defined. */

@@ -67,7 +40,7 @@ index 6bb0589..2216353 100644
  //! Define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_ if you want to read AES-encrypted ZIP archives

  #define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_

  #ifdef NO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_

-@@ -623,18 +625,12 @@ library. */
+@@ -627,18 +618,12 @@
  /** If this is commented out, Irrlicht will try to compile using the bzlib

  installed on the system. This is only used when _IRR_COMPILE_WITH_BZLIB_ is

  defined. */

@@ -86,10 +59,8 @@ index 6bb0589..2216353 100644
  

  //! Define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_ if you want to mount folders as archives

  #define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_

-diff --git a/source/Irrlicht/CIrrDeviceLinux.h b/source/Irrlicht/CIrrDeviceLinux.h
-index 4d2a2c6..8cf24ba 100644
---- a/source/Irrlicht/CIrrDeviceLinux.h
-+++ b/source/Irrlicht/CIrrDeviceLinux.h
+--- irrlicht.orig/source/Irrlicht/CIrrDeviceLinux.h
++++ irrlicht/source/Irrlicht/CIrrDeviceLinux.h
 @@ -22,7 +22,7 @@
  #define GLX_GLXEXT_LEGACY 1

  #include <GL/glx.h>

@@ -99,10 +70,8 @@ index 4d2a2c6..8cf24ba 100644
  #endif

  #endif

  

-diff --git a/source/Irrlicht/COpenGLExtensionHandler.h b/source/Irrlicht/COpenGLExtensionHandler.h
-index 1b77bad..3886a0e 100644
---- a/source/Irrlicht/COpenGLExtensionHandler.h
-+++ b/source/Irrlicht/COpenGLExtensionHandler.h
+--- irrlicht.orig/source/Irrlicht/COpenGLExtensionHandler.h
++++ irrlicht/source/Irrlicht/COpenGLExtensionHandler.h
 @@ -35,7 +35,7 @@
  	#endif

  	#include <OpenGL/gl.h>

@@ -133,10 +102,8 @@ index 1b77bad..3886a0e 100644
  	#endif

  #endif

  

-diff --git a/source/Irrlicht/COpenGLSLMaterialRenderer.h b/source/Irrlicht/COpenGLSLMaterialRenderer.h
-index ff71150..f8a6007 100644
---- a/source/Irrlicht/COpenGLSLMaterialRenderer.h
-+++ b/source/Irrlicht/COpenGLSLMaterialRenderer.h
+--- irrlicht.orig/source/Irrlicht/COpenGLSLMaterialRenderer.h
++++ irrlicht/source/Irrlicht/COpenGLSLMaterialRenderer.h
 @@ -25,7 +25,7 @@
  	#include <GL/gl.h>

  #endif

@@ -146,11 +113,9 @@ index ff71150..f8a6007 100644
  #endif

  #endif

  

-diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile
-index 67a3899..d9ea7f3 100644
---- a/source/Irrlicht/Makefile
-+++ b/source/Irrlicht/Makefile
-@@ -43,7 +43,7 @@ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CIm
+--- irrlicht.orig/source/Irrlicht/Makefile
++++ irrlicht/source/Irrlicht/Makefile
+@@ -45,7 +45,7 @@
  	CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o

  IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ)

  IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o CTRStencilShadow.o CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o CTRTextureGouraudWire.o CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o CTRTextureLightMap2_M2.o CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o CTRGouraudAlpha2.o CTRGouraudAlphaNoZ2.o CTRTextureDetailMap2.o CTRTextureGouraudAdd2.o CTRTextureGouraudAddNoZ2.o CTRTextureWire2.o CTRTextureLightMap2_Add.o CTRTextureLightMapGouraud2_M4.o IBurningShader.o CTRTextureBlend.o CTRTextureGouraudAlpha.o CTRTextureGouraudAlphaNoZ.o CDepthBuffer.o CBurningShader_Raster_Reference.o

@@ -159,7 +124,7 @@ index 67a3899..d9ea7f3 100644
  IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o Irrlicht.o os.o

  IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o

  ZLIBOBJ = zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o zlib/uncompr.o zlib/zutil.o

-@@ -56,14 +56,14 @@ BZIP2OBJ = bzip2/blocksort.o bzip2/huffman.o bzip2/crctable.o bzip2/randtable.o
+@@ -58,14 +58,14 @@
  EXTRAOBJ =

  LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \

  	$(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \

@@ -178,25 +143,11 @@ index 67a3899..d9ea7f3 100644
  ifndef NDEBUG

  CXXFLAGS += -g -D_DEBUG

  else

-@@ -88,7 +88,7 @@ STATIC_LIB = libIrrlicht.a
- LIB_PATH = ../../lib/$(SYSTEM)

- INSTALL_DIR = /usr/local/lib

- sharedlib install: SHARED_LIB = libIrrlicht.so

--sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm

-+staticlib sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lX11 -lz -lpng -ljpeg -lbz2

- staticlib sharedlib: CXXINCS += -I/usr/X11R6/include

- 

- #OSX specific options

-@@ -153,7 +153,8 @@ install install_osx:
- 	$(RM) -r $(INSTALL_DIR)/../include/irrlicht

+@@ -156,6 +156,7 @@
  	mkdir -p $(INSTALL_DIR)/../include/irrlicht

  	cp ../../include/*.h $(INSTALL_DIR)/../include/irrlicht/

--	cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR)

-+	cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR) || true

-+	cp $(LIB_PATH)/$(STATIC_LIB) $(INSTALL_DIR) || true

+ 	cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR)

++	cp $(LIB_PATH)/$(STATIC_LIB) $(INSTALL_DIR)

  	cd $(INSTALL_DIR) && ln -s -f $(SHARED_FULLNAME) $(SONAME)

  	cd $(INSTALL_DIR) && ln -s -f $(SONAME) $(SHARED_LIB)

  #	ldconfig -n $(INSTALL_DIR)

--- 
-2.18.0
-
diff --git a/gnu/packages/patches/libmicrohttpd-0.9.73-test-ssl3.patch b/gnu/packages/patches/libmicrohttpd-0.9.73-test-ssl3.patch
deleted file mode 100644
index e8d5dce0ed..0000000000
--- a/gnu/packages/patches/libmicrohttpd-0.9.73-test-ssl3.patch
+++ /dev/null
@@ -1,35 +0,0 @@
- Disable usage of SSLv3 in testing
-
- Integrated uptream version 0.9.74
-
-
-diff --git a/src/testcurl/https/test_tls_options.c b/src/testcurl/https/test_tls_options.c
-
---- a/src/testcurl/https/test_tls_options.c
-+++ b/src/testcurl/https/test_tls_options.c
-@@ -119,11 +119,6 @@ main (int argc, char *const *argv)
-     fprintf (stderr, "Curl does not support SSL.  Cannot run the test.\n");
-     return 77;
-   }
--  if (0 != strncmp (ssl_version, "GnuTLS", 6))
--  {
--    fprintf (stderr, "This test can be run only with libcurl-gnutls.\n");
--    return 77;
--  }
- 
-   if (! testsuite_curl_global_init ())
-     return 99;
-@@ -152,10 +147,10 @@ main (int argc, char *const *argv)
-   fprintf (stderr,
-            "The following handshake should fail (and print an error message)...\n");
-   if (0 !=
--      test_wrap ("TLS1.0 vs SSL3",
-+      test_wrap ("TLS1.1 vs TLS1.0",
-                  &test_unmatching_ssl_version, NULL, port, daemon_flags,
-                  aes256_sha,
--                 CURL_SSLVERSION_SSLv3,
-+                 CURL_SSLVERSION_TLSv1_1,
-                  MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem,
-                  MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem,
-                  MHD_OPTION_HTTPS_PRIORITIES,
-
diff --git a/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch b/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch
deleted file mode 100644
index 41338e6e6f..0000000000
--- a/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From d10ea2ad7efc2364a8a2007b4c6d3e85511e2f84 Mon Sep 17 00:00:00 2001
-From: Maxime Devos <maximedevos@telenet.be>
-Date: Tue, 3 Aug 2021 01:00:23 +0200
-Subject: [PATCH] Add environment variable MINETEST_MOD_PATH
-
-This adds an environment variable MINETEST_MOD_PATH.
-When it exists, Minetest will look there for mods
-in addition to ~/.minetest/mods/.  Mods can still be
-installed to ~/.minetest/mods/ with the built-in installer.
-
-With thanks to Liliana Marie Prikler.
----
- builtin/mainmenu/pkgmgr.lua       |  7 +++----
- doc/menu_lua_api.txt              |  8 +++++++-
- src/content/subgames.cpp          | 11 +++++++++++
- src/script/lua_api/l_mainmenu.cpp | 23 +++++++++++++++++++++++
- src/script/lua_api/l_mainmenu.h   |  2 ++
- 5 files changed, 46 insertions(+), 5 deletions(-)
-
-diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua
-index 787936e31..d8fba0ebe 100644
---- a/builtin/mainmenu/pkgmgr.lua
-+++ b/builtin/mainmenu/pkgmgr.lua
-@@ -682,10 +682,9 @@ function pkgmgr.preparemodlist(data)
- 	local game_mods = {}
- 
- 	--read global mods
--	local modpath = core.get_modpath()
--
--	if modpath ~= nil and
--		modpath ~= "" then
-+	local modpaths = core.get_modpaths()
-+	--XXX what was ‘modpath ~= ""’ and ‘modpath ~= nil’ for?
-+	for _,modpath in ipairs(modpaths) do
- 		get_mods(modpath,global_mods)
- 	end
- 
-diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt
-index b3975bc1d..132444b14 100644
---- a/doc/menu_lua_api.txt
-+++ b/doc/menu_lua_api.txt
-@@ -218,7 +218,13 @@ Package - content which is downloadable from the content db, may or may not be i
-     * returns path to global user data,
-       the directory that contains user-provided mods, worlds, games, and texture packs.
- * core.get_modpath() (possible in async calls)
--    * returns path to global modpath
-+    * returns path to global modpath, where mods can be installed
-+* core.get_modpaths() (possible in async calls)
-+    * returns list of paths to global modpaths, where mods have been installed
-+
-+      The difference with "core.get_modpath" is that no mods should be installed in these
-+      directories by Minetest -- they might be read-only.
-+
- * core.get_clientmodpath() (possible in async calls)
-     * returns path to global client-side modpath
- * core.get_gamepath() (possible in async calls)
-diff --git a/src/content/subgames.cpp b/src/content/subgames.cpp
-index e9dc609b0..d73f95a1f 100644
---- a/src/content/subgames.cpp
-+++ b/src/content/subgames.cpp
-@@ -61,6 +61,12 @@ std::string getSubgamePathEnv()
- 	return subgame_path ? std::string(subgame_path) : "";
- }
- 
-+std::string getModPathEnv()
-+{
-+	char *mod_path = getenv("MINETEST_MOD_PATH");
-+	return mod_path ? std::string(mod_path) : "";
-+}
-+
- SubgameSpec findSubgame(const std::string &id)
- {
- 	if (id.empty())
-@@ -110,6 +116,11 @@ SubgameSpec findSubgame(const std::string &id)
- 	std::set<std::string> mods_paths;
- 	if (!user_game)
- 		mods_paths.insert(share + DIR_DELIM + "mods");
-+
-+	Strfnd mod_search_paths(getModPathEnv());
-+	while (!mod_search_paths.at_end())
-+		mods_paths.insert(mod_search_paths.next(PATH_DELIM));
-+
- 	if (user != share || user_game)
- 		mods_paths.insert(user + DIR_DELIM + "mods");
- 
-diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp
-index 3e9709bde..903ac3a22 100644
---- a/src/script/lua_api/l_mainmenu.cpp
-+++ b/src/script/lua_api/l_mainmenu.cpp
-@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
- #include "lua_api/l_internal.h"
- #include "common/c_content.h"
- #include "cpp_api/s_async.h"
-+#include "util/strfnd.h"
- #include "gui/guiEngine.h"
- #include "gui/guiMainMenu.h"
- #include "gui/guiKeyChangeMenu.h"
-@@ -502,6 +503,26 @@ int ModApiMainMenu::l_get_modpath(lua_State *L)
- 	return 1;
- }
- 
-+/******************************************************************************/
-+int ModApiMainMenu::l_get_modpaths(lua_State *L)
-+{
-+	const char *c_modpath = getenv("MINETEST_MOD_PATH");
-+	if (c_modpath == NULL)
-+		c_modpath = "";
-+	int index = 1;
-+	lua_newtable(L);
-+	Strfnd mod_search_paths{std::string(c_modpath)};
-+	while (!mod_search_paths.at_end()) {
-+		std::string component = mod_search_paths.next(PATH_DELIM);
-+		lua_pushstring(L, component.c_str());
-+		lua_rawseti(L, -2, index);
-+		index++;
-+	}
-+	ModApiMainMenu::l_get_modpath(L);
-+	lua_rawseti(L, -2, index);
-+	return 1;
-+}
-+
- /******************************************************************************/
- int ModApiMainMenu::l_get_clientmodpath(lua_State *L)
- {
-@@ -949,6 +970,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
- 	API_FCT(get_mapgen_names);
- 	API_FCT(get_user_path);
- 	API_FCT(get_modpath);
-+	API_FCT(get_modpaths);
- 	API_FCT(get_clientmodpath);
- 	API_FCT(get_gamepath);
- 	API_FCT(get_texturepath);
-@@ -983,6 +1005,7 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top)
- 	API_FCT(get_mapgen_names);
- 	API_FCT(get_user_path);
- 	API_FCT(get_modpath);
-+	API_FCT(get_modpaths);
- 	API_FCT(get_clientmodpath);
- 	API_FCT(get_gamepath);
- 	API_FCT(get_texturepath);
-diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h
-index 33ac9e721..a6a54a2cb 100644
---- a/src/script/lua_api/l_mainmenu.h
-+++ b/src/script/lua_api/l_mainmenu.h
-@@ -112,6 +112,8 @@ class ModApiMainMenu: public ModApiBase
- 
- 	static int l_get_modpath(lua_State *L);
- 
-+	static int l_get_modpaths(lua_State *L);
-+
- 	static int l_get_clientmodpath(lua_State *L);
- 
- 	static int l_get_gamepath(lua_State *L);
--- 
-2.32.0
-
diff --git a/gnu/packages/patches/ncftp-reproducible.patch b/gnu/packages/patches/ncftp-reproducible.patch
new file mode 100644
index 0000000000..043b3b1e70
--- /dev/null
+++ b/gnu/packages/patches/ncftp-reproducible.patch
@@ -0,0 +1,29 @@
+Author: Reiner Herrmann <reiner@reiner-h.de>
+Date: 2016-07-01 16:00:02 UTC
+Bug-Debian: https://bugs.debian.org/829249
+
+	make ncftp build reproducible.
+
+diff --git a/ncftp/main.c b/ncftp/main.c
+index a7fccac..b27a94e 100644
+--- a/ncftp/main.c
++++ b/ncftp/main.c
+@@ -62,7 +62,7 @@ static void
+ Usage(void)
+ {
+ 	FILE *fp;
+-#ifdef UNAME
++#if 0
+ 	char s[80];
+ #endif
+ 
+@@ -76,7 +76,7 @@ Usage(void)
+   -F     Dump a sample $HOME/.ncftp/firewall prefs file to stdout and exit.\n");
+ 
+ 	(void) fprintf(fp, "\nProgram version:  %s\nLibrary version:  %s\n", gVersion + 5, gLibNcFTPVersion + 5);
+-#ifdef UNAME
++#if 0
+ 	AbbrevStr(s, UNAME, 60, 1);
+ 	(void) fprintf(fp, "Build system:     %s\n", s);
+ #endif
+

diff --git a/gnu/packages/patches/pigx-bsseq-no-citeproc.patch b/gnu/packages/patches/pigx-bsseq-no-citeproc.patch
deleted file mode 100644
index 882e660fe4..0000000000
--- a/gnu/packages/patches/pigx-bsseq-no-citeproc.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -Naur pigx_bsseq-0.1.5/configure.ac pigx_bsseq-0.1.5.patched/configure.ac
---- pigx_bsseq-0.1.5/configure.ac	2021-06-08 15:28:08.000000000 +0200
-+++ pigx_bsseq-0.1.5.patched/configure.ac	2021-10-05 14:43:56.806529137 +0200
-@@ -38,7 +38,6 @@
- find_or_override_prog([GNUBASH],         [bash])
- find_or_override_prog([SNAKEMAKE],       [snakemake])
- find_or_override_prog([PANDOC],          [pandoc])
--find_or_override_prog([PANDOC_CITEPROC], [pandoc-citeproc])
- find_or_override_prog([FASTQC],          [fastqc])
- find_or_override_prog([MULTIQC],         [multiqc])
- find_or_override_prog([TRIMGALORE],      [trim_galore])
-diff -Naur pigx_bsseq-0.1.5/Makefile.in pigx_bsseq-0.1.5.patched/Makefile.in
---- pigx_bsseq-0.1.5/Makefile.in	2021-06-08 16:17:03.000000000 +0200
-+++ pigx_bsseq-0.1.5.patched/Makefile.in	2021-10-05 14:43:34.635876855 +0200
-@@ -408,7 +408,6 @@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PANDOC = @PANDOC@
--PANDOC_CITEPROC = @PANDOC_CITEPROC@
- PATH_SEPARATOR = @PATH_SEPARATOR@
- PYTHON = @PYTHON@
- PYTHONPATH = @PYTHONPATH@
-diff -Naur pigx_bsseq-0.1.5/pigx-common/common/pigx-runner.in pigx_bsseq-0.1.5.patched/pigx-common/common/pigx-runner.in
---- pigx_bsseq-0.1.5/pigx-common/common/pigx-runner.in	2021-06-08 10:14:29.000000000 +0200
-+++ pigx_bsseq-0.1.5.patched/pigx-common/common/pigx-runner.in	2021-10-05 14:43:44.296161069 +0200
-@@ -375,7 +375,6 @@
-     if path.exists(bin): shutil.rmtree(bin)
-     os.makedirs(bin, exist_ok=True)
-     os.symlink('@PANDOC@', path.join(bin, "pandoc"))
--    os.symlink('@PANDOC_CITEPROC@', path.join(bin, "pandoc-citeproc"))
-     os.symlink('@RSCRIPT@', path.join(bin, "Rscript"))
-     os.environ['PATH'] = path.abspath(bin) + ":" + os.environ['PATH']
-     os.environ['PIGX_PATH'] = path.abspath(bin) + ":" + os.environ['PATH']
diff --git a/gnu/packages/patches/pigx-chipseq-no-citeproc.patch b/gnu/packages/patches/pigx-chipseq-no-citeproc.patch
deleted file mode 100644
index b01820f110..0000000000
--- a/gnu/packages/patches/pigx-chipseq-no-citeproc.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -Naur pigx_chipseq-0.0.53/configure.ac pigx_chipseq-0.0.53.patched/configure.ac
---- pigx_chipseq-0.0.53/configure.ac	2021-09-28 11:14:12.000000000 +0200
-+++ pigx_chipseq-0.0.53.patched/configure.ac	2021-10-07 14:48:53.034054327 +0200
-@@ -52,7 +52,6 @@
- find_or_override_prog([MACS2],           [macs2])
- find_or_override_prog([SNAKEMAKE],       [snakemake])
- find_or_override_prog([PANDOC],          [pandoc])
--find_or_override_prog([PANDOC_CITEPROC], [pandoc-citeproc])
- find_or_override_prog([FASTQC],          [fastqc])
- find_or_override_prog([BOWTIE2],         [bowtie2])
- find_or_override_prog([BOWTIE2_BUILD],   [bowtie2-build])
-diff -Naur pigx_chipseq-0.0.53/Makefile.in pigx_chipseq-0.0.53.patched/Makefile.in
---- pigx_chipseq-0.0.53/Makefile.in	2021-09-28 11:55:05.000000000 +0200
-+++ pigx_chipseq-0.0.53.patched/Makefile.in	2021-10-07 14:48:37.195577143 +0200
-@@ -407,7 +407,6 @@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PANDOC = @PANDOC@
--PANDOC_CITEPROC = @PANDOC_CITEPROC@
- PATH_SEPARATOR = @PATH_SEPARATOR@
- PERL = @PERL@
- PYTHON = @PYTHON@
-diff -Naur pigx_chipseq-0.0.53/pigx-common/common/pigx-runner.in pigx_chipseq-0.0.53.patched/pigx-common/common/pigx-runner.in
---- pigx_chipseq-0.0.53/pigx-common/common/pigx-runner.in	2021-09-27 18:16:42.000000000 +0200
-+++ pigx_chipseq-0.0.53.patched/pigx-common/common/pigx-runner.in	2021-10-07 14:48:44.200788218 +0200
-@@ -379,7 +379,6 @@
-     if path.exists(bin): shutil.rmtree(bin)
-     os.makedirs(bin, exist_ok=True)
-     os.symlink('@PANDOC@', path.join(bin, "pandoc"))
--    os.symlink('@PANDOC_CITEPROC@', path.join(bin, "pandoc-citeproc"))
-     os.symlink('@RSCRIPT@', path.join(bin, "Rscript"))
-     os.environ['PATH'] = path.abspath(bin) + ":" + os.environ['PATH']
-     os.environ['PIGX_PATH'] = path.abspath(bin) + ":" + os.environ['PATH']
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index ba65cc6e6d..1f947b48fa 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -10020,6 +10020,13 @@ the job on behalf of @code{Term::Size::Any}.")
                            "Term-Size-Perl-" version ".tar.gz"))
        (sha256
         (base32 "17i05y186l977bhp32b24c8rqasmg1la934dizf5sc0vrd36g6mf"))))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'remove-timestamps
+                    ;; Remove timestamp in comment for reproducible builds
+                    (lambda _
+                      (substitute* "inc/Probe.pm"
+                        ((". created ...scalar localtime..") "")))))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Term-Size-Perl")
     (synopsis "Perl extension for retrieving terminal size (Perl version)")
@@ -11849,3 +11856,27 @@ regexp patterns in modules.")
     (description "Data::SExpression parses Lisp S-Expressions into Perl data
 structures.")
     (license license:perl-license)))
+
+(define-public perl-socket-msghdr
+  (package
+    (name "perl-socket-msghdr")
+    (version "0.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/F/FE/FELIPE/Socket-MsgHdr-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32 "0g3qa7xn0aqn417jfvnc0i3ksyqa7bnvws0wihldir6ywcaiql4n"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Socket-MsgHdr")
+    (synopsis "Perform advanced operations via sendmsg and recvmsg")
+    (description "Socket::MsgHdr provides advanced socket messaging operations
+via sendmsg and recvmsg.
+
+It also allows manipulating ancillary data or so-called control
+information (cmsghdr).  This ancillary data may be used for file descriptor
+passing, IPv6 operations, and a host of implemenation-specific extensions.")
+    (license license:perl-license)))
diff --git a/gnu/packages/profiling.scm b/gnu/packages/profiling.scm
index 2740644448..d4993060b2 100644
--- a/gnu/packages/profiling.scm
+++ b/gnu/packages/profiling.scm
@@ -50,14 +50,14 @@
 (define-public papi
   (package
     (name "papi")
-    (version "6.0.0")
+    (version "6.0.0.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://icl.utk.edu/projects/papi/downloads/papi-"
+       (uri (string-append "https://icl.utk.edu/projects/papi/downloads/papi-"
                            version ".tar.gz"))
-       (sha256 (base32
-                "0pq5nhy105fpnk78k6l9ygsfr5akn6l0ck1hbf2c419lmsfp0hil"))
+       (sha256
+        (base32 "0zr83v51lp4ijgk997dz9fpph48prlsbml26dvb223avqr8fvmrw"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 0803d6fed2..cb22972d10 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2224,13 +2224,13 @@ eliminate flaky failures.")
 (define-public python-xunitparser
   (package
     (name "python-xunitparser")
-    (version "1.3.3")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "xunitparser" version))
        (sha256
-        (base32 "05amn9yik0mxg89iiprkb6lrmc7rlccgvwajrpyfi6zbp8mjdsgn"))))
+        (base32 "00lapxi770mg7jkw16zy3a91hbdfz4a9h43ryczdsgd3z4cl6vyf"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 5c1baa0ce6..0182679acd 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -5871,8 +5871,10 @@ based on filters.")
            (lambda _
              (invoke "pytest" "--benchmark-skip" "-k"
                      ;; Those tests need internet access
-                     "not test_check and not test_valid_value_check \
-and not test_override_app_level"))))))
+                     (string-join
+                      '("not test_check and not test_valid_value_check \
+and not test_override_app_level"
+                        "not test_redirect") " and ")))))))
     (home-page "https://github.com/python-restx/flask-restx")
     (synopsis
      "Framework for fast, easy and documented API development with Flask")
@@ -7069,17 +7071,22 @@ provides well-defined APIs to talk to websites lacking one.")
         (base32 "07fhcjiyif80z1vyh35za29sqx1mmqh568jrbrrs675j4a797sj1"))))
     (build-system python-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'loosen-requirements
-                    (lambda _
-                      ;; Don't pin specific versions of dependencies.
-                      (substitute* "requirements.txt"
-                        (("^sqlalchemy[=<>].*") "sqlalchemy\n")
-                        (("^marshmallow[=<>].*") "marshmallow\n")
-                        (("^Flask[=<>].*") "Flask\n"))))
-                  (replace 'check
-                    (lambda _
-                      (invoke "pytest" "-vv"))))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'loosen-requirements
+           (lambda _
+             ;; Don't pin specific versions of dependencies.
+             (substitute* "requirements.txt"
+               (("^sqlalchemy[=<>].*") "sqlalchemy\n")
+               (("^marshmallow[=<>].*") "marshmallow\n")
+               (("^Flask[=<>].*") "Flask\n"))))
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "-vv" "-k"
+                     ;; The following test fails for unknown reasons (see:
+                     ;; https://github.com/AdCombo/flask-combo-jsonapi/issues/66).
+                     "not test_get_list_with_simple_filter_\
+relationship_custom_qs_api"))))))
     (propagated-inputs
      (list python-flask
            python-marshmallow
@@ -7090,7 +7097,9 @@ provides well-defined APIs to talk to websites lacking one.")
            python-simplejson
            python-six))
     (native-inputs
-     (list python-coverage python-coveralls python-pytest
+     (list python-coverage
+           python-coveralls
+           python-pytest
            python-pytest-runner))
     (home-page "https://github.com/AdCombo/flask-combo-jsonapi")
     (synopsis "Flask extension to quickly create JSON:API 1.0 REST Web APIs")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index a4c8c0bc29..623f619ade 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -187,6 +187,7 @@
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages man)
@@ -1515,14 +1516,14 @@ approximate nearest neighbor search with Python bindings.")
 (define-public python-sh
   (package
     (name "python-sh")
-    (version "1.12.14")
+    (version "1.14.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sh" version))
        (sha256
         (base32
-         "1z2hx357xp3v4cv44xmqp7lli3frndqpyfmpbxf7n76h7s1zaaxm"))))
+         "03gyss1rhj4in7pgysg4q0hxp3230whinlpy1532ljs99lrx0ywx"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -2071,6 +2072,30 @@ abstractions to different hardware devices, and a suite of utilities for
 sending and receiving messages on a CAN bus.")
     (license license:lgpl3+)))
 
+(define-public python-canopen
+  (package
+    (name "python-canopen")
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "canopen" version))
+       (sha256
+        (base32 "1nb543wb37kj95v6bhh272lm5gkpi41q3pnsl1fxlyizm2gamj5w"))))
+    (build-system python-build-system)
+    (native-inputs (list python-packaging))
+    (propagated-inputs (list python-can))
+    (home-page "https://github.com/christiansandberg/canopen")
+    (synopsis "CANopen stack implementation")
+    (description
+     "This package provides a Python implementation of the
+@uref{https://www.can-cia.org/canopen/,CANopen standard} for
+@acronym{CANs, controller-area networks}.  The aim of the project is to
+support the most common parts of the CiA 301 standard in a simple
+Pythonic interface.  It is mainly targeted for testing and automation
+tasks rather than a standard compliant master implementation.")
+    (license license:expat)))
+
 (define-public python-caniusepython3
   (package
     (name "python-caniusepython3")
@@ -3424,6 +3449,42 @@ compare, diff, and patch JSON and JSON-like structures in Python.")
      "Jsonschema is an implementation of JSON Schema for Python.")
     (license license:expat)))
 
+;;; TODO: Make the default python-jsonschema on core-updates
+(define-public python-jsonschema-next
+  (package
+    (inherit python-jsonschema)
+    (version "4.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsonschema" version))
+       (sha256
+        (base32 "1z0x22691jva7lwfcfh377jdmlz68zhiawxzl53k631l34k8hvbw"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-jsonschema)
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            ;; XXX: PEP 517 manual build/install procedures copied from
+            ;; python-isort.
+            (replace 'build
+              (lambda _
+                ;; ZIP does not support timestamps before 1980.
+                (setenv "SOURCE_DATE_EPOCH" "315532800")
+                (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+            (replace 'install
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let ((whl (car (find-files "dist" "\\.whl$"))))
+                  (invoke "pip" "--no-cache-dir" "--no-input"
+                          "install" "--no-deps" "--prefix" #$output whl))))))))
+    (native-inputs (list python-pypa-build
+                         python-setuptools-scm
+                         python-twisted))
+    (propagated-inputs
+     (list python-attrs
+           python-importlib-metadata
+           python-pyrsistent
+           python-typing-extensions))))
+
 (define-public python-schema
   (package
     (name "python-schema")
@@ -5601,24 +5662,27 @@ readable format.")
 (define-public python-pygit2
   (package
     (name "python-pygit2")
-    (version "1.9.1")
+    (version "1.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pygit2" version))
        (sha256
-        (base32 "1jdr6z1il03nifwgpcdf95w6xzzbfzdkcqq5dcqjaa0rnv1pjr7g"))))
+        (base32 "068bwhirigbh2435abyv4shdxgxvyfqf4dxfmhd4hihivwrl9290"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f))            ; tests don't run correctly in our environment
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "pytest" "-v")))))))
     (propagated-inputs
      (list python-cached-property python-cffi libgit2))
     (native-inputs
      (list python-pytest))
     (home-page "https://github.com/libgit2/pygit2")
     (synopsis "Python bindings for libgit2")
-    (description "Pygit2 is a set of Python bindings to the libgit2 shared
-library, libgit2 implements Git plumbing.")
+    (description "Pygit2 is a set of Python bindings to the libgit2 shared library.")
     ;; GPL2.0 only, with linking exception.
     (license license:gpl2)))
 
@@ -6407,21 +6471,22 @@ a simple netcat replacement with chaining support.")
 (define-public python-pycodestyle
   (package
     (name "python-pycodestyle")
-    (version "2.7.0")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pycodestyle" version))
        (sha256
         (base32
-         "1vqwmzmjdv331kmfq3q9j3as2x7r2r49lf83r9w4147pdg8c32f3"))))
+         "0zxyrg8029lzjhima6l5nk6y0z6lm5wfp9qchz3s33j3xx3mipgd"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             (invoke "pytest" "-vv"))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest" "-vv")))))))
     (native-inputs
      (list python-pytest))
     (home-page "https://pycodestyle.readthedocs.io/")
@@ -10015,17 +10080,16 @@ PEP 8.")
 (define-public python-pep8-naming
   (package
     (name "python-pep8-naming")
-    (version "0.12.0")
+    (version "0.13.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pep8-naming" version))
        (sha256
         (base32
-         "04kyh9hkpyc8jzj16d1kkk29b5n8miqdvbs0zm035n1z5z5kx6hz"))))
+         "1dc0b6xw1cxp01v9zsv4ryk49rfs1lngfpvzsixgp8b7z3ffcf4z"))))
     (build-system python-build-system)
-    (propagated-inputs
-     (list python-flake8 python-flake8-polyfill))
+    (propagated-inputs (list python-flake8))
     (home-page "https://github.com/PyCQA/pep8-naming")
     (synopsis "Check PEP-8 naming conventions")
     (description
@@ -10101,14 +10165,14 @@ file (e.g. @file{PKG-INFO}).")
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-    (version "2.3.1")
+    (version "2.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyflakes" version))
         (sha256
          (base32
-          "1ny10364ciqh4ripasj4zzv4145l21l3s85m3qlrvfq5pk58xg7m"))))
+          "0k5jn8jpxni264wxf6cc3xcd1qckc0pww30bsd77mwzdf8l5ra05"))))
     (build-system python-build-system)
     (home-page "https://github.com/PyCQA/pyflakes")
     (synopsis "Passive checker of Python programs")
@@ -10152,23 +10216,26 @@ cyclomatic complexity of Python source code.")
 (define-public python-flake8
   (package
     (name "python-flake8")
-    (version "3.9.1")
+    (version "4.0.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "flake8" version))
               (sha256
                (base32
-                "0y732h02n2aih8gzyfj4bbhg4jgahyv84mjwfindk2g6w45rka0s"))))
+                "03c7mnk34wfz7a0m5zq0273y94awz69fy5iww8alh4a4v96h6vl0"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (replace 'check
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      (add-installed-pythonpath inputs outputs)
-                      (invoke "pytest" "-v"))))))
-    (propagated-inputs (list python-pycodestyle python-entrypoints
-                             python-pyflakes python-mccabe))
-    (native-inputs (list python-mock python-pytest))
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "pytest" "-v")))))))
+    (propagated-inputs
+     (list python-entrypoints
+           python-mccabe
+           python-pycodestyle
+           python-pyflakes))
+    (native-inputs (list python-pytest))
     (home-page "https://gitlab.com/pycqa/flake8")
     (synopsis "The modular source code checker: pep8, pyflakes and co")
     (description
@@ -10281,40 +10348,6 @@ the same line (which can be introduced by the code formatting tool Black), or
 unnecessary plus operators for explicit string literal concatenation.")
     (license license:expat)))
 
-(define-public python-flake8-polyfill
-  (package
-    (name "python-flake8-polyfill")
-    (version "1.0.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "flake8-polyfill" version))
-       (sha256
-        (base32
-         "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             ;; Be compatible with Pytest 4:
-             ;; https://gitlab.com/pycqa/flake8-polyfill/merge_requests/7
-             (substitute* "setup.cfg"
-               (("\\[pytest\\]")
-                "[tool:pytest]"))
-             (invoke "py.test" "-v"))))))
-    (propagated-inputs
-     (list python-flake8))
-    (native-inputs
-     (list python-mock python-pep8 python-pycodestyle python-pytest))
-    (home-page "https://gitlab.com/pycqa/flake8-polyfill")
-    (synopsis "Polyfill package for Flake8 plugins")
-    (description
-     "This package that provides some compatibility helpers for Flake8
-plugins that intend to support Flake8 2.x and 3.x simultaneously.")
-    (license license:expat)))
-
 (define-public python-flake8-print
   (package
     (name "python-flake8-print")
@@ -10996,13 +11029,13 @@ third-party code.")
 (define-public python-msgpack
   (package
     (name "python-msgpack")
-    (version "1.0.3")
+    (version "1.0.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "msgpack" version))
               (sha256
                (base32
-                "07m84yisf8m6gr68ip9v6vzxax7kqbn8qxg7ir18clk1jgxwgzai"))))
+                "0pqzy1zclyhd42gfibhkcqymbspy5a6v421g87mh40h3iz0nkn7m"))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -12427,6 +12460,13 @@ Python.")
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'set-version
+                    ;; for reproducible builds, otherwise python-debian
+                    ;; generates a _version.py including the date
+                    (lambda _
+                      (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py")
+                      (substitute* "lib/debian/_version.py"
+                        (("__CHANGELOG_VERSION__") ,version))))
                   (add-after 'unpack 'remove-debian-specific-tests
                     ;; python-apt, apt and dpkg are not yet available in guix,
                     ;; and these tests heavily depend on them.
@@ -13498,17 +13538,6 @@ for atomic file system operations.")
     (home-page "https://github.com/untitaker/python-atomicwrites")
     (license license:expat)))
 
-(define-public python-atomicwrites-1.4
-  (package
-    (inherit python-atomicwrites)
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "atomicwrites" version))
-              (sha256
-               (base32
-                "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))))
-
 (define-public python-qstylizer
   (package
     (name "python-qstylizer")
@@ -13862,6 +13891,25 @@ to the Python ecosystem.")
      "Promises/A+ implementation for Python")
     (license license:expat)))
 
+(define-public python-progress
+  (package
+    (name "python-progress")
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "progress" version))
+       (sha256
+        (base32 "1k9lpb7lqr6mywpnqcz71y6qny54xlgprdp327za2gy0nnc6xj69"))))
+    (build-system python-build-system)
+    (home-page "http://github.com/verigak/progress/")
+    (synopsis "Progress reporting bars for Python")
+    (description "This Python package provides progress reporting for visual
+of progress of long running operations.  There are multiple choices of
+progress bars and spinners, with customizable options, such as width, fill
+character, and suffix.")
+    (license license:isc)))
+
 (define-public python-progressbar2
   (package
     (name "python-progressbar2")
@@ -15495,20 +15543,33 @@ respectively.")
 (define-public python-rope
   (package
     (name "python-rope")
-    (version "0.19.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "rope" version))
        (sha256
         (base32
-         "1nlhkmsfvn2p1msrmwqnypnvr993alzawnpc1605q7rfad3xgrk4"))))
+         "0bkzwkllxxdxd3w70xiy137lqvnlmmaplsc2ya3s23ss4kq8y10k"))))
     (build-system python-build-system)
+    (arguments
+     (list #:phases
+           `(modify-phases %standard-phases
+              (add-after 'unpack 'disable-broken-test
+                (lambda _
+                  (substitute* "ropetest/contrib/autoimporttest.py"
+                    (("def test_search_module")
+                     "def __notest_search_module")
+                    (("def test_search_submodule")
+                     "def __notest_search_submodule")))))))
+    (native-inputs
+     (list python-pytest-timeout
+           python-pytest))
     (home-page "https://github.com/python-rope/rope")
     (synopsis "Refactoring library for Python")
     (description "Rope is a refactoring library for Python.  It facilitates
 the renaming, moving and extracting of attributes, functions, modules, fields
-and parameters in Python 2 source code.  These refactorings can also be applied
+and parameters in Python source code.  These refactorings can also be applied
 to occurrences in strings and comments.")
     (license license:lgpl3+)))
 
@@ -16078,25 +16139,14 @@ implementation has been adapted, improved, and fixed from Molten.")
 (define-public python-shellingham
   (package
     (name "python-shellingham")
-    (version "1.3.2")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "shellingham" version))
        (sha256
-        (base32 "07kmia2hvd2q7wik89m82hig9mqr2faynvy38vxq5fm0ps11jv2p"))))
+        (base32 "07hpndvcv9mf9hp54b4apzpwzmzfzl8ryaacsfdq4139im2w4ma8"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'restore-setup.py
-           ;; setup.py will return in the next release.
-           ;; <https://github.com/sarugaku/shellingham/issues/33>
-           (lambda _
-             (with-output-to-file "setup.py"
-               (lambda _
-                 (display "from setuptools import setup\nsetup()\n")))
-             #t)))))
     (home-page "https://github.com/sarugaku/shellingham")
     (synopsis "Tool to detect surrounding shell")
     (description
@@ -16975,6 +17025,91 @@ as well.")
      @end itemize")
     (license license:bsd-3)))
 
+(define-public python-exodriver
+  (package
+    (name "python-exodriver")
+    (version "2.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/labjack/exodriver")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ikjz8147p14s814yabdq821y691klnr2yg54zgsymcc97kvwp2q"))))
+    (outputs (list "out"
+                   "doc"))              ;544 KiB of examples
+    (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)
+                           "RUN_LDCONFIG=0"
+                           "LINK_SO=1")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (replace 'build
+            (lambda* (#:key make-flags #:allow-other-keys #:rest args)
+              (with-directory-excursion "liblabjackusb"
+                (apply (assoc-ref %standard-phases 'build)
+                       `(,@args #:make-flags ,make-flags)))))
+          (replace 'install
+            (lambda* (#:key make-flags #:allow-other-keys #:rest args)
+              (with-directory-excursion "liblabjackusb"
+                (apply (assoc-ref %standard-phases 'install)
+                       `(,@args #:make-flags ,make-flags)))
+              ;; Install udev rules.
+              (install-file "90-labjack.rules"
+                            (string-append #$output "/lib/udev/rules.d"))
+              ;; Install examples.
+              (let ((doc (string-append #$output:doc "/share/doc/" #$name)))
+                (mkdir-p doc)
+                (copy-recursively "examples"
+                                  (string-append doc "/examples"))))))))
+    (inputs (list libusb))
+    (home-page "https://github.com/labjack/exodriver")
+    (synopsis "USB driver for LabJack data acquisition instruments")
+    (description "This package provides @code{liblabjackusb}, a USB library for low-level
+communication with the U3, U6, UE9, Digit, T4 and T7 LabJack data acquisition
+instruments.  A udev rule is also included to allow unprivileged users to
+communicate with the instruments via USB.")
+    (license license:expat)))           ;see README
+
+(define-public python-labjack
+  (package
+    (name "python-labjack")
+    (version "2.0.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "LabJackPython" version))
+              (sha256
+               (base32
+                "013bjqdi05vlbdqprr6kqi8gs4qhqc7rnyp1klw8k6fng77rpdzz"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-liblabjackusb.so
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* (find-files "." "\\.py$")
+                (("ctypes.CDLL\\(\"liblabjackusb.so\"")
+                 (format #f "ctypes.CDLL(~s"
+                         (search-input-file inputs
+                                            "lib/liblabjackusb.so")))))))))
+    ;; exodriver is provided as a regular input, as only its shared object is
+    ;; used, not its Python API.
+    (inputs (list python-exodriver))
+    (home-page "https://labjack.com/support/software/examples/ud/labjackpython")
+    (synopsis "Python library for LabJack U3, U6, UE9 and U12")
+    (description "This Python library allows communicating with the U3, U6,
+UE9 and U12 LabJack data acquisition (DAQ) modules.")
+    (license license:expat)))          ;see setup.py
+
 (define-public python-kivy-garden
   (package
     (name "python-kivy-garden")
@@ -18909,14 +19044,14 @@ while only declaring the test-specific fields.")
 (define-public python-radon
   (package
     (name "python-radon")
-    (version "4.1.0")
+    (version "5.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "radon" version))
        (sha256
         (base32
-         "0vfxxzbnz5lxfvp0yxp35g6c8qqnnbhi4dm7shkm1d3d4192q22n"))))
+         "1vmf56zsf3paa1jadjcjghiv2kxwiismyayq42ggnqpqwm98f7fb"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -18930,10 +19065,8 @@ while only declaring the test-specific fields.")
                   (replace 'check
                     (lambda _
                       (invoke "python" "radon/tests/run.py"))))))
-    (propagated-inputs
-     (list python-colorama python-flake8-polyfill python-mando))
-    (native-inputs
-     (list python-pytest python-pytest-mock))
+    (propagated-inputs (list python-colorama python-mando))
+    (native-inputs (list python-pytest python-pytest-mock))
     (home-page "https://radon.readthedocs.org/")
     (synopsis "Code Metrics in Python")
     (description "Radon is a Python tool which computes various code metrics.
@@ -19659,41 +19792,6 @@ complete rewrite in Cython to attempt to increase the performance over the
 pure Python module.")
    (license license:bsd-3)))
 
-(define-public python-xenon
-  (package
-    (name "python-xenon")
-    (version "0.7.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "xenon" version))
-       (sha256
-        (base32
-         "0nv207ql2wmh9q62503np056c4vf1c1hlsi5cvv5p5kx574k6r2y"))))
-    (build-system python-build-system)
-    (native-inputs
-     (list python-pyyaml python-radon python-requests python-flake8
-           python-tox))
-    (arguments
-     `(#:tests? #f                      ;test suite not shipped with the PyPI archive
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'patch-test-requirements
-           (lambda _
-             ;; Remove httpretty dependency for tests.
-             (substitute* "setup.py"
-               (("httpretty") ""))
-             #t)))))
-    (home-page "https://xenon.readthedocs.org/")
-    (synopsis "Monitor code metrics for Python on your CI server")
-    (description
-     "Xenon is a monitoring tool based on Radon.  It monitors code complexity.
-Ideally, @code{xenon} is run every time code is committed.  Through command
-line options, various thresholds can be set for the complexity of code.  It
-will fail (i.e.  it will exit with a non-zero exit code) when any of these
-requirements is not met.")
-    (license license:expat)))
-
 (define-public python-pysocks
   (package
     (name "python-pysocks")
@@ -24279,7 +24377,13 @@ with features similar to the @command{wget} utility.")
     (build-system python-build-system)
     (arguments
      ;; No tests
-     `(#:tests? #f))
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-for-pygit2
+                    (lambda _
+                      (substitute* "offlate/systems/git.py"
+                        (("pygit2.remote.RemoteCallbacks")
+                         "pygit2.RemoteCallbacks")))))))
     (propagated-inputs
       (list python-android-stringslib
             python-dateutil
@@ -28211,13 +28315,13 @@ to:
 (define-public nikola
   (package
     (name "nikola")
-    (version "8.1.3")
+    (version "8.2.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "Nikola" version))
         (sha256
-          (base32 "1vspzvi4039zgjc93bspqjb384r6c9ksvmidbp8csws2pdbc7sh5"))))
+          (base32 "1h96y4sfypp2fbqxa8xrqch5f7r3srm2ly222k9w2n143h2spx4m"))))
     (build-system python-build-system)
     (propagated-inputs
       (list python-babel
@@ -28253,7 +28357,6 @@ to:
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
-                ;;(add-installed-pythonpath inputs outputs)
                 (invoke "pytest" "tests" "--no-cov"
                         "-k" "not test_compiling_markdown[hilite]")))))))
     (home-page "https://getnikola.com/")
@@ -29315,3 +29418,24 @@ profile.  It supports:
 
 Currently, Linux is the only platform supported by this library.")
     (license license:expat)))
+
+(define-public python-musical-scales
+  (package
+    (name "python-musical-scales")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "musical-scales" version))
+              (sha256
+               (base32
+                "1ckn8n37i7b65h0i385ycn0w8sg9na0iabz0kmhxxc1wj0hddkw9"))))
+    (build-system python-build-system)
+    (native-inputs (list python-wheel))
+    (home-page "https://github.com/hmillerbakewell/musical-scale")
+    (synopsis "Retrieve a scale based on a given mode and starting note")
+    (description
+     "Retrieve a scale based on a given mode and starting note.
+Information about these scales can be
+@url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on
+Wikipedia}.")
+    (license license:expat)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index db8bf5d576..ad475d8acc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -30,7 +30,7 @@
 ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2016–2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2018, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017, 2018, 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
@@ -673,7 +673,7 @@ To function properly, this package should not be installed together with the
 (define-public micropython
   (package
     (name "micropython")
-    (version "1.15")
+    (version "1.18")
     (source
       (origin
         (method url-fetch)
@@ -681,7 +681,7 @@ To function properly, this package should not be installed together with the
                             "releases/download/v" version
                             "/micropython-" version ".tar.xz"))
         (sha256
-         (base32 "04sfrfcljhfps340l4wh5ffwkhw1ydraday8nv92nv7gmnrj1l2j"))
+         (base32 "1d1yza02pwq3kh8531ryq9sjk7zjqh786nnw397cccfk5ss73z4n"))
       (modules '((guix build utils)))
       (snippet
        '(begin
@@ -689,37 +689,31 @@ To function properly, this package should not be installed together with the
           (with-directory-excursion "lib"
             ;; TODO: Unbundle axtls and berkley-db-1.xx
             (for-each delete-file-recursively
-                      '("libffi" "lwip" "stm32lib" "nrfx")))
-          #t))))
+                      '("libffi" "lwip" "stm32lib" "nrfx")))))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'build-mpy-cross
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (with-directory-excursion "mpy-cross"
-               (apply invoke "make" make-flags))))
-         (add-after 'build-mpy-cross 'prepare-build
-           (lambda _
-             (chdir "ports/unix")
-             ;; see: https://github.com/micropython/micropython/pull/4246
-             (substitute* "Makefile"
-               (("-Os") "-Os -ffp-contract=off"))
-             #t))
-         (replace 'install-license-files
-           ;; We don't build in the root directory so the file isn't found.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (dest (string-append out "/share/doc/" ,name "-" ,version "/")))
-               (install-file "../../LICENSE" dest))
-             #t))
-         (delete 'configure)) ; no configure
-       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-                          "V=1")
-       #:test-target "test"))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'build-mpy-cross
+                 (lambda* (#:key make-flags #:allow-other-keys)
+                   (with-directory-excursion "mpy-cross"
+                     (apply invoke "make" make-flags))))
+               (add-after 'build-mpy-cross 'prepare-build
+                 (lambda _
+                   (chdir "ports/unix")
+                   ;; see: https://github.com/micropython/micropython/pull/4246
+                   (substitute* "Makefile"
+                     (("-Os") "-Os -ffp-contract=off"))))
+               (add-before 'install-license-files 'chdir-back
+                 ;; We don't build in the root directory so the file isn't found.
+                 (lambda _
+                   (chdir "../..")))
+               (delete 'configure))       ; no configure
+           #:make-flags
+           #~(list (string-append "PREFIX=" #$output)
+                   "V=1")
+           #:test-target "test"))
+    (native-inputs (list pkg-config python-wrapper))
     (inputs
      (list libffi))
     (home-page "https://micropython.org/")
diff --git a/gnu/packages/rcm.scm b/gnu/packages/rcm.scm
index 5fab6250fd..6bdeeb7e9d 100644
--- a/gnu/packages/rcm.scm
+++ b/gnu/packages/rcm.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
-;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,13 +28,13 @@
 (define-public rcm
   (package
     (name "rcm")
-    (version "1.3.4")
+    (version "1.3.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://thoughtbot.github.io/rcm/dist/rcm-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0jn2crdqcna0fyg7w7x1mcyjblzykd3lh4vdxhsd5x4w8hvsw4cv"))))
+               (base32 "0bdyksrd9i3lkmr9kq6dwa0l4g2403vnma5s4j9h8spi4rziwx14"))))
     (build-system gnu-build-system)
     (arguments '(#:phases
                  (modify-phases %standard-phases
@@ -45,8 +45,7 @@
                                       "test/rcup-hooks-run-in-order.t")
                          (("/bin/sh") (which "sh")))
                        (substitute* "test/rcup-hooks.t"
-                         (("/usr/bin/env") (which "env")))
-                       #t)))
+                         (("/usr/bin/env") (which "env"))))))
                   #:parallel-tests? #f))
     (native-inputs (list perl python-cram))
     (synopsis "Management suite for dotfiles")
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 3050d7ec70..346313c7ed 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -138,14 +138,14 @@ rich set of boolean query operators.")
 (define-public perl-search-xapian
   (package
     (name "perl-search-xapian")
-    (version "1.2.25.4")
+    (version "1.2.25.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/O/OL/OLLY/"
                            "Search-Xapian-" version ".tar.gz"))
        (sha256
-        (base32 "1pbl8pbgmbs3i8yik4p63g4pd9bhn0dp3d7l667dkvw0kccl66c7"))))
+        (base32 "12xs22li1z10rccpxbb4zflkkdh7q37z9hb8nvx1ywfn2b3vskr0"))))
     (build-system perl-build-system)
     (native-inputs
      (list perl-devel-leak))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 5cf39ac7f4..cec9b68299 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2019, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
@@ -354,7 +354,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
 (define-public libcyaml
   (package
     (name "libcyaml")
-    (version "1.1.0")
+    (version "1.3.1")
     (source
      (origin
        (method git-fetch)
@@ -364,19 +364,16 @@ that implements both the msgpack and msgpack-rpc specifications.")
        (file-name (git-file-name name version))
        (patches (search-patches "libcyaml-libyaml-compat.patch"))
        (sha256
-        (base32 "0428p0rwq71nhh5nzcbapsbrjxa0x5l6h6ns32nxv7j624f0zd93"))))
+        (base32 "0gvf3h8r8300wdwfjgxw3nzlj7w14q63m67p8wdm5fvpha017n4y"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags
+     `(#:test-target "test"
+       #:make-flags
        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-             (string-append "CC=gcc"))
+             (string-append "CC=" ,(cc-for-target)))
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (replace 'check
-           (lambda _
-             (setenv "CC" "gcc")
-             (invoke "make" "test"))))))
+         (delete 'configure))))         ; no configure script
     (inputs
      (list libyaml))
     (native-inputs
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index 7afc36786d..9e92fbcc5b 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Eric Bavier <bavier@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -52,6 +52,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
@@ -818,48 +819,43 @@ tools and a collection of Python modules for programmatic use.")
 (define-public python-pygmsh
   (package
     (name "python-pygmsh")
-    (version "7.1.11")
+    (version "7.1.17")
     (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-              (url "https://github.com/nschloe/pygmsh")
-              (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-          (base32
-           "0g4yllmxks7yb50vild5xi1cma0yl16vsq6rfvdwmqaj4hwxcabk"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            (let ((file (open-file "setup.py" "a")))
-              (display "from setuptools import setup\nsetup()" file)
-              (close-port file))
-            ;; A reference to setuptools in the configuration file
-            ;; triggers an attempt to download the package from pypi.
-            ;; The reference is not needed since the package is
-            ;; provided by the build system.
-            (substitute* "setup.cfg"
-              (("^[[:blank:]]+setuptools>=42\n") ""))
-            #t))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nschloe/pygmsh")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "11flp2c4ynk1fhanf4mqyzrpd0gjbnv6afrwwc7xi3mb6ms69lr0"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("pytest" ,python-pytest)
-       ("wheel" ,python-wheel)))
-    (propagated-inputs
-     `(("importlib-metadata" ,python-importlib-metadata)
-       ("gmsh" ,gmsh)
-       ("meshio" ,python-meshio)
-       ("numpy" ,python-numpy)))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "-m" "pytest" "-v" "tests"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'workaround-gmsh-detection-failure
+            (lambda _
+              ;; Due to lack of metadata, the gmsh Python package is not
+              ;; detected although importable.
+              (substitute* "pyproject.toml"
+                (("\"gmsh\",") ""))))
+          ;; XXX: PEP 517 manual build copied from python-isort.
+          (replace 'build
+            (lambda _
+              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest" "-v" "tests"))))
+          (replace 'install
+            (lambda _
+              (let ((whl (car (find-files "dist" "\\.whl$"))))
+                (invoke "pip" "--no-cache-dir" "--no-input"
+                        "install" "--no-deps" "--prefix" #$output whl)))))))
+    (native-inputs (list python-pypa-build python-flit-core python-pytest))
+    (propagated-inputs (list gmsh python-meshio python-numpy))
     (home-page "https://github.com/nschloe/pygmsh")
     (synopsis "Python frontend for Gmsh")
     (description "The goal of @code{pygmsh} is to combine the power of
@@ -868,7 +864,7 @@ the methods and functions that comprise the Gmsh Python API.  In this
 way the meshing of complex geometries using high-level abstractions is
 made possible.  The package provides a Python library together with a
 command-line utility for mesh optimisation.")
-    (license license:lgpl3)))
+    (license license:gpl3+)))
 
 (define-public python-dolfin-adjoint
   (package
diff --git a/gnu/packages/sml.scm b/gnu/packages/sml.scm
index 04411c02c3..368abf6cfa 100644
--- a/gnu/packages/sml.scm
+++ b/gnu/packages/sml.scm
@@ -175,10 +175,22 @@ function interface, and a symbolic debugger.")
                        "sml.boot.amd64-unix/SMLNJ-BASIS/.cm/amd64-unix/basis-common.cm"))
 
              ;; Build.
-             (invoke "./config/install.sh" "-default"
-                     (if (string=? "i686-linux" ,(%current-system))
-                       "32"
-                       "64"))
+             ;; The `sml` executable built by this package somehow inherits the
+             ;; signal dispositions of the shell where it was built. If SIGINT
+             ;; is ignored in the shell, the resulting `sml` will also ignore
+             ;; SIGINT. This will break the use of Ctrl-c for interrupting
+             ;; execution in the SML/NJ REPL.
+             ;; Here, we use Guile's `system` procedure instead of Guix's
+             ;; `invoke` because `invoke` uses Guile's `system*`, which causes
+             ;; SIGINT and SIGQUIT to be ignored.
+             (let ((exit-code
+                     (system (string-append "./config/install.sh -default "
+                                            (if (string=? "i686-linux"
+                                                          ,(%current-system))
+                                              "32"
+                                              "64")))))
+               (unless (zero? exit-code)
+                 (error (format #f "Exit code: ~a" exit-code))))
 
              ;; Undo the binary patch.
              (for-each
@@ -317,7 +329,7 @@ function interface, and a symbolic debugger.")
         ,(smlnj-file version
                      "asdl.tgz"
                      "0mad2df5pmkdsb69gflxma6m6i3gla6hdmjjnkzk76pagpr8zb0m"))))
-    (home-page "http://www.smlnj.org")
+    (home-page "https://www.smlnj.org")
     (synopsis "Standard ML of New Jersey interactive compiler")
     (description
       "SML/NJ is an implementation of the Standard ML programming language.
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 2b4322d6d8..bd3b12cc7c 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2021, 2022 Remco van 't Veer <remco@remworks.net>
@@ -122,15 +122,21 @@ manage user, group and computer accounts for a domain.")
 (define-public ding-libs
   (package
     (name "ding-libs")
-    (version "0.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://releases.pagure.org/SSSD/ding-libs/"
-                                  "ding-libs-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1h97mx2jdv4caiz4r7y8rxfsq78fx0k4jjnfp7x2s7xqvqks66d3"))))
+    (version "0.6.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/SSSD/ding-libs")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17x3gj2yrjb6h7ml97xlim310x8s54n238p3ns2bj3mxifqkx0mf"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           '(list "--disable-static")))
+    (native-inputs (list autoconf automake gettext-minimal libtool pkg-config))
     (home-page "https://pagure.io/SSSD/ding-libs/")
     (synopsis "Libraries for SSSD")
     (description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 6e18fc3f4d..bef9de16d1 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
@@ -151,7 +151,7 @@ be output in text, PostScript, PDF or HTML.")
 (define-public jags
   (package
     (name "jags")
-    (version "4.3.0")
+    (version "4.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/mcmc-jags/JAGS/"
@@ -159,7 +159,7 @@ be output in text, PostScript, PDF or HTML.")
                                   "JAGS-" version ".tar.gz"))
               (sha256
                (base32
-                "1z3icccg2ic56vmhyrpinlsvpq7kcaflk1731rgpvz9bk1bxvica"))))
+                "0aa2w4g5057vn1qjp954s2kwxfmy1h7p5yn56fyi7sz9nmaq69gr"))))
     (build-system gnu-build-system)
     (home-page "http://mcmc-jags.sourceforge.net/")
     (native-inputs
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index d29486bd4b..86ae1c883f 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -59,14 +59,14 @@
 (define-public ceph
   (package
     (name "ceph")
-    (version "16.2.7")
+    (version "16.2.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0n7vpdcxji49bqaa5b7zxif1r80rrkbh0dfacbibvf20kzzbn2fz"))
+                "1yf62k9wlx9pmggwa5c05wfqzy28sdm4b465y4iqrgc9dkrgin08"))
               (patches
                (search-patches
                 "ceph-disable-cpu-optimizations.patch"
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 0fddfa9ffb..aeedbfbe6a 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -175,8 +175,8 @@ and querying data, exposing task data in multiple formats to other tools.")
       (synopsis "Program keeping track of time spent on different projects")
       (description
        "@code{worklog} is a program that helps you keep track of your time.
-@code{worklog} is a simple ncurses based based program that runs a clock and
-logs time to a logfile.")
+@code{worklog} is a simple ncurses based program that runs a clock and logs
+time to a logfile.")
       (license license:public-domain))))
 
 (define-public dstask
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 502aa90989..1dd3f09f90 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
 ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
+;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -10395,6 +10396,59 @@ provided box macros are @code{\\lapbox}, @code{\\marginbox},
 @code{\\minsizebox}, @code{\\maxsizebox} and @code{\\phantombox}.")
       (license license:lppl1.3))))
 
+(define-public texlive-qrcode
+  (package
+    (inherit (simple-texlive-package
+              "texlive-qrcode"
+              (list "doc/latex/qrcode/README"
+                    "source/latex/qrcode/qrcode.dtx"
+                    "source/latex/qrcode/qrcode.ins")
+              (base32
+               "1xfv0imrrbxjqwjapcf2silg19rwz2jinawy1x65c1krg919vn02")))
+    (outputs '("out" "doc"))
+    (arguments
+     (list
+      #:tex-directory "latex/qrcode"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'chdir
+            (lambda _
+              (setenv "ROOT_DIR" (getcwd))
+              (chdir "source/latex/qrcode")))
+          (add-after 'build 'build-doc
+            (lambda _
+              (copy-file "qrcode.dtx" "build/qrcode.dtx")
+              (chdir "build")
+              (invoke "xelatex" "qrcode.dtx")
+              (invoke "xelatex" "qrcode.dtx"))) ;generate qrcode.pdf
+          (replace 'install
+            (lambda* (#:key tex-directory #:allow-other-keys)
+              (let ((doc (string-append #$output:doc "/share/doc/"
+                                        tex-directory))
+                    (out (string-append #$output "/share/texmf-dist/tex/"
+                                        tex-directory)))
+                (install-file "qrcode.pdf" doc)
+                (install-file (car (find-files (getenv "ROOT_DIR") "README"))
+                              doc)
+                (install-file "qrcode.sty" out)))))))
+    (propagated-inputs
+     (list texlive-lm
+           texlive-latex-xkeyval
+           texlive-xcolor))
+    (native-inputs
+     (list (texlive-updmap.cfg (list texlive-lm texlive-zapfding))
+           texlive-hyperref
+           texlive-latex-xkeyval
+           texlive-stringenc
+           texlive-xcolor))
+    (home-page "https://www.ctan.org/pkg/qrcode")
+    (synopsis "QR codes without external tools")
+    (description "This package creates @acronym{QR,Quick Response} codes for
+LaTeX documents without depending on external graphics packages.  It supports
+generating codes of different sizes and with different error correction
+levels.  All functionality is provided by the single @code{\\qrcode} command.")
+    (license license:lppl1.3c+)))
+
 (define-public texlive-tcolorbox
   (let ((template (simple-texlive-package
                    "texlive-tcolorbox"
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index cb86a907ff..1c936be6a8 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2021 Calum Irwin <calumirwin1@gmail.com>
 ;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
+;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1132,6 +1133,38 @@ systems that displays its buffer(s) as a hex dump.  The user interface is kept
 similar to vi/ex.")
     (license license:bsd-3)))
 
+(define-public edlin
+  (package
+    (name "edlin")
+    (version "2.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/freedos-edlin/freedos-edlin/"
+                           version "/edlin-" version ".tar.bz2"))
+       (sha256
+        (base32 "0cdv42ffminncwj5ph9lw0j7zpbv8l35acppy90wj7x1qm4qk6x8"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-read-only
+           (lambda _
+             ;; Remove executable bits.
+             (chmod "COPYING" #o444)
+             (chmod "edlin.htm" #o444)))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((doc-dir (string-append (assoc-ref outputs "out")
+                                           "/share/doc/edlin-" ,version)))
+               (mkdir-p doc-dir)
+               (install-file "edlin.htm" doc-dir)))))))
+    (home-page "https://sourceforge.net/projects/freedos-edlin/")
+    (synopsis "The line editor of the FreeDOS operating system")
+    (description "The @code{edlin} program is a small line editor, written for
+FreeDOS as a functional clone of the old MS-DOS program edlin.")
+    (license license:gpl2+)))
+
 (define-public tree-sitter
   (package
     (name "tree-sitter")
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 4c4ccbb003..40f941fcea 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -455,14 +455,14 @@ Potential client and exit connections are scrubbed of sensitive information.")
 (define-public tractor
   (package
     (name "tractor")
-    (version "3.12")
+    (version "3.13")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "traxtor" version))
        (sha256
         (base32
-         "0bwj4l6szvx7hpjr8va3hlv0g79sxz02hsb60l61hb314c6d4r3q"))))
+         "0r8zzaia1s678d39cpqjfpb72fwc46lfwnz1rb043hi6grd39jl7"))))
     (build-system python-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")))       ; for glib-compile-schemas.
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index a43382e94f..eefb4a01ec 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -3370,3 +3370,40 @@ with more capabilities.  @command{git filter-repo} is now recommended by the
 Git project instead of @command{git filter-branch}.")
     (license (list license:expat ;; Main license.
                    license:gpl2)))) ;; For test harness.
+
+(define-public gitlint
+  (package
+    (name "gitlint")
+    (version "0.17.0")
+    (source (origin
+              (method url-fetch)
+              ;; the gitlint-core pypi package contains the actual gitlint
+              ;; code; the gitlint package only pulls in gitlint-core with
+              ;; stricter dependency versioning
+              (uri (pypi-uri "gitlint-core" version))
+              (sha256
+               (base32
+                "14cn89biys8r7mwcdgllv371k34km9k1941ylxf53a7sxwrzsbbp"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'loosen-requirements
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "gitlint/shell.py"
+                (("'git'") (string-append
+                            "'"
+                            (search-input-file inputs "bin/git")
+                            "'"))
+                ;; force using subprocess instead of sh so git does not need
+                ;; to be a propagated input
+                (("if USE_SH_LIB") "if False")))))))
+    (inputs
+     (list git python-arrow python-click python-sh))
+    (home-page "https://jorisroovers.com/gitlint/")
+    (synopsis "Linting Git commit messages")
+    (description
+     "Gitlint is a Git commit message linter written in Python: it checks your
+commit messages for style.")
+    (license license:expat)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 45e64b207a..48c7c3a46d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -121,6 +121,7 @@
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages docbook)
@@ -5337,14 +5338,14 @@ wlroots-based compositors.  More specifically, those that support
 (define-public guvcview
   (package
     (name "guvcview")
-    (version "2.0.6")
+    (version "2.0.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/guvcview/source/guvcview-"
-                                  "src-" version ".tar.gz"))
+                                  "src-" version ".tar.bz2"))
               (sha256
                (base32
-                "11byyfpkcik7wvf2qic77zjamfr2rhji97dpj1gy2fg1bvpiqf4m"))))
+                "108c4g0ns9i1wnxyalmpjqbhlflmrj855vxgggr6qrl6h924w7x2"))))
     (build-system gnu-build-system)
     (arguments
      ;; There are no tests and "make check" would fail on an intltool error.
@@ -5352,11 +5353,13 @@ wlroots-based compositors.  More specifically, those that support
     (native-inputs
      (list pkg-config intltool))
     (inputs
-     (list gtk+
+     (list bdb
+           gtk+
            eudev
+           libjpeg-turbo
            libusb
-           v4l-utils ;libv4l2
-           ffmpeg ;libavcodec, libavutil
+           v4l-utils                    ;libv4l2
+           ffmpeg                       ;libavcodec, libavutil
            sdl2
            gsl
            portaudio
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 554e7f623a..64d747a312 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -2267,17 +2267,17 @@ instance of a component on each request.")
 (define-public perl-catalyst-devel
   (package
     (name "perl-catalyst-devel")
-    (version "1.41")
+    (version "1.42")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Catalyst-Devel-" version ".tar.gz"))
        (sha256
-        (base32 "1r8arq7sw37d0mjyfzkc3pg1a9plgydqbscryc8qpvba4swpljls"))))
+        (base32 "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky"))))
     (build-system perl-build-system)
     (native-inputs
-     (list perl-test-fatal))
+     (list perl-file-sharedir-install perl-test-fatal))
     (propagated-inputs
      (list perl-catalyst-action-renderview
            perl-catalyst-plugin-configloader
@@ -5526,6 +5526,12 @@ w3c webidl files and a binding configuration file.")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
+         (add-after 'unpack 'remove-timestamps
+           ;; Avoid embedding timestamp for reproducible builds
+           (lambda _
+             (substitute* "utils/git-testament.pl"
+               (("WT_COMPILEDATE ..$compiledate")
+                "WT_COMPILEDATE \\\""))))
          (add-after 'build 'adjust-welcome
            (lambda _
              (substitute* "frontends/gtk/res/welcome.html"
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index e5a98edb35..d345bc461d 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -54,6 +54,7 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 Derek Chuank <derekchuank@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1499,6 +1500,35 @@ This is a fork with added support for Wayland using the wlr-gamma-control
 protocol.")
       (license license:gpl3+))))
 
+(define-public xwhite
+  (package
+    (name "xwhite")
+    (version "0.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/derekchuank/xwhite/"
+                                  "releases/download/v" version
+                                  "/xwhite-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0jbnlj5a91ib4anprmylqqnbv9wa73cr7fsc1s54df0a0w5yq8sz"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:tests? #f)) ;No test suite.
+    (native-inputs (list pkg-config))
+    (inputs (list libxrandr))
+    (home-page "https://github.com/derekchuank/xwhite")
+    (synopsis "Adjust the color balance")
+    (description
+     "@command{xwhite} is a command line tool for adjusting the colour
+balance of screen.  It is based on xrandr's gamma correction and brightness adjustment.
+As such, it can only be used for X displays and not Wayland displays.  It is typically
+used for tuning the color balance and color temperature.  It has a similar function as
+@command{redshift -P -g R:G:B -O temperature}, but @command{xwhite} is more flexible
+in that it does not keep the white color fixed, suitable for setting the white color
+to an arbitrary balanced color.")
+    (license license:gpl2)))
+
 (define-public gammastep
   (package
     (name "gammastep")
@@ -2320,16 +2350,16 @@ temperature of the screen.")
     (native-inputs
      (list pandoc pkg-config))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("libX11" ,libx11)
-       ("libxcomposite" ,libxcomposite)
-       ("libxext" ,libxext)
-       ("libxfixes" ,libxfixes)
-       ("libxft" ,libxft)
-       ("libxmu" ,libxmu)
-       ("libxrandr" ,libxrandr)
-       ("libxscrnsaver" ,libxscrnsaver)
-       ("linux-pam" ,linux-pam)))
+     (list fontconfig
+           libx11
+           libxcomposite
+           libxext
+           libxfixes
+           libxft
+           libxmu
+           libxrandr
+           libxscrnsaver
+           linux-pam))
     (home-page "https://github.com/google/xsecurelock")
     (synopsis "X11 screen lock utility with the primary goal of security")
     (description "@code{xsecurelock} is an X11 screen locker which uses
@@ -2339,9 +2369,11 @@ As a consequence of the modular design, the usual screen locker service
 shouldn't be used with @code{xsecurelock}.  Instead, you need to add a helper
 binary to setuid-binaries:
 @example
-(setuid-programs (cons*
-                   (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")
-                   %setuid-programs))
+(setuid-programs
+ (cons*
+  (setuid-program
+   (program (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")))
+  %setuid-programs))
 @end example")
     (license license:asl2.0)))
 
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index c26ca68672..0ae51d2e2b 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
@@ -955,17 +955,17 @@ a schema.")
 (define-public perl-xml-compile-soap
   (package
     (name "perl-xml-compile-soap")
-    (version "3.24")
+    (version "3.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
                                   "XML-Compile-SOAP-" version ".tar.gz"))
               (sha256
                (base32
-                "0pkcph562l2ij7rlwlvm58v6y062qsbydfpaz2qnph2ixqy0xfd1"))))
+                "1a3650al287x781i3flylwbik1ss3xfw7sgdcaz5qrjqvhpn6mnn"))))
     (build-system perl-build-system)
     (propagated-inputs
-     (list perl-file-slurp-tiny
+     (list perl-file-slurper
            perl-libwww
            perl-log-report
            perl-xml-compile
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index daf253a30f..29271cd534 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6486,6 +6486,8 @@ X11 servers, Windows, or macOS.")
                   (guix build emacs-utils))
        #:imported-modules (,@%gnu-build-system-modules
                            (guix build emacs-utils))
+       #:parallel-build? #f ; for reproducible generation of
+                            ; share/uim/installed-modules.scm
        #:configure-flags
        (list "--with-anthy-utf8"
              (string-append "--with-lispdir=" %output "/share/emacs")
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 3fb92e6da0..6865d03f25 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1397,23 +1397,24 @@ responsible for logging system messages.")))
      # level notice or higher and anything of level err or
      # higher to the console.
      # Don't log private authentication messages!
-     *.alert;auth.notice;authpriv.none       /dev/console
+     *.alert;auth.notice;authpriv.none      -/dev/console
 
      # Log anything (except mail) of level info or higher.
      # Don't log private authentication messages!
-     *.info;mail.none;authpriv.none          /var/log/messages
+     *.info;mail.none;authpriv.none         -/var/log/messages
 
-     # Like /var/log/messages, but also including \"debug\"-level logs.
-     *.debug;mail.none;authpriv.none         /var/log/debug
+     # Log \"debug\"-level entries and nothing else.
+     *.=debug                               -/var/log/debug
 
      # Same, in a different place.
-     *.info;mail.none;authpriv.none          /dev/tty12
+     *.info;mail.none;authpriv.none         -/dev/tty12
 
      # The authpriv file has restricted access.
+     # 'fsync' the file after each line (hence the lack of a leading dash).
      authpriv.*                              /var/log/secure
 
      # Log all the mail messages in one place.
-     mail.*                                  /var/log/maillog
+     mail.*                                 -/var/log/maillog
 "))
 
 (define* (syslog-service #:optional (config (syslog-configuration)))
@@ -1438,7 +1439,8 @@ information on the configuration file syntax."
                               (module "pam_limits.so")
                               (arguments '("conf=/etc/security/limits.conf")))))
              (if (member (pam-service-name pam)
-                         '("login" "su" "slim" "gdm-password" "sddm"))
+                         '("login" "su" "slim" "gdm-password" "sddm"
+                           "sudo" "sshd"))
                  (pam-service
                   (inherit pam)
                   (session (cons pam-limits
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index a220b33f15..50753b7ab6 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -978,8 +978,7 @@ manually.")
 
 (define (ddclient-activation config)
   "Return the activation GEXP for CONFIG."
-  (with-imported-modules '((guix build utils)
-                           (ice-9 rdelim))
+  (with-imported-modules '((guix build utils))
     #~(begin
         (use-modules (guix build utils)
                      (ice-9 rdelim))
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index 413bf51ad8..ad7b020b69 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -643,7 +643,7 @@ ca-certificates.crt file in the system profile."
                 #:group #$group
                 #:pid-file "/var/run/guix-data-service/pid"
                 ;; Allow time for migrations to run
-                #:pid-file-timeout 60
+                #:pid-file-timeout 120
                 #:environment-variables
                 `(,(string-append
                     "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm
index ec1acba416..48eff27b49 100644
--- a/gnu/services/messaging.scm
+++ b/gnu/services/messaging.scm
@@ -20,9 +20,10 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu services messaging)
-  #:use-module (gnu packages messaging)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages irc)
+  #:use-module (gnu packages messaging)
   #:use-module (gnu packages tls)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
@@ -829,12 +830,15 @@ string, you could instantiate a prosody service like this:
                        (file-append bitlbee "/sbin/bitlbee")
                        #:name "bitlbee"
                        #:preserved-environment-variables
-                       '("PURPLE_PLUGIN_PATH")
+                       '("PURPLE_PLUGIN_PATH" "GUIX_LOCPATH" "LC_ALL")
                        #:mappings (list (file-system-mapping
                                          (source "/var/lib/bitlbee")
                                          (target source)
                                          (writable? #t))
                                         (file-system-mapping
+                                         (source "/run/current-system/locale")
+                                         (target source))
+                                        (file-system-mapping
                                          (source conf)
                                          (target conf)))
                        #:namespaces (delq 'net %namespaces))))
@@ -867,7 +871,8 @@ string, you could instantiate a prosody service like this:
                               ;; Allow 'bitlbee-purple' to use libpurple plugins.
                               #:environment-variables
                               (list (string-append "PURPLE_PLUGIN_PATH="
-                                                   #$plugins "/lib/purple-2")))
+                                                   #$plugins "/lib/purple-2")
+                                    "GUIX_LOCPATH=/run/current-system/locale"))
 
                              (make-forkexec-constructor/container
                               (list #$(file-append bitlbee "/sbin/bitlbee")
diff --git a/gnu/system.scm b/gnu/system.scm
index ba3a1865d7..2c81478d00 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -300,7 +300,7 @@ VERSION is the target version of the boot-parameters record."
 (define* (operating-system-kernel-arguments
           os root-device #:key (version %boot-parameters-version))
   "Return all the kernel arguments, including the ones not specified directly
-by the user.  VERSION should match that of the target <boot-parameter> record
+by the user.  VERSION should match that of the target <boot-parameters> record
 object that will contain the kernel parameters."
   (append (bootable-kernel-arguments os root-device version)
           (operating-system-user-kernel-arguments os)))
@@ -515,6 +515,7 @@ The object has its kernel-arguments extended in order to make it bootable."
                                (boot-parameters-kernel-arguments params))))))
 
 (define (boot-parameters->menu-entry conf)
+  "Return a <menu-entry> instance given CONF, a <boot-parameters> instance."
   (let* ((kernel (boot-parameters-kernel conf))
          (multiboot-modules (boot-parameters-multiboot-modules conf))
          (multiboot? (pair? multiboot-modules)))
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 2fbf08f676..a3646b1d54 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,8 +32,10 @@
   #:use-module (guix store)
   #:use-module (guix monads)
   #:use-module (guix modules)
-  #:use-module ((guix packages) #:select (package-version))
+  #:use-module ((guix packages) #:select (package-version supported-package?))
+  #:use-module (guix platform)
   #:use-module ((guix store) #:select (%store-prefix))
+  #:use-module (guix utils)
   #:use-module (gnu installer)
   #:use-module (gnu system locale)
   #:use-module (gnu services avahi)
@@ -283,11 +286,7 @@ templates under @file{/etc/configuration}.")))
          (provision '(maybe-uvesafb))
          (requirement '(file-systems))
          (start #~(lambda ()
-                    ;; uvesafb is only supported on x86 and x86_64.
-                    (or (not (and (string-suffix? "linux-gnu" %host-type)
-                                  (or (string-prefix? "x86_64" %host-type)
-                                      (string-prefix? "i686" %host-type))))
-                        (file-exists? "/dev/fb0")
+                    (or (file-exists? "/dev/fb0")
                         (invoke #+(file-append kmod "/bin/modprobe")
                                 "uvesafb"
                                 (string-append "v86d=" #$v86d "/sbin/v86d")
@@ -305,7 +304,10 @@ templates under @file{/etc/configuration}.")))
     "Load the @code{uvesafb} kernel module with the right options.")
    (default-value #t)))
 
-(define %installation-services
+(define* (%installation-services #:key (system (or (and=>
+                                                    (%current-target-system)
+                                                    platform-target->system)
+                                                   (%current-system))))
   ;; List of services of the installation system.
   (let ((motd (plain-file "motd" "
 \x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m
@@ -322,119 +324,125 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
     (define bare-bones-os
       (load "examples/bare-bones.tmpl"))
 
-    (list (service virtual-terminal-service-type)
-
-          (service kmscon-service-type
-                   (kmscon-configuration
-                    (virtual-terminal "tty1")
-                    (login-program (installer-program))))
-
-          (login-service (login-configuration
-                          (motd motd)))
-
-          ;; Documentation.  The manual is in UTF-8, but
-          ;; 'console-font-service' sets up Unicode support and loads a font
-          ;; with all the useful glyphs like em dash and quotation marks.
-          (service documentation-service-type "tty2")
-
-          ;; Documentation add-on.
-          %configuration-template-service
-
-          ;; A bunch of 'root' ttys.
-          (normal-tty "tty3")
-          (normal-tty "tty4")
-          (normal-tty "tty5")
-          (normal-tty "tty6")
-
-          ;; The usual services.
-          (syslog-service)
-
-          ;; Use the Avahi daemon to discover substitute servers on the local
-          ;; network.  It can be faster than fetching from remote servers.
-          (service avahi-service-type)
-
-          ;; The build daemon.  Register the default substitute server key(s)
-          ;; as trusted to allow the installation process to use substitutes by
-          ;; default.
-          (service guix-service-type
-                   (guix-configuration (authorize-key? #t)))
-
-          ;; Start udev so that useful device nodes are available.
-          ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
-          ;; regulations-compliant WiFi access.
-          (udev-service #:rules (list lvm2 crda))
-
-          ;; Add the 'cow-store' service, which users have to start manually
-          ;; since it takes the installation directory as an argument.
-          (cow-store-service)
-
-          ;; Install Unicode support and a suitable font.
-          (service console-font-service-type
-                   (map (match-lambda
-                          ("tty2"
-                           ;; Use a font that contains characters such as
-                           ;; curly quotes as found in the manual.
-                           '("tty2" . "LatGrkCyr-8x16"))
-                          (tty
-                           ;; Use a font that doesn't have more than 256
-                           ;; glyphs so that we can use colors with varying
-                           ;; brightness levels (see note in setfont(8)).
-                           `(,tty . "lat9u-16")))
-                        '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
-
-          ;; To facilitate copy/paste.
-          (service gpm-service-type)
-
-          ;; Add an SSH server to facilitate remote installs.
-          (service openssh-service-type
-                   (openssh-configuration
-                    (port-number 22)
-                    (permit-root-login #t)
-                    ;; The root account is passwordless, so make sure
-                    ;; a password is set before allowing logins.
-                    (allow-empty-passwords? #f)
-                    (password-authentication? #t)
-
-                    ;; Don't start it upfront.
-                    (%auto-start? #f)))
-
-          ;; Since this is running on a USB stick with a overlayfs as the root
-          ;; file system, use an appropriate cache configuration.
-          (nscd-service (nscd-configuration
-                         (caches %nscd-minimal-caches)))
-
-          ;; Having /bin/sh is a good idea.  In particular it allows Tramp
-          ;; connections to this system to work.
-          (service special-files-service-type
-                   `(("/bin/sh" ,(file-append bash "/bin/sh"))))
-
-          ;; Loopback device, needed by OpenSSH notably.
-          (service static-networking-service-type
-                   (list %loopback-static-networking))
-
-          (service wpa-supplicant-service-type)
-          (dbus-service)
-          (service connman-service-type
-                   (connman-configuration
-                    (disable-vpn? #t)))
-
-          ;; Keep a reference to BARE-BONES-OS to make sure it can be
-          ;; installed without downloading/building anything.  Also keep the
-          ;; things needed by 'profile-derivation' to minimize the amount of
-          ;; download.
-          (service gc-root-service-type
-                   (append
-                    (list bare-bones-os
-                          glibc-utf8-locales
-                          texinfo
-                          guile-3.0)
-                    %default-locale-libcs))
-
-          ;; Machines without Kernel Mode Setting (those with many old and
-          ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI
-          ;; installer.  Some may also need a kernel parameter like nomodeset
-          ;; or vga=793, but we leave that for the user to specify in GRUB.
-          (service uvesafb-service-type))))
+    (append
+     ;; Generic services
+     (list (service virtual-terminal-service-type)
+
+           (service kmscon-service-type
+                    (kmscon-configuration
+                     (virtual-terminal "tty1")
+                     (login-program (installer-program))))
+
+           (login-service (login-configuration
+                           (motd motd)))
+
+           ;; Documentation.  The manual is in UTF-8, but
+           ;; 'console-font-service' sets up Unicode support and loads a font
+           ;; with all the useful glyphs like em dash and quotation marks.
+           (service documentation-service-type "tty2")
+
+           ;; Documentation add-on.
+           %configuration-template-service
+
+           ;; A bunch of 'root' ttys.
+           (normal-tty "tty3")
+           (normal-tty "tty4")
+           (normal-tty "tty5")
+           (normal-tty "tty6")
+
+           ;; The usual services.
+           (syslog-service)
+
+           ;; Use the Avahi daemon to discover substitute servers on the local
+           ;; network.  It can be faster than fetching from remote servers.
+           (service avahi-service-type)
+
+           ;; The build daemon.  Register the default substitute server key(s)
+           ;; as trusted to allow the installation process to use substitutes by
+           ;; default.
+           (service guix-service-type
+                    (guix-configuration (authorize-key? #t)))
+
+           ;; Start udev so that useful device nodes are available.
+           ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
+           ;; regulations-compliant WiFi access.
+           (udev-service #:rules (list lvm2 crda))
+
+           ;; Add the 'cow-store' service, which users have to start manually
+           ;; since it takes the installation directory as an argument.
+           (cow-store-service)
+
+           ;; Install Unicode support and a suitable font.
+           (service console-font-service-type
+                    (map (match-lambda
+                           ("tty2"
+                            ;; Use a font that contains characters such as
+                            ;; curly quotes as found in the manual.
+                            '("tty2" . "LatGrkCyr-8x16"))
+                           (tty
+                            ;; Use a font that doesn't have more than 256
+                            ;; glyphs so that we can use colors with varying
+                            ;; brightness levels (see note in setfont(8)).
+                            `(,tty . "lat9u-16")))
+                         '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
+
+           ;; To facilitate copy/paste.
+           (service gpm-service-type)
+
+           ;; Add an SSH server to facilitate remote installs.
+           (service openssh-service-type
+                    (openssh-configuration
+                     (port-number 22)
+                     (permit-root-login #t)
+                     ;; The root account is passwordless, so make sure
+                     ;; a password is set before allowing logins.
+                     (allow-empty-passwords? #f)
+                     (password-authentication? #t)
+
+                     ;; Don't start it upfront.
+                     (%auto-start? #f)))
+
+           ;; Since this is running on a USB stick with a overlayfs as the root
+           ;; file system, use an appropriate cache configuration.
+           (nscd-service (nscd-configuration
+                          (caches %nscd-minimal-caches)))
+
+           ;; Having /bin/sh is a good idea.  In particular it allows Tramp
+           ;; connections to this system to work.
+           (service special-files-service-type
+                    `(("/bin/sh" ,(file-append bash "/bin/sh"))))
+
+           ;; Loopback device, needed by OpenSSH notably.
+           (service static-networking-service-type
+                    (list %loopback-static-networking))
+
+           (service wpa-supplicant-service-type)
+           (dbus-service)
+           (service connman-service-type
+                    (connman-configuration
+                     (disable-vpn? #t)))
+
+           ;; Keep a reference to BARE-BONES-OS to make sure it can be
+           ;; installed without downloading/building anything.  Also keep the
+           ;; things needed by 'profile-derivation' to minimize the amount of
+           ;; download.
+           (service gc-root-service-type
+                    (append
+                     (list bare-bones-os
+                           glibc-utf8-locales
+                           texinfo
+                           guile-3.0)
+                     %default-locale-libcs)))
+
+     ;; Specific system services
+
+     ;; Machines without Kernel Mode Setting (those with many old and
+     ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI
+     ;; installer.  Some may also need a kernel parameter like nomodeset
+     ;; or vga=793, but we leave that for the user to specify in GRUB.
+     `(,@(if (supported-package? v86d system)
+             (list (service uvesafb-service-type))
+             '())))))
 
 (define %issue
   ;; Greeting.
@@ -498,7 +506,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
                   (comment "Guest of GNU"))))
 
     (issue %issue)
-    (services %installation-services)
+    (services (%installation-services))
 
     ;; We don't need setuid programs, except for 'passwd', which can be handy
     ;; if one is to allow remote SSH login to the machine being installed.
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index 628cd0549b..299acc4945 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
-;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
@@ -31,8 +31,8 @@
   #:use-module (gnu services dbus)
   #:use-module (gnu services networking)
   #:use-module (gnu services virtualization)
-  #:use-module (gnu packages virtualization)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages virtualization)
   #:use-module (guix gexp)
   #:use-module (guix records)
   #:use-module (guix store)
@@ -151,8 +151,8 @@
      (operating-system os)
      (memory-size (* 1024 3))))
 
-  (define run-uname-over-ssh
-    ;; Program that runs 'uname' over SSH and prints the result on standard
+  (define (run-command-over-ssh . command)
+    ;; Program that runs COMMAND over SSH and prints the result on standard
     ;; output.
     (let ()
       (define run
@@ -173,12 +173,12 @@
                    (userauth-password! session "")
                    (display
                     (get-string-all
-                     (open-remote-input-pipe* session "uname" "-on"))))
+                     (open-remote-input-pipe* session #$@command))))
                   (status
                    (error "could not connect to childhurd over SSH"
                           session status)))))))
 
-      (program-file "run-uname-over-ssh" run)))
+      (program-file "run-command-over-ssh" run)))
 
   (define test
     (with-imported-modules '((gnu build marionette))
@@ -242,9 +242,27 @@
                 (use-modules (ice-9 popen))
 
                 (get-string-all
-                 (open-input-pipe #$run-uname-over-ssh)))
+                 (open-input-pipe #$(run-command-over-ssh "uname" "-on"))))
              marionette))
 
+          (test-assert "guix-daemon up and running"
+            (let ((drv (marionette-eval
+                        '(begin
+                           (use-modules (ice-9 popen))
+
+                           (get-string-all
+                            (open-input-pipe
+                             #$(run-command-over-ssh "guix" "build" "coreutils"
+                                                     "--no-grafts" "-d"))))
+                        marionette)))
+              ;; We cannot compare the .drv with (raw-derivation-file
+              ;; coreutils) on the host: they may differ due to fixed-output
+              ;; derivations and changes introduced compared to the 'guix'
+              ;; package snapshot.
+              (and (string-suffix? ".drv"
+                                   (pk 'drv (string-trim-right drv)))
+                   drv)))
+
           (test-end))))
 
   (gexp->derivation "childhurd-test" test))