summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-12 09:02:49 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-12-12 09:02:49 -0500
commitf184be73defd62f46a14dbdb96df3fa61806f3be (patch)
tree842b127645c7a3f5ef6383262a3358a3340e4cda /gnu
parentc9974889ef69fbe6199a9bb1cb2fa5a594130114 (diff)
parent94e9651241b3e827531779717952d386535801f3 (diff)
downloadguix-f184be73defd62f46a14dbdb96df3fa61806f3be.tar.gz
Merge remote-tracking branch 'origin/master' into staging
Diffstat (limited to 'gnu')
-rw-r--r--gnu/bootloader/grub.scm2
-rw-r--r--gnu/build/image.scm5
-rw-r--r--gnu/installer.scm25
-rw-r--r--gnu/installer/parted.scm34
-rw-r--r--gnu/local.mk7
-rw-r--r--gnu/packages/admin.scm37
-rw-r--r--gnu/packages/apparmor.scm202
-rw-r--r--gnu/packages/astronomy.scm58
-rw-r--r--gnu/packages/audio.scm14
-rw-r--r--gnu/packages/bioinformatics.scm6
-rw-r--r--gnu/packages/bootloaders.scm34
-rw-r--r--gnu/packages/check.scm45
-rw-r--r--gnu/packages/chromium.scm13
-rw-r--r--gnu/packages/crates-graphics.scm24
-rw-r--r--gnu/packages/crates-gtk.scm25
-rw-r--r--gnu/packages/crates-io.scm361
-rw-r--r--gnu/packages/cross-base.scm170
-rw-r--r--gnu/packages/databases.scm4
-rw-r--r--gnu/packages/dav.scm39
-rw-r--r--gnu/packages/debug.scm29
-rw-r--r--gnu/packages/disk.scm3
-rw-r--r--gnu/packages/documentation.scm27
-rw-r--r--gnu/packages/emacs-xyz.scm403
-rw-r--r--gnu/packages/embedded.scm71
-rw-r--r--gnu/packages/emulators.scm4
-rw-r--r--gnu/packages/engineering.scm4
-rw-r--r--gnu/packages/enlightenment.scm4
-rw-r--r--gnu/packages/finance.scm17
-rw-r--r--gnu/packages/freedesktop.scm7
-rw-r--r--gnu/packages/game-development.scm28
-rw-r--r--gnu/packages/games.scm57
-rw-r--r--gnu/packages/gnome-xyz.scm10
-rw-r--r--gnu/packages/gnome.scm59
-rw-r--r--gnu/packages/gnuzilla.scm8
-rw-r--r--gnu/packages/graphics.scm4
-rw-r--r--gnu/packages/guile-xyz.scm43
-rw-r--r--gnu/packages/guile.scm10
-rw-r--r--gnu/packages/i2p.scm4
-rw-r--r--gnu/packages/image-viewers.scm12
-rw-r--r--gnu/packages/image.scm13
-rw-r--r--gnu/packages/jami.scm1
-rw-r--r--gnu/packages/julia-xyz.scm222
-rw-r--r--gnu/packages/julia.scm265
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/libevent.scm11
-rw-r--r--gnu/packages/linux.scm348
-rw-r--r--gnu/packages/lisp-xyz.scm111
-rw-r--r--gnu/packages/lisp.scm4
-rw-r--r--gnu/packages/llvm.scm133
-rw-r--r--gnu/packages/loko.scm75
-rw-r--r--gnu/packages/machine-learning.scm117
-rw-r--r--gnu/packages/mail.scm6
-rw-r--r--gnu/packages/mastodon.scm11
-rw-r--r--gnu/packages/maths.scm44
-rw-r--r--gnu/packages/mes.scm2
-rw-r--r--gnu/packages/messaging.scm8
-rw-r--r--gnu/packages/minetest.scm23
-rw-r--r--gnu/packages/monitoring.scm31
-rw-r--r--gnu/packages/onc-rpc.scm2
-rw-r--r--gnu/packages/package-management.scm8
-rw-r--r--gnu/packages/parallel.scm16
-rw-r--r--gnu/packages/patches/jami-sipaccount-segfault.patch30
-rw-r--r--gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch5
-rw-r--r--gnu/packages/patches/julia-allow-parallel-build.patch32
-rw-r--r--gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch40
-rw-r--r--gnu/packages/patches/python-seaborn-2690.patch268
-rw-r--r--gnu/packages/patches/python-seaborn-kde-test.patch36
-rw-r--r--gnu/packages/patches/u-boot-allow-disabling-openssl.patch66
-rw-r--r--gnu/packages/perl.scm34
-rw-r--r--gnu/packages/photo.scm67
-rw-r--r--gnu/packages/protobuf.scm13
-rw-r--r--gnu/packages/python-science.scm20
-rw-r--r--gnu/packages/python-web.scm61
-rw-r--r--gnu/packages/python-xyz.scm245
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/rust-apps.scm25
-rw-r--r--gnu/packages/shells.scm4
-rw-r--r--gnu/packages/sqlite.scm5
-rw-r--r--gnu/packages/telephony.scm104
-rw-r--r--gnu/packages/textutils.scm10
-rw-r--r--gnu/packages/tls.scm38
-rw-r--r--gnu/packages/video.scm8
-rw-r--r--gnu/packages/web.scm45
-rw-r--r--gnu/packages/wm.scm36
-rw-r--r--gnu/packages/xdisorg.scm14
-rw-r--r--gnu/services/base.scm4
-rw-r--r--gnu/services/configuration.scm8
-rw-r--r--gnu/services/cuirass.scm24
-rw-r--r--gnu/services/monitoring.scm32
-rw-r--r--gnu/services/vpn.scm4
-rw-r--r--gnu/system.scm21
-rw-r--r--gnu/system/examples/raspberry-pi-64-nfs-root.tmpl7
-rw-r--r--gnu/system/examples/raspberry-pi-64.tmpl7
-rw-r--r--gnu/system/images/pine64.scm21
-rw-r--r--gnu/system/install.scm20
-rw-r--r--gnu/tests/gdm.scm127
-rw-r--r--gnu/tests/install.scm2
97 files changed, 2991 insertions, 1860 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index aab766fd6c..ecd44e7f3c 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -392,7 +392,7 @@ when booting a root file system on a Btrfs subvolume."
           ;; DEVICE-MOUNT-POINT is not "/", meaning that the store is on a
           ;; separate partition.
 
-          ;; When BTRFS-SUBVOLUME-FILE-NAME is defined, prepend it the linux and
+          ;; When STORE-DIRECTORY-PREFIX is defined, prepend it the linux and
           ;; initrd paths, to allow booting from a Btrfs subvolume.
           #~(format port "menuentry ~s {
   ~a
diff --git a/gnu/build/image.scm b/gnu/build/image.scm
index 2327cfbb45..65a0373980 100644
--- a/gnu/build/image.scm
+++ b/gnu/build/image.scm
@@ -111,7 +111,10 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
                            (if (eq? size 'guess)
                                (estimate-partition-size root)
                                size))
-                    (if (member 'esp flags) (list "-S" "1024") '()))
+                    ;; u-boot in particular needs the formatted block
+                    ;; size and the physical block size to be equal.
+                    ;; TODO: What about 4k blocks?
+                    (if (member 'esp flags) (list "-S" "512") '()))
     (for-each (lambda (file)
                 (unless (member file '("." ".."))
                   (invoke "mcopy" "-bsp" "-i" target
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 0e40b81224..d9b71e2ca8 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -27,6 +27,8 @@
   #:use-module (guix utils)
   #:use-module (guix ui)
   #:use-module ((guix self) #:select (make-config.scm))
+  #:use-module (guix describe)
+  #:use-module (guix channels)
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (gnu installer utils)
@@ -52,6 +54,7 @@
   #:use-module (gnu system locale)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (web uri)
   #:export (installer-program))
 
 (define module-to-import?
@@ -315,6 +318,25 @@ selected keymap."
              ((installer-final-page current-installer)
               result prev-steps))))))))
 
+(define (provenance-sexp)
+  "Return an sexp representing the currently-used channels, for logging
+purposes."
+  (match (match (current-channels)
+           (() (and=> (repository->guix-channel (dirname (current-filename)))
+                      list))
+           (channels channels))
+    (#f
+     (warning (G_ "cannot determine installer provenance~%"))
+     'unknown)
+    ((channels ...)
+     (map (lambda (channel)
+            (let* ((uri (string->uri (channel-url channel)))
+                   (url (if (or (not uri) (eq? 'file (uri-scheme uri)))
+                            "local checkout"
+                            (channel-url channel))))
+             `(channel ,(channel-name channel) ,url ,(channel-commit channel))))
+          channels))))
+
 (define (installer-program)
   "Return a file-like object that runs the given INSTALLER."
   (define init-gettext
@@ -429,6 +451,9 @@ selected keymap."
             (define current-installer newt-installer)
             (define steps (#$steps current-installer))
 
+            (installer-log-line "installer provenance: ~s"
+                                '#$(provenance-sexp))
+
             (dynamic-wind
               (installer-init current-installer)
               (lambda ()
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 82375d29e3..51fa7cf9d9 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -379,12 +379,44 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation."
 (define %min-device-size
   (* 2 GIBIBYTE-SIZE)) ;2GiB
 
+(define (mapped-device? device)
+  "Return #true if DEVICE is a mapped device, false otherwise."
+  (string-prefix? "/dev/dm-" device))
+
+;; TODO: Use DM_TABLE_DEPS ioctl instead of dmsetup.
+(define (mapped-device-parent-partition device)
+  "Return the parent partition path of the mapped DEVICE."
+  (let* ((command `("dmsetup" "deps" ,device "-o" "devname"))
+         (parent #f)
+         (handler
+          (lambda (input)
+            ;; We are parsing an output that should look like:
+            ;; 1 dependencies  : (sda2)
+            (let ((result
+                   (string-match "\\(([^\\)]+)\\)"
+                                 (get-string-all input))))
+              (and result
+                   (set! parent
+                         (format #f "/dev/~a"
+                                 (match:substring result 1))))))))
+    (run-external-command-with-handler handler command)
+    parent))
+
 (define (eligible-devices)
   "Return all the available devices except the install device and the devices
 which are smaller than %MIN-DEVICE-SIZE."
 
   (define the-installer-root-partition-path
-    (installer-root-partition-path))
+    (let ((root (installer-root-partition-path)))
+      (cond
+       ((mapped-device? root)
+        ;; If the partition is a mapped device (/dev/dm-X), locate the parent
+        ;; partition.  It is the case when Ventoy is used to host the
+        ;; installation image.
+        (let ((parent (mapped-device-parent-partition root)))
+          (installer-log-line "mapped device ~a -> ~a" parent root)
+          parent))
+       (else root))))
 
   (define (small-device? device)
     (let ((length (device-length device))
diff --git a/gnu/local.mk b/gnu/local.mk
index 777c069de7..7991f0e2e5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -116,6 +116,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/anthy.scm			\
   %D%/packages/antivirus.scm			\
   %D%/packages/apl.scm				\
+  %D%/packages/apparmor.scm			\
   %D%/packages/apr.scm				\
   %D%/packages/arcan.scm			\
   %D%/packages/aspell.scm			\
@@ -759,6 +760,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests/docker.scm				\
   %D%/tests/file-sharing.scm			\
   %D%/tests/ganeti.scm				\
+  %D%/tests/gdm.scm				\
   %D%/tests/guix.scm				\
   %D%/tests/monitoring.scm                      \
   %D%/tests/nfs.scm				\
@@ -1346,6 +1348,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/jami-fix-unit-tests-build.patch          \
   %D%/packages/patches/jami-libjami-headers-search.patch	\
   %D%/packages/patches/jami-no-webengine.patch			\
+  %D%/packages/patches/jami-sipaccount-segfault.patch		\
   %D%/packages/patches/jami-sip-contacts.patch			\
   %D%/packages/patches/jami-sip-unregister.patch		\
   %D%/packages/patches/jami-xcb-link.patch			\
@@ -1375,7 +1378,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/julia-tracker-16-compat.patch		\
-  %D%/packages/patches/julia-allow-parallel-build.patch		\
   %D%/packages/patches/libffi-3.3-powerpc-fixes.patch		\
   %D%/packages/patches/libffi-float128-powerpc64le.patch	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
@@ -1465,7 +1467,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libtirpc-hurd.patch			\
   %D%/packages/patches/libtommath-fix-linkage.patch		\
   %D%/packages/patches/libtool-skip-tests2.patch		\
-  %D%/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch \
   %D%/packages/patches/libusb-0.1-disable-tests.patch		\
   %D%/packages/patches/libusb-for-axoloti.patch			\
   %D%/packages/patches/libutils-add-includes.patch		\
@@ -1758,8 +1759,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-robotframework-atest.patch	\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
-  %D%/packages/patches/python-seaborn-kde-test.patch		\
-  %D%/packages/patches/python-seaborn-2690.patch		\
   %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
   %D%/packages/patches/python-versioneer-guix-support.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index b1f928014e..79f91d530d 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -5714,3 +5714,40 @@ file or files to several hosts.")
     (description
      "@code{doctl} provides a unified command line interface to the DigitalOcean API.")
     (license license:asl2.0)))
+
+(define-public du-dust
+  (package
+    (name "du-dust")
+    (version "0.8.3")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "du-dust" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1daif13rdd7wb8m5fbp6zif5b8znqcvmkxrjpp2w2famsp36sahx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-ansi-term" ,rust-ansi-term-0.12)
+                       ("rust-clap" ,rust-clap-3)
+                       ("rust-clap" ,rust-clap-3)
+                       ("rust-clap-complete" ,rust-clap-complete-3)
+                       ("rust-config-file" ,rust-config-file-0.2)
+                       ("rust-directories" ,rust-directories-4)
+                       ("rust-lscolors" ,rust-lscolors-0.7)
+                       ("rust-rayon" ,rust-rayon-1)
+                       ("rust-regex" ,rust-regex-1)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-stfu8" ,rust-stfu8-0.2)
+                       ("rust-sysinfo" ,rust-sysinfo-0.15)
+                       ("rust-terminal-size" ,rust-terminal-size-0.1)
+                       ("rust-thousands" ,rust-thousands-0.2)
+                       ("rust-unicode-width" ,rust-unicode-width-0.1)
+                       ("rust-winapi-util" ,rust-winapi-util-0.1))
+       #:cargo-development-inputs (("rust-assert-cmd" ,rust-assert-cmd-1)
+                                   ("rust-tempfile" ,rust-tempfile-3))))
+    (home-page "https://github.com/bootandy/dust")
+    (synopsis "Graphical disk usage analyzer")
+    (description "This package provides a graphical disk usage analyzer in
+text mode.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/apparmor.scm b/gnu/packages/apparmor.scm
new file mode 100644
index 0000000000..ddbd9eb7a9
--- /dev/null
+++ b/gnu/packages/apparmor.scm
@@ -0,0 +1,202 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages apparmor)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages dejagnu)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages swig)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
+
+(define-public libapparmor
+  (package
+    (name "libapparmor")
+    (version "3.1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/apparmor/apparmor")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h77a7ww0rxfv5nsi1iy4fffklxdr2vq6r7kdsqm15yysglhbjyi"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
+                   "--with-perl" "--with-python" "--with-ruby")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-paths
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (for-each patch-shebang
+                             '("common/list_af_names.sh"
+                               "common/list_capabilities.sh"))
+                   (for-each (lambda (file)
+                               (substitute* file
+                                 (("/usr") "")
+                                 (("/bin/\\<(pod2man|pod2html|podchecker|prove)\\>" path)
+                                  (search-input-file inputs path))
+                                 (("/include/linux/capability.h" path)
+                                  (search-input-file inputs path))))
+                             '("common/Make-po.rules"
+                               "common/Make.rules"
+                               "binutils/Makefile"
+                               "parser/Makefile"
+                               "parser/tst/Makefile"
+                               "profiles/Makefile"
+                               "utils/Makefile"
+                               "utils/python-tools-setup.py"
+                               "utils/vim/Makefile"))))
+               (add-after 'fix-paths 'change-directory
+                 (lambda _
+                   (chdir "libraries/libapparmor"))))))
+    (native-inputs
+     (list autoconf
+           automake
+           bison
+           dejagnu
+           flex
+           libtool
+           perl
+           python-minimal
+           ruby
+           swig
+           which))
+    (home-page "https://apparmor.net")
+    (synopsis "Linux kernel security module")
+    (description
+     "AppArmor is an effective and easy-to-use Linux application security
+system.
+
+AppArmor proactively protects the operating system and applications from
+external or internal threats, even zero-day attacks, by enforcing good
+behavior and preventing both known and unknown application flaws from being
+exploited.
+
+AppArmor supplements the traditional Unix discretionary access control (DAC)
+model by providing mandatory access control (MAC).  It has been included in
+the mainline Linux kernel since version 2.6.36 and its development has been
+supported by Canonical since 2009.")
+    (license license:lgpl2.1)
+    (supported-systems (filter (lambda (system)
+                                 (string-suffix? "-linux" system))
+                               %supported-systems))))
+
+(define-public apparmor
+  (let ((base libapparmor))
+    (package
+      (inherit base)
+      (name "apparmor")
+      (arguments
+       (append
+        (list #:make-flags
+              #~(list (string-append "CC=" #$(cc-for-target))
+                      (string-append "DESTDIR=" #$output)
+                      "USE_SYSTEM=1"
+                      ;; No need to run the linter
+                      "PYFLAKES=true"))
+        (substitute-keyword-arguments (package-arguments base)
+          ((#:phases phases)
+           #~(modify-phases #$phases
+               (delete 'configure)
+               ;; apparmor-binutils
+               (replace 'change-directory
+                 (lambda _
+                   (chdir "binutils")))
+
+               ;; apparmor-parser
+               (add-after 'install 'chdir-parser
+                 (lambda _
+                   (chdir "../parser")))
+               (add-after 'chdir-parser 'patch-source-shebangs-parser
+                 (assoc-ref %standard-phases 'patch-source-shebangs))
+               (add-after 'patch-source-shebangs-parser 'build-parser
+                 (assoc-ref %standard-phases 'build))
+               (add-after 'build-parser 'check-parser
+                 (assoc-ref %standard-phases 'check))
+               (add-after 'check-parser 'install-parser
+                 (assoc-ref %standard-phases 'install))
+
+               ;; apparmor-utils
+               ;; FIXME: Tests required Python library from this package
+               ;; (itself).
+               (add-after 'install-parser 'chdir-utils
+                 (lambda _
+                   (chdir "../utils")
+                   ;; Fix paths to installed policygroups and templates for
+                   ;; easyprof.
+                   (substitute* "easyprof/easyprof.conf"
+                     (("/usr") #$output))))
+               (add-after 'chdir-utils 'build-utils
+                 (assoc-ref %standard-phases 'build))
+               (add-after 'build-utils 'install-utils
+                 (assoc-ref %standard-phases 'install))
+
+               ;; apparmor-profiles
+               ;; FIXME: Tests need an AppArmor-enabled system.
+               (add-after 'install-utils 'chdir-profiles
+                 (lambda _
+                   (chdir "../profiles")))
+               (add-after 'chdir-profiles 'build-profiles
+                 (assoc-ref %standard-phases 'build))
+               (add-after 'check-build 'install-profiles
+                 (assoc-ref %standard-phases 'install)))))))
+      (propagated-inputs
+       (list libapparmor))
+      ;; Python module `readline' needed
+      (native-inputs
+       (list bison flex gettext-minimal perl python which))
+      (license license:gpl2))))
+
+(define-public pam-apparmor
+  (let ((base apparmor))
+    (package
+      (inherit base)
+      (name "pam-apparmor")
+      (arguments
+       (append
+        (list #:tests? #f)              ;no tests
+        (substitute-keyword-arguments (package-arguments base)
+          ((#:phases phases)
+           #~(modify-phases #$phases
+               (delete 'chdir-parser)
+               (delete 'chdir-utils)
+               (delete 'chdir-profiles)
+               (replace 'change-directory
+                 (lambda _
+                   (chdir "changehat/pam_apparmor"))))))))
+      (native-inputs (list pkg-config perl which))
+      (inputs (list libapparmor linux-pam))
+      (license license:bsd-3))))
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 759ccbec9e..c59f4d02a4 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -1464,6 +1464,35 @@ re-gridding of images from one world coordinate system to another e.g.
 changing the pixel resolution, orientation, coordinate system.")
     (license license:bsd-3)))
 
+(define-public python-sgp4
+  (package
+    (name "python-sgp4")
+    (version "2.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sgp4" version))
+       (sha256
+        (base32 "1vzcrlrlzmhbycdz16m8v241l8zx49vsy81wcd0yjxs80isvhyb1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-numpy))
+    (home-page "https://github.com/brandon-rhodes/python-sgp4")
+    (synopsis "Track earth satellite TLE orbits using SGP4")
+    (description
+     "This package provides a Python implementation for computations of the
+position and velocity of an earth-orbiting satellite, given the satellite’s
+@acronym{TLE, Two-line element set} orbital elements from a source like
+@url{CelesTrak, https://celestrak.org/}.
+
+It implements the most recent version of @acronym{SGP4, Simplified General
+Perturbation models}, and is regularly run against the SGP4 test suite to make
+sure that its satellite position predictions agree to within 0.1 mm with the
+predictions of the standard distribution of the algorithm.  This error is far
+less than the 1–3 km/day by which satellites themselves deviate from the ideal
+orbits described in TLE files.")
+    (license license:expat)))
+
 (define-public python-sunpy
   (package
     (name "python-sunpy")
@@ -1862,12 +1891,12 @@ provide you with detailed information about each pass.")
     (license license:gpl2+)))
 
 (define-public sgp4
-  ;; No tagged releases, use commit directly.
-  (let ((commit "ca9d4d97af4ee62461de6f13e0c85d1dc6000040")
-        (revision "1"))
+  ;; Version tag v1.0 is dated to <2021-01-11>, use the lates commit instead.
+  (let ((commit "6a448b4850e5fbf8c1ca03bb5f6013a9fdc1fd91")
+        (revision "2"))
     (package
       (name "sgp4")
-      (version (git-version "0.0.0" revision commit))
+      (version (git-version "1.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -1876,17 +1905,20 @@ provide you with detailed information about each pass.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1xwfa6papmd2qz5w0hwzvijmzvp9np8dlw3q3qz4bmsippzjv8p7"))))
+          (base32 "15q8sain87cbppmzq66y6gp6bvm3kdd1bcchrl59rcvjp0w51wl1"))))
       (build-system cmake-build-system)
       (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (replace 'check
-             (lambda _
-               ;; Tests fails, probably because of a few "(e <= -0.001)" errors.
-               ;; Or maybe this is not the right way to run the tests?
-               ;; (invoke "runtest/runtest")
-               #t)))))
+       (list
+        ;; FIXME: Tests evaluated via runtest binary, but it's failing even
+        ;; when SGP4-VER.TLE file was copied next to it during install phase.
+        ;;
+        ;; There are 2 more binaries are created after build phase -
+        ;; passpredict and sattrack which are failing to execute after
+        ;; install, strace output:
+        ;;
+        ;; strace: exec: Exec format error
+        ;;
+        #:tests? #f))
       (home-page "https://github.com/dnwrnr/sgp4")
       (synopsis "Simplified perturbations models library")
       (description
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 42a0608073..875d905ac6 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4828,7 +4828,7 @@ representations.")
 (define-public cava
   (package
     (name "cava")
-    (version "0.7.4")
+    (version "0.8.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4837,15 +4837,7 @@ representations.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))
-              (modules '((guix build utils)))
-              (snippet
-               #~(begin
-                   (delete-file-recursively "iniparser")
-                   (substitute* "configure.ac"
-                     (("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
-                   (substitute* "Makefile.am"
-                     (("SUBDIRS = iniparser") ""))))))
+                "0v0l6al3ygj6lq224ddffb1f10yv4218k7l82hbba8d7dj2rc67b"))))
     (build-system gnu-build-system)
     (native-inputs (list autoconf automake libtool))
     (inputs (list fftw ncurses pulseaudio iniparser))
@@ -4875,7 +4867,7 @@ representations.")
                                              (string-append #$output
                                               "/share/doc/examples")))
                              (find-files "example_files")))))))
-    (home-page "https://karlstav.github.io/cava/")
+    (home-page "https://github.com/karlstav/cava")
     (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
     (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 3a7dc1a1b7..207f3c3d28 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1176,8 +1176,7 @@ alignments and perform the following operations:
                         (package-inputs this-package)))))))
        `(#:phases
          (modify-phases %standard-phases
-           (add-after
-               'install 'wrap-programs
+           (add-after 'install 'wrap-programs
              (lambda* (#:key outputs #:allow-other-keys)
                ;; Make sure all executables in "bin" find the required Perl
                ;; modules at runtime.  As the PERL5LIB variable contains also
@@ -1194,8 +1193,7 @@ alignments and perform the following operations:
                  (for-each (lambda (file)
                              (wrap-program file
                                `("PERL5LIB" ":" prefix (,path))))
-                           (find-files bin "\\.pl$"))
-                 #t)))))))
+                           (find-files bin "\\.pl$")))))))))
     (inputs
      (list perl-module-build perl-data-stag perl-libwww perl-uri))
     (native-inputs
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8888c51736..0917095627 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -631,7 +631,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 (define u-boot
   (package
     (name "u-boot")
-    (version "2022.04")
+    (version "2022.10")
     (source (origin
               (patches
                (list %u-boot-rockchip-inno-usb-patch
@@ -644,23 +644,23 @@ tree binary files.  These are board description files used by Linux and BSD.")
                     "u-boot-" version ".tar.bz2"))
               (sha256
                (base32
-                "1l5w13dznj0z1ibqv2d6ljx2ma1gnf5x5ay3dqkqwxr6750nbq38"))))
-    (native-inputs
-     `(("bc" ,bc)
-       ("bison" ,bison)
-       ("dtc" ,dtc)
-       ("gnutls" ,gnutls)
-       ("flex" ,flex)
-       ("lz4" ,lz4)
-       ("tinfo" ,ncurses/tinfo)
-       ("perl" ,perl)
-       ("python" ,python)
-       ("python-coverage" ,python-coverage)
-       ("python-pycryptodomex" ,python-pycryptodomex)
-       ("python-pytest" ,python-pytest)
-       ("swig" ,swig)
-       ("libuuid" ,util-linux "lib")))
+                "1y5x8vxdgsqdqlsvq01mn8lmw53fqairkhvhhjx83hjva0m4id2h"))))
     (build-system  gnu-build-system)
+    (native-inputs
+     (list bc
+           bison
+           dtc
+           gnutls
+           flex
+           lz4
+           ncurses/tinfo
+           perl
+           python
+           python-coverage
+           python-pycryptodomex
+           python-pytest
+           swig
+           (list util-linux "lib")))
     (home-page "https://www.denx.de/wiki/U-Boot/")
     (synopsis "ARM bootloader")
     (description "U-Boot is a bootloader used mostly for ARM boards.  It
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 56a848fd17..8755ffc074 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -657,6 +657,51 @@ normally do not detect.  The goal is to detect only real errors in the code
 (i.e. have zero false positives).")
     (license license:gpl3+)))
 
+(define-public cukinia
+  (package
+    (name "cukinia")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/savoirfairelinux/cukinia")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1i92b37w8kb0rzkazlnnhjjbh1l1nmk2yrjvar7rpl97i9gn212m"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      ;; The test suite assumes the host system runs systemd, has a root user,
+      ;; among other things (see:
+      ;; https://github.com/savoirfairelinux/cukinia/issues/51).
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)           ;no configure script
+          (delete 'build)               ;no build system
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "./cukinia" "tests/testcases.conf"))))
+          (replace 'install
+            (lambda _
+              (install-file "cukinia" (string-append #$output "/bin")))))))
+    (home-page "https://github.com/savoirfairelinux/cukinia")
+    (synopsis "Simple on-target system test framework")
+    (description "Cukinia is designed to help GNU/Linux-based embedded
+firmware developers run simple system-level validation tests on their
+firmware.  Cukinia integrates well with embedded firmware generation
+frameworks such as Buildroot and Yocto, and can be run manually or by your
+favourite continuous integration framework.  Among Cukinia features are:
+@itemize
+@item simple to use
+@item no dependencies other than BusyBox or GNU Coreutils
+@item easy integration with CI/CD pipelines.
+@end itemize")
+    (license (list license:gpl3+ license:asl2.0)))) ;dual license
+
 (define-public cxxtest
   (package
     (name "cxxtest")
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 837a2a7593..983a754215 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -317,7 +317,7 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "108.0.5359.71")
+(define %chromium-version "108.0.5359.98")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/102.0.5005.61-1")
 (define %arch-revision "4de5019014aeb77187a517c5ca6db8723d622a40")
@@ -330,7 +330,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "1309rz06s7fw9p7h5968nk23rbsyfhqm5znqrw6nh24qdbg6z3zx"))))
+      "16rc15qsndrsj52p56ma3hg94jslkfy2f91ryr3qss73r2rkjf8j"))))
 
 (define %debian-origin
   (origin
@@ -482,12 +482,7 @@
 (define-public ungoogled-chromium
   (package
     (name "ungoogled-chromium")
-    (version (if (string-prefix? %chromium-version %ungoogled-revision)
-                 %ungoogled-revision
-                 ;; ungoogled-chromium version tags always have a "-1" suffix,
-                 ;; so we can hijack "-0" in cases where the Chromium source
-                 ;; is newer than the latest available tag.
-                 (string-append %chromium-version "-0")))
+    (version %ungoogled-revision)
     (synopsis "Graphical web browser")
     (source (origin
               (method url-fetch)
@@ -496,7 +491,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0pgzf6xrd71is1dld1arhq366vjp8p54x75zyx6y7vcjqj0a0v6b"))
+                "07jnhd5y7k4zp2ipz052isw7llagxn8l8rbz8x3jkjz3f5wi7dk0"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index 1fe99e7e85..2f072354a0 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -727,30 +727,6 @@ EUI-64, also known as MAC-48 media access control addresses.")
     (description "This package is a core library of Gfx-rs.")
     (license license:asl2.0)))
 
-(define-public rust-gfx-gl-0.6
-  (package
-    (name "rust-gfx-gl")
-    (version "0.6.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "gfx_gl" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0ppzj4bgjawdqz3fvnscqk8lnmgh95pwzh0v96vwy809cxj83lzj"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-gl-generator" ,rust-gl-generator-0.14))))
-    (home-page "https://github.com/gfx-rs/gfx_gl")
-    (synopsis "OpenGL bindings for gfx, based on gl-rs")
-    (description
-     "This package provides OpenGL bindings for gfx, based on gl-rs.")
-    (license license:asl2.0)))
-
 (define-public rust-gif-0.11
   (package
     (name "rust-gif")
diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 14ac194fc6..403c1f2aef 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1160,31 +1160,6 @@
        #:cargo-development-inputs
        (("rust-tempfile" ,rust-tempfile-3))))))
 
-(define-public rust-glib-0.8
-  (package
-    (inherit rust-glib-0.9)
-    (name "rust-glib")
-    (version "0.8.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "glib" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0ysy87zrwyzhfpf3d8rkyyr3amwj85wky05fsl7kx95s84l269xy"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-futures-preview" ,rust-futures-preview-0.3)
-        ("rust-glib-sys" ,rust-glib-sys-0.9)
-        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-libc" ,rust-libc-0.2))
-       #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3))))))
-
 (define-public rust-glib-macros-0.15
   (package
     (name "rust-glib-macros")
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 0cf45fc6c0..317ac389cc 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2022 Evgenii Lepikhin <e.lepikhin@corp.mail.ru>
 ;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;; Copyright © 2022 ( <paren@disroot.org>
+;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -7489,24 +7490,6 @@ extension of blocks.")
        (("rust-arrayref" ,rust-arrayref-0.3)
         ("rust-byte-tools" ,rust-byte-tools-0.2))))))
 
-(define-public rust-block-buffer-0.2
-  (package
-    (inherit rust-block-buffer-0.9)
-    (name "rust-block-buffer")
-    (version "0.2.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "block-buffer" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "055q90a6vk80j85i3fixjd5ci0dznrm9lkdd6xbjk7sx5w2a2f8k"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-byte-tools" ,rust-byte-tools-0.2)
-        ("rust-generic-array" ,rust-generic-array-0.8))))))
-
 (define-public rust-block-cipher-0.7
   (package
     (name "rust-block-cipher")
@@ -9995,29 +9978,6 @@ reduced-round ChaCha8Poly1305 and ChaCha12Poly1305 lightweight variants.")
 macros.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-chalk-derive-0.68
-  (package
-    (inherit rust-chalk-derive-0.75)
-    (name "rust-chalk-derive")
-    (version "0.68.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "chalk-derive" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0ss18zx2ddp50mvbwffs5jmmcs7a0pkiq1g62xa7z1bacvkm45ga"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-1)
-        ("rust-quote" ,rust-quote-1)
-        ("rust-syn" ,rust-syn-1)
-        ("rust-synstructure" ,rust-synstructure-0.12))))))
-
 (define-public rust-chalk-ir-0.75
   (package
     (name "rust-chalk-ir")
@@ -10046,28 +10006,6 @@ macros.")
 clauses.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-chalk-ir-0.68
-  (package
-    (inherit rust-chalk-ir-0.75)
-    (name "rust-chalk-ir")
-    (version "0.68.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "chalk-ir" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0riyv4fjmxys8gsyrikn9in34cjcgwgj55qyaj9w9fld8kqxbmqr"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-chalk-derive" ,rust-chalk-derive-0.68)
-        ("rust-lazy-static" ,rust-lazy-static-1))))))
-
 (define-public rust-chalk-recursive-0.75
   (package
     (name "rust-chalk-recursive")
@@ -12100,6 +12038,32 @@ applications.")
         ("rust-toml" ,rust-toml-0.5)
         ("rust-yaml-rust" ,rust-yaml-rust-0.4))))))
 
+(define-public rust-config-file-0.2
+  (package
+    (name "rust-config-file")
+    (version "0.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "config-file" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1yys2088y6lnc959k1k78y0amjkp6a00pjybsk3x50872lnfflfz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-serde" ,rust-serde-1)
+                       ("rust-serde-xml-rs" ,rust-serde-xml-rs-0.5)
+                       ("rust-serde-json" ,rust-serde-json-1)
+                       ("rust-serde-yaml" ,rust-serde-yaml-0.8)
+                       ("rust-thiserror" ,rust-thiserror-1)
+                       ("rust-toml" ,rust-toml-0.5))))
+    (home-page "https://github.com/Keruspe/config-file")
+    (synopsis "Read and parse configuration files")
+    (description "This package provides ability to read and parse
+configuration files.")
+    (license license:bsd-2)))
+
 (define-public rust-configparser-2
   (package
     (name "rust-configparser")
@@ -14181,38 +14145,6 @@ abstractions around common WinAPI calls.")
        #:cargo-inputs
        (("rust-winapi" ,rust-winapi-0.3))))))
 
-(define-public rust-crossterm-winapi-0.6
-  (package
-    (inherit rust-crossterm-winapi-0.7)
-    (name "rust-crossterm-winapi")
-    (version "0.6.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "crossterm_winapi" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1nqhjp979c6iv092dbxl6hpncwgwjciafyj1nvcpa008iqzmq9n2"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-winapi" ,rust-winapi-0.3))))))
-
-(define-public rust-crossterm-winapi-0.4
-  (package
-    (inherit rust-crossterm-winapi-0.7)
-    (name "rust-crossterm-winapi")
-    (version "0.4.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "crossterm-winapi" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1j3av8bba3f5y4n4w1vgn0iz28vdajxrli6lqxnvpddbphskmph2"))))
-    (arguments
-     `(#:cargo-inputs (("rust-winapi" ,rust-winapi-0.3))))))
-
 (define-public rust-crunchy-0.2
   (package
     (name "rust-crunchy")
@@ -14294,34 +14226,6 @@ all the formatting features of the format! macro, except for the fill
 character.")
     (license license:asl2.0)))
 
-(define-public rust-rust-crypto-0.2
-  (package
-    (name "rust-rust-crypto")
-    (version "0.2.36")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "rust-crypto" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "0aias7gh2ypj4skmh6hfsjli4fhnvcvf9s1ljjpz9m9zk79havgp"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-gcc" ,rust-gcc-0.3)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-rand" ,rust-rand-0.3)
-        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
-        ("rust-time" ,rust-time-0.1))))
-    (home-page "https://github.com/DaGenix/rust-crypto/")
-    (synopsis "Mostly pure-Rust implementation of various cryptographic algorithms")
-    (description
-     "This package provides a (mostly) pure-Rust implementation of various
-common cryptographic algorithms.")
-    (license (list license:expat license:asl2.0))))
-
 (define-public rust-rusticata-macros-4
   (package
     (name "rust-rusticata-macros")
@@ -20013,31 +19917,6 @@ decoding.")
     (description "This Rust library implements the Ethereum bloom filter.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-ethbloom-0.5
-  (package
-    (inherit rust-ethbloom-0.11)
-    (name "rust-ethbloom")
-    (version "0.5.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "ethbloom" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "0q2kix0p067rrfffhbfra453dw51s4cfgs0lhirslsv4callsad6"))))
-    (arguments
-     `(#:tests? #f                      ; The tests fail.
-       #:cargo-inputs
-       (("rust-crunchy" ,rust-crunchy-0.1)
-        ("rust-ethereum-types-serialize" ,rust-ethereum-types-serialize-0.2)
-        ("rust-fixed-hash" ,rust-fixed-hash-0.2)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-tiny-keccak" ,rust-tiny-keccak-1))
-       #:cargo-development-inputs
-       (("rust-hex-literal" ,rust-hex-literal-0.1)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-rustc-hex" ,rust-rustc-hex-1))))))
-
 (define-public rust-ethereum-types-0.12
   (package
     (name "rust-ethereum-types")
@@ -20060,21 +19939,6 @@ decoding.")
 ecosystem.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-ethereum-types-0.9
-  (package
-    (inherit rust-ethereum-types-0.12)
-    (name "rust-ethereum-types")
-    (version "0.9.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "ethereum-types" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1c1l2sg6li301izl4nzkkfrpc8snafxwnr81vfwygn3bd3zyqfj7"))))))
-
 (define-public rust-ethereum-types-serialize-0.2
   (package
     (name "rust-ethereum-types-serialize")
@@ -23183,30 +23047,6 @@ archive to be linked into Rustcode.")
 API library @code{gdi32}.")
     (license license:expat)))
 
-(define-public rust-generational-arena-0.2
-  (package
-    (name "rust-generational-arena")
-    (version "0.2.8")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "generational-arena" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "00gn1g6nlky883qkacvsbp19yzl5ay8avq6f902jvxkl2mvkn7cf"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if-0.1)
-        ("rust-serde" ,rust-serde-1))))
-    (home-page "https://github.com/fitzgen/generational-arena")
-    (synopsis "Safe arena allocator that supports deletion")
-    (description
-     "This package provides a safe arena allocator that supports deletion without
-suffering from the ABA problem by using generational indices.")
-    (license license:mpl2.0)))
-
 (define-public rust-generator-0.7
   (package
     (name "rust-generator")
@@ -23915,28 +23755,6 @@ permitted in ordinary Rust.")
 debugging format.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-gimli-0.23
-  (package
-    (inherit rust-gimli-0.26)
-    (name "rust-gimli")
-    (version "0.23.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "gimli" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1km657nwcrb0pnv7v0ldhgl9y8s889y2j9jckmws8k2i8bhkyl7n"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
-        ("rust-fallible-iterator" ,rust-fallible-iterator-0.2)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1)
-        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)
-        ("rust-stable-deref-trait" ,rust-stable-deref-trait-1))))))
-
 (define-public rust-git-version-0.3
   (package
     (name "rust-git-version")
@@ -24623,33 +24441,6 @@ libraries GMP, MPFR, and MPC.")
 and loading crate.")
     (license license:expat)))
 
-(define-public rust-goblin-0.0
-  (package
-    (name "rust-goblin")
-    (version "0.0.23")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "goblin" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1g92bl76dgc3v3rins61l811pkwsl3jif1x35h2jx33b7dsv8mmc"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-log" ,rust-log-0.4)
-        ("rust-plain" ,rust-plain-0.2)
-        ("rust-scroll" ,rust-scroll-0.9))))
-    (home-page "https://github.com/m4b/goblin")
-    (synopsis "Binary parsing and loading")
-    (description
-     "An impish, cross-platform, ELF, Mach-o, and PE binary parsing and
-loading crate.")
-    (license license:expat)))
-
 (define-public rust-greetd-ipc-0.8
   (package
     (name "rust-greetd-ipc")
@@ -26486,6 +26277,31 @@ Hash-based Message Authentication Code algorithm} for SHA1.")
     (description "This library provides Rust bindings to HTSlib.")
     (license license:expat)))
 
+(define-public rust-kuchiki-0.8
+  (package
+    (name "rust-kuchiki")
+    (version "0.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "kuchiki" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0n53hhscgf4az58nnbjfxlqz9k96h3f02c7fhbzpqdriw33fka0y"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build? #t
+        #:cargo-inputs
+        (("rust-cssparser" ,rust-cssparser-0.27)
+         ("rust-html5ever" ,rust-html5ever-0.25)
+         ("rust-matches" ,rust-matches-0.1)
+         ("rust-selectors" ,rust-selectors-0.22))))
+    (home-page "https://github.com/SimonSapin/kuchiki")
+    (synopsis "HTML/XML tree manipulation library")
+    (description "A library for parsing and serializing HTML and XML documents
+and traversing, manipulating, and querying the document tree.")
+    (license license:expat)))
+
 (define-public rust-http-0.2
   (package
     (name "rust-http")
@@ -33371,6 +33187,25 @@ based on Rustls and Ring.")
     (description "This package provides Rust bindings for Metal.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-thousands-0.2
+  (package
+    (name "rust-thousands")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "thousands" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0848gnkn7ah51lrx15z9zmn701ipn6gc4xbk4kfdlfahkypkpxiv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t))
+    (home-page "https://github.com/tov/thousands-rs")
+    (synopsis "Adds digit separators to numerals, configurably.")
+    (description "This package provides thousand separators for numerals.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-tls-parser-0.10
   (package
     (name "rust-tls-parser")
@@ -52482,6 +52317,30 @@ the application/x-www-form-urlencoded format.")
 for later processing.")
     (license license:expat)))
 
+(define-public rust-serde-xml-rs-0.5
+  (package
+    (name "rust-serde-xml-rs")
+    (version "0.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "serde-xml-rs" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ypdy4cry8y6jbia0l0cqvkxkdvl7vplzfzb44s6lbxyb682w5k5"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-log" ,rust-log-0.4)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-thiserror" ,rust-thiserror-1)
+                       ("rust-xml-rs" ,rust-xml-rs-0.8))))
+    (home-page "https://github.com/RReverser/serde-xml-rs")
+    (synopsis "xml-rs based deserializer for Serde")
+    (description "This package provies a xml-rs based deserializer for Serde
+(compatible with 0.9+)")
+    (license license:expat)))
+
 (define-public rust-serde-yaml-0.8
   (package
     (name "rust-serde-yaml")
@@ -57876,6 +57735,36 @@ no_std compatible by default, only relying on alloc.")
         ("rust-errno" ,rust-errno-0.2)
         ("rust-libc" ,rust-libc-0.2))))))
 
+(define-public rust-sysinfo-0.15
+  (package
+    (name "rust-sysinfo")
+    (version "0.15.11")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "sysinfo" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0n713rhayp28z8j4pviqcg4blcp1yfvniwa1ipinp75hyv7lq0nx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-cc" ,rust-cc-1)
+                       ("rust-cfg-if" ,rust-cfg-if-1)
+                       ("rust-core-foundation-sys" ,rust-core-foundation-sys-0.8)
+                       ("rust-doc-comment" ,rust-doc-comment-0.3)
+                       ("rust-libc" ,rust-libc-0.2)
+                       ("rust-ntapi" ,rust-ntapi-0.3)
+                       ("rust-once-cell" ,rust-once-cell-1)
+                       ("rust-rayon" ,rust-rayon-1)
+                       ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/GuillaumeGomez/sysinfo")
+    (synopsis "System handler to interact with processes")
+    (description
+     "This package is a library to get system information such as processes,
+processors, disks, components and networks.")
+    (license license:expat)))
+
 (define-public rust-sysinfo-0.23
   (package
     (name "rust-sysinfo")
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 0a368d3879..44c1bb0ef2 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -76,7 +76,8 @@
 
 (define* (cross-binutils target #:optional (binutils binutils))
   "Return a cross-Binutils for TARGET using BINUTILS."
-  (let ((binutils (package (inherit binutils)
+  (let ((binutils (package
+                    (inherit binutils)
                     (arguments
                      (substitute-keyword-arguments (package-arguments
                                                     binutils)
@@ -128,71 +129,71 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
     ;; for instance.
     (let ((args `(#:strip-binaries? #f
                   ,@(package-arguments xgcc))))
-     (substitute-keyword-arguments args
-       ((#:configure-flags flags)
-        `(append (list ,(string-append "--target=" target)
-                       ,@(if libc
-                             `( ;; Disable libcilkrts because it is not
+      (substitute-keyword-arguments args
+        ((#:configure-flags flags)
+         `(append (list ,(string-append "--target=" target)
+                        ,@(if libc
+                              `( ;; Disable libcilkrts because it is not
                                 ;; ported to GNU/Hurd.
-                               "--disable-libcilkrts"
-                               ;; When building a cross compiler, --with-sysroot is
-                               ;; implicitly set to "$gcc_tooldir/sys-root".  This does
-                               ;; not work for us, because --with-native-system-header-dir
-                               ;; is searched for relative to this location.  Thus, we set
-                               ;; it to "/" so GCC is able to find the target libc headers.
-                               ;; This is safe because in practice GCC uses CROSS_CPATH
-                               ;; & co to separate target and host libraries.
-                               "--with-sysroot=/")
-                             `( ;; Disable features not needed at this stage.
-                               "--disable-shared" "--enable-static"
-                               "--enable-languages=c,c++"
-
-                               ;; libstdc++ cannot be built at this stage
-                               ;; ("Link tests are not allowed after
-                               ;; GCC_NO_EXECUTABLES.").
-                               "--disable-libstdc++-v3"
-
-                               "--disable-threads" ;libgcc, would need libc
-                               "--disable-libatomic"
-                               "--disable-libmudflap"
-                               "--disable-libgomp"
-                               "--disable-libmpx"
-                               "--disable-libssp"
-                               "--disable-libquadmath"
-                               "--disable-decimal-float" ;would need libc
-                               "--disable-libcilkrts"
-
-                               ;; When target is any OS other than 'none' these
-                               ;; libraries will fail if there is no libc
-                               ;; present. See
-                               ;; <https://lists.gnu.org/archive/html/guix-devel/2016-02/msg01311.html>
-                               "--disable-libitm"
-                               "--disable-libvtv"
-                               "--disable-libsanitizer"
+                                "--disable-libcilkrts"
+                                ;; When building a cross compiler, --with-sysroot is
+                                ;; implicitly set to "$gcc_tooldir/sys-root".  This does
+                                ;; not work for us, because --with-native-system-header-dir
+                                ;; is searched for relative to this location.  Thus, we set
+                                ;; it to "/" so GCC is able to find the target libc headers.
+                                ;; This is safe because in practice GCC uses CROSS_CPATH
+                                ;; & co to separate target and host libraries.
+                                "--with-sysroot=/")
+                              `( ;; Disable features not needed at this stage.
+                                "--disable-shared" "--enable-static"
+                                "--enable-languages=c,c++"
+
+                                ;; libstdc++ cannot be built at this stage
+                                ;; ("Link tests are not allowed after
+                                ;; GCC_NO_EXECUTABLES.").
+                                "--disable-libstdc++-v3"
+
+                                "--disable-threads" ;libgcc, would need libc
+                                "--disable-libatomic"
+                                "--disable-libmudflap"
+                                "--disable-libgomp"
+                                "--disable-libmpx"
+                                "--disable-libssp"
+                                "--disable-libquadmath"
+                                "--disable-decimal-float" ;would need libc
+                                "--disable-libcilkrts"
+
+                                ;; When target is any OS other than 'none' these
+                                ;; libraries will fail if there is no libc
+                                ;; present. See
+                                ;; <https://lists.gnu.org/archive/html/guix-devel/2016-02/msg01311.html>
+                                "--disable-libitm"
+                                "--disable-libvtv"
+                                "--disable-libsanitizer"
                                 ))
 
-                       ;; Install cross-built libraries such as libgcc_s.so in
-                       ;; the "lib" output.
-                       ,@(if libc
-                             `((string-append "--with-toolexeclibdir="
-                                              (assoc-ref %outputs "lib")
-                                              "/" ,target "/lib"))
-                             '()))
-
-                 ,(if libc
-                      flags
-                      `(remove (cut string-match "--enable-languages.*" <>)
-                               ,flags))))
-       ((#:make-flags flags)
-        (if libc
-            `(let ((libc (assoc-ref %build-inputs "libc")))
-               ;; FLAGS_FOR_TARGET are needed for the target libraries to receive
-               ;; the -Bxxx for the startfiles.
-               (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib")
-                     ,flags))
-            flags))
-       ((#:phases phases)
-        `(cross-gcc-build-phases ,target ,phases))))))
+                        ;; Install cross-built libraries such as libgcc_s.so in
+                        ;; the "lib" output.
+                        ,@(if libc
+                              `((string-append "--with-toolexeclibdir="
+                                               (assoc-ref %outputs "lib")
+                                               "/" ,target "/lib"))
+                              '()))
+
+                  ,(if libc
+                       flags
+                       `(remove (cut string-match "--enable-languages.*" <>)
+                                ,flags))))
+        ((#:make-flags flags)
+         (if libc
+             `(let ((libc (assoc-ref %build-inputs "libc")))
+                ;; FLAGS_FOR_TARGET are needed for the target libraries to receive
+                ;; the -Bxxx for the startfiles.
+                (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib")
+                      ,flags))
+             flags))
+        ((#:phases phases)
+         `(cross-gcc-build-phases ,target ,phases))))))
 
 (define (cross-gcc-patches xgcc target)
   "Return GCC patches needed for XGCC and TARGET."
@@ -203,7 +204,7 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
          (append (search-patches "gcc-4.9.3-mingw-gthr-default.patch")
                  (if (version>=? (package-version xgcc) "7.0")
                      (search-patches "gcc-7-cross-mingw.patch")
-                    '())))
+                     '())))
         (else '())))
 
 (define (cross-gcc-snippet target)
@@ -231,13 +232,15 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
 XGCC as the base compiler.  Use XBINUTILS as the associated cross-Binutils.
 If LIBC is false, then build a GCC that does not target a libc; otherwise,
 target that libc."
-  (package (inherit xgcc)
+  (package
+    (inherit xgcc)
     (name (string-append "gcc-cross-"
                          (if libc "" "sans-libc-")
                          target))
     (source
      (origin
-       (inherit (package-source xgcc))
+       (inherit
+        (package-source xgcc))
        (patches
         (append
          (origin-patches (package-source xgcc))
@@ -304,7 +307,7 @@ target that libc."
              `(,@inputs
                ("libc" ,libc)
                ("libc:static" ,libc "static")
-               ("xkernel-headers"                ;the target headers
+               ("xkernel-headers"       ;the target headers
                 ,@(assoc-ref (package-propagated-inputs libc)
                              "kernel-headers"))))
             (else inputs)))))
@@ -338,7 +341,8 @@ target that libc."
   "Return headers depending on TARGET."
 
   (define xlinux-headers
-    (package (inherit linux-headers)
+    (package
+      (inherit linux-headers)
       (name (string-append (package-name linux-headers)
                            "-cross-" target))
       (arguments
@@ -364,7 +368,8 @@ target that libc."
                        ,@(package-native-inputs linux-headers)))))
 
   (define xgnumach-headers
-    (package (inherit gnumach-headers)
+    (package
+      (inherit gnumach-headers)
       (name (string-append (package-name gnumach-headers)
                            "-cross-" target))
 
@@ -373,7 +378,8 @@ target that libc."
                        ,@(package-native-inputs gnumach-headers)))))
 
   (define xmig
-    (package (inherit mig)
+    (package
+      (inherit mig)
       (name (string-append "mig-cross"))
       (arguments
        `(#:modules ((guix build gnu-build-system)
@@ -396,7 +402,8 @@ target that libc."
                        ,@(package-native-inputs mig)))))
 
   (define xhurd-headers
-    (package (inherit hurd-headers)
+    (package
+      (inherit hurd-headers)
       (name (string-append (package-name hurd-headers)
                            "-cross-" target))
 
@@ -405,8 +412,9 @@ target that libc."
                        ("cross-mig" ,xmig)
                        ,@(alist-delete "mig"(package-native-inputs hurd-headers))))))
 
-   (define xglibc/hurd-headers
-    (package (inherit glibc/hurd-headers)
+  (define xglibc/hurd-headers
+    (package
+      (inherit glibc/hurd-headers)
       (name (string-append (package-name glibc/hurd-headers)
                            "-cross-" target))
 
@@ -437,15 +445,16 @@ target that libc."
                        ,@(alist-delete "mig"(package-native-inputs glibc/hurd-headers))))))
 
   (define xhurd-minimal
-    (package (inherit hurd-minimal)
+    (package
+      (inherit hurd-minimal)
       (name (string-append (package-name hurd-minimal)
                            "-cross-" target))
       (arguments
        (substitute-keyword-arguments
-         `(#:modules ((guix build gnu-build-system)
-                      (guix build utils)
-                      (srfi srfi-26))
-           ,@(package-arguments hurd-minimal))
+           `(#:modules ((guix build gnu-build-system)
+                        (guix build utils)
+                        (srfi srfi-26))
+             ,@(package-arguments hurd-minimal))
          ((#:phases phases)
           `(modify-phases ,phases
              (add-before 'configure 'set-cross-headers-path
@@ -464,7 +473,8 @@ target that libc."
                        ,@(alist-delete "mig"(package-native-inputs hurd-minimal))))))
 
   (define xhurd-core-headers
-    (package (inherit hurd-core-headers)
+    (package
+      (inherit hurd-core-headers)
       (name (string-append (package-name hurd-core-headers)
                            "-cross-" target))
 
@@ -551,7 +561,7 @@ and the cross tool chain."
                                   ,@(assoc-ref (package-native-inputs xheaders)
                                                "cross-mig")))
                                '())
-                         ,@(package-inputs libc)  ;FIXME: static-bash
+                         ,@(package-inputs libc) ;FIXME: static-bash
                          ,@(package-native-inputs libc))))))
 
 
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 211b3003a2..2cd6234450 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -4139,7 +4139,7 @@ the SQL language using a syntax that reflects the resulting query.")
 (define-public apache-arrow
   (package
     (name "apache-arrow")
-    (version "10.0.0")
+    (version "10.0.1")
     (source
      (origin
        (method git-fetch)
@@ -4149,7 +4149,7 @@ the SQL language using a syntax that reflects the resulting query.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1mx2siffbggz26c8j2xma7cwa65khj8nswy04ajczgwvj32rg1ah"))))
+         "0skw6x888i804pg35xaxqwkkb36z9hj966zs3ckhkbp4mcll9q9v"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 9a336b381e..317b5bf474 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -122,14 +122,13 @@ efficient syncing
 (define-public vdirsyncer
   (package
     (name "vdirsyncer")
-    ;; When updating, check whether python-click-5 can be removed entirely.
-    (version "0.18.0")
+    (version "0.19.0")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri name version))
              (sha256
               (base32
-               "00f2bw1a2jbbd1sbci0swnd67kylr341aa9rpbxkajbp3zakxg17"))))
+               "0995bavlv8s9j0127ncq3yzy5p72lam9qgpswyjfanc6l01q87lf"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; The test suite is very flakey.
@@ -141,38 +140,30 @@ efficient syncing
             (setenv "DAV_SERVER" "radicale")
             (setenv "REMOTESTORAGE_SERVER" "skip")
             (if tests?
-                (invoke "make" "test")
-                #t)))
+                (invoke "make" "test"))))
         (add-after 'unpack 'patch-version-call
           (lambda _
             (substitute* "docs/conf.py"
-              (("^release.*") (string-append "release = '" ,version "'\n")))
-            #t))
-        (add-after 'install 'manpage
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (invoke "make" "--directory=docs/" "man")
-            (install-file
-              "docs/_build/man/vdirsyncer.1"
-              (string-append
-                (assoc-ref outputs "out")
-                "/share/man/man1"))
-            #t)))))
+              (("^release.*") (string-append "release = '" ,version "'\n"))))))))
     (native-inputs
      (list python-setuptools-scm
            python-sphinx
            ;; Required for testing
+           python-aioresponses
            python-hypothesis
+           python-trustme
            python-pytest
-           python-pytest-localserver
-           python-pytest-subtesthack
-           python-urllib3
-           python-wsgi-intercept
+           python-pytest-asyncio
+           python-pytest-cov
+           python-pytest-httpserver
            radicale))
     (inputs
-     (list ;; XXX https://github.com/mitsuhiko/click/issues/200
-           python-click-5))
-    (propagated-inputs
-     (list python-atomicwrites python-click-log python-click-threading
+     (list python-aiohttp
+           python-aiostream
+           python-atomicwrites
+           python-click
+           python-click-log
+           python-requests
            python-requests-toolbelt))
     (synopsis "Synchronize calendars and contacts")
     (description "Vdirsyncer synchronizes your calendars and addressbooks
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index e69d1ce83b..1c4f570fe4 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,6 +35,8 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system go)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages autotools)
@@ -856,3 +859,29 @@ engineering.")
     (home-page "https://github.com/epasveer/seer")
     ;; Note: Some icons in src/resources are creative commons 3.0 and/or 4.0.
     (license license:gpl3+)))
+
+(define-public delve
+  (package
+    (name "delve")
+    (version "1.9.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/go-delve/delve")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07jch3yd1pgqviyy18amn23gazbzi7l51f210c3vmc707v3vbbqr"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/go-delve/delve/cmd/dlv"
+           #:unpack-path "github.com/go-delve/delve"
+           #:install-source? #f
+           #:phases #~(modify-phases %standard-phases (delete 'check))))
+    (propagated-inputs (list go))
+    (home-page "https://github.com/go-delve/delve")
+    (synopsis "Debugger for the Go programming language")
+    (description "Delve is a debugger for the Go programming language.")
+    (license license:expat)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 85e2d7c729..7491a2588a 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -589,11 +589,10 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
       ;; as ‘/dev/disk/by-id/’.
      `(#:tests? #f))
     (inputs
-     (list `(,util-linux "lib") parted glib gtkmm-3 libxml2))
+     (list `(,util-linux "lib") parted glib gtkmm-3 lvm2 libxml2))
     (native-inputs
      (list intltool
            itstool
-           lvm2 ; for tests
            yelp-tools
            pkg-config))
     (home-page "https://gparted.org/")
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 585a295fb4..3ded8e1cac 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -36,6 +36,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
   #:use-module (guix deprecation)
@@ -262,6 +263,32 @@ browsing.  The documentation is extracted directly from the C/C++/IDL source
 or Java class files.")
     (license gpl2+)))
 
+(define-public pod2pdf
+  (package
+    (name "pod2pdf")
+    (version "0.42")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                     "mirror://cpan/authors/id/J/JO/JONALLEN/pod2pdf-"
+                     version
+                     ".tar.gz"))
+              (sha256
+                (base32
+                  "0w5p7yy01vph74nfr9qzjb18p1avmhhcpza0qz9r88fmb0blbiyv"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     (list perl-getopt-argvfile
+           perl-pdf-api2
+           perl-pod-parser))
+    (home-page "https://metacpan.org/release/pod2pdf")
+    (synopsis "Convert Pod to PDF format")
+    (description "pod2pdf converts documents written in Perl's @acronym{POD, Plain Old
+Documentation} format to PDF files.  It also supports some extensions to the POD
+format, and supports the file types JPG, GIF, TIFF, PNG, and PNM for embedded
+objects.")
+    (license artistic2.0)))
+
 (define-public python-docrepr
   (package
     (name "python-docrepr")
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 4dd813f919..18d1989124 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -915,13 +915,13 @@ buffer.")
 (define-public emacs-project
   (package
     (name "emacs-project")
-    (version "0.8.3")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/project-" version ".tar"))
        (sha256
-        (base32 "15x6nbvyy592fwn36syxi9719sknvrm4bwnpyc16z9jn2xm62q3p"))))
+        (base32 "0g4cnh771jjwjqhja0kwsv0162ff2xidpk8b6s3r5rzjc9inpcq7"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-xref))
     (home-page "https://elpa.gnu.org/packages/project.html")
@@ -1351,6 +1351,29 @@ this one is much simpler and much more consistent.  When using this package,
 then only the color of the mode line changes when a window becomes in-/active.")
     (license license:gpl3+)))
 
+(define-public emacs-acme-theme
+  (let ((commit "7c408d111c5e451ecb8fdd5f76cf7d8074aec793")
+        (revision "0"))
+    (package
+      (name "emacs-acme-theme")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/ianyepan/acme-emacs-theme")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "16qxspzlf0bvw36ff4qnrn5p7mc5sf923ba0ar04cr87bfqgyak4"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/ianyepan/acme-emacs-theme")
+      (synopsis "Emacs theme inspired by Plan 9's Acme and Sam Editor")
+      (description "Acme theme is an Emacs theme with an old-school vibe
+inspired by Plan 9 Acme and the Sam text editor.")
+      (license license:gpl3+))))
+
 (define-public emacs-theme-magic
   ;; No tagged release upstream, but the commit below correspond to the 0.2.3
   ;; release.
@@ -2977,6 +3000,31 @@ defined in RFC 2425 and RFC 2426 to/from The Insidious Big Brother Database
 shine on top of your cursor so you know where it is.")
     (license license:gpl3+)))
 
+(define-public emacs-carp
+  (let ((commit "17d3d84963434233997626850195f205882bf0df")
+        (revision "0"))
+    (package
+      (name "emacs-carp")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (uri (git-reference
+               (url "https://github.com/carp-lang/carp-emacs")
+               (commit commit)))
+         (method git-fetch)
+         (sha256
+          (base32 "0mn4mg94hzzwb54kikg4c6hvf9ka15f2nz95g0clmn8r0mvkj4d5"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+        (list emacs-clojure-mode emacs-flycheck))
+      (home-page "https://github.com/carp-lang/carp-emacs")
+      (synopsis "Emacs support for Carp")
+      (description
+       "This package provides syntax highlighting, a minor mode for
+listing type errors via Flycheck, as well as REPL support for Carp.")
+      (license license:asl2.0))))
+
 (define-public emacs-counsel-bbdb
   (package
     (name "emacs-counsel-bbdb")
@@ -3553,7 +3601,7 @@ of bibliographic references.")
 (define-public emacs-corfu
   (package
     (name "emacs-corfu")
-    (version "0.33")
+    (version "0.34")
     (source
      (origin
        (method git-fetch)
@@ -3562,7 +3610,7 @@ of bibliographic references.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0c353k6f4i96gajfw1zvidhlwr2brnhhdr39503hpa5wnp69wak7"))))
+        (base32 "0cv0hcgsw4l8lk3gqwqlw91m4kc2dd80ndx06rg6czd22qdrd68m"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -4158,7 +4206,7 @@ during idle time, while Emacs is doing nothing else.")
 (define-public emacs-pdf-tools
   (package
     (name "emacs-pdf-tools")
-    (version "0.91")
+    (version "1.0.0")
     (source
      (origin
        (method git-fetch)
@@ -4167,7 +4215,7 @@ during idle time, while Emacs is doing nothing else.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07ixspgn4s1jg66w7m2f3sh43giakz9srhp7rpw389z32g57i1rx"))))
+        (base32 "1idazz46zx2q84di4p73770l4bcnai2a03q95psg827ykdnmjwij"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -5306,27 +5354,30 @@ intended to be.")
     (license license:gpl3+)))
 
 (define-public emacs-ef-themes
-  (package
-    (name "emacs-ef-themes")
-    (version "0.9.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://git.sr.ht/~protesilaos/ef-themes")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1h1xlcbcay8wlmhzv7b5h6vrvwdwkzc171aa0rfja2xds4ry9k0m"))))
-    (build-system emacs-build-system)
-    (home-page "https://git.sr.ht/~protesilaos/ef-themes")
-    (synopsis "Colorful and legible themes")
-    (description
-     "The Ef themes are a collection of light and dark themes for GNU Emacs
+  ;; XXX: Upstream did not tag last release.  The commit below matches version
+  ;; bump.
+  (let ((commit "35201e49e8c3f5d1a2d6c17cb1697a9e18529a9a"))
+    (package
+      (name "emacs-ef-themes")
+      (version "0.10.0")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.sr.ht/~protesilaos/ef-themes")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0c3gly6d5037dvvznf1mzihrfrcrrjmnsd2dda5k4frfyrc25rmn"))))
+      (build-system emacs-build-system)
+      (home-page "https://git.sr.ht/~protesilaos/ef-themes")
+      (synopsis "Colorful and legible themes")
+      (description
+       "The Ef themes are a collection of light and dark themes for GNU Emacs
 whose goal is to provide colorful yet legible options for users who want
 something with a bit more flair than the Modus themes.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-espuds
   (package
@@ -7253,14 +7304,14 @@ user.")
 (define-public emacs-subed
   (package
     (name "emacs-subed")
-    (version "1.0.24")
+    (version "1.0.26")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.nongnu.org/nongnu/subed-"
                                   version ".tar"))
               (sha256
                (base32
-                "1x9w858pgyhd7hlvn85h379f8sfvf8ly3a9596q4jkqbcp9riymq"))))
+                "1vssgrchjgf36qxm6bm574wvvcjxmcfhlpziwilzixkxw48hh0ym"))))
     (arguments
      (list
       #:tests? #t
@@ -7894,7 +7945,7 @@ features:
 (define-public emacs-company-math
   (package
     (name "emacs-company-math")
-    (version "1.4")
+    (version "1.5")
     (source
      (origin
        (method git-fetch)
@@ -7903,7 +7954,7 @@ features:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1y1fw926insgdl7ib9ynxjrxf3p6wfjkfxvf5vgdca7267cvcll1"))))
+        (base32 "010p3rhb7win6ndx3ilz2lcg69d2qyxfvpi0hcid2srzxffpwn3i"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-math-symbol-lists emacs-company))
@@ -9872,25 +9923,28 @@ them easier to distinguish from other, less important buffers.")
     (license license:expat)))
 
 (define-public emacs-embark
-  (package
-    (name "emacs-embark")
-    (version "0.17")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/oantolin/embark")
-             (commit version)))
-       (sha256
-        (base32 "1s0ssf4q9kg4c5w87h2ypyvrhi31mz3s6k4h7pxi9a47lkccq8n1"))
-       (file-name (git-file-name name version))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     (list emacs-avy emacs-consult))
-    (home-page "https://github.com/oantolin/embark")
-    (synopsis "Emacs mini-buffer actions rooted in keymaps")
-    (description
-     "This package provides a sort of right-click contextual menu for Emacs
+  ;; XXX: Upstream did not tag last release.  Use commit matching version
+  ;; bump.
+  (let ((commit "09da327d43793f0b30114ee80d82ef587124462a"))
+    (package
+      (name "emacs-embark")
+      (version "0.18")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/oantolin/embark")
+               (commit commit)))
+         (sha256
+          (base32 "0drzsa9rzjy0548pa161cf1d71lnyjri31rkwyjray9gy2adbnhv"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       (list emacs-avy emacs-consult))
+      (home-page "https://github.com/oantolin/embark")
+      (synopsis "Emacs mini-buffer actions rooted in keymaps")
+      (description
+       "This package provides a sort of right-click contextual menu for Emacs
 offering you relevant @emph{actions} to use on a @emph{target} determined by
 the context.
 
@@ -9904,7 +9958,7 @@ get offered actions like deleting, copying, renaming, visiting in another
 window, running a shell command on the file, etc.  For buffers the actions
 include switching to or killing the buffer.  For package names the actions
 include installing, removing or visiting the homepage.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-prescient
   (package
@@ -9956,43 +10010,44 @@ interface.")
     (license license:expat)))
 
 (define-public emacs-orderless
-  (package
-    (name "emacs-orderless")
-    (version "0.7")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/oantolin/orderless")
-             (commit version)))
-       (sha256
-        (base32 "0m9nyz80j0qnn14drbgk8vn5yr7sv0z6yiz8w95ahcw2qwlgyjs7"))
-       (file-name (git-file-name name version))))
-    (build-system emacs-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'makeinfo
-           (lambda* (#:key outputs #:allow-other-keys)
-             (invoke "makeinfo" "orderless.texi")
-             (install-file "orderless.info"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/info")))))))
-    (native-inputs
-     (list texinfo))
-    (home-page "https://github.com/oantolin/orderless")
-    (synopsis "Emacs completion style that matches multiple regexps in any order")
-    (description "This package provides an orderless completion style that
+  (let ((commit "004cee6b8e01f8eb0cb1c683d0a637b14890600f"))
+    (package
+      (name "emacs-orderless")
+      (version "0.8")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/oantolin/orderless")
+               (commit commit)))
+         (sha256
+          (base32 "115bwqi2yc44bgvcl7lha8p2s6jgh5hksn4wa9s0kpfxhi14jwmy"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'install 'makeinfo
+              (lambda _
+                (invoke "makeinfo" "orderless.texi")
+                (install-file "orderless.info"
+                              (string-append #$output "/share/info")))))))
+      (native-inputs
+       (list texinfo))
+      (home-page "https://github.com/oantolin/orderless")
+      (synopsis "Emacs completion style that matches multiple regexps in any order")
+      (description "This package provides an orderless completion style that
 divides the pattern into space-separated components, and matches candidates
 that match all of the components in any order.  Each component can match in
 any one of several ways: literally, as a regexp, as an initialism, in the flex
 style, or as multiple word prefixes.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-consult
   (package
     (name "emacs-consult")
-    (version "0.20")
+    (version "0.29")
     (source
      (origin
        (method git-fetch)
@@ -10000,7 +10055,7 @@ style, or as multiple word prefixes.")
              (url "https://github.com/minad/consult")
              (commit version)))
        (sha256
-        (base32 "1rm53sqfl8hnb1l1fr0s8kxgp03prc2ggywqs5ssiqx87vhyn70w"))
+        (base32 "11wk1511hj8m9rmccgq4fb8x7vlr9pi00a9h285lxwj1bdmy9dlz"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-compat))
@@ -11163,7 +11218,7 @@ state and will work even without lispy being enabled.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1vxrjy6k030hcbclblgcaaw7h6k17kl3n9zla08527525c0gma01"))))
+           "1j92ll2afvcp891fxra3sawxg000cs3ra01wxksiil2dg5zpzzkn"))))
       (build-system emacs-build-system)
       (propagated-inputs (list emacs-ivy))
       (home-page "https://github.com/abo-abo/function-args")
@@ -11189,7 +11244,7 @@ the C/C++ function at point.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1j92ll2afvcp891fxra3sawxg000cs3ra01wxksiil2dg5zpzzkn"))))
+           "18kx2mfmxy8s8csnp0iaiirl2z9baicq9f2w7rxlgkxww5511v7d"))))
       (build-system emacs-build-system)
       (propagated-inputs
        (list emacs-function-args emacs-lispy emacs-zoutline))
@@ -13493,7 +13548,7 @@ Lua programming language}.")
 (define-public emacs-ebuild-mode
   (package
     (name "emacs-ebuild-mode")
-    (version "1.60")
+    (version "1.61")
     (source
      (origin
        (method url-fetch)
@@ -13502,7 +13557,7 @@ Lua programming language}.")
              "ebuild-mode-" version ".tar.xz"))
        (file-name (string-append name "-" version ".tar.xz"))
        (sha256
-        (base32 "1n7knzssvz0yyhnn6m37lz8d9v2840skcbm0ipqjpqyzawnr3psw"))))
+        (base32 "02fkmzh9rdl061n1p9lgf5mgkm67vxcbd8sj0f1dicb9vyry0zgy"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -13960,7 +14015,7 @@ pasting into and from @code{tmux} paste buffers.")
 (define-public emacs-evil-nerd-commenter
   (package
     (name "emacs-evil-nerd-commenter")
-    (version "3.5.8")
+    (version "3.6.0")
     (source
      (origin
        (method git-fetch)
@@ -13970,7 +14025,7 @@ pasting into and from @code{tmux} paste buffers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0xrbmz9mx4aclqgjyjaq7vj9xf4291rw4nxaz2nvqblv8yylqbr0"))))
+         "1v2iwci0yc1sld1sidrwdnqriyhs78ba3gp4d9az0af48grl7x1w"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-evil))
     (home-page "https://github.com/redguardtoo/evil-nerd-commenter")
@@ -14142,51 +14197,72 @@ passive voice.")
 (define-public emacs-org
   (package
     (name "emacs-org")
-    (version "9.5.5")
+    (version "9.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://git.savannah.gnu.org/git/emacs/org-mode.git")
+             (url "https://git.savannah.gnu.org/git/emacs/org-mode")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bswysz5laiya9pm689v4rpxjlfqg21azyh1jal9jq80iwjwi2p8"))))
+        (base32 "1pi9kkcbvsrvw009lf6q2l68n9jyjks94xjqyn36zq1vqcvmg33d"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:tests? #t
-       #:test-command '("make" "test-dirty")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'make
-           (lambda _
-             (invoke "make" (string-append "ORGVERSION=" ,version))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "local.mk"
-               (("^prefix.*")
-                (string-append "prefix = " (assoc-ref outputs "out")))
-               (("^lispdir.*")
-                (string-append "lispdir = "
-                               (elpa-directory (assoc-ref outputs "out")))))
-             ;; The dependent targets for install perform cleanup that
-             ;; partially undoes our make phase
-             (substitute* "lisp/Makefile"
-               (("^install:.*") "install:\n"))
-             (invoke "make" "install")))
-         (add-after 'unpack 'fix-tests
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; These files are modified during testing
-             (with-directory-excursion "testing/examples"
-               (for-each make-file-writable
-                         '("babel.org"
-                           "ob-awk-test.org"
-                           "ob-sed-test.org"
-                           "ob-shell-test.org"))
-               ;; Specify where sh is
-               (substitute* "babel.org"
-                 (("/bin/sh" sh)
-                  (string-append (assoc-ref inputs "bash") sh)))))))))
+     (list
+      #:tests? #t
+      #:test-command #~(list "make" "test-dirty")
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'expand-load-path
+            ;; Make sure `load-path' includes "lisp" directory, otherwise
+            ;; byte-compilation fails.
+            (lambda args
+              (with-directory-excursion "lisp"
+                (apply (assoc-ref %standard-phases 'expand-load-path) args))))
+          (add-after 'expand-load-path 'bootstrap
+            ;; XXX: Generate "org-loaddefs.el".
+            (lambda _
+              (invoke "make" "autoloads")))
+          (add-before 'check 'fix-tests
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; XXX: Running tests updates ID locations.  The process expects
+              ;; a file to be writeable in "~/.emacs.d/".
+              (setenv "HOME" (getcwd))
+              (mkdir-p ".emacs.d")
+              ;; These files are modified during testing.
+              (with-directory-excursion "testing/examples"
+                (for-each make-file-writable
+                          '("babel.org"
+                            "ob-awk-test.org"
+                            "ob-sed-test.org"
+                            "ob-shell-test.org"))
+                ;; Specify where sh executable is.
+                (let ((sh (search-input-file inputs "/bin/sh")))
+                  (substitute* "babel.org"
+                    (("/bin/sh") sh))))
+              ;; XXX: Skip failing tests.
+              (substitute* "testing/lisp/test-ob-shell.el"
+                (("ob-shell/remote-with-stdin-or-cmdline .*" all)
+                 (string-append all "  (skip-unless nil)\n")))
+              (substitute* "testing/lisp/test-org.el"
+                (("test-org/org-(encode-time|time-string-to-time) .*" all)
+                 (string-append all "  (skip-unless nil)\n")))))
+          (replace 'install
+            (lambda _
+              (let ((elpa (elpa-directory #$output))
+                    (info (string-append #$output "/share/info")))
+                (substitute* "local.mk"
+                  (("^lispdir.*") (string-append "lispdir = " elpa))
+                  (("^datadir.*") (string-append "datadir = " elpa "/etc"))
+                  (("^infodir.*") (string-append "infodir = " info))))
+              (invoke "make" "install" (string-append "ORGVERSION=" #$version))))
+          (add-after 'install 'install-org-news
+            ;; Install ORG-NEWS files in doc directory.
+            (lambda _
+              (install-file "etc/ORG-NEWS"
+                            (string-append #$output "/share/doc/"
+                                           #$name "-" #$version)))))))
     (native-inputs
      (list texinfo))
     (home-page "https://orgmode.org/")
@@ -16847,7 +16923,7 @@ one if it fails.")
 (define-public emacs-jarchive
   (package
     (name "emacs-jarchive")
-    (version "0.8.0")
+    (version "0.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -16856,7 +16932,7 @@ one if it fails.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fi3y5kmy7ginyqg12q797bma638xmam7lrk74x6yhx84xgzb4fq"))))
+                "0v1mz9z8dgxr4yj9p0wf0a748nlnvv2z0mrbkbqz7nsnw5djkimd"))))
     (build-system emacs-build-system)
     (home-page "https://sr.ht/~dannyfreeman/jarchive")
     (synopsis "Jarchive teaches Emacs how to navigate to files inside JARs")
@@ -17615,7 +17691,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
 (define-public emacs-ement
   (package
     (name "emacs-ement")
-    (version "0.4.1")
+    (version "0.5.1")
     (source
      (origin
        (method git-fetch)
@@ -17624,7 +17700,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1411w5i2wsw748yszi9w99mlnwf1v31bmkg8brmybl9zmc0q4gxr"))))
+        (base32 "17spz9z7anzgqgcddsv5rqr6qa6yada3yrvz81z0knbpls5qqp6a"))))
     (build-system emacs-build-system)
     (arguments
      `(#:emacs ,emacs))               ;need libxml support
@@ -20164,13 +20240,13 @@ temperature shifting tools and brightness adaption software.")
 (define-public emacs-peg
   (package
     (name "emacs-peg")
-    (version "1.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/peg-" version ".tar"))
        (sha256
-        (base32 "0skr5dz9k34r409hisnj37n1b7n62l3md0glnfx578xkbmxlpcxl"))))
+        (base32 "0yxfwwwc6fck1p9smcm1dwnva42868xvavhy7j749vlxrgb3v94x"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/peg.html")
     (synopsis "Parsing Expression Grammars in Elisp")
@@ -22085,7 +22161,7 @@ and doesn't require memorisation of commands.
 (define-public emacs-logview
   (package
     (name "emacs-logview")
-    (version "0.15.1")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -22094,7 +22170,7 @@ and doesn't require memorisation of commands.
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1khri5632pjirj191x3ps94s4pyrwapf1pbrkmqqp0d26b50d3s2"))))
+        (base32 "0vw6brs76z7fkvlazakwhhgdcydjc099j150c7503kwi2hmmp0p8"))))
     (propagated-inputs
      (list emacs-datetime emacs-extmap))
     (build-system emacs-build-system)
@@ -23993,7 +24069,7 @@ file.")
 (define-public emacs-packed
   (package
     (name "emacs-packed")
-    (version "3.0.4")
+    (version "3.1.0")
     (source
      (origin
        (method git-fetch)
@@ -24002,8 +24078,10 @@ file.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gpv2vaci0m48fzn0sy7iwl1mnkkqc30bf05jjrqlpn9kpbjyf1p"))))
+        (base32 "0i2j5yk6xhv4rh3317f241y9llwf4wk18a6a4lkqrvbjpvi9yvn0"))))
     (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-compat))
     (home-page "https://github.com/emacscollective/packed")
     (synopsis "Package manager agnostic Emacs Lisp package utilities")
     (description
@@ -25608,7 +25686,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
 (define-public emacs-buttercup
   (package
     (name "emacs-buttercup")
-    (version "1.28")
+    (version "1.29")
     (source
      (origin
        (method git-fetch)
@@ -25618,7 +25696,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1dc8m5w26gi698d31xvh1q8mwf4a3wa1xrnyhqqxrmfr8b71clpk"))))
+         "0a5wvm7nh4748wzvp2b9jll74ifqz22bicxkl5fwp4di4vrqpd47"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -26095,30 +26173,27 @@ chevron marks.")
       (license license:gpl3+))))
 
 (define-public emacs-nix-mode
-  ;; Use the latest commit to get unreleased fixes to build with Emacs 28.1.
-  (let ((commit "8fe2ccf0b01f694a77d2528e06c10f06057784f6")
-        (revision "0"))
-    (package
-      (name "emacs-nix-mode")
-      (version (git-version "1.4.5" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/NixOS/nix-mode")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "08kz9qp4gp55z1i87ig0ysq6pgqgwlgr765g1vp8gsh6lp3myh36"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       (list emacs-company emacs-json-mode emacs-magit emacs-mmm-mode))
-      (home-page "https://github.com/NixOS/nix-mode")
-      (synopsis "Emacs major mode for editing Nix expressions")
-      (description "@code{nixos-mode} provides an Emacs major mode for editing
+  (package
+    (name "emacs-nix-mode")
+    (version "1.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/NixOS/nix-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xvrnpk7cnjm55ja6j7bdnszkzj914gmyzb12r89jh0z25r09crq"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-company emacs-json-mode emacs-magit emacs-mmm-mode))
+    (home-page "https://github.com/NixOS/nix-mode")
+    (synopsis "Emacs major mode for editing Nix expressions")
+    (description "@code{nixos-mode} provides an Emacs major mode for editing
 Nix expressions.  It supports syntax highlighting, indenting and refilling of
 comments.")
-      (license license:lgpl2.1+))))
+    (license license:lgpl2.1+)))
 
 (define-public emacs-libmpdel
   (package
@@ -28598,14 +28673,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.5.3.3")
+    (version "2.5.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "05w04qwk1lk50fzwl6fxyf6pb1jd2lx4as99zm1dpa858jab6w4a"))))
+        (base32 "1ap2niqskbj81xqhdi4lzh3646g9rwh3iw5qgyl3fw7cfq945fsl"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -31723,7 +31798,7 @@ variables.")
 (define-public emacs-company-emoji
   (package
     (name "emacs-company-emoji")
-    (version "2.6.1")
+    (version "2.7.0")
     (source
      (origin
        (method git-fetch)
@@ -31732,7 +31807,7 @@ variables.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1rhf2hr345953mkn52i58aiq8j16ps2ckapd5f7jxmhkcpzxxfhk"))))
+        (base32 "1prcjdqm4djp5nr93m2axddhhdmn1s0y157px9zsk7g5yi36dn6q"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-company))
@@ -33238,16 +33313,16 @@ complementary packages.")
 (define-public emacs-wisp-mode
   (package
     (name "emacs-wisp-mode")
-    (version "0.3.0")
+    (version "1.0.8")
     (source
      (origin
        (method hg-fetch)
        (uri (hg-reference
              (url "https://hg.sr.ht/~arnebab/wisp")
-             (changeset (string-append "wisp-mode-" version))))
+             (changeset (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "189baxk27rq3s6h6mh0m25sv504853rpvyxxdcwx6wdy7l88qany"))))
+        (base32 "1hqwdmx081icv516cyndjkwvgr7b41hi5qdaylkv0jran35jwjiw"))))
     (build-system emacs-build-system)
     (home-page "https://www.draketo.de/software/wisp")
     (synopsis "Syntax highlighting and indentation support for Wisp files")
@@ -34418,7 +34493,7 @@ across sessions.")
 (define-public emacs-vertico-posframe
   (package
     (name "emacs-vertico-posframe")
-    (version "0.5.4")
+    (version "0.5.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -34426,7 +34501,7 @@ across sessions.")
                     ".tar"))
               (sha256
                (base32
-                "19lx6p06wkwfivxgswdljdsh9bgcd1b9zkzx426w3pwicdk0cvgg"))))
+                "1rfji5x7rb787xzm9g268z7khvrby0plvas97q8wfshl96md8svx"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-posframe emacs-vertico))
     (home-page "https://github.com/tumashu/vertico-posframe")
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 0458ed5f13..87c572ba0f 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -32,6 +32,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -1092,6 +1093,41 @@ the Raspberry Pi chip.")
       (description "This package provides @code{gcc} for VideoCore IV,
 the Raspberry Pi chip."))))
 
+(define-public imx-usb-loader
+  ;; There are no proper releases.
+  (let ((commit "30b43d69770cd69e84c045dc9dcabb1f3e9d975a")
+        (revision "0"))
+    (package
+      (name "imx-usb-loader")
+      ;; For the version string, see IMX_LOADER_VERSION in imx_loader.h.
+      (version (git-version "0.2pre" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/boundarydevices/imx_usb_loader")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1jdxbg63qascyl8x32njs9k9gzy86g209q7hc0jp74qyh0i6fwwc"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:test-target "tests"
+             #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                                  (string-append "prefix=" #$output))
+             #:phases #~(modify-phases %standard-phases
+                          (delete 'configure))))
+      (native-inputs (list pkg-config))
+      (inputs (list libusb))
+      (home-page "https://github.com/boundarydevices/imx_usb_loader")
+      (synopsis "USB and UART loader for i.MX5/6/7/8 series")
+      (description "This utility downloads and executes code on Freescale
+i.MX5/i.MX6/i.MX7 and Vybrid SoCs through the Serial Download Protocol (SDP).
+Depending on the board, there is usually some kind of recovery button to bring
+the SoC into serial download boot mode; check the documentation of your
+hardware.  The utility support USB and UART as serial link.")
+      (license license:lgpl2.1+))))
+
 (define-public python-libmpsse
   (package
     (name "python-libmpsse")
@@ -1676,3 +1712,38 @@ provides command line tools for Mbed OS to detect Mbed enabled devices
 connected by USB, checkout Mbed projects and perform builds amongst other
 operations.")
     (license license:asl2.0)))
+
+(define-public ts4900-utils
+  ;; There are no proper release nor tag; use the latest commit.
+  (let ((revision "0")
+        (commit "e10a12f8050d1d1229e711c7cfab8a0d5d93ee58"))
+    (package
+      (name "ts4900-utils")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/embeddedTS/ts4900-utils")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1vr8i425qijbwgbc10av3wr35p3x11wy6y442w0ja0yny7si8wp8"))))
+      (build-system gnu-build-system)
+      (native-inputs (list autoconf automake))
+      (home-page "https://github.com/embeddedTS/ts4900-utils")
+      (synopsis "Utilities for the TS-4900 board family")
+      (description "This package contains utilities useful for boards of the
+TS-4900 family.  The included commands are:
+@itemize @code
+@item adc8390
+@item gpioctl
+@item isl12020rtc
+@item load_fpga
+@item nvramctl
+@item tshwctl
+@item tsmicroctl
+@item tsmicroupdate
+@item tssilomon
+@end itemize")
+      (license license:bsd-2))))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 28d3e0ca9a..5054ae3da5 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -777,7 +777,7 @@ and Game Boy Color games.")
 (define-public sameboy
   (package
     (name "sameboy")
-    (version "0.15.6")
+    (version "0.15.8")
     (source
      (origin
        (method git-fetch)
@@ -786,7 +786,7 @@ and Game Boy Color games.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0a2fcsnv7ykj4kk2vpq9jjn8yjrx34n5s186rqvgj3dzm8w6xijs"))))
+        (base32 "11qz5lamwxgvlh4dc95xd4m8hrypjj3bvha51zg9l454hxlvw4j8"))))
     (build-system gnu-build-system)
     (native-inputs
      (list rgbds pkg-config))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 1f3958f55c..ee224ad173 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2428,7 +2428,7 @@ comments.")))
 (define-public freecad
   (package
     (name "freecad")
-    (version "0.20.1")
+    (version "0.20.2")
     (source
      (origin
        (method git-fetch)
@@ -2437,7 +2437,7 @@ comments.")))
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1pgkjlahisqjvi3dd7ywj1zwhsl3wn3p15sifbmrdfdmw9is3z2b"))))
+        (base32 "02976k91ypv41rqdl27jbmyhnhgx7k5bj520lcqs8qzgcdsynd03"))))
     (build-system qt-build-system)
     (native-inputs
      (list doxygen
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 4b5e466c7d..8dae5f40d3 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -199,7 +199,7 @@ removable devices or support for multimedia.")
 (define-public terminology
   (package
     (name "terminology")
-    (version "1.12.1")
+    (version "1.13.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -207,7 +207,7 @@ removable devices or support for multimedia.")
                               "terminology/terminology-" version ".tar.xz"))
               (sha256
                (base32
-                "1aasddf2343qj798b5s8qwif3lxj4pyjax6fa9sfi6if9icdkkpq"))
+                "19ad8ycg5mkk2ldqm0ysvzb7gvhw6fpw1iiyvv4kxmmvszn7z8qn"))
               (modules '((guix build utils)))
               ;; Remove the bundled fonts.
               (snippet
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index eb70503f57..cc2d417003 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -889,6 +889,23 @@ the Monero command line client and daemon.")
 the Monero GUI client.")
     (license license:bsd-3)))
 
+(define-public python-bech32
+  (package
+    (name "python-bech32")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "bech32" version))
+              (sha256
+               (base32
+                "16fq5cfy5id9hp123ylhpl55pf38xwk0hv7sziqpig838qhvhvbx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/fiatjaf/bech32")
+    (synopsis "Reference implementation for Bech32 and Segwit addresses")
+    (description "This package provides a python reference implementation for
+Bech32 and segwit addresses.")
+    (license license:expat)))
+
 (define-public python-trezor-agent
   ;; It is called 'libagent' in pypi; i.e. this is the library as opposed to
   ;; the toplevel app called trezor-agent.
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index af53ddb6eb..bd90a76086 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2729,7 +2729,12 @@ for xdg-desktop-portal that is using Qt/KF5.")
                   (string-append "execl(\"" sh "\", \"" sh "\"")))
                (substitute* "src/screencast/screencast.c"
                  (("execvp\\(\"sh")
-                  (string-append "execvp(\"" sh)))))))))
+                  (string-append "execvp(\"" sh))))))
+         (add-after 'install 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "../source/README.md"
+                           (string-append (assoc-ref outputs "out")
+                                          "/share/doc/" ,name)))))))
     (native-inputs
      (list cmake pkg-config))
     (inputs (list elogind
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 66d0ca316f..4a0435045b 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -736,6 +736,34 @@ to ease the development of games and multimedia applications.  It is composed
 of five modules: system, window, graphics, audio and network.")
     (license license:zlib)))
 
+(define-public csfml
+  (package
+    (name "csfml")
+    (version "2.5.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/SFML/CSFML")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wj1p798myyavld2xdhvvflb5h4nf1vgxxzs6nh5qad44vj9b3kb"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DCSFML_BUILD_DOC=TRUE")
+           #:tests? #f)) ;no tests
+    (native-inputs (list doxygen))
+    (inputs (list sfml))
+    (synopsis "C bindings for the SFML multimedia library")
+    (description
+     "CSFML is the official C binding to the SFML libraries.  SFML provides a
+simple interface to the various computer components, to ease the development of
+games and multimedia applications.  It is composed of five modules: system,
+window, graphics, audio and network.")
+    (home-page "https://www.sfml-dev.org/download/csfml/")
+    (license license:zlib)))
+
 (define-public sfxr
   (package
     (name "sfxr")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 661d727d79..d8c5a34a41 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -63,7 +63,7 @@
 ;;; Copyright © 2021 David Pflug <david@pflug.io>
 ;;; Copyright © 2021, 2022 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
-;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
+;;; Copyright © 2021, 2022 Noisytoot <ron@noisytoot.org>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021, 2022 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 Christopher Baines <mail@cbaines.net>
@@ -445,7 +445,7 @@ physics settings to tweak as well.")
 (define-public astromenace
   (package
     (name "astromenace")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method git-fetch)
@@ -454,33 +454,30 @@ physics settings to tweak as well.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
+        (base32 "0vw94issjzz6rji0ssqv5yrll513dvj7m0d33q8lbih1gdh4alal"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ;no test
-       #:configure-flags (list (string-append "-DDATADIR="
-                                              (assoc-ref %outputs "out")
-                                              "/share/astromenace"))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'install
-           ;; Upstream provides no install phase.
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (share (string-append out "/share"))
-                    (apps (string-append share "/applications"))
-                    (data (string-append share "/astromenace"))
-                    (icons (string-append share "/icons/hicolor/64x64/apps")))
-               (install-file "astromenace" bin)
-               (install-file "gamedata.vfs" data)
-               (let ((source (assoc-ref inputs "source")))
-                 (with-directory-excursion (string-append source "/share")
-                   (install-file "astromenace.desktop" apps)
-                   (mkdir-p icons)
-                   (copy-file "astromenace_64.png"
-                              (string-append icons "/astromenace.png")))))
-             #t)))))
+     (list
+      #:tests? #f                       ;no tests
+      #:configure-flags
+      #~(list (string-append "-DDATADIR=" #$output "/share/astromenace"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'install
+            ;; Upstream provides no install phase.
+            (lambda _
+              (let* ((bin (string-append #$output "/bin"))
+                     (share (string-append #$output "/share"))
+                     (apps (string-append share "/applications"))
+                     (data (string-append share "/astromenace"))
+                     (icons (string-append share "/icons/hicolor/64x64/apps")))
+                (install-file "astromenace" bin)
+                (install-file "gamedata.vfs" data)
+                (with-directory-excursion (string-append #$source "/share")
+                  (install-file "astromenace.desktop" apps)
+                  (mkdir-p icons)
+                  (copy-file "astromenace_64.png"
+                             (string-append icons "/astromenace.png")))))))))
     (inputs
      (list freealut
            freetype
@@ -2089,7 +2086,7 @@ done
 for i in ~a/games/lib/nethackdir/*; do
   ln -s $i $(basename $i)
 done
-~a/games/nethack"
+~a/games/nethack \"$@\""
                       (assoc-ref %build-inputs "bash")
                       (list->search-path-as-string
                         (list
@@ -3956,7 +3953,7 @@ Protocol).")
 (define-public extremetuxracer
   (package
     (name "extremetuxracer")
-    (version "0.8.1")
+    (version "0.8.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3964,7 +3961,7 @@ Protocol).")
                     version "/etr-" version ".tar.xz"))
               (sha256
                (base32
-                "0hc3qd9hv3h9qm53yxgc7iy1v1wyajwxyvil4vqvzf9ascz9dnlj"))))
+                "0knd22lzhzqih1w92y6m7yxha376c6ydl22wy4xm6jg2x5jlk1qw"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 0368ccc223..8be9c55000 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -873,7 +873,7 @@ notebooks and tiling window managers.")
 (define-public gpaste
   (package
     (name "gpaste")
-    (version "42.1")
+    (version "42.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -882,12 +882,13 @@ notebooks and tiling window managers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1dlqa69zvzzdxyh21qfrx2nhpfy0fbihxpgkxqmramcgv3h5k4q3"))
+                "0qq2p19p3r3lz8yfynpnf36cipv54bzdbmq1x5zgwhyl4yl41g28"))
               (patches
                (search-patches "gpaste-fix-paths.patch"))))
     (build-system meson-build-system)
     (native-inputs
-     (list gettext-minimal
+     (list gcr
+           gettext-minimal
            gobject-introspection
            (list glib "bin")            ; for glib-compile-resources
            pkg-config
@@ -913,6 +914,9 @@ notebooks and tiling window managers.")
            #~(modify-phases %standard-phases
                (add-after 'unpack 'fix-introspection-install-dir
                  (lambda _
+                   (substitute* "src/libgpaste/gpaste/gpaste-settings.c"
+                     (("@gschemasCompiled@")
+                      (string-append #$output "/share/glib-2.0/schemas/")))
                    (substitute* '("src/gnome-shell/extension.js"
                                   "src/gnome-shell/prefs.js")
                      (("@typelibPath@")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 8652d9e03c..c2edd7a553 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -72,6 +72,7 @@
 ;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
 ;;; Copyright © 2022 Rene Saavedra <nanuui@protonmail.com>
 ;;; Copyright © 2022 Alexandros Theodotou <alex@zrythm.org>
+;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -8710,6 +8711,64 @@ Cisco's AnyConnect SSL VPN.")
                   ;; so that 'network-manager-service-type' creates it.
                   (user-accounts . ("nm-openconnect"))))))
 
+(define-public network-manager-fortisslvpn
+  (package
+    (name "network-manager-fortisslvpn")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://gnome/sources/NetworkManager-fortisslvpn/"
+                    (version-major+minor version)
+                    "/NetworkManager-fortisslvpn-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1ynsqmv8xz1cffnai4hfh0ab0dmlazpv72krhlsv45mm95iy4mdh"))
+              (modules '((guix build utils)))
+              (snippet '(substitute* "Makefile.in"
+                          ;; do not try to make state directory
+                          (("\\$\\(DESTDIR\\)\\$\\(fortisslvpn_statedir\\)")
+                           "")
+                          ;; use state directory of the NetworkManager service
+                          (("\\$\\(fortisslvpn_statedir\\)")
+                           "/var/lib/NetworkManager")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var"
+                           "--with-gtk4=yes")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'configure 'patch-path
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let* ((ovpn (search-input-file inputs
+                                                      "/bin/openfortivpn"))
+                             (pretty-ovpn (string-append "\"" ovpn "\"")))
+                        (for-each (lambda (file)
+                                    (substitute* file
+                                      (("\"/usr/local/bin/openfortivpn\"")
+                                       pretty-ovpn)
+                                      (("\"/usr/bin/openfortivpn\"")
+                                       pretty-ovpn)))
+                                  '("src/nm-fortisslvpn-service.c"
+                                    "properties/nm-fortisslvpn-editor.c"))))))))
+    (native-inputs (list intltool
+                         `(,glib "bin") pkg-config))
+    (inputs (list gtk+
+                  gtk
+                  kmod
+                  libnma
+                  libsecret
+                  network-manager
+                  openfortivpn
+                  pango-next ;TODO: remove after it's the default
+                  ppp))
+    (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
+    (synopsis "Fortinet SSLVPN plug-in for NetworkManager")
+    (description
+     "This extension of NetworkManager allows it to take care of connections
+to virtual private networks (VPNs) via Fortinet SSLVPN.")
+    (license license:gpl2+)
+    (properties `((upstream-name . "NetworkManager-fortisslvpn")))))
+
 (define-public mobile-broadband-provider-info
   (package
     (name "mobile-broadband-provider-info")
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 52ece9bbd4..ba910934be 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1097,8 +1097,8 @@ standards of the IceCat project.")
        (cpe-name . "firefox_esr")
        (cpe-version . ,(first (string-split version #\-)))))))
 
-(define %icedove-build-id "20221115000000") ;must be of the form YYYYMMDDhhmmss
-(define %icedove-version "102.5.0")
+(define %icedove-build-id "20221201000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-version "102.5.1")
 
 ;; Provides the "comm" folder which is inserted into the icecat source.
 ;; Avoids the duplication of Icecat's source tarball.
@@ -1107,11 +1107,11 @@ standards of the IceCat project.")
     (method hg-fetch)
     (uri (hg-reference
           (url "https://hg.mozilla.org/releases/comm-esr102")
-          (changeset "b6e9b5a1d1b53d26cfb7032ef2ff02203ab0486b")))
+          (changeset "bbf216e50e6a8cb4362b2b77feeb8ca4a1d78914")))
     (file-name (string-append "thunderbird-" %icedove-version "-checkout"))
     (sha256
      (base32
-      "0i2w1ibaip8rlghrk5iaih14xnz5n19ag64qcdgjxic78mhnmm04"))))
+      "06fhdzpl72mihm97g2i76knbny1jj261isl2jy8085wdmriv2f8z"))))
 
 (define-public icedove
   (package
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 60c6a979c5..efe1deede4 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2053,7 +2053,7 @@ Some feature highlights:
 (define-public openxr
   (package
     (name "openxr")
-    (version "1.0.25")
+    (version "1.0.26")
     (source
      (origin
        (method git-fetch)
@@ -2067,7 +2067,7 @@ Some feature highlights:
            ;; Delete bundled jsoncpp.
            (delete-file-recursively "src/external/jsoncpp")))
        (sha256
-        (base32 "1p8nfxswgy40zxizh925a477jcsfngbwns65qzaid5rmrvvk8c45"))))
+        (base32 "0s66xgwkdj5vn05l493hqydrxfpxxidd6mcb8l7l5awhn88cy16f"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index b1620618eb..9fc6344491 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -45,6 +45,7 @@
 ;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -707,6 +708,25 @@ is not available for Guile 2.0.")
     (properties '((upstream-name . "fibers")))
     (license license:lgpl3+)))
 
+(define-public guile-fibers-next
+  (let ((commit "0fa712ecd85c65d7d11ce0c897f068fba4e6ef3f")
+        (revision "0"))
+    (package
+      (inherit guile-fibers-1.1)
+      (name "guile-fibers-next")
+      (version (git-version (package-version guile-fibers-1.1)
+                            revision
+                            commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/wingo/fibers")
+                      (commit commit)))
+                (file-name (git-file-name "guile-fibers" version))
+                (sha256
+                 (base32
+                  "0vfq4dkdq2szi5f99ywm856vll397c1x42a55rpxya61rrws8s9r")))))))
+
 (define-public guile-fibers
   (package
     (inherit guile-fibers-1.1)
@@ -3546,6 +3566,29 @@ in C using Gtk+-3 and WebKitGtk.")
 perform geometrical transforms on JPEG images.")
       (license license:gpl3+))))
 
+(define-public guile-jtd
+  (package
+    (name "guile-jtd")
+    (version "220323a")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mwette/guile-jtd")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1l8fyqhvksarvpbr903i3ss3432jzvyvhgcqa15j922ngqh4ds6f"))))
+    (build-system guile-build-system)
+    (native-inputs (list guile-3.0))
+    (home-page "https://github.com/mwette/guile-jtd")
+    (synopsis "Python's @code{pdb.set_trace()} but for Guile")
+    (description
+     "The @code{(jtd)} module for Guile provides a procedure
+@code{jump-to-debugger} for escaping to the Guile REPL for the purpose of
+debugging code.")
+    (license license:lgpl2.1+)))
+
 (define-public guile-png
   (package
     (name "guile-png")
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 322debac71..a0ed572cc0 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -432,9 +432,9 @@ without requiring the source code to be rewritten.")
                                                 ;  when heavily loaded)
 
 (define-public guile-next
-  (let ((version "3.0.7")
+  (let ((version "3.0.8")
         (revision "0")
-        (commit "d70c1dbebf9ac0fd45af4578c23983ec4a7da535"))
+        (commit "a1a85581f17dade76a598b48eac7d3d308e3a0a5"))
     (package
       (inherit guile-3.0)
       (name "guile-next")
@@ -448,7 +448,7 @@ without requiring the source code to be rewritten.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "05rsk9lh5kchbav3lwfwgvgybrykqqjmkkc6689fhb3mjr5m3dqj"))))
+                  "1l5zkg0wpchyizq8s4615hkj0n0i029l72k3pq2hha89r3bcn8al"))))
       (arguments
        (substitute-keyword-arguments (package-arguments guile-3.0)
          ((#:phases phases '%standard-phases)
@@ -666,14 +666,14 @@ specification.  These are the main features:
   (package
     (inherit guile-json-3)
     (name "guile-json")
-    (version "4.7.1")
+    (version "4.7.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/guile-json/guile-json-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0hv8jjb6wdhvfrprwdi36125sci1ip4zfflv79hqlz7nh0irld65"))))))
+                "127k2xc07w1gnyqs40z4865l8p3ra5xgpcn569dz04lxsa709fiq"))))))
 
 (define-public guile2.2-json
   (package-for-guile-2.2 guile-json-4))
diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm
index 2320250148..2e8c1d085d 100644
--- a/gnu/packages/i2p.scm
+++ b/gnu/packages/i2p.scm
@@ -32,7 +32,7 @@
 (define-public i2pd
   (package
     (name "i2pd")
-    (version "2.41.0")
+    (version "2.44.0")
     (source
      (origin
        (method git-fetch)
@@ -41,7 +41,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kh03lb4m8fvlfvq06d4hgwmk43pk7yp7n7y36kb2vplhrjrn2kx"))))
+        (base32 "0fwaalfxqdahgvx5rfkvdmf6gl10w328a18ddhyn5kvpmp9x7fgl"))))
     (build-system cmake-build-system)
     (inputs
      (list boost miniupnpc openssl zlib))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 037c141065..200b8c1cc3 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -110,7 +110,7 @@
 (define-public ytfzf
   (package
     (name "ytfzf")
-    (version "2.4.1")
+    (version "2.5.2")
     (home-page "https://github.com/pystardust/ytfzf")
     (source
      (origin
@@ -121,7 +121,7 @@
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "198qhnjklrgrjs35ygym6sgx1ibwn6qrihfiginvmx38gdavdj4x"))))
+        (base32 "138rqjjyh6ar951v0v5sl1v000ja8zznn141qqw8ymx5h2z44r6w"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -613,7 +613,7 @@ imaging.  It supports several HDR and LDR image formats, and it can:
 (define-public mcomix
   (package
     (name "mcomix")
-    (version "2.0.1")
+    (version "2.0.2")
     (source
      (origin
        (method url-fetch)
@@ -621,7 +621,7 @@ imaging.  It supports several HDR and LDR image formats, and it can:
                            "mcomix-" version ".tar.gz"))
        (sha256
         (base32
-         "187ca815vxb2in1ryvfiaf1zapi0bc9jxdac3c1bky0kr6x7xyap"))))
+         "0n0akk3njsm0paqxfbxqycwhwy6smjg0rhlcz5r7r82n7rqx0f7g"))))
     (build-system python-build-system)
     (inputs
      (list p7zip python python-pillow python-pygobject python-pycairo gtk+))
@@ -726,14 +726,14 @@ preloading.")
 (define-public chafa
   (package
     (name "chafa")
-    (version "1.8.0")
+    (version "1.12.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hpjansson.org/chafa/releases/chafa-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0sr86bnrqcf6wxigrgsglv4fc79g5djmki20ih4hg8kbhcnnbzr1"))))
+                "0gsp39xnra331lk0db5pfqpdmqfhf7ii3a7yywj33sknf0dbsx4p"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 32dbe1369e..a4ca328b5d 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1937,22 +1937,23 @@ lightweight animated-GIF viewer, and @command{gifdiff} compares two GIFs for
 identical visual appearance.")
    (license license:gpl2+)))
 
-;; 1.0.7 is buggy and reverted in git repository.
 (define-public jp2a
   (package
     (name "jp2a")
-    (version "1.0.6")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://debian/pool/main/j/jp2a/jp2a_"
-                           version ".orig.tar.gz"))
+       (uri (string-append "https://github.com/Talinx/jp2a/releases/download/v"
+                           version "/jp2a-" version ".tar.gz"))
         (sha256
          (base32
-          "076frk3pa16s4r1b10zgy81vdlz0385zh3ykbnkaij25jn5aqc09"))))
+          "10kwhh1a0ivrzagl2vcxrbqmlr2q8x29ymqwzchpiriy6xqxck8l"))))
     (build-system gnu-build-system)
     (inputs
-     (list curl libjpeg-turbo ncurses))
+     (list curl libpng libjpeg-turbo ncurses))
+    (native-inputs
+     (list doxygen))
     (home-page "https://csl.name/jp2a/")
     (synopsis "Convert JPEG images to ASCII")
     (description
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index a878c82b66..33bb54b9e8 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -99,6 +99,7 @@
                              "jami-fix-unit-tests-build.patch"
                              "jami-fix-qml-imports.patch"
                              "jami-no-webengine.patch"
+                             "jami-sipaccount-segfault.patch"
                              "jami-sip-contacts.patch"
                              "jami-sip-unregister.patch"
                              "jami-xcb-link.patch"))))
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 28c759a5c0..d2fae6a465 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -62,7 +62,7 @@ types/functions defined in AbstractFFTs.")
 (define-public julia-abstracttrees
   (package
     (name "julia-abstracttrees")
-    (version "0.3.4")
+    (version "0.4.3")
     (source
      (origin
        (method git-fetch)
@@ -71,7 +71,7 @@ types/functions defined in AbstractFFTs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "16is5n2qa69cci34vfazxsa7ik6q0hbnnqrbrhkq8frh142f1xs8"))))
+        (base32 "04g3b6j4nvxs36rcjm743gwhy0vv0d6pvgx771agjljx109bciyr"))))
     (build-system julia-build-system)
     (home-page "https://juliacollections.github.io/AbstractTrees.jl/stable/")
     (synopsis "Abstract Julia interfaces for working with trees")
@@ -127,7 +127,7 @@ ANSI escape codes to another format.")
 (define-public julia-aqua
   (package
     (name "julia-aqua")
-    (version "0.5.1")
+    (version "0.5.5")
     (source
       (origin
         (method git-fetch)
@@ -136,7 +136,7 @@ ANSI escape codes to another format.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "1g0kyzcdykgs247j72jpc2qqall696jwgb3hnn4cxmbi8bkf7wpk"))))
+         (base32 "12hng8czkgynsn1pshavma2wijypl6k05hhgivc3rqiyclfpi89z"))))
     (build-system julia-build-system)
     (arguments
      (list #:parallel-tests? #f))
@@ -324,7 +324,7 @@ the entries on the bands.")
 (define-public julia-benchmarktools
   (package
     (name "julia-benchmarktools")
-    (version "1.1.1")
+    (version "1.3.2")
     (source
      (origin
        (method git-fetch)
@@ -333,7 +333,7 @@ the entries on the bands.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xz3kdrphp4b158pg7dwkiry49phs2fjjpdvk1hjpww5ykxacks8"))))
+        (base32 "02n2pi71jvhsnc25a888i6imimd2c1phg6iyr73b12595lrz175d"))))
     (build-system julia-build-system)
     (arguments
      (list
@@ -365,32 +365,29 @@ benchmarks as well as comparing benchmark results.")
     (license license:expat)))
 
 (define-public julia-bfloat16s
-  ;; Not tagged upstream
-  (let ((commit "ef6051e4308ed0c02f10168b99d226237e0ae33c")
-        (version "0.2.0"))
-    (package
-      (name "julia-bfloat16s")
-      (version version)
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/JuliaMath/BFloat16s.jl")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "16sr578k4i47lhziri47nvspdrsni2wc1qjhs6hzffh9si6a7jfq"))))
-      (build-system julia-build-system)
-      (home-page "https://github.com/JuliaMath/BFloat16s.jl")
-      (synopsis "Define BFloat16 data type")
-      (description "This package defines the @code{BFloat16} data type.  The
+  (package
+    (name "julia-bfloat16s")
+    (version "0.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaMath/BFloat16s.jl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "12d5dv5jy8vphczlbnks0qa6wmlz0czxq7gc48bcb94f9qvq0r1n"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaMath/BFloat16s.jl")
+    (synopsis "Define BFloat16 data type")
+    (description "This package defines the @code{BFloat16} data type.  The
 only currently available hardware implementation of this datatype are Google's
 Cloud TPUs.  As such, this package is suitable to evaluate whether using TPUs
 would cause precision problems for any particular algorithm, even without
 access to TPU hardware.  Note that this package is designed for functionality,
 not performance, so this package should be used for precision experiments
 only, not performance experiments.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public julia-bioalignments
   (package
@@ -763,6 +760,15 @@ execute forward-, reverse-, and mixed-mode primitives.")
        (sha256
         (base32 "1866xv30h1bi7f2m993nljzf58wwmv8zlgn6ffn9j3wckch1nfpb"))))
     (build-system julia-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'adjust-tests
+             (lambda _
+               (substitute* "test/differentials/composite.jl"
+                 (("@test (.*construct)" _ test)
+                  (string-append "@test_broken " test))))))))
     (inputs                             ;required for tests
      (list julia-benchmarktools
            julia-staticarrays))
@@ -882,7 +888,7 @@ color scales for graphics.")
 (define-public julia-colortypes
   (package
     (name "julia-colortypes")
-    (version "0.11.0")
+    (version "0.11.1")
     (source
      (origin
        (method git-fetch)
@@ -891,8 +897,17 @@ color scales for graphics.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0n7h70caqv7yd0khjhn90iax62r73mcif8qzkwj5b4q46li1r8ih"))))
+        (base32 "0cp5wbi2bhnxp4h7wpzkx341d47744f4c9a8n0w0kn016qa16m86"))))
     (build-system julia-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'skip-failing-test
+             (lambda _
+               (substitute* "test/conversions.jl"
+                 (("@test promote\\(RGB\\{N0f8")
+                  "@test_broken promote(RGB{N0f8")))))))
     (propagated-inputs
      (list julia-fixedpointnumbers))
     (native-inputs
@@ -989,6 +1004,14 @@ common subexpression elimination.")
        (sha256
         (base32 "0qzvaqi5gqgc747fnajbvvf5vqbh6cwykwky00c7glvmvdsgk3z0"))))
     (build-system julia-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'patch-shell-invocation
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "test/runtests.jl"
+                (("shcmd = `sh`") (string-append "shcmd = `" (which "sh") "`"))))))))
     (home-page "https://github.com/JuliaLang/Compat.jl")
     (synopsis "Compatibility across Julia versions")
     (description "The Compat package is designed to ease interoperability
@@ -1246,7 +1269,7 @@ Julia from R or Python.")
 (define-public julia-datastructures
   (package
     (name "julia-datastructures")
-    (version "0.18.9")
+    (version "0.18.13")
     (source
      (origin
        (method git-fetch)
@@ -1255,7 +1278,7 @@ Julia from R or Python.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hdqp8ipsqdw5bqqkdvz4j6n67x80sj5azr9vzyxwjfsgkfbnk2l"))))
+        (base32 "1ikrgc4d39980nrr77yzcnr1v74wrjh9xvyi2ajfzbcim58vrcqg"))))
     (propagated-inputs
      (list julia-compat
            julia-orderedcollections))
@@ -1384,7 +1407,7 @@ dictionaries in Julia, for improved productivity and performance.")
 (define-public julia-distances
   (package
     (name "julia-distances")
-    (version "0.10.3")
+    (version "0.10.7")
     (source
       (origin
         (method git-fetch)
@@ -1393,7 +1416,7 @@ dictionaries in Julia, for improved productivity and performance.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "1yqd9wg4z15k42mrp4y14j2x0sq7yrjhm5zpqklrw6w6j1c367ig"))))
+         (base32 "0sgrh3bzhmqqz0m28lmk66xhnl62i5r2miaiqml8nhbkaapbwc06"))))
     (build-system julia-build-system)
     (arguments
      (list
@@ -1407,7 +1430,14 @@ dictionaries in Julia, for improved productivity and performance.")
                 (("test dyz ≥") "test_nowarn dyz ≥")
                 (("test dist\\(y, x") "test_nowarn dist(y, x")
                 (("test dist\\(z, x") "test_nowarn dist(z, x")
-                (("test dist\\(z, y") "test_nowarn dist(z, y")))))))
+                (("test dist\\(z, y") "test_nowarn dist(z, y"))
+              #$@(if (not (target-64bit?))
+                   ;; A little too much precision
+                   ;; Evaluated: 1.8839055991209719 === 1.8839055991209717
+                   `((substitute* "test/test_dists.jl"
+                       (("@test whamming\\(a, b, w\\) === sum")
+                        "@test_skip whamming(a, b, w) === sum")))
+                   '()))))))
     (propagated-inputs
      (list julia-statsapi))
     (native-inputs
@@ -1472,6 +1502,15 @@ valuable enough at this time.")
                 (("pip install")
                  (string-append (search-input-file inputs "bin/pip")
                                 " install")))))
+          (add-after 'link-depot 'fix-test-git-submodule
+            ;; Git v2.38.1 fixes security issues and changes the default
+            ;; behaviour of `git submodule`.  This substitution is a backport
+            ;; of the upstream patch, not yet released, fixing the test suite.
+            ;; https://github.com/JuliaDocs/Documenter.jl/commit/b5a5c65d02d136743e7c18ffebf8baba900484fc
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "test/utilities.jl"
+                (("submodule add")
+                 "-c protocol.file.allow=always submodule add"))))
           (add-after 'link-depot 'remove-javascript-downloads
             (lambda _
               (substitute* "src/Writers/HTMLWriter.jl"
@@ -1758,7 +1797,7 @@ metaprogramming on Julia Expr, the meta programming standard library for
 (define-public julia-exprtools
   (package
     (name "julia-exprtools")
-    (version "0.1.6")
+    (version "0.1.8")
     (source
       (origin
         (method git-fetch)
@@ -1767,7 +1806,7 @@ metaprogramming on Julia Expr, the meta programming standard library for
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "058ax5d96jpym5w3g37ah1c4xq3fskwpjdhchakzax15vqzy7ab4"))))
+         (base32 "0sxrhc5dz1v53zs8sym4csfy28ki00b7x7aihm2zmkrx48if63gb"))))
     (build-system julia-build-system)
     (home-page "https://github.com/invenia/ExprTools.jl")
     (synopsis "Light-weight expression manipulation tools")
@@ -1975,40 +2014,35 @@ using finite difference.")
     (license license:expat)))
 
 (define-public julia-fixedpointnumbers
-  (package
-    (name "julia-fixedpointnumbers")
-    (version "0.8.4")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaMath/FixedPointNumbers.jl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0j0n40n04q9sk68wh9jq90m6c67k4ws02k41djjzkrqmpzv4rcdi"))))
-    (build-system julia-build-system)
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'link-depot 'disable-failing-test
-            (lambda* (#:key outputs #:allow-other-keys)
-              (substitute* "test/fixed.jl"
-                ;; A deprecation warning is not thrown
-                (("@test_logs.*:warn" all) (string-append "# " all))))))))
-    (propagated-inputs
-     (list julia-compat))
-    (home-page "https://github.com/JuliaMath/FixedPointNumbers.jl")
-    (synopsis "Fixed point types for Julia")
-    (description "@code{FixedPointNumbers.jl} implements fixed-point number
+  (let ((commit "59ee94b93f2f1ee75544ef44187fc0e440cd8015")
+        (revision "1"))
+    (package
+      (name "julia-fixedpointnumbers")
+      (version (git-version "0.8.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/JuliaMath/FixedPointNumbers.jl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1ghriy7p2fj7mwdx11ssjg28jmwz8pi13c3j8p1grvwb4nvc0jnq"))))
+      (build-system julia-build-system)
+      (arguments
+       (list #:tests? #f))      ; Cycle with julia-documenter
+      (propagated-inputs
+       (list julia-compat))
+      (home-page "https://github.com/JuliaMath/FixedPointNumbers.jl")
+      (synopsis "Fixed point types for Julia")
+      (description "@code{FixedPointNumbers.jl} implements fixed-point number
 types for Julia.  A fixed-point number represents a fractional, or
 non-integral, number.  In contrast with the more widely known floating-point
 numbers, with fixed-point numbers the decimal point doesn't \"float\":
 fixed-point numbers are effectively integers that are interpreted as being
 scaled by a constant factor.  Consequently, they have a fixed number of
 digits (bits) after the decimal (radix) point.")
-    (license license:expat)))
+      (license license:expat))))
 
 (define-public julia-formatting
   (package
@@ -2186,7 +2220,7 @@ algebra routines written in Julia (except for optimized BLAS).")
 (define-public julia-genericschur
   (package
     (name "julia-genericschur")
-    (version "0.5.1")
+    (version "0.5.3")
     (source
       (origin
         (method git-fetch)
@@ -2195,7 +2229,7 @@ algebra routines written in Julia (except for optimized BLAS).")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "12x6lxzxm91y3k6s9dam46dq5hrby5sr0gy0fdfnp0xhjzdy2j0d"))))
+         (base32 "02f2azi6036ca8nlgyvvfagwbks8jxfz4k0d8a709ixr1n0ylwap"))))
     (build-system julia-build-system)
     (arguments
      (list
@@ -2204,7 +2238,7 @@ algebra routines written in Julia (except for optimized BLAS).")
           (add-after 'link-depot 'adjust-test-suite
             (lambda _
               (substitute* "test/complex.jl"
-                ;; expected Array{Int32,1}, got a value of type Array{Int64,1}
+                ;; expected Vector{Int32,1}, got a value of type Vector{Int64,1}
                 (("A = _example") "#A = _example")
                 (("schurtest\\(A,20\\)") ""))
               (substitute* "test/runtests.jl"
@@ -2224,7 +2258,7 @@ matrices the Schur form is often more useful.")
 (define-public julia-geometrybasics
   (package
     (name "julia-geometrybasics")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
       (origin
         (method git-fetch)
@@ -2233,7 +2267,7 @@ matrices the Schur form is often more useful.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "057j3hjpli3q5b98cqkpi4p10x2k9pyksrz62hjmv1kb5qzdvhsj"))))
+         (base32 "0kxn7gzv4sm3017qbng70iqb4wzy1k2fj5w6lkz1kn7lx7z7m33x"))))
     (build-system julia-build-system)
     (arguments
      (list
@@ -2368,7 +2402,7 @@ library for parsing HTML.")
 (define-public julia-http
   (package
     (name "julia-http")
-    (version "0.9.12")
+    (version "0.9.17")
     (source
      (origin
        (method git-fetch)
@@ -2377,7 +2411,7 @@ library for parsing HTML.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jsyk3mhnwj4h19cxclx26igdqdrw51fd3k1hgav0nm67dy4cxyk"))))
+        (base32 "1ynzcl30sf5r42l75l5x1a8z0643hlck2kysyhag9795gzafxzv3"))))
     (build-system julia-build-system)
     (arguments
      (list
@@ -2408,6 +2442,9 @@ library for parsing HTML.")
                 (("@testset.*Body - .*" all)
                  (string-append all "return\n"))
                 (("@testset.*Write to file.*" all)
+                 (string-append all "return\n")))
+              (substitute* "test/cookies.jl"
+                (("@testset.*Set-Cookie casing.*" all)
                  (string-append all "return\n"))))))))
     (propagated-inputs
      (list julia-inifile
@@ -3073,7 +3110,7 @@ as a string together with the return value.")
 (define-public julia-irtools
   (package
     (name "julia-irtools")
-    (version "0.4.3")
+    (version "0.4.7")
     (source
      (origin
        (method git-fetch)
@@ -3082,7 +3119,7 @@ as a string together with the return value.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11334fcg2slpwcj0raxf457brhf7pxglgxc6cy8q58ggrpxqfqql"))))
+        (base32 "1faddim4gp9pgyadgxi7zdqpdn6qkh7acqpdy29ixpbnb0wgla5r"))))
     (build-system julia-build-system)
     (propagated-inputs
      (list julia-macrotools))
@@ -3139,7 +3176,7 @@ extensions to the iterator interface.")
 (define-public julia-jive
   (package
     (name "julia-jive")
-    (version "0.2.20")
+    (version "0.2.27")
     (source
      (origin
        (method git-fetch)
@@ -3148,7 +3185,7 @@ extensions to the iterator interface.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0khwsdh8472jxcfi9lqw14l49sqlbsixql1jb4irnyajxkdjrcsf"))))
+        (base32 "010dxs9p5ab97h80kw12bx5mkraf0584wi0ggk8wnhg10jf3lpam"))))
     (build-system julia-build-system)
     (home-page "https://github.com/wookay/Jive.jl")
     (synopsis "Julia package to help with writing tests")
@@ -3909,7 +3946,11 @@ optimization of functions.")
     (arguments
      (list
       #:julia-package-name "OptimTestProblems"
-      #:julia-package-uuid "cec144fc-5a64-5bc6-99fb-dde8f63e154c"))
+      #:julia-package-uuid "cec144fc-5a64-5bc6-99fb-dde8f63e154c"
+      #:julia-package-dependencies
+      #~(list '("LinearAlgebra" . "37e2e46d-f89d-539d-b4ee-838fcccc9c8e")
+              '("SparseArrays" . "2f01184e-e22b-5df5-ae63-d93ebab69eaf")
+              '("Test" . "8dfed614-e22c-5e08-85e1-65c5234f0b40"))))
     (home-page "https://github.com/JuliaNLSolvers/OptimTestProblems.jl")
     (synopsis "Collection of optimization test problems")
     (description "The purpose of this package is to provide test problems for
@@ -4889,7 +4930,7 @@ in @code{Gadfly}, @code{Plots} and @code{Makie} to label axes and keys.")
 (define-public julia-simd
   (package
     (name "julia-simd")
-    (version "3.4.0")
+    (version "3.4.2")
     (source
       (origin
         (method git-fetch)
@@ -4898,7 +4939,7 @@ in @code{Gadfly}, @code{Plots} and @code{Makie} to label axes and keys.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0z7m5fykc6r4bxz4hfm6d3v1h7gg0c322l4zv8r3vrb8hrd6h263"))))
+         (base32 "02pbrg2qa20pqnckbnbg5jyic2ahydql09f3xhzd1xnxicp77lw5"))))
     (build-system julia-build-system)
     (home-page "https://github.com/eschnett/SIMD.jl")
     (synopsis "Explicit SIMD vectorization")
@@ -5105,7 +5146,7 @@ There are multiple ways to understand @code{StackView}:
 (define-public julia-static
   (package
     (name "julia-static")
-    (version "0.3.0")
+    (version "0.8.3")
     (source
       (origin
         (method git-fetch)
@@ -5114,7 +5155,7 @@ There are multiple ways to understand @code{StackView}:
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "19k7h47zhz3zz28i0l4b3cc0r07pzp8kf35z0yammpy361b644l2"))))
+         (base32 "1ilmging187w37vjff8ilnz1f0qygyhbwl6nhq91z3b5vxyf13zr"))))
     (build-system julia-build-system)
     (propagated-inputs
      (list julia-ifelse))
@@ -5177,7 +5218,7 @@ dependency on it.")
 (define-public julia-statsbase
   (package
     (name "julia-statsbase")
-    (version "0.33.8")
+    (version "0.33.10")
     (source
       (origin
         (method git-fetch)
@@ -5186,7 +5227,7 @@ dependency on it.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "02y4pm5yvg713a2pn970bbcfkrn2h133rxbxk1da18svhqw3czhi"))))
+         (base32 "0pjsn531zdz3s34pa418pvyqvrx8nbcc8j0fgwfnadssihqah6g7"))))
     (build-system julia-build-system)
     (propagated-inputs
      (list julia-dataapi
@@ -5670,7 +5711,7 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
 (define-public julia-unitful
   (package
     (name "julia-unitful")
-    (version "1.9.0")
+    (version "1.12.2")
     (source
      (origin
        (method git-fetch)
@@ -5679,7 +5720,7 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "10qwscd15dnmvx116dwvg99m7kmwgmj5ahdkq7psiq48lcc554gq"))))
+        (base32 "1b8w6wqc7azqzg2f8zc3bmc72fb01sx0rqh6dv3k54wj01ph15p7"))))
     (build-system julia-build-system)
     (arguments
      (list #:parallel-tests? #f))
@@ -5743,7 +5784,7 @@ allows for efficient string representation and transfer")
 (define-public julia-woodburymatrices
   (package
     (name "julia-woodburymatrices")
-    (version "0.5.3")
+    (version "0.5.5")
     (source
       (origin
         (method git-fetch)
@@ -5752,19 +5793,8 @@ allows for efficient string representation and transfer")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "04yykivi8zrbryxlmb0p5xa6lma8iq22r5s863117dnnqj5gaffd"))))
+         (base32 "1vwy8nlhvjh0ndia4ni40iq4pf2nhwy5iy3rmf4i2jff13vc6aqn"))))
     (build-system julia-build-system)
-    (arguments
-     (list
-      #:phases
-      (if (target-x86-32?)
-          #~(modify-phases %standard-phases
-              (add-after 'unpack 'remove-failing-test-i686
-                (lambda _
-                  (substitute* "test/woodbury.jl"
-                    (("@test logdet\\(W\\)")
-                     "@test_broken logdet(W)")))))
-          #~%standard-phases)))
     (home-page "https://github.com/timholy/WoodburyMatrices.jl")
     (synopsis "Support for the Woodbury matrix identity for Julia")
     (description "This package provides support for the Woodbury matrix identity
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 9f3ef031c3..d35901eadb 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2021, 2022 Jean-Baptiste Volatier <jbv@pm.me>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Akira Kyle <akira@akirakyle.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,7 +62,7 @@
   (package
     (inherit libunwind)
     (name "libunwind-julia")
-    (version "1.3.1")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
@@ -69,31 +70,27 @@
                            version ".tar.gz"))
        (sha256
         (base32
-         "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
+         "05qhzcg1xag3l5m3c805np6k342gc0f3g087b7g16jidv59pccwh"))
        (patches
-        (append
-            ;; Fix linker issue for i686-linux because GCC10 changed default
-            ;; (see '-fno-common' option).
-            (search-patches "libunwind-julia-fix-GCC10-fno-common.patch")
-            (list
-             (julia-patch "libunwind-prefer-extbl"
-                          "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
-             (julia-patch "libunwind-static-arm"
-                          "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
-             (julia-patch "libunwind-cfa-rsp"
-                          "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z"))))))
+         (list
+           (julia-patch "libunwind-prefer-extbl"
+                        "0pf3lsq6zxlmqn86lk4fcj1xwdan9gbxyabrwgxcb59p8jjwsl8r")
+           (julia-patch "libunwind-static-arm"
+                        "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+           (julia-patch "libunwind-cfa-rsp"
+                        "0qs5b1h5lsr5qakkv6sddgy5ghlxpjrn2jiqcvg7bkczy24klr6j")))))
     (arguments
      (substitute-keyword-arguments (package-arguments libunwind)
        ;; Skip tests on this older and patched version of libunwind.
        ((#:tests? _ #t) #f)))
-    (home-page "https://github.com/JuliaLang/tree/master/deps/")))
+    (home-page "https://github.com/JuliaLang/julia/tree/master/deps/")))
 
 (define (julia-patch-url version name)
   (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
                  "/deps/patches/" name ".patch"))
 
 (define-public (julia-patch name sha)
-  (let ((version "1.6.1"))
+  (let ((version "1.8.2"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -143,7 +140,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 (define-public julia
   (package
     (name "julia")
-    (version "1.6.7")
+    (version "1.8.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -151,10 +148,8 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "0q9xgdpvdkskpzl294w215f6c15c5jk276c9dah5f5w4np3ivbvl"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"
-                               "julia-allow-parallel-build.patch"))))
+                "0jf8dr5j7y8cjnr65kn38xps5h9m2qvi8g1yd8qgiip5r87ld3ad"))
+              (patches (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -164,7 +159,8 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 
        ;; The test suite takes many times longer than building and
        ;; can easily fail on smaller machines when they run out of memory.
-       #:tests? ,(not (target-aarch64?))
+       #:tests? ,(not (or (%current-target-system)
+                          (target-aarch64?)))
 
        ;; Do not strip binaries to keep support for full backtraces.
        ;; See https://github.com/JuliaLang/julia/issues/17831
@@ -187,7 +183,8 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                                        '("curl" "dsfmt"
                                          "gmp" "lapack"
                                          "libssh2" "libnghttp2" "libgit2"
-                                         "mbedtls" "mpfr"
+                                         "libblastrampoline"
+                                         "mbedtls-apache" "mpfr"
                                          "openblas" "openlibm" "pcre2"
                                          "suitesparse" "gfortran:lib"))
                                   ":"))))
@@ -201,66 +198,31 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 (string-append line "\n"))
                (("src ui doc deps")
                 "src ui deps"))))
-         (add-after 'unpack 'use-system-libwhich
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; don't build it
-             (substitute* "deps/Makefile"
-               (("DEP_LIBS \\+= libwhich") ""))
-             ;; call our version
-             (substitute* "base/Makefile"
-               (("\\$\\$\\(build_depsbindir\\)/libwhich")
-                (search-input-file inputs "/bin/libwhich")))))
          (add-after 'unpack 'activate-gnu-source-for-loader
            (lambda _
              (substitute* "cli/Makefile"
                (("LOADER_CFLAGS =") "LOADER_CFLAGS = -D_GNU_SOURCE"))))
-         (add-after 'unpack 'change-number-of-precompile-statements
-           (lambda _
-             ;; Remove nss-certs drops the number of statements below 1200,
-             ;; causing the build to fail prematurely.
-             (substitute* "contrib/generate_precompile.jl"
-               (("1200") "1100"))))
-         ;; For some reason libquadmath is unavailable on this architecture.
+         ;; libquadmath is not available on all architectures.
          ;; https://github.com/JuliaLang/julia/issues/41613
-         ,@(if (target-aarch64?)
-             '((add-after 'unpack 'drop-libquadmath-on-aarch64
-                 (lambda _
-                   (substitute* '("contrib/fixup-libgfortran.sh"
-                                  "deps/csl.mk"
-                                  "base/Makefile")
-                     ((".*libquadmath.*") ""))
-                   (substitute* "Makefile"
-                     (("libquadmath ") "")))))
-             '())
+         (add-after 'unpack 'make-libquadmath-optional
+           (lambda _
+             (substitute* "base/Makefile"
+               (("libquadmath,0") "libquadmath,0,ALLOW_FAILURE"))))
          (add-before 'check 'set-home
            ;; Some tests require a home directory to be set.
            (lambda _ (setenv "HOME" "/tmp")))
          (add-before 'build 'fix-include-and-link-paths
            (lambda* (#:key inputs #:allow-other-keys)
-             ;; LIBUTF8PROC is a linker flag, not a build target.  It is
-             ;; included in the LIBFILES_* variable which is used as a
-             ;; collection of build targets and a list of libraries to link
-             ;; against.
-             (substitute* "src/flisp/Makefile"
-               (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
-                "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
-               (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
-                "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
-
              ;; The REPL must be linked with libuv.
              (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
-                               (assoc-ref %build-inputs "libuv")
-                               "/lib/libuv.so ")))
-
-             (substitute* "base/Makefile"
-               (("\\$\\(build_includedir\\)/uv/errno.h")
-                (search-input-file inputs "/include/uv/errno.h")))))
+                               (assoc-ref inputs "libuv")
+                               "/lib/libuv.so ")))))
          (add-before 'build 'replace-default-shell
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "base/client.jl"
-               (("/bin/sh") (which "sh")))))
+               (("/bin/sh") (search-input-file inputs "/bin/sh")))))
          (add-before 'build 'shared-objects-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((jlpath
@@ -273,8 +235,12 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                    (to
                     (lambda* (pkg libname #:optional libname_jl)
                       (string-append
-                       "const " (or libname_jl libname)  "= \""
+                       "const " (or libname_jl libname)  " = \""
                        (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "CompilerSupportLibraries")
+                 (((from "libgfortran"))
+                  (string-append "const libgfortran = string(\""
+                                 (search-input-file inputs "/lib/libgfortran.so"))))
                (substitute* (jlpath "dSFMT")
                  (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
                (substitute* (jlpath "GMP")
@@ -295,11 +261,9 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                (substitute* (jlpath "MPFR")
                  (((from "libmpfr")) (to "mpfr" "libmpfr")))
                (substitute* (jlpath "MbedTLS")
-                 ;; For the newer version of mbedtls-apache:
-                 (("libmbedcrypto.so.5") "libmbedcrypto.so.6")
-                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
-                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
-                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+                 (((from "libmbedcrypto")) (to "mbedtls-apache" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls-apache" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls-apache" "libmbedx509")))
                (substitute* (jlpath "nghttp2")
                  (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
                (substitute* (jlpath "OpenBLAS")
@@ -307,7 +271,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                (substitute* (jlpath "OpenLibm")
                  (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
                (substitute* (jlpath "PCRE2")
-                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+                 (((from "libpcre2_8")) (to "pcre2" "libpcre2-8" "libpcre2_8")))
                (substitute* (jlpath "SuiteSparse")
                  (((from "libamd")) (to "suitesparse" "libamd"))
                  (((from "libbtf")) (to "suitesparse" "libbtf"))
@@ -324,40 +288,36 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                   (to "suitesparse" "libsuitesparseconfig"))
                  (((from "libumfpack")) (to "suitesparse" "libumfpack")))
                (substitute* (jlpath "Zlib")
-                 (((from "libz")) (to "zlib" "libz"))))))
+                 (((from "libz")) (to "zlib" "libz")))
+               (substitute* (jlpath "libblastrampoline")
+                 (("libblastrampoline\\.so")
+                  (search-input-file inputs "/lib/libblastrampoline.so"))))))
          (add-after 'unpack 'enable-parallel-tests
            (lambda* (#:key parallel-tests? #:allow-other-keys)
-             (setenv "JULIA_CPU_THREADS" (if parallel-tests?
-                                             (number->string (parallel-job-count))
-                                             "1"))
-             (format #t "JULIA_CPU_THREADS environment variable set to ~a~%"
-                     (getenv "JULIA_CPU_THREADS"))))
+             (when parallel-tests?
+               (setenv "JULIA_TEST_USE_MULTIPLE_WORKERS" "true"))))
          (add-after 'unpack 'adjust-test-suite
            (lambda* (#:key inputs #:allow-other-keys)
-             (let ((pcre2 (assoc-ref inputs "pcre2"))
-                   (mbedtls-apache (assoc-ref inputs "mbedtls"))
-                   (mpfr (assoc-ref inputs "mpfr"))
-                   (gmp (assoc-ref inputs "gmp"))
-                   (nghttp2 (assoc-ref inputs "libnghttp2"))
-                   (zlib (assoc-ref inputs "zlib"))
-                   (suitesparse (assoc-ref inputs "suitesparse")))
-               ;; Some tests only check to see if the input is the correct version.
-               (substitute* "stdlib/PCRE2_jll/test/runtests.jl"
-                 (("10.40.0") ,(package-version pcre2)))
-               (substitute* "stdlib/MbedTLS_jll/test/runtests.jl"
-                 (("2.24.0") ,(package-version mbedtls-apache)))
-               (substitute* "stdlib/MPFR_jll/test/runtests.jl"
-                 (("4.1.0") ,(package-version mpfr)))
-               (substitute* "stdlib/GMP_jll/test/runtests.jl"
-                 (("6.2.0") ,(package-version gmp)))
-               (substitute* "stdlib/nghttp2_jll/test/runtests.jl"
-                 (("1.41.0") ,(package-version nghttp2)))
-               (substitute* "stdlib/Zlib_jll/test/runtests.jl"
-                 (("1.2.12") ,(package-version zlib)))
-               (substitute* "stdlib/SuiteSparse_jll/test/runtests.jl"
-                 (("5004") ,(string-replace-substring
-                              (version-major+minor
-                                (package-version suitesparse)) "." "0"))))))
+             (substitute* "test/spawn.jl"
+               (("shcmd = `sh`") (string-append "shcmd = `" (which "sh") "`")))
+             ;; Some tests only check to see if the input is the correct version.
+             (substitute* "stdlib/PCRE2_jll/test/runtests.jl"
+               (("10.40.0") ,(package-version (this-package-input "pcre2"))))
+             (substitute* "stdlib/MbedTLS_jll/test/runtests.jl"
+               (("2.28.0") ,(package-version (this-package-input "mbedtls-apache"))))
+             (substitute* "stdlib/MPFR_jll/test/runtests.jl"
+               (("4.1.0") ,(package-version (this-package-input "mpfr"))))
+             (substitute* "stdlib/GMP_jll/test/runtests.jl"
+               (("6.2.1") ,(package-version (this-package-input "gmp"))))
+             (substitute* "stdlib/nghttp2_jll/test/runtests.jl"
+               (("1.48.0") ,(package-version (this-package-input "libnghttp2"))))
+             (substitute* "stdlib/Zlib_jll/test/runtests.jl"
+               (("1.2.12") ,(package-version (this-package-input "zlib"))))
+             (substitute* "stdlib/SuiteSparse_jll/test/runtests.jl"
+               (("5010") ,(string-replace-substring
+                            (version-major+minor
+                              (package-version
+                                (this-package-input "suitesparse"))) "." "0")))))
          (add-before 'check 'disable-broken-tests
            (lambda _
              ;; disabling REPL tests because they require a stdin
@@ -365,6 +325,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/pull/41614
              ;; https://github.com/JuliaLang/julia/issues/41156
              (substitute* "test/choosetests.jl"
+               (("\"cmdlineargs\",") "")
                (("\"precompile\",") ""))
              ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
@@ -376,7 +337,7 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
                (("@test isfile\\(MozillaCACerts_jll.cacert\\)")
                 "@test_broken isfile(MozillaCACerts_jll.cacert)"))
              ;; since certificate is not present some tests are failing in network option
-             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+             (substitute* "usr/share/julia/stdlib/v1.8/NetworkOptions/test/runtests.jl"
                (("@test isfile\\(bundled_ca_roots\\(\\)\\)")
                 "@test_broken isfile(bundled_ca_roots())")
                (("@test ispath\\(ca_roots_path\\(\\)\\)")
@@ -395,29 +356,35 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
                ;; @test_broken cannot be used because if the test randomly
                ;; passes, then it also raises an error.
                (("@test isinf\\(log1p\\(-one\\(T\\)\\)\\)")
-                " "))))
-         (add-before 'install 'symlink-libraries
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((link
-                    (lambda (pkgname dir pred)
-                      (map (lambda (file)
-                             (unless (file-exists?
-                                       (string-append dir (basename file)))
-                               (symlink file (string-append dir (basename file)))))
-                           (find-files (string-append (assoc-ref inputs pkgname)
-                                                      "/lib") pred)))))
-               (link "curl" "usr/lib/" "\\.so") ; missing libpthreads libLLVM-11jl
-               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
-               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
-               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
-               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
-               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
-               (link "libuv" "usr/lib/julia/" "libuv\\.so")
-               (link "zlib" "usr/lib/julia/" "libz\\.so")
-               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
-               (symlink (string-append (assoc-ref inputs "p7zip") "/bin/7z")
-                        "usr/libexec/7z"))))
-         (add-after 'install 'symlink-llvm-utf8proc
+                " "))
+
+             ;; These are new test failures for 1.8:
+             ;; This test passes on some architectures and fails on others.
+             (substitute* "stdlib/LinearAlgebra/test/lu.jl"
+               (("@test String") "@test_skip String"))
+
+             (substitute* "stdlib/InteractiveUtils/test/runtests.jl"
+               (("@test !occursin\\(\"Environment")
+                "@test_broken !occursin(\"Environment")
+               (("@test  occursin\\(\"Environment")
+                "@test_broken  occursin(\"Environment"))
+             (substitute* "usr/share/julia/stdlib/v1.8/Statistics/test/runtests.jl"
+               (("@test cov\\(A") "@test_skip cov(A")
+               (("@test isfinite") "@test_skip isfinite"))
+             ;; LoadError: SuiteSparse threads test failed with nthreads == 4
+             (substitute* "usr/share/julia/stdlib/v1.8/SuiteSparse/test/runtests.jl"
+               (("Base\\.USE_GPL_LIBS") "false"))
+             ;; Got exception outside of a @test
+             ;; LinearAlgebra.LAPACKException(16)
+             ;; eliminate all the test bits.
+             (substitute* "stdlib/LinearAlgebra/test/schur.jl"
+               (("f = schur\\(A, B\\)") "f = schur(A, A)")
+               (("@test f\\.Q\\*f\\.S\\*f\\.Z'.*") "\n")
+               (("@test f\\.Q\\*f\\.T\\*f\\.Z'.*") "\n"))
+             (substitute* "test/threads.jl"
+               (("@test success") "@test_broken success"))))
+         ;; Doesn't this just mean they weren't linked correctly?
+         (add-after 'install 'symlink-missing-libraries
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (link
@@ -430,8 +397,10 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
                                                               (basename file)))))
                         (find-files (string-append (assoc-ref inputs pkgname)
                                                    "/lib") pred)))))
-               (link "llvm" "libLLVM-11jl\\.so")
-               (link "utf8proc" "libutf8proc\\.so"))))
+               (link "libunwind" "libunwind\\.so")
+               (link "llvm" "libLLVM-13jl\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               (link "zlib" "libz\\.so"))))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -467,18 +436,19 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
          "CONFIG_SHELL=bash -x"     ; needed to build bundled libraries
          "USE_BINARYBUILDER=0"
          ;; list (and order!) of "USE_SYSTEM_*" is here:
-         ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+         ;; https://github.com/JuliaLang/julia/blob/v1.8.2/Make.inc
          "USE_SYSTEM_CSL=1"
          "USE_SYSTEM_LLVM=1"
          "USE_SYSTEM_LIBUNWIND=1"
          "USE_SYSTEM_PCRE=1"
          "USE_SYSTEM_OPENLIBM=1"
          "USE_SYSTEM_DSFMT=1"
+         "USE_SYSTEM_LIBBLASTRAMPOLINE=1"
          "USE_SYSTEM_BLAS=1"
          "USE_SYSTEM_LAPACK=1"
          "USE_SYSTEM_GMP=1"
          "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_SUITESPARSE=1"
+         "USE_SYSTEM_LIBSUITESPARSE=1"
          "USE_SYSTEM_LIBUV=1"
          "USE_SYSTEM_UTF8PROC=1"
          "USE_SYSTEM_MBEDTLS=1"
@@ -487,27 +457,29 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
          "USE_SYSTEM_CURL=1"
          "USE_SYSTEM_LIBGIT2=1"
          "USE_SYSTEM_PATCHELF=1"
+         "USE_SYSTEM_LIBWHICH=1"
          "USE_SYSTEM_ZLIB=1"
          "USE_SYSTEM_P7ZIP=1"
 
+         "USE_LLVM_SHLIB=1"
+
          "NO_GIT=1"             ; build from release tarball.
-         "USE_BLAS64=0"         ; needed when USE_SYSTEM_BLAS=1
+         "USE_GPL_LIBS=1"       ; proudly
+
+         ,@(if (target-aarch64?)
+             `("USE_BLAS64=0")
+             '())
+
          "LIBBLAS=-lopenblas"
          "LIBBLASNAME=libopenblas"
 
-         (string-append "SUITESPARSE_INC=-I "
-                        (assoc-ref %build-inputs "suitesparse")
-                        "/include")
-         "USE_GPL_LIBS=1"       ; proudly
          (string-append "UTF8PROC_INC="
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
-         "LLVM_VER=11.0.0"
-
-         "USE_LLVM_SHLIB=1"
+         ;; Make.inc expects a static library for libuv.
          (string-append "LIBUV="
                         (assoc-ref %build-inputs "libuv")
-                        "/lib/libuv.so")
+                        "/lib/libuv.a")
          (string-append "LIBUV_INC="
                         (assoc-ref %build-inputs "libuv")
                         "/include"))))
@@ -519,20 +491,21 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
        ("gfortran:lib" ,gfortran "lib")
        ("gmp" ,gmp)
        ("lapack" ,lapack)
-       ("libgit2" ,libgit2-1.1)
+       ("libblastrampoline" ,libblastrampoline)
+       ("libgit2" ,libgit2-1.3)
        ("libnghttp2" ,nghttp2 "lib")
        ("libssh2" ,libssh2)
        ("libunwind" ,libunwind-julia)
        ("libuv" ,libuv-julia)
        ("llvm" ,llvm-julia)
-       ("mbedtls" ,mbedtls-apache)
+       ("mbedtls-apache" ,mbedtls-apache)
        ("mpfr" ,mpfr)
        ("openblas" ,openblas)
        ("openlibm" ,openlibm)
        ("p7zip" ,p7zip)
        ("pcre2" ,pcre2)
        ("suitesparse" ,suitesparse)
-       ("utf8proc" ,utf8proc-2.6.1)
+       ("utf8proc" ,utf8proc-2.7.0)
        ("wget" ,wget)
        ("which" ,which)
        ("zlib" ,zlib)
@@ -545,7 +518,7 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
        ("perl" ,perl)
        ("patchelf" ,patchelf)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2)))
+       ("python" ,python)))
     (native-search-paths
       (list (search-path-specification
               (variable "JULIA_LOAD_PATH")
@@ -553,8 +526,8 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
             (search-path-specification
               (variable "JULIA_DEPOT_PATH")
               (files (list "share/julia/")))))
-    ;; Julia is not officially released for ARM and MIPS.
-    ;; See https://github.com/JuliaLang/julia/issues/10639
+    ;; Julia only officially supports some of our platforms:
+    ;; https://julialang.org/downloads/#supported_platforms
     (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
     (home-page "https://julialang.org/")
     (synopsis "High-performance dynamic language for technical computing")
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index e5ae414b53..7009919a06 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -221,7 +221,7 @@ browser for easy news reading.")
 (define-public kdenlive
   (package
     (name "kdenlive")
-    (version "22.08.1")
+    (version "22.08.3")
     (source
      (origin
        (method git-fetch)
@@ -230,7 +230,7 @@ browser for easy news reading.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xnasi8s8zxh2s4vnn51pc8ni58q8pk70bwh9dfxp1wdmpv3zsrx"))))
+        (base32 "1016mwgrf4dwb945pc2kqm2j8vq86r01s19miq0h4wdgbfxa496c"))))
     (build-system qt-build-system)
     (arguments
      ;; XXX: there is a single test that spawns other tests and
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 176e66cf42..f9722e4469 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -158,10 +158,10 @@ resolution, asynchronous file system operations, and threading primitives.")
     (properties '((hidden? . #t)))))
 
 (define-public libuv-julia
-  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
-        (revision "3"))
+  (let ((commit "e6f0e4900e195c8352f821abe2b3cffc3089547b")
+        (revision "4"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.6.1/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.8.2/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -174,7 +174,10 @@ resolution, asynchronous file system operations, and threading primitives.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
+                  "0ib2cprvbyviwrzm0fw6dqvlbm9akf2kj3vjzp82q3gii74cv3c9"))))
+      (arguments
+       '(#:configure-flags '("--with-pic")
+         #:tests? #f))
       (home-page "https://github.com/JuliaLang/libuv")
       (properties '((hidden? . #t))))))
 
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 75f38a923a..d88f47c167 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -68,6 +68,7 @@
 ;;; Copyright © 2022 Hunter Jozwiak <hunter.t.joz@gmail.com>
 ;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;; Copyright © 2022 Stefan <stefan-guix@vodafonemail.de>
+;;; Copyright © 2022 Demis Balbach <db@minikn.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -194,6 +195,104 @@
   #:export (customize-linux
             make-defconfig))
 
+
+
+;;;
+;;; Linux kernel customization functions.
+;;;
+
+(define* (customize-linux #:key name
+                          (linux linux-libre)
+                          source
+                          defconfig
+                          (configs "")
+                          extra-version)
+  "Make a customized Linux package NAME derived from the LINUX package.
+
+If NAME is not given, then it defaults to the same name as the LINUX package.
+
+Unless SOURCE is given the source of LINUX is used.
+
+A DEFCONFIG file to be used can be given as an origin, as a file-like object
+(file-append, local-file etc.), or as a string with the name of a defconfig file
+available in the Linux sources.  If DEFCONFIG is not given, then a defconfig
+file will be saved from the LINUX package configuration.
+
+Additional CONFIGS will be used to modify the given or saved defconfig, which
+will finally be used to build Linux.
+
+CONFIGS can be a list of strings, with one configuration per line.  The usual
+defconfig syntax has to be used, but there is a special extension to ease the
+removal of configurations.  Comment lines are supported as well.
+
+Here is an example:
+
+  '(;; This string defines the version tail in 'uname -r'.
+    \"CONFIG_LOCALVERSION=\\\"-handcrafted\\\"
+    ;; This '# CONFIG_... is not set' syntax has to match exactly!
+    \"# CONFIG_BOOT_CONFIG is not set\"
+    \"CONFIG_NFS_SWAP=y\"
+    ;; This is a multiline configuration:
+    \"CONFIG_E1000=y
+# This is a comment, below follows an extension to unset a configuration:
+CONFIG_CMDLINE_EXTEND\")
+
+A string of configurations instead of a list of configuration strings is also
+possible.
+
+EXTRA-VERSION can be a string overwriting the EXTRAVERSION setting of the LINUX
+package, after being prepended by a hyphen.  It will be visible in the output
+of 'uname -r' behind the Linux version numbers."
+  (package
+    (inherit linux)
+    (name (or name (package-name linux)))
+    (source (or source (package-source linux)))
+    (arguments
+     (substitute-keyword-arguments
+         (package-arguments linux)
+       ((#:imported-modules imported-modules %gnu-build-system-modules)
+        `((guix build kconfig) ,@imported-modules))
+       ((#:modules modules)
+        `((guix build kconfig) ,@modules))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (replace 'configure
+              (lambda* (#:key inputs #:allow-other-keys #:rest arguments)
+                (setenv "EXTRAVERSION"
+                        #$(and extra-version
+                               (not (string-null? extra-version))
+                               (string-append "-" extra-version)))
+                (let* ((configs (string-append "arch/" #$(linux-srcarch)
+                                               "/configs/"))
+                       (guix_defconfig (string-append configs
+                                                      "guix_defconfig")))
+                  #$(cond
+                     ((not defconfig)
+                      #~(begin
+                          ;; Call the original 'configure phase.
+                          (apply (assoc-ref #$phases 'configure) arguments)
+                          ;; Save a defconfig file.
+                          (invoke "make" "savedefconfig")
+                          ;; Move the saved defconfig to the proper location.
+                          (rename-file "defconfig"
+                                       guix_defconfig)))
+                     ((string? defconfig)
+                      ;; Use another existing defconfig from the Linux sources.
+                      #~(rename-file (string-append configs #$defconfig)
+                                     guix_defconfig))
+                     (else
+                      ;; Copy the defconfig input to the proper location.
+                      #~(copy-file #$defconfig guix_defconfig)))
+                  (chmod guix_defconfig #o644)
+                  (modify-defconfig guix_defconfig '#$configs)
+                  (invoke "make" "guix_defconfig")
+                  (verify-config ".config" guix_defconfig))))))))))
+
+(define (make-defconfig uri sha256-as-base32)
+  (origin (method url-fetch)
+          (uri uri)
+          (sha256 (base32 sha256-as-base32))))
+
 (define (linux-srcarch)
   "Return the linux SRCARCH name, which is set in the toplevel Makefile of
 Linux and denotes the architecture-specific directory name below arch/ in its
@@ -378,17 +477,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The current "stable" kernels. That is, the most recently released major
 ;; versions that are still supported upstream.
 
-(define-public linux-libre-6.0-version "6.0.10")
+(define-public linux-libre-6.0-version "6.0.12")
 (define-public linux-libre-6.0-gnu-revision "gnu")
 (define deblob-scripts-6.0
   (linux-libre-deblob-scripts
    linux-libre-6.0-version
    linux-libre-6.0-gnu-revision
    (base32 "0iwbjrgiwch5v1xpnm9wk9zqw2v6lxja0k8yj2x0amxc9ma68176")
-   (base32 "06iqxkg5hakzvmz6gcz878k1sr553zbng2j1b2whgfg7zmhxkb34")))
+   (base32 "16g2bin3xay30zfss1vlb7pwcss5giaxaksp4v1gk05wn51wjrqr")))
 (define-public linux-libre-6.0-pristine-source
   (let ((version linux-libre-6.0-version)
-        (hash (base32 "1l0xak4w7c16cg8lhracy8r18zzdl0x5s654w6ivyw6dhk6pzr9r")))
+        (hash (base32 "00ag63lnxw2gijw3b6v29lhrlv480m12954q5zh4jawlz3nk1dw9")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-6.0)))
@@ -396,37 +495,37 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.15-version "5.15.80")
+(define-public linux-libre-5.15-version "5.15.82")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
    linux-libre-5.15-version
    linux-libre-5.15-gnu-revision
    (base32 "0vj60bra81fmbx3lz924czbhxs4dmvd4d584g9mcs80b7c4q52kg")
-   (base32 "0h8a48dvgxyj3v08lp99kh5pfa93r4rks78cj0j1rwz1516xk8h3")))
+   (base32 "1m73pgx8v047xb2gck2g7j7khniis8c9akn9vhzgsdfglrf8p6fj")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "0kgxznd3sfbmnygjvp9dzhzg5chxlaxk6kldxmh1y0njcrj1lciv")))
+        (hash (base32 "0r8v7113favmch2x6br7jk6idihza99l9qyd7ik99i5sg6xzdvpw")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.156")
+(define-public linux-libre-5.10-version "5.10.158")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
    linux-libre-5.10-version
    linux-libre-5.10-gnu-revision
    (base32 "0mw7qn77y9c6wrnw4rjvf75cpm1w6n1aqqhf8cnghcb97p2yxxrf")
-   (base32 "1m9l554w6a72mq0kf7ggm44z247m2yz6zhafwqxh96qpjpcaabpj")))
+   (base32 "0a96g4pjdgwvxn2wpz6rfc8nwdlkw138r9pp66kvfrrn08i313ii")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "08srjps110zi4ivzh0z2jf78ddyfj2wivdliffb2f03jr9j9k7k7")))
+        (hash (base32 "1rq7lyp41fydybs53rcdjhiy271arh95xch16s5s3jhhanxj82hy")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.225")
+(define-public linux-libre-5.4-version "5.4.226")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
@@ -436,12 +535,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1bgblfkcnrabnr9hpdl07qgps57h6bq4v5pjrxs798vq43db66va")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1ak0qlxzfylgvkldh2whq4mzynh1rymhnnc1yif9a5s3f7v9dxar")))
+        (hash (base32 "0i4s1hl5q0ax55z7m5krzyw1zj9v03q8jcfksknb6qrg3lm5a7qc")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.267")
+(define-public linux-libre-4.19-version "4.19.268")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
@@ -451,12 +550,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0g1yhzxm3ixfll6n630v7lddcyvf888sg114nimh0lkvzd180s99")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "035yxx13jz5f5ig2r6ybzgivm8vjafgnvjws0jfzha4w6klf7r9l")))
+        (hash (base32 "0kr0di4gr6p57c8h6ybcli01kazq235npbh6qrpx0hpmqcdcx6r1")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.300")
+(define-public linux-libre-4.14-version "4.14.301")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
@@ -466,12 +565,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "047vmh09icm45g7mnmdvyj9cam7747bcpah1s7n9dm5i2j2f906y")))
+        (hash (base32 "16zrpfadsnznpl37crbq5g1hz1ch0zfp2a75yzlqy2fs0f7fxlmc")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.334")
+(define-public linux-libre-4.9-version "4.9.335")
 (define-public linux-libre-4.9-gnu-revision "gnu1")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
@@ -481,7 +580,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0bib3641dbcqdkx3anna3caxnsg3nw9cnmhcklq0s93g3m57041h")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0sjh492mfic6llgwb957nj7gd7c0dvqnk97ngq8d50sjsyjznyk9")))
+        (hash (base32 "0agb1avdqxbmb0z751f5c4d6s7k9zb6dq04z82gx0v4zzrhxhkzd")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
@@ -523,14 +622,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 (define-public linux-libre-5.15-source
   (source-with-patches linux-libre-5.15-pristine-source
                        (list %boot-logo-patch
-                             %linux-libre-arm-export-__sync_icache_dcache-patch
-                             (search-patch "linux-libre-infodocs-target.patch"))))
+                             %linux-libre-arm-export-__sync_icache_dcache-patch)))
 
 (define-public linux-libre-5.10-source
   (source-with-patches linux-libre-5.10-pristine-source
                        (list %boot-logo-patch
-                             %linux-libre-arm-export-__sync_icache_dcache-patch
-                             (search-patch "linux-libre-infodocs-target.patch"))))
+                             %linux-libre-arm-export-__sync_icache_dcache-patch)))
 
 (define-public linux-libre-5.4-source
   (source-with-patches linux-libre-5.4-pristine-source
@@ -798,10 +895,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                            (configuration-file #f)
                            (defconfig "defconfig")
                            (extra-options %default-extra-linux-options)
-                           (build-doc? (doc-supported? version))
                            (patches
                             `(,%boot-logo-patch
-                              ,@(if build-doc?
+                              ,@(if (doc-supported? version)
                                     (list (search-patch
                                            "linux-libre-infodocs-target.patch"))
                                     '()))))
@@ -815,8 +911,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                      #:extra-version extra-version
                      #:configuration-file configuration-file
                      #:defconfig defconfig
-                     #:extra-options extra-options
-                     #:build-doc? build-doc?))
+                     #:extra-options extra-options))
 
 (define* (make-linux-libre* version gnu-revision source supported-systems
                             #:key
@@ -825,10 +920,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                             ;; See kernel-config for an example.
                             (configuration-file #f)
                             (defconfig "defconfig")
-                            (extra-options %default-extra-linux-options)
-                            (build-doc? (doc-supported? version)))
-  (when (and build-doc? (not (doc-supported? version)))
-    (error "unsupported 'build-doc?' for kernels <5.10"))
+                            (extra-options %default-extra-linux-options))
   (package
     (name (if extra-version
               (string-append "linux-libre-" extra-version)
@@ -853,20 +945,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
               (substitute* (find-files
                             "." "^Makefile(\\.include)?$")
                 (("/bin/pwd") "pwd"))))
-          #$@(if build-doc?
-                 #~((add-before 'configure 'build-doc
-                      (lambda _
-                        (substitute* "Documentation/Makefile"
-                          ;; Remove problematic environment check script.
-                          ((".*scripts/sphinx-pre-install.*") ""))
-                        (invoke "make" "infodocs")))
-                    (add-after 'build-doc 'install-doc
-                      (lambda _
-                        (with-directory-excursion "Documentation/output"
-                          (invoke "make" "-C" "texinfo" "install-info"
-                                  (string-append "infodir=" #$output
-                                                 "/share/info"))))))
-                 #~())
           (add-before 'configure 'set-environment
             (lambda* (#:key target #:allow-other-keys)
               ;; Avoid introducing timestamps.
@@ -966,19 +1044,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
        ("gmp" ,gmp)
        ("mpfr" ,mpfr)
        ("mpc" ,mpc)
-
-       ;; For generating the documentation.
-       ,@(if build-doc?
-             ;; TODO: remove fontconfig after the 5.10 kernel is dropped.
-             ;; Also replace python-wrapper by python at that time.
-             `(("fontconfig" ,fontconfig)
-               ("graphviz" ,graphviz)
-               ("python" ,python-wrapper)
-               ("python-sphinx" ,python-sphinx)
-               ("texinfo" ,texinfo)
-               ("which" ,which))
-             '())
-
        ,@(match (let ((arch (platform-linux-architecture
                              (lookup-platform-by-target-or-system
                               (or (%current-target-system)
@@ -1017,6 +1082,43 @@ Linux kernel.  It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-source          linux-libre-6.0-source)
 (define-public linux-libre                 linux-libre-6.0)
 
+(define-public linux-libre-documentation
+  (package
+    (inherit linux-libre)
+    (name "linux-libre-documentation")
+    (arguments
+     (list
+      #:tests? #f
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'configure)
+                   (replace 'build
+                     (lambda _
+                       (substitute* "Documentation/Makefile"
+                         ;; Remove problematic environment check script.
+                         ((".*scripts/sphinx-pre-install.*") ""))
+                       (invoke "make" "infodocs")))
+                   (replace 'install
+                     (lambda _
+                       (let* ((info-dir (string-append #$output "/share/info"))
+                              (info (string-append info-dir
+                                                   "/TheLinuxKernel.info.gz")))
+                         (with-directory-excursion "Documentation/output"
+                           (invoke "make" "-C" "texinfo" "install-info"
+                                   (string-append "infodir=" info-dir)))
+                         ;; Create a symlink, for convenience.
+                         (symlink info (string-append info-dir
+                                                      "/linux.info.gz"))))))))
+    (native-inputs
+     (list graphviz
+           perl
+           python
+           python-sphinx
+           texinfo
+           which))
+    (synopsis "Documentation for the kernel Linux-Libre")
+    (description "This package provides the documentation for the kernel
+Linux-Libre, as an Info manual.  To consult it, run @samp{info linux}.")))
+
 (define-public linux-libre-5.15
   (make-linux-libre* linux-libre-5.15-version
                      linux-libre-5.15-gnu-revision
@@ -1262,111 +1364,6 @@ Linux kernel.  It has been modified to remove all non-free binary blobs.")
 
 
 ;;;
-;;; Linux kernel customization functions.
-;;;
-
-(define* (customize-linux #:key name
-                          (linux linux-libre)
-                          source
-                          defconfig
-                          (configs "")
-                          extra-version)
-  "Make a customized Linux package NAME derived from the LINUX package.
-
-If NAME is not given, then it defaults to the same name as the LINUX package.
-
-Unless SOURCE is given the source of LINUX is used.
-
-A DEFCONFIG file to be used can be given as an origin, as a file-like object
-(file-append, local-file etc.), or as a string with the name of a defconfig file
-available in the Linux sources.  If DEFCONFIG is not given, then a defconfig
-file will be saved from the LINUX package configuration.
-
-Additional CONFIGS will be used to modify the given or saved defconfig, which
-will finally be used to build Linux.
-
-CONFIGS can be a list of strings, with one configuration per line.  The usual
-defconfig syntax has to be used, but there is a special extension to ease the
-removal of configurations.  Comment lines are supported as well.
-
-Here is an example:
-
-  '(;; This string defines the version tail in 'uname -r'.
-    \"CONFIG_LOCALVERSION=\\\"-handcrafted\\\"
-    ;; This '# CONFIG_... is not set' syntax has to match exactly!
-    \"# CONFIG_BOOT_CONFIG is not set\"
-    \"CONFIG_NFS_SWAP=y\"
-    ;; This is a multiline configuration:
-    \"CONFIG_E1000=y
-# This is a comment, below follows an extension to unset a configuration:
-CONFIG_CMDLINE_EXTEND\")
-
-A string of configurations instead of a list of configuration strings is also
-possible.
-
-EXTRA-VERSION can be a string overwriting the EXTRAVERSION setting of the LINUX
-package, after being prepended by a hyphen.  It will be visible in the output
-of 'uname -r' behind the Linux version numbers."
-  (package
-    (inherit linux)
-    (name (or name (package-name linux)))
-    (source (or source (package-source linux)))
-    (arguments
-     (substitute-keyword-arguments
-         (package-arguments linux)
-       ((#:imported-modules imported-modules %gnu-build-system-modules)
-        `((guix build kconfig) ,@imported-modules))
-       ((#:modules modules)
-        `((guix build kconfig) ,@modules))
-       ((#:phases phases)
-        #~(modify-phases #$phases
-            (replace 'configure
-              (lambda* (#:key inputs #:allow-other-keys #:rest arguments)
-                (setenv "EXTRAVERSION"
-                        #$(and extra-version
-                               (not (string-null? extra-version))
-                               (string-append "-" extra-version)))
-                (let* ((configs
-                        (string-append "arch/" #$(linux-srcarch) "/configs/"))
-                       (guix_defconfig
-                        (string-append configs "guix_defconfig")))
-                  #$(cond
-                     ((not defconfig)
-                      #~(begin
-                          ;; Call the original 'configure phase.
-                          (apply (assoc-ref #$phases 'configure) arguments)
-                          ;; Save a defconfig file.
-                          (invoke "make" "savedefconfig")
-                          ;; Move the saved defconfig to the proper location.
-                          (rename-file "defconfig"
-                                       guix_defconfig)))
-                     ((string? defconfig)
-                      ;; Use another existing defconfig from the Linux sources.
-                      #~(rename-file (string-append configs #$defconfig)
-                                     guix_defconfig))
-                     (else
-                      ;; Copy the defconfig input to the proper location.
-                      #~(copy-file (assoc-ref inputs "guix_defconfig")
-                                   guix_defconfig)))
-                  (chmod guix_defconfig #o644)
-                  (modify-defconfig guix_defconfig '#$configs)
-                  (invoke "make" "guix_defconfig")
-                  (verify-config ".config" guix_defconfig))))))))
-    (native-inputs
-     (append (if (or (not defconfig)
-                     (string? defconfig))
-                 '()
-                 ;; The defconfig should be an origin or file-like object.
-                 `(("guix_defconfig" ,defconfig)))
-             (package-native-inputs linux)))))
-
-(define (make-defconfig uri sha256-as-base32)
-  (origin (method url-fetch)
-          (uri uri)
-          (sha256 (base32 sha256-as-base32))))
-
-
-;;;
 ;;; Linux kernel modules.
 ;;;
 
@@ -1531,6 +1528,33 @@ battery charging thresholds, keyboard backlight, fans and thermal monitors,
 and the notification, WiFi, and Bluetooth LED.")
     (license license:gpl2)))
 
+(define-public tuxedo-keyboard
+  (package
+    (name "tuxedo-keyboard")
+    (version "3.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tuxedocomputers/tuxedo-keyboard.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17n14yh55yrxx4qbx4ph9drbzx2ll4kdsfmlngrdgizhyzk7z7zv"))))
+    (build-system linux-module-build-system)
+    (arguments
+     (list #:tests? #f))                ; no test suite
+    (home-page "https://github.com/tuxedocomputers/tuxedo-keyboard")
+    (synopsis "Linux kernel modules to control keyboard on most Tuxedo computers")
+    (description
+     "This package provides the @code{tuxedo_keyboard}, @code{tuxedo_io},
+@code{clevo_wmi} @acronym{WMI, Windows Management Engine} and the
+@code{clevo_acpi} @acronym{ACPI, Advanced Configuration and Power Interface}
+kernel modules to control the keyboard on most Tuxedo computers. Only white
+backlight only models are currently not supported. The @code{tuxedo_io} module
+is also needed for the @code{tuxedo-control-center} (short tcc) package.")
+    (license license:gpl3+)))
+
 (define-public ec
   (package
     (name "ec")
@@ -9444,7 +9468,7 @@ provides user-space tools for creating EROFS file systems.")
        (sha256
         (base32 "0r0339mg4rc12p63iiq2kwdqn1zjakyiv014i2a2l9s8v5rjik41"))))
     (native-inputs (list autoconf automake libtool))
-    (inputs (list sqlite))
+    (inputs (list perl sqlite))
     (arguments
      `(#:configure-flags
        (list "--enable-all"
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 841aa48bb9..467acc8316 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -255,6 +255,46 @@ text.")
 (define-public ecl-langutils
   (sbcl-package->ecl-package sbcl-langutils))
 
+(define-public sbcl-duologue
+  (let ((commit "ea1ada244a81da65f85b548823c9a6d7c9c145e1")
+        (revision "0"))
+    (package
+      (name "sbcl-duologue")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mmontone/duologue")
+               (commit commit)))
+         (file-name (git-file-name "cl-duologue" version))
+         (sha256
+          (base32 "1yg7f27im9h0m6jihcay1p7alfhzm9hafwm5dw5hsyacy8f2cwk2"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs (list sbcl-stefil))
+      (inputs
+        (list sbcl-alexandria
+              sbcl-anaphora
+              sbcl-chronicity
+              sbcl-cl-ansi-text
+              sbcl-cl-fad
+              sbcl-clavier
+              sbcl-drakma))
+      (home-page "https://github.com/mmontone/duologue/")
+      (synopsis "High level user interaction library")
+      (description
+       "Duologue is high-level interaction library for Common Lisp.  It features
+coloured printing via @code{cl-ansi-text} and readline completion.")
+      (license (list license:expat
+                     ;; https://github.com/mmontone/duologue/issues/9
+                     license:gpl3+)))))
+
+(define-public cl-duologue
+  (sbcl-package->cl-source-package sbcl-duologue))
+
+(define-public ecl-duologue
+  (sbcl-package->ecl-package sbcl-duologue))
+
 (define-public sbcl-alea
   (package
     (name "sbcl-alea")
@@ -455,8 +495,8 @@ It's intended as a simpler alternative to parser generators.")
   (sbcl-package->ecl-package sbcl-meta))
 
 (define-public sbcl-clavier
-  (let ((commit "048bea40cac0a89480f8c41ae542be45945f3268")
-        (revision "0"))
+  (let ((commit "9b1424eaad131e114a45b400784079124b5e2321")
+        (revision "1"))
     (package
       (name "sbcl-clavier")
       (version (git-version "0.0.0" revision commit))
@@ -468,7 +508,7 @@ It's intended as a simpler alternative to parser generators.")
                (commit commit)))
          (file-name (git-file-name "cl-clavier" version))
          (sha256
-          (base32 "0734xia2hf7lqkm59gjhyvpsp0vl50djyhy4llwwbzbwwdkdihw4"))))
+          (base32 "1gjd0rhxs2x7gn3fw1hnxivmm4ca4f1wxlg0fqv8fdfabgzsvl5y"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs (list sbcl-stefil))
       (inputs
@@ -6561,6 +6601,37 @@ whole lot more into a single form.")
 (define-public ecl-metabang-bind
   (sbcl-package->ecl-package sbcl-metabang-bind))
 
+(define-public sbcl-fare-csv
+  (let ((commit "f877a238dcbf587a89359cccf2128919a94a348c")
+        (revision "0"))
+    (package
+      (name "sbcl-fare-csv")
+      (version (git-version "1.0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.common-lisp.net/frideau/fare-csv")
+               (commit commit)))
+         (file-name (git-file-name "cl-fare-csv" version))
+         (sha256
+          (base32 "0k3mf968w94m4yff1k2jh7xlnpsm016qs4448bvklacjrr72vk8x"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs (list sbcl-hu.dwim.stefil))
+      (home-page "https://gitlab.common-lisp.net/frideau/fare-csv/")
+      (synopsis "Robust CSV parser and printer")
+      (description
+       "This package provides a robust CSV parser and printer that tries to
+follow the fine print of de facto standards.  It can be configured to choose
+which standard exactly.")
+      (license license:expat))))
+
+(define-public cl-fare-csv
+  (sbcl-package->cl-source-package sbcl-fare-csv))
+
+(define-public ecl-fare-csv
+  (sbcl-package->ecl-package sbcl-fare-csv))
+
 (define-public sbcl-fare-utils
   (let ((commit "66e9c6f1499140bc00ccc22febf2aa528cbb5724")
         (revision "1"))
@@ -11049,6 +11120,34 @@ code.  The main target of this macro is speed.")
 (define-public ecl-specialized-function
   (sbcl-package->ecl-package sbcl-specialized-function))
 
+(define-public sbcl-conduit-packages
+  (package
+   (name "sbcl-conduit-packages")
+   (version "2.0.0")
+   (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tfeb/conduit-packages")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cl-conduit-packages" version))
+       (sha256
+        (base32 "1n783in84mrk9lnc3nshwsgxhb8y0dk6ys9z6jlxkv0jpjxhpjjc"))))
+   (build-system asdf-build-system/sbcl)
+   (arguments '(#:asd-systems '("org.tfeb.conduit-packages")))
+   (synopsis "Conduit packages for Common Lisp")
+   (description "This library defines a way of treating Common Lisp
+packages as conduits which can sit between one or more implementation
+packages and users of those packages.")
+   (home-page "https://github.com/tfeb/conduit-packages/")
+   (license license:expat)))
+
+(define-public cl-conduit-packages
+  (sbcl-package->cl-source-package sbcl-conduit-packages))
+
+(define-public ecl-conduit-packages
+  (sbcl-package->ecl-package sbcl-conduit-packages))
+
 (define-public sbcl-constantfold
   (let ((commit "0ff1d97a3fbcb89264f6a2af6ce62b73e7b421f4")
         (revision "1"))
@@ -22713,8 +22812,8 @@ them as strings.")
   (sbcl-package->ecl-package sbcl-simple-date-time))
 
 (define-public sbcl-april
-  (let ((commit "93b10042206475b9cce649d76ffaf00dcdbe498f")
-        (revision "2"))
+  (let ((commit "bdd74f168ec82f28fe4ab692f2c0af39441a5701")
+        (revision "3"))
     (package
       (name "sbcl-april")
       (version (git-version "1.0" revision commit))
@@ -22726,7 +22825,7 @@ them as strings.")
                (commit commit)))
          (file-name (git-file-name "cl-april" version))
          (sha256
-          (base32 "16az6cs13hxqn7sa2cxask077kvzp8prnrvnqm5igqq92y174n8g"))
+          (base32 "0hvlp2286z1ksa7jr7r661kdr0lpfv25n5chl72jrzq5zz70lidx"))
          (modules '((guix build utils)))
          (snippet '(begin
                      ;; Remove bundled Apache-relicensed MaxPC.
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 62eeb1faab..9be298f282 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -1419,7 +1419,7 @@ executable Common Lisp image.  It is similar to cl-launch and hu.dwim.build.")
 (define-public eisl
   (package
     (name "eisl")
-    (version "2.63")
+    (version "2.65")
     (source
      (origin
        (method git-fetch)
@@ -1428,7 +1428,7 @@ executable Common Lisp image.  It is similar to cl-launch and hu.dwim.build.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01fwffk71c1cvq7pf50xwpl2a32rbghcymllg67wvm07yfw3gi0q"))))
+        (base32 "1cnis1v70k4wmvw1gmvj3l9qajzncaa9ka8rx67vx12bgrr0811g"))))
     (build-system gnu-build-system)
     (inputs
      (list bash-minimal freeglut gdbm libiconv ncurses tcl tk))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 9ffdf8761b..7de7177b77 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -62,7 +62,6 @@
   #:use-module (gnu packages bootstrap)           ;glibc-dynamic-linker
   #:use-module (gnu packages check)               ;python-lit
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages julia)               ;julia-patch
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages lua)
@@ -2100,126 +2099,20 @@ LLVM."))))
 
 (define-public llvm-julia
   (package
-    (inherit llvm-11)
-    (name "llvm-julia")
-    (properties `((hidden? . #t)
-                  ,@(package-properties llvm-11)))
-    (source (origin
-              (inherit (package-source llvm-11))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm7-symver-jlprefix"
-                       "00ng32x6xhm9czczirn5r1q1mc1myad44fqhi061hwh1vb46dwgm")
-                     '("llvm-6.0-DISABLE_ABI_CHECKS"
-                       "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-11-D75072-SCEV-add-type"
-                       "176xi1lnbnv2rcs05ywhyb7pd0xgmibayvwzksksg44wg2dh8mbx")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-D80101"
-                       "1gsdwmgmpbignvqyxcnlprj899259p3dvdznlncd84ss445qgq3j")
-                     '("llvm-D84031"
-                       "0nks9sbk7p0r5gyr0idrmm93a5fmdai8kihz9532dx4zhcvvqbjc")
-                     '("llvm-10-D85553"
-                       "1zjq7j9q2qp56hwkc8yc8f0z7kvam3j7hj8sb7qyd77r255ff78l")
-                     '("llvm-10-unique_function_clang-sa"
-                       "1jys9w2zqk3dasnxqh0qz5ij7rxi6mkgq9pqjsclmamr5169zyan")
-                     ;'("llvm-D88630-clang-cmake"
-                     ;  "0rs6s71nqnjkny7i69gqazhqj5jqfdr0bkxs2v5a55sfx8fa1k54")
-                     '("llvm-11-D85313-debuginfo-empty-arange"
-                       "1f672d5385xpgb8yrim8d3b7wg2z1l81agnshm1q61kdvjixqx32")
-                     '("llvm-11-D90722-rtdyld-absolute-relocs"
-                       "0kmnai229yyxkmpk9lxd180mcnhk2i8d87k2sg89gc8as18w10r6")
-                     '("llvm-invalid-addrspacecast-sink"
-                       "1n1b7j4s80vj7x5377aj9vyphmxx1q6bm0chhkxp6zsy3mx3g2ry")
-                     '("llvm-11-D92906-ppc-setjmp"
-                       "0cmd4dsblp7a8m03j16dqxws0ijh55zf4jzzxmj341qxa1gamdp9")
-                     '("llvm-11-PR48458-X86ISelDAGToDAG"
-                       "0vwzvlhsdazhxg4gj8g2f00a4f8qc5cgac23w575xk3pgba1jh6y")
-                     '("llvm-11-D93092-ppc-knownbits"
-                       "1748bypsc7c9lbs3fnkv0kwvch6bn85kj98j4jdaz254ig0wa6xj")
-                     '("llvm-11-D93154-globalisel-as"
-                       "1k5wd4z3pa7zj0gyjkif7viqj906dhqlbb7dc95gig40nbxv6zpj")
-                     '("llvm-11-ppc-half-ctr"
-                       "0piywisfz6cmw3133kz7vzhiqflq2y7igakqxlym0gi8pqylv7w9")
-                     '("llvm-11-ppc-sp-from-bp"
-                       "1wmg3485cx5f9pbykyl3jibk1wwv4w1x30hl4jyfndzr2yh8azf9")
-                     '("llvm-rGb498303066a6-gcc11-header-fix"
-                       "0hkd4rwhvh8g2yh13g29wiwnjpv2yd1hdyiv1ryw8izl25bz9c67")
-                     '("llvm-11-D94813-mergeicmps"
-                       "0cmy0ywkgyrdcvr9bd6pd912lyd4gcsrib4z0v05dwgcdxhk7y29")
-                     '("llvm-11-D94980-CTR-half"
-                       "1yf8cxib3z8hz7zi9n6v2g2c6vpfr4slq9hpx8m8yq8f1jbyw3fw")
-                     '("llvm-11-D94058-sext-atomic-ops"
-                       "1x6p6k6q651z5jcqxx8vj17cxnv196mka7mwn7dpp6c23lwgfdpb")
-                     '("llvm-11-D96283-dagcombine-half"
-                       "0lv4iq2f8qrcz1xyxfic3bcr5p0aqam3a7c6pp6fnw3riixm096k"))))
-              (patch-flags '("-p1"))))
+    (inherit llvm-13)
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-11)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'patch-round-two
-             ;; We have to do the patching in two rounds because we can't
-             ;; pass '-p1' and '-p2' in the source field.
-             (lambda* (#:key inputs #:allow-other-keys)
-               (map (lambda (patchname)
-                      (invoke "patch" patchname "-p2"))
-                    (list "llvm-11-AArch64-FastIsel-bug"
-                          "llvm-11-D97435-AArch64-movaddrreg"
-                          "llvm-11-D97571-AArch64-loh"
-                          "llvm-11-aarch64-addrspace"))))))
-       ((#:build-type _) "Release")
-       ((#:configure-flags flags)
-        `(list
-           ;; Build a native compiler and the NVPTX backend (NVIDIA) since
-           ;; Julia insists on it, nothing more.  This reduces build times and
-           ;; disk usage.
-           ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
-           "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
-
-           "-DLLVM_INSTALL_UTILS=ON"
-           "-DLLVM_BUILD_TESTS=ON"
-           "-DLLVM_ENABLE_FFI=ON"
-           "-DLLVM_ENABLE_RTTI=ON"
-           ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
-           ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
-           ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
-           "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"
-           "-DLLVM_VERSION_SUFFIX:STRING=jl"))))
-    (inputs
-     (append
-       (package-inputs llvm-11)
-       `(("llvm-11-AArch64-FastIsel-bug"
-          ,(julia-patch "llvm-11-AArch64-FastIsel-bug"
-                        "1m2vddj1mw4kbij8hbrx82piyy6bvr2x7wwdnlxfaqcm72ipzyh9"))
-         ("llvm-11-D97435-AArch64-movaddrreg"
-          ,(julia-patch "llvm-11-D97435-AArch64-movaddrreg"
-                        "10jnavq9ljkj7j2gqj2zd1pwqpqb5zs3zp9h96pmz0djbmxwa86y"))
-         ("llvm-11-D97571-AArch64-loh"
-          ,(julia-patch "llvm-11-D97571-AArch64-loh"
-                        "128zcbg1w1j7hngsf7z1a7alc6lig6l2rqgjp6i8nk3k3f842v6n"))
-         ("llvm-11-aarch64-addrspace"
-          ,(julia-patch "llvm-11-aarch64-addrspace"
-                        "0ckbzgfirxrf2d5bpinpngp7gnilbjrk0cbdfyl3h6f5v6i6xj6m")))))))
+     (substitute-keyword-arguments (package-arguments llvm-13)
+       ((#:configure-flags flags ''())
+        #~(cons* "-DLLVM_BUILD_LLVM_DYLIB=ON"
+                 "-DLLVM_LINK_LLVM_DYLIB=ON"
+                 ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
+                 "-DLLVM_VERSION_SUFFIX:STRING=jl"  ; Perhaps not needed.
+                 #$(string-append "-DLLVM_TARGETS_TO_BUILD="
+                                  (system->llvm-target))
+                 (delete "-DBUILD_SHARED_LIBS:BOOL=TRUE" #$flags)))
+       ((#:build-type _) "Release")))
+    (properties `((hidden? . #t)
+                  ,@(package-properties llvm-13)))))
 
 (define %cling-version "0.9")
 
diff --git a/gnu/packages/loko.scm b/gnu/packages/loko.scm
index 449c62f1f0..49dcc92d1e 100644
--- a/gnu/packages/loko.scm
+++ b/gnu/packages/loko.scm
@@ -18,6 +18,7 @@
 
 (define-module (gnu packages loko)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:prefix license:)
@@ -29,7 +30,7 @@
 (define-public loko-scheme
   (package
     (name "loko-scheme")
-    (version "0.7.0")
+    (version "0.12.0")
     (source
      (origin
        (method git-fetch)
@@ -37,45 +38,47 @@
              (url "https://gitlab.com/weinholt/loko")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1441aarw3vy14zdxyab495ag2fch04v4j89krhbqnqfkz6mdi0vy"))
+        (base32 "12xp82z91qkp9q8lfp46s4sda8qgs472jic3js1kbykn4jzy7399"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(;; r7rs tests are a work in progress as of 0.7.0.
-       #:tests? #f
-       #:strip-binaries? #f
-       #:make-flags
-       (let ((out (assoc-ref %outputs "out")))
-         (list
-          (string-append "PREFIX=" out)
-          (string-append "GDB_AUTOLOAD_PATH=" out "/share/gdb/auto-load")))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before 'build 'akku-fixes
-           (lambda* (#:key inputs #:allow-other-keys)
-             (delete-file "Akku.lock")
-             (substitute* "Akku.manifest"
-               (("\\(depends.*") "(depends)"))
-             (invoke "akku" "install")
-             (let ((dest "./.akku/lib/")
-                   (source "/share/guile/site/3.0/"))
-               (for-each
-                (lambda (name)
-                  ;; Symlink the scheme libraries so that Akku can find them
-                  (symlink (string-append (assoc-ref inputs name) source name)
-                           (string-append dest name)))
-                '("struct" "laesare" "pfds" "machine-code")))
-             (substitute* ".akku/env"
-               (("/bin/sh") (which "sh")))
-             #t)))))
+     (list
+      ;; r7rs tests are a work in progress as of 0.7.0.
+      #:tests? #f
+      #:strip-binaries? #f
+      #:make-flags
+      #~(list (string-append "PREFIX=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-before 'build 'akku-fixes
+            (lambda _
+              (delete-file "Akku.lock")
+              (substitute* "Akku.manifest"
+                (("\\(depends.*") "(depends)"))
+              (invoke "akku" "install")
+              (let ((dest "./.akku/lib/")
+                    (source "/share/guile/site/3.0/"))
+                (for-each
+                 (lambda (name prefix)
+                   ;; Symlink the scheme libraries so that Akku can find them
+                   (symlink (string-append prefix source name)
+                            (string-append dest name)))
+                 '("struct" "laesare" "pfds" "machine-code")
+                 (list #$(this-package-native-input "guile-struct-pack")
+                       #$(this-package-native-input "guile-laesare")
+                       #$(this-package-native-input "guile-pfds")
+                       #$(this-package-native-input "guile-machine-code"))))
+              (substitute* ".akku/env"
+                (("/bin/sh") (which "sh")))
+              #t)))))
     (native-inputs
-     `(("akku" ,akku)
-       ("chez-scheme" ,(chez-scheme-for-system))
-       ("struct" ,guile-struct-pack)
-       ("laesare" ,guile-laesare)
-       ("pfds" ,guile-pfds)
-       ("machine-code" ,guile-machine-code)))
+     (list akku
+           (chez-scheme-for-system)
+           guile-struct-pack
+           guile-laesare
+           guile-pfds
+           guile-machine-code))
     (home-page "https://scheme.fail")
     (synopsis "Implementation of the algorithmic language Scheme")
     (description
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index fbc06f96b6..fc8de01066 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -43,6 +43,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix build-system r)
   #:use-module (guix build-system trivial)
@@ -1180,6 +1181,52 @@ number of threads used in the threadpool-backed of common native libraries used
 for scientific computing and data science (e.g. BLAS and OpenMP).")
     (license license:bsd-3)))
 
+(define-public python-imbalanced-learn
+  (package
+    (name "python-imbalanced-learn")
+    (version "0.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "imbalanced-learn" version))
+              (sha256
+               (base32
+                "0qnrmysnqpc8ii1w5n8mci20gcjhmjr7khvk7f2apdbqc2pgf52f"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'unbreak-tests
+           (lambda _
+             ;; The doctests require tensorflow
+             (substitute* "setup.cfg"
+               (("--doctest-modules") ""))
+             ;; Some tests require a home directory
+             (setenv "HOME" (getcwd))
+             ;; We don't have keras
+             (delete-file "imblearn/keras/tests/test_generator.py")
+             ;; We don't have tensorflow
+             (delete-file "imblearn/tensorflow/tests/test_generator.py"))))))
+    (propagated-inputs
+     (list python-joblib
+           python-numpy
+           python-scikit-learn
+           python-scipy
+           python-threadpoolctl))
+    (native-inputs
+     (list python-black
+           python-flake8
+           python-mypy
+           python-pandas
+           python-pytest
+           python-pytest-cov))
+    (home-page "https://github.com/scikit-learn-contrib/imbalanced-learn")
+    (synopsis "Toolbox for imbalanced dataset in machine learning")
+    (description "This is a Python package offering a number of re-sampling
+techniques commonly used in datasets showing strong between-class imbalance.
+It is compatible with @code{scikit-learn}.")
+    (license license:expat)))
+
 (define-public python-pynndescent
   (package
     (name "python-pynndescent")
@@ -1283,6 +1330,76 @@ good at identifying feature interactions that are normally overlooked by
 standard feature selection algorithms.")
     (license license:expat)))
 
+(define-public python-cleanlab
+  (package
+    (name "python-cleanlab")
+    (version "2.2.0")
+    ;; The version on pypi does not come with tests.
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cleanlab/cleanlab")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00dqhxpwg781skknw943ynll2s44g4j125dx8aapk1d5d71sbzqy"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'disable-bad-tests
+           (lambda _
+             ;; XXX This requires pytest lazy_fixture
+             (delete-file "tests/test_multilabel_classification.py")
+             ;; Requires tensorflow
+             (delete-file "tests/test_frameworks.py")
+             ;; Tries to download datasets from the internet at runtime.
+             (delete-file "tests/test_dataset.py"))))))
+    (propagated-inputs
+     (list python-numpy
+           python-pandas
+           python-scikit-learn
+           python-termcolor
+           python-tqdm))
+    (native-inputs
+     (list python-pytest
+           python-pytorch
+           python-torchvision))
+    (home-page "https://cleanlab.ai")
+    (synopsis "Automatically find and fix dataset issues")
+    (description
+     "cleanlab automatically finds and fixes errors in any ML dataset. This
+data-centric AI package facilitates machine learning with messy, real-world
+data by providing clean labels during training.")
+    (license license:agpl3+)))
+
+(define-public python-cleanlab-1
+  (package
+    (inherit python-cleanlab)
+    (name "python-cleanlab")
+    (version "1.0.1")
+    ;; The version on pypi does not come with tests.
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cleanlab/cleanlab")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03kw2agnhadmrq9zvrlvvlc2c37dpflga5nhmsaag8scw223gqyp"))))
+    (build-system pyproject-build-system)
+    (arguments (list))
+    (propagated-inputs
+     (list python-numpy
+           python-scikit-learn
+           python-scipy
+           python-tqdm))
+    (native-inputs
+     (list python-pytest))))
+
 (define-public python-cmaes
   (package
     (name "python-cmaes")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index fe6f122812..a0e6510fda 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -4027,8 +4027,8 @@ It is a replacement for the @command{urlview} program.")
     (license license:gpl2+)))
 
 (define-public mumi
-  (let ((commit "02485074c9ae3d3b0039ac4c44fa37f2e2e75eac")
-        (revision "1"))
+  (let ((commit "4590e4822dda792f59f69b764824aa148d92dad0")
+        (revision "2"))
     (package
       (name "mumi")
       (version (git-version "0.0.2" revision commit))
@@ -4040,7 +4040,7 @@ It is a replacement for the @command{urlview} program.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1ppqz4bclbw3rqgd2fq4mj8hsrd9cfdddjzaycm5b0ffdsm8nrs3"))))
+                  "16brl1dk92kppzvxx8q5hcqiywg863s4sz5wb64hz8a37xa4hkyr"))))
       (build-system gnu-build-system)
       (arguments
        `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index d6fd1db2b6..e8c31fb168 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Taiju HIGASHI <higashi@taiju.info>
 ;;;
@@ -42,17 +42,22 @@
 (define-public toot
   (package
     (name "toot")
-    (version "0.28.0")
+    (version "0.30.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "toot" version))
         (sha256
-         (base32 "1wsj4160z3m1nvswgkl08n9ymihxhxdvxvrsycn9d3y5fplm00k9"))))
+         (base32 "0r9f2frlwfxkcv6c9lh36maph90v2yp6s7phynbrb3m7v35xzaxz"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-before 'check 'adjust-test-suite
+           (lambda _
+             ;; This test contains integration tests meant to run against a test
+             ;; Mastodon instance.
+             (delete-file "tests/test_integration.py")))
          (replace 'check
            (lambda* (#:key tests? inputs outputs #:allow-other-keys)
              (when tests?
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c0bc07977b..aee050735e 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -57,6 +57,7 @@
 ;;; Copyright © 2022 vicvbcun <guix@ikherbers.com>
 ;;; Copyright © 2022 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2022 Maximilian Heisinger <mail@maxheisinger.at>
+;;; Copyright © 2022 Akira Kyle <akira@akirakyle.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4715,6 +4716,36 @@ parts of it.")
     (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
     (license license:bsd-3)))
 
+(define-public libblastrampoline
+  (package
+    (name "libblastrampoline")
+    (version "5.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaLinearAlgebra/libblastrampoline")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0mf79zw11kxyil72y2ly5x8bbz3ng3nsqmp0zcps16b69wvfs19c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list "-C" "src"
+                          (string-append "prefix=" (assoc-ref %outputs "out"))
+                          (string-append "CC=" ,(cc-for-target)))
+       #:tests? #f      ; No check target.
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/JuliaLinearAlgebra/libblastrampoline")
+    (synopsis "PLT trampolines to provide a BLAS and LAPACK demuxing library")
+    (description
+     "This package uses PLT trampolines to provide a BLAS and LAPACK demuxing
+library.")
+    (license license:expat)))
+
 (define-public blis
   (package
     (name "blis")
@@ -4822,7 +4853,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
 (define-public openlibm
   (package
     (name "openlibm")
-    (version "0.7.4")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -4831,7 +4862,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1azms0lpxb7vxb3bln5lyz0wpwx6jnzbffkclclpq2v5aiw8d14i"))))
+        (base32 "1xsrcr49z0wdqpwd98jmw2xh18myzsa9xman0kp1h2i89x8mic5b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -4946,6 +4977,15 @@ Fresnel integrals, and similar related functions as well.")
              "library")
        #:phases
        (modify-phases %standard-phases
+         ,@(if (target-riscv64?)
+             ;; GraphBLAS FTBFS on riscv64-linux
+             `((add-after 'unpack 'skip-graphblas
+                 (lambda _
+                   (substitute* "Makefile"
+                     ((".*cd GraphBLAS.*") "")
+                     (("metisinstall gbinstall moninstall")
+                     "metisinstall moninstall")))))
+             '())
          (delete 'configure))))         ;no configure script
     (inputs
      (list tbb openblas gmp mpfr metis))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index d4e0e1203f..4487b1b6eb 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -234,7 +234,7 @@ Guile.")
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"
                          "armhf-linux" "aarch64-linux"
-                         "riscv32-linux" "riscv64-linux"))
+                         "riscv64-linux"))
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:test-target "test"
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 9927c7c323..fd7cbf921d 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1375,7 +1375,7 @@ Encryption to Gajim.")
 (define-public dino
   (package
     (name "dino")
-    (version "0.3.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
@@ -1383,11 +1383,11 @@ Encryption to Gajim.")
         (string-append "https://github.com/dino/dino/releases/download/v"
                        version "/dino-" version ".tar.gz"))
        (sha256
-        (base32 "07nw275xfamczzvzps8hsnpbhzvr4qc726fx92w8ncmdag7wlw1r"))))
+        (base32 "1rs6qpkidiww805cd91q059r2lm5lzblrkyn01zz4g1mls8ghk5a"))))
     (build-system cmake-build-system)
     (outputs '("out" "debug"))
     (arguments
-     (list #:configure-flags #~(list "-DBUILD_TESTS=true")
+     (list #:configure-flags #~(list "-DBUILD_TESTS=true" "-DUSE_SOUP3=true")
            #:parallel-build? #f         ; not supported
            #:modules '((guix build cmake-build-system)
                        ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
@@ -1439,7 +1439,7 @@ Encryption to Gajim.")
            libgee
            libnice
            libsignal-protocol-c
-           libsoup-minimal-2
+           libsoup
            libsrtp                      ;for calls support
            pango
            qrencode
diff --git a/gnu/packages/minetest.scm b/gnu/packages/minetest.scm
index f5671241a7..0f017217de 100644
--- a/gnu/packages/minetest.scm
+++ b/gnu/packages/minetest.scm
@@ -746,3 +746,26 @@ stopping before signals.
 advtrains up to version 2.2.1.")
     (license (list license:cc-by-sa3.0 license:agpl3+))
     (properties `((upstream-name . "orwell/basic_trains")))))
+
+(define-public minetest-oneblock
+  (package
+    (name "minetest-oneblock")
+    (version "2022-09-01")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/NO411/oneblock")
+                    (commit "3582c825137e61b3d2ae3d60b8b9746acd6dfe3d")))
+              (sha256
+               (base32
+                "1pkdrj99qqwmz7c86w2mh081ynyxhiwv2rl01xjm1wfpazx5zhdg"))
+              (file-name (git-file-name name version))))
+    (build-system minetest-mod-build-system)
+    (home-page "https://github.com/NO411/oneblock")
+    (synopsis "Build your island in the sky with random items!")
+    (description
+     "This package provides an extension of the Minetest game that lets you
+build your island in the sky.  Every 30 seconds you will receive a random
+block or item from the oneblock to expand the island!")
+    (license license:gpl3+)
+    (properties `((upstream-name . "NO11/oneblock")))))
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 63f9906508..37b9335ac8 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -54,6 +54,7 @@
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)               ;libnotify
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages image)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages ncurses)
@@ -171,7 +172,7 @@ etc. via a Web interface.  Features include:
 (define-public zabbix-agentd
   (package
     (name "zabbix-agentd")
-    (version "6.0.9")
+    (version "6.0.12")
     (source
      (origin
        (method url-fetch)
@@ -179,7 +180,7 @@ etc. via a Web interface.  Features include:
              "https://cdn.zabbix.com/zabbix/sources/stable/"
              (version-major+minor version) "/zabbix-" version ".tar.gz"))
        (sha256
-        (base32 "0rzdlmfvyqys166zi94q1c6pbf57b0g1dygb23ixsx083gq1hh01"))
+        (base32 "04083aa63bzfg5jp958nypbqr0hlcbhj73whlinr1ri3x1z0caz7"))
        (modules '((guix build utils)))
        (snippet
         '(substitute* '("src/zabbix_proxy/proxy.c"
@@ -209,6 +210,32 @@ solution (client-side agent)")
      '((release-monitoring-url . "https://www.zabbix.com/download_sources")
        (upstream-name . "zabbix")))))
 
+(define-public zabbix-agent2
+  (package/inherit zabbix-agentd
+    (name "zabbix-agent2")
+    (arguments
+     (list #:configure-flags
+           #~(list "--disable-agent"
+                   "--enable-agent2"
+                   "--enable-ipv6"
+                   "--with-libpcre2"
+                   ;; agent2 only supports OpenSSL.
+                   (string-append "--with-openssl="
+                                  (dirname (dirname
+                                            (search-input-file
+                                             %build-inputs "lib/libssl.so")))))
+           #:make-flags
+           #~'("BUILD_TIME=00:00:01" "BUILD_DATE=Jan 1 1970")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'set-HOME
+                 (lambda _
+                   (setenv "HOME" "/tmp"))))))
+    (native-inputs
+     (list go pkg-config))
+    (inputs
+     (list openssl pcre2 zlib))))
+
 (define-public zabbix-server
   (package
     (inherit zabbix-agentd)
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index 873dc54c30..4495622191 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,7 @@
                             "tirpc/netconfig.h")
                (("/etc/netconfig") (string-append (assoc-ref outputs "out")
                                                   "/etc/netconfig"))))))))
+    (native-inputs (list mit-krb5)) ;; for cross-compilation
     (inputs (list mit-krb5))
     (home-page "https://sourceforge.net/projects/libtirpc/")
     (synopsis "Transport-independent Sun/ONC RPC implementation")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index d25e4b999c..daa83f8d0c 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -164,9 +164,9 @@
   ;; Latest version of Guix, which may or may not correspond to a release.
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
-  (let ((version "1.3.0")
-        (commit "682639c107908426fe6bf0a1b8404b98b7820290")
-        (revision 32))
+  (let ((version "1.4.0rc1")
+        (commit "9ccc94afb266428b7feeba805617d31eb8afb23c")
+        (revision 1))
     (package
       (name "guix")
 
@@ -182,7 +182,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1ap8hfq46ncp7azhdvc9s64a9q9y74xfqpgfwlcgz6sw82a09yh0"))
+                  "1asx4jqjdp56r9m693ikrzxn4vaga846v2j6956xkavyj19x42nh"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index b269234338..410f7321e0 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages freeipmi)
   #:use-module (gnu packages linux)
@@ -63,20 +64,25 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20221022")
+    (version "20221122")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "1glrgk79nvw8p7aq70x14mgw2py9zphzlsnwl41l9rzx781yfc3m"))
+       (base32 "17akk6nskyqp3ckggli2dadp49m164ij79pijgb4iwad8ci9sgda"))
       (snippet
        '(begin
           (use-modules (guix build utils))
           ;; Delete pre-generated manpages and documents.
-          ;; TODO: Add pod2pdf for pdfs, generate rst files.
-          (for-each delete-file (find-files "src" "\\.(1|7|html)$"))))))
+          ;; TODO: generate rst files.
+          ;; parallel_cheat_bw.pdf uses libreoffice to be generated.
+          (rename-file "src/parallel_cheat_bw.pdf"
+                       "src/parallel_cheat_bw.pdf-keep")
+          (for-each delete-file (find-files "src" "\\.(1|7|html|pdf)$"))
+          (rename-file "src/parallel_cheat_bw.pdf-keep"
+                       "src/parallel_cheat_bw.pdf")))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -111,7 +117,7 @@
                      "echo"
                      ":::" "1" "2" "3"))))))
     (native-inputs
-     (list perl))
+     (list perl pod2pdf))
     (inputs
      (list bash-minimal perl procps))
     (home-page "https://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/jami-sipaccount-segfault.patch b/gnu/packages/patches/jami-sipaccount-segfault.patch
new file mode 100644
index 0000000000..1cef512124
--- /dev/null
+++ b/gnu/packages/patches/jami-sipaccount-segfault.patch
@@ -0,0 +1,30 @@
+From e5a449d60abc667d85dacd75ad6e31d4ddca5853 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
+ <sebastien.blin@savoirfairelinux.com>
+Date: Thu, 17 Nov 2022 12:02:20 -0500
+Subject: [PATCH] sipaccount: fix potential null dereference
+
+Detected by sonarqube
+
+Change-Id: I606f9cf2458dda07471d0a67af8915c7ca13d410
+---
+ src/sip/sipaccount.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/daemon/src/sip/sipaccount.cpp b/daemon/src/sip/sipaccount.cpp
+index 695b71839..e544ac31a 100644
+--- a/daemon/src/sip/sipaccount.cpp
++++ b/daemon/src/sip/sipaccount.cpp
+@@ -789,7 +789,8 @@ SIPAccount::sendRegister()
+     if (pjsip_regc_set_transport(regc, &tp_sel) != PJ_SUCCESS)
+         throw VoipLinkException("Unable to set transport");
+ 
+-    setUpTransmissionData(tdata, tp_sel.u.transport->key.type);
++    if (tp_sel.u.transport)
++        setUpTransmissionData(tdata, tp_sel.u.transport->key.type);
+ 
+     // pjsip_regc_send increment the transport ref count by one,
+     if ((status = pjsip_regc_send(regc, tdata)) != PJ_SUCCESS) {
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
index b60f284923..c6ca48fff0 100644
--- a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
+++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
@@ -8,15 +8,16 @@ Patch by Nicoló Balzarotti <nicolo@nixo.xyz>.
 
 --- a/base/loading.jl
 +++ b/base/loading.jl
-@@ -807,7 +807,10 @@
-         path = normpath(joinpath(dirname(prev), _path))
+@@ -1131,7 +1131,10 @@ function _include_dependency(mod::Module, _path::AbstractString)
      end
      if _track_dependencies[]
+         @lock require_lock begin
 -        push!(_require_dependencies, (mod, path, mtime(path)))
 +          push!(_require_dependencies,
 +                (mod, path,
 +                 haskey(ENV, "SOURCE_DATE_EPOCH") ?
 +                 parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+         end
      end
      return path, prev
  end
diff --git a/gnu/packages/patches/julia-allow-parallel-build.patch b/gnu/packages/patches/julia-allow-parallel-build.patch
deleted file mode 100644
index cc1d42fee4..0000000000
--- a/gnu/packages/patches/julia-allow-parallel-build.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Allow parallel tests with isolated environment.
-
-See https://github.com/JuliaLang/julia/issues/43205 and
-https://github.com/JuliaLang/julia/pull/43211.
-
-diff --git a/test/runtests.jl b/test/runtests.jl
-index 2f9cd058bb..150395e78c 100644
---- a/test/runtests.jl
-+++ b/test/runtests.jl
-@@ -4,7 +4,7 @@ using Test
- using Distributed
- using Dates
- import REPL
--using Printf: @sprintf
-+using Printf: @sprintf, @printf
- using Base: Experimental
- 
- include("choosetests.jl")
-@@ -83,11 +83,12 @@ prepend!(tests, linalg_tests)
- import LinearAlgebra
- cd(@__DIR__) do
-     n = 1
--    if net_on
-+    if net_on || haskey(ENV, "JULIA_CPU_THREADS")
-         n = min(Sys.CPU_THREADS, length(tests))
-         n > 1 && addprocs_with_testenv(n)
-         LinearAlgebra.BLAS.set_num_threads(1)
-     end
-+    @printf("Number of threads: %i\n", n)
-     skipped = 0
- 
-     @everywhere include("testdefs.jl")
diff --git a/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch b/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch
deleted file mode 100644
index 8ef4b111e4..0000000000
--- a/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fix compilation with -fno-common.
-
-Borrowed from upstream 29e17d8d2ccbca07c423e3089a6d5ae8a1c9cb6e.
-Author:     Yichao Yu <yyc1992@gmail.com>
-AuthorDate: Tue Mar 31 00:43:32 2020 -0400
-Commit:     Dave Watson <dade.watson@gmail.com>
-CommitDate: Tue Mar 31 08:06:29 2020 -0700
-
-diff --git a/src/x86/Ginit.c b/src/x86/Ginit.c
-index f6b8dc2..9550efa 100644
---- a/src/x86/Ginit.c
-+++ b/src/x86/Ginit.c
-@@ -54,13 +54,6 @@ tdep_uc_addr (ucontext_t *uc, int reg)
- 
- # endif /* UNW_LOCAL_ONLY */
- 
--HIDDEN unw_dyn_info_list_t _U_dyn_info_list;
--
--/* XXX fix me: there is currently no way to locate the dyn-info list
--       by a remote unwinder.  On ia64, this is done via a special
--       unwind-table entry.  Perhaps something similar can be done with
--       DWARF2 unwind info.  */
--
- static void
- put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg)
- {
-@@ -71,7 +64,12 @@ static int
- get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr,
-                         void *arg)
- {
--  *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list;
-+#ifndef UNW_LOCAL_ONLY
-+# pragma weak _U_dyn_info_list_addr
-+  if (!_U_dyn_info_list_addr)
-+    return -UNW_ENOINFO;
-+#endif
-+  *dyn_info_list_addr = _U_dyn_info_list_addr ();
-   return 0;
- }
- 
diff --git a/gnu/packages/patches/python-seaborn-2690.patch b/gnu/packages/patches/python-seaborn-2690.patch
deleted file mode 100644
index 4662d19c2d..0000000000
--- a/gnu/packages/patches/python-seaborn-2690.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-This patch was adapted from the upstream pull request 2690.
-
-From ebd6812d48f5b8ed1ebb7d79bda0b2a7b9ae2812 Mon Sep 17 00:00:00 2001
-From: Michael Waskom <mwaskom@gmail.com>
-Date: Sun, 31 Oct 2021 15:09:27 -0400
-Subject: [PATCH 1/4] Update boxplot tests for mpl3.5 compatability
-
----
- seaborn/tests/test_categorical.py | 30 +++++++++++++++++++-----------
- 1 file changed, 19 insertions(+), 11 deletions(-)
-
-diff --git a/seaborn/tests/test_categorical.py b/seaborn/tests/test_categorical.py
-index d4e09b703..488fad2d6 100644
---- a/seaborn/tests/test_categorical.py
-+++ b/seaborn/tests/test_categorical.py
-@@ -110,6 +110,11 @@ class CategoricalFixture:
-     df = pd.DataFrame(dict(y=y, g=g, h=h, u=u))
-     x_df["W"] = g
- 
-+    def get_box_artists(self, ax):
-+
-+        # Exclude labeled patches, which are for the legend
-+        return [p for p in ax.patches if not p.get_label()]
-+
- 
- class TestCategoricalPlotter(CategoricalFixture):
- 
-@@ -855,12 +863,12 @@ def test_hue_offsets(self):
-     def test_axes_data(self):
- 
-         ax = cat.boxplot(x="g", y="y", data=self.df)
--        assert len(ax.artists) == 3
-+        assert len(self.get_box_artists(ax)) == 3
- 
-         plt.close("all")
- 
-         ax = cat.boxplot(x="g", y="y", hue="h", data=self.df)
--        assert len(ax.artists) == 6
-+        assert len(self.get_box_artists(ax)) == 6
- 
-         plt.close("all")
- 
-@@ -868,14 +876,14 @@ def test_box_colors(self):
- 
-         ax = cat.boxplot(x="g", y="y", data=self.df, saturation=1)
-         pal = palettes.color_palette(n_colors=3)
--        for patch, color in zip(ax.artists, pal):
-+        for patch, color in zip(self.get_box_artists(ax), pal):
-             assert patch.get_facecolor()[:3] == color
- 
-         plt.close("all")
- 
-         ax = cat.boxplot(x="g", y="y", hue="h", data=self.df, saturation=1)
-         pal = palettes.color_palette(n_colors=2)
--        for patch, color in zip(ax.artists, pal * 2):
-+        for patch, color in zip(self.get_box_artists(ax), pal * 2):
-             assert patch.get_facecolor()[:3] == color
- 
-         plt.close("all")
-@@ -884,7 +892,7 @@ def test_draw_missing_boxes(self):
- 
-         ax = cat.boxplot(x="g", y="y", data=self.df,
-                          order=["a", "b", "c", "d"])
--        assert len(ax.artists) == 3
-+        assert len(self.get_box_artists(ax)) == 3
- 
-     def test_missing_data(self):
- 
-@@ -894,13 +902,13 @@ def test_missing_data(self):
-         y[-2:] = np.nan
- 
-         ax = cat.boxplot(x=x, y=y)
--        assert len(ax.artists) == 3
-+        assert len(self.get_box_artists(ax)) == 3
- 
-         plt.close("all")
- 
-         y[-1] = 0
-         ax = cat.boxplot(x=x, y=y, hue=h)
--        assert len(ax.artists) == 7
-+        assert len(self.get_box_artists(ax)) == 7
- 
-         plt.close("all")
- 
-@@ -2766,11 +2774,11 @@ def test_plot_elements(self):
- 
-         g = cat.catplot(x="g", y="y", data=self.df, kind="box")
-         want_artists = self.g.unique().size
--        assert len(g.ax.artists) == want_artists
-+        assert len(self.get_box_artists(g.ax)) == want_artists
- 
-         g = cat.catplot(x="g", y="y", hue="h", data=self.df, kind="box")
-         want_artists = self.g.unique().size * self.h.unique().size
--        assert len(g.ax.artists) == want_artists
-+        assert len(self.get_box_artists(g.ax)) == want_artists
- 
-         g = cat.catplot(x="g", y="y", data=self.df,
-                         kind="violin", inner=None)
-@@ -3137,14 +3145,14 @@ def test_box_colors(self):
- 
-         ax = cat.boxenplot(x="g", y="y", data=self.df, saturation=1)
-         pal = palettes.color_palette(n_colors=3)
--        for patch, color in zip(ax.artists, pal):
-+        for patch, color in zip(self.get_box_artists(ax), pal):
-             assert patch.get_facecolor()[:3] == color
- 
-         plt.close("all")
- 
-         ax = cat.boxenplot(x="g", y="y", hue="h", data=self.df, saturation=1)
-         pal = palettes.color_palette(n_colors=2)
--        for patch, color in zip(ax.artists, pal * 2):
-+        for patch, color in zip(self.get_box_artists(ax), pal * 2):
-             assert patch.get_facecolor()[:3] == color
- 
-         plt.close("all")
-
-From ff78ed38817a346e760194ab3b03b28d7ea3ba1b Mon Sep 17 00:00:00 2001
-From: Michael Waskom <mwaskom@gmail.com>
-Date: Sun, 31 Oct 2021 15:50:54 -0400
-Subject: [PATCH 2/4] Update kdeplot tests for mpl3.5 compatability
-
----
- seaborn/tests/test_distributions.py | 53 ++++++++++++++++++++---------
- 1 file changed, 37 insertions(+), 16 deletions(-)
-
-diff --git a/seaborn/tests/test_distributions.py b/seaborn/tests/test_distributions.py
-index d241fd978..466efb69e 100644
---- a/seaborn/tests/test_distributions.py
-+++ b/seaborn/tests/test_distributions.py
-@@ -39,6 +39,27 @@
- )
- 
- 
-+def get_contour_coords(c):
-+    """Provide compatability for change in contour artist type in mpl3.5."""
-+    # See https://github.com/matplotlib/matplotlib/issues/20906
-+    if isinstance(c, mpl.collections.LineCollection):
-+        return c.get_segments()
-+    elif isinstance(c, mpl.collections.PathCollection):
-+        return [p.vertices[:np.argmax(p.codes) + 1] for p in c.get_paths()]
-+
-+
-+def get_contour_color(c):
-+    """Provide compatability for change in contour artist type in mpl3.5."""
-+    # See https://github.com/matplotlib/matplotlib/issues/20906
-+    if isinstance(c, mpl.collections.LineCollection):
-+        return c.get_color()
-+    elif isinstance(c, mpl.collections.PathCollection):
-+        if c.get_facecolor().size:
-+            return c.get_facecolor()
-+        else:
-+            return c.get_edgecolor()
-+
-+
- class TestDistPlot(object):
- 
-     rs = np.random.RandomState(0)
-@@ -902,7 +923,7 @@ def test_fill_artists(self, long_df):
-             f, ax = plt.subplots()
-             kdeplot(data=long_df, x="x", y="y", hue="c", fill=fill)
-             for c in ax.collections:
--                if fill:
-+                if fill or Version(mpl.__version__) >= Version("3.5.0b0"):
-                     assert isinstance(c, mpl.collections.PathCollection)
-                 else:
-                     assert isinstance(c, mpl.collections.LineCollection)
-@@ -918,8 +939,8 @@ def test_common_norm(self, rng):
-         kdeplot(x=x, y=y, hue=hue, common_norm=True, ax=ax1)
-         kdeplot(x=x, y=y, hue=hue, common_norm=False, ax=ax2)
- 
--        n_seg_1 = sum([len(c.get_segments()) > 0 for c in ax1.collections])
--        n_seg_2 = sum([len(c.get_segments()) > 0 for c in ax2.collections])
-+        n_seg_1 = sum([len(get_contour_coords(c)) > 0 for c in ax1.collections])
-+        n_seg_2 = sum([len(get_contour_coords(c)) > 0 for c in ax2.collections])
-         assert n_seg_2 > n_seg_1
- 
-     def test_log_scale(self, rng):
-@@ -946,7 +967,7 @@ def test_log_scale(self, rng):
-         ax2.contour(10 ** xx, yy, density, levels=levels)
- 
-         for c1, c2 in zip(ax1.collections, ax2.collections):
--            assert_array_equal(c1.get_segments(), c2.get_segments())
-+            assert_array_equal(get_contour_coords(c1), get_contour_coords(c2))
- 
-     def test_bandwidth(self, rng):
- 
-@@ -959,7 +980,7 @@ def test_bandwidth(self, rng):
-         kdeplot(x=x, y=y, bw_adjust=2, ax=ax2)
- 
-         for c1, c2 in zip(ax1.collections, ax2.collections):
--            seg1, seg2 = c1.get_segments(), c2.get_segments()
-+            seg1, seg2 = get_contour_coords(c1), get_contour_coords(c2)
-             if seg1 + seg2:
-                 x1 = seg1[0][:, 0]
-                 x2 = seg2[0][:, 0]
-@@ -980,9 +1001,9 @@ def test_weights(self, rng):
-         kdeplot(x=x, y=y, hue=hue, weights=weights, ax=ax2)
- 
-         for c1, c2 in zip(ax1.collections, ax2.collections):
--            if c1.get_segments() and c2.get_segments():
--                seg1 = np.concatenate(c1.get_segments(), axis=0)
--                seg2 = np.concatenate(c2.get_segments(), axis=0)
-+            if get_contour_coords(c1) and get_contour_coords(c2):
-+                seg1 = np.concatenate(get_contour_coords(c1), axis=0)
-+                seg2 = np.concatenate(get_contour_coords(c2), axis=0)
-                 assert not np.array_equal(seg1, seg2)
- 
-     def test_hue_ignores_cmap(self, long_df):
-@@ -1030,7 +1051,7 @@ def test_levels_and_thresh(self, long_df):
-         kdeplot(**plot_kws, levels=np.linspace(thresh, 1, n), ax=ax2)
- 
-         for c1, c2 in zip(ax1.collections, ax2.collections):
--            assert_array_equal(c1.get_segments(), c2.get_segments())
-+            assert_array_equal(get_contour_coords(c1), get_contour_coords(c2))
- 
-         with pytest.raises(ValueError):
-             kdeplot(**plot_kws, levels=[0, 1, 2])
-@@ -1042,7 +1063,7 @@ def test_levels_and_thresh(self, long_df):
-         kdeplot(**plot_kws, levels=n, thresh=0, ax=ax2)
- 
-         for c1, c2 in zip(ax1.collections, ax2.collections):
--            assert_array_equal(c1.get_segments(), c2.get_segments())
-+            assert_array_equal(get_contour_coords(c1), get_contour_coords(c2))
-         for c1, c2 in zip(ax1.collections, ax2.collections):
-             assert_array_equal(c1.get_facecolors(), c2.get_facecolors())
- 
-@@ -2322,13 +2343,13 @@ def test_bivariate_kde_norm(self, rng):
-         z = [0] * 80 + [1] * 20
- 
-         g = displot(x=x, y=y, col=z, kind="kde", levels=10)
--        l1 = sum(bool(c.get_segments()) for c in g.axes.flat[0].collections)
--        l2 = sum(bool(c.get_segments()) for c in g.axes.flat[1].collections)
-+        l1 = sum(bool(get_contour_coords(c)) for c in g.axes.flat[0].collections)
-+        l2 = sum(bool(get_contour_coords(c)) for c in g.axes.flat[1].collections)
-         assert l1 > l2
- 
-         g = displot(x=x, y=y, col=z, kind="kde", levels=10, common_norm=False)
--        l1 = sum(bool(c.get_segments()) for c in g.axes.flat[0].collections)
--        l2 = sum(bool(c.get_segments()) for c in g.axes.flat[1].collections)
-+        l1 = sum(bool(get_contour_coords(c)) for c in g.axes.flat[0].collections)
-+        l2 = sum(bool(get_contour_coords(c)) for c in g.axes.flat[1].collections)
-         assert l1 == l2
- 
-     def test_bivariate_hist_norm(self, rng):
-
-From a20ce3fabeb23c97b5827d9fb0c6a96ac109ea64 Mon Sep 17 00:00:00 2001
-From: Michael Waskom <mwaskom@gmail.com>
-Date: Sun, 31 Oct 2021 16:10:47 -0400
-Subject: [PATCH 3/4] Update legend tests for mpl3.5 compatability
-
----
- seaborn/tests/test_distributions.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/seaborn/tests/test_distributions.py b/seaborn/tests/test_distributions.py
-index 466efb69e..024fe7541 100644
---- a/seaborn/tests/test_distributions.py
-+++ b/seaborn/tests/test_distributions.py
-@@ -872,7 +872,7 @@ def test_legend(self, long_df):
-         for label, level in zip(legend_labels, order):
-             assert label.get_text() == level
- 
--        legend_artists = ax.legend_.findobj(mpl.lines.Line2D)[::2]
-+        legend_artists = ax.legend_.findobj(mpl.lines.Line2D)
-         palette = color_palette()
-         for artist, color in zip(legend_artists, palette):
-             assert_colors_equal(artist.get_color(), color)
-
diff --git a/gnu/packages/patches/python-seaborn-kde-test.patch b/gnu/packages/patches/python-seaborn-kde-test.patch
deleted file mode 100644
index f300dffc6f..0000000000
--- a/gnu/packages/patches/python-seaborn-kde-test.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This patch is an excerpt of this upstream commit:
-
-  commit 0a24478a550132f1882e5be5f5dbc0fc446a8a6c
-  Author: Michael Waskom <mwaskom@users.noreply.github.com>
-  Date:   Mon Dec 21 18:44:58 2020 -0500
-
-      Raise minimal supported Python to 3.7 and bump requirements (#2396)
-
-It fixes the failure of 'test_weights'.
-
---- a/seaborn/tests/test_distributions.py
-+++ b/seaborn/tests/test_distributions.py
-@@ -709,21 +708,17 @@ class TestKDEPlotUnivariate:
-         integral = integrate.trapz(ydata, np.log10(xdata))
-         assert integral == pytest.approx(1)
- 
--    @pytest.mark.skipif(
--        LooseVersion(scipy.__version__) < "1.2.0",
--        reason="Weights require scipy >= 1.2.0"
--    )
-     def test_weights(self):
- 
-         x = [1, 2]
-         weights = [2, 1]
- 
--        ax = kdeplot(x=x, weights=weights)
-+        ax = kdeplot(x=x, weights=weights, bw_method=.1)
- 
-         xdata, ydata = ax.lines[0].get_xydata().T
- 
--        y1 = ydata[np.argwhere(np.abs(xdata - 1).min())]
--        y2 = ydata[np.argwhere(np.abs(xdata - 2).min())]
-+        y1 = ydata[np.abs(xdata - 1).argmin()]
-+        y2 = ydata[np.abs(xdata - 2).argmin()]
- 
-         assert y1 == pytest.approx(2 * y2)
diff --git a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
index 73e5878546..5f2856dbb4 100644
--- a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
+++ b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
@@ -5,6 +5,9 @@ Subject: [PATCH] Revert "tools: kwbimage: Do not hide usage of secure header
 
 This reverts commit b4f3cc2c42d97967a3a3c8796c340f6b07ecccac.
 
+Addendum 2022-12-08, Ricardo Wurmus: This patch has been updated to introduce
+CONFIG_FIT_PRELOAD to remove fit_pre_load_data, which depends on openssl.
+
 diff --git a/tools/kwbimage.c b/tools/kwbimage.c
 index 94b7685392..eec599b0ee 100644
 --- a/tools/kwbimage.c
@@ -137,3 +140,66 @@ index 94b7685392..eec599b0ee 100644
  
  	*imagesz = headersz;
  
+--- a/tools/image-host.c
++++ b/tools/image-host.c
+@@ -14,10 +14,12 @@
+ #include <image.h>
+ #include <version.h>
+ 
++#ifdef CONFIG_FIT_PRELOAD
+ #include <openssl/pem.h>
+ #include <openssl/evp.h>
+ 
+ #define IMAGE_PRE_LOAD_PATH                             "/image/pre-load/sig"
++#endif
+ 
+ /**
+  * fit_set_hash_value - set hash value in requested has node
+@@ -1116,6 +1118,7 @@
+ 	return 0;
+ }
+ 
++#ifdef CONFIG_FIT_PRELOAD
+ /*
+  * 0) open file (open)
+  * 1) read certificate (PEM_read_X509)
+@@ -1224,6 +1227,7 @@
+  out:
+ 	return ret;
+ }
++#endif
+ 
+ int fit_cipher_data(const char *keydir, void *keydest, void *fit,
+ 		    const char *comment, int require_keys,
+--- a/tools/fit_image.c
++++ b/tools/fit_image.c
+@@ -59,9 +59,10 @@
+ 		ret = fit_set_timestamp(ptr, 0, time);
+ 	}
+ 
++#ifdef CONFIG_FIT_PRELOAD
+ 	if (!ret)
+ 		ret = fit_pre_load_data(params->keydir, dest_blob, ptr);
+-
++#endif
+ 	if (!ret) {
+ 		ret = fit_cipher_data(params->keydir, dest_blob, ptr,
+ 				      params->comment,
+--- a/include/image.h
++++ b/include/image.h
+@@ -1090,6 +1090,7 @@
+ 
+ int fit_set_timestamp(void *fit, int noffset, time_t timestamp);
+ 
++#ifdef CONFIG_FIT_PRELOAD
+ /**
+  * fit_pre_load_data() - add public key to fdt blob
+  *
+@@ -1104,6 +1105,7 @@
+  *	< 0, on failure
+  */
+ int fit_pre_load_data(const char *keydir, void *keydest, void *fit);
++#endif
+ 
+ int fit_cipher_data(const char *keydir, void *keydest, void *fit,
+ 		    const char *comment, int require_keys,
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index f04a91e351..20c1c3b742 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -32,6 +32,7 @@
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5206,6 +5207,27 @@ Linux, fsevents on OS X, @code{kqueue} on FreeBSD, and
 back to a full directory scan if none of these are available.")
     (license license:perl-license)))
 
+(define-public perl-getopt-argvfile
+  (package
+    (name "perl-getopt-argvfile")
+    (version "1.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                     "mirror://cpan/authors/id/J/JS/JSTENZEL/Getopt-ArgvFile-"
+                     version
+                     ".tar.gz"))
+              (sha256
+               (base32
+                "08jvhfqcjlsn013x96qa6paif0095x6y60jslp8p3zg67i8sl29p"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Getopt-ArgvFile")
+    (synopsis "Perl module for reading script options and parameters from files")
+    (description "This module simply interpolates option file hints in @code{@@ARGV}
+by the contents of the pointed files.  This enables option reading from files instead
+of or additional to the usual reading from the command line.")
+    (license license:artistic2.0)))
+
 (define-public perl-getopt-long
   (package
     (name "perl-getopt-long")
@@ -6248,6 +6270,18 @@ expression and a list of abbreviations (built in and given).")
         (base32
          "1qgap0j0ixmif309dvbqca7sy8xha9xgnj9s2lvh8qrczkc92gqi"))))
     (build-system perl-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'wrap-translit
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out")))
+                (wrap-program (string-append out "/bin/translit")
+                  `("PERL5LIB" ":" prefix
+                    (,(getenv "PERL5LIB")
+                     ,(string-append out "/lib/perl5/site_perl"))))))))))
+    (inputs (list bash-minimal))
     (home-page "https://metacpan.org/release/Lingua-Translit")
     (synopsis "Transliterate text between writing systems")
     (description "@code{Lingua::Translit} can be used to convert text from one
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index d86d4e7294..4d85611101 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -755,50 +755,51 @@ a complete panorama and stitch any series of overlapping pictures.")
 (define-public rawtherapee
   (package
     (name "rawtherapee")
-    (version "5.8")
+    (version "5.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://rawtherapee.com/shared/source/"
                                   "rawtherapee-" version ".tar.xz"))
               (sha256
                (base32
-                "0lq8qi7g0a28h3rab7bk5bbbd4gvfma42bvlz1dfn8p9mah2h19n"))))
+                "08s81mxnrj183bss2rb0hac1qyn7bmcnk3x2ymg1cp0q5322ibwf"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f                      ; no test suite
-       #:build-type "release"
-       #:configure-flags
-       (list (string-append "-DLENSFUNDBDIR="
-                            (assoc-ref %build-inputs "lensfun")
-                            "/share/lensfun")
-             ;; Don't optimize the build for the host machine. See the file
-             ;; 'ProcessorTargets.cmake' in the source distribution for more
-             ;; information.
-             "-DPROC_TARGET_NUMBER=1"
-             ;; These flags are recommended by upstream for distributed packages.
-             ;; See the file 'RELEASE_NOTES.txt' in the source distribution.
-             "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
-             "-DCMAKE_C_FLAGS=-O3 -fPIC"
-             "-DCACHE_NAME_SUFFIX=\"\"")))
+     (list
+      #:tests? #f                      ; no test suite
+      #:build-type "release"
+      #:configure-flags
+      #~(list (string-append "-DLENSFUNDBDIR="
+                             #$(this-package-input "lensfun")
+                             "/share/lensfun")
+              ;; Don't optimize the build for the host machine. See the file
+              ;; 'ProcessorTargets.cmake' in the source distribution for more
+              ;; information.
+              "-DPROC_TARGET_NUMBER=1"
+              ;; These flags are recommended by upstream for distributed packages.
+              ;; See the file 'RELEASE_NOTES.txt' in the source distribution.
+              "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
+              "-DCMAKE_C_FLAGS=-O3 -fPIC"
+              "-DCACHE_NAME_SUFFIX=\"\"")))
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("expat" ,expat)
-       ("fftw" ,fftwf)
-       ("glib" ,glib)
-       ("glibmm" ,glibmm)
-       ("gtk+" ,gtk+)
-       ("gtkmm" ,gtkmm-3)
-       ("lcms" ,lcms)
-       ("lensfun" ,lensfun)
-       ("libcanberra" ,libcanberra)
-       ("libiptcdata" ,libiptcdata)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("librsvg" ,librsvg)
-       ("libsigc++" ,libsigc++)
-       ("libtiff" ,libtiff)
-       ("zlib" ,zlib)))
+     (list expat
+           fftwf
+           glib
+           glibmm
+           gtk+
+           gtkmm-3
+           lcms
+           lensfun
+           libcanberra
+           libiptcdata
+           libjpeg-turbo
+           libpng
+           librsvg
+           libsigc++
+           libtiff
+           zlib))
     (home-page "https://rawtherapee.com")
     (synopsis "Raw image developing and processing")
     (description "RawTherapee is a raw image processing suite.  It comprises a
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index f7184bd49a..b580f8b2a7 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018, 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
@@ -406,6 +406,12 @@ from protobuf specification files.")
         (base32
          "1ja2vpk9nklllmsirmil2s4l7ni9yfqvbvj47zz5xx17s1k1bhxd"))))
     (build-system python-build-system)
+    (inputs (list protobuf))
+    (arguments
+     `(;; Favor C++ implementation from protobuf over the native Python
+       ;; implementation. The additional dependency yields significant
+       ;; performance improvements for some workloads.
+       #:configure-flags '("--cpp_implementation")))
     (home-page "https://github.com/google/protobuf")
     (synopsis "Protocol buffers is a data interchange format")
     (description
@@ -462,9 +468,8 @@ structured data.")
        (sha256
         (base32
          "04bqb12smlckzmgkj6vgmpbr3cby0n6726cmz33bqr7kn1vb728l"))))
-    (inputs
-     (cons python-six
-           (package-inputs python-protobuf)))))
+    (arguments '())                            ;no "--cpp_implementation" here
+    (inputs (list python-six))))
 
 (define-public python-proto-plus
   (package
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index ba99b57bcb..dab044d9f7 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -290,26 +290,6 @@ logic, also known as grey logic.")
 genetic variation data.")
     (license license:expat)))
 
-(define-public python-sgp4
-  (package
-    (name "python-sgp4")
-    (version "2.12")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "sgp4" version))
-       (sha256
-        (base32 "0dncp9i5b6afkg7f8mj9j0qzsp008b8v73yc0qkmizhpns7mvwvx"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     (list python-numpy))
-    (home-page "https://github.com/brandon-rhodes/python-sgp4")
-    (synopsis "Track earth satellite TLE orbits using SGP4")
-    (description
-     "This package provides a Python implementation of the most recent version
-of the SGP4 satellite tracking algorithm.")
-    (license license:expat)))
-
 (define-public python-trimesh
   (package
     (name "python-trimesh")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 4f3a587c6a..7543e05f47 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -513,6 +513,35 @@ comes with a SOCKS proxy client.")
         (base32
          "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0"))))))
 
+(define-public python-aiostream
+  (package
+    (name "python-aiostream")
+    (version "0.4.5")
+    (source (origin
+              ;; Tests not included in pypi release.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vxgmichel/aiostream")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0l2ijb7yk0820wiyf6zrzx8fhzf8925an7r06mcaw3in1mr6rssq"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest
+           python-pytest-asyncio
+           python-pytest-cov
+           python-pytest-runner))
+    (home-page "https://github.com/vxgmichel/aiostream")
+    (synopsis "Generator-based operators for asynchronous iteration")
+    (description "@code{aiostream} provides a collection of stream operators that can
+be combined to create asynchronous pipelines of operations.  It can be seen as an
+asynchronous version of @code{itertools}, although some aspects are slightly
+different. All the provided operators return a unified interface called a stream.  A
+stream is an enhanced asynchronous iterable.")
+    (license license:gpl3)))
+
 (define-public python-asgiref
   (package
     (name "python-asgiref")
@@ -3860,6 +3889,38 @@ SlimIt also provides a library that includes a JavaScript parser, lexer,
 pretty printer and a tree visitor.")
     (license license:expat)))
 
+(define-public python-flask-jwt
+  (package
+    (name "python-flask-jwt")
+    (version "0.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Flask-JWT" version))
+              (sha256
+               (base32
+                "1bfh7cr0sf65rn4h1q67472y6ml9s8c4k0xxfhrwvwg0plpngh29"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'compatibility
+           (lambda _
+             (substitute* "setup.cfg"
+               (("\\[pytest\\]") "[tool:pytest]"))
+             (substitute* "requirements.txt"
+               (("PyJWT>=1.4.0,<1.5.0") "PyJWT>=2.0.0"))
+             (substitute* '("tests/test_jwt.py"
+                            "flask_jwt/__init__.py")
+               (("access_token.decode\\('utf-8'\\)") "access_token")))))))
+    (propagated-inputs (list python-flask python-pyjwt))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/mattupstate/flask-jwt")
+    (synopsis "JWT token authentication for Flask apps")
+    (description "This package implements JWT token authentication for Flask
+apps.")
+    (license license:expat)))
+
 (define-public python-flask-restful
   (package
     (name "python-flask-restful")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d01a4adc45..610bf1956d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -565,6 +565,24 @@ and variables you'll need already imported and created.
     (home-page "https://github.com/google/python-fire")
     (license license:asl2.0)))
 
+(define-public python-fit-nbinom
+  (package
+    (name "python-fit-nbinom")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "fit_nbinom" version))
+              (sha256
+               (base32
+                "12v8l5i35vjbpvh5i4lw29ys6vpr3z7pysyrx33hxaq09zr015mx"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-numpy python-scipy))
+    (home-page "https://github.com/joachimwolff/fit_nbinom")
+    (synopsis "Negative binomial maximum likelihood estimator")
+    (description "This package provides an implementation in Python using
+scipy and numpy of negative binomial maximum likelihood estimation.")
+    (license license:gpl3+)))
+
 (define-public python-dotmap
   (package
     (name "python-dotmap")
@@ -901,6 +919,24 @@ template")
 variables into the markdown template")
     (license license:expat)))
 
+(define-public python-py4j
+  (package
+    (name "python-py4j")
+    (version "0.10.9.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "py4j" version))
+              (sha256
+               (base32
+                "1fwdx92cdaiviradksfyygg05g1fpc3x2lf65bv5rnispcam6vhb"))))
+    (build-system python-build-system)
+    (home-page "https://www.py4j.org/")
+    (synopsis "Dynamically access arbitrary Java objects from Python")
+    (description
+     "This package enables Python programs to dynamically access arbitrary
+Java objects.")
+    (license license:bsd-3)))
+
 (define-public python-pymdown-extensions
   (package
     (name "python-pymdown-extensions")
@@ -924,6 +960,36 @@ variables into the markdown template")
 Markdown.  All extensions are found under the module namespace of pymdownx.")
     (license license:expat)))
 
+(define-public python-pint
+  (package
+    (name "python-pint")
+    (version "0.19.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Pint" version))
+              (sha256
+               (base32
+                "1bsbiikm9i4saqc6mc3minkmrgnsgcg734agsvd7icqhyngrim71"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-mpl
+           python-pytest-subtests
+           python-setuptools-scm
+           python-sparse
+           python-dask
+           python-xarray
+           python-distributed))
+    (home-page "https://github.com/hgrecco/pint")
+    (synopsis "Physical quantities module")
+    (description
+     "Pint is a Python package to define, operate and manipulate physical
+quantities: the product of a numerical value and a unit of measurement.  It
+allows arithmetic operations between them and conversions from and to
+different units.")
+    (license license:bsd-3)))
+
 (define-public python-plotille
   (package
     (name "python-plotille")
@@ -3011,6 +3077,29 @@ the optional C extension for speedups.  Simplejson is also supported on
 Python 3.3+.")
     (license license:x11)))
 
+(define-public python-simple-rlp
+  (package
+    (name "python-simple-rlp")
+    (version "0.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/SamuelHaidu/simple-rlp")
+             ;; Upstream doesn't tag the git repo.
+             (commit "342ea269d84da1ddc4a7630cdebc90159261391c")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1nv92sphpkyrncak4qgj50qmgkmj4ycl2szbnv9c7ihgl5df4div"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/SamuelHaidu/simple-rlp")
+    (synopsis
+     "Python implementation of RLP (Recursive Length Prefix) encoding")
+    (description
+     "@code{simple-rlp} is a python implementation of RLP (Recursive Length \
+Prefix) - Encode and decode data structures.")
+    (license license:expat)))
 
 (define-public python-pyicu
   (package
@@ -3231,6 +3320,46 @@ existing ones.")
 a certain expected condition.")
     (license license:expat)))
 
+(define-public python-pomegranate
+  (package
+    (name "python-pomegranate")
+    (version "0.14.8")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pomegranate" version))
+              (sha256
+               (base32
+                "0gb9srkbxzlkjyfizvxkw5y0bvnfcyiaxapz0hrdaba8j096b5i2"))
+              (modules '((guix build utils)))
+              ;; Delete generated Cython C files.
+              (snippet
+               '(for-each delete-file (find-files "." "\\.c$")))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "python" "setup.py" "test")))))))
+    (propagated-inputs
+     (list python-joblib
+           python-networkx
+           python-numpy
+           python-pyyaml
+           python-scipy))
+    (native-inputs
+     (list python-cython
+           python-nose
+           python-pandas))
+    (home-page "https://pypi.python.org/pypi/pomegranate/")
+    (synopsis "Graphical models library for Python")
+    (description
+     "Pomegranate is a graphical models library for Python, implemented in
+Cython for speed.")
+    (license license:expat)))
+
 (define-public python-poyo
   (package
     (name "python-poyo")
@@ -3671,18 +3800,6 @@ with sensible defaults out of the box.")
         (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
     (arguments `())))
 
-(define-public python-click-5
-  (package (inherit python-click)
-    (name "python-click")
-    (version "5.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "click" version))
-       (sha256
-        (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
-    (arguments `())))
-
 (define-public python-cligj
   (package
     (name "python-cligj")
@@ -4901,6 +5018,23 @@ text styles of documentation.")
     (description "This package installs Github custom lexers to Pygments.")
     (license license:bsd-3)))
 
+(define-public python-pygtrie
+  (package
+    (name "python-pygtrie")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pygtrie" version))
+              (sha256
+               (base32
+                "1qm4xdmzd4q5pc9h5gjdpr5m7lg06k8dvqnjn7d07d3fhani8d90"))))
+    (build-system pyproject-build-system)
+    (home-page "https://github.com/mina86/pygtrie")
+    (synopsis "Pure Python trie data structure implementation")
+    (description
+     "This package provides a pure Python trie data structure implementation.")
+    (license license:asl2.0)))
+
 (define-public python-bump2version
   (package
     (name "python-bump2version")
@@ -10239,40 +10373,37 @@ SVG, EPS, PNG and terminal output.")
 (define-public python-seaborn
   (package
     (name "python-seaborn")
-    (version "0.11.2")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "seaborn" version))
               (sha256
                (base32
-                "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg"))
-              (patches (search-patches "python-seaborn-kde-test.patch"
-                                       "python-seaborn-2690.patch"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-more-tests
-                    (lambda _
-                      (substitute* "seaborn/tests/test_distributions.py"
-                        (("get_contour_color\\(ax\\.collections\\[0\\]\\)")
-                         "get_contour_color(ax.collections[0])")
-                        (("c\\.get_color\\(\\)") "get_contour_color(c)")
-                        (("def test_hue_ignores_cmap")
-                         "def skip_test_hue_ignores_cmap")
-                        (("def test_fill_artists")
-                         "def skip_test_fill_artists")
-                        (("def test_with_rug") "def skip_test_with_rug"))))
-                  (add-before 'check 'start-xserver
-                    (lambda _
-                      (system "Xvfb :1 &")
-                      (setenv "DISPLAY" ":1")))
-                  (replace 'check
-                    (lambda* (#:key tests? #:allow-other-keys)
-                      (when tests?
-                        (invoke "pytest" "seaborn")))))))
+                "08vvnp4ps86857imxz2l5xi2vir5xdcdp3apq4badb4b5llifgw9"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:modules '((guix build python-build-system)
+                       (guix build utils)
+                       (ice-9 match))
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'build
+                          (lambda _
+                            (invoke "python" "-m" "build" "--wheel"
+                                    "--no-isolation" ".")))
+                        (replace 'install
+                          (lambda _
+                            (match (find-files "dist" "\\.whl$")
+                              ((wheel _ ...)
+                               (invoke "python" "-m" "pip" "install"
+                                       (string-append "--prefix=" #$output)
+                                       wheel)))))
+                        (replace 'check
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (when tests?
+                              (invoke "pytest" "-vv")))))))
     (propagated-inputs (list python-pandas python-matplotlib python-numpy
                              python-scipy))
-    (native-inputs (list python-pytest xorg-server-for-tests))
+    (native-inputs (list python-flit-core python-pypa-build python-pytest))
     (home-page "https://seaborn.pydata.org/")
     (synopsis "Statistical data visualization")
     (description
@@ -14777,7 +14908,7 @@ with a new public API, and RPython support.")
 (define-public python-hy
   (package
     (name "python-hy")
-    (version "0.24.0")
+    (version "0.25.0")
     (source
      (origin
        (method git-fetch)               ; no tests in PyPI release
@@ -14786,7 +14917,7 @@ with a new public API, and RPython support.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1s458ymd9g3s8k2ccc300jr4w66c7q3vhmhs9z3d3a4qg0xdhs9y"))))
+        (base32 "1am6z9m0s9svysj0wrfz069rpvbqqimphqll3912q4bvdlz6vrjp"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -20899,6 +21030,34 @@ while only declaring the test-specific fields.")
      as Swagger.")
     (license license:expat)))
 
+(define-public python-apispec-webframeworks
+  (package
+    (name "python-apispec-webframeworks")
+    (version "0.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "apispec-webframeworks" version))
+              (sha256
+               (base32
+                "1wyw30402xq2a8icrsjmy9v43jyvawcjd85ccb2zicqlg4k5pcqd"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-apispec))
+    (native-inputs
+     (list python-bottle
+           python-flake8
+           python-flake8-bugbear
+           python-flask
+           python-mock
+           python-pre-commit
+           python-pytest
+           python-tornado
+           python-tox))
+    (home-page "https://github.com/marshmallow-code/apispec-webframeworks")
+    (synopsis "Web framework plugins for apispec")
+    (description "This package provides plugins for using @code{apispec} with
+web frameworks.")
+    (license license:expat)))
+
 (define-public python-flasgger
   (package
     (name "python-flasgger")
@@ -25542,7 +25701,7 @@ scripts to load entry points more quickly.")
 (define-public python-funcparserlib
   (package
     (name "python-funcparserlib")
-    (version "1.0.0")
+    (version "1.0.1")
     (source
       (origin
         ;; Source tarball on PyPi lacks tests.
@@ -25552,7 +25711,7 @@ scripts to load entry points more quickly.")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "00pswdys5c4hpqpvfcy5zqv30gyjvjvagi12811jizw57hxrm1cs"))))
+         (base32 "0dw3i4fyf3j9h1l7xfgs99fc2w2axk6xqk0sdag43k444ss4hkrc"))))
     (build-system pyproject-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9cf57a325a..c0eae1d57a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -225,7 +225,7 @@ a focus on simplicity and productivity.")
 (define-public ruby-3.1
   (package
     (inherit ruby-3.0)
-    (version "3.1.2")
+    (version "3.1.3")
     (source
      (origin
        (method url-fetch)
@@ -234,7 +234,7 @@ a focus on simplicity and productivity.")
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "0amzqczgvr51ilcqfgw0n41hrfanzi0wh8k6am3x5dm1z0bx046a"))))))
+         "06ipqz45qcs0y1273gk2gwslxwd7jgighz3mzbddzg16k29n3qaf"))))))
 
 (define-public ruby ruby-2.7)
 
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 9c8c1ba4d4..20a1ebd4aa 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it>
 ;;; Copyright © 2022 ( <paren@disroot.org>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2325,3 +2326,27 @@ let handle = &mut _stdout.lock();")))))))
 track of the directories you use most frequently, and uses a ranking algorithm
 to navigate to the best match.")
     (license license:expat)))
+
+(define-public htmlq
+  (package
+    (name "htmlq")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "htmlq" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0912cdkz5xji1hzfj1cf42zh1kd860b52xmwwhb7q2jhp6qk25jh"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-clap" ,rust-clap-2)
+         ("rust-html5ever" ,rust-html5ever-0.25)
+         ("rust-kuchiki" ,rust-kuchiki-0.8)
+         ("rust-lazy-static" ,rust-lazy-static-1)
+         ("rust-url" ,rust-url-2))))
+    (home-page "https://github.com/mgdm/htmlq")
+    (synopsis "Like jq, but for HTML")
+    (description "Extract content from HTML files using CSS selectors.")
+    (license license:expat)))
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index cc34f0a0a0..b607060716 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -540,14 +540,14 @@ ksh, and tcsh.")
 (define-public xonsh
   (package
     (name "xonsh")
-    (version "0.13.3")
+    (version "0.13.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "xonsh" version))
         (sha256
           (base32
-           "154s4lbda3n8kamiyblfrv8isn3hnqyxw2k99qicyfll02chpjzl"))
+           "19r1g8i8k6ds7ncvqdh58vkm4m5hz4w9zbglmg1mi7xcdqp4ax8h"))
         (modules '((guix build utils)))
         (snippet
          #~(begin
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
index 7e8d444b7d..71cc923a3a 100644
--- a/gnu/packages/sqlite.scm
+++ b/gnu/packages/sqlite.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -113,10 +114,10 @@ is in the public domain.")
 (define-public sqlite-next
   (package
     (inherit sqlite)
-    (version "3.39.3")
+    (version "3.40.0")
     (source (origin
               (method url-fetch)
               (uri (sqlite-uri version 2022))
               (sha256
                (base32
-                "1f922kq16g7f4h3gpzim78lvrp5xw9nvlvqw97s2qgxyh8qgns3q"))))))
+                "1rw0i63822pdkb3a16sqj4jdcp5zg0ffjmi26mshqw6jfqh5acq3"))))))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 13feedbb2e..302b351fbb 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -67,6 +67,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libcanberra)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linphone)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages multiprecision)
@@ -79,6 +80,8 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages samba)
+  #:use-module (gnu packages security-token)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages speech)
   #:use-module (gnu packages tls)
@@ -926,3 +929,104 @@ gateway.  It implements the STUN (Session Traversal Utilities for NAT) and
 TURN (Traversal Using Relays around NAT) server protocols.")
     (home-page "https://github.com/coturn/coturn")
     (license license:bsd-3)))
+
+(define-public libosmocore
+  (package
+    (name "libosmocore")
+    (version "1.7.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitea.osmocom.org/osmocom/libosmocore.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "147ld3xwb9k6vb56hk8q8jkcb5ahxl66v87vdhazb6rxj3frsjqf"))))
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'patch-bin-sh
+                          (lambda _
+                            (substitute* '("git-version-gen" "src/exec.c")
+                              (("/bin/sh")
+                               (which "sh"))))))))
+    (inputs (list gnutls
+                  libmnl
+                  libusb
+                  lksctp-tools
+                  pcsc-lite
+                  talloc))
+    (native-inputs (list autoconf
+                         automake
+                         coreutils
+                         doxygen
+                         libtool
+                         pkg-config
+                         python))
+    (build-system gnu-build-system)
+    (synopsis "Libraries for sharing common code between osmocom projects")
+    (description
+     "Libosmocore includes several libraries:
+@itemize
+@item libosmocore: general-purpose functions
+@item libosmovty: interactive VTY command-line interface
+@item libosmogsm: definitions and helper code related to GSM protocols
+@item libosmoctrl: shared implementation of the Osmocom control interface
+@item libosmogb: implementation of the Gb interface with its NS/BSSGP protocols
+@item libosmocodec: implementation of GSM voice codecs
+@item libosmocoding: implementation of GSM 05.03 burst transcoding functions
+@item libosmosim: infrastructure to interface with SIM/UICC/USIM cards
+@end itemize")
+    (home-page "https://osmocom.org/projects/libosmocore/wiki/Libosmocore")
+    (license license:gpl2+)))
+
+(define-public xgoldmon
+  ;; There are no releases nor tags.
+  (let ((revision "1")
+        (commit "f2d5372acee4e492f31f6ba8b850cfb48fbbe478"))
+    (package
+      (name "xgoldmon")
+      (version (git-version "1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/2b-as/xgoldmon")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0dvgagqsbwq1sd5qjzk0hd9rxnv2vnmhazvv5mz4pj7v467amgdz"))))
+      (arguments
+       (list #:tests? #f ;no tests
+             #:make-flags #~(list (string-append "CC="
+                                                 #$(cc-for-target)))
+             #:phases #~(modify-phases %standard-phases
+                          (delete 'configure)
+                          (replace 'install
+                            (lambda _
+                              (let ((bin (string-append #$output "/bin"))
+                                    (doc (string-append #$output "/share/doc")))
+                                (install-file "xgoldmon" bin)
+                                (install-file "README" doc)
+                                (install-file
+                                 "screenshot-mtsms-while-in-a-call.png" doc)))))))
+      (inputs (list libosmocore lksctp-tools talloc))
+      (native-inputs (list pkg-config))
+      (build-system gnu-build-system)
+      (synopsis "Displays cellular network protocol traces in Wireshark")
+      (description
+       "xgoldmon is an utility that converts the USB logging mode
+messages that various Intel/Infineon XGold modems send to the USB port to
+gsmtap.  It then then sends them to a given IP address to enable users
+to view cellular network protocol traces in Wireshark.
+
+It supports the following smartphones:
+@itemize
+@item Samsung Galaxy S4, GT-I9500 variant
+@item Samsung Galaxy SIII, GT-I9300 variant
+@item Samsung Galaxy Nexus, GT-I9250 variant
+@item Samsung Galaxy SII, GT-I9100 variant
+@item Samsung Galaxy Note II, GT-N7100 variant
+@end itemize")
+      (home-page "https://github.com/2b-as/xgoldmon")
+      (license license:gpl2+))))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 2264e3ccb6..151add964e 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -210,11 +210,11 @@ normalization, case-folding, and other operations for data in the UTF-8
 encoding, supporting Unicode version 9.0.0.")
     (license license:expat)))
 
-(define-public utf8proc-2.6.1
+(define-public utf8proc-2.7.0
   (package
     (inherit utf8proc)
     (name "utf8proc")
-    (version "2.6.1")
+    (version "2.7.0")
     (source
      (origin
        (method git-fetch)
@@ -223,7 +223,7 @@ encoding, supporting Unicode version 9.0.0.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
+        (base32 "1wrsmnaigal94gc3xbzdrrm080zjhihjfdla5admllq2w5dladjj"))))
     (arguments
      (substitute-keyword-arguments (package-arguments utf8proc)
        ((#:phases phases)
@@ -239,14 +239,14 @@ encoding, supporting Unicode version 9.0.0.")
     (native-inputs
      (append
       (package-native-inputs utf8proc)
-      (let ((UNICODE_VERSION "13.0.0"))
+      (let ((UNICODE_VERSION "14.0.0"))
         `(("DerivedCoreProperties.txt"
            ,(origin
               (method url-fetch)
               (uri (string-append "https://www.unicode.org/Public/"
                                   UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
               (sha256
-               (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
+               (base32 "1g77s8g9443dd92f82pbkim7rk51s7xdwa3mxpzb1lcw8ryxvvg3"))))
           ;; For tests
           ("ruby" ,ruby)))))))
 
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index f1e844b608..1f40537b6a 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -1002,25 +1002,16 @@ number generator")
     (name "mbedtls-apache")
     ;; XXX Check whether ‘-Wformat-signedness’ still breaks mbedtls-for-hiawatha
     ;; when updating.
-    (version "2.26.0")
+    (version "2.28.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/ARMmbed/mbedtls")
              (commit (string-append "mbedtls-" version))))
-       (sha256
-        (base32 "0scwpmrgvg6q7rvqkc352d2fqlsx0aylcbyibcp1f1rsn8iiif2m"))
        (file-name (git-file-name name version))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Can be removed with the next version.
-           ;; Reduce level of format truncation warnings due to false positives.
-           ;; https://github.com/ARMmbed/mbedtls/commit/2065a8d8af27c6cb1e40c9462b5933336dca7434
-           (substitute* "CMakeLists.txt"
-             (("Wformat-truncation=2") "Wformat-truncation"))
-           #t))))
+       (sha256
+        (base32 "0s37dsi29v7146fi9k4frvx5rz2snxdm6c3rwq2fvnca2r80hfjl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -1030,8 +1021,7 @@ number generator")
        (modify-phases %standard-phases
          (add-after 'unpack 'make-source-writable
            (lambda _
-             (for-each make-file-writable (find-files "."))
-             #t)))))
+             (for-each make-file-writable (find-files ".")))))))
     (native-inputs
      (list perl python))
     (synopsis "Small TLS library")
@@ -1048,6 +1038,26 @@ coding footprint.")
   (hidden-package
    (package
      (inherit mbedtls-apache)
+     (name "mbedtls-apache")
+     (version "2.26.0")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/ARMmbed/mbedtls")
+              (commit (string-append "mbedtls-" version))))
+        (sha256
+         (base32 "0scwpmrgvg6q7rvqkc352d2fqlsx0aylcbyibcp1f1rsn8iiif2m"))
+        (file-name (git-file-name name version))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            ;; Can be removed with the next version.
+            ;; Reduce level of format truncation warnings due to false positives.
+            ;; https://github.com/ARMmbed/mbedtls/commit/2065a8d8af27c6cb1e40c9462b5933336dca7434
+            (substitute* "CMakeLists.txt"
+              (("Wformat-truncation=2") "Wformat-truncation"))
+            #t))))
      (arguments
       (substitute-keyword-arguments (package-arguments mbedtls-apache)
         ((#:phases phases)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 78dbbebec1..4e2c7ff040 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -3161,7 +3161,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "7.8.0")
+    (version "7.12.0")
     (source
      (origin
        (method git-fetch)
@@ -3170,7 +3170,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01589xpx1vgx1l1zjg553nbjks5wy31rdvyq1sjnbp9w7p7nzjdg"))))
+        (base32 "182i6fgn9aiskj62kj10cxf5wh233a241n7qvh0l95il01zmpfb3"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -4820,7 +4820,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public shotcut
   (package
     (name "shotcut")
-    (version "22.10.25")
+    (version "22.11.25")
     (source
      (origin
        (method git-fetch)
@@ -4829,7 +4829,7 @@ transitions, and effects and then export your film to many common formats.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12n179d1ymmzvlx5rzwmd89gwaa731b4y66nfl8wlr88wss4mncm"))))
+        (base32 "01qv0lb57kgmi5shcnhjwf47vqvbyjndxx6v7ha3sh4x5r8x0mrn"))))
     (build-system qt-build-system)
     (arguments
      `(#:tests? #f                      ;there are no tests
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 7bdd84e187..dacb6119ea 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -189,6 +189,7 @@
   #:use-module (gnu packages video)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages wget)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
 
@@ -7766,6 +7767,46 @@ bookmarks directly.  It can also present them in a web interface with
 @command{bukuserver}.")
     (license license:gpl3+)))
 
+(define-public buku-run
+  (package
+    (name "buku-run")
+    (version "0.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/carnager/buku_run")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1zyjjf3b8g3dnymcrg683rbnc6qrvx8ravfm833n7kjrqky3bczn"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f                  ;no tests
+           #:make-flags
+           #~(list (string-append "DESTDIR=" #$output)
+                   "PREFIX=")
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (add-after 'unpack 'fixpath
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "buku_run"
+                     ((" \\<(rofi)\\>" all cmd)
+                      (string-append " " (search-input-file inputs "/bin/rofi")))
+                     (("\\<(buku)\\> " all cmd)
+                      (string-append (search-input-file inputs "/bin/buku") " "))
+                     (("\\<(awk|gawk)\\>" cmd)
+                      (search-input-file inputs "/bin/awk"))
+                     (("/etc/buku_run.config" path)
+                      (string-append #$output path))))))))
+    (inputs (list buku rofi))
+    (home-page "https://github.com/carnager/buku_run")
+    (synopsis "rofi frontend for buku bookmarks manager")
+    (description
+     "This package provides a rofi frontend for the buku bookmark manager.")
+    (license license:gpl3+)))
+
 (define-public anonip
   (package
     (name "anonip")
@@ -7914,7 +7955,7 @@ solution for any project's interface needs:
 (define-public gmid
   (package
     (name "gmid")
-    (version "1.8.5")
+    (version "1.8.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7922,7 +7963,7 @@ solution for any project's interface needs:
                     version "/gmid-" version ".tar.gz"))
               (sha256
                (base32
-                "0p3wr3ic4c50wxi7sr1hi8m8izmmjnazcmyqvxaf56yx58b3gpxv"))))
+                "1j0bgnixffz2lv5xgp5c88hl146c1vyk1988gyd70mhgyl9700jy"))))
     (build-system gnu-build-system)
     (arguments
      (list #:test-target "regress"
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 149ea1bb69..d3a7716c23 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -1055,7 +1055,7 @@ experience.")
 (define-public fnott
   (package
     (name "fnott")
-    (version "1.2.1")
+    (version "1.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1064,7 +1064,7 @@ experience.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1770p5hfswbaa15zmjh10n7fskch00d3y03ij3gfb1v4q314nb9n"))))
+                "00zg03nz79kqcsnwmm22friawhvl05f93yxpvqmy5wvggx9hrlz8"))))
     (build-system meson-build-system)
     (arguments `(#:build-type "release"))
     (native-inputs
@@ -3033,3 +3033,35 @@ notable features include:
 @item Can place borders around windows
 @end itemize")
       (license license:expat))))
+
+(define-public velox
+  (let ((commit "fcc041265539befd907a64ee3a536cb2489ffb99")
+        (revision "1"))
+    (package
+      (name "velox")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/michaelforney/velox")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0d11bmag5zwmas3rf1b7x5hjla7wpxq70nr86dz3x9r7cal04mym"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f ;no tests
+         #:make-flags (list (string-append "CC="
+                                           ,(cc-for-target))
+                            (string-append "PREFIX=" %output))
+         #:phases (modify-phases %standard-phases
+                    (delete 'configure))))
+      (inputs (list libinput libxkbcommon wayland wld))
+      (propagated-inputs (list swc))
+      (native-inputs (list pkg-config))
+      (home-page "https://github.com/michaelforney/velox")
+      (synopsis "Simple window manager based on swc")
+      (description "velox is a simple window manager for Wayland based on swc.
+It is inspired by dwm and xmonad.")
+      (license license:expat))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 9cc7cc652a..5c4fd79091 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -3169,14 +3169,16 @@ if there's more than one.")
 (define-public xkbset
   (package
     (name "xkbset")
-    (version "0.6")
+    (version "0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://faculty.missouri.edu/~stephen/software/"
-                           name "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stephenmontgomerysmith/xkbset")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "199mlm127zk1lr8nrq22n68l2l8cjwc4cgwd67rg1i6497n2y0xc"))))
+        (base32 "1xa6sgvnwynl2qrjnsppvb2vg4p5v1pisrfhrmnlymw1fzhh6s9p"))))
     (build-system gnu-build-system)
     (inputs
      (list libx11 perl perl-tk))
@@ -3209,7 +3211,7 @@ if there's more than one.")
                            (string-append (assoc-ref outputs "out")
                                           "/share/doc/" ,name "-" ,version))
              #t)))))
-    (home-page "https://faculty.missouri.edu/~stephen/software/")
+    (home-page "https://stephenmontgomerysmith.github.io/software/#xkbset")
     (synopsis "User-preference utility for XKB extensions for X")
     (description
      "This is a program to help manage many of the XKB features of the X Window
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 370696a55e..ba59e46155 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -2016,7 +2016,9 @@ raise a deprecation warning if the 'compression-level' field was used."
 
 (define %guix-publish-log-rotations
   (list (log-rotation
-         (files (list "/var/log/guix-publish.log")))))
+         (files (list "/var/log/guix-publish.log"))
+         (options `("rotate 4"                    ;don't keep too many of them
+                    ,@%default-log-rotation-options)))))
 
 (define (guix-publish-activation config)
   (let ((cache (guix-publish-configuration-cache config)))
diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index dacfc52ba9..10cb933ed1 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -249,7 +249,7 @@ does not have a default value" field kind)))
                        #'(field ...)
                        #'(field-getter ...)
                        #'(field-default ...))
-               (%location #,(id #'stem #'stem #'-location)
+               (%location #,(id #'stem #'stem #'-source-location)
                           (default (and=> (current-source-location)
                                           source-properties->location))
                           (innate)))
@@ -436,7 +436,11 @@ the list result in @code{#t} when applying PRED? on them."
 (define list-of-strings?
   (list-of string?))
 
-(define alist? list?)
+(define alist?
+  (match-lambda
+    (() #t)
+    ((head . tail) (and (pair? head) (alist? tail)))
+    (_ #f)))
 
 (define serialize-file-like empty-serializer)
 
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index d7c6ab9877..43b0e0946e 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -302,8 +302,13 @@
 (define (cuirass-log-rotations config)
   "Return the list of log rotations that corresponds to CONFIG."
   (list (log-rotation
-         (files (list (cuirass-configuration-log-file config)
-                      (cuirass-configuration-web-log-file config)))
+         (files (append (list (cuirass-configuration-log-file config)
+                              (cuirass-configuration-web-log-file config))
+                        (let ((server
+                               (cuirass-configuration-remote-server config)))
+                          (if server
+                              (list (cuirass-remote-server-log-file server))
+                              '()))))
          (frequency 'weekly)
          (options `("rotate 40"                   ;worth keeping
                     ,@%default-log-rotation-options)))))
@@ -394,12 +399,21 @@ CONFIG."
                     #:log-file #$log-file))
            (stop #~(make-kill-destructor))))))
 
+(define (cuirass-remote-worker-log-rotations config)
+  "Return the list of log rotations that corresponds to CONFIG."
+  (list (log-rotation
+         (files (list (cuirass-remote-worker-log-file config)))
+         (frequency 'weekly)
+         (options `("rotate 4"                    ;don't keep too many of them
+                    ,@%default-log-rotation-options)))))
+
 (define cuirass-remote-worker-service-type
   (service-type
    (name 'cuirass-remote-worker)
    (extensions
-    (list
-     (service-extension shepherd-root-service-type
-                        cuirass-remote-worker-shepherd-service)))
+    (list (service-extension shepherd-root-service-type
+                             cuirass-remote-worker-shepherd-service)
+          (service-extension rottlog-service-type
+                             cuirass-remote-worker-log-rotations)))
    (description
     "Run the Cuirass remote build worker service.")))
diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm
index d6dc2c1e03..9a88351566 100644
--- a/gnu/services/monitoring.scm
+++ b/gnu/services/monitoring.scm
@@ -224,15 +224,12 @@ Prometheus.")
 
 
 (define (serialize-string field-name val)
-  (if (and (string? val) (string=? val ""))
+  (if (or (eq? 'user field-name)
+          (eq? 'group field-name)
+          (and (string? val) (string=? val "")))
       ""
       (serialize-field field-name val)))
 
-(define group? string?)
-
-(define serialize-group
-  (const ""))
-
 (define include-files? list?)
 
 (define (serialize-include-files field-name val)
@@ -256,8 +253,8 @@ Prometheus.")
   (user
    (string "zabbix")
    "User who will run the Zabbix server.")
-  (group ;for zabbix-server-account procedure
-   (group "zabbix")
+  (group
+   (string "zabbix")
    "Group who will run the Zabbix server.")
   (db-host
    (string "127.0.0.1")
@@ -438,7 +435,7 @@ results in a Web interface.")))
    (string "zabbix")
    "User who will run the Zabbix agent.")
   (group
-   (group "zabbix")
+   (string "zabbix")
    "Group who will run the Zabbix agent.")
   (hostname
    (string "")
@@ -516,6 +513,18 @@ configuration file."))
            (format port #$(serialize-configuration
                            config zabbix-agent-configuration-fields)))))))
 
+(define (zabbix-agent-arguments config)
+  #~(let* ((config-file #$(zabbix-agent-config-file config))
+           (agent #$(zabbix-agent-configuration-zabbix-agent config))
+           (agent2? (file-exists? (string-append agent "/sbin/zabbix_agent2"))))
+      (if agent2?
+          (list (string-append agent "/sbin/zabbix_agent2")
+                "-config" config-file
+                "-foreground")
+          (list (string-append agent "/sbin/zabbix_agentd")
+                "--config" config-file
+                "--foreground"))))
+
 (define (zabbix-agent-shepherd-service config)
   "Return a <shepherd-service> for Zabbix agent with CONFIG."
   (list (shepherd-service
@@ -523,10 +532,7 @@ configuration file."))
          (requirement '(user-processes))
          (documentation "Run Zabbix agent daemon.")
          (start #~(make-forkexec-constructor
-                   (list #$(file-append (zabbix-agent-configuration-zabbix-agent config)
-                                        "/sbin/zabbix_agentd")
-                         "--config" #$(zabbix-agent-config-file config)
-                         "--foreground")
+                   #$(zabbix-agent-arguments config)
                    #:user #$(zabbix-agent-configuration-user config)
                    #:group #$(zabbix-agent-configuration-group config)
                    #:pid-file #$(zabbix-agent-configuration-pid-file config)
diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm
index def381987b..7b3bb8903c 100644
--- a/gnu/services/vpn.scm
+++ b/gnu/services/vpn.scm
@@ -833,7 +833,7 @@ PostUp = ~a set %i private-key ~a
 
 (define (wireguard-activation config)
   (match-record config <wireguard-configuration>
-    (private-key)
+    (private-key wireguard)
     #~(begin
         (use-modules (guix build utils)
                      (ice-9 popen)
@@ -842,7 +842,7 @@ PostUp = ~a set %i private-key ~a
         (unless (file-exists? #$private-key)
           (let* ((pipe
                   (open-input-pipe (string-append
-                                    #$(file-append wireguard-tools "/bin/wg")
+                                    #$(file-append wireguard "/bin/wg")
                                     " genkey")))
                  (key (read-line pipe)))
             (call-with-output-file #$private-key
diff --git a/gnu/system.scm b/gnu/system.scm
index 3478afcec4..62c8e0c2b6 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -38,6 +38,7 @@
   #:use-module (guix gexp)
   #:use-module (guix records)
   #:use-module (guix packages)
+  #:use-module (guix deprecation)
   #:use-module (guix derivations)
   #:use-module (guix profiles)
   #:use-module ((guix utils) #:select (substitute-keyword-arguments))
@@ -49,9 +50,6 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
-  #:use-module (gnu packages cryptsetup)
-  #:use-module (gnu packages disk)
-  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages firmware)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages guile)
@@ -858,6 +856,8 @@ of PROVENANCE-SERVICE-TYPE to its services."
  (cons* procps psmisc which
         (@ (gnu packages admin) shadow-with-man-pages) ;for 'passwd'
 
+        e2fsprogs                 ;for lsattr, chattr, etc.
+
         guile-3.0-latest
 
         ;; The packages below are also in %FINAL-INPUTS, so take them from
@@ -896,20 +896,7 @@ of PROVENANCE-SERVICE-TYPE to its services."
         ;; many people are familiar with, so keep it around.
         iw wireless-tools))
 
-(define %base-packages-disk-utilities
-  ;; A well-rounded set of packages for interacting with disks,
-  ;; partitions and filesystems, included with the Guix installation
-  ;; image.
-  (list parted gptfdisk ddrescue
-        ;; We used to provide fdisk from GNU fdisk, but as of version 2.0.0a
-        ;; it pulls Guile 1.8, which takes unreasonable space; furthermore
-        ;; util-linux's fdisk is already available, in %base-packages-linux.
-        cryptsetup mdadm
-        dosfstools
-        btrfs-progs
-        f2fs-tools
-        jfsutils
-        xfsprogs))
+(define-deprecated %base-packages-disk-utilities #f '())
 
 (define %base-packages
   ;; Default set of packages globally visible.  It should include anything
diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
index 7bcac8ded0..8c47c650f6 100644
--- a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
+++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
@@ -21,9 +21,6 @@
                      raspberry-pi
                      ssh)
 
-(define %my-public-key
-  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
-
 (define-public raspberry-pi-64-nfs-root
   (operating-system
     (host-name "raspberrypi-guix")
@@ -66,9 +63,7 @@
                      (service ntp-service-type)
                      (service openssh-service-type
                               (openssh-configuration
-                               (x11-forwarding? #t)
-                               (authorized-keys
-                                `(("pi" ,%my-public-key)))))
+                               (x11-forwarding? #t)))
                      %base-services))
     (name-service-switch %mdns-host-lookup-nss)))
 
diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl
index 7d2638dd80..3ad588207c 100644
--- a/gnu/system/examples/raspberry-pi-64.tmpl
+++ b/gnu/system/examples/raspberry-pi-64.tmpl
@@ -20,9 +20,6 @@
                      raspberry-pi
                      ssh)
 
-(define %my-public-key
-  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
-
 (define-public raspberry-pi-64
   (operating-system
     (host-name "raspberrypi-guix")
@@ -70,9 +67,7 @@
                      (service ntp-service-type)
                      (service openssh-service-type
                               (openssh-configuration
-                               (x11-forwarding? #t)
-                               (authorized-keys
-                                `(("pi" ,%my-public-key)))))
+                               (x11-forwarding? #t)))
                      %base-services))
     (name-service-switch %mdns-host-lookup-nss)))
 
diff --git a/gnu/system/images/pine64.scm b/gnu/system/images/pine64.scm
index a2d471b802..3feb69764d 100644
--- a/gnu/system/images/pine64.scm
+++ b/gnu/system/images/pine64.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2022 Gabriel Wicki <gabriel@erlikon.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +22,11 @@
   #:use-module (gnu bootloader u-boot)
   #:use-module (gnu image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages certs)
   #:use-module (guix platforms arm)
   #:use-module (gnu services)
   #:use-module (gnu services base)
+  #:use-module (gnu services networking)
   #:use-module (gnu system)
   #:use-module (gnu system file-systems)
   #:use-module (gnu system image)
@@ -47,13 +50,17 @@
                           (mount-point "/")
                           (type "ext4"))
                         %base-file-systems))
-    (services (cons (service agetty-service-type
-                             (agetty-configuration
-                              (extra-options '("-L")) ; no carrier detect
-                              (baud-rate "115200")
-                              (term "vt100")
-                              (tty "ttyS0")))
-                    %base-services))))
+    (services (cons*
+               (service agetty-service-type
+                        (agetty-configuration
+                         (extra-options '("-L")) ; no carrier detect
+                         (baud-rate "115200")
+                         (term "vt100")
+                         (tty "ttyS0")))
+               (service dhcp-client-service-type)
+               (service ntp-service-type)
+               %base-services))
+    (packages (cons nss-certs %base-packages))))
 
 (define pine64-image-type
   (image-type
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 003c49a3e7..f6f1923121 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -48,6 +48,9 @@
   #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cryptsetup)
+  #:use-module (gnu packages disk)
+  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages guile)
@@ -458,6 +461,21 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
 \x1b[1;33mUse Alt-F2 for documentation.\x1b[0m
 ")
 
+(define %installer-disk-utilities
+  ;; A well-rounded set of packages for interacting with disks, partitions and
+  ;; file systems, included with the Guix installation image.
+  (list parted gptfdisk ddrescue
+        ;; We used to provide fdisk from GNU fdisk, but as of version 2.0.0a
+        ;; it pulls Guile 1.8, which takes unreasonable space; furthermore
+        ;; util-linux's fdisk is already available, in %base-packages-linux.
+        cryptsetup mdadm
+        dosfstools
+        btrfs-progs
+        e2fsprogs
+        f2fs-tools
+        jfsutils
+        xfsprogs))
+
 (define installation-os
   ;; The operating system used on installation images for USB sticks etc.
   (operating-system
@@ -530,7 +548,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
                       font-dejavu font-gnu-unifont
                       grub          ; mostly so xrefs to its manual work
                       nss-certs)    ; To access HTTPS, use git, etc.
-                %base-packages-disk-utilities
+                %installer-disk-utilities
                 %base-packages))))
 
 (define* (os-with-u-boot os board #:key (bootloader-target "/dev/mmcblk0")
diff --git a/gnu/tests/gdm.scm b/gnu/tests/gdm.scm
new file mode 100644
index 0000000000..70a86b9065
--- /dev/null
+++ b/gnu/tests/gdm.scm
@@ -0,0 +1,127 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu>.
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests gdm)
+  #:use-module (gnu tests)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu services)
+  #:use-module (gnu services desktop)
+  #:use-module (gnu services xorg)
+  #:use-module (gnu system)
+  #:use-module (gnu system file-systems)
+  #:use-module (gnu system vm)
+  #:use-module (guix gexp)
+  #:use-module (ice-9 format)
+  #:export (%test-gdm-x11
+            %test-gdm-wayland
+            %test-gdm-wayland-tmpfs))
+
+(define* (make-os #:key wayland? tmp-tmpfs?)
+  (operating-system
+    (inherit %simple-os)
+    (services
+     (modify-services %desktop-services
+       (gdm-service-type config => (gdm-configuration
+                                    (inherit config)
+                                    (wayland? wayland?)))))
+    (file-systems (if tmp-tmpfs? (cons (file-system
+                                         (mount-point "/tmp")
+                                         (device "none")
+                                         (type "tmpfs")
+                                         (flags '(no-dev no-suid))
+                                         (check? #f))
+                                       %base-file-systems)
+                      %base-file-systems))))
+
+(define* (run-gdm-test #:key wayland? tmp-tmpfs?)
+  "Run tests in a vm which has gdm running."
+  (define os
+    (marionette-operating-system
+     (make-os #:wayland? wayland? #:tmp-tmpfs? tmp-tmpfs?)
+     #:imported-modules '((gnu services herd))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (memory-size 1024)))
+
+  (define name (format #f "gdm-~:[x11~;wayland~]~:[~;-tmpfs~]" wayland? tmp-tmpfs?))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (gnu build marionette)
+                       (ice-9 format)
+                       (srfi srfi-64))
+
+          (let* ((marionette (make-marionette (list #$vm)))
+                 (expected-session-type #$(if wayland? "wayland" "x11")))
+
+            (test-runner-current (system-test-runner #$output))
+            (test-begin #$name)
+
+            ;; service for gdm is called xorg-server
+            (test-assert "service is running"
+              (marionette-eval
+               '(begin
+                  (use-modules (gnu services herd))
+                  (start-service 'xorg-server))
+               marionette))
+
+            (test-assert "gdm ready"
+              (wait-for-file "/var/run/gdm/gdm.pid" marionette))
+
+            (test-equal (string-append "session-type is " expected-session-type)
+              expected-session-type
+              (marionette-eval
+               '(begin
+                  (use-modules (ice-9 popen)
+                               (ice-9 rdelim))
+
+                  (let* ((loginctl #$(file-append elogind "/bin/loginctl"))
+                         (get-session-cmd (string-join `(,loginctl "show-user" "gdm"
+                                                                   "--property Display" "--value")))
+                         (session (call-with-port (open-input-pipe get-session-cmd) read-line))
+                         (get-type-cmd (string-join `(,loginctl "show-session" ,session
+                                                                "--property Type" "--value")))
+                         (type (call-with-port (open-input-pipe get-type-cmd) read-line)))
+                    type))
+               marionette))
+
+            (test-end)))))
+
+  (gexp->derivation (string-append name "-test") test))
+
+(define %test-gdm-x11
+  (system-test
+   (name "gdm-x11")
+   (description "Basic tests for the GDM service. (X11)")
+   (value (run-gdm-test))))
+
+(define %test-gdm-wayland
+  (system-test
+   (name "gdm-wayland")
+   (description "Basic tests for the GDM service. (Wayland)")
+   (value (run-gdm-test #:wayland? #t))))
+
+(define %test-gdm-wayland-tmpfs
+  (system-test
+   ;; See <https://issues.guix.gnu.org/57589>.
+   (name "gdm-wayland-tmpfs")
+   (description "Basic tests for the GDM service. (Wayland, /tmp as tmpfs)")
+   (value (run-gdm-test #:wayland? #t #:tmp-tmpfs? #t))))
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 30a9026d5f..4e0e274e66 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -471,8 +471,6 @@ reboot\n")
     (mlet* %store-monad ((images (run-install
                                   %minimal-os-on-vda
                                   %minimal-os-on-vda-source
-                                  #:packages
-                                  (list e2fsprogs)
                                   #:script
                                   %simple-installation-script-for-/dev/vda
                                   #:installation-image-type