summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/home/services.scm53
-rw-r--r--gnu/home/services/shells.scm162
-rw-r--r--gnu/installer/services.scm19
-rw-r--r--gnu/local.mk21
-rw-r--r--gnu/packages/admin.scm135
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/assembly.scm31
-rw-r--r--gnu/packages/astronomy.scm403
-rw-r--r--gnu/packages/audio.scm61
-rw-r--r--gnu/packages/backup.scm6
-rw-r--r--gnu/packages/bash.scm19
-rw-r--r--gnu/packages/bioconductor.scm309
-rw-r--r--gnu/packages/bioinformatics.scm372
-rw-r--r--gnu/packages/bittorrent.scm83
-rw-r--r--gnu/packages/bootloaders.scm13
-rw-r--r--gnu/packages/bootstrap.scm1
-rw-r--r--gnu/packages/build-tools.scm6
-rw-r--r--gnu/packages/cdrom.scm4
-rw-r--r--gnu/packages/check.scm150
-rw-r--r--gnu/packages/cinnamon.scm1
-rw-r--r--gnu/packages/compression.scm8
-rw-r--r--gnu/packages/containers.scm2
-rw-r--r--gnu/packages/cpp.scm182
-rw-r--r--gnu/packages/cran.scm964
-rw-r--r--gnu/packages/crates-io.scm6
-rw-r--r--gnu/packages/crypto.scm1
-rw-r--r--gnu/packages/cups.scm39
-rw-r--r--gnu/packages/databases.scm21
-rw-r--r--gnu/packages/debian.scm103
-rw-r--r--gnu/packages/debug.scm6
-rw-r--r--gnu/packages/dezyne.scm5
-rw-r--r--gnu/packages/disk.scm39
-rw-r--r--gnu/packages/display-managers.scm5
-rw-r--r--gnu/packages/distributed.scm26
-rw-r--r--gnu/packages/dns.scm72
-rw-r--r--gnu/packages/emacs-xyz.scm610
-rw-r--r--gnu/packages/emacs.scm4
-rw-r--r--gnu/packages/engineering.scm12
-rw-r--r--gnu/packages/erlang.scm4
-rw-r--r--gnu/packages/file-systems.scm4
-rw-r--r--gnu/packages/finance.scm20
-rw-r--r--gnu/packages/firmware.scm94
-rw-r--r--gnu/packages/fonts.scm94
-rw-r--r--gnu/packages/fpga.scm4
-rw-r--r--gnu/packages/freedesktop.scm22
-rw-r--r--gnu/packages/game-development.scm7
-rw-r--r--gnu/packages/games.scm170
-rw-r--r--gnu/packages/gcc.scm5
-rw-r--r--gnu/packages/geo.scm113
-rw-r--r--gnu/packages/gnome-xyz.scm56
-rw-r--r--gnu/packages/gnome.scm48
-rw-r--r--gnu/packages/gnuzilla.scm20
-rw-r--r--gnu/packages/golang.scm278
-rw-r--r--gnu/packages/gps.scm3
-rw-r--r--gnu/packages/graph.scm15
-rw-r--r--gnu/packages/graphics.scm42
-rw-r--r--gnu/packages/groff.scm49
-rw-r--r--gnu/packages/guile-xyz.scm65
-rw-r--r--gnu/packages/hardware.scm40
-rw-r--r--gnu/packages/haskell-apps.scm4
-rw-r--r--gnu/packages/haskell-check.scm24
-rw-r--r--gnu/packages/haskell-xyz.scm451
-rw-r--r--gnu/packages/hunspell.scm2
-rw-r--r--gnu/packages/image-processing.scm53
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/instrumentation.scm65
-rw-r--r--gnu/packages/irc.scm7
-rw-r--r--gnu/packages/java.scm31
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/kde-frameworks.scm4
-rw-r--r--gnu/packages/kde-plasma.scm4
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/libreoffice.scm4
-rw-r--r--gnu/packages/linux.scm193
-rw-r--r--gnu/packages/lisp-check.scm45
-rw-r--r--gnu/packages/lisp-xyz.scm50
-rw-r--r--gnu/packages/lisp.scm14
-rw-r--r--gnu/packages/llvm.scm9
-rw-r--r--gnu/packages/machine-learning.scm133
-rw-r--r--gnu/packages/mail.scm211
-rw-r--r--gnu/packages/mastodon.scm51
-rw-r--r--gnu/packages/maths.scm23
-rw-r--r--gnu/packages/matrix.scm16
-rw-r--r--gnu/packages/maven.scm25
-rw-r--r--gnu/packages/messaging.scm1
-rw-r--r--gnu/packages/monitoring.scm4
-rw-r--r--gnu/packages/mpd.scm15
-rw-r--r--gnu/packages/mpi.scm4
-rw-r--r--gnu/packages/music.scm162
-rw-r--r--gnu/packages/networking.scm37
-rw-r--r--gnu/packages/package-management.scm28
-rw-r--r--gnu/packages/pantheon.scm25
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/password-utils.scm47
-rw-r--r--gnu/packages/patches/dezyne-add-missing-shebangs.patch61
-rw-r--r--gnu/packages/patches/dyninst-fix-glibc-compatibility.patch33
-rw-r--r--gnu/packages/patches/fuzzylite-relative-path-in-tests.patch15
-rw-r--r--gnu/packages/patches/fuzzylite-soften-float-equality.patch30
-rw-r--r--gnu/packages/patches/fuzzylite-use-catch2.patch184
-rw-r--r--gnu/packages/patches/git-header-cmd.patch287
-rw-r--r--gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch505
-rw-r--r--gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch72
-rw-r--r--gnu/packages/patches/lightdm-vnc-ipv6.patch48
-rw-r--r--gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch29
-rw-r--r--gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch15
-rw-r--r--gnu/packages/patches/maven-generate-component-xml.patch3
-rw-r--r--gnu/packages/patches/maven-generate-javax-inject-named.patch3
-rw-r--r--gnu/packages/patches/nix-dont-build-html-doc.diff33
-rw-r--r--gnu/packages/patches/openrgb-unbundle-hueplusplus.patch10
-rw-r--r--gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch89
-rw-r--r--gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch16
-rw-r--r--gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch79
-rw-r--r--gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch33
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch26
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch70
-rw-r--r--gnu/packages/patches/ruby-nokogiri.patch29
-rw-r--r--gnu/packages/patches/vcmi-disable-privacy-breach.patch21
-rw-r--r--gnu/packages/patchutils.scm4
-rw-r--r--gnu/packages/pdf.scm6
-rw-r--r--gnu/packages/photo.scm13
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/plan9.scm113
-rw-r--r--gnu/packages/potassco.scm27
-rw-r--r--gnu/packages/pretty-print.scm34
-rw-r--r--gnu/packages/protobuf.scm78
-rw-r--r--gnu/packages/python-check.scm21
-rw-r--r--gnu/packages/python-compression.scm8
-rw-r--r--gnu/packages/python-science.scm166
-rw-r--r--gnu/packages/python-web.scm48
-rw-r--r--gnu/packages/python-xyz.scm312
-rw-r--r--gnu/packages/radio.scm12
-rw-r--r--gnu/packages/rails.scm60
-rw-r--r--gnu/packages/rocm.scm101
-rw-r--r--gnu/packages/ruby.scm2382
-rw-r--r--gnu/packages/scheme.scm6
-rw-r--r--gnu/packages/serialization.scm59
-rw-r--r--gnu/packages/shellutils.scm39
-rw-r--r--gnu/packages/simulation.scm398
-rw-r--r--gnu/packages/ssh.scm4
-rw-r--r--gnu/packages/statistics.scm317
-rw-r--r--gnu/packages/sync.scm28
-rw-r--r--gnu/packages/terminals.scm16
-rw-r--r--gnu/packages/text-editors.scm16
-rw-r--r--gnu/packages/tls.scm15
-rw-r--r--gnu/packages/toolkits.scm62
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/tree-sitter.scm65
-rw-r--r--gnu/packages/version-control.scm11
-rw-r--r--gnu/packages/video.scm55
-rw-r--r--gnu/packages/vim.scm18
-rw-r--r--gnu/packages/virtualization.scm97
-rw-r--r--gnu/packages/web-browsers.scm73
-rw-r--r--gnu/packages/web.scm188
-rw-r--r--gnu/packages/webkit.scm7
-rw-r--r--gnu/packages/wm.scm63
-rw-r--r--gnu/packages/xdisorg.scm105
-rw-r--r--gnu/packages/xml.scm4
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm2
-rw-r--r--gnu/services/cgit.scm5
-rw-r--r--gnu/services/desktop.scm15
-rw-r--r--gnu/services/dict.scm15
-rw-r--r--gnu/services/shepherd.scm18
-rw-r--r--gnu/services/virtualization.scm1
-rw-r--r--gnu/services/web.scm8
-rw-r--r--gnu/system/image.scm3
-rw-r--r--gnu/system/linux-container.scm13
-rw-r--r--gnu/tests/image.scm23
-rw-r--r--gnu/tests/lightdm.scm6
169 files changed, 9745 insertions, 3967 deletions
diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index b17a34d19d..042eba4780 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -53,6 +53,7 @@
             literal-string?
             literal-string-value
 
+            with-shell-quotation-bindings
             environment-variable-shell-definitions
             home-files-directory
             xdg-configuration-files-directory
@@ -183,11 +184,10 @@ configuration files that the user has declared in their
   literal-string?
   (str literal-string-value))
 
-(define (environment-variable-shell-definitions variables)
-  "Return a gexp that evaluates to a list of POSIX shell statements defining
-VARIABLES, a list of environment variable name/value pairs.  The returned code
-ensures variable values are properly quoted."
-  #~(let* ((quote-string
+(define (with-shell-quotation-bindings exp)
+  "Insert EXP, a gexp, in a lexical environment providing the
+'shell-single-quote' and 'shell-double-quote' bindings."
+#~(let* ((quote-string
             (lambda (value quoted-chars)
               (list->string (string-fold-right
                              (lambda (chr lst)
@@ -206,24 +206,31 @@ ensures variable values are properly quoted."
               ;; Single-quote VALUE to enter a literal string.
               (string-append "'" (quote-string value '(#\'))
                              "'"))))
-      (string-append
-       #$@(map (match-lambda
-                 ((key . #f)
-                  "")
-                 ((key . #t)
-                  #~(string-append "export " #$key "\n"))
-                 ((key . (or (? string? value)
-                             (? file-like? value)
-                             (? gexp? value)))
-                  #~(string-append "export " #$key "="
-                                   (shell-double-quote #$value)
-                                   "\n"))
-                 ((key . (? literal-string? value))
-                  #~(string-append "export " #$key "="
-                                   (shell-single-quote
-                                    #$(literal-string-value value))
-                                   "\n")))
-               variables))))
+      #$exp))
+
+(define (environment-variable-shell-definitions variables)
+  "Return a gexp that evaluates to a list of POSIX shell statements defining
+VARIABLES, a list of environment variable name/value pairs.  The returned code
+ensures variable values are properly quoted."
+  (with-shell-quotation-bindings
+   #~(string-append
+      #$@(map (match-lambda
+                ((key . #f)
+                 "")
+                ((key . #t)
+                 #~(string-append "export " #$key "\n"))
+                ((key . (or (? string? value)
+                            (? file-like? value)
+                            (? gexp? value)))
+                 #~(string-append "export " #$key "="
+                                  (shell-double-quote #$value)
+                                  "\n"))
+                ((key . (? literal-string? value))
+                 #~(string-append "export " #$key "="
+                                  (shell-single-quote
+                                   #$(literal-string-value value))
+                                  "\n")))
+              variables))))
 
 (define (environment-variables->setup-environment-script vars)
   "Return a file that can be sourced by a POSIX compliant shell which
diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm
index f05f2221d6..7960590e7c 100644
--- a/gnu/home/services/shells.scm
+++ b/gnu/home/services/shells.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,10 @@
 
             home-fish-service-type
             home-fish-configuration
-            home-fish-extension))
+            home-fish-extension
+
+            home-inputrc-service-type
+            home-inputrc-configuration))
 
 ;;; Commentary:
 ;;;
@@ -309,16 +313,24 @@ source ~/.profile
 ;;;
 
 (define (bash-serialize-aliases field-name val)
-  #~(string-append
-     #$@(map
-         (match-lambda
-           ((key . #f)
-            "")
-           ((key . #t)
-            #~(string-append "alias " #$key "\n"))
-           ((key . value)
-            #~(string-append "alias " #$key "=\"" #$value "\"\n")))
-         val)))
+  (with-shell-quotation-bindings
+   #~(string-append
+      #$@(map
+          (match-lambda
+            ((key . #f)
+             "")
+            ((key . #t)
+             #~(string-append "alias " #$key "\n"))
+            ((key . (? literal-string? value))
+             #~(string-append "alias " #$key "="
+                              (shell-single-quote
+                               #$(literal-string-value value))
+                              "\n"))
+            ((key . value)
+             #~(string-append "alias " #$key "="
+                              (shell-double-quote #$value)
+                              "\n")))
+          val))))
 
 (define-configuration home-bash-configuration
   (package
@@ -626,6 +638,134 @@ end\n\n")
                 (description "\
 Install and configure Fish, the friendly interactive shell.")))
 
+
+;;;
+;;; Readline.
+;;;
+
+(define (serialize-inputrc-key-bindings field-name val)
+  #~(string-append
+     #$@(map
+         (match-lambda
+           ((key . value)
+            #~(string-append #$key ": " #$value "\n")))
+         val)))
+
+(define (serialize-inputrc-variables field-name val)
+  #~(string-append
+     #$@(map
+         (match-lambda
+           ((key . #f)
+            #~(string-append "set " #$key " off\n"))
+           ((key . #t)
+            #~(string-append "set " #$key " on\n"))
+           ((key . value)
+            #~(string-append "set " #$key " " #$value "\n")))
+         val)))
+
+(define (serialize-inputrc-conditional-constructs field-name val)
+  #~(string-append
+     #$@(map
+         (match-lambda
+           (("$endif" . _)
+            "$endif\n")
+           (("$include" . value)
+            #~(string-append "$include " #$value "\n"))
+           ;; TODO: key can only be "$if" or "$else".
+           ((key . value)
+            #~(string-append #$key "\n"
+                             #$(serialize-configuration
+                                 value
+                                 home-inputrc-configuration-fields))))
+         val)))
+
+(define (serialize-inputrc-extra-content field-name value)
+  #~(if (string=? #$value "") "" (string-append #$value "\n")))
+
+(define-configuration home-inputrc-configuration
+  (key-bindings
+   (alist '())
+   "Association list of readline key bindings to be added to the
+@code{~/.inputrc} file.  This is where code like this:
+
+@lisp
+'((\"Control-l\" . \"clear-screen\"))
+@end lisp
+
+turns into
+
+@example
+Control-l: clear-screen
+@end example"
+   (serializer serialize-inputrc-key-bindings))
+  (variables
+   (alist '())
+   "Association list of readline variables to set.  This is where configuration
+options like this:
+
+@lisp
+'((\"bell-style\" . \"visible\")
+  (\"colored-completion-prefix\" . #t))
+@end lisp
+
+turns into
+
+@example
+set bell-style visible
+set colored-completion-prefix on
+@end example"
+   (serializer serialize-inputrc-variables))
+  (conditional-constructs
+   (alist '())
+   "Association list of conditionals to add to the initialization file.  This
+includes @command{$if}, @command{else}, @command{endif} and @command{include}
+and they receive a value of another @command{home-inputrc-configuration}.
+
+@lisp
+(conditional-constructs
+ `((\"$if mode=vi\" .
+     ,(home-inputrc-configuration
+        (variables
+         `((\"show-mode-in-prompt\" . #t)))))
+   (\"$else\" .
+     ,(home-inputrc-configuration
+        (key-bindings
+         `((\"Control-l\" . \"clear-screen\")))))
+   (\"$endif\" . #t)))
+@end lisp
+
+turns into
+
+@example
+$if mode=vi
+set show-mode-in-prompt on
+$else
+Control-l: clear-screen
+$endif
+@end example"
+   (serializer serialize-inputrc-conditional-constructs))
+  (extra-content
+   (string "")
+   "Extra content appended as-is to the configuration file.  Run @command{man
+readline} for more information about all the configuration options."
+   (serializer serialize-inputrc-extra-content)))
+
+(define (home-inputrc-files config)
+  (list
+   `(".inputrc"
+     ,(mixed-text-file "inputrc"
+                       (serialize-configuration
+                         config
+                         home-inputrc-configuration-fields)))))
+
+(define home-inputrc-service-type
+  (service-type (name 'inputrc)
+                (extensions
+                 (list (service-extension home-files-service-type
+                                          home-inputrc-files)))
+                (default-value (home-inputrc-configuration))
+                (description "Configure readline in @code{.inputrc}.")))
+
 
 (define (generate-home-shell-profile-documentation)
   (generate-documentation
diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index d08bab47fd..4dfed78785 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2023 Denys Nykula <vegan@libre.net.ua>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
 (define-module (gnu installer services)
   #:use-module (guix records)
   #:use-module (guix read-print)
+  #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:export (system-service?
             system-service-name
@@ -159,6 +161,19 @@
          (base     (if desktop?
                        '%desktop-services
                        '%base-services))
+         (native-console-font (match (getenv "LANGUAGE")
+                                ((or "be" "bg" "el" "eo" "kk" "ky"
+                                     "mk" "mn" "ru" "sr" "tg" "uk")
+                                 "LatGrkCyr-8x16")
+                                (_ #f)))
+         (services (if native-console-font
+                       `(modify-services ,base
+                          (console-font-service-type
+                           config => (map (lambda (tty)
+                                            (cons (car tty)
+                                                  ,native-console-font))
+                                          config)))
+                       base))
          (service-heading (list (vertical-space 1)
                                 (comment (G_ "\
 ;; Below is the list of system services.  To search for available
@@ -177,7 +192,7 @@
                                     %base-packages))))
 
           ,@service-heading
-          (services ,base))
+          (services ,services))
         `(,@(if (null? packages)
                 '()
                 `(,@package-heading
@@ -199,4 +214,4 @@
                             ,(comment (G_ "\
 ;; This is the default list of services we
 ;; are appending to.\n"))
-                            ,base))))))
+                            ,services))))))
diff --git a/gnu/local.mk b/gnu/local.mk
index d0c03b9078..873a1a1a8e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -50,7 +50,7 @@
 # Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 # Copyright © 2022 Remco van 't Veer <remco@remworks.net>
 # Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
-# Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+# Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
 # Copyright © 2022 muradm <mail@muradm.net>
 # Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 # Copyright © 2022 Alex Griffin <a@ajgrf.com>
@@ -1056,7 +1056,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/dee-vapi.patch			\
   %D%/packages/patches/desmume-gcc6-fixes.patch			\
   %D%/packages/patches/desmume-gcc7-fixes.patch			\
-  %D%/packages/patches/dezyne-add-missing-shebangs.patch	\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-fix-signal-processing.patch	\
   %D%/packages/patches/directfb-davinci-glibc-228-compat.patch	\
@@ -1074,6 +1073,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/dune-istl-fix-solver-playground.patch	\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/dynaconf-unvendor-deps.patch		\
+  %D%/packages/patches/dyninst-fix-glibc-compatibility.patch	\
   %D%/packages/patches/efivar-211.patch			\
   %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch	\
   %D%/packages/patches/einstein-build.patch			\
@@ -1158,6 +1158,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/fuse-glibc-2.34.patch			\
   %D%/packages/patches/fuse-overlapping-headers.patch		\
+  %D%/packages/patches/fuzzylite-relative-path-in-tests.patch	\
+  %D%/packages/patches/fuzzylite-use-catch2.patch		\
+  %D%/packages/patches/fuzzylite-soften-float-equality.patch	\
   %D%/packages/patches/fxdiv-system-libraries.patch		\
   %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch	\
   %D%/packages/patches/ganeti-disable-version-symlinks.patch	\
@@ -1226,7 +1229,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/genimage-mke2fs-test.patch		\
   %D%/packages/patches/geoclue-config.patch			\
   %D%/packages/patches/gettext-libunicode-update.patch		\
-  %D%/packages/patches/git-header-cmd.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
   %D%/packages/patches/ghc-9.2-glibc-2.33-link-order.patch \
   %D%/packages/patches/ghc-9.2-grep-warnings.patch \
@@ -1376,6 +1378,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
   %D%/packages/patches/idris-test-ffi008.patch			\
+  %D%/packages/patches/igt-gpu-tools-Use-libproc2.patch		\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
   %D%/packages/patches/imagemagick-CVE-2020-27829.patch		\
   %D%/packages/patches/imagemagick-ReadDCMImage-fix.patch	\
@@ -1411,6 +1414,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-xerces-bootclasspath.patch	\
   %D%/packages/patches/java-xerces-build_dont_unzip.patch	\
   %D%/packages/patches/java-xerces-xjavac_taskdef.patch	\
+  %D%/packages/patches/jbr-17-xcursor-no-dynamic.patch	\
   %D%/packages/patches/jfsutils-add-sysmacros.patch		\
   %D%/packages/patches/jfsutils-gcc-compat.patch		\
   %D%/packages/patches/jfsutils-include-systypes.patch		\
@@ -1424,8 +1428,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/libvirt-add-install-prefix.patch	\
   %D%/packages/patches/libziparchive-add-includes.patch		\
   %D%/packages/patches/lightdm-arguments-ordering.patch		\
-  %D%/packages/patches/lightdm-vncserver-check.patch		\
+  %D%/packages/patches/lightdm-vnc-ipv6.patch			\
   %D%/packages/patches/lightdm-vnc-color-depth.patch		\
+  %D%/packages/patches/lightdm-vncserver-check.patch		\
   %D%/packages/patches/localed-xorg-keyboard.patch		\
   %D%/packages/patches/kcontacts-incorrect-country-name.patch	\
   %D%/packages/patches/kde-cli-tools-delay-mime-db.patch	\
@@ -1544,8 +1549,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/llvm-9-fix-bitcast-miscompilation.patch	\
   %D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch	\
   %D%/packages/patches/llvm-9-fix-scev-miscompilation.patch	\
-  %D%/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch \
-  %D%/packages/patches/llvm-roc-5.0.0-linkdl.patch \
   %D%/packages/patches/lm-sensors-hwmon-attrs.patch		\
   %D%/packages/patches/lsh-fix-x11-forwarding.patch		\
   %D%/packages/patches/lsof-fatal-test-failures.patch		\
@@ -1834,6 +1837,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-typing-inspect-fix.patch		\
   %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
+  %D%/packages/patches/python-vega-datasets-remove-la-riots-code.patch	\
   %D%/packages/patches/python-versioneer-guix-support.patch	\
   %D%/packages/patches/python-waitress-fix-tests.patch		\
   %D%/packages/patches/python-werkzeug-tests.patch		\
@@ -1876,9 +1880,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/remake-impure-dirs.patch			\
   %D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch	\
   %D%/packages/patches/rng-tools-revert-build-randstat.patch	\
+  %D%/packages/patches/rocclr-5.6.0-enable-gfx800.patch		\
+  %D%/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch	\
   %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch 	\
   %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch 	\
-  %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch 	\
   %D%/packages/patches/rottlog-direntry.patch 			\
   %D%/packages/patches/ruby-hiredis-use-system-hiredis.patch	\
   %D%/packages/patches/ruby-hydra-minimal-no-byebug.patch	\
@@ -2051,6 +2056,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/vboot-utils-fix-format-load-address.patch	\
   %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch	\
   %D%/packages/patches/vboot-utils-skip-test-workbuf.patch	\
+  %D%/packages/patches/vcmi-disable-privacy-breach.patch	\
   %D%/packages/patches/vinagre-newer-freerdp.patch             \
   %D%/packages/patches/vinagre-newer-rdp-parameters.patch      \
   %D%/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch	\
@@ -2072,6 +2078,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/wordnet-CVE-2008-2149.patch			\
   %D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch			\
   %D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch			\
+  %D%/packages/patches/wpa-supplicant-dbus-group-policy.patch		\
   %D%/packages/patches/x265-arm-flags.patch			\
   %D%/packages/patches/xdg-desktop-portal-wlr-harcoded-length.patch\
   %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 529a477ed0..e9e949bf14 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -592,7 +592,7 @@ graphs and can export its output to different formats.")
 (define-public facter
   (package
     (name "facter")
-    (version "4.0.52")
+    (version "4.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -601,63 +601,61 @@ graphs and can export its output to different formats.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "05j4q87sak1f1isj7ngzr59h3j3xskfwjjwfv0xd7lhwcaxg3a3c"))))
+                "080v0ml2svw2vbzfa659v8718pmhh2kav0l0q1jjvc6mm8sgnmmn"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'delete-facter-ng-gemspec
-           (lambda _
-             ;; XXX: ruby-build-system incorrectly finds
-             ;; facter-ng.gemspec from this directory and tries to
-             ;; build that instead of the proper facter.gemspec.
-             ;; Just delete it as a workaround, as it appears to
-             ;; only exist for backwards-compatibility after the
-             ;; facter-ng->facter rename.
-             (delete-file "agent/facter-ng.gemspec")
-             #t))
-         (add-after 'unpack 'embed-absolute-references
-           ;; Refer to absolute executable file names to avoid propagation.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* (find-files "lib/facter/resolvers" "\\.rb$")
-               (("execute\\('(which |)([^ ']+)" _ _ name)
-                (string-append "execute('" (or (which name)
-                                               name))))
-             #t))
-         (delete 'check)
-         (add-after 'wrap 'check
-           (lambda* (#:key tests? outputs #:allow-other-keys)
-             ;; XXX: The test suite wants to run Bundler and
-             ;; complains that the gemspec is invalid.  For now
-             ;; just make sure that we can run the wrapped
-             ;; executable directly.
-             (if tests?
-                 (invoke (string-append (assoc-ref outputs "out")
-                                        "/bin/facter")
-                         ;; Many facts depend on /sys, /etc/os-release,
-                         ;; etc, so we only run a small sample.
-                         "facterversion" "architecture"
-                         "kernel" "kernelversion")
-                 (format #t "tests disabled~%"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'delete-facter-ng-gemspec
+            (lambda _
+              ;; XXX: ruby-build-system incorrectly finds
+              ;; facter-ng.gemspec from this directory and tries to
+              ;; build that instead of the proper facter.gemspec.
+              ;; Just delete it as a workaround, as it appears to
+              ;; only exist for backwards-compatibility after the
+              ;; facter-ng->facter rename.
+              (delete-file "agent/facter-ng.gemspec")))
+          (add-after 'unpack 'embed-absolute-references
+            ;; Refer to absolute executable file names to avoid propagation.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* (find-files "lib/facter/resolvers" "\\.rb$")
+                (("execute\\('(which |)([^ ']+)" _ _ name)
+                 (string-append "execute('" (or (which name)
+                                                name))))))
+          (delete 'check)
+          (add-after 'wrap 'check
+            (lambda* (#:key tests? outputs #:allow-other-keys)
+              ;; XXX: The test suite wants to run Bundler and
+              ;; complains that the gemspec is invalid.  For now
+              ;; just make sure that we can run the wrapped
+              ;; executable directly.
+              (if tests?
+                  (invoke (string-append (assoc-ref outputs "out")
+                                         "/bin/facter")
+                          ;; Many facts depend on /sys, /etc/os-release,
+                          ;; etc, so we only run a small sample.
+                          "facterversion" "architecture"
+                          "kernel" "kernelversion")
+                  (format #t "tests disabled~%")))))))
     (inputs
-     `(("ruby-hocon" ,ruby-hocon)
-       ("ruby-sys-filesystem" ,ruby-sys-filesystem)
-       ("ruby-thor" ,ruby-thor)
-
-       ;; For ‘embed-absolute-references’.
-       ("dmidecode" ,dmidecode)
-       ("inetutils" ,inetutils)         ; for ‘hostname’
-       ("iproute" ,iproute)
-       ("pciutils" ,pciutils)
-       ("util-linux" ,util-linux)))
+     (list ruby-hocon
+           ruby-sys-filesystem
+           ruby-thor
+
+           ;; For ‘embed-absolute-references’.
+           dmidecode
+           inetutils                    ; for ‘hostname’
+           iproute
+           pciutils
+           util-linux))
     (synopsis "Collect and display system facts")
     (description
      "Facter is a tool that gathers basic facts about nodes (systems) such
 as hardware details, network settings, OS type and version, and more.  These
 facts can be collected on the command line with the @command{facter} command
 or via the @code{facter} Ruby library.")
-    (home-page "https://github.com/puppetlabs/facter-ng")
+    (home-page "https://github.com/puppetlabs/facter")
     (license license:expat)))
 
 (define-public ttyload
@@ -1661,14 +1659,14 @@ network statistics collection, security monitoring, network debugging, etc.")
 (define-public tcpdump
   (package
     (name "tcpdump")
-    (version "4.99.1")
+    (version "4.99.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1ghfs5gifzrk3813zf9zalfbjs70wg6llz6q31k180r7zf2nkcvr"))))
+                "1slzwjk5f8sygwxqci4vkbas0qqcgs5a0w3f8br6p7gjn8dj6ch2"))))
     (build-system gnu-build-system)
     (inputs (list libpcap openssl))
     (native-inputs (list perl))        ; for tests
@@ -2733,7 +2731,7 @@ various ways that may be running with too much privilege.")
 (define-public smartmontools
   (package
     (name "smartmontools")
-    (version "7.2")
+    (version "7.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2741,7 +2739,7 @@ various ways that may be running with too much privilege.")
                     version "/smartmontools-" version ".tar.gz"))
               (sha256
                (base32
-                "1mlc25sd5rgj5xmzcllci47inmfdw7cp185fday6hc9rwqkqmnaw"))))
+                "0ax2wf5j8k2fbm85s0rbj9sajn5q3j2a2k22wyqcyn0cin0ghi55"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
@@ -3543,24 +3541,27 @@ a new command using the matched rule, and runs it.")
 (define-public di
   (package
     (name "di")
-    (version "4.51")
+    (version "4.52")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/diskinfo-di/di-" version ".tar.gz"))
+       (uri (string-append "mirror://sourceforge/diskinfo-di/"
+                           "di-" version ".tar.gz"))
        (sha256
-        (base32 "1fv12j9b9sw6p38lcbzcw87zl5qp1aa7a4a4jn3449zz9af15ckr"))))
+        (base32 "07vsnn1gxm3r7dchbrq63iazd64gza2ac7b2m1039708rf5flxdp"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; obscure test failures
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-before 'build 'setup-environment
-           (lambda* (#:key outputs #:allow-other-keys)
-             (setenv "CC" ,(cc-for-target))
-             (setenv "prefix" (assoc-ref outputs "out")))))
-       #:make-flags (list "--environment-overrides")))
+     (list
+      #:tests? #f                       ; obscure test failures
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)           ; no configure script
+          (add-before 'build 'override-environment
+            (lambda _
+              (setenv "CC" #$(cc-for-target))
+              (setenv "prefix" #$output))))
+      #:make-flags
+      #~(list "--environment-overrides")))
     (home-page "https://gentoo.com/di/")
     (synopsis "Advanced df like disk information utility")
     (description
@@ -3903,7 +3904,9 @@ buffers.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0d6jsj77qddccv0vfmqmbw3k2prvxzvmgc8zdi83gdi3wpp5i7zd"))))
+        (base32 "0d6jsj77qddccv0vfmqmbw3k2prvxzvmgc8zdi83gdi3wpp5i7zd"))
+       (patches
+        (search-patches "igt-gpu-tools-Use-libproc2.patch"))))
     (build-system meson-build-system)
     (arguments
      `(#:tests? #f              ; many of the tests try to load kernel modules
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 3babf90b3c..c755bc7060 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -226,7 +226,7 @@ the real span of the lattice.")
 (define-public pari-gp
   (package
     (name "pari-gp")
-    (version "2.15.3")
+    (version "2.15.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -234,7 +234,7 @@ the real span of the lattice.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0s4jasvb3ghvxp9s2ifmr0lk7ckj9529zg28icmdgbyd723abxdd"))))
+                "03swii601kxnphl6v7wv0rh2xn4rz6xbljzvfw5v9py6w3z5nm63"))))
     (build-system gnu-build-system)
     (native-inputs (list (texlive-updmap.cfg
                           (list texlive-amsfonts))))
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 03a868690c..104e61f63f 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -553,3 +553,34 @@ family of command line utility wrappers in the default output.  Each of the cli
 tools is named like @code{xed*}.  Documentation for the cli tools is sparse, so
 this is a case where ``the code is the documentation.''")
     (license license:asl2.0)))
+
+(define-public neon2sse
+  (let ((commit "097a5ecacd527d5b5c3006e360fb9cb1c1c48a1f")
+        (version "0")
+        (revision "1"))
+    (package
+      (name "neon2sse")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/intel/ARM_NEON_2_x86_SSE")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "17mf788b8asrvjl6dnyzrm5xrz20wx9j5f8n6drgc6qgwqxpx4hv"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list #:tests? #f)) ;no tests
+      (home-page "https://github.com/intel/ARM_NEON_2_x86_SSE")
+      (synopsis "Header file to simplify ARM->IA32 porting")
+      (description
+       "The @file{NEON_2_SSE.h} file is intended to simplify ARM-to-IA32
+porting.  It makes the correspondence (or a real porting) of ARM NEON
+intrinsics as defined in the @file{arm_neon.h} header and x86 SSE (up to
+SSE4.2) intrinsic functions as defined in corresponding x86 compilers headers
+files.")
+      (license license:bsd-2))))
+
+
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index cdb6750f09..d3f3711bd1 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
-;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2023 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
 ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
@@ -55,6 +55,7 @@
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
@@ -463,6 +464,45 @@ in FITS files.")
     (license (license:non-copyleft "file://License.txt"
                                    "See License.txt in the distribution."))))
 
+(define-public python-astroml
+  (package
+    (name "python-astroml")
+    (version "1.0.2.post1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "astroML" version))
+              (sha256
+               (base32
+                "14g2mcd5qdr3nn7icvjs84bjvx17l9glx81sbbna6v53i1x8l625"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:test-flags
+      '(list "--ignore-glob=examples/*")
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'patch-build-system
+           (lambda _
+             (substitute* "setup.cfg"
+               ;; Do not error out on deprecations
+               (("	error::DeprecationWarning.*") "")
+               ;; Do not test examples
+               (("testspaths = astroML doc examples")
+                "testspaths = astroML"))))
+         (add-before 'check 'pre-check
+           ;; Some tests need this
+           (lambda _
+             (setenv "HOME" "/tmp"))))))
+    (propagated-inputs (list python-astropy python-matplotlib python-numpy
+                             python-scikit-learn python-scipy))
+    (native-inputs (list python-pytest-astropy-header python-pytest-cov
+                         python-pytest-doctestplus python-pytest-remotedata))
+    (home-page "https://astroml.org")
+    (synopsis "Tools for machine learning and data mining in astronomy")
+    (description "This package provides tools for machine learning and data
+mining in astronomy.")
+    (license license:bsd-2)))
+
 (define-public python-fitsio
   (package
     (name "python-fitsio")
@@ -522,6 +562,39 @@ CFITSIO library.  Among other things, it can
 @end itemize")
     (license license:gpl2+)))
 
+(define-public python-gatspy
+  (package
+    (name "python-gatspy")
+    (version "0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gatspy" version))
+              (sha256
+               (base32
+                "1gw2z6x8nikvnw2gkdl70gr81cwczd1pd7v8ry2kjn6k4kssrfav"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      '(modify-phases %standard-phases
+         ;; Tests need this
+         (add-before 'check 'set-HOME
+           (lambda _ (setenv "HOME" "/tmp"))))
+      #:test-flags
+      '(list "-k"
+             (string-append
+              ;; These tests require internet access
+              "not test_download_data.py"
+              ;; XXX: we don't have supersmoother
+              " and not test_supersmoother.py"))))
+    (propagated-inputs (list python-astroml python-numpy python-scipy))
+    (native-inputs (list python-pytest python-nose python-setuptools-scm))
+    (home-page "https://github.com/astroml/gatspy")
+    (synopsis "General tools for astronomical time series in Python")
+    (description "This package provides general tools for astronomical time
+series in Python.")
+    (license license:bsd-2)))
+
 (define-public qfits
   (package
     (name "qfits")
@@ -572,35 +645,41 @@ International Astronomical Union}.")
     (version "1.4.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/eye/"
-                           "eye-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astromatic/eye")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "092qhzcbrkcfidbx4bv9wz42w297n80jk7a6kwyi9a3fjfz81d7k"))))
+        (base32 "1j8rpgz3fjp6fw0qmxgfqycf3n01fzxds4w12vgyrhbnk658ia41"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "CPPFLAGS=-fcommon")))    ; fix build with GCC 10
     (home-page "https://www.astromatic.net/software/eye")
     (synopsis "Small image feature detector using machine learning")
     (description
-     "In EyE (Enhance Your Extraction) an artificial neural network connected to
-pixels of a moving window (retina) is trained to associate these input stimuli
-to the corresponding response in one or several output image(s).  The resulting
-filter can be loaded in SExtractor to operate complex, wildly non-linear filters
-on astronomical images.  Typical applications of EyE include adaptive filtering,
-feature detection and cosmetic corrections.")
+     "In @acronym{EyE, Enhance Your Extraction} an artificial neural network
+connected to pixels of a moving window (@dfn{retina}) is trained to associate
+these input stimuli to the corresponding response in one or several output
+image(s).  The resulting filter can be loaded in SExtractor to operate
+complex, wildly non-linear filters on astronomical images.  Typical
+applications of EyE include adaptive filtering, feature detection and cosmetic
+corrections.")
     (license license:cecill)))
 
 (define-public wcslib
   (package
     (name "wcslib")
-    (version "7.12")
+    (version "8.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-" version
-             ".tar.bz2"))
+       (uri (string-append "https://www.atnf.csiro.au/people/mcalabre/WCS/"
+                           "wcslib-" version ".tar.bz2"))
        (sha256
-        (base32 "1m3bx6gh5w3c7vvsqcki0x20mg8lilg13m0i8nh7za89w58dxy4w"))))
+        (base32 "17hjnkwn2rd5d9krw2n637q4y8ma4nzk2i55zzn8l2yimdpkxwib"))))
     (inputs
      (list cfitsio))
     (build-system gnu-build-system)
@@ -634,12 +713,18 @@ header.")
     (version "1.12")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/weightwatcher/"
-                           "weightwatcher-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astromatic/weightwatcher")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1zaqd8d9rpgcwjsp92q3lkfaa22i20gppb91dz34ym54swisjc2p"))))
+        (base32 "0701z6bdqq32jv7ga3n6jh27q684ni0hbfjm1mak7rh0qqx089gi"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "CFLAGS=-fcommon")))      ; fix build with GCC 10
     (home-page "https://www.astromatic.net/software/weightwatcher")
     (synopsis "Weight-map/flag-map multiplexer and rasteriser")
     (description
@@ -870,34 +955,43 @@ interactively in the plotting window.")
     (license license:gpl2+)))
 
 (define-public skymaker
-  (package
-    (name "skymaker")
-    (version "3.10.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/skymaker/"
-                           "skymaker-" version ".tar.gz"))
-       (sha256
-        (base32 "03zvx7c89plp9559niqv5532r233kza3ir992rg3nxjksqmrqvx1"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
+  ;; XXX: No version tag available in GitHub.
+  ;; See: https://github.com/astromatic/skymaker/issues/3
+  (let ((commit "1a69c4716bdc9b5c6d4a917b0bc2dbd47635c459")
+        (revision "0"))
+    (package
+      (name "skymaker")
+      (version (git-version "4.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/astromatic/skymaker")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1vin4vgvcmqmwjdchsxnap374559rksz55xmaliawnl3qpzxn1nk"))))
+      (build-system gnu-build-system)
+      (arguments
        (list
-        (string-append
-         "--with-fftw-libdir=" (assoc-ref %build-inputs "fftw") "/lib")
-        (string-append
-         "--with-fftw-incdir=" (assoc-ref %build-inputs "fftw") "/include"))))
-    (inputs
-     `(("fftw" ,fftwf)))
-    (home-page "https://www.astromatic.net/software/skymaker")
-    (synopsis "Astronomical image simulator")
-    (description
-     "SkyMaker is a program that simulates astronomical images.  It accepts
+        #:configure-flags
+        #~(list
+           (string-append
+            "--with-fftw-libdir=" #$(this-package-input "fftwf") "/lib")
+           (string-append
+            "--with-fftw-incdir=" #$(this-package-input "fftwf") "/include"))))
+      (native-inputs
+       (list autoconf automake libtool pkg-config))
+      (inputs
+       (list fftwf))
+      (home-page "https://www.astromatic.net/software/skymaker")
+      (synopsis "Astronomical image simulator")
+      (description
+       "SkyMaker is a program that simulates astronomical images.  It accepts
 object lists in ASCII generated by the Stuff program to produce realistic
-astronomical fields.  SkyMaker is part of the EFIGI
-(@url{https://www.astromatic.net/projects/efigi}) development project.")
-    (license license:gpl3+)))
+astronomical fields.  SkyMaker is part of the
+@uref{https://www.astromatic.net/projects/efigi, EFIGI} development project.")
+      (license license:gpl3+))))
 
 (define-public stackistry
   (package
@@ -1031,36 +1125,48 @@ objects.")
 (define-public stuff
   (package
     (name "stuff")
-    (version "1.26.0")
+    (version "2.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/stuff/"
-                           "stuff-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astromatic/stuff")
+             ;; XXX: No version tag available in GitHub.
+             ;; See: https://github.com/astromatic/stuff/issues/6
+             (commit "9008dc022ef53331092da248cf0a794abd6783bf")))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1syibi3b86z9pikhicvkkmgxm916j732fdiw0agw0lq6z13fdcjm"))))
+        (base32 "004sry5lqqm7s9x4l3agysp3n63y3ga35x1rwwda4m6dc6zvla6b"))))
     (build-system gnu-build-system)
+    (native-inputs
+     (list autoconf automake libtool pkg-config))
     (home-page "https://www.astromatic.net/software/stuff")
     (synopsis "Astronomical catalogue simulation")
     (description
      "Stuff is a program that simulates \"perfect\" astronomical catalogues.
 It generates object lists in ASCII which can read by the SkyMaker program to
-produce realistic astronomical fields.  Stuff is part of the EFIGI development
-project.")
+produce realistic astronomical fields.  Stuff is part of the
+@uref{https://www.astromatic.net/projects/efigi, EFIGI} development project.")
     (license license:gpl3+)))
 
 (define-public swarp
   (package
     (name "swarp")
-    (version "2.38.0")
+    (version "2.41.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/swarp/"
-                           "swarp-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astromatic/swarp")
+             (commit (string-append version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1i670waqp54vin1cn08mqckcggm9zqd69nk7yya2vvqpdizn6jpm"))))
+        (base32 "00463r5rd4xl74xs4h1n4gl2qk7v9p5nw9x05pbzgh8jm77q90qq"))))
     (build-system gnu-build-system)
+    (native-inputs
+     (list automake autoconf libtool pkg-config))
+    (inputs
+     (list cfitsio))
     (home-page "https://www.astromatic.net/software/swarp")
     (synopsis "FITS image resampling and co-addition")
     (description
@@ -1069,66 +1175,85 @@ any arbitrary astrometric projection defined in the WCS standard.")
     (license license:gpl3+)))
 
 (define-public celestia
-  (let ((commit "9dbdf29c4ac3d20afb2d9a80d3dff241ecf81dce"))
-    (package
-      (name "celestia")
-      (version (git-version "1.6.1" "815" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/celestiaproject/celestia")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "00xibg87l1arzifakgj7s828x9pszcgx7x7ij88a561ig49ryh78"))))
-      (build-system cmake-build-system)
-      (native-inputs
-       `(("perl" ,perl)
-         ("libgit2" ,libgit2)
-         ("pkg-config" ,pkg-config)
-         ("libtool" ,libtool)
-         ("gettext" ,gettext-minimal)))
-      (inputs
-       `(("glu" ,glu)
-         ("glew" ,glew)
-         ("libtheora" ,libtheora)
-         ("libjpeg" ,libjpeg-turbo)
-         ("libpng" ,libpng)
-         ;; maybe required?
-         ("mesa" ,mesa)
-         ;; optional: fmtlib, Eigen3;
-         ("fmt" ,fmt-7)
-         ("eigen" ,eigen)
-         ;; glut: for glut interface
-         ("freeglut" ,freeglut)))
-      (propagated-inputs
-       (list lua))
-      (arguments
-       `(#:configure-flags '("-DENABLE_GLUT=ON" "-DENABLE_QT=OFF")
-         #:tests? #f))                            ;no tests
-      (home-page "https://celestia.space/")
-      (synopsis "Real-time 3D visualization of space")
-      (description
-       "This simulation program lets you explore our universe in three
+  (package
+    (name "celestia")
+    (version "1.6.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/celestiaproject/celestia")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0dzci5n7gcnm1vq916gsn9zddkhbzhbsakqxrpnmvzibsqznn6c8"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:modules
+      `((guix build gnu-build-system)
+        (guix build utils)
+        (srfi srfi-1)
+        (srfi srfi-71))
+      #:configure-flags
+      #~(list "--with-glut"
+              (string-append "--with-lua=" #$(this-package-input "lua")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-lua-version
+            (lambda _
+              (let* ((_ version (package-name->name+version
+                                 #$(this-package-input "lua")))
+                     (components (string-split version #\.))
+                     (major+minor (string-join (take components 2) ".")))
+                (substitute* "configure.ac"
+                  (("lua5.3")
+                   (string-append "lua-" major+minor)))))))))
+    (native-inputs
+     (list autoconf
+           automake
+           gettext-minimal
+           libgit2
+           libtool
+           perl
+           pkg-config))
+    (inputs
+     (list freeglut
+           glu
+           libjpeg-turbo
+           libpng
+           libtheora
+           mesa))
+    (propagated-inputs
+     (list lua))
+    (home-page "https://celestia.space/")
+    (synopsis "Real-time 3D visualization of space")
+    (description
+     "This simulation program lets you explore our universe in three
 dimensions.  Celestia simulates many different types of celestial objects.
 From planets and moons to star clusters and galaxies, you can visit every
 object in the expandable database and view it from any point in space and
 time.  The position and movement of solar system objects is calculated
 accurately in real time at any rate desired.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
+
 
 (define-public celestia-gtk
-  (package
-    (inherit celestia)
+  (package/inherit celestia
     (name "celestia-gtk")
     (inputs
-     (append (alist-delete "freeglut" (package-inputs celestia))
-             `(("gtk2" ,gtk+-2)
-               ("gtkglext" ,gtkglext))))
+     (modify-inputs (package-inputs celestia)
+       (replace "freeglut" gtk+-2)
+       (prepend cairo gtkglext libxmu libtheora pango-1.42)))
     (arguments
-     `(#:configure-flags '("-DENABLE_GTK=ON" "-DENABLE_QT=OFF")
-       #:tests? #f))))
+     (substitute-keyword-arguments (package-arguments celestia)
+       ((#:configure-flags flags '())
+        #~(append #$flags
+                  (list "--enable-cairo"
+                        "--enable-theora"
+                        "--without-glut"
+                        "--with-gtk")))))
+    (synopsis "Real-time 3D visualization of space (using GTK+)")))
 
 (define-public python-astropy
   (package
@@ -2581,12 +2706,21 @@ PixInsight.  It implements XISF 1.0 specification.")
     (version "2.8.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.astromatic.net/download/missfits/"
-                           "missfits-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astromatic/missfits")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "04jrd7fsvzr14vdmwgj2f6v97gdcfyjyz6jppml3ghr9xh12jxv5"))))
+        (base32 "12ndvrr3l5j7ph2i5f3qf0wqmv5ymsyjzxnnypqajsvliw72iprh"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list
+         ;; Address this link error:
+         ;; ld: ... multiple definition of ... first defined here
+         "CPPFLAGS=-fcommon")))
     (home-page "https://www.astromatic.net/software/missfits")
     (synopsis "FITS files Maintenance program")
     (description
@@ -2595,10 +2729,11 @@ on FITS files:
 
 @itemize
 @item add/edit FITS header keywords
-@item split/join Multi-Extension-FITS (MEF) files
+@item split/join @acronym{MEF, Multi-Extension-FITS} files
 @item unpack/pack FITS data-cubes
-@item create/check/update FITS checksums, using R. Seaman's protocol
-      (see http://www.adass.org/adass/proceedings/adass94/seamanr.html)
+@item create/check/update FITS checksums, using
+@uref{http://www.adass.org/adass/proceedings/adass94/seamanr.html,
+R. Seaman's protocol}
 @end itemize\n")
     (license license:gpl3+)))
 
@@ -2622,28 +2757,28 @@ on FITS files:
          "xplanet-1.3.1-libimage_gif.c.patch"
          "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list
+         ;; No NASA JPL cspice support.
+         "--without-cspice"
+         (string-append "CPPFLAGS=-I" #$(this-package-input "netpbm")
+                        "/include/netpbm"))))
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("libx11" ,libx11)
-       ("libxscrnsaver" ,libxscrnsaver)
-       ("libice" ,libice)
-       ("freetype" ,freetype)
-       ("pango" ,pango)
-       ("giflib" ,giflib)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("libtiff" ,libtiff)
-       ("netpbm" ,netpbm)
-       ("zlib" ,zlib)))
-    (arguments
-     `(#:configure-flags
-       (let ((netpbm (assoc-ref %build-inputs "netpbm")))
-         (append (list
-                  ;; Give correct path for pnm.h header to configure script
-                  (string-append "CPPFLAGS=-I" netpbm "/include/netpbm")
-                  ;; no nasa jpl cspice support
-                  "--without-cspice" )))))
+     (list freetype
+           giflib
+           libice
+           libjpeg-turbo
+           libpng
+           libtiff
+           libx11
+           libxscrnsaver
+           netpbm
+           pango
+           zlib))
     (home-page "https://xplanet.sourceforge.net/")
     (synopsis "Planetary body renderer")
     (description
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 88dbbbc7a2..447b0ea78c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;; Copyright © 2023 Gabriel Wicki <gabriel@erlikon.ch>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4447,38 +4448,40 @@ provide high-quality sample rate conversion.")
     (version "0.3.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "http://kokkinizita.linuxaudio.org"
-                    "/linuxaudio/downloads/zita-alsa-pcmi-"
-                    version ".tar.bz2"))
+              (uri (string-append "http://kokkinizita.linuxaudio.org"
+                                  "/linuxaudio/downloads/zita-alsa-pcmi-"
+                                  version ".tar.bz2"))
               (sha256
                (base32
                 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no "check" target
-       #:make-flags
-       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-             (string-append "SUFFIX="))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-makefile-and-enter-directory
-           (lambda _
-             (substitute* "source/Makefile"
-               (("ldconfig") "true")
-               (("^LIBDIR =.*") "LIBDIR = lib\n"))
-             (chdir "source")
-             #t))
-         (add-after 'install 'install-symlink
-           (lambda _
-             (symlink "libzita-alsa-pcmi.so"
-                      (string-append (assoc-ref %outputs "out")
-                                     "/lib/libzita-alsa-pcmi.so.0"))
-             #t))
-          ;; no configure script
-          (delete 'configure))))
-    (inputs
-     (list alsa-lib fftw))
+     (list #:tests? #f ;no "check" target
+           #:make-flags #~(list (string-append "PREFIX="
+                                               (assoc-ref %outputs "out"))
+                                (string-append "SUFFIX=")
+                                (string-append "CXX="
+                                               #$(cxx-for-target)))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'patch-makefile-and-enter-directory
+                          (lambda _
+                            (substitute* "source/Makefile"
+                              (("ldconfig")
+                               "true")
+                              (("^LIBDIR =.*")
+                               "LIBDIR = lib\n")
+                              (("CXXFLAGS \\+= -march=native")
+                               ""))
+                            (chdir "source")))
+                        (add-after 'install 'install-symlink
+                          (lambda _
+                            (symlink "libzita-alsa-pcmi.so"
+                                     (string-append (assoc-ref %outputs "out")
+                                      "/lib/libzita-alsa-pcmi.so.0"))))
+                        ;; no configure script
+                        (delete 'configure))))
+    (inputs (list alsa-lib fftw))
+    (properties `((tunable? . #t)))
     (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "C++ wrapper around the ALSA API")
     (description
@@ -6233,7 +6236,7 @@ and DSD streams.")
 (define-public qpwgraph
   (package
     (name "qpwgraph")
-    (version "0.4.2")
+    (version "0.4.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -6242,7 +6245,7 @@ and DSD streams.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0h5y8n9xm9ay1w53hb5mw6k5i1sm8spz1izmw6yya49gv2pwyhrj"))))
+                "05j98y8j3f0dybaal6qawq9nsrvr1hylsnig4yk6si16mhb32y7l"))))
     (build-system cmake-build-system)
     (arguments (list #:tests? #f)) ;; no tests
     (inputs (list alsa-lib
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index dd554a0e5b..921398bad6 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1136,14 +1136,14 @@ interactive mode.")
 (define-public btrbk
   (package
     (name "btrbk")
-    (version "0.32.5")
+    (version "0.32.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://digint.ch/download/btrbk/releases/"
                                   "btrbk-" version ".tar.xz"))
               (sha256
                (base32
-                "1d4zqf5klad55gdzzldipsjrhpprixzjmn03g66df5h2d28l1zpi"))))
+                "0sxppfraakf56d1i4sbh4gyzg92panwpnq5y5hh6714igijarqh2"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -1153,7 +1153,7 @@ interactive mode.")
                      (lambda _
                        (substitute* "Makefile"
                          (("= /etc")
-                          (string-append "= " #$output "/etc")))))
+                          (string-append "= $(PREFIX)/etc")))))
                    (delete 'check)
                    (add-after 'install 'wrap-scripts
                      (lambda* (#:key inputs outputs #:allow-other-keys)
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 43f38303f7..bb3359d5d1 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -445,28 +445,27 @@ you to call routines in shared libraries from within Bash.")
 (define-public blesh
   (package
     (name "blesh")
-    (version "0.4.0-devel2")
+    (version "0.4.0-devel3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/akinomyoga/ble.sh")
-                    (commit (string-append "v" version))))
+                    (commit (string-append "v" version))
+                    (recursive? #t)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "02fdjyh4x6wr5hg3i86nsxhz8ysgjrvvxdmk6pqr0lm8ngw9p3sh"))))
+                "19y9rmj9srl7akx33gl34l5qgz2ww0vlmi4j2r11029p8sn4s418"))))
     (arguments
      (list #:make-flags #~(list (string-append "PREFIX="
                                                #$output))
            #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'pretend-contrib-.git-exists
-                          (lambda _
-                            (mkdir-p "contrib/.git")))
-                        (add-after 'unpack 'make-readlink-work
+                        (add-after 'unpack 'pretend-.git-exists
                           (lambda _
                             (substitute* "ble.pp"
-                              (("PATH=/bin:/usr/bin readlink")
-                               "readlink"))))
+                              (("#%\\[commit_hash =.*")
+                               (string-append "#%[commit_hash = " #$version "]\n")))
+                            (mkdir-p ".git")))
                         (delete 'configure) ;no configure
                         (add-before 'check 'use-LANG-for-tests
                           (lambda _
@@ -474,7 +473,7 @@ you to call routines in shared libraries from within Bash.")
                                     (getenv "LC_ALL"))
                             (unsetenv "LC_ALL"))))))
     (build-system gnu-build-system)
-    (native-inputs (list less))
+    (native-inputs (list git less))
     (home-page "https://github.com/akinomyoga/ble.sh")
     (synopsis "Bash Line Editor")
     (description
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 00701c4463..bc8eda4293 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1436,6 +1436,51 @@ curated cell type labels, for use in procedures like automated annotation of
 single-cell data or deconvolution of bulk RNA-seq.")
     (license license:gpl3)))
 
+(define-public r-cellid
+  (package
+    (name "r-cellid")
+    (version "1.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "CelliD" version))
+              (sha256
+               (base32
+                "0vigvqjrlqbi5kviaj8qvyq3v8afgbc5pjrz7zmx2ckf4hdp0g03"))))
+    (properties `((upstream-name . "CelliD")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-data-table
+           r-biocparallel
+           r-fastmatch
+	   r-fgsea
+           r-ggplot2
+           r-glue
+           r-irlba
+           r-matrix
+           r-matrixstats
+           r-pbapply
+           r-rcpp
+           r-rcpparmadillo
+           r-reticulate
+           r-rtsne
+           r-seurat
+           r-stringr
+           r-tictoc
+	   r-singlecellexperiment
+           r-summarizedexperiment
+           r-umap))
+    (native-inputs (list r-knitr r-scater))
+    (home-page "https://bioconductor.org/packages/CelliD")
+    (synopsis
+     "Single cell gene signature extraction using multiple correspondence analysis")
+    (description
+     "CelliD is a clustering-free method for extracting per-cell gene
+signatures from scRNA-seq.  CelliD allows unbiased cell identity recognition
+across different donors, tissues-of-origin, model organisms and single-cell
+omics protocols.  The package can also be used to explore functional pathways
+enrichment in single cell data.")
+    (license license:gpl3)))
+
 (define-public r-champdata
   (package
     (name "r-champdata")
@@ -2814,13 +2859,13 @@ analysis, modelling, and visualization of spike-in controls.")
 (define-public r-ancombc
   (package
     (name "r-ancombc")
-    (version "2.2.0")
+    (version "2.2.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "ANCOMBC" version))
               (sha256
                (base32
-                "1wfbi8xyh2pxpjdv2zhml2l1h8c7fyfl5wyici3nm3rcs00n7m9w"))))
+                "05gngz6cqihxg4zlf7ymw93qj61a1i19hgp4fkc0cxnkq0pambrd"))))
     (properties `((upstream-name . "ANCOMBC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2828,25 +2873,21 @@ analysis, modelling, and visualization of spike-in controls.")
            r-desctools
            r-doparallel
            r-dorng
-           r-dplyr
-           r-emmeans
            r-energy
            r-foreach
+           r-gtools
            r-hmisc
            r-lme4
            r-lmertest
-           r-magrittr
            r-mass
+           r-matrix
            r-mia
+           r-multcomp
            r-nloptr
            r-rdpack
-           r-rlang
-           r-rngtools
            r-s4vectors
            r-singlecellexperiment
            r-summarizedexperiment
-           r-tibble
-           r-tidyr
            r-treesummarizedexperiment))
     (native-inputs (list r-knitr))
     (home-page "https://github.com/FrederickHuangLin/ANCOMBC")
@@ -3059,13 +3100,13 @@ paired or unpaired study designs.")
 (define-public r-alevinqc
   (package
     (name "r-alevinqc")
-    (version "1.16.0")
+    (version "1.16.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "alevinQC" version))
               (sha256
                (base32
-                "014jxp2ymxiywp2qa1b9f7iszgf95v03h9kgk8ljabnbia1zsl67"))))
+                "137bvqyh1cqmhf9x3xl6n1dv0380lpcr2nxhd60b7zqiw4p14i5a"))))
     (properties `((upstream-name . "alevinQC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3919,13 +3960,13 @@ Various visual and textual types of output are available.")
 (define-public r-bambu
   (package
     (name "r-bambu")
-    (version "3.2.3")
+    (version "3.2.5")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "bambu" version))
               (sha256
                (base32
-                "1b5zmyj75fjhyn4mb70gdqvxg76fg2z45vns9l0rl66s3p5mhm6d"))))
+                "1vqxmz2lknnx1g61y7skvznsnxv3clajngz9mnggg1z3p5mr6cnh"))))
     (properties `((upstream-name . "bambu")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4735,13 +4776,13 @@ bases such as COSMIC.")
 (define-public r-delayedarray
   (package
     (name "r-delayedarray")
-    (version "0.26.3")
+    (version "0.26.6")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "DelayedArray" version))
               (sha256
                (base32
-                "0m603v0l74nawid61hvqbyb2662c1djqp436p87pk4f04fvws67j"))))
+                "0jy2spqysa5x1s84kbr1jbbdmlh3q44lrw1qck2fln3b6q5vgz0k"))))
     (properties
      `((upstream-name . "DelayedArray")))
     (build-system r-build-system)
@@ -5084,13 +5125,13 @@ over-abundant or less-abundant as compared to that of normal cells.")
 (define-public r-iranges
   (package
     (name "r-iranges")
-    (version "2.34.0")
+    (version "2.34.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "IRanges" version))
               (sha256
                (base32
-                "13kmh5zik3gw4jzh666zd3vmv915fcac5lx76s9q38x01m4gd7ld"))))
+                "013a3vcw1v5vn0sg2d9cwrdksch48kilvxp8cr79y0nr4vk58q9z"))))
     (properties
      `((upstream-name . "IRanges")))
     (build-system r-build-system)
@@ -5112,24 +5153,24 @@ possible.")
 (define-public r-isoformswitchanalyzer
   (package
     (name "r-isoformswitchanalyzer")
-    (version "1.21.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "IsoformSwitchAnalyzeR" version))
        (sha256
-        (base32 "1vzzsqjnkaffyxgvw6bsbxhgg1102cap2hsmzkhwzh6bvh02bwkx"))))
+        (base32 "1zjwhxlayz2sb77vspw280didhawj282i5gvxnydcdparg165zwf"))))
     (properties `((upstream-name . "IsoformSwitchAnalyzeR")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-biobase
            r-biocgenerics
+           r-biocparallel
            r-biostrings
            r-bsgenome
            r-dbi
            r-dexseq
            r-dplyr
-           r-drimseq
            r-edger
            r-futile-logger
            r-genomeinfodb
@@ -5139,14 +5180,20 @@ possible.")
            r-iranges
            r-limma
            r-magrittr
+           r-pfamanalyzer
            r-plyr
            r-rcolorbrewer
            r-rcurl
            r-readr
            r-reshape2
            r-rtracklayer
+           r-s4vectors
+           r-saturn
            r-stringr
+           r-summarizedexperiment
+           r-sva
            r-tibble
+           r-tidyr
            r-tximeta
            r-tximport
            r-venndiagram
@@ -5367,14 +5414,14 @@ performing parallel computations on multicore machines.")
 (define-public r-affy
   (package
     (name "r-affy")
-    (version "1.78.0")
+    (version "1.78.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "affy" version))
        (sha256
         (base32
-         "15hpxflygpy1sid0c4hlzmsc13nqyzs6j74md0ri478qysiqjnpf"))))
+         "1xj8pnaa782k1hxaiba6mcsqr21bk8xz31916836jz5l9848zjsw"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-affyio
@@ -5605,13 +5652,13 @@ microarrays.")
 (define-public r-annotationdbi
   (package
     (name "r-annotationdbi")
-    (version "1.62.1")
+    (version "1.62.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "AnnotationDbi" version))
               (sha256
                (base32
-                "0a5brfd010p0ks8b7kvrynirmzv3p74r9vqwv5wyz4kbnasfd1v1"))))
+                "0vprm84k79pfnkkg9vf3gyb1nhzmin5lp5375rsaj6fnzbd46dw9"))))
     (properties
      `((upstream-name . "AnnotationDbi")))
     (build-system r-build-system)
@@ -5619,8 +5666,8 @@ microarrays.")
      (list r-biobase
            r-biocgenerics
            r-dbi
-           r-keggrest
            r-iranges
+           r-keggrest
            r-rsqlite
            r-s4vectors))
     (native-inputs
@@ -5660,14 +5707,14 @@ used by @code{ensembldb}, @code{Organism.dplyr}, and other packages.")
 (define-public r-annotationforge
   (package
     (name "r-annotationforge")
-    (version "1.42.0")
+    (version "1.42.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AnnotationForge" version))
        (sha256
         (base32
-         "0s1k32li3nygg01nv9hbs7n6pabaassxmm4z5jggp6apdzkjpsc7"))))
+         "0b4dmjv7y50c1rn76wlhnlz93kidvg1byj72vq2s11kdzyq3pmss"))))
     (properties
      `((upstream-name . "AnnotationForge")))
     (build-system r-build-system)
@@ -5810,13 +5857,13 @@ on Bioconductor or which replace R functions.")
 (define-public r-biomart
   (package
     (name "r-biomart")
-    (version "2.56.0")
+    (version "2.56.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biomaRt" version))
               (sha256
                (base32
-                "10cjysqnc1wr0ld3wjl79zv0irrmxb8hf03y63fbwcc43rjcgv07"))))
+                "0jqv2mv4ridi5lffva20a5s479bzpxhblyymricb17fd400rag8f"))))
     (properties
      `((upstream-name . "biomaRt")))
     (build-system r-build-system)
@@ -5850,13 +5897,13 @@ powerful online queries from gene annotation to database mining.")
 (define-public r-biomartr
   (package
     (name "r-biomartr")
-    (version "1.0.3")
+    (version "1.0.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "biomartr" version))
               (sha256
                (base32
-                "093v32r6s9sn7yisa4fdwgjif313ap19nvq0sbsgj2482k646d55"))))
+                "0hv4z6ycmn58ha7j7zfmyhvs2i37cm48gcalg19dli2kaw1c4210"))))
     (properties `((upstream-name . "biomartr")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6377,14 +6424,14 @@ distribution.")
 (define-public r-deseq2
   (package
     (name "r-deseq2")
-    (version "1.40.1")
+    (version "1.40.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DESeq2" version))
        (sha256
         (base32
-         "1910nvcm1lj5mcg8jdvfql6a6h1wnrgfl616gz942g4ngl18ya3p"))))
+         "0rb6b2aqn3an5ria4yjasjr7aldr5606rkc4yw275x9ddii22djg"))))
     (properties `((upstream-name . "DESeq2")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6865,19 +6912,18 @@ genomic intervals.  In addition, it can use BAM or BigWig files as input.")
 (define-public r-genomeinfodb
   (package
     (name "r-genomeinfodb")
-    (version "1.36.0")
+    (version "1.36.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomeInfoDb" version))
               (sha256
                (base32
-                "072dawysgcfyhnwva38y5vf95y3b9dhpad66mwma07hrh27a6wqh"))))
+                "1c3fgni846vjw152m4aklb8kwrwjw3rww116a2cbii70nr86p5qg"))))
     (properties
      `((upstream-name . "GenomeInfoDb")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-biocgenerics r-genomeinfodbdata r-iranges r-rcurl
-           r-s4vectors))
+     (list r-biocgenerics r-genomeinfodbdata r-iranges r-rcurl r-s4vectors))
     (native-inputs
      (list r-knitr))
     (home-page "https://bioconductor.org/packages/GenomeInfoDb")
@@ -6925,13 +6971,13 @@ alignments.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.52.0")
+    (version "1.52.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "0sccj6py15g5ihdrpzwn7j71wkqwljay8p2yn2wkd8142cfsr7x3"))))
+                "166l0pzg00kaagg3adnx1xy5bgmv42lm06a47i30lh14dc0k79wq"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -7300,16 +7346,16 @@ Shiny-based display methods for Bioconductor objects.")
 (define-public r-lfa
   (package
     (name "r-lfa")
-    (version "1.28.2")
+    (version "2.0.11")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "lfa" version))
        (sha256
-        (base32 "0z8aa2435f7v2l6zwv47v2a6p9hal156dsh8v1iri233d1qx7fax"))))
+        (base32 "0x169fxwlccsqwj1bpviaky3hfr0zdwsdrlgfvrb4j6j95qfgnns"))))
     (properties `((upstream-name . "lfa")))
     (build-system r-build-system)
-    (propagated-inputs (list r-corpcor))
+    (propagated-inputs (list r-corpcor r-rspectra))
     (native-inputs (list r-knitr))
     (home-page "https://github.com/StoreyLab/lfa")
     (synopsis "Logistic Factor Analysis for categorical data")
@@ -7321,13 +7367,13 @@ Binomial data via estimation of latent structure in the natural parameter.")
 (define-public r-limma
   (package
     (name "r-limma")
-    (version "3.56.1")
+    (version "3.56.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "limma" version))
               (sha256
                (base32
-                "02c559an6hzk00bbvlrq1qljsnby4a53ng9jj6ff570mc6pabjn6"))))
+                "0miyba9frn1p4pkclzpr0bfazsk0br2jgpwpwwh773d3103hkn0r"))))
     (build-system r-build-system)
     (home-page "https://bioinf.wehi.edu.au/limma")
     (synopsis "Package for linear models for microarray and RNA-seq data")
@@ -7340,13 +7386,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
 (define-public r-maaslin2
   (package
     (name "r-maaslin2")
-    (version "1.13.0")
+    (version "1.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Maaslin2" version))
        (sha256
-        (base32 "05xha6y6ssf80l4xb7skbjafpqww2d85l4b6wn72r5djidyxxw6y"))))
+        (base32 "06mb72hbzihdficv73yqbb2m86bkw78w3vbw1rm98n0npxq2fch6"))))
     (properties `((upstream-name . "Maaslin2")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7363,7 +7409,6 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
            r-lme4
            r-lmertest
            r-logging
-           r-lpsymphony
            r-mass
            r-metagenomeseq
            r-optparse
@@ -7372,6 +7417,7 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
            r-pheatmap
            r-pscl
            r-robustbase
+           r-tibble
            r-vegan))
     (native-inputs (list r-knitr))
     (home-page "http://huttenhower.sph.harvard.edu/maaslin2")
@@ -7971,18 +8017,20 @@ specific parser.")
 (define-public r-mzr
   (package
     (name "r-mzr")
-    (version "2.34.0")
+    (version "2.34.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "mzR" version))
        (sha256
         (base32
-         "0dz9wqaawhkvswv4035xknlicia0m79r8n666s1yf59cfpmdqgs3"))
+         "1jsna4xwyph1gg72wwqlpavb65g5nc3db1vmcs1qcw1mdgasdjhk"))
        (modules '((guix build utils)))
        (snippet
         '(delete-file-recursively "src/boost"))))
-    (properties `((upstream-name . "mzR")))
+    (properties
+     `((upstream-name . "mzR")
+       (updater-extra-inputs . ("boost"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -8023,13 +8071,13 @@ previously been used in XCMS.")
 (define-public r-numbat
   (package
     (name "r-numbat")
-    (version "1.3.0")
+    (version "1.3.2-1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "numbat" version))
               (sha256
                (base32
-                "0499i20kkpr58b59xmw7d4q4dgp6ryfb9jj55idvhaa2k1kv28n6"))))
+                "1b9bykgw3z7a8bky5yv2g402gdapv8kcla2kbbyqvs77x4wba4q4"))))
     (properties `((upstream-name . "numbat")))
     (build-system r-build-system)
     (propagated-inputs (list r-ape
@@ -8266,6 +8314,29 @@ the results is also provided.  All PCA methods make use of the same data
 structure (pcaRes) to provide a common interface to the PCA results.")
     (license license:gpl3+)))
 
+(define-public r-pfamanalyzer
+  (package
+    (name "r-pfamanalyzer")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "pfamAnalyzeR" version))
+              (sha256
+               (base32
+                "0zff887lc4bjrv683kqsw47vjwmf6886wybklsf2wd6hpy23mxfy"))))
+    (properties `((upstream-name . "pfamAnalyzeR")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-dplyr r-magrittr r-readr r-stringr r-tibble))
+    (native-inputs (list r-knitr))
+    (home-page "https://bioconductor.org/packages/pfamAnalyzeR")
+    (synopsis "Identification of domain isotypes in pfam data")
+    (description
+     "This R package enables the user to read pfam predictions into R.  Most
+human protein domains exist as multiple distinct variants termed domain
+isotypes. This R package enables the identification and classification of such
+domain isotypes from pfam data.")
+    (license license:expat)))
+
 ;; This is a CRAN package, but it depends on a Bioconductor package:
 ;; r-aroma-light, r-dnacopy..
 (define-public r-pscbs
@@ -8733,6 +8804,40 @@ differential expression analysis, RNAseq data and related problems.")
     ;; Any version of the LGPL
     (license license:lgpl3+)))
 
+(define-public r-saturn
+  (package
+    (name "r-saturn")
+    (version "1.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "satuRn" version))
+              (sha256
+               (base32
+                "0frm7iblxkc8ajcdqrfgsvf4krn6x8cr3mx7fnzq06xij0mqm3sj"))))
+    (properties `((upstream-name . "satuRn")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-biocparallel
+                             r-boot
+                             r-ggplot2
+                             r-limma
+                             r-locfdr
+                             r-matrix
+                             r-pbapply
+                             r-summarizedexperiment))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/statOmics/satuRn")
+    (synopsis
+     "Analysis of differential transcript usage for scRNA-seq applications")
+    (description
+     "satuRn provides a framework for performing differential transcript usage
+analyses.  The package consists of three main functions.  The first function,
+@code{fitDTU}, fits quasi-binomial generalized linear models that model
+transcript usage in different groups of interest.  The second function,
+@code{testDTU}, tests for differential usage of transcripts between groups of
+interest.  Finally, @code{plotDTU} visualizes the usage profiles of
+transcripts in groups of interest.")
+    (license license:artistic2.0)))
+
 (define-public r-scannotatr
   (package
     (name "r-scannotatr")
@@ -8819,13 +8924,13 @@ comprehensive scDblFinder method.")
 (define-public r-scistreer
   (package
     (name "r-scistreer")
-    (version "1.1.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "scistreer" version))
               (sha256
                (base32
-                "0cdp26ngfp5rxa21nqnj6j2098f6996368g4msb3shh7n75np4s9"))))
+                "03nd4p7ik66v09yv18c0z1bvdnkr5m0axk78yapd2ri80ihmyi3c"))))
     (properties `((upstream-name . "scistreer")))
     (build-system r-build-system)
     (propagated-inputs (list r-ape
@@ -9356,13 +9461,13 @@ involving two separate genomic loci encoded as GRanges objects.")
 (define-public r-summarizedexperiment
   (package
     (name "r-summarizedexperiment")
-    (version "1.30.1")
+    (version "1.30.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "SummarizedExperiment" version))
               (sha256
                (base32
-                "0wj82nmqg9g8663pg5f4h7hqhr1q4ghhiif2p7x1pxmh425sn554"))))
+                "05dy57fi43rpq9bhbsc4apa62xki99r84098pbvi3rjmac811425"))))
     (properties
      `((upstream-name . "SummarizedExperiment")))
     (build-system r-build-system)
@@ -9422,14 +9527,14 @@ unmodeled, or latent sources of noise.")
 (define-public r-systempiper
   (package
     (name "r-systempiper")
-    (version "2.6.0")
+    (version "2.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "systemPipeR" version))
        (sha256
         (base32
-         "1yg650xkhmp6gcikiiv63g47k1xycg2mj8wxfnihgmlmlw4433yk"))))
+         "068rikfq32awhvj0abl30bghv5k2z4zlfkbxpmsdapxhmdzhgnba"))))
     (properties `((upstream-name . "systemPipeR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10313,13 +10418,13 @@ fitting of some classes of graphical Markov models.")
 (define-public r-ggpicrust2
   (package
     (name "r-ggpicrust2")
-    (version "1.7.0")
+    (version "1.7.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggpicrust2" version))
               (sha256
                (base32
-                "0rw2nrmnniff5hb56r21rk0mphba74fppxsa5ps2xamg1a63qfyw"))))
+                "0a4ykfybwx1qhgn7ic29dzigiazj248iihdr1597jxj505q21gay"))))
     (properties `((upstream-name . "ggpicrust2")))
     (build-system r-build-system)
     (propagated-inputs (list r-aldex2
@@ -10329,6 +10434,7 @@ fitting of some classes of graphical Markov models.")
                              r-dplyr
                              r-edger
                              r-ggally
+                             r-ggh4x
                              r-ggplot2
                              r-ggprism
                              r-lefser
@@ -10337,7 +10443,6 @@ fitting of some classes of graphical Markov models.")
                              r-metagenomeseq
                              r-microbiomestat
                              r-patchwork
-                             r-phyloseq
                              r-readr
                              r-summarizedexperiment
                              r-tibble
@@ -10492,13 +10597,13 @@ enrichedGO (addGeneIDs).")
 (define-public r-matrixgenerics
   (package
    (name "r-matrixgenerics")
-   (version "1.12.0")
+   (version "1.12.2")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "MatrixGenerics" version))
             (sha256
              (base32
-              "17a4gvc1bgiym6z5dy0cigvary4knc4bpmq9bymjlwsg9337b4wg"))))
+              "1bzdhm2dj93xffla00hphxn45mpyn3cr8nv8d5xjqgx8j136biyy"))))
    (properties
     `((upstream-name . "MatrixGenerics")))
    (build-system r-build-system)
@@ -10735,14 +10840,14 @@ parsing of genetic sequencing data from ribosome profiling experiments.")
 (define-public r-interactionset
   (package
     (name "r-interactionset")
-    (version "1.28.0")
+    (version "1.28.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "InteractionSet" version))
        (sha256
         (base32
-         "15bvjhwh7v4ldg5q52h1y5ks75qw85zynnybcaccypws3zlwvacn"))))
+         "1vs3mqf3x8zk7p83jkv41kag1bmn5zxrr3j1ldqk6wxsl77h55c5"))))
     (properties
      `((upstream-name . "InteractionSet")))
     (build-system r-build-system)
@@ -10941,13 +11046,13 @@ information.")
 (define-public r-glmgampoi
   (package
     (name "r-glmgampoi")
-    (version "1.12.1")
+    (version "1.12.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "glmGamPoi" version))
               (sha256
                (base32
-                "05v9lrjbipz9av1gb0x8kd9mkivxy13wjbs5g6rdw3y72gqqv91d"))))
+                "0d6q8vn8z90k8ffskcn9jmgg5x5pfb3wjv67bqskasy38inn1zg7"))))
     (properties `((upstream-name . "glmGamPoi")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11627,14 +11732,14 @@ coordinates.")
 (define-public r-lpsymphony
   (package
     (name "r-lpsymphony")
-    (version "1.28.0")
+    (version "1.28.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "lpsymphony" version))
        (sha256
         (base32
-         "096d0dql1cg85mmxba3dy2a7ba3sxqphsviqqvx1n35xiidsnpyp"))))
+         "08b4d7k5qx19bpg12pw89ckk8x6r2n28qjdxbmy1cxn6dcgzhijd"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -11649,7 +11754,7 @@ coordinates.")
     (inputs
      (list zlib))
     (native-inputs
-     (list pkg-config r-knitr))
+     (list gfortran pkg-config r-knitr))
     (home-page "https://r-forge.r-project.org/projects/rsymphony")
     (synopsis "Symphony integer linear programming solver in R")
     (description
@@ -13574,12 +13679,12 @@ frequency matrices from nine public sources, for multiple organisms.")
 (define-public r-motifbreakr
   (package
    (name "r-motifbreakr")
-   (version "2.13.7")
+   (version "2.14.2")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "motifbreakR" version))
             (sha256
-             (base32 "0j4i3059n0g9n73nyxaca7pd4hncvgp0ww63i3kyp5pnvwycsax2"))))
+             (base32 "13fv0rkyb32grswlgzd3zr35p9xpibj2iq62sr23if4w6z5nbml2"))))
    (properties `((upstream-name . "motifbreakR")))
    (build-system r-build-system)
    (propagated-inputs
@@ -14929,14 +15034,14 @@ index.")
 (define-public r-quasr
   (package
     (name "r-quasr")
-    (version "1.40.0")
+    (version "1.40.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "QuasR" version))
        (sha256
         (base32
-         "09k4r5a735022rc33k6a7pr98qxwy8ijsn451hcw18dimqzm78bx"))))
+         "08vns1wbgpxw1x6djp84f9hl3gqaybbw9917ghfzk0x3ijpvggbg"))))
     (properties `((upstream-name . "QuasR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16290,14 +16395,14 @@ metrics, with methods for objects produced by the @code{methylumi} and
 (define-public r-gdsfmt
   (package
     (name "r-gdsfmt")
-    (version "1.36.0")
+    (version "1.36.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gdsfmt" version))
        (sha256
         (base32
-         "10k445cwb5jhgcr0zf85x24mvldwk26zpwh0wq4himr44aha3bwx"))
+         "11qib2znznzvyb0x9qm1nfg9lhyqy63yrdjicy7n3n6l8dfd2lx7"))
        (modules '((guix build utils)))
        ;; Remove bundled sources of zlib, lz4, and xz.  Don't attempt to build
        ;; them and link with system libraries instead.
@@ -16320,7 +16425,9 @@ metrics, with methods for objects produced by the @code{methylumi} and
            (substitute* "src/CoreArray/dStream.h"
              (("include \"../(ZLIB|LZ4|XZ/api)/(.*)\"" _ _ header)
               (string-append "include <" header ">")))))))
-    (properties `((upstream-name . "gdsfmt")))
+    (properties
+     `((upstream-name . "gdsfmt")
+       (updater-extra-inputs . ("lz4" "xz" "zlib"))))
     (build-system r-build-system)
     (inputs
      (list lz4 xz zlib))
@@ -16552,14 +16659,14 @@ provides methods for retrieving enriched pathways.")
 (define-public r-variantfiltering
   (package
     (name "r-variantfiltering")
-    (version "1.36.0")
+    (version "1.36.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "VariantFiltering" version))
        (sha256
         (base32
-         "1j9fkqsxq7z3w2m435lqnrm8d17cd7l4873h26slmxhdazc9n94i"))))
+         "0v0shsv0s9fzakdb4p84jfc4z57ryan27r1dkbvb3v25kjrhd8fi"))))
     (properties
      `((upstream-name . "VariantFiltering")))
     (build-system r-build-system)
@@ -16658,14 +16765,14 @@ arrays based on fast wavelet-based functional models.")
 (define-public r-variancepartition
   (package
     (name "r-variancepartition")
-    (version "1.30.0")
+    (version "1.30.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "variancePartition" version))
        (sha256
         (base32
-         "052xay39bzxyn0li631zy2nl08vp7q85q4phigwswpavfhl4w71g"))))
+         "17jssd327l0miw52iadag2dbk8w4mhv2vwjpzdw89p8gww47bmbv"))))
     (properties
      `((upstream-name . "variancePartition")))
     (build-system r-build-system)
@@ -16761,14 +16868,14 @@ data.")
 (define-public r-universalmotif
   (package
     (name "r-universalmotif")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "universalmotif" version))
        (sha256
         (base32
-         "0v7c624y2sbqs6mc6kd6dynx24zakcilaswssxmplrcx15im87cn"))))
+         "0v1085dl16a3494f1fxc9rk1ffz3si89mdwbmnnczyhj5p13pfx8"))))
     (properties
      `((upstream-name . "universalmotif")))
     (build-system r-build-system)
@@ -17565,13 +17672,13 @@ monograph.")
 (define-public r-bioccheck
   (package
     (name "r-bioccheck")
-    (version "1.36.0")
+    (version "1.36.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "BiocCheck" version))
               (sha256
                (base32
-                "15f4jx4rkhi6aakdmy23dh3nlb2psaxkvwvrbya9vlsf5lmhajf9"))))
+                "0a0fnmqln13iglnw8smbbr4k7hdvacipxa04zhqylygpsq1246bc"))))
     (properties
      `((upstream-name . "BiocCheck")))
     (build-system r-build-system)
@@ -18454,13 +18561,13 @@ objects from the @code{graph} package.")
 (define-public r-fishpond
   (package
     (name "r-fishpond")
-    (version "2.6.0")
+    (version "2.6.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "fishpond" version))
               (sha256
                (base32
-                "0lpafc1770kh4j151509d9lrpfj9jgla14km4vsfrqjmyhf2prss"))))
+                "0zsw4j6gk25303xpdwnkda2sq3mb4zb4p1mzwiyf7hdyf87zis05"))))
     (properties `((upstream-name . "fishpond")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19088,14 +19195,14 @@ variable and significantly correlated genes.")
 (define-public r-sparsematrixstats
   (package
     (name "r-sparsematrixstats")
-    (version "1.12.0")
+    (version "1.12.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "sparseMatrixStats" version))
        (sha256
         (base32
-         "0yng347pnsrkbjgfw9xi20ms57kkbdgzh3sz3sj24dp6k0p5s3da"))))
+         "00jalzg6yphi8ci4iid7x38jlsrvvdswrq7cqa7jybs26ayjldw1"))))
     (properties
      `((upstream-name . "sparseMatrixStats")))
     (build-system r-build-system)
@@ -19113,14 +19220,14 @@ data in the column sparse format.")
 (define-public r-delayedmatrixstats
   (package
     (name "r-delayedmatrixstats")
-    (version "1.22.0")
+    (version "1.22.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DelayedMatrixStats" version))
        (sha256
         (base32
-         "1mjdk76vmjzmmll0r73kfdi3x77hpdbk3jgzdqryxg4gna597q7j"))))
+         "13iqlw74zh65y2ckwg0b3xbqc6jgj34xjgsg9axfv7j7znwk9igg"))))
     (properties
      `((upstream-name . "DelayedMatrixStats")))
     (build-system r-build-system)
@@ -20258,14 +20365,14 @@ package, primarily for creation of the underlying Conda instance.")
 (define-public r-basilisk
   (package
     (name "r-basilisk")
-    (version "1.12.0")
+    (version "1.12.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "basilisk" version))
        (sha256
         (base32
-         "02ai6ybxhj9q9mshkf17ivvqwsh9lhz7fig5wvr3m7a48hmqqg55"))))
+         "0bg6jfl12jsmhgby7x7g2vfmi61rx0jdksi97hb0zajgh1nvhirh"))))
     (properties `((upstream-name . "basilisk")))
     (build-system r-build-system)
     (propagated-inputs
@@ -20284,14 +20391,14 @@ Python environments in a single R session.")
 (define-public r-biocthis
   (package
     (name "r-biocthis")
-    (version "1.10.1")
+    (version "1.10.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "biocthis" version))
        (sha256
         (base32
-         "1kmgahjyyrvs475as24yk0jniswjaa507q6zs8zq8jjqa26gy6zj"))))
+         "1v0qrypdzl1bg85k8i7qamb6709cgk4ypmisjh6bn5r36nqd5qx4"))))
     (properties `((upstream-name . "biocthis")))
     (build-system r-build-system)
     (arguments
@@ -20489,14 +20596,14 @@ using aCGH or sequencing.")
 (define-public r-bionero
   (package
     (name "r-bionero")
-    (version "1.8.0")
+    (version "1.8.5")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BioNERO" version))
        (sha256
         (base32
-         "0733v4mijf94gn0sbkhiinb3hxlsfqw2l89gx94k88sp3qy2qzvc"))))
+         "0nrvq6cn55qzp66pqssyfxl2wh5dfqndchcv8qgfqajsnz8i35xm"))))
     (properties `((upstream-name . "BioNERO")))
     (build-system r-build-system)
     (propagated-inputs
@@ -20504,8 +20611,8 @@ using aCGH or sequencing.")
            r-complexheatmap
            r-dynamictreecut
            r-genie3
+           r-ggdendro
            r-ggnetwork
-           r-ggnewscale
            r-ggplot2
            r-ggrepel
            r-igraph
@@ -20513,10 +20620,10 @@ using aCGH or sequencing.")
            r-matrixstats
            r-minet
            r-netrep
-           r-networkd3
            r-patchwork
            r-rcolorbrewer
            r-reshape2
+           r-rlang
            r-summarizedexperiment
            r-sva
            r-wgcna))
@@ -20982,13 +21089,13 @@ estimates, etc.")
 (define-public r-tcgabiolinks
   (package
     (name "r-tcgabiolinks")
-    (version "2.28.2")
+    (version "2.28.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "TCGAbiolinks" version))
        (sha256
-        (base32 "16hpljnqskgv7mycj0ipfxhvkyy0hcqvnrn5m416plwcx5cj2fjm"))))
+        (base32 "1hh09ya4jg062k1ibp1cpvdrgv6gwr95ch57iycgd3cjc5g0xhii"))))
     (properties `((upstream-name . "TCGAbiolinks")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 87e7c33b90..341731d066 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -687,6 +687,59 @@ and utilities for PacBio C++ applications.")
 suite native in R.")
       (license license:expat))))
 
+(define-public r-bpcells
+  (let ((commit "32ce67312185d3ed1046b4218dd3aaf1b35dcfda")
+        (revision "1"))
+    (package
+      (name "r-bpcells")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/bnprks/BPCells/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0im4sqvbii326acmd1hnimyzsllnbvnh9al3dp1nla6isgi7s6cg"))))
+      (properties `((upstream-name . "BPCells")))
+      (build-system r-build-system)
+      (arguments
+       (list
+        #:phases
+        '(modify-phases %standard-phases
+           (add-after 'unpack 'do-not-tune
+             (lambda _
+               (substitute* "configure"
+                 (("\"-march=native\"") "\"\"")))))))
+      (inputs (list hdf5 zlib))
+      (propagated-inputs (list r-dplyr
+                               r-ggplot2
+                               r-ggrepel
+                               r-hexbin
+                               r-magrittr
+                               r-matrix
+                               r-patchwork
+                               r-rcolorbrewer
+                               r-rcpp
+                               r-rcppeigen
+                               r-rlang
+                               r-scales
+                               r-scattermore
+                               r-stringr
+                               r-tibble
+                               r-tidyr
+                               r-vctrs))
+      (native-inputs (list pkg-config))
+      (home-page "https://github.com/bnprks/BPCells/")
+      (synopsis "Single cell counts matrices to PCA")
+      (description
+       "This is a package providing efficient operations for single cell
+ATAC-seq fragments and RNA counts matrices.  It is interoperable with standard
+file formats, and introduces efficient bit-packed formats that allow large
+storage savings and increased read speeds.")
+      (license license:gpl3))))
+
 (define-public r-btools
   (let ((commit "fa21d4ca01d37ea4d98b45582453f3bf95cbc2b5")
         (revision "1"))
@@ -822,6 +875,78 @@ attributes of microbiome data - zero-inflation and over-dispersion, are
 simultaneously considered.")
       (license license:gpl3))))
 
+(define-public r-numbat
+  (let ((commit "4ab7752e7d267a3f443756675728521a9b0a7295")
+        (revision "1"))
+    (package
+      (name "r-numbat")
+      (version (git-version "1.3.2-1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/kharchenkolab/numbat")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0wa2cz5iy570r2a57bd74jramxayvfhmxznb0vq4vyk1ia8l5jd1"))))
+      (properties `((upstream-name . "numbat")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-ape
+             r-catools
+             r-data-table
+             r-dendextend
+             r-dplyr
+             r-genomicranges
+             r-ggplot2
+             r-ggraph
+             r-ggtree
+             r-glue
+             r-igraph
+             r-iranges
+             r-logger
+             r-magrittr
+             r-matrix
+             r-optparse
+             r-paralleldist
+             r-patchwork
+             r-pryr
+             r-purrr
+             r-r-utils
+             r-rcpp
+             r-rcpparmadillo
+             r-rhpcblasctl
+             r-roptim
+             r-scales
+             r-scistreer
+             r-stringr
+             r-tibble
+             r-tidygraph
+             r-tidyr
+             r-vcfr
+             r-zoo))
+      (home-page "https://github.com/kharchenkolab/numbat")
+      (synopsis "Haplotype-Aware CNV Analysis from scRNA-Seq")
+      (description
+       "This package provides a computational method that infers copy number
+variations (CNVs) in cancer scRNA-seq data and reconstructs the tumor
+phylogeny.  numbat integrates signals from gene expression, allelic ratio, and
+population haplotype structures to accurately infer allele-specific CNVs in
+single cells and reconstruct their lineage relationship.  numbat can be used
+to:
+
+@enumerate
+@item detect allele-specific copy number variations from single-cells;
+@item differentiate tumor versus normal cells in the tumor microenvironment;
+@item infer the clonal architecture and evolutionary history of profiled
+tumors.
+@end enumerate
+
+numbat does not require tumor/normal-paired DNA or genotype data, but operates
+solely on the donor scRNA-data data (for example, 10x Cell Ranger output).")
+      (license license:expat))))
+
 (define-public r-p2data
   (let ((commit "7d4c0e17d7899f9d9b08ab2bf455abe150912f4c")
         (revision "1"))
@@ -3859,17 +3984,21 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
 (define-public python-dnaio
   (package
     (name "python-dnaio")
-    (version "0.6.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dnaio" version))
        (sha256
         (base32
-         "14v5yyasq2bz34j38wi3xfcp06jj7l35ppibjcn95l2n73hz3zwi"))))
-    (build-system python-build-system)
+         "064xc4j8plb4fpkm8mw55715mvpvi2sxsknpjx18c2zh904salfy"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:tests? #false)) ;there are none
     (native-inputs
-     (list python-cython python-pytest python-xopen))
+     (list python-cython python-pytest python-setuptools-scm))
+    (propagated-inputs
+     (list python-xopen))
     (home-page "https://github.com/marcelm/dnaio/")
     (synopsis "Read FASTA and FASTQ files efficiently")
     (description
@@ -3941,28 +4070,40 @@ annotations of the genome.")
 (define-public cutadapt
   (package
     (name "cutadapt")
-    (version "2.1")
+    (version "4.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "cutadapt" version))
               (sha256
                (base32
-                "1vqmsfkm6llxzmsz9wcfcvzx9a9f8iabvwik2rbyn7nc4wm25z89"))))
-    (build-system python-build-system)
+                "0xgsv88mrlw2b1radmd1104y7bg8hvv54ay7xfdpnjiw2jgkrha9"))))
+    (build-system pyproject-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'always-cythonize
-           (lambda _
-             (delete-file "src/cutadapt/_align.c")
-             ;; If PKG-INFO exists, setup.py decides not to run Cython.
-             (substitute* "setup.py"
-               (("os.path.exists\\('PKG-INFO'\\):")
-                "os.path.exists('totally-does-not-exist'):")))))))
+     (list
+      #:test-flags
+      '(list "-k" "not test_no_read_only_comment_fasta_input")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-test
+            (lambda _
+              (let ((site (string-append
+                           #$output "/lib/python"
+                           #$(version-major+minor
+                              (package-version python))
+                           "/site-packages")))
+                (substitute* "tests/test_command.py"
+                  (("env=\\{\"LC_CTYPE\": \"C\"\\},")
+                   (string-append "env={\"LC_CTYPE\": \"C\", \"GUIX_PYTHONPATH\": \""
+                                  (getenv "GUIX_PYTHONPATH") ":" site
+                                  "\"},")))))))))
     (inputs
      (list python-dnaio python-xopen))
     (native-inputs
-     (list python-cython python-pytest python-setuptools-scm))
+     (list python-cython
+           python-pytest
+           python-pytest-mock
+           python-pytest-timeout
+           python-setuptools-scm))
     (home-page "https://cutadapt.readthedocs.io/en/stable/")
     (synopsis "Remove adapter sequences from nucleotide sequencing reads")
     (description
@@ -9673,7 +9814,7 @@ differently labelled data.")
 (define-public r-pando
   (package
     (name "r-pando")
-    (version "1.0.1")
+    (version "1.0.5")
     (source
      (origin
        (method git-fetch)
@@ -9682,21 +9823,22 @@ differently labelled data.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0c83anzdrbvg47p9xns2bxpjlx5z328can3jmzilw6rygwp7hyii"))))
+        (base32 "04kr1b28p5j7h48g32cldkg87xcmxnmd4kspygkfs7a4amihpi66"))))
     (properties `((upstream-name . "Pando")))
     (build-system r-build-system)
     (propagated-inputs
      (list r-bayestestr
-           r-brms
            r-foreach
            r-genomicranges
            r-ggplot2
            r-ggpointdensity
            r-ggraph
            r-glmnetutils
+           r-grr
            r-iranges
            r-irlba
            r-matrix
+           r-matrixgenerics
            r-motifmatchr
            r-pals
            r-patchwork
@@ -9706,8 +9848,7 @@ differently labelled data.")
            r-tfbstools
            r-tidygraph
            r-tidyverse
-           r-uwot
-           r-xgboost))
+           r-uwot))
     (native-inputs (list r-knitr))
     (home-page "https://github.com/quadbiolab/Pando")
     (synopsis "Infer regulomes from multi-modal single-cell genomics data")
@@ -12284,7 +12425,7 @@ Browser.")
 (define-public bismark
   (package
     (name "bismark")
-    (version "0.20.1")
+    (version "0.24.1")
     (source
      (origin
        (method git-fetch)
@@ -12294,69 +12435,90 @@ Browser.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0xchm3rgilj6vfjnyzfzzymfd7djr64sbrmrvs3njbwi66jqbzw9"))))
+         "0j4dy33769f0jr2w1brb710zxwpg3zwjlnvlcpi5pr6mqc8dkg8n"))
+       (snippet '(delete-file "plotly/plot.ly"))))
     (build-system perl-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:modules ((guix build utils)
+     (list
+      #:tests? #f                       ; there are no tests
+      #:modules '((guix build utils)
                   (ice-9 popen)
                   (srfi srfi-26)
                   (guix build perl-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         ;; The bundled plotly.js is minified.
-         (add-after 'unpack 'replace-plotly.js
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((file (assoc-ref inputs "plotly.js"))
-                    (installed "plotly/plotly.js"))
-               (let ((minified (open-pipe* OPEN_READ "uglifyjs" file)))
-                 (call-with-output-file installed
-                   (cut dump-port minified <>))))
-             #t))
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (share   (string-append out "/share/bismark"))
-                    (docdir  (string-append out "/share/doc/bismark"))
-                    (docs    '("Docs/Bismark_User_Guide.html"))
-                    (scripts '("bismark"
-                               "bismark_genome_preparation"
-                               "bismark_methylation_extractor"
-                               "bismark2bedGraph"
-                               "bismark2report"
-                               "coverage2cytosine"
-                               "deduplicate_bismark"
-                               "filter_non_conversion"
-                               "bam2nuc"
-                               "bismark2summary"
-                               "NOMe_filtering")))
-               (substitute* "bismark2report"
-                 (("\\$RealBin/plotly")
-                  (string-append share "/plotly")))
-               (mkdir-p share)
-               (mkdir-p docdir)
-               (mkdir-p bin)
-               (for-each (lambda (file) (install-file file bin))
-                         scripts)
-               (for-each (lambda (file) (install-file file docdir))
-                         docs)
-               (copy-recursively "Docs/Images" (string-append docdir "/Images"))
-               (copy-recursively "plotly"
-                                 (string-append share "/plotly"))
-
-               ;; Fix references to gunzip
-               (substitute* (map (lambda (file)
-                                   (string-append bin "/" file))
-                                 scripts)
-                 (("\"gunzip -c")
-                  (string-append "\"" (assoc-ref inputs "gzip")
-                                 "/bin/gunzip -c")))
-               #t))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'replace-plotly.js
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let* ((share (string-append #$output "/share/bismark"))
+                     (file (assoc-ref inputs "plotly.js"))
+                     (installed "plotly/plotly.js"))
+                ;; The bundled plotly.js is minified.
+                (let ((minified (open-pipe* OPEN_READ "uglifyjs" file)))
+                  (call-with-output-file installed
+                    (cut dump-port minified <>)))
+                (substitute* "bismark2report"
+                  (("plotly_template.tpl")
+                   (string-append share "/plotly/plotly_template.tpl"))
+                  (("my \\$plotly_code = read_report_template\\('plot.ly'\\);")
+                   (string-append "\
+my $plotly_code = read_report_template('" share "/plotly/plotly.js');
+$plotly_code = \"<script>\" . $plotly_code . \"</script>\";"))))))
+          (replace 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "bismark"
+                (("\\(\\!system \"which samtools >/dev/null 2>&1\"\\)")
+                 "(\"true\")")
+                (("\\$samtools_path = `which samtools`;")
+                 (string-append "$samtools_path = '"
+                                (search-input-file inputs "/bin/samtools")
+                                "';"))
+                (("\\$path_to_bowtie2 = 'bowtie2'")
+                 (string-append "$path_to_bowtie2 = '"
+                                (search-input-file inputs "/bin/bowtie2")
+                                "'"))
+                (("\\$path_to_hisat2 = 'hisat2'")
+                 (string-append "$path_to_hisat2 = '"
+                                (search-input-file inputs "/bin/hisat2")
+                                "'"))
+                (("\\$path_to_minimap2 = 'minimap2'")
+                 (string-append "$path_to_minimap2 = '"
+                                (search-input-file inputs "/bin/minimap2")
+                                "'")))))
+          (delete 'build)
+          (replace 'install
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((bin (string-append #$output "/bin"))
+                     (share   (string-append #$output "/share/bismark"))
+                     (docdir  (string-append #$output "/share/doc/bismark"))
+                     (scripts '("bismark"
+                                "bismark_genome_preparation"
+                                "bismark_methylation_extractor"
+                                "bismark2bedGraph"
+                                "bismark2report"
+                                "coverage2cytosine"
+                                "deduplicate_bismark"
+                                "filter_non_conversion"
+                                "bam2nuc"
+                                "bismark2summary"
+                                "NOMe_filtering")))
+                (mkdir-p share)
+                (mkdir-p docdir)
+                (mkdir-p bin)
+                (for-each (lambda (file) (install-file file bin))
+                          scripts)
+                (copy-recursively "docs" docdir)
+                (copy-recursively "plotly"
+                                  (string-append share "/plotly"))
+
+                ;; Fix references to gunzip
+                (substitute* (map (lambda (file)
+                                    (string-append bin "/" file))
+                                  scripts)
+                  (("\"gunzip -c")
+                   (string-append "\"" (assoc-ref inputs "gzip")
+                                  "/bin/gunzip -c")))))))))
     (inputs
-     (list gzip perl-carp perl-getopt-long))
+     (list bowtie gzip hisat2 minimap2 perl-carp perl-getopt-long samtools))
     (native-inputs
      `(("plotly.js"
         ,(origin
@@ -14644,6 +14806,32 @@ visualize the results within R framework.  The disgenet2r package is designed
 to retrieve data from DisGeNET v6.0 (Jan, 2019).")
       (license license:expat))))
 
+(define-public r-dtmm
+  (let ((commit "3a553b1e17d27d90a496d2e23e98e5dfe4abc266")
+        (revision "1"))
+    (package
+      (name "r-dtmm")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/MaStatLab/DTMM")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "19279wafqfs9gk9489f8zsp52qcdb0mkxgvqszq4i733ckr2mmkk"))))
+      (properties `((upstream-name . "DTMM")))
+      (build-system r-build-system)
+      (propagated-inputs (list r-ape r-rcpp r-rcpparmadillo))
+      (home-page "https://github.com/MaStatLab/DTMM")
+      (synopsis "Dirichlet-tree multinomial mixtures")
+      (description
+       "This package lets you perform unsupervised clustering of amplicon
+sequencing data in microbiome studies with the Dirichlet-tree Multinomial
+Mixtures.")
+      (license license:cc0))))
+
 (define-public r-dyngen
   (package
     (name "r-dyngen")
@@ -17253,6 +17441,30 @@ information...  The package can also be used to extract data from @code{.loom}
 files.")
       (license license:expat))))
 
+(define-public rscape
+  (package
+    (name "rscape")
+    (version "2.0.0.q")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://eddylab.org/software/rscape/"
+                                  "rscape_v" version ".tar.gz"))
+              (sha256
+               (base32
+                "1jabvm3fzh8iy4803ns12v1fsy28x6wdy8wx4ik8y0mfac4h787q"))))
+    (build-system gnu-build-system)
+    (propagated-inputs (list gsl openmpi))
+    (native-inputs (list automake autoconf))
+    (home-page "https://github.com/EddyRivasLab/R-scape")
+    (synopsis "RNA structural covariation above phylogenetic expectation")
+    (description
+     "R-scape discovers RNA secondary structure consensus elements.
+These elements include riboswitches and ribozymes.  It utilizes probabilistic
+modeling of sequence alignments, explicitly considering folding dependencies.
+The tool enables the de novo search for new structural elements and
+facilitates comparative analysis of known RNA families.")
+    (license license:bsd-3)))
+
 (define-public r-seurat-utils
   (let ((commit "0b6f5b548a49148cfbeaa654e8a618c0a020afa5")
         (revision "1"))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 38e959b884..4266e7af1f 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -40,6 +40,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module ((guix licenses) #:prefix l:)
   #:use-module (guix gexp)
@@ -451,7 +452,7 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.5.2")
+    (version "4.5.4")
     (source
      (origin
        (method git-fetch)
@@ -460,37 +461,20 @@ desktops.")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07s0ypkd1zzkw9qhfwxxx7s6zizjz0448al17xmc1b48phn46hjk"))))
-    (build-system gnu-build-system)
+        (base32 "1r4vqlwmvg7b0ibq53m7ascyykv3v66qxlwfi0zmmi1ig7rlkxkk"))))
+    (build-system qt-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "--with-boost-libdir="
-                            (assoc-ref %build-inputs "boost")
-                            "/lib")
-             "--enable-debug"
-             "QMAKE_LRELEASE=lrelease")
-       #:modules ((guix build gnu-build-system)
-                  (guix build qt-utils)
-                  (guix build utils))
-       #:imported-modules (,@%gnu-build-system-modules
-                           (guix build qt-utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-qt
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-qt-program "qbittorrent" #:output out #:inputs inputs))
-             #t)))))
+     (list #:configure-flags #~(list "-DTESTING=ON")
+           #:test-target "check"))
     (native-inputs
-     (list pkg-config qttools-5))
+     (list qttools-5))
     (inputs
-     `(("boost" ,boost)
-       ("libtorrent-rasterbar" ,libtorrent-rasterbar)
-       ("openssl" ,openssl)
-       ("python" ,python-wrapper)
-       ("qtbase" ,qtbase-5)
-       ("qtsvg-5" ,qtsvg-5)
-       ("zlib" ,zlib)))
+     (list boost
+           libtorrent-rasterbar
+           openssl
+           python-wrapper
+           qtsvg-5
+           zlib))
     (home-page "https://www.qbittorrent.org/")
     (synopsis "Graphical BitTorrent client")
     (description
@@ -510,15 +494,46 @@ features.")
       (arguments
        (substitute-keyword-arguments (package-arguments base)
          ((#:configure-flags configure-flags)
-          #~(append #$configure-flags
-                    (list "--disable-gui")))
-         ((#:phases phases)
-          #~(modify-phases #$phases
-              (delete 'wrap-qt)))))
+          #~(cons "-DGUI=OFF" #$configure-flags))))
       (inputs
        (modify-inputs (package-inputs base)
          (delete "qtsvg-5"))))))
 
+(define-public qbittorrent-enhanced
+  (package
+    (inherit qbittorrent)
+    (name "qbittorrent-enhanced")
+    (version "4.5.2.10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/c0re100/qBittorrent-Enhanced-Edition")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18z4panaqbmhbw5i1yn17wpqzslhy6w08zcc5bx2hhlg8slp1r9j"))))
+    (home-page "https://github.com/c0re100/qBittorrent-Enhanced-Edition")
+    (description
+     "qBittorrent Enhanced is a bittorrent client based on qBittorrent with
+the following features:
+
+@itemize
+@item Auto Ban Xunlei, QQ, Baidu, Xfplay, DLBT and Offline downloader
+@item Auto Ban Unknown Peer from China Option (Default: OFF)
+@item Auto Update Public Trackers List (Default: OFF)
+@item Auto Ban BitTorrent Media Player Peer Option (Default: OFF)
+@item Peer whitelist/blacklist
+@end itemize")))
+
+(define-public qbittorrent-enhanced-nox
+  (package
+    (inherit qbittorrent-enhanced)
+    (name "qbittorrent-enhanced-nox")
+    (arguments (package-arguments qbittorrent-nox))
+    (inputs (package-inputs qbittorrent-nox))))
+
 (define-public deluge
   (package
     (name "deluge")
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index a9685a9ef9..01fd1093ff 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -665,7 +665,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
               (sha256
                (base32
                 "1y5x8vxdgsqdqlsvq01mn8lmw53fqairkhvhhjx83hjva0m4id2h"))))
-    (build-system  gnu-build-system)
+    (build-system gnu-build-system)
     (native-inputs
      (list bison
            dtc
@@ -1484,10 +1484,13 @@ grub-efi-netboot-removable-bootloader.")
                      "U_BOOT_DATE \"Jan 01 1969\"")
                     (("U_BOOT_TIME \"%T\"")
                      "U_BOOT_TIME \"00:00:00\""))))
-              (add-before 'build 'adjust-for-gcc10
+              (add-before 'build 'adjust-for-current-gcc
                 (lambda _
-                  (copy-file "include/linux/compiler-gcc6.h"
-                             "include/linux/compiler-gcc10.h")
+                  (let ((gcc-major-version #$(version-major
+                                              (package-version gcc))))
+                    (copy-file "include/linux/compiler-gcc6.h"
+                               (string-append "include/linux/compiler-gcc"
+                                              gcc-major-version ".h")))
                   (substitute* "arch/arm/Makefile"
                     (("march=armv5")
                      "march=armv5te"))))
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 5f6a3acc83..602d8f26c5 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -328,6 +328,7 @@ or false to signal an error."
      ((string=? system "arm-eabi") "no-ld.so")
      ((string=? system "avr") "no-ld.so")
      ((string=? system "i686-mingw") "no-ld.so")
+     ((string=? system "or1k-elf") "no-ld.so")
      ((string=? system "x86_64-mingw") "no-ld.so")
      ((string-suffix? "-elf" system) "no-ld.so")
 
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 5ed1978c52..00fc059a74 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -171,14 +171,14 @@ generate such a compilation database.")
 (define-public bmake
   (package
     (name "bmake")
-    (version "20230321")
+    (version "20230622")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "http://www.crufty.net/ftp/pub/sjg/bmake-" version ".tar.gz"))
        (sha256
-        (base32 "0ml2z9ij674bd4227566n0547pcpxpmimp4xw4hj52kl1265czgd"))))
+        (base32 "007ckj2381bmwpxy5zmy2m19p2hxaj7ld80b5lv7i798c2fwj15l"))))
     (build-system gnu-build-system)
     (inputs
      (list bash-minimal))
@@ -211,7 +211,7 @@ generate such a compilation database.")
          (string-append
           "--with-default-sys-path=" #$output "/share/mk"))
       #:make-flags
-      #~(list "INSTALL=install"))) ;; use coreutils install
+      #~(list "INSTALL=install")))      ; use coreutils' install
     (home-page "http://www.crufty.net/help/sjg/bmake.htm")
     (synopsis "BSD's make")
     (description
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 16f3efec25..dbaa67efb6 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -162,7 +162,7 @@ libcdio.")
 (define-public xorriso
   (package
     (name "xorriso")
-    (version "1.5.4")
+    (version "1.5.6.pl02")
     (outputs '("out" "gui"))
     (source (origin
              (method url-fetch)
@@ -170,7 +170,7 @@ libcdio.")
                                  version ".tar.gz"))
              (sha256
               (base32
-               "14p3r6jahfqqw2gf739l5myz5x4qb8h34zyczbpdps2krbq5bh9s"))))
+               "1qfs9ybd9k67r78rp1csijmlrq7mq39f7kpyq6qcap46z5fryvvq"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 87728fefa3..85eeac98a4 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -38,11 +38,12 @@
 ;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2022, 2023 David Elsing <david.elsing@posteo.net>
 ;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
 ;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
+;;; Copyright © 2023 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -596,10 +597,10 @@ It allows the specification of behaviour scenarios using a given-when-then
 pattern.")
       (license license:apsl2))))
 
-(define-public catch2-3.1
+(define-public catch2-3.3
   (package
     (name "catch2")
-    (version "3.1.1")
+    (version "3.3.2")
     (home-page "https://github.com/catchorg/Catch2")
     (source (origin
               (method git-fetch)
@@ -609,66 +610,14 @@ pattern.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qnr5b3zq8brh43f924rgnw5gmmjf9ax7kbq2crz1mlwgmdymxlp"))))
-    (outputs (list "out" "static"))
-    (build-system meson-build-system)
+                "0m6i3lr0qk303ashjpz5vpwmxf76n5d6s8jq6r6kcy6gph525zmp"))))
+    (build-system cmake-build-system)
     (arguments
      (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'unpack 'patch-meson
-            (lambda _
-              (substitute* "src/catch2/meson.build"
-                (("static_library") "both_libraries"))))
-          (add-after 'install 'install-cmake-config
-            (lambda* (#:key outputs #:allow-other-keys)
-              (define prefix (string-append (assoc-ref outputs "out")
-                                            "/lib/cmake/Catch2/"))
-              (mkdir-p prefix)
-              (call-with-output-file (string-append
-                                      prefix
-                                      "catch2-config-version.cmake")
-                (lambda (port)
-                  (format
-                   port
-                   "set(PACKAGE_VERSION ~s)~@
-                    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)~@
-                    set(PACKAGE_VERSION_EXACT TRUE)~@
-                    set(PACKAGE_VERSION_COMPATIBLE TRUE)~@
-                    elseif(PACKAGE_FIND_VERSION VERSION_LESS_EQUAL ~
-                           PACKAGE_VERSION)~@
-                    set(PACKAGE_VERSION_COMPATIBLE TRUE)~@
-                    else()~@
-                    set(PACKAGE_VERSION_COMPATIBLE FALSE)~@
-                    endif()"
-                   #$version)))
-              (call-with-output-file (string-append prefix
-                                                    "catch2-config.cmake")
-                (lambda (port)
-                  (format
-                   port
-                   "include(FindPkgConfig)~@
-                    pkg_check_modules(CATCH2 IMPORTED_TARGET GLOBAL catch2)~@
-                    pkg_check_modules(CATCH2MAIN ~
-                                      IMPORTED_TARGET GLOBAL ~
-                                      catch2 catch2-with-main)~@
-                    if(CATCH2_FOUND)~@
-                      add_library(Catch2::Catch2 ALIAS PkgConfig::CATCH2)~@
-                    endif()~@
-                    if(CATCH2MAIN_FOUND)~@
-                      add_library(Catch2::Catch2WithMain ~
-                                  ALIAS PkgConfig::CATCH2MAIN)~@
-                    endif()")))))
-          (add-after 'install 'move-static-libraries
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out"))
-                    (static (assoc-ref outputs "static")))
-                (for-each
-                 (lambda (file)
-                   (install-file file (string-append static "/lib"))
-                   (delete-file file))
-                 (find-files (string-append out "/lib")
-                             "\\.a$"))))))))
+      #:configure-flags
+      #~(list "-DCATCH_DEVELOPMENT_BUILD=ON"
+              "-DCATCH_ENABLE_WERROR=OFF"
+              "-DBUILD_SHARED_LIBS=ON")))
     (inputs (list python-wrapper))
     (synopsis "Automated test framework for C++ and Objective-C")
     (description "Catch2 stands for C++ Automated Test Cases in Headers and is
@@ -2386,9 +2335,9 @@ failures.")
   (package/inherit python-pytest-enabler-bootstrap
     (arguments
      (substitute-keyword-arguments
-         (package-arguments python-pytest-enabler-bootstrap)
-       ((#:tests? _ #f)
-        #t)
+       (strip-keyword-arguments
+         '(#:tests?)
+         (package-arguments python-pytest-enabler-bootstrap))
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
             (replace 'check
@@ -3198,6 +3147,46 @@ application \"sees\".  It is meant to be loaded using the dynamic linker's
 provides a simple way to achieve this.")
     (license license:gpl2)))
 
+(define-public rapidcheck
+  (let ((commit "a5724ea5b0b00147109b0605c377f1e54c353ba2")
+        (revision "0"))
+    (package
+      (name "rapidcheck")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/emil-e/rapidcheck")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0f2dmsym8ibnwkaidxmgp73mg0sdniwsyn6ppskh74246h29bbcy"))))
+      (arguments
+       (list
+        #:tests? #f                     ;require fetching submodules
+        #:configure-flags #~(list "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'install 'install-extra-headers
+              (lambda _
+                (with-directory-excursion "../source/extras"
+                  (for-each
+                   (lambda (dir)
+                     (let ((dir (string-append dir "/include/rapidcheck/"))
+                           (dest (string-append #$output
+                                                "/include/rapidcheck")))
+                       (copy-recursively dir dest)))
+                   '("boost" "boost_test" "catch" "gmock" "gtest"))))))))
+      (build-system cmake-build-system)
+      (home-page "https://github.com/emil-e/rapidcheck")
+      (synopsis "Property based testing framework for C++")
+      (description "Rapidcheck is a property based testing framework for C++.
+It works by generating random data to try and find a case breaks your given
+pre-condition.")
+      (license license:bsd-2))))
+
 (define-public umockdev
   (package
     (name "umockdev")
@@ -3554,3 +3543,36 @@ with SRFI 64-based test suites.  It comes with a command-line interface
 to run test collections, and a library that includes a test runner and
 helpers for writing tests.")
     (license license:public-domain)))
+
+(define-public subunit
+  (package
+    (name "subunit")
+    (version "1.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/testing-cabal/subunit")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "16n1zxwnmhb7vzixngvmm5zzk4q5jaqqjwyr6pr6w0ys60b7xja3"))))
+    (build-system gnu-build-system)
+    (native-inputs (list autoconf
+                         automake
+                         check
+                         cppunit
+                         libtool
+                         pkg-config
+                         python-fixtures
+                         python-hypothesis
+                         python-testscenarios))
+    (inputs (list perl python))
+    (propagated-inputs (list python-testtools))
+    (home-page "https://github.com/testing-cabal/subunit")
+    (synopsis "Test reporting and control protocol")
+    (description
+     "Subunit is a streaming protocol for test results.  Subunit comes with
+command line filters to process a subunit stream and language bindings for
+Python, C, C++ and shell.  Bindings are easy to write for other languages.")
+    (license (list license:asl2.0 license:bsd-3)))) ;user can pick
diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
index 61a8c8def3..0406837ad7 100644
--- a/gnu/packages/cinnamon.scm
+++ b/gnu/packages/cinnamon.scm
@@ -54,6 +54,7 @@
               (uri (git-reference
                     (url "https://github.com/linuxmint/xapp/")
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0n443lwmxzmfnw03n98cqnm2ah1iij6pwsnwbly8sncmzg5jyklg"))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index bedc6ecca9..e7ff85c5ef 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -809,13 +809,13 @@ sfArk file format to the uncompressed sf2 format.")
   (package
     (name "libmspack")
     (home-page "https://cabextract.org.uk/libmspack/")
-    (version "0.10.1")
+    (version "0.11")
     (source
      (origin
       (method url-fetch)
       (uri (string-append home-page name "-" version "alpha.tar.gz"))
       (sha256
-       (base32 "13janaqsvm7aqc4agjgd4819pbgqv50j88bh5kci1z70wvg65j5s"))))
+       (base32 "06x2xq73lchw5lcq386sx9wk05v21s2f38bi3dwkdk5fy2r1zpbh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -1063,13 +1063,13 @@ tarballs.")
  (package
    (name "cabextract")
    (home-page "https://cabextract.org.uk/")
-   (version "1.9.1")
+   (version "1.11")
    (source (origin
               (method url-fetch)
               (uri (string-append home-page "cabextract-" version ".tar.gz"))
               (sha256
                (base32
-                "19qwhl2r8ip95q4vxzxg2kp4p125hjmc9762sns1dwwf7ikm7hmg"))
+                "1iis7a19n26dax3gsnrw9kb0vwq46rbpicnlyf7p2k2y2nqnsm5m"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index 463a834108..232d994fe3 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -360,6 +360,8 @@ configure network interfaces in Linux containers.")
                  (string-append "CATATONIT_PATH=" (which "true"))))
               (substitute* "vendor/github.com/containers/common/pkg/config/config_linux.go"
                 (("/usr/local/libexec/podman")
+                 (string-append #$output "/libexec/podman"))
+                (("/usr/local/lib/podman")
                  (string-append #$output "/bin")))
               (substitute* "vendor/github.com/containers/common/pkg/config/default.go"
                 (("/usr/libexec/podman/conmon") (which "conmon"))
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 39a34c20dd..7d3db8ea9b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -29,7 +29,7 @@
 ;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
 ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2022, 2023 David Elsing <david.elsing@posteo.net>
 ;;; Copyright © 2022, 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2023 Sughosha <Sughosha@proton.me>
@@ -1344,7 +1344,7 @@ aws-c-http, aws-c-io, aws-c-mqtt, aws-checksums, and s2n.")
     (name "aws-sdk-cpp")
     ; When updating also check for a tagged update to aws-crt-cpp from
     ; https://github.com/aws/aws-sdk-cpp/tree/main/crt
-    (version "1.9.236")
+    (version "1.9.306")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1353,7 +1353,7 @@ aws-c-http, aws-c-io, aws-c-mqtt, aws-checksums, and s2n.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13qhxsbfn81r7lg382wb4d3xfc4a287ikww5i7whddk5yz0j8384"))))
+                "0k3f4xq4vvlwrwgpp0vka4pwzbnkylvrkbbkjksx6wq6g1a2gc2g"))))
     (build-system cmake-build-system)
     (arguments
      '(;; Tests are run during the build phase.
@@ -2553,3 +2553,179 @@ Main features:
 @item No dependencies.
 @end itemize")
     (license license:expat)))
+
+(define-public mpark-variant
+  (package
+    (name "mpark-variant")
+    (version "1.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mpark/variant")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0gz8d5qprlfqb42cfyyc4nbwhgarhw027a9nr52h3gbdn560j0j4"))
+              (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DMPARK_VARIANT_INCLUDE_TESTS=mpark")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'find-googletest
+            (lambda _
+              (substitute* "test/CMakeLists.txt"
+                (("add_subdirectory.*3rdparty/googletest.*\n")
+                 "find_package(GTest REQUIRED)\n")
+                ((".*3rdparty/googletest.*\n") "")
+                ((".*config_compiler_and_linker.*\n") "")
+                (("gtest_main") "gtest gtest_main")))))))
+    (native-inputs (list googletest))
+    (home-page "https://github.com/mpark/variant")
+    (synopsis "Implementation of std::variant for C++11/14/17")
+    (description
+     "MPark.Variant provides the C++17 std::variant for C++11/14/17.  It is
+based on the implementation of std::variant in libc++.")
+    (license license:boost1.0)))
+
+(define-public tsl-hopscotch-map
+  (package
+    (name "tsl-hopscotch-map")
+    (version "2.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Tessil/hopscotch-map")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "012pw37w000pdxdvps0wsqrw6597cm6i6kr5rpl303qmiwqicb2p"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-cmake-test
+            (lambda _
+              (let ((file (open-file "CMakeLists.txt" "a")))
+                (display "\nenable_testing()\nadd_subdirectory(tests)" file)
+                (close-port file))
+              (substitute* "tests/CMakeLists.txt"
+                (("set\\(Boost_USE_STATIC_LIBS.*") "")
+                (("add_subdirectory\\(\\.\\..*")
+                 "add_test(tsl_hopscotch_map_tests tsl_hopscotch_map_tests)\n")))))))
+    (native-inputs (list boost))
+    (home-page "https://github.com/Tessil/hopscotch-map")
+    (synopsis "Hash maps and hash sets using hopscotch hashing")
+    (description "This package provides a C++ implementation of several hash
+map and a hash set variants using open addressing and hopscotch hashing to
+resolve collisions.  It is intended to be fast and provides additional
+features, such as heterogeneous lookups and different growth policies.")
+    (license license:expat)))
+
+(define-public tsl-sparse-map
+  (package
+    (name "tsl-sparse-map")
+    (version "0.6.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Tessil/sparse-map")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0rb7w0hzsj4qbm0dff1niaf75aag9lj0xqhgb3vg5h9hfic62ic2"))
+              (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-cmake-test
+            (lambda _
+              (let ((file (open-file "CMakeLists.txt" "a")))
+                (display "\nenable_testing()\nadd_subdirectory(tests)" file)
+                (close-port file))
+              (substitute* "tests/CMakeLists.txt"
+                (("set\\(Boost_USE_STATIC_LIBS.*") "")
+                (("add_subdirectory\\(\\.\\..*")
+                 "add_test(tsl_sparse_map_tests tsl_sparse_map_tests)\n")))))))
+    (native-inputs (list boost))
+    (home-page "https://github.com/Tessil/sparse-map")
+    (synopsis "Sparse hash map")
+    (description "This package provides a C++ implementation of a hash map and
+a hash set with open addressing and sparse quadratic probing.  It is intended
+to be memory efficient and provides additional features, such as heterogeneous
+lookups and different growth policies.")
+    (license license:expat)))
+
+(define-public tsl-ordered-map
+  (package
+    (name "tsl-ordered-map")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Tessil/ordered-map")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0bz5zgabalb7z0j9scng4zmi95hy7iasry5gz15x6y6dsdz0qf3j"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-cmake-test
+            (lambda _
+              (let ((file (open-file "CMakeLists.txt" "a")))
+                (display "\nenable_testing()\nadd_subdirectory(tests)" file)
+                (close-port file))
+              (substitute* "tests/CMakeLists.txt"
+                (("set\\(Boost_USE_STATIC_LIBS.*") "")
+                (("add_subdirectory\\(\\.\\..*")
+                 "add_test(tsl_ordered_map_tests tsl_ordered_map_tests)\n")))))))
+    (native-inputs (list boost))
+    (home-page "https://github.com/Tessil/ordered-map")
+    (synopsis "Order-preserving hash map and hash set")
+    (description "This package provides a C++ implementation of a hash map and
+a hash set which preserve the order of insertion.  It is intended for
+efficient ordered insertions and lookup, while sacrifing performance for
+ordered erase operations.")
+    (license license:expat)))
+
+(define-public tl-optional
+  (package
+    (name "tl-optional")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/TartanLlama/optional")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0qkjplmhilbi1iqxx3pz0grcx5355ymk6wwd4h4309mk156xgx2q"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-cmake-test
+            (lambda _
+              (substitute* "CMakeLists.txt"
+                (("FetchContent_Declare.*") "")
+                ((".*http.*catchorg/Catch2.*") "")
+                (("FetchContent_MakeAvailable\\(Catch2\\)")
+                 "find_package(Catch2 REQUIRED)")))))))
+    (native-inputs (list catch2))
+    (home-page "https://github.com/TartanLlama/optional")
+    (synopsis "Implementation of std::optional with extensions for C++11/14/17")
+    (description "@code{tl::optional} provides a single-header implementation of
+the std::optional for C++11/14/17, with support for monadic operations added in
+C++23.")
+    (license license:cc0)))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index ba81580258..199bc69c03 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -102,6 +102,7 @@
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tbb)
@@ -438,14 +439,14 @@ etc.")
 (define-public r-datawizard
   (package
     (name "r-datawizard")
-    (version "0.7.1")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "datawizard" version))
        (sha256
         (base32
-         "1jn22qv0s6nbfih3n249v9ynl7s4m102wyw1rnkmxjwryz8vr73p"))))
+         "18i27mmf3z8a3wa49k8jjcs17nd0h4gmmjybbnaihyqm6r7yv8qk"))))
     (properties `((upstream-name . "datawizard")))
     (build-system r-build-system)
     (propagated-inputs
@@ -722,6 +723,26 @@ dumbbell charts, the ability to encircle points and coordinate-system-based
 text annotations.")
     (license license:agpl3)))
 
+(define-public r-ggfittext
+  (package
+    (name "r-ggfittext")
+    (version "0.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "ggfittext" version))
+              (sha256
+               (base32
+                "06xfv552nhw13wc8dixyqhhmw5zh8hphrabw090nzb33cpfwzin8"))))
+    (properties `((upstream-name . "ggfittext")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ggplot2 r-gridtext r-shades r-stringi))
+    (native-inputs (list r-knitr))
+    (home-page "https://wilkox.org/ggfittext/")
+    (synopsis "Ggfittext is a ggplot2 extension for fitting text into boxes")
+    (description
+     "Ggfittext is a ggplot2 extension for fitting text into boxes.")
+    (license license:gpl2)))
+
 (define-public r-glmpca
   (package
     (name "r-glmpca")
@@ -747,14 +768,14 @@ such as counts or binary matrices.")
 (define-public r-googledrive
   (package
     (name "r-googledrive")
-    (version "2.1.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "googledrive" version))
        (sha256
         (base32
-         "0x2biilbphh77p7cxp2cvinjx45hnb5xksw775nwksqvpwxkaw0d"))))
+         "10pv70nvsqh1yc12g5fj7avfihjzpj02m8s9f8sb0c1np9s4z2qb"))))
     (properties `((upstream-name . "googledrive")))
     (build-system r-build-system)
     (propagated-inputs
@@ -982,14 +1003,14 @@ pronounceable identifiers.")
 (define-public r-googlesheets4
   (package
     (name "r-googlesheets4")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "googlesheets4" version))
        (sha256
         (base32
-         "1jcfih6f62phj7fdvknkkj46s9cvsnhshvkglg6xif7mpr1mbqah"))))
+         "1kzwhs9zrx1i4kqhdqrkzyhnwx25j8j2pcg7ja2dxfalihs67k65"))))
     (properties `((upstream-name . "googlesheets4")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1419,15 +1440,17 @@ similar rank-based tests for equal probability distributions due to Neuhauser
 (define-public r-v8
   (package
     (name "r-v8")
-    (version "4.3.0")
+    (version "4.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "V8" version))
        (sha256
         (base32
-         "1l70vdqcagp9cdyxa231gk33z5blsg96j0l28zbaklnhmr7mqfby"))))
-    (properties `((upstream-name . "V8")))
+         "0w5n9dv9bbaqzjcnsgw1bxpbx8yqzsbrkr8j6bfc4f78bac2si0k"))))
+    (properties
+     `((upstream-name . "V8")
+       (updater-extra-inputs . ("libnode"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -2053,13 +2076,13 @@ axis} (SMA), and @dfn{ranged major axis} (RMA).")
 (define-public r-ggpmisc
   (package
     (name "r-ggpmisc")
-    (version "0.5.2")
+    (version "0.5.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggpmisc" version))
               (sha256
                (base32
-                "1zvq580vi1h2afdgxaqabjhfsphvmdchwiaahqvvhljxmpmh82q6"))))
+                "1j504pvhxvl9cfagsjcsw7rbc94q5ysh1f8qhb7hzpx04fpnm65a"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-confintr
@@ -2144,14 +2167,14 @@ organisms via the @code{g:Profiler} toolkit.")
 (define-public r-gprofiler2
   (package
     (name "r-gprofiler2")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gprofiler2" version))
        (sha256
         (base32
-         "0r0h34b35xzgd9rh55yndn0anxy0z45zdlqa6qfmpn91b6v1bb1g"))))
+         "1zbfvpb4qqj6vipz0ps4pyy14h6rc4jaqfa8q4zrbhi5vvw9805r"))))
     (properties `((upstream-name . "gprofiler2")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2164,7 +2187,7 @@ organisms via the @code{g:Profiler} toolkit.")
            r-rcurl
            r-tidyr
            r-viridislite))
-    (native-inputs (list r-knitr))
+    (native-inputs (list r-knitr r-rmarkdown))
     (home-page "https://cran.r-project.org/web/packages/gprofiler2/")
     (synopsis "Interface to the g:Profiler toolset")
     (description
@@ -2408,6 +2431,54 @@ extends the signature of the @code{dist} function and uses the same parameter
 naming conventions as distance methods of existing R packages.")
     (license license:gpl2+)))
 
+(define-public r-paramhelpers
+  (package
+    (name "r-paramhelpers")
+    (version "1.14.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "ParamHelpers" version))
+              (sha256
+               (base32
+                "088sl3az4ysq8cyw82brdn9xm5yy7rqskxih462d1m5hi62gyl04"))))
+    (properties `((upstream-name . "ParamHelpers")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-backports r-bbmisc r-checkmate r-fastmatch))
+    (home-page "https://paramhelpers.mlr-org.com")
+    (synopsis
+     "Helpers for parameters in black-box optimization, tuning, and machine learning")
+    (description
+     "This is a package for parameter description and operations in
+optimization, tuning and machine learning.  Parameters can be described (type,
+constraints, defaults, etc.), combined to parameter sets and can in general be
+programmed on.  A useful @code{OptPath} object (archive) to log function
+evaluations is also provided.")
+    (license license:bsd-2)))
+
+(define-public r-parallelmap
+  (package
+    (name "r-parallelmap")
+    (version "1.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "parallelMap" version))
+              (sha256
+               (base32
+                "1qg7zpz5sd9jp8wzjqahkhipwj1jn192llwg06q4gv9mlcsac261"))))
+    (properties `((upstream-name . "parallelMap")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-bbmisc r-checkmate))
+    (home-page "https://parallelmap.mlr-org.com")
+    (synopsis "Unified interface to parallelization backends")
+    (description
+     "This package provides a unified parallelization framework for multiple
+backends.  This package is designed for internal package and interactive
+usage.  The main operation is parallel mapping over lists.  It supports local,
+multicore, mpi and BatchJobs mode.  It allows tagging of the parallel
+operation with a level name that can be later selected by the user to switch
+on parallel execution for exactly this operation.")
+    (license license:bsd-2)))
+
 (define-public r-pheatmap
   (package
     (name "r-pheatmap")
@@ -2632,13 +2703,13 @@ conventions.")
 (define-public r-ecp
   (package
     (name "r-ecp")
-    (version "3.1.4")
+    (version "3.1.5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ecp" version))
               (sha256
                (base32
-                "0kf0kkawds86kqx3p2ahyzw9xvaz5bz51ffik3f1g5b5lwjvz60v"))))
+                "17m2m3nz7kqzjw2bkkp6c1a3zhwjq2c5mw9pk5g0ma274iiqj8wy"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-rcpp))
@@ -2958,6 +3029,28 @@ dissimilarity analysis.  Most of its multivariate tools can be used for other
 data types as well.")
     (license license:gpl2+)))
 
+(define-public r-tidyft
+  (package
+    (name "r-tidyft")
+    (version "0.5.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "tidyft" version))
+              (sha256
+               (base32
+                "00qcsr2sx8fwyil384vgppx0q72qjrkj7h5nv4mdxdi8f9h6ph2r"))))
+    (properties `((upstream-name . "tidyft")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-data-table r-fst r-stringr))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/hope-data-science/tidyft")
+    (synopsis "Fast and memory efficient data operations in tidy syntax")
+    (description "Tidyft is an extension of @code{data.table}.  It uses
+modifification by reference whenever possible.  This toolkit is designed for
+big data analysis in high-performance desktop or laptop computers.  The syntax
+of the package is similar or identical to tidyverse.")
+    (license license:expat)))
+
 (define-public r-tidyverse
   (package
     (name "r-tidyverse")
@@ -3190,14 +3283,14 @@ mixture models.")
 (define-public r-readxl
   (package
     (name "r-readxl")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "readxl" version))
        (sha256
         (base32
-         "04dsia2sx958ybw1ga8ccqmqih9cv7q340pcc54cl3dyqpi08wrq"))))
+         "0j2rkb012h0kvcm8n3817lgfir52dvmkwaxn7mij71gbxz6vpzky"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cellranger r-cpp11 r-progress r-tibble))
@@ -3488,16 +3581,16 @@ Notation (JSON) using the rapidjsonr library.")
 (define-public r-jsonlite
   (package
     (name "r-jsonlite")
-    (version "1.8.4")
+    (version "1.8.7")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "jsonlite" version))
               (sha256
                (base32
-                "0y0jzf74c3q1sghgarvwmrkvxs7yahywd342m8c0jsr28bhapskr"))))
+                "07301wdpf014m8pfr7x3zwaj07pmin0rfax0irljimvj9dwbfhkx"))))
     (build-system r-build-system)
     (native-inputs
-     (list r-knitr))
+     (list r-knitr r-r-rsp))
     (home-page "https://arxiv.org/abs/1403.2805")
     (synopsis "Robust, high performance JSON parser and generator for R")
     (description
@@ -3636,13 +3729,13 @@ LaTeX.")
 (define-public r-curl
   (package
     (name "r-curl")
-    (version "5.0.0")
+    (version "5.0.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "curl" version))
               (sha256
                (base32
-                "1cn9b6xcc6xp2q66pkla6xrq4v6rbpxfcr3gizx4z48knp4wmwyp"))))
+                "19lkvy5hngdsh59slvvlrzf0iz432fv88daq0nan93zsqyf8y1dp"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -3718,13 +3811,13 @@ and vice-versa.")
 (define-public r-fastdummies
   (package
     (name "r-fastdummies")
-    (version "1.6.3")
+    (version "1.7.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "fastDummies" version))
               (sha256
                (base32
-                "1pw1bpp69sbs8yc1s5ffz11q249ljfwbgfrq6irg5pyp37z38fdx"))))
+                "0sm02pxbabckxpi3mn36h5bz2wx5pyx7a1dhc2abc4c7fwpihsng"))))
     (properties `((upstream-name . "fastDummies")))
     (build-system r-build-system)
     (propagated-inputs (list r-data-table r-stringr r-tibble))
@@ -3966,51 +4059,66 @@ expression estimates for all genes.")
 (define-public r-bslib
   (package
     (name "r-bslib")
-    (version "0.4.2")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bslib" version))
        (sha256
         (base32
-         "069ghbzp0bsmbw2nzw28cmbym65i3a90v50y7qksy2g4pfhvfh4s"))
+         "05fi1cbb33hvrxx3vibbai7bzlx60jxd3iaqpc86x0224b3gpim2"))
        (snippet
         '(for-each delete-file
-                   '("inst/lib/bs-a11y-p/plugins/js/bootstrap-accessibility.min.js"
+                   '("inst/components/accordion.min.js"
+                     "inst/components/card.min.js"
+                     "inst/components/sidebar.min.js"
+                     "inst/lib/bs-a11y-p/plugins/js/bootstrap-accessibility.min.js"
                      "inst/lib/bs3/assets/javascripts/bootstrap.min.js"
                      "inst/lib/bs4/dist/js/bootstrap.bundle.min.js"
                      "inst/lib/bs5/dist/js/bootstrap.bundle.min.js")))))
     (properties `((upstream-name . "bslib")))
     (build-system r-build-system)
     (arguments
-     `(#:modules ((guix build utils)
+     (list
+      #:modules '((guix build utils)
                   (guix build r-build-system)
                   (srfi srfi-1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'process-javascript
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "inst/lib/"
-               (call-with-values
-                   (lambda ()
-                     (unzip2
-                      `(("bs-a11y-p/plugins/js/bootstrap-accessibility.js"
-                         "bs-a11y-p/plugins/js/bootstrap-accessibility.min.js")
-                        ("bs-colorpicker/js/bootstrap-colorpicker.js"
-                         "bs-colorpicker/js/bootstrap-colorpicker.min.js")
-                        ("bs3/assets/javascripts/bootstrap.js"
-                         "bs3/assets/javascripts/bootstrap.min.js")
-                        (,(assoc-ref inputs "js-bootstrap4-bundle")
-                         "bs4/dist/js/bootstrap.bundle.min.js")
-                        (,(assoc-ref inputs "js-bootstrap5-bundle")
-                         "bs5/dist/js/bootstrap.bundle.min.js"))))
-                 (lambda (sources targets)
-                   (for-each (lambda (source target)
-                               (format #t "Processing ~a --> ~a~%"
-                                       source target)
-                               (invoke "esbuild" source "--minify"
-                                       (string-append "--outfile=" target)))
-                             sources targets)))))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'process-javascript
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; See srcts/build/index.ts
+              (for-each (lambda (component)
+                          (invoke "esbuild"
+                                  "--bundle" "--minify" "--sourcemap"
+                                   "--target=es6" ;"--external=:bootstrap"
+                                  (string-append
+                                   #$(this-package-native-input "typescript-components")
+                                   "/srcts/src/components/" component ".ts")
+                                  (string-append "--outfile=inst/components/"
+                                                 component ".min.js")))
+                        '("accordion" "sidebar" "card"))
+              (with-directory-excursion "inst/lib/"
+                (call-with-values
+                    (lambda ()
+                      (unzip2
+                       `(("bs-a11y-p/plugins/js/bootstrap-accessibility.js"
+                          "bs-a11y-p/plugins/js/bootstrap-accessibility.min.js")
+                         ("bs-colorpicker/js/bootstrap-colorpicker.js"
+                          "bs-colorpicker/js/bootstrap-colorpicker.min.js")
+                         ("bs3/assets/javascripts/bootstrap.js"
+                          "bs3/assets/javascripts/bootstrap.min.js")
+                         (,(assoc-ref inputs "js-bootstrap4-bundle")
+                          "bs4/dist/js/bootstrap.bundle.min.js")
+                         (,(assoc-ref inputs "js-bootstrap5-bundle")
+                          "bs5/dist/js/bootstrap.bundle.min.js"))))
+                  (lambda (sources targets)
+                    (for-each (lambda (source target)
+                                (format #t "Processing ~a --> ~a~%"
+                                        source target)
+                                (invoke "esbuild" source "--minify"
+                                        (string-append "--outfile=" target)))
+                              sources targets)))))))))
     (propagated-inputs
      (list r-base64enc
            r-cachem
@@ -4036,7 +4144,17 @@ expression estimates for all genes.")
            (uri "https://raw.githubusercontent.com/twbs/bootstrap/v5.2.2/dist/js/bootstrap.bundle.js")
            (sha256
             (base32
-             "1ibfb1lwwm50did0b4fvxaqc7xyljmp20f3qb1ybdlvcy22mk8bg"))))))
+             "1ibfb1lwwm50did0b4fvxaqc7xyljmp20f3qb1ybdlvcy22mk8bg"))))
+       ("typescript-components"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rstudio/bslib")
+                 (commit (string-append "v" version))))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "1krmavvbnpikiyxgv36vf70p8qzy1rymh1l41pjc7z74hk526p7c"))))))
     (home-page "https://rstudio.github.io/bslib/")
     (synopsis "Custom Bootstrap Sass themes for shiny and rmarkdown")
     (description
@@ -4589,13 +4707,13 @@ annotation data to keep updated.")
 (define-public r-ggtern
   (package
     (name "r-ggtern")
-    (version "3.4.1")
+    (version "3.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggtern" version))
        (sha256
-        (base32 "0w0kg6755kfpczqpaly251fgqv31js9gdzr17x734l2adycji3yr"))))
+        (base32 "1xmh0gi81xrzkgjlbxb3jl9mrj407q7ykm4wpdbmd4gdswv20y61"))))
     (properties `((upstream-name . "ggtern")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4992,19 +5110,21 @@ including functions for geolocation and routing.")
 (define-public r-haven
   (package
     (name "r-haven")
-    (version "2.5.2")
+    (version "2.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "haven" version))
        (sha256
         (base32
-         "07an4d8638m27765l6l4p6vfjxm8nfwbxx2bwpxfy6xffw1znc91"))
+         "1qxp0hp7clmd70383lsbiijq1i5037zv4haja60czw09mnprjncs"))
        (modules '((guix build utils)))
        (snippet
         ;; unvendor readstat
         '(delete-file-recursively "src/readstat"))))
     (build-system r-build-system)
+    (properties
+     '((updater-extra-inputs . ("readstat"))))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -5020,15 +5140,15 @@ including functions for geolocation and routing.")
     (inputs
      (list readstat zlib))
     (native-inputs
-     (list r-knitr))
+     (list pkg-config r-knitr))
     (propagated-inputs
      (list r-cli
            r-cpp11
            r-forcats
            r-hms
            r-lifecycle
-           r-rlang
            r-readr
+           r-rlang
            r-tibble
            r-tidyselect
            r-vctrs))
@@ -5353,13 +5473,13 @@ processes.  Most of its code is based on the @code{psutil} Python package.")
 (define-public r-pkgbuild
   (package
     (name "r-pkgbuild")
-    (version "1.4.0")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgbuild" version))
        (sha256
-        (base32 "1mjyln5njbvi0k97w8az2v5klmas6pqiz68mlylfll4nr503qzrm"))))
+        (base32 "1ic2zjcz29jbfwmsqsja4jjalzsz9ayac5zjz6nv482lsx2s4d13"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-callr
@@ -5369,8 +5489,7 @@ processes.  Most of its code is based on the @code{psutil} Python package.")
            r-prettyunits
            r-processx
            r-r6
-           r-rprojroot
-           r-withr))
+           r-rprojroot))
     (home-page "https://github.com/r-pkgs/pkgbuild")
     (synopsis "Find tools needed to build R packages")
     (description
@@ -5382,14 +5501,14 @@ is configured appropriately so R can use them.")
 (define-public r-pkgload
   (package
     (name "r-pkgload")
-    (version "1.3.2")
+    (version "1.3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgload" version))
        (sha256
         (base32
-         "0bvbnj98b1yaiksdmfi017g2w3229a5pcsnpjamzrvpy5c1rml9m"))))
+         "1ckl6cqjk93n91p1i42hza6dciygsc25mibdif89vnyb7w97p651"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli
@@ -5431,13 +5550,13 @@ value for each cluster in a dendrogram.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.10")
+    (version "1.0.11")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "0inmnmi0pqmbqnl00d5yal1bmd7awigxd7sgzjsil9c1k55f4r8y"))))
+        (base32 "0pzssba79z90rax2v02r5m1a6ysljfnvq03r6q2nr72rd0q7qxfz"))))
     (build-system r-build-system)
     (home-page "https://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
@@ -5497,13 +5616,13 @@ factorization and divisive clustering for large sparse and dense matrices.")
 (define-public r-rcppspdlog
   (package
     (name "r-rcppspdlog")
-    (version "0.0.12")
+    (version "0.0.13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppSpdlog" version))
        (sha256
-        (base32 "1nan0hm49xdl2l1lskm1jf01clfh7aw2v6h57j35qysvg8219fcx"))))
+        (base32 "1149kh047301hrp15479ikcmrix968pwqw3jza7mp7bsxhrjrp3k"))))
     (properties `((upstream-name . "RcppSpdlog")))
     (build-system r-build-system)
     (propagated-inputs (list r-rcpp))
@@ -5521,16 +5640,17 @@ functions and compiled functions callable by other packages.")
 (define-public r-rcppthread
   (package
     (name "r-rcppthread")
-    (version "2.1.3")
+    (version "2.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppThread" version))
        (sha256
         (base32
-         "0iprpidf7q1wlrgr9dwiikb6apqk80pyjcyni56k64nl7lrkszhj"))))
+         "0rra7qqbq2y4bj54x76559p5ghpj3r03c4vlpg96phwafwnc2y8m"))))
     (properties `((upstream-name . "RcppThread")))
     (build-system r-build-system)
+    (native-inputs (list r-r-rsp))
     (home-page
      "https://github.com/tnagler/RcppThread")
     (synopsis "R threading in C++")
@@ -5761,13 +5881,13 @@ graphics packages that comes with the base installation.")
 (define-public r-ctrdata
   (package
     (name "r-ctrdata")
-    (version "1.13.2")
+    (version "1.13.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ctrdata" version))
               (sha256
                (base32
-                "1n38bwcr26vmiwc8jwl0mw15vwbvvkd9gi0mvsr1arzp846lkcyw"))))
+                "15vs8b2jxap5ya59n6pdby1p89hd0y0b4say72q6icxsjzzj979z"))))
     (properties `((upstream-name . "ctrdata")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6258,13 +6378,13 @@ most popular ones.")
 (define-public r-sp
   (package
     (name "r-sp")
-    (version "1.6-1")
+    (version "2.0-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sp" version))
        (sha256
-        (base32 "09d3jhk7iwjfhzyq0cwws1p5gspj9nxww5x7xvngh8hr9gan5wkn"))))
+        (base32 "1wc8bwfqalpbsicgdrfkvmg3lm65nghf35m2g8fh4q9hr5gxpy09"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice))
@@ -6724,14 +6844,14 @@ classes in the @code{stats4} package.")
 (define-public r-emdbook
   (package
     (name "r-emdbook")
-    (version "1.3.12")
+    (version "1.3.13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emdbook" version))
        (sha256
         (base32
-         "0ls3zxxlwmdv7zn1v9i1y9zc2sn0hbgmyjvsj7zn3ajsw7wwlih6"))))
+         "069w10i1590bcyzv4kfsg7wsr1yl9nlsyj6yvys088xll5z4n116"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-bbmle r-coda r-lattice r-mass r-plyr))
@@ -6890,6 +7010,37 @@ non-parametric analysis of structured data, and other energy
 statistics/methods are implemented.")
     (license license:gpl2+)))
 
+(define-public r-envstats
+  (package
+    (name "r-envstats")
+    (version "2.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "EnvStats" version))
+              (sha256
+               (base32
+                "17fgwa5rdjpsxk95p1j48bkpbmm01vy25vzbgggj31a1k2i4i85p"))))
+    (properties `((upstream-name . "EnvStats")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ggplot2 r-mass r-nortest))
+    (home-page "https://github.com/alexkowa/EnvStats")
+    (synopsis
+     "Package for environmental statistics, including US EPA guidance")
+    (description
+     "This is a package for graphical and statistical analyses of
+environmental data, with a focus on analyzing chemical concentrations and
+physical parameters, usually in the context of mandated environmental
+monitoring.  It provides major environmental statistical methods found in the
+literature and regulatory guidance documents, with extensive help that
+explains what these methods do, how to use them, and where to find them in the
+literature.  It comes with numerous built-in data sets from regulatory
+guidance documents and environmental statistics literature.  It includes
+scripts reproducing analyses presented in the book \"EnvStats: An R Package
+for Environmental Statistics\" (Millard, 2013, Springer, ISBN
+978-1-4614-8455-4,
+@url{https://link.springer.com/book/10.1007/978-1-4614-8456-1}).")
+    (license license:gpl3+)))
+
 (define-public r-suppdists
   (package
     (name "r-suppdists")
@@ -7527,14 +7678,14 @@ problems as well as resampling based estimators of prediction error.")
 (define-public r-psych
   (package
     (name "r-psych")
-    (version "2.3.3")
+    (version "2.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "psych" version))
        (sha256
         (base32
-         "0vzvdrajkd2z4bqfr1lzh2z1vqb8h3mqk6vha8vmfhw2kz1z7acl"))))
+         "1z5h2hs56fw54dsvpi3sl463l31yn0qjvk779wdb7w175gwmr6db"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice r-mnormt r-nlme))
@@ -7580,14 +7731,14 @@ by base R methods related to model fitting.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "1mhavmma0d075bbcnis9jkr4ar2dw91p44yxzx2qlskq16si2pqx"))))
+         "14fr17cvpy6jzdffzrf46xah70xcq2nkbjyxmkyzwbz3kvpdsxwx"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-backports
@@ -7961,14 +8112,14 @@ impute compatibly with the substantive model.")
 (define-public r-pan
   (package
     (name "r-pan")
-    (version "1.6")
+    (version "1.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pan" version))
        (sha256
         (base32
-         "1dk3jjj826p7xrz10qz04vyc068xnypg7bp0pj4c32z3da0xzh5d"))))
+         "1vhk65j10gp9wgjj7j9nyq7wny7hkh0xa91hj47a392qq417m9yi"))))
     (build-system r-build-system)
     (native-inputs (list gfortran))
     (home-page "https://cran.r-project.org/web/packages/pan/")
@@ -8006,23 +8157,27 @@ analysis of multiply imputed data sets.")
 (define-public r-mice
   (package
     (name "r-mice")
-    (version "3.15.0")
+    (version "3.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mice" version))
        (sha256
         (base32
-         "0yz88b40mpn24z40yfpxrkwrsxk362gwks3v5x69rkix1qkdsr1x"))))
+         "0h20lirk2257y3i1ww5y2pqp9lc21ilmf8yykmz36h55hm8jiw19"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-broom
            r-cpp11
            r-dplyr
            r-generics
+           r-glmnet
            r-lattice
+           r-mitml
+           r-nnet
            r-rcpp
            r-rlang
+           r-rpart
            r-tidyr))
     (home-page "https://cran.r-project.org/web/packages/mice/")
     (synopsis "Multivariate imputation by chained equations")
@@ -8136,6 +8291,33 @@ University Press.  It provides smoothing methods for nonparametric regression
 and density estimation")
     (license license:gpl2+)))
 
+(define-public r-smoof
+  (package
+    (name "r-smoof")
+    (version "1.6.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "smoof" version))
+              (sha256
+               (base32
+                "1cazhnd0m5jjzixaqgqh2h3rsa2sw3k8slj5cmgm8v47aaqn91mg"))))
+    (properties `((upstream-name . "smoof")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-bbmisc
+                             r-checkmate
+                             r-ggplot2
+                             r-paramhelpers
+                             r-rcpp
+                             r-rcpparmadillo))
+    (home-page "https://jakobbossek.github.io/smoof/")
+    (synopsis "Single and multi-objective optimization test functions")
+    (description
+     "This tool generates high number of both single- and multi-objective test
+functions.  These functions are frequently used for the benchmarking of
+(numerical) optimization algorithms.  Moreover, it offers a set of convenient
+functions to generate, plot and work with objective functions.")
+    (license license:bsd-2)))
+
 (define-public r-smurf
   (package
     (name "r-smurf")
@@ -8534,13 +8716,13 @@ plots in @code{ggplot2}.")
 (define-public r-gss
   (package
     (name "r-gss")
-    (version "2.2-4")
+    (version "2.2-5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "gss" version))
               (sha256
                (base32
-                "0hbl1i687cgx9rn714s3dvbnljfiyidk5rgk3p2wmsdywggqjglm"))))
+                "0f9sqmcb46ilwq4cdqd1j0vhclchb69fc6kj9c56l1ivvi75dl32"))))
     (properties `((upstream-name . "gss")))
     (build-system r-build-system)
     (native-inputs (list gfortran))
@@ -8663,13 +8845,13 @@ constants, and control debugging of packages via environment variables.")
 (define-public r-processx
   (package
     (name "r-processx")
-    (version "3.8.1")
+    (version "3.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "processx" version))
        (sha256
-        (base32 "0g79k7zfjhqdhk4crj245smrckwlbs7dazdslhvimjnlh4mlf270"))))
+        (base32 "1kbyhpzcfiqqx9csn0869zbiza6w97vq1j1y01qlph93bfpqf6z9"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ps r-r6))
@@ -8772,14 +8954,14 @@ of merit, ordering functions, and enhanced versions of @code{pairs} and
 (define-public r-webshot
   (package
     (name "r-webshot")
-    (version "0.5.4")
+    (version "0.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "webshot" version))
        (sha256
         (base32
-         "094ggb6yby5irf3hj45p6vp5wdy6rjwpc0h6xbgf2mbqxyxbkhix"))))
+         "04xrrf72323sgzsdkbl05p2fdsi486i9avrrxvw0l3n8r8y92xfn"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-callr r-jsonlite r-magrittr))
@@ -8914,14 +9096,14 @@ estimated from a given sample.")
 (define-public r-vctrs
   (package
     (name "r-vctrs")
-    (version "0.6.2")
+    (version "0.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "vctrs" version))
        (sha256
         (base32
-         "117fh63r96i811y8dbrawmphlzqq8acaavykfx1y0mbc3zhspv7y"))))
+         "1hm5rw85ln0mk1mfmhgygnhjgs2lyc74cq12ddc41d78rl6j5p4k"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli r-glue r-lifecycle r-rlang))
@@ -9632,14 +9814,14 @@ Fisher's method), and Sidak correction.")
 (define-public r-quantmod
   (package
     (name "r-quantmod")
-    (version "0.4.22")
+    (version "0.4.23")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantmod" version))
        (sha256
         (base32
-         "0pknwssha01hjsf3c7lgrabk2c3rzq5wa2m7mf8sz7wsrbqrd57j"))))
+         "0jjhkcp51j7bfvv9f8sid8vkrf2a8g5hvshplsn0szzc3z6vaz2d"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-curl r-jsonlite r-ttr r-xts r-zoo))
@@ -9844,14 +10026,14 @@ applied econometric analysis.")
 (define-public r-cubature
   (package
     (name "r-cubature")
-    (version "2.0.4.6")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cubature" version))
        (sha256
         (base32
-         "0nprx74mcsw4zz89gc3c53nw2iyyqalfyh7xfda83xlvpv19s31k"))))
+         "0r9n4xpm3ssjn3vywzlgh3naynzp1cxvjsd0pvah04k115b7i0jx"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-rcpp))
@@ -10550,13 +10732,13 @@ also be used as an engine for writing package vignettes.")
 (define-public r-sitar
   (package
     (name "r-sitar")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sitar" version))
        (sha256
-        (base32 "0lhwbbpq6anqrk3818xw3nrl63bj3vwgsmxad0dpl8y50rkcc4cs"))))
+        (base32 "14qc5qy21qyj4gml0gwfn8izbsmzwy30ddc7mazhszi487jrcrp0"))))
     (properties `((upstream-name . "sitar")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11201,6 +11383,26 @@ promises, but with a syntax that is idiomatic R.")
 using the @code{snow} package.")
     (license license:gpl2)))
 
+(define-public r-fsa
+  (package
+    (name "r-fsa")
+    (version "0.9.4")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "FSA" version))
+              (sha256
+               (base32
+                "0m63pik6bcqsbzizq8zjzilr2pxjl8b64ivdqzdnz09gmck73r5h"))))
+    (properties `((upstream-name . "FSA")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-car r-dunn-test r-lmtest r-plotrix r-withr))
+    (home-page "https://fishr-core-team.github.io/FSA/")
+    (synopsis "Simple fisheries stock assessment methods")
+    (description
+     "This package provides a variety of simple fish stock assessment
+methods.")
+    (license license:gpl2+)))
+
 (define-public r-fstcore
   (package
     (name "r-fstcore")
@@ -11594,14 +11796,14 @@ those searches and pull data into their R sessions.")
 (define-public r-renv
   (package
     (name "r-renv")
-    (version "0.17.3")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "renv" version))
        (sha256
         (base32
-         "1w7mwk3drf3bzfyhsy6mlnpbhgp8il8is7q95ad567ry4g6jhkqw"))))
+         "0ssp0mam8zkk0qsgadab0c1lkbqac3cq12s3066xz44h2jzsrfj8"))))
     (properties `((upstream-name . "renv")))
     (build-system r-build-system)
     (native-inputs
@@ -11717,14 +11919,14 @@ always locate the files relative to your project root.")
 (define-public r-reticulate
   (package
     (name "r-reticulate")
-    (version "1.28")
+    (version "1.30")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reticulate" version))
        (sha256
         (base32
-         "0vsia6rcr4nlvzpnpwy9izhlmrl65g62yx9n97qkzaps33nrk8jq"))))
+         "1pqpc1bhdkhkzddwfpnwv907x29x20za4if30bwgljgsj0x8m3zf"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -11743,6 +11945,7 @@ always locate the files relative to your project root.")
            r-rappdirs
            r-rcpp
            r-rcpptoml
+           r-rlang
            r-withr))
     (native-inputs
      (list r-knitr))
@@ -12612,14 +12815,14 @@ Decomposition in R (Beaton et al 2014) <doi:10.1016/j.csda.2013.11.006>.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.19.2")
+    (version "0.19.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "0xi9qsaxdsf2g62izh28h4kn5ada6w03znrn1zq9zdxhi5vwbavp"))))
+         "0zl8in5mvqjq58kprn1slrgc5wfh8vv7wprfc3qp3xl4bsqkj7zz"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -12775,14 +12978,14 @@ functions.")
 (define-public r-flextable
   (package
     (name "r-flextable")
-    (version "0.9.1")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flextable" version))
        (sha256
         (base32
-         "0ic3mny2kgfyckjc77sycq5czhx68i9dgqp7g3lc06h303kcjqm4"))))
+         "0gcjkw35dlhf71djkvmlz0rp62sy3zd45vm8qhk1v3z5ka8m7kdw"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-data-table
@@ -12876,13 +13079,13 @@ distribution).")
 (define-public r-golem
   (package
     (name "r-golem")
-    (version "0.4.0")
+    (version "0.4.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "golem" version))
               (sha256
                (base32
-                "0qjnrkwyn8im5zfd0fxf7rkz0gxdywnckpzsn0cqb0fxsa0z0xmv"))))
+                "0pcvp2rmwzvl0wi73fp9pmjq1rrknq2h45sfvbjhmbz8ilvr8zpa"))))
     (properties `((upstream-name . "golem")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13180,14 +13383,14 @@ containing one or more SNPs that evolved under directional selection.")
 (define-public r-proc
   (package
     (name "r-proc")
-    (version "1.18.2")
+    (version "1.18.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pROC" version))
        (sha256
         (base32
-         "01q5qv2g2npfn7xyd62mhfvdb0647r3y1j4sm0fb7p9ncyifm0hz"))))
+         "0lqar1lbm461in4jb9rkdnpccl8lshrhig2qxr892m91mdxym46m"))))
     (properties `((upstream-name . "pROC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13819,14 +14022,14 @@ data with multiple data types.")
 (define-public r-qualv
   (package
     (name "r-qualv")
-    (version "0.3-4")
+    (version "0.3-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "qualV" version))
        (sha256
         (base32
-         "0rkjzva2h158d5c631jmjjh7qjibbyisl0503san80rk9fgxl45b"))))
+         "09qqfx94f46x585iipr9wii8ji6ih31xymbw4p5v3qixmfpja276"))))
     (properties `((upstream-name . "qualV")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13872,14 +14075,14 @@ subsequence} (LCS) using a dynamic programming algorithm.")
 (define-public r-labelled
   (package
     (name "r-labelled")
-    (version "2.11.0")
+    (version "2.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "labelled" version))
        (sha256
         (base32
-         "1pg5l2c3ai8gkrqryq5xzsal85pljmdzc2ln8k1ak3j4racm5p7d"))))
+         "1f6jh1mrbwb3v1kc49pb65sf5ffqs0h9vizpig4r5rhhv4n3q17y"))))
     (properties `((upstream-name . "labelled")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13956,14 +14159,14 @@ used to teach mathematics, statistics, computation and modeling.")
 (define-public r-raster
   (package
     (name "r-raster")
-    (version "3.6-20")
+    (version "3.6-23")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "raster" version))
        (sha256
         (base32
-         "04x8b4fhqrl3x44dpjs6j6aknr2n54jinrl77d5c38ip9sgy8nvy"))))
+         "0ng18sfw9kmhi48j8b5bzgh2ylvf5wi2zidn66k4vqaxl5s6hidz"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-rcpp r-sp r-terra))
@@ -14675,13 +14878,13 @@ handle data from simple random samples as well as complex surveys.")
 (define-public r-tarchetypes
   (package
     (name "r-tarchetypes")
-    (version "0.7.6")
+    (version "0.7.7")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "tarchetypes" version))
               (sha256
                (base32
-                "06hqwzh5mca7606rq5bwhqk9cbhqsw6vl1pax1y1890fnkzcm1my"))))
+                "1vqyabk04kpskx1ny7c4knzg90ri99x17vfnwcb6syjbzpcfg444"))))
     (properties `((upstream-name . "tarchetypes")))
     (build-system r-build-system)
     (propagated-inputs (list r-digest
@@ -14712,13 +14915,13 @@ were influenced by the drake R package by Will Landau (2018)
 (define-public r-targets
   (package
     (name "r-targets")
-    (version "1.1.3")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "targets" version))
               (sha256
                (base32
-                "0m5sdbzyhwmfhv08b0bld4fp8vs1ga6zxy8cjpvm8amlskgxxxdm"))))
+                "14vm97jjlpy3a0l0lgzgpk96igvzfpxv38xqcwa0lmp0ia7hj2p8"))))
     (properties `((upstream-name . "targets")))
     (build-system r-build-system)
     (propagated-inputs (list r-base64url
@@ -15089,14 +15292,14 @@ packages maintained by Torsten Hothorn.")
 (define-public r-multcomp
   (package
     (name "r-multcomp")
-    (version "1.4-23")
+    (version "1.4-25")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "multcomp" version))
        (sha256
         (base32
-         "1qfdm0h6sg51cvfy9hmif7aw1jvk6jq9fvniynpxpwnqifjm8la2"))))
+         "10njzzxdi3jw5f419s7chcynxkzyqmmvzf7jk7ybdrwrlqhpiylx"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-codetools r-mvtnorm r-sandwich r-survival r-th-data))
@@ -15134,14 +15337,14 @@ the differences were not significantly different.")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.8.6")
+    (version "1.8.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "11gma8sz3bxy59flyzxqh400a4pm1cg6maaqvxxbms77svhb8vd4"))))
+         "0gpqgbybxpcpxc2n3pisd4yr1s9dq2m4z8j29f5mq0c5w5axgm68"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-estimability r-mvtnorm r-numderiv))
@@ -15428,14 +15631,14 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "1nmlx64g2x3xprhm99axw2n1agmbhwz2ck1wy16a8ach6az7rf4x"))))
+         "13m9di2q1npsc3mxrzkcznpq25y1brbwjixayy5ag8d9skvfx9hk"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-insight))
@@ -15765,14 +15968,14 @@ User credentials are shared with command line git through the
 (define-public r-usethis
   (package
     (name "r-usethis")
-    (version "2.1.6")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "usethis" version))
        (sha256
         (base32
-         "0638dzl4nm4c36990sf2biy74hjr2fzlqzfb98fsqrbhaw3ngp1i"))))
+         "0imy9izchr9xzc5wrr91ydfr4jifv8lsqx712zkx0vxfi6kw3n6r"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli
@@ -16400,14 +16603,14 @@ mathematics.")
 (define-public r-rcppannoy
   (package
     (name "r-rcppannoy")
-    (version "0.0.20")
+    (version "0.0.21")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppAnnoy" version))
        (sha256
         (base32
-         "11fgxbx3w36937h22v9pqx0nk5vpxp3hybj7k1b0lk8mj7hcginw"))))
+         "1xzhax5hmn79h6kmz7inrlaya5mdpzqj6j7n5ridyzc4vcrs412q"))))
     (properties `((upstream-name . "RcppAnnoy")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16507,13 +16710,13 @@ netCDF files.")
 (define-public r-biocmanager
   (package
     (name "r-biocmanager")
-    (version "1.30.20")
+    (version "1.30.21")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "BiocManager" version))
        (sha256
-        (base32 "1snm2sjr7cakb7hvi5dylrbj5nbar0757jzyd5d7igdbhxv2vrxr"))))
+        (base32 "025a3sc8r98sl40xqvw3jcf5ngkp0nznn4r4kqv0rj49hs6v6rlq"))))
     (properties `((upstream-name . "BiocManager")))
     (build-system r-build-system)
     (native-inputs
@@ -16531,16 +16734,19 @@ Bioconductor packages.")
 (define-public r-rgl
   (package
     (name "r-rgl")
-    (version "1.1.3")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgl" version))
        (sha256
         (base32
-         "1blasg60x38z57ds6x7yb4rvjx21yf4s99q93sl1w9h6mg14d8jg"))
+         "16ybdly3cjm6ibvhfad7d5k6bxaxf33l5s1s766hy9kza8skyani"))
        (snippet
         '(delete-file "inst/htmlwidgets/lib/CanvasMatrix/CanvasMatrix.min.js"))))
+    ;; For OpenGL and X11 support
+    (properties
+     '((updater-extra-inputs . ("glu" "libx11"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -16978,13 +17184,13 @@ Tabelow (2007) <DOI:10.18637/jss.v019.i01>.")
 (define-public r-admisc
   (package
     (name "r-admisc")
-    (version "0.32")
+    (version "0.33")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "admisc" version))
        (sha256
-        (base32 "1dv5n3hg74wp8nazbxl9mbdkdwpk7z0mibcxfpvdyjgmvfix33nk"))))
+        (base32 "1anvh581jh1mw3yhpbm2dyihs9npi9gd0isgkphw5gr64fivw49r"))))
     (properties `((upstream-name . "admisc")))
     (build-system r-build-system)
     (home-page "https://github.com/dusadrian/admisc")
@@ -17782,6 +17988,48 @@ Helene Touzet and Jean-Stephane Varre, 2007, Algorithms Mol Biol:2, 15.
 Touzet and Varre (2007).")
     (license license:gpl2)))
 
+(define-public r-rnaturalearth
+  (package
+    (name "r-rnaturalearth")
+    (version "0.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "rnaturalearth" version))
+              (sha256
+               (base32
+                "0cji6hpcpkrsx615627z9dgk0zf78l2nnj3x5kkkpj9lvsm5gj6m"))))
+    (properties `((upstream-name . "rnaturalearth")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-httr r-jsonlite r-sf r-sp r-terra))
+    (native-inputs (list r-knitr))
+    (home-page "https://cran.r-project.org/package=rnaturalearth")
+    (synopsis "World map data from Natural Earth")
+    (description
+     "This package facilitates mapping by making natural earth map data from
+@url{https://www.naturalearthdata.com/} more easily available to R users.")
+    (license license:expat)))
+
+(define-public r-rnaturalearthdata
+  (package
+    (name "r-rnaturalearthdata")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "rnaturalearthdata" version))
+              (sha256
+               (base32
+                "1z32j5lz2lb8xgpkr73majw22k0b49iazj6jjc7j4w9k4zxxa102"))))
+    (properties `((upstream-name . "rnaturalearthdata")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-sp))
+    (home-page "https://github.com/ropenscilabs/rnaturalearthdata")
+    (synopsis "World vector map data from Natural Earth")
+    (description
+     "This package provides vector map data from
+@url{https://www.naturalearthdata.com/}.  Access functions are provided in the
+accompanying package @code{rnaturalearth}.")
+    (license license:cc0)))
+
 (define-public r-rncl
   (package
     (name "r-rncl")
@@ -18101,14 +18349,14 @@ be imported and then exported via the @code{gridSVG} package.")
 (define-public r-kohonen
   (package
     (name "r-kohonen")
-    (version "3.0.11")
+    (version "3.0.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "kohonen" version))
        (sha256
         (base32
-         "1bk3j0n8w4fhffv89rgyn4n21c0wcx6lr8jv4wbagpxprl585381"))))
+         "188cxw2fvpfr3dyi8g52igcyc8d5jffyn6rhc84dja52da8lp520"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-rcpp))
@@ -18349,14 +18597,14 @@ and manipulating sets of ontological terms.")
 (define-public r-gargle
   (package
     (name "r-gargle")
-    (version "1.4.0")
+    (version "1.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gargle" version))
        (sha256
         (base32
-         "12s980jfw98czzrxdn83b2blj4qcrkqqmycjplkzvm4mapgiw3wf"))))
+         "19drzhzfivjwgs04rdgap86fv4fjayrscifjr03gxrax82sjgfp3"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-cli
@@ -18419,20 +18667,17 @@ preparing, executing, and processing HTTP requests.")
 (define-public r-gmp
   (package
     (name "r-gmp")
-    (version "0.7-1")
+    (version "0.7-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gmp" version))
        (sha256
         (base32
-         "1djxhc4v874asmrj8qy054779wsq499f5f2wc6vmr40qab33v1x6"))))
+         "12rd0j3sawzipfz4xr3ikrxrjabpjp4s3y4ikvk16z8rhjs2i5bw"))))
+    (properties
+     '((updater-extra-inputs . ("gmp"))))
     (build-system r-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-CC
-           (lambda _ (setenv "CC" "gcc") #t)))))
     (inputs (list gmp))
     (home-page "https://cran.r-project.org/web/packages/gmp")
     (synopsis "Multiple precision arithmetic")
@@ -19620,14 +19865,14 @@ port-forwarding to your local computer.")
 (define-public r-future
   (package
     (name "r-future")
-    (version "1.32.0")
+    (version "1.33.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future" version))
        (sha256
         (base32
-         "0xigdxcxx0nv0lbbrfqwbgcm02yw95ja706m9lc4b5q65m8p9fym"))))
+         "0nwk8y3qv2dj41qxrciic6rkpy6lzrhpd5v886zmcjyf6ndyna22"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -20762,22 +21007,23 @@ plotting functions are available for analyzing clustering results.")
 (define-public r-remacor
   (package
     (name "r-remacor")
-    (version "0.0.11")
+    (version "0.0.16")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "remaCor" version))
               (sha256
                (base32
-                "0hhk1zrjz6sxg219h9ca7jya0vc8dmrvwaddajkcdns6bv3rj1km"))))
+                "1xznj2y3qszw8s1fgbs8fiadg7c0gl3ml1blxmwixb32kr2cv5vq"))))
     (properties `((upstream-name . "remaCor")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-clustergeneration
+     (list r-envstats
            r-ggplot2
            r-mvtnorm
+           r-rcpp
+           r-rcpparmadillo
            r-rdpack
-           r-reshape2
-           r-runit))
+           r-reshape2))
     (native-inputs (list r-knitr))
     (home-page "https://diseaseneurogenomics.github.io/remaCor/")
     (synopsis "Random effects meta-analysis for correlated test statistics")
@@ -21219,14 +21465,14 @@ univariate class intervals for mapping or other graphics purposes.")
 (define-public r-spdata
   (package
     (name "r-spdata")
-    (version "2.2.2")
+    (version "2.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spData" version))
        (sha256
         (base32
-         "1v8407lkkj0flsphsnqvdr35knkasvjv9v29451mkwkciglmi2l7"))))
+         "12w4chk71vqy1chij79928ppxdg2cz03hx9bgs5cgwj9f1ciyb2b"))))
     (properties `((upstream-name . "spData")))
     (build-system r-build-system)
     (propagated-inputs
@@ -21596,13 +21842,13 @@ either PDF/EPS files.")
 (define-public r-polspline
   (package
     (name "r-polspline")
-    (version "1.1.22")
+    (version "1.1.23")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "polspline" version))
        (sha256
-        (base32 "0ys5sxr5q55ip49dsc3kbgcr3bn9dj5bblmshwm4jz8d0a7ikwmj"))))
+        (base32 "1qa9j7s09yzi65fav27zxc1w1wxwsmgjz8a8ghy7hhi5f3gvsqw3"))))
     (build-system r-build-system)
     (native-inputs (list gfortran))
     (home-page "https://cran.r-project.org/web/packages/polspline/")
@@ -22442,14 +22688,14 @@ package.")
 (define-public r-ggplotify
   (package
     (name "r-ggplotify")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggplotify" version))
        (sha256
         (base32
-         "12mk3fa8fdjxj7xxz21jkr7h91w5wdgwjqhszcz1qffwsgb773qp"))))
+         "1x4fnsh66rxdd2k7w1mhs6if8i4qjjkfj5x1hf4zjpqqm8f5sf1k"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-ggplot2 r-gridgraphics r-yulab-utils))
@@ -23096,14 +23342,14 @@ function for computing a matrix of correlation p-values.")
 (define-public r-ggfun
   (package
     (name "r-ggfun")
-    (version "0.0.9")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggfun" version))
        (sha256
         (base32
-         "04kn367mzgrfwnwz97vw5jqp2kig94hmxmhyyic7ddvk3sfhwx2w"))))
+         "1gypky0ksnwq98w9zqp9nfayhc1fx8wpn82mj2jpv1ydd5hfsicq"))))
     (properties `((upstream-name . "ggfun")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23508,14 +23754,14 @@ colored by the number of neighboring points.  This is useful to visualize the
 (define-public r-arrow
   (package
     (name "r-arrow")
-    (version "12.0.0")
+    (version "12.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "arrow" version))
        (sha256
         (base32
-         "1hv18ksaghifj4jjdy1cf2ic0rrgfi7jbjpzxb7v6r3bbshs9vwi"))))
+         "0wrx9nvv7vw1ywdh6afk496dljwglnbkhjl5ywrrynfhidj7hnql"))))
     (properties `((upstream-name . "arrow")))
     (build-system r-build-system)
     (inputs
@@ -23901,14 +24147,14 @@ batch correction, and data correction.")
 (define-public r-styler
   (package
     (name "r-styler")
-    (version "1.10.0")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "styler" version))
        (sha256
         (base32
-         "1zaxwhcgfasrchg2qcrr3i9scyvz57g363q77d39zrz69yk363ic"))))
+         "0rswg2habyk38hcx0gn9hnvb200bq0dc4fy4k3gqhfhwjq9l7a1b"))))
     (build-system r-build-system)
     ;; This is needed by R.cache.
     (arguments
@@ -24494,14 +24740,14 @@ in R, including a translation of the original algorithm into R.")
 (define-public r-uwot
   (package
     (name "r-uwot")
-    (version "0.1.14")
+    (version "0.1.16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "uwot" version))
        (sha256
         (base32
-         "1q4z98w3pkc51vrcpmwaibnwmlm17zjcnh0qlx660wky5ccyh5l0"))))
+         "0j4f7vnb3mwf6p4nhg2limy7i32qrcj2gxbs8wsq9c6xxpcs0qsz"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-dqrng
@@ -24843,14 +25089,16 @@ guaranteeing well-connected communities.\" <arXiv:1810.08473>.")
 (define-public r-leidenalg
   (package
     (name "r-leidenalg")
-    (version "1.0.5")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "leidenAlg" version))
        (sha256
-        (base32 "1z96zrsms93gspylmficaggb0xj94kq9rg3p2svdbb451jbga9an"))))
-    (properties `((upstream-name . "leidenAlg")))
+        (base32 "1hn5fps5m5am4s82wvhr4fgfw49h0jar4i687czbkab3l9x1dr68"))))
+    (properties
+     `((upstream-name . "leidenAlg")
+       (updater-extra-inputs . ("gmp"))))
     (build-system r-build-system)
     (inputs
      (list glpk gmp libxml2))
@@ -25182,21 +25430,25 @@ emphasize hidden group structures in networks or focus on specific nodes.")
 (define-public r-terra
   (package
     (name "r-terra")
-    (version "1.7-29")
+    (version "1.7-39")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "terra" version))
        (sha256
         (base32
-         "19bwakxccgyn054p7nrf820jq7nwpcjlrgj2ldk137scld9b0f9z"))))
+         "03kc2m89236qh50qfxl1101ys466ddhgjwp80x6hjpmd9fz5jf5l"))))
     (properties `((upstream-name . "terra")))
     (build-system r-build-system)
     (inputs
-     (list gdal
+     (list curl
+           gdal
            geos
+           openssh
+           openssl
+           pcre2
            proj
-           sqlite ; needed for proj
+           sqlite
            zlib))
     (propagated-inputs
      (list r-rcpp))
@@ -25468,13 +25720,13 @@ programming problems.")
 (define-public r-desolve
   (package
     (name "r-desolve")
-    (version "1.35")
+    (version "1.36")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "deSolve" version))
        (sha256
-        (base32 "126l473wvmy7zsm34alskwigbf85dn657hsnzy24yx8kfx4pzwcn"))))
+        (base32 "1ygijjvmi7igk3xmm2mzfnbw05kynjdqbwddifg798awk7mfffjw"))))
     (properties `((upstream-name . "deSolve")))
     (build-system r-build-system)
     (native-inputs
@@ -25497,13 +25749,13 @@ to ODEs by numerical differencing.")
 (define-public r-pmcmrplus
   (package
     (name "r-pmcmrplus")
-    (version "1.9.6")
+    (version "1.9.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "PMCMRplus" version))
        (sha256
-        (base32 "1mvj3cwrdkl3frk7fvh6l7v7yya5p3xm4z0qhc4fvykxdmb92ivz"))))
+        (base32 "06i5vsf8hpzv0c8v156072xbqpxk1wf2iami7mnsjfp9xjjjzbhx"))))
     (properties `((upstream-name . "PMCMRplus")))
     (build-system r-build-system)
     (inputs (list gmp))
@@ -25516,7 +25768,7 @@ to ODEs by numerical differencing.")
            r-mvtnorm
            r-rmpfr
            r-suppdists))
-    (native-inputs (list gfortran r-knitr))
+    (native-inputs (list gfortran r-knitr r-rmarkdown))
     (home-page "https://cran.r-project.org/package=PMCMRplus")
     (synopsis "Calculate pairwise multiple comparisons of mean rank sums extended")
     (description
@@ -26036,6 +26288,25 @@ been created, it no longer relies on the font files.  No external software
 such as Ghostscript is needed to use this package.")
     (license license:asl2.0)))
 
+(define-public r-emoa
+  (package
+    (name "r-emoa")
+    (version "0.5-0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "emoa" version))
+              (sha256
+               (base32
+                "0fr4ia3hkv8c7wkl64a51s6ynldppc812ynwldvbwy25dhlbvs6r"))))
+    (properties `((upstream-name . "emoa")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/emoa/")
+    (synopsis "Evolutionary multiobjective optimization algorithms")
+    (description
+     "This package provides building blocks for the design and analysis of
+multiobjective optimization algorithms.")
+    (license license:gpl2)))
+
 (define-public r-emojifont
   (package
     (name "r-emojifont")
@@ -26324,14 +26595,14 @@ data.")
 (define-public r-mda
   (package
     (name "r-mda")
-    (version "0.5-3")
+    (version "0.5-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mda" version))
        (sha256
         (base32
-         "0qw4scc2w7jmnxssj5w2mdxb9rrl4dscqn54gplzm1gk2yf419mx"))))
+         "0nd7p3yz7qdzka7jizymv5vhbhzb4v8bjpmmn5wa83vxh0l7ypzj"))))
     (properties `((upstream-name . "mda")))
     (build-system r-build-system)
     (propagated-inputs (list r-class))
@@ -26862,14 +27133,14 @@ settings.")
 (define-public r-r-huge
   (package
     (name "r-r-huge")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "R.huge" version))
        (sha256
         (base32
-         "13p558qalv60pgr24nsm6mi92ryj65rsbqa6pgdwy0snjqx12bgi"))))
+         "1wjcssvn76fblpivwkapdwcw08pygbkj7qskcl0wn8mda9w5f72b"))))
     (properties `((upstream-name . "R.huge")))
     (build-system r-build-system)
     (propagated-inputs
@@ -27178,6 +27449,31 @@ forest) is fit on the kernel matrix of a subset of the training data.")
 classes into dummy/indicator variables.")
     (license license:gpl2+)))
 
+(define-public r-dunn-test
+  (package
+    (name "r-dunn-test")
+    (version "1.3.5")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "dunn.test" version))
+              (sha256
+               (base32
+                "0lqwvyl3pyygfc73nf81gzw3zl3w43r7ki0yw2dgrzhkpb2iji4a"))))
+    (properties `((upstream-name . "dunn.test")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=dunn.test")
+    (synopsis "Dunn's test of multiple comparisons using rank sums")
+    (description
+     "Dunn's test computes stochastic dominance & reports pairwise comparisons.
+This is done following a Kruskal-Wallis test (Kruskal and Wallis, 1952).  It
+employs Dunn's z-test-statistic approximations for rank statistics, conducting
+k(k-1)/2 comparisons.  The null hypothesis assumes that the probability of a
+randomly selected value from the first group being larger than one from the
+second group is one half, similar to the Wilcoxon-Mann-Whitney test.  Dunn's
+test serves as a test for median difference and takes into account tied
+ranks.")
+    (license license:gpl2)))
+
 (define-public r-acrm
   (package
     (name "r-acrm")
@@ -27447,14 +27743,14 @@ allowed.")
 (define-public r-gdina
   (package
     (name "r-gdina")
-    (version "2.9.3")
+    (version "2.9.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "GDINA" version))
        (sha256
         (base32
-         "0bwg9sfsqs5nsqwhjnbb631fbhj0mx2dc4c185qkym9cjb5lfkm9"))))
+         "10bbwr4q6cp36dnwhddviqg7f00h92gdmvblw0lxn72v4869vhn1"))))
     (properties `((upstream-name . "GDINA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28203,13 +28499,13 @@ Visualizations are also available for most of these settings.")
 (define-public r-torch
   (package
     (name "r-torch")
-    (version "0.10.0")
+    (version "0.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "torch" version))
        (sha256
-        (base32 "1ydazl7v10vm69573y871rq1dvbgdvlvhcs6di7xw7i4z4kg2gxm"))))
+        (base32 "04hvr3f4rgnxxc42fiv58kpyld4aagj6ambhw769v3bfz7s2v879"))))
     (properties `((upstream-name . "torch")))
     (build-system r-build-system)
     (arguments
@@ -29734,14 +30030,14 @@ perform @dfn{exploratory mediation} (XMed).")
 (define-public r-stanheaders
   (package
     (name "r-stanheaders")
-    (version "2.26.26")
+    (version "2.26.27")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "StanHeaders" version))
        (sha256
         (base32
-         "1jr5sflqhg70jkgz3x0q9nrk2xjzm1l4zmyc7j89m755b209sq4k"))))
+         "1cf9hc7z3d8b70jck37j3lc2ml040di91dylfb18yi6wx936bq3h"))))
     (properties `((upstream-name . "StanHeaders")))
     (build-system r-build-system)
     (inputs (list pandoc))
@@ -29834,14 +30130,14 @@ estimate parameters given observed data.")
 (define-public r-kutils
   (package
     (name "r-kutils")
-    (version "1.70")
+    (version "1.72")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "kutils" version))
        (sha256
         (base32
-         "06jk66wbq3jmdf2jdhqns6r3yk36l2x7c907x977zv80sqxa1l37"))))
+         "0mnrh1bfpwssw9j5lspvwfawqx9s4fxy2gh3n60knjzbzrzqckp4"))))
     (properties `((upstream-name . "kutils")))
     (build-system r-build-system)
     (propagated-inputs
@@ -31159,14 +31455,14 @@ is also implemented here.")
 (define-public r-aws
   (package
     (name "r-aws")
-    (version "2.5-1")
+    (version "2.5-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "aws" version))
        (sha256
         (base32
-         "1fhm87iax6bkvd4vszvjbcqw3b2drs11rjxr7zf2w4sgc72svaz8"))))
+         "022igrvxlyi0ckl3c6chcm459kv213jxy5hrvc14m36yhn3xckhm"))))
     (properties
      `((upstream-name . "aws")))
     (build-system r-build-system)
@@ -31654,18 +31950,23 @@ multi-state models.")
 (define-public r-scatterpie
   (package
     (name "r-scatterpie")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "scatterpie" version))
        (sha256
         (base32
-         "06crdylakwig8ryi1w5a6mmfy67gakmk6gp0xbrg749da1asd7a9"))))
+         "0wfrckyvy4zw34qdvgg1gwqfdi1xhs63v3gfwa4akm7ifd1canlb"))))
     (properties `((upstream-name . "scatterpie")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-dplyr r-ggforce r-ggfun r-ggplot2 r-rlang r-tidyr))
+     (list r-dplyr
+           r-ggforce
+           r-ggfun
+           r-ggplot2
+           r-rlang
+           r-tidyr))
     (native-inputs
      (list r-knitr))
     (home-page "https://cran.r-project.org/web/packages/scatterpie/")
@@ -32110,25 +32411,20 @@ Kemeny distance and correlation coefficient.")
 (define-public r-fastshap
   (package
     (name "r-fastshap")
-    (version "0.0.7")
+    (version "0.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fastshap" version))
        (sha256
         (base32
-         "0gxch67i3bj6m8nb94m5hswq058w6n1q9war4dy2qnimlv7cmhdv"))))
+         "112hc585aryzc5pgvr3qaa7arlx2h2sj9jlq9xha3nncyzqkh7c6"))))
     (properties `((upstream-name . "fastshap")))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-abind
-           r-ggplot2
-           r-gridextra
-           r-matrixstats
-           r-plyr
-           r-rcpp
-           r-rcpparmadillo
-           r-tibble))
+     (list r-foreach r-rcpp r-rcpparmadillo))
+    (native-inputs
+     (list r-knitr))
     (home-page "https://github.com/bgreenwell/fastshap")
     (synopsis "Fast approximate Shapley values")
     (description
@@ -32403,14 +32699,14 @@ which may also be useful for other purposes.")
 (define-public r-spatstat-sparse
   (package
     (name "r-spatstat-sparse")
-    (version "3.0-1")
+    (version "3.0-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat.sparse" version))
        (sha256
         (base32
-         "070ddmi73ly2lv23z556adgn7vc7xyhl2cnh1cis8sinmpfz071c"))))
+         "1gnlgz11dv66b41kdyyzm8nhkhhi4yajlcr2g52h2lfxlryb5g2h"))))
     (properties
      `((upstream-name . "spatstat.sparse")))
     (build-system r-build-system)
@@ -32449,14 +32745,14 @@ package.")
 (define-public r-spatstat-geom
   (package
     (name "r-spatstat-geom")
-    (version "3.2-1")
+    (version "3.2-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spatstat.geom" version))
        (sha256
         (base32
-         "1yrms8jwk5svggm73y0nk4j1k85rd92fvgvd4ia6nina63pmvbph"))))
+         "1hvk61j8xxkj8n5g0fdbpa3h8j2km1q689l9l87jzzdsz95jgk9f"))))
     (properties `((upstream-name . "spatstat.geom")))
     (build-system r-build-system)
     (propagated-inputs
@@ -32620,14 +32916,14 @@ for linear mixed models (AIREML).")
 (define-public r-cpp11
   (package
     (name "r-cpp11")
-    (version "0.4.3")
+    (version "0.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cpp11" version))
        (sha256
         (base32
-         "1wcq4lq7xa62xn6zsg6r8nf6vdlvnlwxgfqndb7vnvd8f54hx9pi"))))
+         "10c6i5daw3xy4w0f1pjc09x5iykv0fjdp2a33qjl0yrivmmdamkj"))))
     (properties `((upstream-name . "cpp11")))
     (build-system r-build-system)
     (native-inputs (list r-knitr))
@@ -32692,14 +32988,14 @@ aggregation for comparing different implementations in order to provide a
 (define-public r-rfast
   (package
     (name "r-rfast")
-    (version "2.0.7")
+    (version "2.0.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rfast" version))
        (sha256
         (base32
-         "13yzvvl49sibf2py990fb60nyjby5h10pbli3i7159v08yd1b1lg"))))
+         "1c64j8hg6id4ri3m32aa1r0qyn09kl3dvl865dzf43qdb3qcichv"))))
     (properties `((upstream-name . "Rfast")))
     (build-system r-build-system)
     (propagated-inputs
@@ -33315,13 +33611,13 @@ value.")
 (define-public r-confintr
   (package
     (name "r-confintr")
-    (version "1.0.1")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "confintr" version))
               (sha256
                (base32
-                "0p2k1bflyb82grp6ikh7dw3dacvsch8zfwxwwr4v325q0yk98iiz"))))
+                "0gi9cnk2cd67vmywrkb19g6f9gr8k999kg0k03khad7lgqp4l43s"))))
     (properties `((upstream-name . "confintr")))
     (build-system r-build-system)
     (propagated-inputs (list r-boot))
@@ -33421,21 +33717,26 @@ model.")
 (define-public r-igraph
   (package
     (name "r-igraph")
-    (version "1.4.3")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "igraph" version))
        (sha256
         (base32
-         "08b0q5fb9wrnzq32izylq8fxyagibrng5yb80acsbmnfdkxb7g86"))))
+         "01kkzl0akq5ygz2mvn29myhnfx4b74xkpmn592ih1vnh1zzph1yq"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran r-knitr))
     (inputs
-     (list gmp glpk libxml2 zlib))
+     (list glpk gmp libxml2 zlib))
     (propagated-inputs
-     (list r-cpp11 r-magrittr r-matrix r-pkgconfig r-rlang))
+     (list r-cli
+           r-cpp11
+           r-magrittr
+           r-matrix
+           r-pkgconfig
+           r-rlang))
     (home-page "https://igraph.org")
     (synopsis "Network analysis and visualization")
     (description
@@ -33725,6 +34026,24 @@ different types of resampling objects (e.g. bootstrap, cross-validation).")
 Design} (SFD) and to test their quality.")
     (license license:gpl3)))
 
+(define-public r-dicekriging
+  (package
+    (name "r-dicekriging")
+    (version "1.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "DiceKriging" version))
+              (sha256
+               (base32
+                "0jfb2li6b93fkwgjkr4jwxnvv7zb0aqk9lkf2mnv2awzh0r16pdb"))))
+    (properties `((upstream-name . "DiceKriging")))
+    (build-system r-build-system)
+    (home-page "https://dicekrigingclub.github.io/www/")
+    (synopsis "Kriging methods for computer experiments")
+    (description "This is a package for the estimation, validation and
+prediction of kriging models.")
+    (license license:gpl2+)))
+
 (define-public r-dials
   (package
     (name "r-dials")
@@ -34532,14 +34851,14 @@ as allowing spectra with different resolutions.")
 (define-public r-scattermore
   (package
     (name "r-scattermore")
-    (version "1.1")
+    (version "1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "scattermore" version))
        (sha256
         (base32
-         "1iairy18k1k66863f5avxs5mq1a42477w1kcl6w465is1awc1sb3"))))
+         "1l820rc4ncmqd5sacdc420xf6r5dh34sbhgzzgq7a4yx1dxshd2m"))))
     (properties `((upstream-name . "scattermore")))
     (build-system r-build-system)
     (propagated-inputs
@@ -34618,13 +34937,13 @@ other R users.")
 (define-public r-seurat
   (package
     (name "r-seurat")
-    (version "4.3.0")
+    (version "4.3.0.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "Seurat" version))
               (sha256
                (base32
-                "0z7rzxi1gli56k50s6w1363ndw18wykgk5xmc3g7jhpphqxwpfky"))))
+                "04lbwk8mcv7gsi70sij264mz80frx1pr60ihv9dqg63sgr234ax4"))))
     (properties `((upstream-name . "Seurat")))
     (build-system r-build-system)
     (propagated-inputs
@@ -35131,6 +35450,96 @@ well as email and push notifications.")
 \"Discovering Motifs in Ranked Lists of DNA Sequences\" by Eran Eden.")
     (license license:gpl2)))
 
+(define-public r-mlr
+  (package
+    (name "r-mlr")
+    (version "2.19.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "mlr" version))
+              (sha256
+               (base32
+                "00jjhvaqifj6glqsyzixlp56bvlch5smck8kk3klcmwx9pasyllx"))))
+    (properties `((upstream-name . "mlr")))
+    (build-system r-build-system)
+    (inputs (list gdal
+                  geos
+                  glu
+                  gmp
+                  gsl
+                  jags
+                  mpfr
+                  openmpi
+                  proj
+                  udunits))
+    (propagated-inputs (list r-backports
+                             r-bbmisc
+                             r-checkmate
+                             r-data-table
+                             r-ggplot2
+                             r-parallelmap
+                             r-paramhelpers
+                             r-stringi
+                             r-survival
+                             r-xml))
+    (native-inputs (list r-knitr))
+    (home-page "https://mlr.mlr-org.com")
+    (synopsis "Machine learning in R")
+    (description
+     "This package provides an interface to a large number of classification
+and regression techniques.  These techniques include machine-readable
+parameter descriptions.  There is also an experimental extension for survival
+analysis, clustering and general, example-specific cost-sensitive learning.
+Also included:
+
+@itemize
+
+@item Generic resampling, including cross-validation, bootstrapping and
+  subsampling;
+@item Hyperparameter tuning with modern optimization techniques, for single-
+  and multi-objective problems;
+@item Filter and wrapper methods for feature selection;
+@item Extension of basic learners with additional operations common in machine
+  learning, also allowing for easy nested resampling.
+@end itemize
+
+Most operations can be parallelized.")
+    (license license:bsd-2)))
+
+(define-public r-mlrmbo
+  (package
+    (name "r-mlrmbo")
+    (version "1.1.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "mlrMBO" version))
+              (sha256
+               (base32
+                "16fwj7m28g4km7yalqppxmh3lw2jln0z072l6awia38qkdg6xwhc"))))
+    (properties `((upstream-name . "mlrMBO")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-backports
+                             r-bbmisc
+                             r-checkmate
+                             r-data-table
+                             r-lhs
+                             r-mlr
+                             r-parallelmap
+                             r-paramhelpers
+                             r-smoof))
+    (native-inputs (list r-knitr))
+    (home-page "https://github.com/mlr-org/mlrMBO")
+    (synopsis "Model-based optimization with mlr")
+    (description
+     "This package is a flexible and comprehensive R toolbox for model-based
+optimization.  It implements Efficient Global Optimization Algorithm for
+single- and multi-objective optimization.  It supports mixed parameters.  The
+machine learning toolbox mlr offers regression learners.  It provides various
+infill criteria and features batch proposal, parallel execution,
+visualization, and logging.  Its modular implementation allows easy
+customization by the user.")
+    (license license:bsd-2)))
+
 (define-public r-mlr3measures
   (package
     (name "r-mlr3measures")
@@ -35263,17 +35672,16 @@ implemented as @code{R6} classes.")
 (define-public r-mlr3
   (package
     (name "r-mlr3")
-    (version "0.16.0")
+    (version "0.16.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3" version))
               (sha256
                (base32
-                "1nzj73qsbb02fcim9826zkxzzpar32pq2r0yfkis1nxaxky4cclr"))))
+                "09klavihc2j6wsd9m2ycppl2ir85z5cxlxl9h6ay9skacylk559n"))))
     (build-system r-build-system)
     (propagated-inputs
-     (list r-r6
-           r-backports
+     (list r-backports
            r-checkmate
            r-data-table
            r-evaluate
@@ -35286,6 +35694,7 @@ implemented as @code{R6} classes.")
            r-palmerpenguins
            r-paradox
            r-parallelly
+           r-r6
            r-uuid))
     (home-page "https://mlr3.mlr-org.com/")
     (synopsis "Machine Learning in R - Next Generation")
@@ -35357,13 +35766,13 @@ annealing.")
 (define-public r-mlr3tuning
   (package
     (name "r-mlr3tuning")
-    (version "0.18.0")
+    (version "0.19.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mlr3tuning" version))
               (sha256
                (base32
-                "1wvrdg977a2nibgyvccz2mw8043nsvm716mmwkspx4sgacf0sgx7"))))
+                "1iz7izmkx11jma95305wq8aapi4dmqg20flgxxvdvrfy6hf98k33"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-bbotk
@@ -35374,6 +35783,8 @@ annealing.")
            r-mlr3misc
            r-paradox
            r-r6))
+    (native-inputs
+     (list r-knitr))
     (home-page "https://mlr3tuning.mlr-org.com/")
     (synopsis "Tuning for @code{mlr3}")
     (description "@code{mlr3tuning} implements methods for hyperparameter
@@ -35677,14 +36088,14 @@ AGG to use as alternative to the raster devices provided through the
 (define-public r-downlit
   (package
     (name "r-downlit")
-    (version "0.4.2")
+    (version "0.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "downlit" version))
        (sha256
         (base32
-         "0g3yncj3gmaqsc6cw7g9slgvd0kfk2414yz5m1dilk8h15lzdprk"))))
+         "1gdk6rj3539vnm979spd8py0rpvlaniyiy336abi39g8xjcbw3vc"))))
     (properties `((upstream-name . "downlit")))
     (build-system r-build-system)
     (propagated-inputs
@@ -36300,14 +36711,14 @@ latter.")
 (define-public r-readtext
   (package
     (name "r-readtext")
-    (version "0.82")
+    (version "0.90")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "readtext" version))
         (sha256
           (base32
-            "13j0avf5443m46lczdznpw1zlc01psk61m5wrxks9inv0684xg1s"))))
+            "01hscqmjb3fz4iqqgi0l2s1z48a53a25jnsxb0cdd631c97alqrh"))))
     (properties `((upstream-name . "readtext")))
     (build-system r-build-system)
     (propagated-inputs
@@ -36506,14 +36917,14 @@ Application Program Interfaces (API)}.")
 (define-public r-intervals
   (package
     (name "r-intervals")
-    (version "0.15.3")
+    (version "0.15.4")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "intervals" version))
         (sha256
           (base32
-            "1i6z86dnsb5md4hxaz049azpjpp8m8c9b0q7x1sfi6sbqzvzw0c5"))))
+            "13wzwg5yc1wr8ww8bhv9x5ha78yajsfmb9phq4nbgrxkmbiy3h2h"))))
     (properties `((upstream-name . "intervals")))
     (build-system r-build-system)
     (home-page "https://github.com/edzer/intervals")
@@ -36582,14 +36993,14 @@ BTM-WWW13.pdf}.")
 (define-public r-delaporte
   (package
     (name "r-delaporte")
-    (version "8.1.0")
+    (version "8.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Delaporte" version))
        (sha256
         (base32
-         "08si87f6zjsmmzgvhnfjw8l7lcwlfj2qd4zf6ypm197vdhqw0d0r"))))
+         "0vcz23nm1wb49yp57xhdfjixla0ikyalc55m03hsis91cdnwh28g"))))
     (properties `((upstream-name . "Delaporte")))
     (build-system r-build-system)
     (native-inputs (list gfortran))
@@ -37054,18 +37465,21 @@ reading and writing arbitrary protocol-buffer data in R.")
 (define-public r-opencpu
   (package
     (name "r-opencpu")
-    (version "2.2.9")
+    (version "2.2.10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "opencpu" version))
        (sha256
-        (base32 "18vlr1isi92zc9a16ld3fczdw2mcd142k5cbpls3nfxgdjbx3qqk"))
+        (base32 "0wpr3cgkznrm2ivapi1vdlcm2729v1jkyah5q82nfmnzisdlrc4a"))
        (snippet
         '(for-each delete-file
                    '("inst/test/jquery-1.10.2.min.js"
                      "inst/test/bootstrap/js/bootstrap.min.js")))))
-    (properties `((upstream-name . "opencpu")))
+    (properties
+     `((upstream-name . "opencpu")
+       (updater-ignored-inputs . ("apparmor"))
+       (updater-extra-native-inputs . ("js-jquery"))))
     (build-system r-build-system)
     (arguments
      (list
@@ -37655,14 +38069,14 @@ fully reproducible.")
 (define-public r-paws-common
   (package
     (name "r-paws-common")
-    (version "0.5.6")
+    (version "0.5.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.common" version))
        (sha256
         (base32
-         "0kymia03q6fy9hjlvdfwddizkk5liamhq800m05qmi10qa3sg059"))))
+         "1vx74lxgzsl1yl4ak5zympkgwza023qbjwskp19nm2dvxhz75cfh"))))
     (properties `((upstream-name . "paws.common")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37686,14 +38100,14 @@ Service (S3).")
 (define-public r-paws-customer-engagement
   (package
     (name "r-paws-customer-engagement")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.customer.engagement" version))
        (sha256
         (base32
-         "12viq760wd5b7dl800075hvm8jy19q112m6rlgyz85znwbiam2qj"))))
+         "18gkr3272jj1pkksm6fy6qz5s5jn0yvb12pz29k204xrzmqwdwgm"))))
     (properties
      `((upstream-name . "paws.customer.engagement")))
     (build-system r-build-system)
@@ -37710,14 +38124,14 @@ service, and more.")
 (define-public r-paws-cost-management
   (package
     (name "r-paws-cost-management")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.cost.management" version))
        (sha256
         (base32
-         "0rpl6dfv6xa7ysqhhskcj7kix4s087yrxav9n33730hk1gjf1g62"))))
+         "0v0s8wwx2j3a6s0pl9vnvbpgdyhn3jlxri0b2fl3gc3zx6qh07dl"))))
     (properties
      `((upstream-name . "paws.cost.management")))
     (build-system r-build-system)
@@ -37734,13 +38148,13 @@ more.")
 (define-public r-paws-developer-tools
   (package
     (name "r-paws-developer-tools")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.developer.tools" version))
        (sha256
-        (base32 "0d1j9wilwx2harvslg9vs6k8w7631pqgr1c8346wzjk5387fpsac"))))
+        (base32 "1b661gpg7rsdkgpriwczj4cvqg9rh1ajz9ma457bw4p3lv7n53x2"))))
     (properties `((upstream-name . "paws.developer.tools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37756,13 +38170,13 @@ deployment, and more.")
 (define-public r-paws-end-user-computing
   (package
     (name "r-paws-end-user-computing")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.end.user.computing" version))
        (sha256
-        (base32 "0709jwrihggqsp3p99sqldsfk7bww3pgl9x0akrnm60daqxhhyqv"))))
+        (base32 "0as9ix46rsa7sg8k96v6l3ibxqc95pf7swrij31ljmwfy82z2rq3"))))
     (properties `((upstream-name . "paws.end.user.computing")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37778,14 +38192,14 @@ and more.")
 (define-public r-paws-application-integration
   (package
     (name "r-paws-application-integration")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.application.integration" version))
        (sha256
         (base32
-         "0m79k4q3yalzym4alv4h1mggr9sf8sc1vk1islx5j63s2p6m4j3g"))))
+         "19lz1vcvb1bn405saxx4zjsmm1q4zaw77z08iw4xbyny5xhkgyvi"))))
     (properties
      `((upstream-name . "paws.application.integration")))
     (build-system r-build-system)
@@ -37802,14 +38216,14 @@ Simple Notification Service (SNS) publish/subscribe messaging, and more.")
 (define-public r-paws-security-identity
   (package
     (name "r-paws-security-identity")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.security.identity" version))
        (sha256
         (base32
-         "0rnws1d8wy3nhg2fyidpa21sfbz3r7jalrklnx6l8s92jyycmhbd"))))
+         "02k15skswd58icafydrbjrp7br5x8l93lwi5z1pwqak6xasi0vqh"))))
     (properties
      `((upstream-name . "paws.security.identity")))
     (build-system r-build-system)
@@ -37827,14 +38241,14 @@ more.")
 (define-public r-paws-analytics
   (package
     (name "r-paws-analytics")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.analytics" version))
        (sha256
         (base32
-         "1ixgrcfixx7h17wryml63n28ldgxi2srqw3bqglws54h5acgqza9"))))
+         "0qjk1gn4p41l4ryqf9xppiphfakypl0xdjk23c9c8xdhqkbw0lcw"))))
     (properties
      `((upstream-name . "paws.analytics")))
     (build-system r-build-system)
@@ -37851,14 +38265,14 @@ Elasticsearch search engine, and more.")
 (define-public r-paws-machine-learning
   (package
     (name "r-paws-machine-learning")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.machine.learning" version))
        (sha256
         (base32
-         "0nmxb53x0vsd2g69qnxxs4hapcbg53r9b26cdkhpmj6ijj7v1hh3"))))
+         "092n5p5hjwaqkdnw4r7n71znabfazc2pg19raja69jgk6zh6csvy"))))
     (properties
      `((upstream-name . "paws.machine.learning")))
     (build-system r-build-system)
@@ -37875,14 +38289,14 @@ natural language processing, speech recognition, translation, and more.")
 (define-public r-paws-management
   (package
     (name "r-paws-management")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.management" version))
        (sha256
         (base32
-         "1hdjgbrfrhrh9ss3lhnsjd2qpz22mrb95qvdcfngz2i8aa73hmpg"))))
+         "0hdmc07i75hbk2fh580p7q7p3pk8ykr5m1jibnfk8azc4flikwv6"))))
     (properties
      `((upstream-name . "paws.management")))
     (build-system r-build-system)
@@ -37899,14 +38313,14 @@ monitoring, Auto Scaling for automatically scaling resources, and more.")
 (define-public r-paws-networking
   (package
     (name "r-paws-networking")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.networking" version))
        (sha256
         (base32
-         "1fyr236pk6pyc6qck8i8mn855wxlbcmb40mnwmhaqjfxy503jjh7"))))
+         "0pf1vvwmgsz65bq5diabybnsgyxfbjq1f64srf3qk49ycfh2sc7h"))))
     (properties
      `((upstream-name . "paws.networking")))
     (build-system r-build-system)
@@ -37923,14 +38337,14 @@ CloudFront content delivery, load balancing, and more.")
 (define-public r-paws-database
   (package
     (name "r-paws-database")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.database" version))
        (sha256
         (base32
-         "0fg1z87rk24iaci44xp005sbsx48qxgw4hccds17znys7da868bx"))))
+         "08ak299kyr6dr8idcna7i433aab1bis2b9zqmwm1yma3m3xk4n8i"))))
     (properties `((upstream-name . "paws.database")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37947,14 +38361,14 @@ database, and more.")
 (define-public r-paws-storage
   (package
     (name "r-paws-storage")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.storage" version))
        (sha256
         (base32
-         "1yqd1a1c0m978x1ngk39x7sb0glmcy855nw7m1wbgn2mxma0q3li"))))
+         "0z693wawgm975lw54xkbg9hwsf1lz69a4dsg85ywjpjcfvl1g1b7"))))
     (properties `((upstream-name . "paws.storage")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37969,14 +38383,14 @@ services, including Simple Storage Service (S3).")
 (define-public r-paws-compute
   (package
     (name "r-paws-compute")
-    (version "0.2.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws.compute" version))
        (sha256
         (base32
-         "10bfcwsriyl73mp3wi9kvn6msy1g4ci71jmpv61bcqngp9qmv4wg"))))
+         "17xzc1ngir4v043xclw6c1qs092aicj83qmn8sydn9apmlzcps1r"))))
     (properties `((upstream-name . "paws.compute")))
     (build-system r-build-system)
     (propagated-inputs
@@ -37992,14 +38406,14 @@ functions-as-a-service, containers, batch processing, and more.")
 (define-public r-paws
   (package
     (name "r-paws")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "paws" version))
        (sha256
         (base32
-         "0pwm4pnrjcbsp396fc7r2b8p3cfnrdnk0zcdbw6b92bgv9hpbp14"))))
+         "1s4nya5xghjj1a2w8bqcmnpnpdw7li22asssm2ihv68zvlxavzdk"))))
     (properties `((upstream-name . "paws")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 3877f6c977..f9574e2797 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2559,17 +2559,17 @@ Alacritty terminal emulator.")
      "This package provides a failure resistant deserialization derive.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-alacritty-terminal-0.18
+(define-public rust-alacritty-terminal-0.19
   (package
     (name "rust-alacritty-terminal")
-    (version "0.18.0")
+    (version "0.19.1")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "alacritty-terminal" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1dk6zp5646ss0l9ka48jf6ajdzaq0zxl2pndblfl7a0f9lmwkwfx"))))
+                "19gypy8xhkm3icmc4js2jhh0nnw0ciag3qkxb55bw2mg3j61l01m"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 9b89c7d545..aa4aab372b 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1107,6 +1107,7 @@ trivial to build for local use.  Portability is emphasized over performance.")
               (uri (git-reference
                     (url "https://github.com/bitcoin-core/secp256k1")
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "12wksk7bi3yfzmk1zwh5b6846zcaycqz1w4w4p23apjc8da4jwpn"))))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 133d7debf4..eede1e1a05 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -63,8 +63,8 @@
   #:use-module (ice-9 match))
 
 (define-public brlaser
-  (let ((commit "9d7ddda8383bfc4d205b5e1b49de2b8bcd9137f1")
-        (revision "1"))
+  (let ((commit "2a49e3287c70c254e7e3ac9dabe9d6a07218c3fa")
+        (revision "2"))
     (package
       (name "brlaser")
       (version (git-version "6" revision commit))
@@ -76,16 +76,13 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1drh0nk7amn9a8wykki4l9maqa4vy7vwminypfy1712alwj31nd4"))))
+                  "033g461qzwrzi6x24pfasyx9g7fkn5iy5f8c3h8bczg2bvscxyym"))))
       (build-system cmake-build-system)
       (arguments
-       `(#:configure-flags
-         (list (string-append "-DCUPS_DATA_DIR="
-                              (assoc-ref %outputs "out")
-                              "/share/cups")
-               (string-append "-DCUPS_SERVER_BIN="
-                              (assoc-ref %outputs "out")
-                              "/lib/cups"))))
+       (list
+        #:configure-flags
+        #~(list (string-append "-DCUPS_DATA_DIR=" #$output "/share/cups")
+                (string-append "-DCUPS_SERVER_BIN=" #$output "/lib/cups"))))
       (inputs
        (list ghostscript cups zlib))
       (home-page "https://github.com/pdewacht/brlaser")
@@ -249,6 +246,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
   (package
     (name "cups-minimal")
     (version "2.4.2")
+    (replacement cups-minimal/fixed)
     (source
      (origin
        (method git-fetch)
@@ -335,13 +333,28 @@ applications''.  These must be installed separately.")
     ;; CUPS is Apache 2.0 with exceptions, see the NOTICE file.
     (license license:asl2.0)))
 
+(define cups-minimal/fixed
+  (package
+    (inherit cups-minimal)
+    (version "2.4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/OpenPrinting/cups")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cups" version))
+       (sha256
+        (base32 "0z70rhfd96qmdx82gdhh2nqjiia0lnvfdwpngjkag2sidw4cm3c1"))))))
+
 (define-public cups
   (package/inherit cups-minimal
     (name "cups")
     (arguments
-     (substitute-keyword-arguments (package-arguments cups-minimal)
-       ((#:tests? _ #t)
-        #t)
+     (substitute-keyword-arguments
+       (strip-keyword-arguments
+         '(#:tests?)
+         (package-arguments cups-minimal))
        ((#:configure-flags flags #~'())
         #~(append #$flags
                   (list "--with-languages=all"))) ; no ‘=all’ means none(!)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 42b394daf2..cc0f0d28e9 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1559,7 +1559,22 @@ organized in a hash table or B+ tree.")
            #~(list "--disable-static"
                    (string-append "--with-bash-headers="
                                   (search-input-directory %build-inputs
-                                                          "include/bash")))))
+                                                          "include/bash")))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'symlink-bash-loadables
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (with-directory-excursion (string-append
+                                              (assoc-ref outputs "out")
+                                              "/lib")
+                     (mkdir "bash")
+                     (for-each
+                      (compose symlink
+                               (lambda (loadable)
+                                 (values
+                                  (string-append (getcwd) "/" loadable ".so")
+                                  (string-append "bash/" loadable))))
+                      '("readrec" "testrec"))))))))
     (native-inputs
      (list bc check-0.14 pkg-config))
     (inputs
@@ -4286,7 +4301,7 @@ the SQL language using a syntax that reflects the resulting query.")
 (define-public apache-arrow
   (package
     (name "apache-arrow")
-    (version "12.0.0")
+    (version "12.0.1")
     (source
      (origin
        (method git-fetch)
@@ -4296,7 +4311,7 @@ the SQL language using a syntax that reflects the resulting query.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "057n3l9bpnfn8fqlqblkdz4w4rkmkr7zrh3adlgfw4nipwmm38zj"))))
+         "03flvb4xj6a7mfphx68ndrqr6g5jphmzb75m16fx7rnbzira2zpz"))))
     (build-system cmake-build-system)
     (arguments
      (list
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 87aa4dbe17..c5cfda9f80 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -337,7 +337,7 @@ distributions such as Debian and Trisquel.")
 (define-public dpkg
   (package
     (name "dpkg")
-    (version "1.21.21")
+    (version "1.21.22")
     (source
       (origin
         (method git-fetch)
@@ -346,57 +346,60 @@ distributions such as Debian and Trisquel.")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0vgc5irrjyyb5y5hza2hbq3dgfylrxvfdzysw8zzlhgf4bhm69zq"))))
+         (base32 "0b5czgif5g6pdjzcw60hzzj0i1llxvajf3nlx115axmpa3y4iynd"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'bootstrap 'patch-version
-           (lambda _
-             (patch-shebang "build-aux/get-version")
-             (with-output-to-file ".dist-version"
-               (lambda () (display ,version)))))
-         (add-after 'unpack 'set-perl-libdir
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out  (assoc-ref outputs "out"))
-                   (perl (assoc-ref inputs "perl")))
-               (setenv "PERL_LIBDIR"
-                       (string-append out
-                                      "/lib/perl5/site_perl/"
-                                      ,(package-version perl))))))
-         (add-after 'install 'wrap-scripts
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion (string-append out "/bin")
-                 (for-each
-                   (lambda (file)
-                     (wrap-script file
-                       ;; Make sure all perl scripts in "bin" find the
-                       ;; required Perl modules at runtime.
-                       `("PERL5LIB" ":" prefix
-                         (,(string-append out
-                                          "/lib/perl5/site_perl")
-                           ,(getenv "PERL5LIB")))
-                       ;; DPKG perl modules always expect dpkg to be installed.
-                       ;; Work around this by adding dpkg to the path of the scripts.
-                       `("PATH" ":" prefix (,(string-append out "/bin")))))
-                   (list "dpkg-architecture"
-                         "dpkg-buildflags"
-                         "dpkg-buildpackage"
-                         "dpkg-checkbuilddeps"
-                         "dpkg-distaddfile"
-                         "dpkg-genbuildinfo"
-                         "dpkg-genchanges"
-                         "dpkg-gencontrol"
-                         "dpkg-gensymbols"
-                         "dpkg-mergechangelogs"
-                         "dpkg-name"
-                         "dpkg-parsechangelog"
-                         "dpkg-scanpackages"
-                         "dpkg-scansources"
-                         "dpkg-shlibdeps"
-                         "dpkg-source"
-                         "dpkg-vendor")))))))))
+     (list #:modules
+           `((srfi srfi-71)
+             ,@%gnu-build-system-modules)
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'bootstrap 'patch-version
+                 (lambda _
+                   (patch-shebang "build-aux/get-version")
+                   (with-output-to-file ".dist-version"
+                     (lambda () (display #$version)))))
+               (add-after 'unpack 'set-perl-libdir
+                 (lambda _
+                   (let* ((perl #$(this-package-input "perl"))
+                          (_ perl-version (package-name->name+version perl)))
+                     (setenv "PERL_LIBDIR"
+                             (string-append #$output
+                                            "/lib/perl5/site_perl/"
+                                            perl-version)))))
+               (add-after 'install 'wrap-scripts
+                 (lambda _
+                   (with-directory-excursion (string-append #$output "/bin")
+                     (for-each
+                      (lambda (file)
+                        (wrap-script file
+                          ;; Make sure all perl scripts in "bin" find the
+                          ;; required Perl modules at runtime.
+                          `("PERL5LIB" ":" prefix
+                            (,(string-append #$output
+                                             "/lib/perl5/site_perl")
+                             ,(getenv "PERL5LIB")))
+                          ;; DPKG perl modules expect dpkg to be installed.
+                          ;; Work around it by adding dpkg to the script's path.
+                          `("PATH" ":" prefix (,(string-append #$output
+                                                               "/bin")))))
+                      (list "dpkg-architecture"
+                            "dpkg-buildflags"
+                            "dpkg-buildpackage"
+                            "dpkg-checkbuilddeps"
+                            "dpkg-distaddfile"
+                            "dpkg-genbuildinfo"
+                            "dpkg-genchanges"
+                            "dpkg-gencontrol"
+                            "dpkg-gensymbols"
+                            "dpkg-mergechangelogs"
+                            "dpkg-name"
+                            "dpkg-parsechangelog"
+                            "dpkg-scanpackages"
+                            "dpkg-scansources"
+                            "dpkg-shlibdeps"
+                            "dpkg-source"
+                            "dpkg-vendor"))))))))
     (native-inputs
      (list autoconf
            automake
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index aaf5f8bf4c..0c97f61ccb 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -678,7 +678,7 @@ error reporting, better tracing, profiling, and a debugger.")
     (inputs
      (list gdb capnproto python python-pexpect zlib))
     (home-page "https://rr-project.org/")
-    (synopsis "Record and reply debugging framework")
+    (synopsis "Record and replay debugging framework")
     (description
      "rr is a lightweight tool for recording, replaying and debugging
 execution of applications (trees of processes and threads).  Debugging extends
@@ -716,7 +716,7 @@ program to produce symbolic backtraces.")
 (define-public libleak
   (package
     (name "libleak")
-    (version "0.3.5")
+    (version "0.3.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -725,7 +725,7 @@ program to produce symbolic backtraces.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1p8mb0hcfp8hdv1klv6rrpkn2zlhjxgkxbbjsk8kszxv7ijln87d"))))
+                "1p6x20mm0dym2qn10d6cvwmh71m93xwcd319g94zkv88hj5q17n6"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ;no test suite
diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm
index c13374069f..ef2130a940 100644
--- a/gnu/packages/dezyne.scm
+++ b/gnu/packages/dezyne.scm
@@ -32,15 +32,14 @@
 (define-public dezyne
   (package
     (name "dezyne")
-    (version "2.17.2")
+    (version "2.17.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dezyne.org/download/dezyne/"
                            name "-" version ".tar.gz"))
-       (patches (search-patches "dezyne-add-missing-shebangs.patch"))
        (sha256
-        (base32 "1v0anwr0iic26ck796b29dfyj1dxkjf935g134z98s95hvzzrhm3"))))
+        (base32 "0x2aqfvbxhiwxj6vm17g7dkxwj8skcs9pg3a3l1x9pxy7v22wxd7"))))
     (inputs (list bash-minimal
                   guile-3.0-latest
                   guile-json-4
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index b878614dc2..6cdcf7b9d2 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -78,6 +78,9 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
@@ -574,6 +577,42 @@ the default timer setting is not well suited to Linux or other *nix systems,
 and can dramatically shorten the lifespan of the drive if left unchecked.")
     (license license:gpl3+)))
 
+(define-public greaseweazle-host-tools
+  (package
+    (name "greaseweazle-host-tools")
+    (version "1.12")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/keirf/greaseweazle")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lpvjlf2xg4ccwik8npiihi0lgw9dx5h12pp4ry343gkz4pwgk9x"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'setuptools-version
+            (lambda _
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" "1.8")))
+          (add-after 'install 'install-udev-rules
+            (lambda _
+              (install-file "scripts/49-greaseweazle.rules"
+                            (string-append #$output "/lib/udev/rules.d/")))))))
+    (native-inputs (list python-setuptools-scm))
+    (propagated-inputs
+     (list python-bitarray python-crcmod python-pyserial python-requests))
+    (synopsis "Tools for accessing a floppy drive at the raw flux level")
+    (description
+     "This package provides the host tools for controlling a Greaseweazle: an
+Open Source USB device capable of reading and writing raw data on nearly any
+type of floppy disk")
+    (home-page "https://github.com/keirf/greaseweazle")
+    (license license:public-domain)))
+
 (define-public gparted
   (package
     (name "gparted")
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 9ddcef7021..f6c9283a29 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -280,7 +280,8 @@ experience for your users, your family and yourself")
                 "1wr60c946p8jz9kb8zi4cd8d4mkcy7infbvlfzwajiglc22nblxn"))
               (patches (search-patches "lightdm-arguments-ordering.patch"
                                        "lightdm-vncserver-check.patch"
-                                       "lightdm-vnc-color-depth.patch"))))
+                                       "lightdm-vnc-color-depth.patch"
+                                       "lightdm-vnc-ipv6.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:parallel-tests? #f             ; fails when run in parallel
diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
index 2c957df114..7b37359f29 100644
--- a/gnu/packages/distributed.scm
+++ b/gnu/packages/distributed.scm
@@ -20,6 +20,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages distributed)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix download)
@@ -45,7 +46,7 @@
 (define-public boinc-client
   (package
     (name "boinc-client")
-    (version "7.22.0")
+    (version "7.22.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -56,9 +57,12 @@
               (file-name (git-file-name "boinc" version))
               (sha256
                (base32
-                "0af7j6zg3saa5x7lfsg41p7j9r1d1dsdsz5b241p1f2yrhba0m81"))))
+                "06qlfrn9bxcdgs9b4j7l4mwikrkvfizccprip18rlzl3i34jys7l"))))
     (build-system gnu-build-system)
-    (arguments '(#:configure-flags '("--disable-server")))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "--disable-server")))
     (inputs (list openssl
                   curl
                   wxwidgets
@@ -84,11 +88,11 @@ resources).  It supports virtualized, parallel, and GPU-based applications.")
   ;; TODO: consolidate them?
   (package (inherit boinc-client)
     (name "boinc-server")
-    (arguments '(#:configure-flags '("--disable-client" "--disable-manager")
-                 #:parallel-build? #f))
-    (inputs `(("openssl" ,openssl)
-              ("curl" ,curl)
-              ("mariadb:dev" ,mariadb "dev")
-              ("zlib" ,zlib)))
-    (propagated-inputs `(("python" ,python-wrapper)
-                         ("perl" ,perl)))))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "--disable-client"
+              "--disable-manager")
+      #:parallel-build? #f))
+    (inputs (list curl `(,mariadb "dev") openssl zlib))
+    (propagated-inputs (list perl python-wrapper))))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 084df53f14..a34e4ced89 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -510,41 +510,6 @@ the two.")
                    license:gpl2
                    license:gpl3))))
 
-(define-public libasr
-  (package
-    (name "libasr")
-    (version "1.0.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://www.opensmtpd.org/archives/"
-                           "libasr-" version ".tar.gz"))
-       (sha256
-        (base32 "1d6s8njqhvayx2gp47409sp1fn8m608ws26hr1srfp6i23nnpyqr"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-documentation
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (install-file "src/asr_run.3"
-                             (string-append out "/share/man/man3"))
-               #t))))))
-    (native-inputs
-     (list autoconf automake libtool pkg-config))
-    (home-page "https://www.opensmtpd.org")
-    (synopsis "Asynchronous resolver library by the OpenBSD project")
-    (description
-     "libasr is a free, simple and portable asynchronous resolver library.
-It runs DNS queries and performs hostname resolution in a fully
-asynchronous fashion.")
-    (license (list license:isc
-                   license:bsd-2 ; last part of getrrsetbyname_async.c
-                   license:bsd-3
-                   (license:non-copyleft "file://LICENSE") ; includes.h
-                   license:openssl))))
-
 (define-public nsd
   (package
     (name "nsd")
@@ -875,7 +840,7 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "3.2.5")
+    (version "3.2.7")
     (source
      (origin
        (method git-fetch)
@@ -884,7 +849,7 @@ Extensions} (DNSSEC).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xhr6i5qq0yhxqj50hsm51lb1v5lj4vfkzdcsvh7lw8wg6j1d03b"))
+        (base32 "1zrx5ih8wy0l9dka7ql9v32z6z8bxcdsfs1zmjn052xrzb01qjkw"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -1242,10 +1207,10 @@ local networks.")
   ;; so its contents will change over time.  If you update this commit, please
   ;; make sure that the new commit refers to a list which is identical to the
   ;; officially published list available from the URL above.
-  (let ((commit "9375b697baddb0827a5995c81bd3c75877a0b35d"))
+  (let ((commit "d2d3e2e36a8f2b68c4f09e8c87f4f1d685cbf5e7"))
     (package
       (name "public-suffix-list")
-      (version (git-version "0" "1" commit))
+      (version (git-version "0" "2" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1254,26 +1219,17 @@ local networks.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1sm7pni01rnl4ldzi8z8nc4cbgq8nxda9gwc68v0s3ij7jd1jmik"))))
-      (build-system trivial-build-system)
+                  "1f6rydx4hdd6lja376f4sdp7iv64vqlmhmnlkg0rb17279dc9483"))))
+      (build-system copy-build-system)
       (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (begin
-           (use-modules (guix build utils))
-           (let* ((out (assoc-ref %outputs "out"))
-                  ;; Install to /share because that is where "read-only
-                  ;; architecture-independent data files" should go (see:
-                  ;; (standards) Directory Variables).  Include the version in
-                  ;; the directory name so that if multiple versions are ever
-                  ;; installed in the same profile, they will not conflict.
-                  (destination (string-append
-                                out "/share/public-suffix-list-" ,version))
-                  (source (assoc-ref %build-inputs "source")))
-             (with-directory-excursion source
-             (install-file "public_suffix_list.dat" destination)
-             (install-file "LICENSE" destination))
-             #t))))
+       (list #:install-plan
+             ;; Install to /share because that is where "read-only
+             ;; architecture-independent data files" should go (see: (standards)
+             ;; Directory Variables).  Include the version in the directory name
+             ;; so that if multiple versions are ever installed in the same
+             ;; profile, they will not conflict.
+             #~'(("public_suffix_list.dat"
+                  #$(string-append "/share/public-suffix-list-" version "/")))))
       (home-page "https://publicsuffix.org/")
       (synopsis "Database of current and historical DNS suffixes")
       (description "This is the Public Suffix List maintained by Mozilla.  A
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 08d53be8a9..480096fb50 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016, 2018, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016-2021, 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
@@ -131,6 +131,7 @@
 ;;; Copyright © 2022-2023 Simon Josefsson <simon@josefsson.org>
 ;;; Copyright © 2023 Fabio Natali <me@fabionatali.com>
 ;;; Copyright © 2023 Arnaud Lechevallier <arnaud.lechevallier@free.fr>
+;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -364,11 +365,12 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-	     (url "https://github.com/emacsmirror/bookmark-plus")
-	     (commit "3db369056a722c42b3eafd10a91831f87d056dfa")))
+             (url "https://github.com/emacsmirror/bookmark-plus")
+             (commit "3db369056a722c42b3eafd10a91831f87d056dfa")))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-	 "0fnq24f597zfr8jj5h3vr87kdil5lhy11m81q6ayqc03qm0jymrf"))))
+         "0fnq24f597zfr8jj5h3vr87kdil5lhy11m81q6ayqc03qm0jymrf"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacsmirror/bookmark-plus")
     (synopsis "Extensions to the Bookmark library in Emacs")
@@ -1226,6 +1228,7 @@ buffer.")
               (uri (git-reference
                     (url "https://github.com/alphapapa/prism.el")
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0n2gf7302hqdnhsax1y3ahksfmmpd8cmiv1zgb7rjg8qhcs0iqp2"))))
@@ -1690,10 +1693,10 @@ Alternatively the menu can be bound globally, for example:
     (license license:gpl3+)))
 
 (define-public emacs-nano-modeline
-  (let ((commit "cba074e55c847f289085ec35c21fb2ad8df1b483")) ;version bump
+  (let ((commit "a18780c277838983932623870752f0adddef0345")) ;version bump
     (package
       (name "emacs-nano-modeline")
-      (version "1.0.0")
+      (version "1.0.1")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1702,7 +1705,7 @@ Alternatively the menu can be bound globally, for example:
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0fccasr5ydyfwpqj3kmsgxiazifkckybg2rnwm6sg034phavcyln"))))
+                  "017vxz96fh26jb2xj7jnz8w580knvybcdr4xjad4xs72l2lrkj37"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/rougier/nano-modeline")
       (synopsis "Emacs minor mode controlling mode line")
@@ -2613,6 +2616,30 @@ can take association lists, hash tables, and in some cases vectors (where the
 index is considered the key).")
     (license license:gpl3+)))
 
+(define-public emacs-abyss-theme
+  (package
+    (name "emacs-abyss-theme")
+    (version "0.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mgrbyte/emacs-abyss-theme")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "07z0djv7h3yrv4iw9n633j6dxzxb4nnzijsqkmz22ik6fbwxg5mh"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mgrbyte/emacs-abyss-theme")
+    (synopsis "Dark theme with strong colours for Emacs")
+    (description
+     "A dark theme with contrasting colours for Emacs based on the
+@url{https://github.com/andre-richter/emacs-lush-theme, @code{lush}} theme by
+Andre Richter, using the same colours palette as the the built-in
+@code{dichromacy} theme; intended to be suitable
+for red/green colour blind users.")
+    (license license:gpl3+)))
+
 (define-public emacs-ace-jump-mode
   (package
     (name "emacs-ace-jump-mode")
@@ -3369,15 +3396,16 @@ code completion and project management support.")
 (define-public emacs-auto-compile
   (package
     (name "emacs-auto-compile")
-    (version "1.8.0")
+    (version "1.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/emacscollective/auto-compile")
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1zkqpvnashwn721qwf9khwizfxq9g3dhhy1siyk1s2wq1a9li9wq"))))
+                "0p2znbid7a32shgh1zidrr53hv79dhw1jcjaad2aglqfqjz7a3qn"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-compat emacs-packed))
     (home-page "https://github.com/emacscollective/auto-compile")
@@ -3968,35 +3996,36 @@ or XEmacs.")
     (license license:gpl3+)))
 
 (define-public emacs-autothemer
-  (package
-    (name "emacs-autothemer")
-    (version "0.2.17")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/sebastiansturm/autothemer")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "13lj0igrsdycsr8ldv2hilj2x79c888g4lx2ixqn7w29lw6cb44g"))))
-    (build-system emacs-build-system)
-    (arguments
-     (list
-      #:tests? #true
-      #:test-command #~(list "emacs" "-Q" "--batch"
-                             "-l" "tests/autothemer-tests.el"
-                             "-f" "ert-run-tests-batch-and-exit")))
-    (propagated-inputs
-     (list emacs-dash))
-    (home-page "https://github.com/sebastiansturm/autothemer")
-    (synopsis "Conveniently create Emacs themes")
-    (description
-     "Autothemer provides a thin layer on top of @code{deftheme} and
+  (let ((commit "8f72afc6dba5ad7cc3a201a084fd20571f945d2e")) ;version bump
+    (package
+      (name "emacs-autothemer")
+      (version "0.2.18")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sebastiansturm/autothemer")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "15f7i39937riswpwjpc1ryg2v0rqj944pwf7rp2ry56rbx4vgl97"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:tests? #true
+        #:test-command #~(list "emacs" "-Q" "--batch"
+                               "-l" "tests/autothemer-tests.el"
+                               "-f" "ert-run-tests-batch-and-exit")))
+      (propagated-inputs
+       (list emacs-dash))
+      (home-page "https://github.com/sebastiansturm/autothemer")
+      (synopsis "Conveniently create Emacs themes")
+      (description
+       "Autothemer provides a thin layer on top of @code{deftheme} and
 @code{custom-theme-set-faces} that creates a new custom color theme, based on
 a set of simplified face specifications and a user-supplied color palette.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-howm
   (package
@@ -4209,7 +4238,7 @@ of bibliographic references.")
 (define-public emacs-corfu
   (package
     (name "emacs-corfu")
-    (version "0.36")
+    (version "0.37")
     (source
      (origin
        (method git-fetch)
@@ -4218,7 +4247,7 @@ of bibliographic references.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "02glwnny9b4pwhq5inrakfz03zrq0zq1vr4npv88yla6pg8v87xx"))))
+        (base32 "1f6iap55rsrx009bdgrqagsbqq1q4hah785ap3xwxnxbgqyshigc"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -4233,7 +4262,7 @@ of bibliographic references.")
                             (rename-file f (basename f)))
                           el-files))))
           (add-after 'install 'makeinfo
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (invoke "emacs"
                       "--batch"
                       "--eval=(require 'ox-texinfo)"
@@ -4279,7 +4308,7 @@ be regarded as @code{emacs-company-quickhelp} for @code{emacs-corfu}.")
 (define-public emacs-cape
   (package
     (name "emacs-cape")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -4288,14 +4317,14 @@ be regarded as @code{emacs-company-quickhelp} for @code{emacs-corfu}.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1aivq3v00l17lmq7fmdzhc6lczi9ky2wl0ayab13vkdcidl5j1kd"))))
+        (base32 "1dvqfi41bkw1bi930kjww1yjrdmpk86ji9p7spa8dd0lrc3fh2c7"))))
     (build-system emacs-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'makeinfo
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (invoke "emacs"
                       "--batch"
                       "--eval=(require 'ox-texinfo)"
@@ -4919,7 +4948,7 @@ during idle time, while Emacs is doing nothing else.")
 (define-public emacs-pdf-tools
   (package
     (name "emacs-pdf-tools")
-    (version "1.0.0")
+    (version "1.1.0")
     (source
      (origin
        (method git-fetch)
@@ -4928,7 +4957,7 @@ during idle time, while Emacs is doing nothing else.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1idazz46zx2q84di4p73770l4bcnai2a03q95psg827ykdnmjwij"))))
+        (base32 "1v861fpzck3ky21m4g42h6a6y0cbhc4sjzpzqx0zxd7sfi7rn768"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -5012,6 +5041,28 @@ DocView mode, and revisiting those PDF files later using the same mode will
 restore the saved place.")
     (license license:gpl3+)))
 
+(define-public emacs-sakura-theme
+  (package
+    (name "emacs-sakura-theme")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacsfodder/emacs-theme-sakura")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0nxj6gx5virv95sfxbasvr2mh427w5srzjsfawhf58ixif8wkhd0"))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-autothemer))
+    (home-page "https://github.com/emacsfodder/emacs-theme-sakura")
+    (synopsis "Emacs theme of cherry blossoms")
+    (description
+     "Sakura Emacs theme is the rose tinted fork of @code{Creamsody},
+inspired by the Deep Purple.")
+    (license license:gpl3+)))
+
 (define-public emacs-pdfgrep
   ;; XXX: Upstream does not tag releases.  The commit below matches latest
   ;; version bump.
@@ -5370,7 +5421,7 @@ kmonad's configuration files (@file{.kbd}).")
 (define-public emacs-keycast
   (package
     (name "emacs-keycast")
-    (version "1.3.0")
+    (version "1.3.2")
     (source
      (origin
        (method git-fetch)
@@ -5379,7 +5430,7 @@ kmonad's configuration files (@file{.kbd}).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1hri91g6c0507vaisx3c0xr52xwy82j3vqk0irf30mcrv1j9a5hd"))))
+        (base32 "0nqx53a1hjgibqrmkdic6syqb2fb5fkna0k5dbbg6igb5k775c8r"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-compat))
@@ -5481,24 +5532,24 @@ allows easily move between them.")
     (license license:gpl3+)))
 
 (define-public emacs-undo-fu
-  ;; There are no tagged releases upstream on gitlab, instead we are using
+  ;; There are no tagged releases upstream, instead we are using
   ;; the most recent commit.
-  (let ((commit "c0806c1903c5a0e4c69b6615cdc3366470a9b8ca")
+  (let ((commit "0e22308de8337a9291ddd589edae167d458fbe77")
         (revision "0"))
     (package
       (name "emacs-undo-fu")
-      (version (git-version "0.4" revision commit))
+      (version (git-version "0.5" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/ideasman42/emacs-undo-fu")
+               (url "https://codeberg.org/ideasman42/emacs-undo-fu")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1n594aakmcgyl7qbda86v4wsx8clm62ypiv3h559xz3x72h7mr3j"))))
+          (base32 "18c8lq4h3i5rzz8jwwszmq9ga1m7jk3sbrh76sgrsbdawpap3ak5"))))
       (build-system emacs-build-system)
-      (home-page "https://gitlab.com/ideasman42/emacs-undo-fu")
+      (home-page "https://codeberg.org/ideasman42/emacs-undo-fu")
       (synopsis "Simple, stable linear undo with redo for Emacs")
       (description
        "This is a light weight wrapper for Emacs built-in undo system,
@@ -5507,34 +5558,38 @@ allowing you to visit all previous states of the document if you need.")
       (license license:gpl3+))))
 
 (define-public emacs-undo-fu-session
-  ;; There are no tagged releases upstream on gitlab, instead we are using the
+  ;; There are no tagged releases upstream, instead we are using the
   ;; most recent commit.
-  (let ((commit "56cdd3538a058c6916bdf2d9010c2179f2505829")
+  (let ((commit "a6c4f73bc22401fd36e0f2fd4fe058bb28566d84")
         (revision "0"))
     (package
       (name "emacs-undo-fu-session")
-      (version (git-version "0.2" revision commit))
+      (version (git-version "0.6" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/ideasman42/emacs-undo-fu-session")
+               (url "https://codeberg.org/ideasman42/emacs-undo-fu-session")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "04wq1alrzzlidcb4mjb5j7pg68pks1vgv7kvvmi6dzb3l602mb2a"))))
+          (base32 "03pb88bi5z4f01972jbk9z6w9iqamqflfp20mih29ghvbiyn6ahj"))))
       (build-system emacs-build-system)
       (arguments
        (list
         #:tests? #t
-        #:test-command #~(list "emacs" "--batch" "-l" "undo-fu-session.el"
-                               "-l" "undo-fu-session-test.el")
+        ;; The tests require temp files handling which a recent change disabled
+        ;; by default. We re-enable it here to make tests work again.
+        #:test-command #~(list "emacs" "--batch" "--eval"
+                               "(setq undo-fu-session-ignore-temp-files nil)"
+                               "-l" "tests/undo-fu-session-test.el"
+                               "-f" "undo-fu-session-test-run-all")
         #:phases
         #~(modify-phases %standard-phases
             (add-before 'check 'set-home
               (lambda _
                 (setenv "HOME" "/tmp"))))))
-      (home-page "https://gitlab.com/ideasman42/emacs-undo-fu-session")
+      (home-page "https://codeberg.org/ideasman42/emacs-undo-fu-session")
       (synopsis "Save & recover undo steps between Emacs sessions")
       (description "This package writes undo/redo information upon file save
 which is restored where possible when the file is loaded again.")
@@ -6011,28 +6066,25 @@ saving won't move point back to the beginning of the buffer.")
     (license license:gpl3+)))
 
 (define-public emacs-git-timemachine
-  (let ((version "4.11")
-        (revision "0")
-        (commit "13769fb603ae88c64566529eae4525ce88026e86"))
-    (package
-      (name "emacs-git-timemachine")
-      (version (git-version version revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://codeberg.org/pidu/git-timemachine.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0d1aj9xhcyksg115xl2yw0rd62hp53ig06y54jvii1l8vavb94jy"))))
-      (build-system emacs-build-system)
-      (home-page "https://gitlab.com/pidu/git-timemachine")
-      (synopsis "Step through historic versions of Git-controlled files")
-      (description "This package enables you to step through historic versions
+  (package
+    (name "emacs-git-timemachine")
+    (version "4.13")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://codeberg.org/pidu/git-timemachine")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "152vq34dn76m21ab97wwm31hgp2wl9y437vwmd4kcd5pvwjhx9c6"))))
+    (build-system emacs-build-system)
+    (home-page "https://gitlab.com/pidu/git-timemachine")
+    (synopsis "Step through historic versions of Git-controlled files")
+    (description "This package enables you to step through historic versions
 of files under Git version control from within Emacs.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-minitest
   (package
@@ -6142,7 +6194,7 @@ intended to be.")
 (define-public emacs-ef-themes
   (package
     (name "emacs-ef-themes")
-    (version "1.1.0")
+    (version "1.2.0")
     (source
      (origin
        (method git-fetch)
@@ -6152,7 +6204,7 @@ intended to be.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03xmc4657q9p4b5zbssjjpq125bb1vd4fbhmy1f6rk25vxx3pxg7"))))
+         "186q08prgg4n1kw91y7bqy53ladi2gfnjp6irvmr207c434wand0"))))
     (build-system emacs-build-system)
     (home-page "https://git.sr.ht/~protesilaos/ef-themes")
     (synopsis "Colorful and legible themes")
@@ -7428,22 +7480,22 @@ snippets for yasnippet.")
 (define-public emacs-mode-line-idle
   ;; Package has no release.  Version is extracted from "Version:" keyword in
   ;; main file.
-  (let ((commit "02b1da6278e43cc9cc0356110cc6bfbb37eb8241")
-        (revision "1"))
+  (let ((commit "1dc0115bd4864b8b8cc9cbaac75c03d764070873")
+        (revision "0"))
     (package
       (name "emacs-mode-line-idle")
-      (version (git-version "0.1" revision commit))
+      (version (git-version "0.2" revision commit))
       (source
        (origin
          (method git-fetch)
          (file-name (git-file-name name version))
          (uri (git-reference
-               (url "https://gitlab.com/ideasman42/emacs-mode-line-idle")
+               (url "https://codeberg.org/ideasman42/emacs-mode-line-idle")
                (commit commit)))
          (sha256
-          (base32 "0ky330b2sfbzkbxbfp9b21hdywsjw26bllspglz08hrbni7jmry8"))))
+          (base32 "006ynxzakfc11lz9s915agdiiisnbfxiv9a7mj9g0890qh7isjvy"))))
       (build-system emacs-build-system)
-      (home-page "https://gitlab.com/ideasman42/emacs-mode-line-idle")
+      (home-page "https://codeberg.org/ideasman42/emacs-mode-line-idle")
       (synopsis "Simple delayed text evaluation for the mode-line")
       (description
        "Mode Line Idle provides a convenient way to defer text evaluation
@@ -8187,14 +8239,14 @@ user.")
 (define-public emacs-subed
   (package
     (name "emacs-subed")
-    (version "1.2.2")
+    (version "1.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.nongnu.org/nongnu/subed-"
                                   version ".tar"))
               (sha256
                (base32
-                "1xlh4kqa8516rvmzy67pzs0ghk9rc919nq5b2sywd5mvzi5spxnh"))))
+                "0np4wp7pmpayz8r9p3cl7z1i7yfq8xmkn862n9d104szf4ffk0if"))))
     (arguments
      (list
       #:tests? #t
@@ -8307,14 +8359,14 @@ by a query, so both a link can refer to several mails.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.35")
+    (version "0.36")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                            version ".tar"))
        (sha256
-        (base32 "1w6y02ikjshfk12sdgbryfgj2z4yia2mpifa7g13ab7v9phpqpl1"))))
+        (base32 "1rzv13shadbvy583vjj4zg13v920zpiqrsnn10r3cqqyli89ivn2"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -8458,7 +8510,7 @@ build jobs.")
 (define-public emacs-zmq
   (package
     (name "emacs-zmq")
-    (version "0.10.10")
+    (version "1.0.0")
     (source
      (origin
        (method git-fetch)
@@ -8467,26 +8519,27 @@ build jobs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ngxm5mm0kqgvn8977ryrngamx0khzlw86d8vz5s0jhm2kgwnqp8"))))
+        (base32 "1bg4c26f8n1jy6z9dr2c9fz79myy9lbb5z67797qp1cbx8k6p3n7"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:tests? #f ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure
-           (lambda _
-             (invoke "make" "src/configure")
-             (substitute* "src/configure"
-               (("/bin/sh") (which "sh"))
-               (("/usr/bin/file") (which "file")))
-             (invoke "make")))
-         (add-after 'install 'install-shared-object
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (site-lisp (string-append out "/share/emacs/site-lisp"))
-                    (libdir (string-append site-lisp "/zmq-0.10.10")))
-               (copy-file "emacs-zmq.so"
-                          (string-append libdir "/emacs-zmq.so"))))))))
+     (list
+      #:tests? #f                       ; no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'configure
+            (lambda _
+              (invoke "make" "src/configure")
+              (substitute* "src/configure"
+                (("/bin/sh") (which "sh"))
+                (("/usr/bin/file") (which "file")))
+              (invoke "make")))
+          (add-after 'install 'install-shared-object
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (site-lisp (string-append out "/share/emacs/site-lisp"))
+                     (libdir (string-append site-lisp "/zmq-" #$version)))
+                (copy-file "emacs-zmq.so"
+                           (string-append libdir "/emacs-zmq.so"))))))))
     (native-inputs
      (list autoconf automake libtool pkg-config))
     (inputs
@@ -8494,7 +8547,7 @@ build jobs.")
     (home-page "https://github.com/nnicandro/emacs-zmq")
     (synopsis "Emacs bindings to ØMQ")
     (description "This package provides Emacs bindings to ØMQ.")
-    (license (list license:gpl2+     ;zmq.el
+    (license (list license:gpl2+        ;zmq.el
                    license:gpl3+)))) ;src/emacs-module.h
 
 (define-public emacs-tup-mode
@@ -11106,7 +11159,7 @@ style, or as multiple word prefixes.")
 (define-public emacs-consult
   (package
     (name "emacs-consult")
-    (version "0.34")
+    (version "0.35")
     (source
      (origin
        (method git-fetch)
@@ -11114,7 +11167,7 @@ style, or as multiple word prefixes.")
              (url "https://github.com/minad/consult")
              (commit version)))
        (sha256
-        (base32 "1ggbvc5ylsw430w05fjl4vk1hmim45mwah7cyr94g03rwjhng1sc"))
+        (base32 "0a20rfqv2yfwqal1vx6zzg92qgr32p3rp7n6awnyb010jnykqszw"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (arguments
@@ -11122,7 +11175,7 @@ style, or as multiple word prefixes.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'makeinfo
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (invoke "emacs"
                       "--batch"
                       "--eval=(require 'ox-texinfo)"
@@ -11346,7 +11399,7 @@ expansion and overwriting the marked region with a new snippet completion.")
 (define-public emacs-marginalia
   (package
     (name "emacs-marginalia")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method git-fetch)
@@ -11355,14 +11408,14 @@ expansion and overwriting the marked region with a new snippet completion.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zf88pvjs3v231rpk4km03n19xyfx6hn0fny08y4pv42dz3xkcwg"))))
+        (base32 "0fjbif2l5fj4xjb9drqfc8zxla8y7mha0imdd1nm4x83i0y4fa6l"))))
     (build-system emacs-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'makeinfo
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (invoke "emacs"
                       "--batch"
                       "--eval=(require 'ox-texinfo)"
@@ -11416,8 +11469,8 @@ well as completely new features.")
 
 (define-public emacs-dumbparens
   ;; There are no releases.
-  (let ((commit "18b668772f25e5f7b62c0a000b8169eaf7515057")
-        (revision "0"))
+  (let ((commit "59bb5aeb85bdc0772a7a21d1194be87aae6f2b7b")
+        (revision "1"))
     (package
       (name "emacs-dumbparens")
       (version (git-version "0" revision commit))
@@ -11426,17 +11479,17 @@ well as completely new features.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/raxod502/dumbparens")
+           (url "https://github.com/radian-software/dumbparens")
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0xv2yzjzq2450z007jppf86knnwzb2s3sxvqyk1yp6qs9mgrmnyp"))))
+          (base32 "0c5zw9qcq5n33212p8fcnjvgn6z582178dnv0jhnrl887h5xr9w2"))))
       (build-system emacs-build-system)
       (arguments
        (list
         #:tests? #t
         #:test-command #~(list "make" "test")))
-      (home-page "https://github.com/raxod502/dumbparens/")
+      (home-page "https://github.com/radian-software/dumbparens")
       (synopsis "Minor mode that provides improvements on Smartparens")
       (description
        "@code{emacs-dumbparens} is a minor mode for Emacs that deals with parens
@@ -12433,7 +12486,7 @@ allowing unprefixed keys to insert their respective characters as expected.")
 (define-public emacs-clojure-mode
   (package
     (name "emacs-clojure-mode")
-    (version "5.16.0")
+    (version "5.16.1")
     (source
      (origin
        (method git-fetch)
@@ -12442,7 +12495,7 @@ allowing unprefixed keys to insert their respective characters as expected.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s09b9gbmjmk56jm9hcbk06zfa96kqhgx58d98w13yy01yx0pych"))))
+        (base32 "1gzr506mj2w8jigvdpsmp9jm4kb5k5v076wda2jz5dpbw4jgj5ms"))))
     (build-system emacs-build-system)
     (native-inputs
      (list emacs-buttercup emacs-dash emacs-paredit emacs-s))
@@ -12485,7 +12538,7 @@ Clojure projects from templates.")
 (define-public emacs-clj-refactor
   (package
     (name "emacs-clj-refactor")
-    (version "3.6.0")
+    (version "3.7.0")
     (source
      (origin
        (method git-fetch)
@@ -12494,7 +12547,7 @@ Clojure projects from templates.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15ya7hp5d2kwh1ig55d75vlghm1vsq99jh44i8q8v25vfmzjp7gp"))))
+        (base32 "0nwc4c8cn9mj9x7fsjx1m34rma5qq87d611j7w02kfa7yhbj0vwk"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-yasnippet emacs-paredit emacs-multiple-cursors emacs-cider
@@ -14917,7 +14970,7 @@ Lua programming language}.")
 (define-public emacs-ebuild-mode
   (package
     (name "emacs-ebuild-mode")
-    (version "1.63")
+    (version "1.64")
     (source
      (origin
        (method url-fetch)
@@ -14926,7 +14979,7 @@ Lua programming language}.")
              "ebuild-mode-" version ".tar.xz"))
        (file-name (string-append name "-" version ".tar.xz"))
        (sha256
-        (base32 "1pkdyxiprj94z062y6nlm5w34gxyazbkg3yzhfscnm087p7pbg82"))))
+        (base32 "180wjbi385fhafijmmimcf23fdympdk2km0yj9rv6pmfbfjgq2bv"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -15402,7 +15455,7 @@ pasting into and from @code{tmux} paste buffers.")
 (define-public emacs-evil-nerd-commenter
   (package
     (name "emacs-evil-nerd-commenter")
-    (version "3.6.0")
+    (version "3.6.1")
     (source
      (origin
        (method git-fetch)
@@ -15412,7 +15465,7 @@ pasting into and from @code{tmux} paste buffers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1v2iwci0yc1sld1sidrwdnqriyhs78ba3gp4d9az0af48grl7x1w"))))
+         "1xi4sd75pzhgcd9lzhx18hlzbrwh5q9gbscb1971qn94mzxwd60r"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-evil))
     (home-page "https://github.com/redguardtoo/evil-nerd-commenter")
@@ -15605,7 +15658,7 @@ passive voice.")
 (define-public emacs-org
   (package
     (name "emacs-org")
-    (version "9.6.6")
+    (version "9.6.7")
     (source
      (origin
        (method git-fetch)
@@ -15614,7 +15667,7 @@ passive voice.")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1z3n2dzvgr225f33lvpwwdssrw32lsa1c27l2h9irzv7p33pl1zf"))))
+        (base32 "0b8ys2syk33kz4qygwy2qvkvv4g10hj4zdjfr5iw911v1rp61vcr"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -16257,12 +16310,10 @@ view your Denote directory.")
     (license license:gpl3+)))
 
 (define-public emacs-logos
-  ;; XXX: Upstream did not tag latest release.  Use the commit matching
-  ;; version bump.
-  (let ((commit "d8f18f74591ffcac6466409ac7cd29f90838b2fe"))
+  (let ((commit "eeedd3ef289faa4fa2b726013255747a41a6ba9c")) ;version bump
     (package
       (name "emacs-logos")
-      (version "1.0.1")
+      (version "1.1.1")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -16271,7 +16322,7 @@ view your Denote directory.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0g3jxzwv99wkxlb36j2nyjibayvwjpy7qc2mz9lfd2945q6apj3z"))))
+                  "1p4akwpbc6x2k47g99wg4yvdz1wlnb2fqwgk06bfi3s4sv6lngbk"))))
       (native-inputs (list texinfo))
       (build-system emacs-build-system)
       (arguments
@@ -16697,7 +16748,7 @@ been adapted to also work with mu4e.")
 (define-public emacs-tempel
   (package
     (name "emacs-tempel")
-    (version "0.7")
+    (version "0.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -16706,7 +16757,7 @@ been adapted to also work with mu4e.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qhy9rp0k74hbqns67iwyzk86x7rriqyd4l48j5qqmfvr3v5sg1m"))))
+                "10dcf56x74jrbdzaa9kphyzq2rz5alv800dnnzpbnvwzh29lfyka"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-compat))
@@ -18545,6 +18596,30 @@ for the current file, using the major mode as a hint.  It prompts you to enter
 one if it fails.")
     (license license:gpl3+)))
 
+(define-public emacs-eglot-x
+  ;; Not tagged.
+  (let ((commit "a09ab28cf01d7cbb223ad83fbbb694c5158c96b8"))
+    (package
+      (name "emacs-eglot-x")
+      (version "0.6")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/nemethf/eglot-x")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0s17nv59gzgqgskid41lfacsqnzdiq2p3ds0vglcfqwypr3k898c"))))
+      (build-system emacs-build-system)
+      (inputs (list emacs-eglot))
+      (home-page "https://github.com/nemethf/eglot-x")
+      (synopsis "Protocol extensions for Eglot")
+      (description
+       "This package adds support for some LSP extensions to @code{emacs-eglot}.
+")
+      (license license:gpl3+))))
+
 (define-public emacs-jabber
   ;; No releases available.
   (let ((commit "af0315e174fa6446d5c4dd3e6465d48912950e58")
@@ -18626,6 +18701,28 @@ over a documented variable, it will print the one-line documentation for that
 variable instead, to remind you of that variable's meaning.")
     (license license:gpl3+)))
 
+(define-public emacs-eldoc-box
+  (package
+    (name "emacs-eldoc-box")
+    (version "1.10.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/casouri/eldoc-box")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "076bbn2nnrx02zk2hs4b39q0w3s7afbgfdxnwk2y2s8lkq1l6l87"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/casouri/eldoc-box")
+    (synopsis "Childframe doc for eglot and anything that uses eldoc")
+    (description
+     "This package displays ElDoc documentations in a childframe.  The
+childfrme is selectable and scrollable with mouse, even thought the cursor is
+hidden.")
+    (license license:gpl3+)))
+
 ;; Tests for ert-runner have a circular dependency with ecukes, and therefore
 ;; cannot be run
 (define-public emacs-ert-runner
@@ -19347,7 +19444,7 @@ multiplexer.")
 (define-public emacs-plz
   (package
     (name "emacs-plz")
-    (version "0.5.4")
+    (version "0.6")
     (source
      (origin
        (method git-fetch)
@@ -19356,7 +19453,7 @@ multiplexer.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ccddvbhb3n02s2krgyqapll7kbzxjhldzn8g8gmnqfsmwpg9d2r"))))
+        (base32 "12hnsafv1bxkk1pb471i8hw0zy0yfla8afpcahlg4k4dni4dnqsm"))))
     (build-system emacs-build-system)
     (inputs (list curl))
     (arguments
@@ -19378,7 +19475,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.9.3")
+    (version "0.10")
     (source
      (origin
        (method git-fetch)
@@ -19387,7 +19484,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 "1fh592y4v6iybdfh0b55k8nknzgsbcmy9g62ymvqz0wlhwq4h5h9"))))
+        (base32 "1bbjk39w3a66b5zmdjkr5zrchrf8mk4avzaxrqf027mc7pfmy8rb"))))
     (build-system emacs-build-system)
     (arguments
      (list #:emacs emacs))              ;need libxml support
@@ -19609,7 +19706,7 @@ the nick color and the background color
 (define-public emacs-engine-mode
   (package
     (name "emacs-engine-mode")
-    (version "2.2.1")
+    (version "2.2.4")
     (source
      (origin
        (method git-fetch)
@@ -19618,12 +19715,12 @@ the nick color and the background color
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11ls3wrvfmcz61pps438x772nk06rqff91s3xi5rzc3n2hkl1ayb"))))
+        (base32 "1q4rwp0rv1azabhx5l3pnxdja2911815k6ijmfdx6s3vwyvd2wyn"))))
     (build-system emacs-build-system)
     (synopsis "Minor mode for defining and querying search engines")
-    (description "@code{engine-mode} is a global minor mode for Emacs.  It
-enables you to easily define search engines, bind them to keybindings, and
-query them from the comfort of your editor.")
+    (description "Engine mode is a global minor mode for Emacs.  It enables
+you to easily define search engines, bind them to keybindings, and query them
+from the comfort of your editor.")
     (home-page "https://github.com/hrs/engine-mode")
     (license license:gpl3+)))
 
@@ -20561,7 +20658,7 @@ Features:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "3.0.0")
+    (version "3.0.2")
     (source
      (origin
        (method git-fetch)
@@ -20570,7 +20667,7 @@ Features:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0a55hhqi14g0hy80cfi5anxs44rcdxm1jkkyl561b4d4g823bpbi"))))
+        (base32 "0igz4kcfb01f9h49n5x9p1idzap54nkw62i1xrql1zlj54s8rv6b"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-evil))
@@ -23995,7 +24092,7 @@ and doesn't require memorisation of commands.
 (define-public emacs-logview
   (package
     (name "emacs-logview")
-    (version "0.16.1")
+    (version "0.16.2")
     (source
      (origin
        (method git-fetch)
@@ -24004,7 +24101,7 @@ and doesn't require memorisation of commands.
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12m0wqzfbphpz88fnawn5kb7yaayxh3yajbf6zzzbnyc8rjajcr6"))))
+        (base32 "1qw5k7kvkhlg91v9j6cy10xnvmy1zk7dwr13ssdxx08qax0jwgqi"))))
     (propagated-inputs
      (list emacs-datetime emacs-extmap))
     (build-system emacs-build-system)
@@ -24992,8 +25089,8 @@ current upstream.")
     (license license:gpl3+)))
 
 (define-public emacs-scroll-on-drag
-  (let ((commit "888abd04c34753b1fc4b2fe541bc004ebec5c996")
-        (revision "1"))
+  (let ((commit "179c2acecc48d3ceca4b449b2a225d684002bb32")
+        (revision "2"))
     (package
       (name "emacs-scroll-on-drag")
       (version (git-version "0.1" revision commit))
@@ -25001,14 +25098,14 @@ current upstream.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/ideasman42/emacs-scroll-on-drag.git")
+               (url "https://codeberg.org/ideasman42/emacs-scroll-on-drag")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1si4hdqa3jw1inbyh3wb3i5i9grbms1nwky3vyk9zg7iznwm8a9p"))))
+           "0v7d4mrsvckbb66kvskfb9rfrhg8p0zbkr6jqdspfl1p3x8zs2nk"))))
       (build-system emacs-build-system)
-      (home-page "https://gitlab.com/ideasman42/emacs-scroll-on-drag")
+      (home-page "https://codeberg.org/ideasman42/emacs-scroll-on-drag")
       (synopsis "Interactive scrolling")
       (description "This package permits scrolling at increasing speeds based
 on drag distance.")
@@ -26464,6 +26561,7 @@ incompatible versions of it.")
                 (uri (git-reference
                       (url "https://github.com/charlesroelli/org-board")
                       (commit commit)))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1kryrg988c3sbxyp1sdgc6xdv2iz6kiflpzn2rw4z3l4grzab53b"))))
@@ -27329,30 +27427,27 @@ scaling of and anti aliasing of the icons.")
      (list license:expat license:gpl3+ license:silofl1.1 license:asl2.0))))
 
 (define-public emacs-all-the-icons-completion
-  ;; XXX: No tags. Extract version from keyword in main file.
-  (let ((commit "9e7d456b0934ecb568b6f05a8445e3f4ce32261f")
-        (revision "0"))
-    (package
-      (name "emacs-all-the-icons-completion")
-      (version (git-version "0.0.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/iyefrat/all-the-icons-completion")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "04bnmmd6lyx0p39sgymqvmcy7bk8mr7sikbpy49adxi7d2891ldg"))))
-      (build-system emacs-build-system)
-      (propagated-inputs (list emacs-all-the-icons))
-      (home-page "https://github.com/iyefrat/all-the-icons-completion")
-      (synopsis "Add icons to completion candidates")
-      (description "This package adds icons to completion candidates using the
+  (package
+    (name "emacs-all-the-icons-completion")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iyefrat/all-the-icons-completion")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1iyn7dyxil07gsa19hngpbapzmbhcwrplvf2cg1gkywafcdhjw6w"))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-all-the-icons))
+    (home-page "https://github.com/iyefrat/all-the-icons-completion")
+    (synopsis "Add icons to completion candidates")
+    (description "This package adds icons to completion candidates using the
 built-in completion metadata functions.  For example, with this package,
 @code{find-file} can display a file icon for each candidate based on the file
 type.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-wttrin
   (let ((commit "df5427ce2a5ad4dab652dbb1c4a1834d7ddc2abc")
@@ -28675,7 +28770,7 @@ interface to attach and interact with the processes.")
 (define-public emacs-dtrt-indent
   (package
     (name "emacs-dtrt-indent")
-    (version "1.9")
+    (version "1.11")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -28684,7 +28779,7 @@ interface to attach and interact with the processes.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rpl48rdmgi7rsv6kgl048vfafnfcqwmvb46ibm9z3wjxsmfg131"))))
+                "037n2ihdgzigwvc4wsls1gwrqkkkpd00pk0s1j2m0212n4gxiaq8"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/jscheid/dtrt-indent")
     (synopsis "Minor mode that guesses the indentation offset")
@@ -30955,14 +31050,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.6.0.5")
+    (version "2.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "0hbrrlcyhxkmjym4wnwipi47lzqpnlxc833p0hmghc6n0s8sx7hf"))))
+        (base32 "0rk2bkr2n6064170741wjparsshziwj6j6w6sfzpl7xxbldpsqxa"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -32063,23 +32158,24 @@ Helm and Ivy.")
     (license license:gpl3+)))
 
 (define-public emacs-spell-fu
-  ;; There are no tagged releases upstream on gitlab, instead we are using the
+  ;; There are no tagged releases upstream, instead we are using the
   ;; most recent commit.
-  (let ((commit "50be652a6ec8590c3098f46094a92213623349c1") (revision "0"))
+  (let ((commit "67a26b7a00449ee8ef3a80ab662c93a32adef679")
+        (revision "1"))
     (package
       (name "emacs-spell-fu")
       (version (git-version "0.3" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://gitlab.com/ideasman42/emacs-spell-fu")
+                      (url "https://codeberg.org/ideasman42/emacs-spell-fu")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0n7qwnirvkh2aprb7l1wj9rywdsn33a7s32716m3afcvy7z9pyh4"))))
+                  "0gbfzd4zpqn0kbag3a6axc7y17r5qgwgpprsd1x5hnixji1vzhxr"))))
       (build-system emacs-build-system)
-      (home-page "https://gitlab.com/ideasman42/emacs-spell-fu")
+      (home-page "https://codeberg.org/ideasman42/emacs-spell-fu")
       (synopsis "Fast highlighting of misspelled words")
       (description
        "This is a light weight spell checker for Emacs,
@@ -32503,10 +32599,33 @@ a theme for Spacemacs.  The theme comes with dark and light variants
 and it should work well with 256 color terminals.")
     (license license:gpl3+)))
 
+(define-public emacs-starlit-theme
+  (let ((commit "d6f327fb09497be7bee64d5d204d27f655cc5b04")
+        (revision "0"))
+    (package
+      (name "emacs-starlit-theme")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/SFTtech/starlit-emacs")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "118b3ii9gpjq70q3qf0lyd53jp5a7qvhsl4bbjh4akck96cjdnnj"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/SFTtech/starlit-emacs")
+      (synopsis "Deep blue and colorful Emacs theme like a clear night sky")
+      (description
+       "Starlit theme customizes your Emacs to be deep blue with bright colors
+from a starlit sky.")
+      (license license:gpl3+))))
+
 (define-public emacs-elixir-mode
   (package
     (name "emacs-elixir-mode")
-    (version "2.3.2")
+    (version "2.5.0")
     (source
      (origin
        (method git-fetch)
@@ -32515,7 +32634,7 @@ and it should work well with 256 color terminals.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0f2a360h8bizvqk6bmgxm59g8n7id5rzwlbv6d383h15w298mcga"))))
+        (base32 "0xqwlahy2m5b3h7jx0ksy970clqm253mn87jhq9xvbggvbvczp6l"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-pkg-info))
@@ -35405,6 +35524,50 @@ without requiring all of Spacemacs.  The @code{<Leader>} key, inspired by Vim,
 provides an easy way to bind keys under a configurable prefix key.")
       (license license:gpl3+))))
 
+(define-public emacs-spamfilter-el
+  (package
+    (name "emacs-spamfilter-el")
+    (version "1.13")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://web.archive.org/web/20190227001412/"
+                    "http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/"
+                    "spamfilter-1.1.tar.gz"))
+              (sha256
+               (base32
+                "1rd7wfn24bqlqlrrhq0d87vfhhcq09pnmrkkr7jpcnsls081a2iv"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'convert-encoding
+            (lambda _
+              (for-each
+               (lambda (name)
+                 (invoke "iconv" "-f" "EUC-JP" "-t" "UTF-8" name "-o" name))
+               (find-files "." "\\.el")))))))
+    (home-page
+     (string-append
+      "https://web.archive.org/web/20190326203214/"
+      "http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/"
+      "index.html#spamfilter.el"))
+    (synopsis "Bayesian spam filter")
+    (description
+     "This package provides a spam filtering library for Emacs MUAs.  It
+supports Japanese and has the following features:
+
+@itemize
+@item Pure Emacs Lisp implementation.
+@item Interactive process within the MUA.
+@item Incremental corpus learning.
+@item Three different methods for Japanese word segmentation.
+@item Built-in support for @code{emacs-wanderlust} and @code{emacs-mew}.
+@item @url{https://github.com/naota/navi2ch, Navi2ch} integration.
+@end itemize\n")
+    (license license:gpl2+)))
+
 (define-public emacs-promise
   ;; XXX: Last stable release fails to build with "(wrong-number-of-arguments
   ;; (3 . 4) 2)" error.
@@ -35521,6 +35684,7 @@ interactive commands for handling Lojban text.")
          (uri (git-reference
                (url "https://github.com/seanfarley/xonsh-mode")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "0lfi2372clkkzi4a940fwparsfhxxzb7bmysfd50n1myakgldri5"))))
       (build-system emacs-build-system)
@@ -35839,7 +36003,7 @@ and preferred services can easily be configured.")
 (define-public emacs-vertico
   (package
     (name "emacs-vertico")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
        (method git-fetch)
@@ -35848,7 +36012,7 @@ and preferred services can easily be configured.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19qfyhf2yszhsb6hamfvnqliv2h4dwg9sgwa7v1vq9nl8r0v98lr"))))
+        (base32 "0pf6qm89nysrri3xx7pda32yfsyv5fwswg6695qivldpq2biwx2x"))))
     (build-system emacs-build-system)
     (arguments
      (list
@@ -35863,7 +36027,7 @@ and preferred services can easily be configured.")
                             (rename-file f (basename f)))
                           el-files))))
           (add-after 'install 'makeinfo
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (invoke "emacs"
                       "--batch"
                       "--eval=(require 'ox-texinfo)"
@@ -36627,7 +36791,7 @@ hacker.")
 (define-public emacs-osm
   (package
     (name "emacs-osm")
-    (version "0.12")
+    (version "0.13")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -36636,7 +36800,7 @@ hacker.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1wfk8r0szav8hipq0apaix2f83kmxcrmgvykb30acgap9rjs357b"))))
+                "0i1lks8724i2nz9jk5csl4nfkyi49fc928a117sn7438z82r9gyr"))))
     (build-system emacs-build-system)
     (arguments
      (list #:phases #~(modify-phases %standard-phases
@@ -37018,8 +37182,8 @@ latest Emacs.")
 (define-public emacs-flim-lb
   ;; No release since Nov 28, 2007.
   (let ((version "1.14.9")
-        (revision "134")
-        (commit "3a931b566494e7dc210a5109b60c8cbd5b655108"))
+        (revision "136")
+        (commit "2cf5a7891090faca8de725b1d3743dcedf233ea2"))
     (package
       (name "emacs-flim-lb")
       (version (git-version version revision commit))
@@ -37031,7 +37195,7 @@ latest Emacs.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0hva2nm0k37ssx42s0h9d9y6nawmp1g4qz1s8bvmp3s1897pvssz"))))
+                  "1wsnipyl3blldcl8ynmpj1mxfvl7kjmxd8gapl83vqd3r0l9cr6q"))))
       (build-system emacs-build-system)
       (propagated-inputs (list emacs-apel-lb emacs-oauth2))
       (home-page "https://www.emacswiki.org/emacs/WanderLust")
@@ -37076,8 +37240,8 @@ EasyPG and latest Emacs.")
   ;; macro-expansion failure at runtime, so don't rewrite emacs input of this
   ;; package.
   (let ((version "2.15.9")
-        (revision "779")
-        (commit "f5cb2f0cf5e2c893acf2e669fd549836828dfdfc"))
+        (revision "791")
+        (commit "8369b2d5170a174652294835dd9a18ed21a38cb2"))
     (package
       (name "emacs-wanderlust")
       (version (git-version version revision commit))
@@ -37098,7 +37262,7 @@ EasyPG and latest Emacs.")
                            (("package-user-dir") "NONE"))))
                 (sha256
                  (base32
-                  "1ijs57wv1vrh33vn311hgkp42vlmjyi998nc4qdrqi7yy9j8hl1h"))))
+                  "0nqa9z61r308j61rgglacjsfddncbm185gp3rnzqkrpb5qsjzngk"))))
       (build-system emacs-build-system)
       (arguments
        (list #:phases
@@ -37139,6 +37303,7 @@ EasyPG and latest Emacs.")
                      (invoke "make" "install")
                      (invoke "make" "install-info"))))))
       (propagated-inputs (list emacs-semi-epg))
+      (inputs (list emacs-spamfilter-el))
       (home-page "https://www.emacswiki.org/emacs/WanderLust")
       (synopsis "Yet Another Message Interface on Emacsen")
       (description
@@ -37282,6 +37447,47 @@ categories and highlighting specific modes that many commands use to
 accomplish different tasks.")
       (license license:asl2.0))))
 
+(define-public emacs-x509-mode
+  (let ((commit "3830cbfdadab4cd68e6f0b6a3a7a4931be8328ea")
+        (revision "1"))
+    (package
+      (name "emacs-x509-mode")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jobbflykt/x509-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ff6kpnh9bzhxx15p18fijjjsqv0mcqwsd5pidyx8v2yzq699k7x"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:tests? #true
+        #:test-command #~(list "emacs" "-Q" "--batch"
+                               "-l" "x509-mode.el"
+                               "-l" "x509-mode-tests.el"
+                               "-f" "ert-run-tests-batch-and-exit")
+        #:include #~(cons "\\.txt$" %default-include)
+        #:phases #~(modify-phases %standard-phases
+                     (add-after 'unpack 'set-openssl-location
+                       (lambda* (#:key inputs #:allow-other-keys)
+                         (emacs-substitute-variables "x509-mode.el"
+                           ("x509-openssl-cmd"
+                            (search-input-file inputs "/bin/openssl"))))))))
+      (inputs (list openssl))
+      (home-page "https://github.com/jobbflykt/x509-mode")
+      (synopsis "Major mode for viewing certificates, CRLs, and other
+PKI-related files")
+      (description
+       "This package provides a major mode for viewing certificates, CRLs, and
+other PKI-related files.  It uses OpenSSL for viewing PEM and DER encoded PKI
+entities.")
+      (license license:expat))))
+
 (define-public emacs-totp
   (let ((commit "a5e059b8475b32bc7f5ddadda248cf84449ed722") ;no releases
         (revision "0"))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 7831a24922..437564f6f0 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -394,7 +394,7 @@ languages.")
   (package
     (inherit emacs)
     (name "emacs-next")
-    (version "29.0.91")
+    (version "29.0.92")
     (source
      (origin
        (inherit (package-source emacs))
@@ -409,7 +409,7 @@ languages.")
                                 "emacs-native-comp-driver-options.patch"))
        (sha256
         (base32
-         "09jm1q5pvd1dc0xq5rhn66v1j235zlr72kwv5i27xigvi9nfqkv1"))))
+         "1h3p325859svcy43iv7wr27dp68049j9d44jq5akcynqdkxz4jjn"))))
     (inputs
      (modify-inputs (package-inputs emacs)
        (prepend sqlite)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index e378db87ca..dee92bce4f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -1048,7 +1048,7 @@ Emacs).")
 (define-public kicad
   (package
     (name "kicad")
-    (version "7.0.5")
+    (version "7.0.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1056,7 +1056,7 @@ Emacs).")
                     (commit version)))
               (sha256
                (base32
-                "04mkvz4l6i8bb6mw4y0vmlkg2kvdhkj980w6y6sphb9xq8vzmcxs"))
+                "1bifg73id0grn37a4n5wpq440z9xz14q0fvkva5vajx0xfd34llv"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
@@ -1156,7 +1156,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1xq00wi97ck2019d9brsqg8l7xvjq01g2bwv4nvmh6zh4bwcgr3g"))))
+                "0byvm25jw108h808g5zdjq14gx4xxd87pvlbczd07c3rx6nmzl08"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DBUILD_FORMATS=html")
@@ -1190,7 +1190,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15100z8g4x28sxz8097ay1vxfxz2c4a1nvvzyx5vjfmhydwqwk49"))))
+                "0p60dvig7xx8svzsgp871r0aix2m95bmzg3snz372nmgnza2nnvf"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests exist
@@ -1219,7 +1219,7 @@ libraries.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "11d3mwmivi6rc778a2x118a5mk11d9mr8miadxmy1mbc41jbx2dh"))))
+                "0fqnviaxsai0xwyq8xq5ks26j4vd390ns6h6lr0fx2ikv1ghaml5"))))
     (synopsis "Official KiCad footprint libraries")
     (description "This package contains the official KiCad footprint libraries.")))
 
@@ -1236,7 +1236,7 @@ libraries.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1bzb6b7llzwabjkdd0xsyan0x8kihccap4gwvipzydfg7gm5fjxm"))))
+                "0dmssyhqd94d9wj8w7g7xjan560b2rwcs540sgl0rc77cw2jify8"))))
     (synopsis "Official KiCad 3D model libraries")
     (description "This package contains the official KiCad 3D model libraries.")))
 
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index ccf1caca60..a7f161647b 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2021 Oskar Köök <oskar@maatriks.ee>
 ;;; Copyright © 2021 Cees de Groot <cg@evrl.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2023 wrobell <wrobell@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -168,7 +169,8 @@
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* (string-append out "/bin/erl")
-                 (("sed") (which "sed"))))))
+                 (("basename") (which "basename"))
+                 (("dirname") (which "dirname"))))))
          (add-after 'install 'install-doc
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index dd84696316..0b024d6b92 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -1951,7 +1951,7 @@ in FUSE for rootless containers.")
 (define-public bees
   (package
     (name "bees")
-    (version "0.9.2")
+    (version "0.10")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1970,7 +1970,7 @@ in FUSE for rootless containers.")
                      (("#include .crucible/city.h.") "#include <city.h>"))))
               (sha256
                (base32
-                "0xik1xg6ma5yglhvs60ny27242iapqwzikmqbgij1avjffs6776a"))))
+                "1j1v9bxijs8gvrb7rg0q1158xjvmfc8dlzwx768fxf3w8w2gfwvz"))))
     (build-system gnu-build-system)
     (arguments
      (list #:test-target "test"
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 2da4ad4460..eb480762ed 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -288,14 +288,14 @@ Accounting.")
 (define-public homebank
   (package
     (name "homebank")
-    (version "5.6.3")
+    (version "5.6.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://homebank.free.fr/public/sources/"
                                   "homebank-" version ".tar.gz"))
               (sha256
                (base32
-                "0a1qhbnifqs0j59m1w5wfj1ix8iywmy1kc8185zvxndvckspb521"))))
+                "1a1cdldvs0xc30xkxkap72gafss90hmglakad5r8aykxz3y4sjdm"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list pkg-config intltool))
@@ -312,7 +312,7 @@ and dynamically with report tools based on filtering and graphical charts.")
 (define-public ledger
   (package
     (name "ledger")
-    (version "3.3.1")
+    (version "3.3.2")
     (source
      (origin
        (method git-fetch)
@@ -321,7 +321,7 @@ and dynamically with report tools based on filtering and graphical charts.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "13bbnfb08ymm54wg12dapqhalh7iialfs66qdbk2adl1aaq36wqa"))))
+        (base32 "0vchc97952w3fkkdn3v0nzjlgzg83cblwsi647jp3k9jq6rvhaak"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules (,@%cmake-build-system-modules
@@ -547,7 +547,7 @@ do so.")
 (define-public electrum
   (package
     (name "electrum")
-    (version "4.4.4")
+    (version "4.4.5")
     (source
      (origin
        (method url-fetch)
@@ -555,7 +555,7 @@ do so.")
                            version "/Electrum-"
                            version ".tar.gz"))
        (sha256
-        (base32 "05xzafv8ry5k5mzn3i4l71d42q42kjl81q154i97qmqiy3s2fhkb"))
+        (base32 "1gifnb927b51947psbj58c7kdsgncn3d9j7rpk5mls678yf1qd5d"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -2180,7 +2180,7 @@ and manipulation.")
 (define-public xmrig
   (package
     (name "xmrig")
-    (version "6.19.2")
+    (version "6.20.0")
     (source
      (origin
        (method git-fetch)
@@ -2188,7 +2188,7 @@ and manipulation.")
              (url "https://github.com/xmrig/xmrig")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
-       (sha256 (base32 "1hgcfq79d5060iryr34bpwf1dvgqmbmn9mm4ccfvp896r10j482h"))
+       (sha256 (base32 "02clipcixn0g4sm3b5r1cxx56ddhjkm8sqnq40jy1zm66ad5zhkj"))
        (modules '((guix build utils)))
        (snippet
         ;; TODO: Try to use system libraries instead of bundled ones in
@@ -2237,7 +2237,7 @@ mining.")
 (define-public p2pool
   (package
     (name "p2pool")
-    (version "3.4")
+    (version "3.5")
     (source
      (origin
        (method git-fetch)
@@ -2246,7 +2246,7 @@ mining.")
              (commit (string-append "v" version))
              (recursive? #t)))
        (file-name (git-file-name name version))
-       (sha256 (base32 "190dyyscmb71jnz0yb4l2ahsmz9wp7mcnn81yajv01bajgwnbl16"))
+       (sha256 (base32 "1brv3lksajnmpf7g01jbx76nax6vlx8231sxb0s33yf76yc481xb"))
        (modules '((guix build utils)))
        (snippet
         #~(for-each delete-file-recursively
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index c7ca81c35a..3dcc882e0c 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -489,7 +489,7 @@ provide OpenFirmware functionality on top of an already running system.")
 (define* (make-opensbi-package platform name #:optional (arch "riscv64"))
   (package
     (name name)
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method git-fetch)
@@ -498,7 +498,7 @@ provide OpenFirmware functionality on top of an already running system.")
              (commit (string-append "v" version))))
        (file-name (git-file-name "opensbi" version))
        (sha256
-        (base32 "13k76ngmbs6xk8wm0vhc3fjs5w82g34wxs2zf4r27jd79m47xjb5"))))
+        (base32 "0shri9jlhi2g464l05vrkzr6v754m868rr4136kq2b86amypmg8f"))))
     (build-system gnu-build-system)
     (native-inputs
      (append
@@ -1109,3 +1109,93 @@ such as:
          ((#:make-flags flags ''())
           ;; Adding debug symbols causes the size to exceed limits.
           #~(delete "DEBUG=1" #$flags)))))))
+
+(define (make-crust-package platform)
+  (package
+    (name (string-append "crust-"
+                         (string-replace-substring platform "_" "-")))
+    (version "0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             ;; There are only GitHub generated release snapshots.
+             (url "https://github.com/crust-firmware/crust")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "crust" version))
+       (sha256
+        (base32
+         "0xgbbhifg3miwd3yp6jq9kp7nqgz5gzy00w95vba45j8jk5vjvvz"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:make-flags
+      (let ((triplet-without-vendor
+             (and (%current-target-system)
+                  (match (string-split (nix-system->gnu-triplet
+                                        (%current-target-system)) #\-)
+                    ((arch vendor os ..1)
+                     (string-join `(,arch ,@os) "-"))))))
+        #~(list "CROSS_COMPILE=or1k-elf-"
+                "V=1"
+                #$@(if triplet-without-vendor
+                       ;; We are cross-compiling the tools, intended to be
+                       ;; executable for the target system.
+                       (list (string-append "HOSTAR=" triplet-without-vendor
+                                            "-ar")
+                             (string-append "HOSTCC=" triplet-without-vendor
+                                            "-gcc"))
+                       ;; Not cross-compiling.
+                       (list "HOSTAR=ar"
+                             "HOSTCC=gcc"))
+                "LEX=flex"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-build-tests
+            (lambda _
+              ;; Attempting to build the tools test binary on a non-aarch64
+              ;; architecture fails with: "No cache cleaning implementation
+              ;; available for this architecture".  Avoid building it (see:
+              ;; https://github.com/crust-firmware/crust/issues/182).
+              (substitute* "tools/Makefile"
+                (("tools-y \\+= test") ""))))
+          (delete 'configure)
+          (add-before 'build 'defconfig
+            (lambda* (#:key make-flags #:allow-other-keys)
+              (let ((config-name (string-append #$platform "_defconfig")))
+                (apply invoke "make" (cons config-name make-flags)))))
+          (replace 'install
+            (lambda _
+              (for-each (lambda (file)
+                          (install-file file (string-append #$output
+                                                            "/libexec")))
+                        (find-files "." "(scp\\.bin|\\.config)$"))
+              (install-file "build/tools/load"
+                            (string-append #$output "/bin")))))))
+    ;; The firmware is cross-compiled using a "bare bones" compiler (no libc).
+    ;; Use our own tool chain for that.
+    (native-inputs
+     (list bison
+           (cross-gcc "or1k-elf")
+           (cross-binutils "or1k-elf")
+           flex))
+    (home-page "https://github.com/crust-firmware/crust")
+    (synopsis "System control processor firmware for Allwinner sunxi boards")
+    (description "Crust improves battery life and thermal performance by
+implementing a deep sleep state.  During deep sleep, the CPU cores, the DRAM
+controller, and most onboard peripherals are powered down, reducing power
+consumption by 80% or more compared to an idle device.  On boards without a
+PMIC, Crust is also responsible for orderly power-off and power-on of the
+device.  For this to work, Crust runs outside the main CPU and DRAM, on a
+dedicated always-on microprocessor called a System Control Processor (SCP).
+Crust is designed to run on a specific SCP implementation, Allwinner's
+AR100.")
+    ;; Most files are dual-licensed "BSD-3 OR GPL2", a few are GPL2 only.
+    (license (list license:bsd-3 license:gpl2))))
+
+(define-public crust-pinebook
+  (make-crust-package "pinebook"))
+
+(define-public crust-pine64-plus
+  (make-crust-package "pine64_plus"))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 91e7ccc49f..1c4cccb6ae 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -55,6 +55,8 @@
 ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org>
 ;;; Copyright © 2023 Arnaud Lechevallier <arnaud.lechevallier@free.fr>
+;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
+;;; Copyright © 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -185,6 +187,28 @@ well as other mediums.")
 in print.  With attention to detail for high resolution rendering.")
     (license license:silofl1.1)))
 
+(define-public font-intel-one-mono
+  (package
+    (name "font-intel-one-mono")
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/intel/intel-one-mono")
+                    (commit (string-append "V" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1md57997nzkz75ambsahawzy1x71qvkp6f87zcqibksm66yvcjdc"))))
+    (build-system font-build-system)
+    (home-page "https://github.com/intel/intel-one-mono")
+    (synopsis "Expressive monospaced font family")
+    (description
+     "This package provides Intel One Mono, an expressive monospaced font
+family that's built with clarity, legibility, and the needs of developers in
+mind.")
+    (license license:silofl1.1)))
+
 (define-public font-dejavu
   (package
     (name "font-dejavu")
@@ -2515,6 +2539,47 @@ orthography of Roman glyphs of Meera Inimai are also based on this
 characteristic so that they sit smoothly with the Tamil glyphs.")
     (license license:silofl1.1)))
 
+(define-public font-ipa
+  (package
+    (name "font-ipa")
+    (version "003.03")
+    (source (origin
+              (method url-fetch/zipbomb)
+              (uri (string-append
+                    "https://moji.or.jp/wp-content/ipafont/IPAfont/IPAfont"
+                    (string-join (string-split version #\.) "") ".zip"))
+              (sha256
+               (base32
+                "1rbgfq14ld0cwas6bx5h7pwyv2hkfa8ihnphsaz1brxqliwysmgp"))))
+    (build-system font-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'make-read-only
+            (lambda _
+              ;; Otherwise the files have the executable bit set.
+              (for-each (lambda (file) (chmod file #o444))
+                        (find-files "." #:directories? #f))))
+          (add-after 'install 'install-doc
+            (lambda _
+              (let ((font+version
+                     #$(string-append "IPAfont"
+                                      (string-join (string-split version #\.)
+                                                   "")))
+                    (doc-dir (string-append #$output "/share/doc/" #$name)))
+                (with-directory-excursion font+version
+                  (mkdir-p doc-dir)
+                  (copy-file (string-append "Readme_" font+version ".txt")
+                             (string-append doc-dir "/README"))
+                  (copy-file "IPA_Font_License_Agreement_v1.0.txt"
+                             (string-append doc-dir "/LICENSE")))))))))
+    (home-page "https://moji.or.jp/ipafont/")
+    (synopsis "Japanese font from the Information-technology Promotion Agency")
+    (description "This package provides Japanese outline fonts by
+Information-technology Promotion Agency, Japan (IPA)")
+    (license license:ipa)))
+
 (define-public font-ipa-ex
   (package
     (name "font-ipa-ex")
@@ -3195,6 +3260,35 @@ minor tweaks to improve readability (a matter of taste of course).
 Most characters are just 4px wide, which is brilliant for low dpi(90-120) displays.")
     (license license:silofl1.1)))
 
+(define-public font-velvetyne-jgs
+  ;; There are no releases nor tags.
+  (let ((revision "1")
+        (commit "b1fe344c6ab4cb97aa9ceb09ba3b6056f826b040"))
+    (package
+      (name "font-velvetyne-jgs")
+      (version (git-version "1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/velvetyne/jgs")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1hwaylgih66cqwcf68i2xdccrn0p0rbvmlz5f3mlzvm51s5pzqb8"))))
+      (build-system font-build-system)
+      (home-page "http://www.velvetyne.org/fonts/jgs-font")
+      (synopsis "Font designed especially for ASCII art")
+      (description
+       "The jgs font family can be used to combine several
+characters to form contiguous lines.  It contains several fonts:
+@enumerate
+@item jgs5 for sizes multiple of 1o (10px, 20px, 30px)
+@item jgs7 for sizes multiple of 14 (14px, 28px, 42px)
+@item jgs9 for sizes multiples of 18 (18px, 36px, 54px)
+@end enumerate")
+      (license license:silofl1.1))))
+
 (define-public font-recursive
   (package
     (name "font-recursive")
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 31fc0bc5c6..13ac1a0b57 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -425,7 +425,7 @@ a hardware description and verification language.")
 (define-public nvc
   (package
     (name "nvc")
-    (version "1.8.1")
+    (version "1.9.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -434,7 +434,7 @@ a hardware description and verification language.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "03dnn77n50b5n06gd81hh36gh0h2nc266yzwl70qjlb00qs8cf7p"))))
+                "0zifyn7fr4k73ga6iwvsbsl6gi5106vlv5mkmqs0svi0sqx847f4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:out-of-source? #t
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 65781fed11..6408918c2a 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2322,15 +2322,19 @@ to applications simultaneously competing for fingerprint readers.")
     (description
      "This package contains a few command line utilities for working with
 desktop entries:
-
-desktop-file-validate: validates a desktop file and prints warnings/errors
-                       about desktop entry specification violations.
-
-desktop-file-install: installs a desktop file to the applications directory,
-                      optionally munging it a bit in transit.
-
-update-desktop-database: updates the database containing a cache of MIME types
-                         handled by desktop files.")
+@table @command
+@item desktop-file-validate
+Validates a desktop file and prints warnings/errors about desktop entry
+specification violations.
+
+@item desktop-file-install
+Installs a desktop file to the applications directory, optionally munging it
+a bit in transit.
+
+@item update-desktop-database
+Updates the database containing a cache of MIME types handled by desktop
+files.
+@end table")
     (license license:gpl2+)))
 
 (define-public xdg-user-dirs
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index aa99109cca..eebe8ecbf4 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2018 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016-2021, 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2020 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
@@ -2111,7 +2111,7 @@ that parenthetically inclined game developers need to make 2D (and eventually
 @item keyboard, mouse, controller input
 @item REPL-driven development model
 @end enumerate\n")
-    (license license:gpl3+)))
+    (license license:asl2.0)))
 
 (define-public bennu-game-development
   (package
@@ -2427,7 +2427,8 @@ a.k.a. XenoCollide) as described in Game Programming Gems 7.")
     (arguments
      (list
       ;; XXX: The sole test is failing on i686 due to a rounding error.
-      #:tests? (not (target-x86-32?))
+      #:tests? (not (or (target-x86-32?)
+                        (%current-target-system)))
       #:configure-flags #~(list "-DODE_WITH_LIBCCD_SYSTEM=ON")
       #:phases
       #~(modify-phases %standard-phases
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 83704dd720..fdd3a0e21e 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -42,7 +42,7 @@
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019, 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
-;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019-2023 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
@@ -70,7 +70,7 @@
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;; Copyright © 2022, 2023 Yovan Naumovski <yovan@gorski.stream>
 ;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
-;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2022, 2023 zamfofex <zamfofex@twdb.moe>
 ;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Hendursaga <hendursaga@aol.com>
@@ -155,6 +155,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-crypto)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages icu4c)
@@ -202,6 +203,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages squirrel)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages tbb)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
@@ -223,6 +225,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system haskell)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
@@ -3643,6 +3646,37 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
               ("bash" ,bash)))
     (native-inputs '())))
 
+(define-public fuzzylite
+  (package
+    (name "fuzzylite")
+    (version "6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fuzzylite/fuzzylite")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0yay0qc81x0irlvxqpy7jywjxpkmpjabdhq2hdh28r9z85wp2nwb"))
+              (patches (search-patches "fuzzylite-use-catch2.patch"
+                                       "fuzzylite-soften-float-equality.patch"
+                                       "fuzzylite-relative-path-in-tests.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'switch-to-fuzzylite-dir
+                    (lambda _
+                      (chdir "fuzzylite"))))))
+    (native-inputs (list catch2))
+    (home-page "https://www.fuzzylite.com/")
+    (synopsis "Fuzzy logic control binary")
+    (description
+     "This package provides fuzzylite, a fuzzy logic control library which
+allows one to easily create fuzzy logic controllers in a few steps utilizing
+object-oriented programming.")
+    (license license:gpl3)))
+
 (define-public xboard
   (package
     (name "xboard")
@@ -10294,7 +10328,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
 (define-public q5go
   (package
    (name "q5go")
-   (version "1.0")
+   (version "2.1.3")
    (source (origin
             (method git-fetch)
             (uri (git-reference
@@ -10303,10 +10337,10 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
             (file-name (git-file-name name version))
             (sha256
              (base32
-              "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
+              "0x8x7mp61g3lwabx9z4vsyd743kfqibnqhym7xd0b7811flca3ri"))))
    (build-system gnu-build-system)
    (native-inputs
-    (list pkg-config))
+    (list autoconf automake pkg-config))
    (inputs
     (list qtbase-5 qtmultimedia-5 qtsvg-5))
    (arguments
@@ -10315,32 +10349,34 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
         (add-after 'unpack 'fix-configure-script
           (lambda _
             ;; Bypass the unavailable qtchooser program.
-            (substitute* "configure"
+            (for-each delete-file
+                      '("configure"
+                        "Makefile.in"
+                        "src/Makefile.in"
+                        "src/translations/Makefile.in"))
+            (substitute* "configure.ac"
+              (("AC_PATH_PROG\\(qtchooser, .*\\)")
+               "")
               (("test -z \"QTCHOOSER\"")
                "false")
-              (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
-               command))
-            #t))
-        (add-after 'unpack 'fix-header
-          (lambda _
-            (substitute* "src/bitarray.h"
-              (("#include <cstring>" all)
-               (string-append all "\n#include <stdexcept>")))))
+              (("\\$\\(qtchooser -list-versions\\)")
+               "qt5")
+              (("qtchooser -run-tool=(.*) -qt=\\$QT5_NAME" _ command)
+               command))))
         (add-after 'unpack 'fix-paths
-          (lambda _
-            (substitute* '("src/pics/Makefile.in"
-                           "src/translations/Makefile.in")
-              (("\\$\\(datadir\\)/qGo/")
-               "$(datadir)/q5go/"))
-            #t))
+          (lambda* (#:key outputs #:allow-other-keys)
+            (substitute* '("src/setting.cpp")
+              (("/usr/share/\" PACKAGE \"/translations")
+               (string-append (assoc-ref outputs "out")
+                              "/share/qGo/translations")))))
         (add-after 'install 'install-desktop-file
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (apps (string-append out "/share/applications"))
-                   (pics (string-append out "/share/q5go/pics")))
+                   (images (string-append out "/share/qGo/images")))
               (delete-file-recursively (string-append out "/share/applnk"))
               (delete-file-recursively (string-append out "/share/mimelnk"))
-              (install-file "../source/src/pics/Bowl.ico" pics)
+              (install-file "../source/src/images/Bowl.ico" images)
               (mkdir-p apps)
               (with-output-to-file (string-append apps "/q5go.desktop")
                 (lambda _
@@ -10360,8 +10396,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
                            Comment[zh]=围棋~@
                            Terminal=false~@
                            Type=Application~%"
-                          out pics))))
-             #t)))))
+                          out images)))))))))
    (synopsis "Qt GUI to play the game of Go")
    (description
     "This a tool for Go players which performs the following functions:
@@ -11273,6 +11308,54 @@ Magic II (aka HOMM2) game engine.  It requires assets and game resources to
 play; it will look for them at @file{~/.local/share/fheroes2} folder.")
     (license license:gpl2)))
 
+(define-public vcmi
+  (package
+    (name "vcmi")
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vcmi/vcmi")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0f3fk1fc2wb7f2j4pxz89dzr8zjnrdh435mijia483a3bq59w7pk"))
+              (patches (search-patches "vcmi-disable-privacy-breach.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DFORCE_BUNDLED_FL=OFF")
+           ;; Test suites do not seem well supported upstream and are disabled by default.
+           ;; Pass -DENABLE_TEST to configure to enable.
+           #:tests? #f))
+    (native-inputs
+     (list boost
+           ffmpeg
+           fuzzylite
+           ;; googletest ; needed for tests, but tests are disabled
+           libxkbcommon
+           luajit
+           minizip
+           pkg-config
+           python
+           ;; XXX: Build currently fails with qtbase-6 and qttools-6
+           qtbase-5
+           qttools-5
+           sdl2
+           sdl2-mixer
+           sdl2-image
+           sdl2-ttf
+           tbb
+           vulkan-headers
+           zlib))
+    (home-page "https://vcmi.eu/")
+    (synopsis "Turn-based strategy game engine")
+    (description
+     "@code{vcmi} is an implementation of the Heroes of Might and
+Magic III game engine.  It requires assets and game resources to
+play; it will look for them at @file{~/.local/share/vcmi} folder.")
+    (license license:gpl2)))
+
 (define-public apricots
   (package
     (name "apricots")
@@ -11339,6 +11422,45 @@ original, they have been invented by Thomas Colcombet.")
     (home-page "https://www.gnu.org/software/liquidwar6/")
     (license license:gpl3+)))
 
+(define-public plunder
+  (let ((commit "026ded7083df5134bdf05b1ec7e5a0099ac9b9d2")
+        (revision "1"))
+    (package
+      (name "plunder")
+      (version (git-version "1.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/jappeace/plunder")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0m0v8x6q9iq4zihwmysbxjwkq18nar6xhq4g18p2g8c6azj2mgd6"))))
+      (build-system haskell-build-system)
+      (inputs (list ghc-monadrandom
+                    ghc-quickcheck
+                    ghc-file-embed
+                    ghc-generic-lens
+                    ghc-lens
+                    ghc-random
+                    ghc-reflex
+                    ghc-reflex-sdl2
+                    ghc-sdl2
+                    ghc-sdl2-gfx
+                    ghc-sdl2-image
+                    ghc-sdl2-ttf
+                    ghc-vector
+                    ghc-witherable))
+      (native-inputs (list ghc-hspec ghc-hspec-core hspec-discover))
+      (home-page "https://github.com/jappeace/plunder")
+      (synopsis "Game about looting a hexagonal-tile world")
+      (description
+       "This package provides a work-in-progress game where you control a
+Viking and your objective is to loot all of the occupied hexagonal tiles in
+the map.")
+      (license license:expat))))
+
 (define-public freerct
   (package
     (name "freerct")
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 1b444c2b02..862fdd79c3 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -614,7 +614,10 @@ Go.  It also includes runtime support libraries for these languages.")
   (append %gcc-10-x86_64-micro-architectures
           '("sapphirerapids" "alterlake" "rocketlake" ;Intel
 
-            "btver1" "btver2")))                  ;AMD
+            "btver1" "btver2"                     ;AMD
+
+            ;; psABI micro-architecture levels
+            "x86_64-v1" "x86_64-v2" "x86_64-v3" "x86_64-v4")))
 
 ;; Suitable '-march' values for GCC 12.
 (define %gcc-12-aarch64-micro-architectures
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 65344bcac2..cce4f2518d 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018, 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
@@ -48,6 +48,7 @@
   #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
+  #:use-module (guix build-system r)
   #:use-module (guix download)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
@@ -71,6 +72,7 @@
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages cran)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages docbook)
@@ -81,6 +83,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -92,6 +95,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages image-processing)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
   #:use-module (gnu packages kde)
   #:use-module (gnu packages libusb)
@@ -119,16 +123,49 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages speech)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages statistics)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
+(define-public gmt
+  (package
+    (name "gmt")
+    (version "6.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/GenericMappingTools/gmt/"
+                           "releases/download/"
+                           version "/gmt-" version "-src.tar.xz"))
+       (sha256
+        (base32 "0wh694cwcw2dz5rsh6pdn9irx08d65iih0vbxz350vzrkkjzyvml"))))
+    (build-system cmake-build-system)
+    (arguments (list #:tests? #false)) ;tests need costline data and caches
+    (inputs
+     (list curl ffmpeg fftw gdal geos ghostscript netcdf openblas pcre2))
+    (native-inputs
+     (list graphicsmagick pkg-config))
+    (home-page "https://www.generic-mapping-tools.org/")
+    (synopsis "Generic mapping tools")
+    (description "GMT is a collection of about 100 command-line tools for
+manipulating geographic and Cartesian data sets (including filtering, trend
+fitting, gridding, projecting, etc.) and producing high-quality illustrations
+ranging from simple x-y plots via contour maps to artificially illuminated
+surfaces, 3D perspective views and animations.  The GMT supplements add
+another 50 more specialized and discipline-specific tools.  GMT supports over
+30 map projections and transformations and requires support data such as GSHHG
+coastlines, rivers, and political boundaries and optionally DCW country
+polygons.")
+    (license license:lgpl3+)))
+
 (define-public libaec
   (package
     (name "libaec")
@@ -840,14 +877,14 @@ projections and coordinate transformations library.")
 (define-public python-fiona
   (package
     (name "python-fiona")
-    (version "1.8.20")
+    (version "1.9.4.post1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "Fiona" version))
         (sha256
           (base32
-            "0fql7i7dg1xpbadmk8d26dwp91v7faixxc4wq14zg0kvhp9041d7"))))
+            "083120rqc4rrqzgmams0yjd8b1h4p5xm4n9fnxg064ymw3vx6yan"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -876,16 +913,13 @@ projections and coordinate transformations library.")
             python-click
             python-click-plugins
             python-cligj
-            python-munch
-            python-setuptools
-            python-six
-            python-pytz))
+            python-importlib-metadata
+            python-six))
     (native-inputs
       (list gdal ; for gdal-config
             python-boto3
             python-cython
-            python-pytest
-            python-pytest-cov))
+            python-pytest python-pytest-cov python-pytz))
     (home-page "https://github.com/Toblerity/Fiona")
     (synopsis
       "Fiona reads and writes spatial data files")
@@ -903,34 +937,27 @@ pyproj, Rtree, and Shapely.")
 (define-public python-geopandas
   (package
     (name "python-geopandas")
-    (version "0.10.2")
+    (version "0.13.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "geopandas" version))
         (sha256
           (base32
-            "1nvim2i47ap1zdwy6kxydskf1cir5g4ij8124wvmrqij0zklggzg"))))
-    (build-system python-build-system)
+            "0s59jjk02l1zajz95n1c7fr3fyj44wzxn569q2y7f34042f6vdg5"))))
+    (build-system pyproject-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "pytest"
-                       ; Disable tests that fail due to incompatibilities
-                       ; with our pandas version.
-                       "-k"
-                       (string-append
-                         "not test_getitem_invalid"
-                         " and not test_value_counts"
-                         " and not test_setitem_invalid"
-                         " and not test_insert_invalid")
-                       ; Disable tests that require internet access.
-                       "-m" "not web")))))))
+     (list
+       #:test-flags
+       '(list
+         ;; Test files are missing
+         "--ignore=geopandas/tests/test_overlay.py"
+         "--ignore=geopandas/io/tests/test_file.py"
+         ;; Disable tests that require internet access.
+         "-m" "not web")))
     (propagated-inputs
-      (list python-fiona python-pandas python-pyproj python-shapely))
+      (list python-fiona python-packaging python-pandas python-pyproj
+            python-shapely))
     (native-inputs
       (list python-pytest))
     (home-page "https://geopandas.org")
@@ -2120,6 +2147,34 @@ using the dataset of topographical information collected by
    (home-page "https://www.routino.org/")
    (license license:agpl3+)))
 
+(define-public r-rnaturalearthhires
+  (let ((commit "c3785a8c44738de6ae8f797080c0a337ebed929d")
+        (revision "1"))
+    (package
+      (name "r-rnaturalearthhires")
+      (version (git-version "0.2.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ropensci/rnaturalearthhires")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1fr0yb2fbr9zbk7gqr3rnzz2w4ijjpl6hlzdrh4n27lf0ip3h0cx"))))
+      (properties `((upstream-name . "rnaturalearthhires")))
+      (build-system r-build-system)
+      (propagated-inputs (list r-sp))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/ropensci/rnaturalearthhires")
+      (synopsis
+       "High Resolution World Vector Map Data from Natural Earth used in rnaturalearth")
+      (description
+       "Facilitates mapping by making natural earth map data from http://
+www.naturalearthdata.com/ more easily available to R users.  Focuses on vector
+data.")
+      (license license:cc0))))
+
 (define-public qmapshack
   (package
     (name "qmapshack")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 4ce102d8ed..0507fc749b 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2022 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2022 Sughosha <sughosha@proton.me>
 ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+;;; Copyright © 2023 Eidvilas Markevičius <markeviciuseidvilas@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1328,6 +1329,61 @@ Speakers etc. of the same device are also displayed for selection.")
 of windows.")
       (license license:expat))))
 
+(define-public gnome-shell-extension-vitals
+  (package
+    (name "gnome-shell-extension-vitals")
+    (version "62.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/corecoding/Vitals")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0wmw5yd38vyv13x6frbafp21bdhlyjd5ggimdf2696irfhnm828h"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          (delete-file "schemas/gschemas.compiled")
+                          (for-each delete-file
+                                    (find-files "locale" "\\.mo$"))))))
+    (build-system copy-build-system)
+    (native-inputs (list `(,glib "bin") gettext-minimal))
+    (inputs (list libgtop))
+    (arguments
+     (list #:modules '((guix build copy-build-system)
+                       (guix build utils)
+                       (ice-9 string-fun))
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'install 'compile-schemas
+                          (lambda _
+                            (invoke "glib-compile-schemas" "--strict"
+                                    "schemas")))
+                        (add-before 'install 'compile-locales
+                          (lambda _
+                            (for-each (lambda (file)
+                                        (let ((destfile (string-replace-substring
+                                                         file ".po" ".mo")))
+                                          (invoke "msgfmt" "-c" file "-o"
+                                                  destfile)))
+                                      (find-files "locale" "\\.po$")))))
+           #:install-plan #~'(("."
+                               "share/gnome-shell/extensions/Vitals@CoreCoding.com"
+                               #:include-regexp ("\\.js(on)?$" "\\.css$"
+                                                 "\\.ui$"
+                                                 "\\.svg$"
+                                                 "\\.xml$"
+                                                 "\\.mo$"
+                                                 "\\.compiled$")))))
+    (home-page "https://github.com/corecoding/Vitals")
+    (synopsis
+     "GNOME Shell extension displaying computer resource/sensor stats")
+    (description
+     "Vitals is a GNOME Shell extension that can display the computer
+temperature, voltage, fan speed, memory usage and CPU load from the top menu
+bar of the GNOME Shell.")
+    (license license:gpl2+)))
+
 (define-public arc-theme
   (package
     (name "arc-theme")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 88857da82b..27e8949fa1 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3270,7 +3270,7 @@ compiles to GTKBuilder XML.")
 (define-public cambalache
   (package
     (name "cambalache")
-    (version "0.10.3")
+    (version "0.12.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3278,7 +3278,7 @@ compiles to GTKBuilder XML.")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "1nq9bvly4dm1xnh90z3b4c5455qpdgm3jgz2155vg2ai23f22vsy"))))
+               (base32 "1da8d5msk4ivmk5inaq8w0m78dsp7crarr9jmybag1c8qmqsjq4h"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -3288,6 +3288,7 @@ compiles to GTKBuilder XML.")
       #:modules '((guix build meson-build-system)
                   ((guix build python-build-system) #:prefix python:)
                   (guix build utils))
+      #:tests? #f                       ; XXX: tests spawn a socket...
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-source
@@ -3298,8 +3299,16 @@ compiles to GTKBuilder XML.")
                                   inputs (string-append "bin/" cmd)))))))
           (add-after 'unpack 'patch-build
             (lambda _
+              (substitute* "meson.build"
+                (("find_program\\('gtk-update-icon-cache'.*\\)") "")
+                (("find_program\\('update-desktop-database'.*\\)") ""))
               (substitute* "postinstall.py"
+                (("gtk-update-icon-cache") "true")
                 (("update-desktop-database") "true"))))
+          (add-after 'unpack 'fake-cc
+            (lambda _
+              (substitute* "tools/cmb_init_dev.py"
+                (("\"cc") (string-append "\"" #$(cc-for-target))))))
           (add-after 'wrap 'python-wrap (assoc-ref python:%standard-phases 'wrap))
           (delete 'check)
           (add-after 'install 'add-install-to-pythonpath
@@ -3339,23 +3348,31 @@ compiles to GTKBuilder XML.")
            adwaita-icon-theme hicolor-icon-theme
            gsettings-desktop-schemas
            gtk
+           gtksourceview-4
            `(,gtk+ "bin")               ; broadwayd
            `(,gtk "bin")
            libadwaita
            libhandy
            (librsvg-for-system)
            python
+           python-pycairo
            python-pygobject
            python-lxml
-           webkitgtk-with-libsoup2))
-    (native-inputs (list `(,glib "bin") gobject-introspection
-                         gettext-minimal pkg-config
-                         python-pytest xorg-server-for-tests))
+           webkitgtk
+           webkitgtk-next))
+    (native-inputs
+     (list `(,glib "bin")
+           gobject-introspection
+           gettext-minimal
+           pkg-config
+           python-pytest
+           weston
+           xorg-server-for-tests))
     (home-page "https://gitlab.gnome.org/jpu/cambalache")
     (synopsis "Rapid application development tool")
-    (description "Cambalache is a rapid application development (RAD) tool for
-Gtk 4 and 3 with a clear model-view-controller (MVC) design and
-data model first philosophy.")
+    (description "Cambalache is a @acronym{RAD, rapid application development}
+tool for Gtk 4 and 3 with a clear @acronym{MVC, model-view-controller} design
+and data model first philosophy.")
     (license (list license:lgpl2.1
                    license:gpl2)))) ; tools
 
@@ -4905,8 +4922,10 @@ libxml to ease remote use of the RESTful API.")
                (base32
                 "1qy2291d2vprdbbxmf0sa98izk09nl3znzzv7lckwf6f1v0sarlj"))))
     (build-system meson-build-system)
-    (arguments (substitute-keyword-arguments (package-arguments rest)
-                 ((#:tests? _ #f) #t)
+    (arguments (substitute-keyword-arguments
+                 (strip-keyword-arguments
+                   '(#:tests?)
+                   (package-arguments rest))
                  ((#:configure-flags _)
                   ;; Do not build the optional 'librest-demo' program as it
                   ;; depends on gtksourceview and libadwaita and thus,
@@ -9574,6 +9593,12 @@ endpoint and it understands SPARQL.")
            tracker
            upower
            zlib))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "TRACKER_CLI_SUBCOMMANDS_DIR")
+            (separator #f)              ; single entry
+            (files `(,(string-append "libexec/tracker"
+                                     (version-major version)))))))
     (synopsis "Metadata database, indexer and search tool")
     (home-page "https://wiki.gnome.org/Projects/Tracker")
     (description
@@ -10002,7 +10027,6 @@ world.")
           epiphany
           evince
           file-roller
-          gnome-boxes
           gnome-calculator
           gnome-calendar
           gnome-characters
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 52336de4b8..28df346281 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -519,9 +519,9 @@ variable defined below.  It requires guile-json to be installed."
 ;; XXXX: Workaround 'snippet' limitations.
 (define computed-origin-method (@@ (guix packages) computed-origin-method))
 
-(define %icecat-base-version "102.12.0")
+(define %icecat-base-version "102.13.0")
 (define %icecat-version (string-append %icecat-base-version "-guix0-preview1"))
-(define %icecat-build-id "20230606000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-build-id "20230704000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -541,12 +541,12 @@ variable defined below.  It requires guile-json to be installed."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "189irpd8xkwh3qixbbcmn5jblx7jz80rilcq8ihaawpmdh76safp"))))
+              "0b1sq4cadzqi7rk3cz6k6l5bg5s02ivff2n3gznd2rdzwhysngzw"))))
 
          ;; The upstream-icecat-base-version may be older than the
          ;; %icecat-base-version.
-         (upstream-icecat-base-version "102.12.0")
-         (gnuzilla-commit "b2d463b0e331795eebe3ee62f2c58c1bd05b9899")
+         (upstream-icecat-base-version "102.13.0")
+         (gnuzilla-commit "8c8a8ecc9322b0954e3d51f661866dbde1e6b1c3")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -558,7 +558,7 @@ variable defined below.  It requires guile-json to be installed."
                                       (string-take gnuzilla-commit 8)))
             (sha256
              (base32
-              "0db03i3xmapdr0xyb9yg6cl66kyxavnl22hhhnf85ffnlfrcdx2r"))))
+              "1x382a2v1djbf7dv5gs05kj48jj7inw9czi9r3cl57frn4ilfzmq"))))
 
          ;; 'search-patch' returns either a valid file name or #f, so wrap it
          ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@@ -1139,8 +1139,8 @@ standards of the IceCat project.")
     "ru" "sco" "si" "sk" "sl" "son" "sq" "sr" "sv-SE" "szl" "ta" "te" "th" "tl"
     "tr" "trs" "uk" "ur" "uz" "vi" "xh" "zh-CN" "zh-TW"))
 
-(define %icedove-build-id "20230607000000") ;must be of the form YYYYMMDDhhmmss
-(define %icedove-version "102.12.0")
+(define %icedove-build-id "20230705000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-version "102.13.0")
 
 ;; Provides the "comm" folder which is inserted into the icecat source.
 ;; Avoids the duplication of Icecat's source tarball.
@@ -1149,11 +1149,11 @@ standards of the IceCat project.")
     (method hg-fetch)
     (uri (hg-reference
           (url "https://hg.mozilla.org/releases/comm-esr102")
-          (changeset "9d42734e12597ccdb59fee178bf369d8c328dcad")))
+          (changeset "2bf94c4d195694485df5d632f2453888cf4f6657")))
     (file-name (string-append "thunderbird-" %icedove-version "-checkout"))
     (sha256
      (base32
-      "159jdxcg62fq24hgpp5pd8yb0xmqzjhcmd706yzs8lnydm9kjpcg"))))
+      "1nzbvw1n6wdjbsq0cvyq8av2xf775cp4gkvsjc7i5qzvhl84wg4l"))))
 
 (define (comm-source->locales+changeset source)
   "Given SOURCE, a checkout of the Thunderbird 'comm' component, return the
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index e4c4cb299b..ea6aadbe80 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -628,6 +628,13 @@ in the style of communicating sequential processes (@dfn{CSP}).")
      `(("go-fix-script-tests.patch" ,(search-patch "go-fix-script-tests.patch"))
        ,@(package-native-inputs go-1.14)))))
 
+;; https://github.com/golang/go/wiki/MinimumRequirements#microarchitecture-support
+(define %go-1.17-arm-micro-architectures
+  (list "armv5" "armv6" "armv7"))
+
+(define %go-1.17-powerpc64le-micro-architectures
+  (list "power8" "power9"))
+
 (define-public go-1.17
   (package
     (inherit go-1.16)
@@ -844,7 +851,14 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                   "README.md" "SECURITY.md"))))))))
     (inputs (if (not (or (target-arm?) (target-ppc64le?)))
               (alist-delete "gcc:lib" (package-inputs go-1.16))
-              (package-inputs go-1.16)))))
+              (package-inputs go-1.16)))
+    (properties
+     `((compiler-cpu-architectures
+         ("armhf" ,@%go-1.17-arm-micro-architectures)
+         ("powerpc64le" ,@%go-1.17-powerpc64le-micro-architectures))))))
+
+(define %go-1.18-x86_64-micro-architectures
+  (list "x86_64-v1" "x86_64-v2" "x86_64-v3" "x86_64-v4"))
 
 (define-public go-1.18
   (package
@@ -887,7 +901,12 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            "ldflags, err := setextld(ldflags, compiler)\n"
                            "ldflags = append(ldflags, \"-r\")\n"
                            "ldflags = append(ldflags, \"" gcclib "\")\n")))))))
-               '())))))))
+               '())))))
+    (properties
+     `((compiler-cpu-architectures
+         ("armhf" ,@%go-1.17-arm-micro-architectures)
+         ("powerpc64le" ,@%go-1.17-powerpc64le-micro-architectures)
+         ("x86_64" ,@%go-1.18-x86_64-micro-architectures))))))
 
 (define-public go-1.19
   (package
@@ -3213,6 +3232,35 @@ and anniversaries.")
      "This is the official AWS SDK for the Go programming language.")
     (license license:asl2.0)))
 
+(define-public go-gopkg-in-square-go-jose-v2
+  (package
+    (name "go-gopkg-in-square-go-jose-v2")
+    (version "2.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/square/go-jose")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1b1nhqxfmhzwrfk7pkvp2w3z3d0pf5ir00vizmy2d4xdbnldn70r"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "gopkg.in/square/go-jose.v2"))
+    (propagated-inputs
+     (list go-golang-org-x-crypto))
+    (native-inputs
+     (list go-github-com-google-go-cmp-cmp
+           go-github-com-stretchr-testify))
+    (home-page "https://gopkg.in/square/go-jose.v2")
+    (synopsis "Implementation of JOSE standards (JWE, JWS, JWT) in Go")
+    (description
+     "This package aims to provide an implementation of the Javascript Object
+Signing and Encryption set of standards.  This includes support for JSON Web
+Encryption, JSON Web Signature, and JSON Web Token standards.")
+    (license license:asl2.0)))
+
 (define-public go-gopkg.in-tomb.v2
   (let ((commit "d5d1b5820637886def9eef33e03a27a9f166942c")
         (revision "0"))
@@ -3355,6 +3403,80 @@ per-goroutine.")
     (description "The @code{walker} function is a faster, parallel version, of
 @code{filepath.Walk}")))
 
+(define-public go-github-com-tdewolff-minify-v2
+  (package
+    (name "go-github-com-tdewolff-minify-v2")
+    (version "2.12.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tdewolff/minify")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0h006wpfkl0ls0skqxblwcanrhmphgq5q0ii26l2ayh7s99cgmy3"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/tdewolff/minify/v2"))
+    (propagated-inputs
+     (list go-github-com-tdewolff-parse-v2))
+    (native-inputs
+     (list go-github-com-tdewolff-test))
+    (home-page "https://go.tacodewolff.nl/minify")
+    (synopsis "Go minifiers for web formats")
+    (description
+     "This package provides HTML5, CSS3, JS, JSON, SVG and XML minifiers and
+an interface to implement any other minifier.")
+    (license license:expat)))
+
+(define-public go-github-com-tdewolff-parse-v2
+  (package
+    (name "go-github-com-tdewolff-parse-v2")
+    (version "2.6.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tdewolff/parse")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dqki9ima079k9a3l72igmx5dml8qsl9z8rzw8a433f4gjhlv320"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/tdewolff/parse/v2"))
+    (native-inputs
+     (list go-github-com-tdewolff-test))
+    (home-page "https://github.com/tdewolff/parse")
+    (synopsis "Go parsers for web formats")
+    (description
+     "This package contains several lexers and parsers written in Go.")
+    (license license:expat)))
+
+(define-public go-github-com-tdewolff-test
+  (package
+    (name "go-github-com-tdewolff-test")
+    (version "1.0.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tdewolff/test")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "10myz3zdkqmx37cvj507h7l2ncb0rq9shqvz9ggq1swijbsvazff"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/tdewolff/test"))
+    (home-page "https://github.com/tdewolff/test")
+    (synopsis "Go test helper functions")
+    (description
+     "This package implements a few functions that are useful for io testing,
+such as readers and writers that fail after N consecutive reads/writes.")
+    (license license:expat)))
+
 (define-public go-github-com-tj-docopt
   (package
     (name "go-github-com-tj-docopt")
@@ -3646,6 +3768,31 @@ developed by the Go team.  It provides IDE features to any LSP-compatible
 editor.")
     (license license:bsd-3)))
 
+(define-public go-github-com-pquerna-cachecontrol
+  (package
+    (name "go-github-com-pquerna-cachecontrol")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pquerna/cachecontrol")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0d5zgv2w0sinh9m41pw3n015zzyabk7awgwwga7nmhjz452c9r5n"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/pquerna/cachecontrol"))
+    (native-inputs
+     (list go-github-com-stretchr-testify))
+    (home-page "https://github.com/pquerna/cachecontrol")
+    (synopsis "Golang HTTP Cache-Control Parser and Interpretation")
+    (description
+     "This package implements RFC 7234 Hypertext Transfer Protocol (HTTP/1.1):
+Caching.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-protonmail-go-crypto
   (package
     (name "go-github-com-protonmail-go-crypto")
@@ -4195,6 +4342,30 @@ Features include:
     (propagated-inputs
      (list go-gopkg-in-yaml-v3))))
 
+(define-public go-github-com-technoweenie-multipartstreamer
+  (package
+    (name "go-github-com-technoweenie-multipartstreamer")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/technoweenie/multipartstreamer")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "159jhcabdkds8m5777zfs8p5z3snpjhzz7q9aq9wjpcvh6xlljqa"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:tests? #f                  ; Upstream tests are broken.
+           #:import-path "github.com/technoweenie/multipartstreamer"))
+    (home-page "https://github.com/technoweenie/multipartstreamer")
+    (synopsis "MIME multipart format streamer")
+    (description
+     "This package helps you encode large files in MIME multipart format
+without reading the entire content into memory.")
+    (license license:expat)))
+
 (define-public go-github-com-tevino-abool
   (let ((commit
           "3c25f2fe7cd0ef3eabefce1d90efd69a65d35b12")
@@ -5332,6 +5503,27 @@ The yaml package supports most of YAML 1.2, but preserves some behavior from
 1.1 for backwards compatibility.")
     (license license:asl2.0)))
 
+(define-public go-github-com-matrix-org-gomatrix
+  (package
+    (name "go-github-com-matrix-org-gomatrix")
+    (version "0.0.0-20220926102614-ceba4d9f7530")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/matrix-org/gomatrix")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0vq29bdswvffxsmwvi20wnk73xk92dva0fdr2k3zshr4z10ypm2x"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/matrix-org/gomatrix"))
+    (home-page "https://github.com/matrix-org/gomatrix")
+    (synopsis "Golang Matrix client")
+    (description "This package provides a Golang Matrix client.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-mattn-go-isatty
   (package
     (name "go-github-com-mattn-go-isatty")
@@ -7163,7 +7355,7 @@ systems.")
 (define-public go-git-sr-ht-rockorager-tcell-term
   (package
     (name "go-git-sr-ht-rockorager-tcell-term")
-    (version "0.3.0")
+    (version "0.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -7172,7 +7364,7 @@ systems.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13nfb2mq59846j531j7p2nm8mi0kjw5p90pa89l3fwc0sljkn5p8"))))
+                "177ladvpiiw7sb0hsjjv9p2yv5wpqpw6nqardkm8mqqlj0swa9xx"))))
     (build-system go-build-system)
     (arguments
      (list #:import-path "git.sr.ht/~rockorager/tcell-term"))
@@ -9353,6 +9545,33 @@ templates on ANSI compatible terminals.  You can create your own stylesheet or
 use one of our glamorous default themes.")
     (license license:expat)))
 
+(define-public go-github-com-coreos-go-oidc
+  (package
+    (name "go-github-com-coreos-go-oidc")
+    (version "2.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/coreos/go-oidc")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "11m6slbpi33ynffml7812piq4anhjlf1qszjlsf26f5y7x3qh8n5"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/coreos/go-oidc"))
+    (propagated-inputs
+     (list go-github-com-pquerna-cachecontrol
+           go-golang-org-x-oauth2
+           go-gopkg-in-square-go-jose-v2))
+    (home-page "https://github.com/coreos/go-oidc")
+    (synopsis "OpenID Connect support for Go")
+    (description
+     "This package enables OpenID Connect support for the
+@code{go-golang-org-x-oauth2} package.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-coreos-go-semver
   (package
     (name "go-github-com-coreos-go-semver")
@@ -10578,6 +10797,31 @@ modifying them.")
 parsers, and related tools.")
       (license license:expat))))
 
+(define-public go-github-com-go-telegram-bot-api-telegram-bot-api
+  (package
+    (name "go-github-com-go-telegram-bot-api-telegram-bot-api")
+    (version "4.6.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/go-telegram-bot-api/telegram-bot-api")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x6j0k3aiicsr8l53na99ci10zm3qpn2syz4f60fzh164w5k1l7w"))))
+    (build-system go-build-system)
+    (home-page "https://go-telegram-bot-api.dev/")
+    (arguments
+     (list #:tests? #f                  ; Upstream tests are broken.
+           #:import-path "github.com/go-telegram-bot-api/telegram-bot-api"))
+    (propagated-inputs
+     (list go-github-com-technoweenie-multipartstreamer))
+    (synopsis "Golang bindings for the Telegram Bot API")
+    (description
+     "This package provides Golang bindings for the Telegram Bot API.")
+    (license license:expat)))
+
 (define-public go-github.com-ulikunitz-xz
   (package
     (name "go-github.com-ulikunitz-xz")
@@ -12813,6 +13057,32 @@ algorithm originally designed for use in Netscape Mail 2.0 for Go.")
 of the current user.")
     (license license:expat)))
 
+(define-public go-github-com-rylans-getlang
+  (package
+    (name "go-github-com-rylans-getlang")
+    (version "0.0.0-20201227074721-9e7f44ff8aa0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rylans/getlang")
+                    (commit (go-version->git-ref version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yf698h21j88d7d9wkzq69cfd7vs1mfp96nhb83lx6hhh7rfvb92"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:import-path "github.com/rylans/getlang"))
+    (propagated-inputs
+     (list go-golang-org-x-text))
+    (native-inputs
+     (list go-github-com-stretchr-testify))
+    (home-page "https://github.com/rylans/getlang")
+    (synopsis "Natural language detection package in pure Go")
+    (description
+     "This package provides fast natural language detection in Go.")
+    (license license:expat)))
+
 (define-public go-github-com-kyoh86-xdg
   (package
     (name "go-github-com-kyoh86-xdg")
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 34e9bed36e..cb4dde5cf9 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -214,8 +214,7 @@ such as elevation, speed, heart rate, power, temperature, and gear shifts.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://download-mirror.savannah.gnu.org"
-                           "/releases/gpsd/gpsd-" version ".tar.xz"))
+       (uri (string-append "mirror://savannah/gpsd/gpsd-" version ".tar.xz"))
        (sha256
         (base32 "1hd8b09is4gd73lpsdywxxdx11iijikmqgxd0y57pic3yxnlcb6a"))))
     (build-system scons-build-system)
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 1091d3d56e..5510828edf 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlos@gmx.com>
-;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021, 2023 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org>
 ;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
@@ -218,7 +218,7 @@ lines.")
 (define-public python-plotly
   (package
     (name "python-plotly")
-    (version "5.6.0")
+    (version "5.14.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -227,7 +227,7 @@ lines.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0kc9v5ampq2paw6sls6zdchvqvis7b1z8xhdvlhz5xxdr1vj5xnn"))))
+                "12iy5cswn5c0590fvl87nr6vfyhvbxymrldh4c7dfm2gn6h8z8w0"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -238,11 +238,16 @@ lines.")
             (lambda _
               (setenv "SKIP_NPM" "T")))
           (add-after 'unpack 'fix-version
-            ;; Versioneer is useless when there is no git metadata.
+            ;; TODO: Versioneer in Guix gets its release version from the
+            ;; parent directory, but the plotly package is located inside a
+            ;; depth 3 subdirectory.  Try to use versioneer if possible.
             (lambda _
               (substitute* "packages/python/plotly/setup.py"
                 (("version=versioneer.get_version\\(),")
-                 (format #f "version=~s," #$version)))))
+                 (format #f "version=~s," #$version)))
+              (substitute* "packages/python/plotly/plotly/version.py"
+                (("__version__ = get_versions\\(\\)\\[\"version\"\\]")
+                 (format #f "__version__ = ~s" #$version)))))
           (add-after 'fix-version 'chdir
             (lambda _
               (chdir "packages/python/plotly")))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 88b3b8c631..7e3e9e1702 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
 ;;; Copyright © 2021 Andy Tai <atai@atai.org>
@@ -824,7 +824,8 @@ many more.")
      ;; precision), as was discussed and patched long ago:
      ;; <https://issues.guix.gnu.org/22049>.  It seems the relevant fixes
      ;; didn't make it upstream, so skip tests.
-     (list #:tests? (not (target-x86-32?))))
+     (list #:tests? (not (or (target-x86-32?)
+                             (%current-target-system)))))
     (home-page "https://github.com/AcademySoftwareFoundation/Imath")
     (synopsis "Library of math operations for computer graphics")
     (description
@@ -2395,7 +2396,7 @@ generated discrete signed distance field using the cubic spline kernel.
 (define-public mmg
   (package
     (name "mmg")
-    (version "5.6.0")
+    (version "5.7.1")
     (source
      (origin
        (method git-fetch)
@@ -2404,7 +2405,7 @@ generated discrete signed distance field using the cubic spline kernel.
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "173biz5skbwg27i5w6layg7mydjzv3rmi1ywhra4rx9rjf5c0cc5"))))
+        (base32 "0skb7yzsw6y44zp9gb729i5xks7qd97nvn3z6jhz4jksqksx7lz0"))))
     (build-system cmake-build-system)
     (outputs '("out" "lib" "doc"))
     (arguments
@@ -2414,11 +2415,14 @@ generated discrete signed distance field using the cubic spline kernel.
                    ;; The build doesn't honor -DCMAKE_INSTALL_BINDIR, hence
                    ;; the adjust-bindir phase.
                    ;;(string-append "-DCMAKE_INSTALL_BINDIR=" #$output "/bin")
+                   (string-append "-DCMAKE_INSTALL_MANDIR=" #$output "/share/man")
                    "-DBUILD_SHARED_LIBS=ON"
+                   "-DBUILD_DOC=ON"
                    "-DBUILD_TESTING=ON"
                    ;; The longer tests are for continuous integration and
                    ;; depend on input data which must be downloaded.
                    "-DONLY_VERY_SHORT_TESTS=ON"
+                   "-DUSE_SCOTCH=ON"
                    ;; TODO: Add Elas (from
                    ;; https://github.com/ISCDtoolbox/LinearElasticity).
                    "-DUSE_ELAS=OFF"
@@ -2444,9 +2448,6 @@ generated discrete signed distance field using the cubic spline kernel.
                (add-after 'install 'install-doc
                  (lambda _
                    (copy-recursively
-                    "../source/doc/man" (string-append #$output
-                                                       "/share/man/man1"))
-                   (copy-recursively
                     "doc" (string-append #$output:doc "/share/doc/"
                                          #$name "-" #$version))))
                (add-after 'install 'adjust-bindir
@@ -2496,6 +2497,33 @@ a tetrahedral mesh, isovalue discretization and Lagrangian movement;
 @end itemize")
     (license license:lgpl3+)))
 
+(define-public nanosvg
+  ;; There are no proper versions or releases; use the latest commit.
+  (let ((commit "9da543e8329fdd81b64eb48742d8ccb09377aed1")
+        (revision "0"))
+    (package
+      (name "nanosvg")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/memononen/nanosvg")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1pkzv75kavkhrbdd2kvq755jyr0vamgrfr7lc33dq3ipkzmqvs2l"))))
+      (build-system cmake-build-system)
+      (arguments (list #:tests? #f    ;no test suite
+                       #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")))
+      (home-page "https://github.com/memononen/nanosvg")
+      (synopsis "Simple SVG parser")
+      (description "NanoSVG is a simple single-header SVG parser.  The output
+of the parser is a list of cubic bezier shapes.  The library suits well for
+anything from rendering scalable icons in an editor application to prototyping
+a game.")
+      (license license:zlib))))
+
 (define-public f3d
   (package
     (name "f3d")
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm
index 33a059053c..94c0f23d7a 100644
--- a/gnu/packages/groff.scm
+++ b/gnu/packages/groff.scm
@@ -32,6 +32,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ruby)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages bison)
@@ -229,27 +230,33 @@ It is typically used to display man pages on a web site.")
          "1slxfg57cabmh98fw507z4ka6lwq1pvbrqwppflxw6700pi8ykfh"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'extract-gemspec 'fix-gemspec-mustache
-           (lambda _
-             (substitute* "ronn-ng.gemspec"
-               (("(<mustache>.freeze.*~>).*(\".*$)" all start end)
-                (string-append start " 1.0" end)))
-             #t))
-         (add-after 'wrap 'wrap-program
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
-               (wrap-program prog
-                 `("PATH" ":" suffix ,(map
-                                       (lambda (exp_inpt)
-                                         (string-append
-                                          (assoc-ref %build-inputs exp_inpt)
-                                          "/bin"))
-                                       '("ruby-kramdown"
-                                         "ruby-mustache"
-                                         "ruby-nokogiri")))))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-test
+            (lambda _
+              ;; TODO This should be removed once the upstream fix is released
+              ;; https://github.com/apjanke/ronn-ng/commit/e194bf62b1d0c0828cc83405e60dc5ece829e62f
+              (substitute* "test/test_ronn_document.rb"
+                (("YAML\\.load\\(@doc\\.to_yaml\\)")
+                 "YAML.load(@doc.to_yaml, permitted_classes: [Time])"))))
+          (add-after 'extract-gemspec 'fix-gemspec-mustache
+            (lambda _
+              (substitute* "ronn-ng.gemspec"
+                (("(<mustache>.freeze.*~>).*(\".*$)" all start end)
+                 (string-append start " 1.0" end)))))
+          (add-after 'wrap 'wrap-program
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
+                (wrap-program prog
+                  `("PATH" ":" suffix ,(map
+                                        (lambda (exp_inpt)
+                                          (string-append
+                                           (assoc-ref %build-inputs exp_inpt)
+                                           "/bin"))
+                                        '("ruby-kramdown"
+                                          "ruby-mustache"
+                                          "ruby-nokogiri"))))))))))
     (inputs
      (list ruby-kramdown ruby-mustache ruby-nokogiri))
     (synopsis
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 80e0f452c1..935309e55a 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -43,7 +43,7 @@
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
-;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2022, 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
@@ -1086,8 +1086,8 @@ for calling methods on remote servers by exchanging JSON objects.")
       (license license:expat))))
 
 (define-public guile-squee
-  (let ((commit "fab9d9590792f3ededd4abd8cfa6be5e56659678")
-        (revision "4"))
+  (let ((commit "9f2609563fc53466e46d37c8d8d2fbcfce67b2ba")
+        (revision "5"))
     (package
       (name "guile-squee")
       (version (string-append "0-" revision "." (string-take commit 7)))
@@ -1099,19 +1099,20 @@ for calling methods on remote servers by exchanging JSON objects.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "03wdawx14sqs6xkw1vl06s58xyjicg2js2k4syn0z64bjbxxjvps"))))
+                  "0r322mfxx08siw656h7bm31rgzkchmp3yrgjpkc2d3qw286ilqi7"))))
       (build-system guile-build-system)
       (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "squee.scm"
-                 (("dynamic-link \"libpq\"")
-                  (string-append
-                   "dynamic-link \""
-                   (search-input-file inputs "/lib/libpq.so")
-                   "\""))))))))
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "squee.scm"
+                  (("dynamic-link \"libpq\"")
+                   (string-append
+                    "dynamic-link \""
+                    (search-input-file inputs "/lib/libpq.so")
+                    "\""))))))))
       (inputs
        (list postgresql))
       (native-inputs
@@ -4251,7 +4252,7 @@ the style of the Node Package Manager (NPM).")
                       #t)))))
     (native-inputs
      (list guile-3.0))
-    (synopsis "Cryprographic hash functions implemented in Scheme")
+    (synopsis "Cryptographic hash functions implemented in Scheme")
     (description
      "The @code{(hashing @dots{})} modules implement cryptographic hash
 functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
@@ -4670,33 +4671,31 @@ manipulating graphs and datasets.")
   (package
     (name "guile-jsonld")
     (version "1.0.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://framagit.org/tyreunom/guile-jsonld")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://framagit.org/tyreunom/guile-jsonld")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f)); require network
+     (list #:tests? #f))                ; require network
     (propagated-inputs
-     `(("guile-gnutls" ,gnutls)
-       ("guile-json" ,guile-json-4)
-       ("guile-rdf" ,guile-rdf)))
+     (list guile-gnutls guile-json-4 guile-rdf))
     (inputs
      (list guile-3.0))
     (native-inputs
      (list automake autoconf pkg-config texinfo))
     (home-page "https://framagit.org/tyreunom/guile-jsonld")
     (synopsis "Guile implementation of the JsonLD API specification")
-    (description "Guile JsonLD is an implementation of the JsonLD (Json for
-Linked Data) API defined by the W3C for GNU Guile.  It allows you to express links
-between data, in a way that is very similar to WikiData or RDF for instance.
-An object can have relations (in the form of an IRI) that relates it to one or
+    (description
+     "Guile JsonLD is an implementation of the JsonLD (Json for Linked Data)
+API defined by the W3C for GNU Guile.  It allows you to express links between
+data, in a way that is very similar to WikiData or RDF for instance.  An
+object can have relations (in the form of an IRI) that relates it to one or
 more objects or strings, represented by a Json object or an IRI.")
     (license license:gpl3+)))
 
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index c23299d1db..c44f0eda04 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -61,6 +61,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages high-availability)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
@@ -813,7 +814,7 @@ specific SMBIOS tables.")
 (define-public memtest86+
   (package
     (name "memtest86+")
-    (version "6.10")
+    (version "6.20")
     (source
      (origin
        (method git-fetch)
@@ -822,7 +823,7 @@ specific SMBIOS tables.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1igb648rsmbp0s95790qib6mhdsvbsrpigl91gk7yfkz32bip3bz"))
+        (base32 "1wsrdgpxi2nrcazihi1ghkn681iqkpwd8wnp533avcfg16n0jd17"))
        (patches
         (search-patches "memtest86+-build-reproducibly.patch"))))
     (build-system gnu-build-system)
@@ -1016,7 +1017,7 @@ technology, such as head mounted displays with built in head tracking.")
 (define-public openrgb
   (package
     (name "openrgb")
-    (version "0.8")
+    (version "0.9")
     (source
      (origin
        (method git-fetch)
@@ -1025,7 +1026,7 @@ technology, such as head mounted displays with built in head tracking.")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1yz7sdrjcxajm1zpa5djinmych5dvck0r1fvk0x5qmk87va4p9z3"))
+        (base32 "0rdh87w4j47dr0vakva94fhcbdc67d9aad0p3najg9zf8zhf64jw"))
        (patches
         (search-patches "openrgb-unbundle-hueplusplus.patch"))
        (modules '((guix build utils)))
@@ -1313,6 +1314,37 @@ libtss2-esys, libtss2-sys, libtss2-mu, libtss2-tcti-device, libtss2-tcti-swtpm
 and libtss2-tcti-mssim.")
     (license license:bsd-2)))
 
+(define-public tpm2-tools
+  (package
+    (name "tpm2-tools")
+    (version "5.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/tpm2-software/tpm2-tools/"
+                           "releases/download/" version "/"
+                           "tpm2-tools-" version ".tar.gz"))
+       (sha256
+        (base32 "08y16q92dh7frsyw0zlm3q9gsfqyls0li248s2pgsysk633lknqz"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list autoconf
+           automake
+           curl
+           libtool
+           gnu-gettext
+           openssl
+           pandoc
+           pkg-config
+           tpm2-tss))
+    (home-page "https://github.com/tpm2-software/tpm2-tools")
+    (synopsis "Tools for the Trusted Platform Module (TPM 2.0)")
+    (description
+     "This package provides user tools for the Trusted Computing Group's (TCG)
+TPM2 Software Stack (TSS).  These programs help with common tasks such as key
+management, attestation, encryption, and signing.")
+    (license license:bsd-3)))
+
 (define-public libcpuid
   ;; We need to remove blobs from the source, first we have to isolate the blob
   ;; source in build system.
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index af02acc4aa..9aba12b713 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -294,13 +294,13 @@ to @code{cabal repl}).")
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "10.20230407")
+    (version "10.20230626")
     (source
      (origin
        (method url-fetch)
        (uri (hackage-uri "git-annex" version))
        (sha256
-        (base32 "19500i3xcmxbh990kmdqimknlpk55z5iz9lnm3w35g8hmrpfh0d0"))))
+        (base32 "1z16alb5193y4m70rq0bcxx1rn6lnlgswigdnv5lqybjq1fw1z99"))))
     (build-system haskell-build-system)
     (properties '((upstream-name . "git-annex")))
     (arguments
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index da05582400..5447ecec1e 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1180,3 +1181,26 @@ result of golden tests.")
      "Integrate @@inspection-testing@@ into @@tasty@@ test suites.")
     (license license:expat)))
 
+(define-public ghc-proctest
+  (package
+    (name "ghc-proctest")
+    (version "0.1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "proctest" version))
+              (sha256
+               (base32
+                "02iz323arx9zwclvspgaaqz81bp6jdnj89pjm08n2gamg39zsbdn"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "proctest")))
+    (inputs (list ghc-hunit ghc-hspec ghc-quickcheck))
+    (home-page "https://github.com/nh2/proctest")
+    (synopsis "IO library for testing interactive command line programs")
+    (description
+     "This package provides an IO library for testing interactive command line
+programs.  Proctest aims to simplify interacting with and testing terminal
+programs, providing convenience functions for starting programs and reading
+their output.  All blocking operations support timeouts so that misbehaving
+programs cannot block your test pipeline.  Find more examples and contribute
+at @url{https://github.com/nh2/proctest}.")
+    (license license:expat)))
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a819698710..12d1246c58 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -32,6 +32,7 @@
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2047,6 +2048,27 @@ Colours can be blended and composed.  Various colour spaces are
 supported.  A module of colour names (\"Data.Colour.Names\") is provided.")
     (license license:expat)))
 
+(define-public ghc-hscolour
+  (package
+    (name "ghc-hscolour")
+    (version "1.24.4")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "hscolour" version))
+              (sha256
+               (base32
+                "079jwph4bwllfp03yfr26s5zc6m6kw3nhb1cggrifh99haq34cr4"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "hscolour")))
+    (home-page "http://code.haskell.org/~malcolm/hscolour/")
+    (synopsis "Colourise Haskell code")
+    (description
+     "hscolour is a small Haskell script to colourise Haskell code.  It currently has
+six output formats: ANSI terminal codes (optionally XTerm-256colour codes), HTML
+3.2 with <font> tags, HTML 4.01 with CSS, HTML 4.01 with CSS and mouseover
+annotations, XHTML 1.0 with inline CSS styling, LaTeX, and mIRC chat codes.")
+    (license license:lgpl2.1)))
+
 (define-public ghc-comonad
   (package
     (name "ghc-comonad")
@@ -2446,6 +2468,29 @@ They stopped crashing the compiler in GHC 7.6.  This package provides
 a vocabulary for working with them.")
     (license license:bsd-2)))
 
+(define-public ghc-constraints-extras
+  (package
+    (name "ghc-constraints-extras")
+    (version "0.4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "constraints-extras" version))
+              (sha256
+               (base32
+                "1irf4kd7a5h1glczbc73c3590m58azn4s68nfrjfg1h96i7mjfgn"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "constraints-extras")))
+    (inputs (list ghc-constraints ghc-aeson))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "1fdabah3ilq9yf94916ml3c3rxgcgab1jhzl4mk1zgzsw78j53qf")))
+    (home-page "https://github.com/obsidiansystems/constraints-extras")
+    (synopsis "Utility package for constraints")
+    (description
+     "Convenience functions and TH for working with constraints.  See
+@file{README.md} for example usage.")
+    (license license:bsd-3)))
+
 (define-public ghc-contravariant
   (package
     (name "ghc-contravariant")
@@ -6315,6 +6360,77 @@ polymorphism.  @code{Lens.Family.Clone} allows for first-class support of
 lenses and traversals for those who require Haskell 98.")
     (license license:bsd-3)))
 
+(define-public ghc-generic-lens-core
+  (package
+    (name "ghc-generic-lens-core")
+    (version "2.2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "generic-lens-core" version))
+              (sha256
+               (base32
+                "08i4c9yb6z84iknrnl9f3f343121j7ilp0a679v81nsjm9xz3rlf"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "generic-lens-core")))
+    (inputs (list ghc-indexed-profunctors))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "1dbjhd6k7ypqa9f4h9v2xndgb4mjhfli3n1vjm8r8ga0kfndbqfn")))
+    (home-page "https://github.com/kcsongor/generic-lens")
+    (synopsis "Generically derive traversals, lenses and prisms.")
+    (description
+     "This library uses GHC.Generics to derive efficient optics (traversals,
+lenses and prisms) for algebraic data types in a type-directed way, with a
+focus on good type inference and error messages when possible.  This package
+is the shared internal logic of the @code{generic-lens} and
+@code{generic-optics} libraries.")
+    (license license:bsd-3)))
+
+(define-public ghc-generic-lens
+  (package
+    (name "ghc-generic-lens")
+    (version "2.2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "generic-lens" version))
+              (sha256
+               (base32
+                "0s4b51s11ssmndmx9m9zbwgv9rb27ajwihsrk10hn582rp4ck3c6"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "generic-lens")))
+    (inputs (list ghc-generic-lens-core ghc-profunctors))
+    (native-inputs (list ghc-lens ghc-inspection-testing ghc-hunit ghc-doctest))
+    (home-page "https://github.com/kcsongor/generic-lens")
+    (synopsis "Generically derive traversals, lenses and prisms.")
+    (description
+     "This library uses @code{GHC.Generics} to derive efficient
+optics (traversals, lenses and prisms) for algebraic data types in a
+type-directed way, with a focus on good type inference and error messages when
+possible.  The library exposes a van Laarhoven interface.  For an alternative
+interface, supporting an opaque optic type, see @code{generic-optics}.")
+    (license license:bsd-3)))
+
+(define-public ghc-these-lens
+  (package
+    (name "ghc-these-lens")
+    (version "1.0.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "these-lens" version))
+              (sha256
+               (base32
+                "1v3kj7j4bkywbmdbblwqs5gsj5s23d59sb3s27jf3bwdzf9d21p6"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "these-lens")))
+    (inputs (list ghc-these ghc-lens))
+    (arguments
+     `(#:cabal-revision ("2"
+                         "1mncy6mcwqxy4fwibrsfc3jcx183wfjfvfvbj030y86pfihvbwg3")))
+    (home-page "https://github.com/haskellari/these")
+    (synopsis "Lenses for These")
+    (description "This package provides Prism and Traversals for @code{These}.")
+    (license license:bsd-3)))
+
 (define-public ghc-libffi
   (package
     (name "ghc-libffi")
@@ -9187,6 +9303,26 @@ API.")
     (description "This library provides profunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-indexed-profunctors
+  (package
+    (name "ghc-indexed-profunctors")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "indexed-profunctors" version))
+              (sha256
+               (base32
+                "1cbccbvrx73drr1jf3yyw0rp1mcfv3jc1rvdcby5xxx4ja543fjs"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "indexed-profunctors")))
+    (home-page "http://hackage.haskell.org/package/indexed-profunctors")
+    (synopsis "Utilities for indexed profunctors")
+    (description
+     "This package contains basic definitions related to indexed profunctors.  These
+are primarily intended as internal utilities to support the @code{optics} and
+@code{generic-lens} package families.")
+    (license license:bsd-3)))
+
 (define-public ghc-project-template
   (package
     (name "ghc-project-template")
@@ -9574,6 +9710,110 @@ configurations to coexist without resorting to mutable global variables or
 @code{System.IO.Unsafe.unsafePerformIO}.")
     (license license:bsd-3)))
 
+(define-public ghc-reflex
+  (package
+    (name "ghc-reflex")
+    (version "0.8.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "reflex" version))
+              (sha256
+               (base32
+                "1add5bcsyq2k02w2q0ifbyfcvcic1hmjdbgxg8ajd5riam0lhb16"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "reflex")))
+    (inputs (list ghc-memotrie
+                  ghc-bifunctors
+                  ghc-comonad
+                  ghc-commutative-semigroups
+                  ghc-constraints
+                  ghc-constraints-extras
+                  ghc-data-default
+                  ghc-dependent-map
+                  ghc-exception-transformers
+                  ghc-lens
+                  ghc-mmorph
+                  ghc-monad-control
+                  ghc-patch
+                  ghc-prim-uniq
+                  ghc-primitive
+                  ghc-profunctors
+                  ghc-random
+                  ghc-ref-tf
+                  ghc-reflection
+                  ghc-semigroupoids
+                  ghc-syb
+                  ghc-unbounded-delays
+                  ghc-witherable
+                  ghc-these
+                  ghc-semialign
+                  ghc-monoidal-containers
+                  ghc-dependent-sum
+                  ghc-haskell-src-exts
+                  ghc-haskell-src-meta))
+    (native-inputs (list hlint
+                         ghc-split
+                         ghc-filemanip
+                         ghc-these-lens
+                         ghc-hspec
+                         ghc-proctest))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'update-constraints
+           (lambda _
+             (substitute* "reflex.cabal"
+               (("\\bmmorph >= 1\\.0 && < 1\\.2,") "mmorph,")))))))
+    (home-page "https://reflex-frp.org")
+    (synopsis "Higher-order functional reactive programming")
+    (description
+     "This library lets you write interactive programs without callbacks or
+side-effects.  Functional Reactive Programming (FRP) uses composable events
+and time-varying values to describe interactive systems as pure functions.
+Just like other pure functional code, functional reactive code is easier to
+get right on the first try, maintain, and reuse.  Reflex is a
+fully-deterministic, higher-order FRP interface and an engine that efficiently
+implements that interface.")
+    (license license:bsd-3)))
+
+(define-public ghc-reflex-sdl2
+  (let ((commit "6dadf2c4f383b8a58fcd73616996b219c4f93972")
+        (revision "1"))
+    (package
+      (name "ghc-reflex-sdl2")
+      (version (git-version "0.3.0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/schell/reflex-sdl2")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "06lxfgp18l1car6wd07mbjn4yblnp89acf1i67nd815p2hx0ihbz"))))
+      (build-system haskell-build-system)
+      (properties '((upstream-name . "reflex-sdl2")))
+      (inputs (list ghc-async
+                    ghc-dependent-sum
+                    ghc-exception-transformers
+                    ghc-ref-tf
+                    ghc-primitive
+                    ghc-reflex
+                    ghc-sdl2))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'update-constraints
+             (lambda _
+               (substitute* "reflex-sdl2.cabal"
+                 (("\\bref-tf +>= 0\\.4 +&& < 0\\.5\\b") "ref-tf")))))))
+      (home-page "https://github.com/schell/reflex-sdl2")
+      (synopsis "SDL2 and Reflex functional reactive programming")
+      (description
+       "This package provides a minimal host for SDL2-based Reflex
+applications.")
+      (license license:expat))))
+
 (define-public ghc-regex
   (package
     (name "ghc-regex")
@@ -10288,6 +10528,47 @@ programming.")
 @code{SDL2_mixer}.")
     (license license:bsd-3)))
 
+(define-public ghc-sdl2-ttf
+  (package
+    (name "ghc-sdl2-ttf")
+    (version "2.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "sdl2-ttf" version))
+              (sha256
+               (base32
+                "0sm5lrdif5wmz3iah1658zlr7yr45d1hfihb2hdxdia4h7z1j0mn"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "sdl2-ttf")))
+    (inputs (list ghc-sdl2 ghc-th-abstraction sdl2-ttf))
+    (native-inputs (list pkg-config))
+    (home-page "http://hackage.haskell.org/package/sdl2-ttf")
+    (synopsis "Bindings to SDL2_ttf")
+    (description "This package provides Haskell bindings to SDL2_ttf C++
+library.")
+    (license license:bsd-3)))
+
+(define-public ghc-sdl2-gfx
+  (package
+    (name "ghc-sdl2-gfx")
+    (version "0.3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "sdl2-gfx" version))
+              (sha256
+               (base32
+                "0r9m54ffkp1dv2ffz9i9318qhvpinc76iih7vg1dwq3siwgpxaxw"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "sdl2-gfx")))
+    (inputs (list ghc-lifted-base ghc-monad-control ghc-sdl2 ghc-vector sdl2-gfx))
+    (native-inputs (list pkg-config))
+    (home-page "http://hackage.haskell.org/package/sdl2-gfx")
+    (synopsis "Haskell bindings to SDL2_gfx")
+    (description
+     "This package provides Haskell bindings to the SDL2_gfx graphics
+library.")
+    (license license:expat)))
+
 (define-public ghc-sdl-image
   (package
     (name "ghc-sdl-image")
@@ -12457,6 +12738,28 @@ transformers 0.2 or 0.3 compatibility to run on old versions of the platform,
 but also need those types.")
     (license license:bsd-3)))
 
+(define-public ghc-exception-transformers
+  (package
+    (name "ghc-exception-transformers")
+    (version "0.4.0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "exception-transformers" version))
+              (sha256
+               (base32
+                "1zmd2s40m86c9mhv32l5bvvf5r52cgpxvb4v5phyc3pjwlr7m8g5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "exception-transformers")))
+    (inputs (list ghc-fail ghc-transformers-compat))
+    (native-inputs (list ghc-hunit ghc-test-framework ghc-test-framework-hunit))
+    (home-page "http://hackage.haskell.org/package/exception-transformers")
+    (synopsis "Type classes and monads for unchecked extensible exceptions")
+    (description
+     "This package provides type classes, a monad and a monad transformer that support
+unchecked extensible exceptions as well as asynchronous exceptions.  It is
+compatible with the transformers package.")
+    (license license:bsd-3)))
+
 (define-public ghc-tree-diff
   (package
     (name "ghc-tree-diff")
@@ -12947,6 +13250,80 @@ and high speed.")
     (native-inputs '())
     (properties '((hidden? #t)))))
 
+(define-public ghc-commutative-semigroups
+  (package
+    (name "ghc-commutative-semigroups")
+    (version "0.1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "commutative-semigroups" version))
+              (sha256
+               (base32
+                "1bmafx363gfsd9wwrf3xyrw9mnw6anmc1zdfv0p8597y4lxxach7"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "commutative-semigroups")))
+    (home-page "http://hackage.haskell.org/package/commutative-semigroups")
+    (synopsis "Commutative semigroups")
+    (description
+     "This package provides a commutative semigroup is a semigroup where the order of
+arguments to mappend does not matter.")
+    (license license:bsd-3)))
+
+(define-public ghc-dependent-sum
+  (package
+    (name "ghc-dependent-sum")
+    (version "0.7.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "dependent-sum" version))
+              (sha256
+               (base32
+                "1frw5965v8i6xqdgs95gg8asgdqcqnmfahz0pmbwiaw5ybn62rc2"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "dependent-sum")))
+    (inputs (list ghc-constraints-extras ghc-some))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "0qybk8x6gyvg8pgf84mywlfajlcvg9pp4rs1wfn9fa7ns6sms88n")))
+    (home-page "https://github.com/obsidiansystems/dependent-sum")
+    (synopsis "Dependent sum type")
+    (description
+     "This package provides a dependent sum is a generalization of a
+particular way of thinking about the @code{Either} type.  @code{Either a b}
+can be thought of as a 2-tuple @code{(tag, value)}, where the value of the tag
+determines the type of the value.  In particular, either @code{tag = Left} and
+@code{value :: a} or @code{tag = Right} and @code{value :: b}.  This package
+allows you to define your own dependent sum types by using your own \"tag\"
+types.")
+    (license license:public-domain)))
+
+(define-public ghc-dependent-map
+  (package
+    (name "ghc-dependent-map")
+    (version "0.4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "dependent-map" version))
+              (sha256
+               (base32
+                "0b0zhyl3wkl4kkrxvq7vwjz3gn0ndxjjgyw9cky8a6xyv190pkjk"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "dependent-map")))
+    (inputs (list ghc-dependent-sum ghc-constraints-extras))
+    (arguments
+     `(#:cabal-revision ("1"
+                         "160p9crvlx1sn60inkwxa6mv1h2d4fgqnpsb2km67zrkpdfyd2s2")))
+    (home-page "https://github.com/obsidiansystems/dependent-map")
+    (synopsis "Dependent finite maps (partial dependent products)")
+    (description
+     "This package provides a type called @@DMap@@ which generalizes @@Data.Map.Map@@,
+allowing keys to specify the type of value that can be associated with them.")
+
+    ;; XXX: The 'LICENSE' file lists several licenses, stating "I have no idea
+    ;; which, if any, of the following licenses apply […].  Any modifications
+    ;; by myself I release into the public domain […]"."
+    (license license:public-domain)))
+
 (define-public ghc-unsafe
   (package
     (name "ghc-unsafe")
@@ -16291,6 +16668,80 @@ same-and-increasingly-sized values.")
 to incorporate LeanCheck tests into test-framework test suites.")
     (license license:bsd-3)))
 
+(define-public ghc-prim-uniq
+  (package
+    (name "ghc-prim-uniq")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "prim-uniq" version))
+              (sha256
+               (base32
+                "1l7jlv3pfasn89n2wpgff972npy423vqsidkkn5crxfyqjyzxbdv"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "prim-uniq")))
+    (inputs (list ghc-dependent-sum ghc-primitive))
+    (home-page "https://github.com/obsidiansystems/prim-uniq")
+    (synopsis "Opaque unique identifiers in primitive state monads")
+    (description
+     "This library provides opaque unique identifiers in primitive state
+monads and a GADT-like type using them as witnesses of type equality.")
+    (license license:public-domain)))
+
+(define-public ghc-patch
+  (package
+    (name "ghc-patch")
+    (version "0.0.8.2")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "patch" version))
+              (sha256
+               (base32
+                "15r2sjlpvp22iwd7qa1lqdq7n8nvqv2klvzrlm3phqq3j5n5x5y5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "patch")))
+    (inputs (list ghc-constraints-extras
+                  ghc-commutative-semigroups
+                  ghc-dependent-map
+                  ghc-dependent-sum
+                  ghc-lens
+                  ghc-indexed-traversable
+                  ghc-semigroupoids
+                  ghc-witherable
+                  ghc-these
+                  ghc-semialign
+                  ghc-monoidal-containers))
+    (native-inputs (list ghc-hedgehog ghc-hunit ghc-filemanip hlint))
+    (home-page "https://obsidian.systems")
+    (synopsis
+     "Data structures for describing changes to other data structures")
+    (description
+     "This library provides data structures for describing changes to other
+data structures.  In this library, a patch is something that can be applied,
+analogous to a function, and which distinguishes returning the argument it was
+provided from returning something else.")
+    (license license:bsd-3)))
+
+(define-public ghc-ref-tf
+  (package
+    (name "ghc-ref-tf")
+    (version "0.5.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "ref-tf" version))
+              (sha256
+               (base32
+                "0isilgcbw12zyh8s2liaj5r9r5m3yg1xskyhag6f36qi60y29hx5"))))
+    (build-system haskell-build-system)
+    (properties '((upstream-name . "ref-tf")))
+    (home-page "http://hackage.haskell.org/package/ref-tf")
+    (synopsis "Type class for monads with references using type families")
+    (description
+     "This package contains a @code{MonadRef} type class that abstracts over
+the details of manipulating references, allowing one to write code that can
+operate in either the @code{ST} monad or the @code{IO} monad.")
+    (license license:bsd-3)))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar
diff --git a/gnu/packages/hunspell.scm b/gnu/packages/hunspell.scm
index 382e518bf9..7163358260 100644
--- a/gnu/packages/hunspell.scm
+++ b/gnu/packages/hunspell.scm
@@ -276,7 +276,7 @@ spell-checking library.")
                          (#\_ #\-)
                          (chr chr))
                        (string-downcase dict-name))))
-    (version "7.5.1.2")
+    (version "7.5.4.2")
     (source
      (origin
        (method git-fetch)
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index f2ea6534f4..3a846cbe25 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
+;;; Copyright © 2023 Cairn <cairn@pm.me>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages game-development)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gd)
   #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gimp)
@@ -1735,3 +1737,54 @@ can call the CharLS codec and pass it images (sometimes called raster bitmaps),
  to have them encoded to JPEG-LS, or JPEG-LS streams, which CharLS will decode
 to images.")
     (license license:bsd-3)))
+
+(define-public libansilove
+  (package
+    (name "libansilove")
+    (version "1.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ansilove/libansilove")
+                    (commit (string-append version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "169njlck4a2bmf1kmjas1w594hyda543ykdnwg7fwkviij39l9z6"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:tests? #f)) ; No tests included
+    (native-inputs
+     (list gd))
+    (home-page "https://www.ansilove.org/")
+    (synopsis "Library for converting ANSI, ASCII, and other formats to PNG")
+    (description
+     "libansilove is a library for converting artscene file types to PNG images,
+including ANSI (.ANS) and many others.  The library primarily serves to support
+the ansilove tool.")
+    (license license:bsd-2)))
+
+(define-public ansilove
+  (package
+    (name "ansilove")
+    (version "4.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ansilove/ansilove")
+                    (commit (string-append version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h9r759krjl8wi68yxs1d46qfrx6v89a8vmmv3aqym8vn9x430kh"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     (list libansilove))
+    (home-page "https://www.ansilove.org/")
+    (synopsis "ANSI and ASCII art to PNG converter")
+    (description
+     "AnsiLove is an ANSI and ASCII art to PNG converter, allowing to convert
+ANSI and artscene-related file formats into PNG images, supporting ANSI (.ANS),
+PCBoard (.PCB), Binary (.BIN), Artworx (.ADF), iCE Draw (.IDF), Tundra (.TND)
+and XBin (.XB) formats.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 8be3449c3f..70f3f37768 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -742,14 +742,14 @@ preloading.")
 (define-public chafa
   (package
     (name "chafa")
-    (version "1.12.4")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hpjansson.org/chafa/releases/chafa-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0gsp39xnra331lk0db5pfqpdmqfhf7ii3a7yywj33sknf0dbsx4p"))))
+                "1wjp75l0qbikbdbvj8nlhl1gsakhx3309k0mdww6n2jh5bar0m0g"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm
index 5d862b5df1..37d833d146 100644
--- a/gnu/packages/instrumentation.scm
+++ b/gnu/packages/instrumentation.scm
@@ -18,6 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages instrumentation)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -69,16 +70,14 @@
 (define-public babeltrace
   (package
     (name "babeltrace")
-    (version "2.0.4")
+    (version "2.0.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.efficios.com/files/babeltrace/babeltrace2-"
                                   version ".tar.bz2"))
               (sha256
-               (base32 "1jlv925pr7hykc48mdvbmqm4ipy1r11xwzapa6fdpdfshmk12kvp"))))
-
+               (base32 "1d7jxljbfb4y8jmxm7744ndhh9k9rw8qhmnljb19wz7flzr9x3vv"))))
     (build-system gnu-build-system)
-
     (arguments
      `(#:tests? #f  ; FIXME - When Python's bindings are enabled, tests do not
                     ; pass.
@@ -178,7 +177,9 @@ standard library headers.")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "1m04pg824rqx647wvk9xl33ri8i6mm0vmrz9924li25dxbr4zqd5"))))
+               (base32 "1m04pg824rqx647wvk9xl33ri8i6mm0vmrz9924li25dxbr4zqd5"))
+              (patches
+               (search-patches "dyninst-fix-glibc-compatibility.patch"))))
 
     (build-system cmake-build-system)
     (arguments
@@ -548,31 +549,35 @@ whole-system symbolic access, and can also handle simple tracing jobs.")
                (base32 "0gk0hv3rnf5czvazz1prg21rf9qlniz42g5b389n8a29hqj4q6xr"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags
-       (list
-        (string-append "CC=" ,(cc-for-target)))
-       ;; runtest hang at some point -- probably dues to
-       ;; failed socket connection -- but we want to keep the
-       ;; unit tests.  Change the target to "test" when fixed.
-       #:test-target "unittest"
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs target #:allow-other-keys)
-             (let ((arch ,(platform-linux-architecture
-                           (lookup-platform-by-target-or-system
-                            (or (%current-target-system)
-                                (%current-system))))))
-               (setenv "ARCH"
-                       (cond
-                        ((string=? arch "arm64") "aarch64")
-                        (else arch)))
-               (when target
-                 (setenv "CROSS_COMPILE" (string-append target "-"))))
-             (setenv "SHELL" (which "sh"))
-             (invoke "./configure"
-                     (string-append "--prefix="
-                                    (assoc-ref outputs "out"))))))))
+     (list
+      #:modules
+      `((ice-9 match)
+        ,@%gnu-build-system-modules)
+      #:make-flags
+      #~(list
+         (string-append "CC=" #$(cc-for-target)))
+      ;; runtest hangs at some point -- probably due to
+      ;; failed socket connection -- but we want to keep the
+      ;; unit tests.  Change the target to "test" when fixed.
+      #:test-target "unittest"
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key outputs target #:allow-other-keys)
+              (let ((arch #$(platform-linux-architecture
+                             (lookup-platform-by-target-or-system
+                              (or (%current-target-system)
+                                  (%current-system))))))
+                (setenv "ARCH"
+                        (match arch
+                          ("arm64" "aarch64")
+                          (_ arch)))
+                (when target
+                  (setenv "CROSS_COMPILE" (string-append target "-"))))
+              (setenv "SHELL" (which "sh"))
+              (invoke "./configure"
+                      (string-append "--prefix="
+                                     #$output)))))))
     (inputs
      (list capstone
            elfutils
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index b31bb6b11a..a498078593 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -198,14 +198,14 @@ Conferencing} and @acronym{ICB, Internet Citizen's Band}.")
 (define-public weechat
   (package
     (name "weechat")
-    (version "3.8")
+    (version "4.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://weechat.org/files/src/weechat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0a5zfkqqdkya111rl2gpwlbfala0305qry9cdz2r1h7q0316bjzp"))))
+                "1ya0hacbyvhdy43hqrvphj3y7v6s312wbrsf2yns14ikbzhmxmsv"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -234,7 +234,8 @@ Conferencing} and @acronym{ICB, Internet Citizen's Band}.")
        (list "-DENABLE_PHP=OFF"
              ,@(if (target-x86?)
                  '("-DENABLE_MAN=ON"
-                   "-DENABLE_DOC=ON")
+                   "-DENABLE_DOC=ON"
+                   "-DENABLE_DOC_INCOMPLETE=ON")
                 '()))
        #:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 48864c78c2..5a6288581e 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1518,8 +1518,8 @@ blacklisted.certs.pem"
                 "1yimfdkwpinhg5cf1mcrzk9xvjwnray3cx762kypb9jcwbranjwx"))
 
 (define-public openjdk19
-  (make-openjdk openjdk18 "19.0.1"
-                "0kyalb391znw6idmfn3dsx6c2mal1hl63f0bwa4mlnsxfl380bi1"
+  (make-openjdk openjdk18 "19.0.2"
+                "08kvx7n8qhhfl25pig966881j5h4x7y0pf4brq16x0283fc0f4d4"
    (arguments
     (substitute-keyword-arguments (package-arguments openjdk18)
       ((#:phases phases)
@@ -1538,6 +1538,33 @@ blacklisted.certs.pem"
 (define-public openjdk openjdk19)
 
 
+(define-public jbr17
+  (package
+    (inherit openjdk17)
+    (name "jbr")
+    (version "17.0.7-b1020")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/JetBrains/JetBrainsRuntime.git")
+                     (commit (string-append "jb" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0wh9xhqgcjk0jgvpvlvf78dy3r8m0vgqd0f54whpx0qqbmyavgdw"))
+              (patches (search-patches "jbr-17-xcursor-no-dynamic.patch"))))
+    (synopsis "JetBrains Java Runtime")
+    (description "This package provides a Java runtime environment for
+and Java development kit.  It supports enhanced class redefinition (DCEVM),
+features optional JCEF, a framework for embedding Chromium-based browsers,
+includes a number of improvements in font rendering, keyboards support,
+windowing/focus subsystems, HiDPI, accessibility, and performance,
+provides better desktop integration and bugfixes not yet present in
+OpenJDK.")
+    (home-page "https://www.jetbrains.com/")
+    (license license:gpl2+)))
+
+
 (define-public ant/java8
   (package
     (name "ant")
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index fa37549625..e70aa7d7e1 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -48,7 +48,7 @@
 (define-public cjson
   (package
     (name "cjson")
-    (version "1.7.15")
+    (version "1.7.16")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -56,7 +56,7 @@
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "0lmq7sx09rmsirimbyvaaia44i134ppkp10cw1d2rygr76k9qwq2"))))
+               (base32 "00599lzzb0vszk317n0gln7wizdpchy4warxgpj3khrir73pphbb"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DENABLE_CJSON_UTILS=On")))
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 1b802922a8..b82c243126 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2023 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019, 2020, 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -2691,6 +2691,7 @@ consumption.")
                 (setenv "QT_QPA_PLATFORM" "offscreen")
                 (setenv "DBUS_FATAL_WARNINGS" "0")
                 (invoke "dbus-launch" "ctest"
+                        "--rerun-failed" "--output-on-failure"
                         "-E"
                         ;; The following tests fail or are flaky (see:
                         ;; https://bugs.kde.org/show_bug.cgi?id=440721).
@@ -2703,6 +2704,7 @@ consumption.")
                                        "|kiocore-krecentdocumenttest"
                                        "|kiocore-http_jobtest"
                                        "|kiogui-openurljobtest"
+                                       "|kioslave-httpheaderdispositiontest"
                                        "|applicationlauncherjob_forkingtest"
                                        "|applicationlauncherjob_scopetest"
                                        "|applicationlauncherjob_servicetest"
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index 2000ec3114..974c35e9cc 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -1847,7 +1847,7 @@ integration of Qt applications when running on a KDE Plasma workspace.")
     (version "5.24.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.kde.org/stable/plasma/"
+              (uri (string-append "mirror://kde/stable/plasma/"
                                   version "/plasma-nano-" version ".tar.xz"))
               (sha256
                (base32
@@ -1920,7 +1920,7 @@ connections.")
     (version "5.24.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.kde.org/stable/plasma/"
+              (uri (string-append "mirror://kde/stable/plasma/"
                                   version "/plasma-mobile-" version ".tar.xz"))
               (sha256
                (base32
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 28b4ce1ee0..5e8e69487e 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.12.3")
+    (version "23.04.2")
     (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 "0n7ca6c4nqr9z8ix70qjxw0rivh3hgqd187k4k8vp812yb49qrin"))))
+        (base32 "0dgrgnnq38nphfzbapr7dkb21lv4idqynxqmzv9x3maijmp1jjfr"))))
     (build-system qt-build-system)
     (arguments
      ;; XXX: there is a single test that spawns other tests and
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index bc8b1d9fcf..04279fff63 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -901,7 +901,7 @@ commonly called @code{ftoa} or @code{dtoa}.")
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "7.5.1.2")
+    (version "7.5.4.2")
     (source
      (origin
        (method url-fetch)
@@ -910,7 +910,7 @@ commonly called @code{ftoa} or @code{dtoa}.")
          "https://download.documentfoundation.org/libreoffice/src/"
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
        (sha256
-        (base32 "1dy0lvrvgkr7mbmiag26a38pivcddav8piph7jin1kw4phaxs3cj"))))
+        (base32 "1s3592ick745kl60yjlv7ki3p7nnwswj0mgjh3nk6k7skyvx3fv8"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      (list
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 52fb883467..8277780181 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -486,7 +486,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The current "stable" kernels. That is, the most recently released major
 ;; versions that are still supported upstream.
 
-(define-public linux-libre-6.3-version "6.3.8")
+(define-public linux-libre-6.3-version "6.3.12")
 (define-public linux-libre-6.3-gnu-revision "gnu")
 (define deblob-scripts-6.3
   (linux-libre-deblob-scripts
@@ -496,7 +496,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1i6vyakvqgmr3lcmr0aj8n7lbcksrp4d0rm1sz7cz64hwbsr67pq")))
 (define-public linux-libre-6.3-pristine-source
   (let ((version linux-libre-6.3-version)
-        (hash (base32 "0m89safyzi0rklsqvii5vkg92rdmvnl4lvyk6m648bhf4lhx88s3")))
+        (hash (base32 "1mvcirkhqnf03cci3jiq077fs9b42a3xdk3zjkpyim3x43ydwzyb")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-6.3)))
@@ -504,7 +504,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-6.1-version "6.1.34")
+(define-public linux-libre-6.1-version "6.1.38")
 (define-public linux-libre-6.1-gnu-revision "gnu")
 (define deblob-scripts-6.1
   (linux-libre-deblob-scripts
@@ -514,12 +514,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1qq3nsznblz5fkwahxwq26csmrmjbxh8xknm2z4zw6b6k9svzb1b")))
 (define-public linux-libre-6.1-pristine-source
   (let ((version linux-libre-6.1-version)
-        (hash (base32 "00yniq1smlckp18k3bf6bzys8d7wfbrkdwhikz2fycc0pyy7qvxj")))
+        (hash (base32 "0hrdh1w9z8bgy4cxqsxfkwa01yincfw1mq1bbwm36zczc0dzk97r")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-6.1)))
 
-(define-public linux-libre-5.15-version "5.15.117")
+(define-public linux-libre-5.15-version "5.15.120")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
@@ -529,12 +529,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1zljgvzr8irs3acq436i2iyana9vgx4k1pm3id4rz0fbaqfma602")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "17r3yyy4yzxyi4n1ri3sb42m9y1vnn4dcc0zli04n00f7hgk7a59")))
+        (hash (base32 "1xl3nrykbxdwv5a9rk0xnb7l61dsyjvkm1ryrdii09vbmsg0i6b4")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.184")
+(define-public linux-libre-5.10-version "5.10.186")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
@@ -544,12 +544,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1739xvyzi3i7d12mvsvnqa7208pvwfss43kzin71l9svw0405vp5")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "0219qv9rxg4fi7w2s0s9y7ggral40wm2riis58hmg80z3nybxabp")))
+        (hash (base32 "1qqv91r13akgik1q4jybf8czskxxizk6lpv4rsvjn9sx2dm2jq0y")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.247")
+(define-public linux-libre-5.4-version "5.4.249")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
@@ -559,12 +559,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0ll19zlgx5sbr7gvi93lgavrnzlgv6dpj2yp2x63fj6vdba5iwgc")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1mzyzxfsqp085qx17wp9xz7z4w79kks0jpdba7mx8k9i097hs09k")))
+        (hash (base32 "079mylc5j7hk5xn59q3z2xydyh88pq7yipn67x3y7nvf5i35hm6w")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.286")
+(define-public linux-libre-4.19-version "4.19.288")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
@@ -574,12 +574,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "05yqb59gj7mq5ha9xg045bz517sdg6janfa2yjq70qa6ahpc5fac")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "1788a68fbga03nkgbvai2bi89v826915829727j4zcilyc21b127")))
+        (hash (base32 "1sz3jp6kx0axdwp0wsq903q1090rbav9d12m5128335m8p2d1srk")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.318")
+(define-public linux-libre-4.14-version "4.14.320")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
@@ -589,7 +589,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1ccggm19nl7pdcxmsm08fkqy8phz8rqfmww5ypizibdmnrmpn2v9")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1g0i68q7xjcjqigwza60i8rqhxsd1l86czqnjv5312lvg5z34fn6")))
+        (hash (base32 "09bn18jvazkc55bqdjbxy8fbca7vjhi9xl2h02w0sq3f1jf6g0pd")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
@@ -1397,7 +1397,7 @@ and should be used with caution, especially on untested models.")
 (define-public corefreq
   (package
     (name "corefreq")
-    (version "1.95.2")
+    (version "1.96.5")
     (source
      (origin
        (method git-fetch)
@@ -1406,7 +1406,7 @@ and should be used with caution, especially on untested models.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "108fr056zmbipiv1nsrjccn3ky0jbcwan43big34nyq1c9dqjq1x"))))
+        (base32 "15wi9v7zcd62ab03zji43l33f1mc70lsdvqylv33kfpaf3k72lm4"))))
     (build-system linux-module-build-system)
     (outputs (list "out" "linux-module"))
     (arguments
@@ -2622,7 +2622,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 (define-public strace
   (package
     (name "strace")
-    (version "6.2")
+    (version "6.4")
     (home-page "https://strace.io")
     (source (origin
              (method url-fetch)
@@ -2630,7 +2630,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
                                  "/strace-" version ".tar.xz"))
              (sha256
               (base32
-               "1s3pj6a6xx1p1w98ik03d8hc4xssl4ha4aa0039nhqj196j3hz8c"))
+               "0f4jxgsdr76mf51kv2kwhv39ap7kilrchkfvqrhd5pvzqnx7v617"))
              (patches (search-patches "strace-readlink-tests.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -4556,100 +4556,95 @@ interface.")
 (define-public crda
   (package
     (name "crda")
-    (version "3.18")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://kernel.org/software/network/crda/"
-                                  "crda-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1gydiqgb08d9gbx4l6gv98zg3pljc984m50hmn3ysxcbkxkvkz23"))
-              (patches (search-patches "crda-optional-gcrypt.patch"))))
+    (version "4.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ajh8zx84p15y9wawh764zawniwn059iw9m32v56ajvkz9xbnkp2"))
+       (patches (search-patches "crda-optional-gcrypt.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (add-after 'unpack 'gzip-determinism
-                    (lambda _
-                      (substitute* "Makefile"
-                        (("gzip") "gzip --no-name"))
-                      #t))
-                  ,@(if (%current-target-system)
-                        '((add-after
-                            'unpack 'fix-pkg-config
-                            (lambda* (#:key target #:allow-other-keys)
-                                     (substitute*
-                                       "Makefile"
-                                       (("pkg-config")
-                                        (string-append target "-pkg-config")))
-                                     #t)))
-                        '())
-                  (add-before
-                   'build 'no-werror-no-ldconfig
-                   (lambda _
-                     (substitute* "Makefile"
-                       (("-Werror")  "")
-                       (("ldconfig") "true"))
-                     #t))
-                  (add-before
-                   'build 'set-regulator-db-file-name
-                   (lambda* (#:key native-inputs inputs #:allow-other-keys)
-                     ;; Tell CRDA where to find our database.
-                     (let ((regdb (assoc-ref (or native-inputs inputs)
-                                             "wireless-regdb")))
-                       (substitute* "crda.c"
-                         (("\"/lib/crda/regulatory.bin\"")
-                          (string-append "\"" regdb
-                                         "/lib/crda/regulatory.bin\"")))
-                       #t))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (add-after 'unpack 'gzip-deterministically
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("gzip" command)
+                      (string-append command " --no-name")))))
+               #$@(if (%current-target-system)
+                     #~((add-after 'unpack 'fix-pkg-config
+                         (lambda* (#:key target #:allow-other-keys)
+                           (substitute* "Makefile"
+                             (("pkg-config" command)
+                              (string-append target "-" command))))))
+                     #~())
+               (add-before 'build 'patch-Makefile
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("ldconfig") "true"))))
+               (add-before 'build 'set-regulatory-db-file-name
+                 (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                   ;; Tell CRDA where to find our database.
+                   (let ((regdb (assoc-ref (or native-inputs inputs)
+                                           "wireless-regdb")))
+                     (substitute* "crda.c"
+                       (("\"/lib/crda/regulatory.bin\"")
+                        (string-append "\"" regdb
+                                       "/lib/crda/regulatory.bin\"")))))))
        #:test-target "verify"
-       #:make-flags (let ((out     (assoc-ref %outputs "out"))
-                          (regdb   (assoc-ref %build-inputs "wireless-regdb")))
-                      (list
-                       (string-append "CC=" ,(cc-for-target))
-                       "V=1"
-
-                       ;; Disable signature-checking on 'regulatory.bin'.
-                       ;; The reason is that this simplifies maintenance
-                       ;; on our side (no need to manage a distro key
-                       ;; pair), and we can guarantee integrity of
-                       ;; 'regulatory.bin' by other means anyway, such as
-                       ;; 'guix gc --verify'.  See
-                       ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb>
-                       ;; for a discssion.
-                       "USE_OPENSSL=0"
-
-                       (string-append "PREFIX=" out)
-                       (string-append "SBINDIR=" out "/sbin/")
-                       (string-append "UDEV_RULE_DIR="
-                                      out "/lib/udev/rules.d")
-                       (string-append "LDFLAGS=-Wl,-rpath="
-                                      out "/lib -L.")
-                       (string-append "REG_BIN=" regdb
-                                      "/lib/crda/regulatory.bin")
-                       "all_noverify"))))
+       #:make-flags
+       #~(list
+          (string-append "CC=" #$(cc-for-target))
+          "V=1"
+
+          ;; Disable signature-checking on 'regulatory.bin'.
+          ;; The reason is that this simplifies maintenance
+          ;; on our side (no need to manage a distro key
+          ;; pair), and we can guarantee integrity of
+          ;; 'regulatory.bin' by other means anyway, such as
+          ;; 'guix gc --verify'.  See
+          ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb>
+          ;; for a discssion.
+          "USE_OPENSSL=0"
+
+          (string-append "PREFIX=" #$output)
+          (string-append "SBINDIR=" #$output "/sbin/")
+          (string-append "UDEV_RULE_DIR="
+                         #$output "/lib/udev/rules.d")
+          (string-append "LDFLAGS=-Wl,-rpath="
+                         #$output "/lib -L.")
+          (string-append "REG_BIN="
+                         #$(this-package-native-input "wireless-regdb")
+                         "/lib/crda/regulatory.bin")
+          "all_noverify")))
     (native-inputs (list pkg-config wireless-regdb))
     (inputs (list libnl))
     (home-page
      "https://wireless.wiki.kernel.org/en/developers/Regulatory/CRDA")
-    (synopsis "Central regulatory domain agent (CRDA) for WiFi")
+    (synopsis "@acronym{CRDA, Central Regulatory Domain Agent} for WiFi")
     (description
-     "The Central Regulatory Domain Agent (CRDA) acts as the udev helper for
-communication between the kernel Linux and user space for regulatory
+     "The @acronym{CRDA, Central Regulatory Domain Agent} acts as the udev
+helper for communication between the kernel Linux and user space for regulatory
 compliance.")
     (license license:copyleft-next)))
 
 (define-public wireless-regdb
   (package
     (name "wireless-regdb")
-    (version "2023.02.13")
+    (version "2023.05.03")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://kernel.org/software/network/wireless-regdb/"
                     "wireless-regdb-" version ".tar.xz"))
               (sha256
-               (base32 "0wrf1c7mbsklwdn7jpwzlpjxwj0vgr61qyh88lx7bi2dd6lfi0gy"))
+               (base32 "04lc9jp8zxhyqxvkhrm637sswi2xm48jw8jnp3iflnknnf5d0m7j"))
 
               ;; We're building 'regulatory.bin' by ourselves.
               (snippet '(begin
@@ -4700,9 +4695,9 @@ compliance.")
      "https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb")
     (synopsis "Wireless regulatory database")
     (description
-     "This package contains the wireless regulatory database for the Central
-Regulatory Database Agent (CRDA).  The database contains information on
-country-specific regulations for the wireless spectrum.")
+     "This package contains the wireless regulatory database for the
+@acronym{CRDA, Central Regulatory Database Agent}.  The database contains
+information on country-specific regulations for the wireless spectrum.")
     (license license:isc)))
 
 (define-public lm-sensors
@@ -5880,7 +5875,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "6.3")
+    (version "6.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -5888,7 +5883,7 @@ and copy/paste text in the console and in xterm.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0zbampc47nq3h8as3rda2apns5sj93ywxnrkal74kjvyg3zvv820"))))
+                "093wy9dsvp22nwlsk203l91h3yzkccvzdw58n3sicy41sncn3wm9"))))
     (build-system gnu-build-system)
     (outputs '("out" "static")) ;static versions of the binaries in "out"
     (arguments
@@ -9520,7 +9515,7 @@ modification of BPF objects on the system.")
 (define-public bpftrace
   (package
     (name "bpftrace")
-    (version "0.16.0")
+    (version "0.18.0")
     (source
      (origin
        (method git-fetch)
@@ -9529,7 +9524,7 @@ modification of BPF objects on the system.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0v1376wfk4gy5rrjdsck6r3347nb0bgbj70998z1bkx9z95wm3ab"))
+        (base32 "0n0mm5vlaildilq5nmjymmq8ijif1lcyfin76wcmhzwfriq4n87r"))
        (patches (search-patches "bpftrace-disable-bfd-disasm.patch"))))
     (build-system cmake-build-system)
     (native-inputs
diff --git a/gnu/packages/lisp-check.scm b/gnu/packages/lisp-check.scm
index 1d2e439e9a..4b18f79a44 100644
--- a/gnu/packages/lisp-check.scm
+++ b/gnu/packages/lisp-check.scm
@@ -868,29 +868,30 @@ tester module.")
   (sbcl-package->ecl-package sbcl-ptester))
 
 (define-public sbcl-rove
-  (package
-    (name "sbcl-rove")
-    (version "0.9.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/fukamachi/rove")
-             (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "07ala4l2fncxf540fzxj3h5mhi9i4wqllhj0rqk8m2ljl5zbz89q"))))
-    (build-system asdf-build-system/sbcl)
-    (inputs
-     (list sbcl-bordeaux-threads sbcl-dissect sbcl-trivial-gray-streams))
-    (home-page "https://github.com/fukamachi/rove")
-    (synopsis
-     "Yet another common lisp testing library")
-    (description
-     "Rove is a unit testing framework for Common Lisp applications.
+  (let ((commit "6a5dfcdced42879a4eff2a529e7e8ce492fadf41")
+        (revision "1"))
+    (package
+      (name "sbcl-rove")
+      (version (git-version "0.10.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/fukamachi/rove")
+                      (commit commit)))
+                (file-name (git-file-name "cl-rove" version))
+                (sha256
+                 (base32
+                  "1w99c0795ykhn14pfhyhvfzxzz0k1z1bb846xgz3iv19s0j2vykr"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs (list sbcl-bordeaux-threads
+                    sbcl-dissect
+                    sbcl-trivial-gray-streams))
+      (home-page "https://github.com/fukamachi/rove")
+      (synopsis "Yet another common lisp testing library")
+      (description
+       "Rove is a unit testing framework for Common Lisp applications.
 This is intended to be a successor of Prove.")
-    (license license:bsd-3)))
+      (license license:bsd-3))))
 
 (define-public cl-rove
   (sbcl-package->cl-source-package sbcl-rove))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index d578c46b90..a59c555f9a 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2022 Trevor Richards <trev@trevdev.ca>
 ;;; Copyright © 2022, 2023 Artyom Bologov <mail@aartaka.me>
+;;; Copyright © 2023 Roman Scherer <roman@burningswell.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -6875,7 +6876,7 @@ generators: Indirection, Shift, Accumulate, Add, and Count.")
 
 (define-public sbcl-local-time
   (let ((commit "40169fe26d9639f3d9560ec0255789bf00b30036")
-        (revision "3"))
+        (revision "4"))
     (package
      (name "sbcl-local-time")
      (version (git-version "1.0.6" revision commit))
@@ -6889,6 +6890,14 @@ generators: Indirection, Shift, Accumulate, Add, and Count.")
        (sha256
         (base32 "1dbp33zmkqzzshmf5k76pxqgli285wvy0p0dhcz816fdikpwn2jg"))))
      (build-system asdf-build-system/sbcl)
+     (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           ;; Delete the extension provided by sbcl-cl-postgres+local-time
+           (add-after 'unpack 'delete-local-time
+             (lambda _
+               (delete-file "cl-postgres+local-time.asd")
+               (delete-file "src/integration/cl-postgres.lisp"))))))
      (native-inputs
       (list sbcl-hu.dwim.stefil))
      (home-page "https://common-lisp.net/project/local-time/")
@@ -6905,6 +6914,35 @@ Long Painful History of Time\".")
 (define-public ecl-local-time
   (sbcl-package->ecl-package sbcl-local-time))
 
+(define-public sbcl-cl-postgres+local-time
+  (package
+    (inherit sbcl-local-time)
+    (name "sbcl-cl-postgres+local-time")
+    (inputs (list sbcl-local-time sbcl-postmodern))
+    (arguments
+     `(#:asd-systems '("cl-postgres+local-time")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-local-time
+           (lambda _
+             (delete-file "local-time.asd")
+             (delete-file "src/package.lisp")
+             (delete-file "src/local-time.lisp")
+             (delete-file-recursively "doc")
+             (delete-file-recursively "test")
+             (delete-file-recursively "zoneinfo"))))))
+    (synopsis "Integration between cl-postgres and local-time")
+    (description
+     "This package provides the LOCAL-TIME extensions for the cl-postgres
+ASDF system of postmodern.")
+    (license license:expat)))
+
+(define-public cl-postgres+local-time
+  (sbcl-package->cl-source-package sbcl-cl-postgres+local-time))
+
+(define-public ecl-cl-postgres+local-time
+  (sbcl-package->ecl-package sbcl-cl-postgres+local-time))
+
 (define-public sbcl-chronicity
   (package
     (name "sbcl-chronicity")
@@ -22720,10 +22758,10 @@ bound to whatever value was in the same place in the URL (as a string).")
 
 (define-public sbcl-spinneret
   ;; No release since 2019, no tags.
-  (let ((commit "52709ab953c46b24cbc2f0e3a50ae362916e730c"))
+  (let ((commit "d4398b5a344b5c59e497c9ee78fdbae7cc434f74"))
     (package
       (name "sbcl-spinneret")
-      (version (git-version "3.0" "5" commit))
+      (version (git-version "3.0" "6" commit))
       (source
        (origin
          (method git-fetch)
@@ -22732,7 +22770,7 @@ bound to whatever value was in the same place in the URL (as a string).")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1wzs0hzlwf0vzk4gb66psqz6gqcf3x7yfpi9gghbil97iz6fyc7z"))))
+          (base32 "1mdd92gfxfdsd81fcd8fgz8z7dwsb0kcv7zyzdgnw8lavkib5zly"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-alexandria
@@ -27833,7 +27871,7 @@ implementation by Kent M. Pitman.")
 (define-public sbcl-ospm
   (package
     (name "sbcl-ospm")
-    (version "0.0.1")
+    (version "0.0.2")
     (source
      (origin
        (method git-fetch)
@@ -27842,7 +27880,7 @@ implementation by Kent M. Pitman.")
              (commit version)))
        (file-name (git-file-name "cl-ospm" version))
        (sha256
-        (base32 "1b64ar6x08bcig4brlsim445favjf1zhyj6qz018cildp3xs4miz"))))
+        (base32 "1z2wz2xg7rn7p1lladdhj789iz2f3wfjgpi2hjr08vkf1pkp15xf"))))
     (build-system asdf-build-system/sbcl)
     (inputs
      (list sbcl-alexandria
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 175617ad70..37735020ad 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017-2019, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017-2019, 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2019–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@@ -993,7 +993,7 @@ the HTML documentation of TXR.")
 (define-public txr
   (package
     (name "txr")
-    (version "288")
+    (version "289")
     (source
      (origin
        (method git-fetch)
@@ -1002,7 +1002,7 @@ the HTML documentation of TXR.")
              (commit (string-append "txr-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0an26zffdaw9m673i077r2bw061mhzv4lz4z127sgda5gvg999mf"))))
+        (base32 "1jcz5iggp4mz5bzgnifr4xdpvz0sxa8cminynhdcs2jqr073xy8b"))))
     (build-system gnu-build-system)
     (arguments
      (list #:configure-flags
@@ -1315,7 +1315,7 @@ assembler, PEG) is less than 1MB.")
                                   (dirname
                                    (search-input-file
                                     inputs "include/stdlib.h"))))))
-  
+
                      (for-each wrap-carp-program
                                (list "carp"
                                      "carp-header-parse")))))))
@@ -1587,8 +1587,10 @@ be built as a stand-alone REPL interpreter.")
     (inherit s7-bootstrap)
     (name "s7")
     (arguments
-     (substitute-keyword-arguments (package-arguments s7-bootstrap)
-       ((#:tests? _) #t)
+     (substitute-keyword-arguments
+       (strip-keyword-arguments
+         '(#:tests?)
+         (package-arguments s7-bootstrap))
        ((#:phases phases)
         #~(modify-phases #$phases
             (add-after 'unpack 'patch
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index f59c8e9592..de5ad3718b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -502,7 +502,7 @@ code analysis tools.")
               "znver3")
             '())))))
 
-(define (make-clang-toolchain clang libomp)
+(define-public (make-clang-toolchain clang libomp)
   (package
     (name (string-append (package-name clang) "-toolchain"))
     (version (package-version clang))
@@ -1462,7 +1462,7 @@ Library.")
     ;; Based on LLVM 14 as of v5.0.0
     (inherit llvm-14)
     (name "llvm-for-rocm")
-    (version "5.1.3")                         ;this must match '%rocm-version'
+    (version "5.6.0")                         ;this must match '%rocm-version'
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1471,10 +1471,7 @@ Library.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0j6ydfkwrxwskgnhxc3cmry42n5faqbnwf2747qgf7lz5id8h8g5"))
-              (patches
-               (search-patches "llvm-roc-5.0.0-linkdl.patch"
-                               "llvm-roc-4.0.0-remove-isystem-usr-include.patch"))))
+                "1kg6q6aqijjrwaznj0gr3nd01gykrnqqnk8vz8wyfifr18l9jrgx"))))
     (arguments
      (substitute-keyword-arguments (package-arguments llvm-14)
        ((#:configure-flags flags)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 8fbb0274d4..f50398b555 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2022, 2023 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
 ;;; Copyright © 2023 Navid Afkhami <navid.afkhami@mdc-berlin.de>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1470,26 +1471,17 @@ with your favorite libraries.")
 (define-public python-threadpoolctl
   (package
     (name "python-threadpoolctl")
-    (version "2.1.0")
+    (version "3.1.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "threadpoolctl" version))
         (sha256
          (base32
-          "0szsxcm2fbxrn83iynn42bnvrdh7mfsmkhfn8pdn7swblfb7rifx"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "pytest"))
-             #t)))))
+          "100k76nmajf408lbn5ipis1gilklcs6sbqyqy3hhlh54zanbldd3"))))
+    (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest))
+     (list python-flit-core python-pytest))
     (home-page "https://github.com/joblib/threadpoolctl")
     (synopsis "Python helpers for common threading libraries")
     (description "Thread-pool Controls provides Python helpers to limit the
@@ -1497,6 +1489,73 @@ 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-tslearn
+  (package
+    (name "python-tslearn")
+    (version "0.6.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tslearn-team/tslearn")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fhs8c28hdqsyj8kdhzrmrxrh4w92x6nf3gm026xapp9divvljd6"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:test-flags
+      '(list "-k"
+             (string-append
+              ;; This one fails because of a difference in accuracy.
+              "not test_all_estimators[LearningShapelets-LearningShapelets]"
+              ;; XXX: It's embarrassing to disable these two, but the truth is
+              ;; that there's only so much we can do to force this package to
+              ;; work with Tensorflow 1.9.  It's still worth having this
+              ;; package, because it can be used without the Tensorflow
+              ;; backend.
+              ;; TypeError: cannot pickle '_thread.RLock' object
+              " and not test_shapelets"
+              ;; TypeError: Expected binary or unicode string, got 2
+              " and not test_serialize_shapelets"))
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'compatibility
+           (lambda _
+             (substitute* "tslearn/tests/sklearn_patches.py"
+               (("_pairwise_estimator_convert_X")
+                "_enforce_estimator_tags_X")
+               (("pairwise_estimator_convert_X\\(([^,]+), ([^,\\)]+)" _ a b)
+                (string-append "pairwise_estimator_convert_X(" b ", " a)))
+             (substitute* "tslearn/tests/test_shapelets.py"
+               (("tf.optimizers.Adam")
+                "tf.keras.optimizers.Adam"))
+             (substitute* "tslearn/shapelets/shapelets.py"
+               (("tf.keras.utils.set_random_seed")
+                "tf.set_random_seed")
+               (("def __call__\\(self, shape, dtype=None\\):")
+                "def __call__(self, shape, dtype=None, partition_info=None):")
+               (("tf.math.is_finite")
+                "tf.is_finite")))))))
+    (propagated-inputs (list python-cesium
+                             python-h5py
+                             python-joblib
+                             python-numba
+                             python-numpy
+                             python-pandas
+                             python-scipy
+                             python-scikit-learn
+                             tensorflow
+                             python-wheel))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/tslearn-team/tslearn")
+    (synopsis "Machine learning toolkit for time series data")
+    (description "This is a Python library for time series data mining.
+It provides tools for time series classification, clustering
+and forecasting.")
+    (license license:bsd-2)))
+
 (define-public python-imbalanced-learn
   (package
     (name "python-imbalanced-learn")
@@ -3809,6 +3868,51 @@ AI services.")
 Actions for the Lightning suite of libraries.")
     (license license:asl2.0)))
 
+(define-public python-captum
+  (package
+    (name "python-captum")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pytorch/captum")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h4n91ivhjxm6wj0vgqpfss2dmq4sjcp0appd08cd5naisabjyb5"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:test-flags
+      '(list "-k"
+             ;; These two tests (out of more than 1000 tests) fail because of
+             ;; accuracy problems.
+             "not test_softmax_classification_batch_multi_target\
+ and not test_softmax_classification_batch_zero_baseline")))
+    (propagated-inputs (list python-matplotlib python-numpy python-pytorch))
+    (native-inputs (list jupyter
+                         python-annoy
+                         python-black
+                         python-flake8
+                         python-flask
+                         python-flask-compress
+                         python-ipython
+                         python-ipywidgets
+                         python-mypy
+                         python-parameterized
+                         python-pytest
+                         python-pytest-cov
+                         python-scikit-learn))
+    (home-page "https://captum.ai")
+    (synopsis "Model interpretability for PyTorch")
+    (description "Captum is a model interpretability and understanding library
+for PyTorch.  Captum contains general purpose implementations of integrated
+gradients, saliency maps, smoothgrad, vargrad and others for PyTorch models.
+It has quick integration for models built with domain-specific libraries such
+as torchvision, torchtext, and others.")
+    (license license:bsd-3)))
+
 (define-public python-readchar
   (package
     (name "python-readchar")
@@ -4660,6 +4764,9 @@ Brian 2 simulator.")
        (sha256
         (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
     (build-system cmake-build-system)
+    (arguments (if (target-riscv64?)
+                   (list #:configure-flags #~'("-DDNNL_CPU_RUNTIME=SEQ"))
+                   '()))
     (home-page "https://github.com/oneapi-src/oneDNN")
     (synopsis "Deep Neural Network Library")
     (description
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 801555803a..c41685f22c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -501,49 +501,47 @@ messages) using IDLE.  Implemented in Go.")
         (base32 "0md8cf90fl2yf3zh9njjy42a673v4j4ygyq95xg7fzkygdigm1lq"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list "--enable-tls"
-             "--localstatedir=/var"
-             "--sysconfdir=/etc")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'patch-test-FHS-file-names
-           (lambda _
-             (with-directory-excursion "test"
-               (substitute* (list "functions.in"
-                                  "tests/send")
-                 ;; Fix some shebangs later generated on the fly.
-                 (("/bin/sh") (which "bash"))))
-             #t))
-         (add-before 'check 'pass-PATH-to-tests
-           ;; ‘runtest’ launches each test through ‘env -’, clearing $PATH. The
-           ;; tests then source ‘functions’, which first demands a working $PATH
-           ;; only to clobber it later.  Pass our $PATH to the test environment
-           ;; and don't touch it after that.
-           (lambda _
-             (with-directory-excursion "test"
-               (substitute* "runtests"
-                 (("env - bash")
-                  (string-append "env - PATH=\"" (getenv "PATH") "\" bash")))
-               (substitute* "functions.in"
-                 (("export PATH=.*") "")))
-             #t))
-         (add-before 'check 'delete-failing-tests
-           (lambda _
-             (with-directory-excursion "test/tests"
-               (for-each delete-file
-                         (list
-                          ;; XXX ‘nullmailer-inject: nullmailer-queue failed: 15’
-                          "inject/queue"
-                          ;; XXX These require the not-yet-packaged tcpserver.
-                          "protocols" "smtp-auth")))
-             #t))
-         (add-before 'install 'skip-install-data-local
-           ;; Don't attempt to install run-time files outside of the store.
-           (lambda _
-             (substitute* "Makefile"
-               ((" install-data-local") ""))
-             #t)))))
+     (list #:configure-flags
+           #~(list "--enable-tls"
+                   "--localstatedir=/var"
+                   "--sysconfdir=/etc")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'check 'patch-test-FHS-file-names
+                 (lambda _
+                   (with-directory-excursion "test"
+                     (substitute* (list "functions.in"
+                                        "tests/send")
+                       ;; Fix some shebangs later generated on the fly.
+                       (("/bin/sh") (which "bash"))))))
+               (add-before 'check 'pass-PATH-to-tests
+                 ;; ‘runtest’ launches each test through ‘env -’, clearing
+                 ;; $PATH. The tests then source ‘functions’, which first
+                 ;; demands a working $PATH only to clobber it later.  Pass
+                 ;; our $PATH to the test environment and don't touch it after
+                 ;; that.
+                 (lambda _
+                   (with-directory-excursion "test"
+                     (substitute* "runtests"
+                       (("env - bash")
+                        (string-append "env - PATH=\"" (getenv "PATH") "\" bash")))
+                     (substitute* "functions.in"
+                       (("export PATH=.*") "")))))
+               (add-before 'check 'delete-failing-tests
+                 (lambda _
+                   (with-directory-excursion "test/tests"
+                     (for-each
+                      delete-file
+                      (list
+                       ;; XXX ‘nullmailer-inject: nullmailer-queue failed: 15’
+                       "inject/queue"
+                       ;; XXX These require the not-yet-packaged tcpserver.
+                       "protocols" "smtp-auth")))))
+               (add-before 'install 'skip-install-data-local
+                 ;; Don't try to install run-time files outside of the store.
+                 (lambda _
+                   (substitute* "Makefile"
+                     ((" install-data-local") "")))))))
     (native-inputs
      ;; For tests.
      (list daemontools))   ; for svc
@@ -568,7 +566,7 @@ to run without any changes.")
 (define-public fetchmail
   (package
     (name "fetchmail")
-    (version "6.4.23")
+    (version "6.4.37")
     (source
      (origin
        (method url-fetch)
@@ -576,14 +574,14 @@ to run without any changes.")
                            (version-major+minor version) "/"
                            "fetchmail-" version ".tar.xz"))
        (sha256
-        (base32 "001394gxji89hfh6jcdrmv9ndimdsz7bndd55i516c8lfc9mwyjz"))))
+        (base32 "1sk9grjiibmaq8swfkr30vbfdz2i4ra1xrvsqdmbx6iyi5fjw62a"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append "--with-ssl="
+                                  #$(this-package-input "openssl")))))
     (inputs
      (list openssl))
-    (arguments
-     `(#:configure-flags
-       (list (string-append "--with-ssl="
-                            (assoc-ref %build-inputs "openssl")))))
     (home-page "https://www.fetchmail.info/")
     (synopsis "Remote-mail retrieval and forwarding utility")
     (description
@@ -763,39 +761,47 @@ It adds a large amount of new and improved features to mutt.")
   (package
     (name "gmime")
     (version "3.2.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/gmime/"
-                                  (version-major+minor version)
-                                  "/gmime-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0i3xfc84qn1z99i70q68kbnp9rmgqrnprqb418ba52s6g9j9dsia"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jstedfast/gmime")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0yiylbw9iy49hgj29czinv246hh5c18qv6qkvbdrmq9z5m00sp01"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "--enable-gtk-doc=yes"
+                   "--enable-introspection=yes")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-paths-in-tests
+                 (lambda _
+                   ;; The test programs run several programs using 'system' with
+                   ;; hard-coded paths.  Here we patch them all.
+                   ;; We use ISO-8859-1 here because test-iconv.c contains
+                   ;; raw byte sequences in several different encodings.
+                   (with-fluids ((%default-port-encoding #f))
+                     (substitute* (find-files "tests" "\\.c$")
+                       (("(system *\\(\")(/[^ ]*)" all pre prog-path)
+                        (let* ((base (basename prog-path))
+                               (prog (which base)))
+                          (string-append pre
+                                         (or prog (error "not found: "
+                                                         base))))))))))))
     (native-inputs
-     (list pkg-config gnupg ; for tests only
-           gobject-introspection vala))
+     (list autoconf
+           automake
+           pkg-config
+           gnupg                        ; for tests only
+           gobject-introspection
+           gtk-doc
+           libtool
+           vala
+           which))                      ; to find libtool, &c.
     (inputs (list glib gpgme zlib))
-    (arguments
-     `(#:configure-flags
-         (list "--enable-introspection=yes" "--enable-vapigen=yes")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after
-          'unpack 'patch-paths-in-tests
-          (lambda _
-            ;; The test programs run several programs using 'system' with
-            ;; hard-coded paths.  Here we patch them all.
-            ;; We use ISO-8859-1 here because test-iconv.c contains
-            ;; raw byte sequences in several different encodings.
-            (with-fluids ((%default-port-encoding #f))
-              (substitute* (find-files "tests" "\\.c$")
-                (("(system *\\(\")(/[^ ]*)" all pre prog-path)
-                 (let* ((base (basename prog-path))
-                        (prog (which base)))
-                   (string-append pre
-                                  (or prog (error "not found: " base)))))))
-            #t)))))
     (home-page "http://spruce.sourceforge.net/gmime/")
     (synopsis "MIME message parser and creator library")
     (description
@@ -1208,15 +1214,14 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
 (define-public mu
   (package
     (name "mu")
-    (version "1.10.3")
+    (version "1.10.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/djcb/mu/releases/download/v"
                            version "/mu-" version ".tar.xz"))
        (sha256
-        (base32
-         "0pr4w2afhansi151lx3145rsaf3gxfjx21y26p8jfg0nnvy70ff8"))))
+        (base32 "0bfclmffcqpb7hsgzvg7ailnnrcpvfv4ljcq7ds0z66n37f97xhs"))))
     (build-system meson-build-system)
     (native-inputs
      (list pkg-config
@@ -1234,14 +1239,6 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
                            (guix build emacs-utils))
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'fix-build-system
-            (lambda _
-              (substitute* "lib/meson.build"
-                (("dependencies: \\[ lib_mu_message_dep" m)
-                 (string-append m ", thread_dep")))
-              (substitute* "lib/utils/meson.build"
-                (("dependencies: \\[glib_dep" m)
-                 (string-append m ", thread_dep")))))
           (add-after 'unpack 'patch-bin-references
             (lambda _
               (substitute* '("guile/tests/test-mu-guile.cc"
@@ -1846,14 +1843,14 @@ addons which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.23")
+    (version "1.8.24")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/msmtp/releases"
                            "/msmtp-" version ".tar.xz"))
        (sha256
-        (base32 "1f2nqdj3k8q7l4m3a6n8ckaslilxxp2kzfdmni6l2gcv15mw216g"))))
+        (base32 "0nda218iz72pvh6v10s2qlihp1mdxzir6yb4hqdxc5xbmaql8rmx"))))
     (build-system gnu-build-system)
     (inputs
      (list libsecret gnutls zlib gsasl))
@@ -3175,20 +3172,19 @@ from the Cyrus IMAP project.")
 (define-public opensmtpd
   (package
     (name "opensmtpd")
-    (version "7.3.0p0")
+    (version "7.3.0p1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
                            "opensmtpd-" version ".tar.gz"))
        (sha256
-        (base32 "1rnaa022pkdc15vkvlisv42dvcxchib40h0m97myfyqjralabmrd"))))
+        (base32 "01ss6j1jadnd3ckgf9zpvrbdpipkf7m4l3isribqfwy2l50wsihv"))))
     (build-system gnu-build-system)
     (inputs
      (list bdb
-           libasr
            libevent
-           libressl ; recommended, and supports e.g. ECDSA
+           libressl
            linux-pam
            zlib))
     (native-inputs
@@ -3388,14 +3384,14 @@ messages with @acronym{DKIM, DomainKeys Identified Mail} (RFC 4871).")
 (define-public opensmtpd-filter-rspamd
   (package
     (name "opensmtpd-filter-rspamd")
-    (version "0.1.7")
+    (version "0.1.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/poolpOrg/filter-rspamd")
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "1qhrw20q9y44ffgx5k14nvqc9dh47ihywgzza84g0zv9xgif7hd5"))
+               (base32 "1zjmxfr22gvrxy3nfngl66h1fsd1sv4kxdn91r8byqijy6p65pai"))
               (file-name (git-file-name name version))))
     (build-system go-build-system)
     (arguments
@@ -4855,7 +4851,7 @@ remote SMTP server.")
 (define-public aerc
   (package
     (name "aerc")
-    (version "0.14.0")
+    (version "0.15.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4864,17 +4860,20 @@ remote SMTP server.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "067j7kja78hv7dafw8gy3m2g5cslq6xlnzja8lm3b5p0m0vfabm8"))))
+                "1gbprx0i8d13q974n5hsys6lllav5cpll3cwrr1hfw6307hc001r"))))
     (build-system go-build-system)
     (arguments
      (list #:import-path "git.sr.ht/~rjarry/aerc"
            ;; Installing the source is only necessary for Go libraries.
            #:install-source? #f
            #:build-flags
-           #~(list "-tags=notmuch" "-ldflags"
-                   (string-append "-X main.Version=" #$version
-                                  " -X git.sr.ht/~rjarry/aerc/config.shareDir="
-                                  #$output "/share/aerc"))
+           #~(list "-tags=notmuch"
+                   (string-append
+                     "-ldflags=-X main.Version=" #$version
+                     " -X git.sr.ht/~rjarry/aerc/config.libexecDir="
+                     #$output "/libexec/aerc"
+                     " -X git.sr.ht/~rjarry/aerc/config.shareDir="
+                     #$output "/share/aerc"))
            #:phases
            #~(modify-phases %standard-phases
                (add-after 'unpack 'patch-paths
@@ -4912,7 +4911,7 @@ remote SMTP server.")
                            (string-append "src/" import-path))))
                (replace 'install
                  (lambda* (#:key import-path build-flags #:allow-other-keys)
-                   (invoke "make" "install" "-C"
+                   (invoke "make" "CC=gcc" "install" "-C"
                            (string-append "src/" import-path)
                            (string-append "PREFIX=" #$output)))))))
     (inputs (list gnupg
@@ -4951,6 +4950,8 @@ remote SMTP server.")
                   go-github-com-syndtr-goleveldb-leveldb
                   go-git-sr-ht-sircmpwn-getopt
                   go-git-sr-ht-rockorager-tcell-term
+                  python
+                  python-vobject
                   zoxide))
     (native-inputs (list scdoc))
     (home-page "https://git.sr.ht/~rjarry/aerc")
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index 6510d96e2d..aa20975597 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -21,16 +21,19 @@
 (define-module (gnu packages mastodon)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
@@ -44,29 +47,24 @@
 (define-public toot
   (package
     (name "toot")
-    (version "0.36.0")
+    (version "0.37.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "toot" version))
         (sha256
-         (base32 "1n79jwr3kpnc2xsr9isbgrj5as5i6zbkhxrdpdjfg87qbbjz7xca"))))
+         (base32 "0qx8hyb74r85dxf97k23w0f5rzkrs16mq7h3y37nwp6hl6gia0ci"))))
     (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?
                (add-installed-pythonpath inputs outputs)
                (invoke "py.test")))))))
     (native-inputs
-     (list python-pytest))
+     (list python-psycopg2 python-pytest))
     (inputs
      (list python-beautifulsoup4 python-requests python-urwid
            python-wcwidth))
@@ -98,21 +96,33 @@ Features include:
         (base32 "1xhyz6wi17g4m76lr6qc75q4xnnw7c3dh3d04dg8m5gzk6j0y89x"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags (list "-Ddistro=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'symlink-package
-           (lambda* (#:key outputs #:allow-other-keys)
-             (with-directory-excursion
-               (string-append (assoc-ref outputs "out") "/bin")
-               (symlink "dev.geopjr.Tuba" "tuba")))))))
+      (list
+        #:glib-or-gtk? #t
+        #:configure-flags #~(list "-Ddistro=true")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'glib-or-gtk-wrap 'lib-vars-wrap
+              (lambda _
+                (let ((gstvar "GST_PLUGIN_SYSTEM_PATH")
+                      (pixvar "GDK_PIXBUF_MODULE_FILE"))
+                  (wrap-program (string-append #$output "/bin/dev.geopjr.Tuba")
+                    `(,gstvar ":" suffix (,(getenv gstvar)))
+                    `(,pixvar ":" = (,(getenv pixvar)))))))
+            (add-after 'lib-vars-wrap 'symlink-package
+              (lambda _
+                (with-directory-excursion (string-append #$output "/bin")
+                  (symlink "dev.geopjr.Tuba" "tuba")))))))
     (native-inputs
-     (list gettext-minimal
+     (list gdk-pixbuf ; so pixbuf loader cache (for webp) is generated
+           gettext-minimal
            `(,glib "bin") ; for glib-compile-resources
            pkg-config))
     (inputs
-     (list gtk
+     (list gst-plugins-bad
+           gst-plugins-base
+           gst-plugins-good
+           gstreamer
+           gtk
            gtksourceview
            json-glib
            libadwaita
@@ -121,7 +131,8 @@ Features include:
            libsecret
            libwebp
            libxml2
-           vala))
+           vala
+           webp-pixbuf-loader))
     (home-page "https://tuba.geopjr.dev/")
     (synopsis "GTK client for Mastodon")
     (description "Tuba is a GTK client for Mastodon.  It provides a clean,
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 89ae48633a..07f9e177e9 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -211,14 +211,14 @@ beginners.")
 (define-public bitwise
   (package
     (name "bitwise")
-    (version "0.42")
+    (version "0.43")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mellowcandle/bitwise"
                                   "/releases/download/v" version
                                   "/bitwise-v" version ".tar.gz"))
               (sha256
-               (base32 "1lniw4bsb5qs5ybf018qllf95pzixb1q3lvybzl4k3xz8zpkrm6k"))))
+               (base32 "1yrgrbfgp6cavc6gyfp9b0zgjf9p1g7xhwzn9pydw44a32agf97m"))))
     (build-system gnu-build-system)
     (inputs
      (list ncurses readline))
@@ -1227,14 +1227,14 @@ in the terminal or with an external viewer.")
 (define-public gnuplot
   (package
     (name "gnuplot")
-    (version "5.4.6")
+    (version "5.4.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
                                   version "/gnuplot-"
                                   version ".tar.gz"))
        (sha256
-        (base32 "06bly8cpqjdf744jg7yrgba9rdcm3gl4zf63y3c69v80ha8jgz02"))))
+        (base32 "1kzmj4yyxvlxqzqbrw6sx6dnvhj1zzqnciyb8ryzy6mdrb3pj4lk"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config texlive-tiny))
@@ -2389,16 +2389,7 @@ interfaces.")
                       (string-append builddir "/src/nomad ")))
                    (for-each
                     (lambda (f) (fix-exe-path dir f))
-                    '("param1.txt" "param2.txt" "param3.txt" "param10.txt")))))))
-
-         ;; The information in the .egg-info file is not kept up to date.
-         (add-after 'install 'delete-superfluous-egg-info
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (delete-file (string-append
-                           (site-packages inputs outputs)
-                           "/PyNomad-0.0.0-py"
-                           (python-version (assoc-ref inputs "python"))
-                           ".egg-info")))))))
+                    '("param1.txt" "param2.txt" "param3.txt" "param10.txt"))))))))))
     (home-page "https://www.gerad.ca/nomad/")
     (synopsis "Nonlinear optimization by mesh-adaptive direct search")
     (description
@@ -3000,7 +2991,7 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
 (define-public gmsh
   (package
     (name "gmsh")
-    (version "4.10.5")
+    (version "4.11.1")
     (source
      (origin
        (method git-fetch)
@@ -3011,7 +3002,7 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
                              (string-replace-substring version "." "_")))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08p39yjgf3lbnjg90skpmsq9n1a9pmwppdmy5s94dc6sq2nfr7xl"))
+        (base32 "1d6n7qqj9xpfgh7v5jif565waiqjhahkh21pi5s1vr84y61wxyx8"))
        (modules '((guix build utils)))
        (snippet
         '(delete-file-recursively "contrib/metis"))))
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index f356674ed9..6107dfc979 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -34,6 +34,7 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages xml)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix gexp)
@@ -159,14 +160,14 @@ homeserver and generally help bootstrap the ecosystem.")
 (define-public python-matrix-nio
   (package
     (name "python-matrix-nio")
-    (version "0.20.0")
+    (version "0.20.2")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "matrix-nio" version))
+       (uri (pypi-uri "matrix_nio" version))
        (sha256
-        (base32 "1ycrp48b15nm2d3w3qpzps21czl3gbikadl10sncbzr9wdwn44g4"))))
-    (build-system python-build-system)
+        (base32 "110wg1grhqqgwvlgr98r2k8wxcggpj7lbdwmgkgmi2l7qj1vw3dm"))))
+    (build-system pyproject-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -187,15 +188,13 @@ homeserver and generally help bootstrap the ecosystem.")
                         "and not test_connect_wrapper"))))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)
-       ("python-hyperframe" ,python-hyperframe)
+       ("python-poetry-core" ,python-poetry-core)
        ("python-hypothesis" ,python-hypothesis)
-       ("python-hpack" ,python-hpack)
        ("python-faker" ,python-faker)
        ("python-pytest-aiohttp" ,python-pytest-aiohttp)
        ("python-pytest-asyncio" ,python-pytest-asyncio)
        ("python-aioresponses" ,python-aioresponses)
        ("python-pytest-benchmark" ,python-pytest-benchmark)
-       ("python-toml" ,python-toml)
        ("tests"
         ;; The release on pypi comes without tests.  We can't build from this
         ;; checkout, though, because installation requires an invocation of
@@ -208,13 +207,14 @@ homeserver and generally help bootstrap the ecosystem.")
            (file-name (git-file-name name version))
            (sha256
             (base32
-             "10j8g3ns3v1ghdn262dxg50ayaczdp1hj97pj4ydw02bncqhddpd"))))))
+             "1rd90sk5yygxzvcs4qhzr80bch7d3xszyfjf99pn10xsj10mi752"))))))
     (propagated-inputs
      (list python-aiofiles
            python-aiohttp
            python-aiohttp-socks
            python-atomicwrites
            python-cachetools
+           python-dataclasses
            python-future
            python-h11
            python-h2
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index dc25f7640e..fc3a63c263 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -4,7 +4,6 @@
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
-;;; Copyright © 2023 Aleksandr Vityazev <avityazew@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1366,10 +1365,6 @@ simply plain java objects.")))
        #:test-dir "maven-settings-builder/src/test"
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'add-sisu-shebang
-           (lambda _
-             (substitute* "sisu.sh"
-               (("^## T") "#!/bin/sh\n## T"))))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
@@ -1411,10 +1406,6 @@ inheritance, interpolation, @dots{}")))
              (copy-recursively "src/main/resources"
                                "build/classes")
              #t))
-         (add-after 'unpack 'add-sisu-shebang
-           (lambda _
-             (substitute* "sisu.sh"
-               (("^## T") "#!/bin/sh\n## T"))))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
@@ -1510,10 +1501,6 @@ so really just plain objects.")))
        #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'add-sisu-shebang
-           (lambda _
-             (substitute* "sisu.sh"
-               (("^## T") "#!/bin/sh\n## T"))))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
@@ -1604,10 +1591,6 @@ generally generated from plugin sources using maven-plugin-plugin.")))
          #:tests? #f
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'add-sisu-shebang
-             (lambda _
-               (substitute* "sisu.sh"
-                 (("^## T") "#!/bin/sh\n## T"))))
            (add-before 'configure 'chdir
              (lambda _
                ;; Required for generating components.xml in maven-core
@@ -1839,10 +1822,6 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
        #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'add-sisu-shebang
-           (lambda _
-             (substitute* "sisu.sh"
-               (("^## T") "#!/bin/sh\n## T"))))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
@@ -2424,10 +2403,6 @@ reporting or the build process.")))
       (substitute-keyword-arguments (package-arguments maven-model-builder)
         ((#:phases phases)
          `(modify-phases ,phases
-            (add-after 'unpack 'add-components-shebang
-              (lambda _
-                (substitute* "components.sh"
-                  (("^## T") "#!/bin/sh\n## T"))))
             (add-before 'build 'generate-components.xml
               (lambda _
                 (mkdir-p "build/classes/META-INF/plexus")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 3629d9a6d5..02b0d10c6e 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -2808,6 +2808,7 @@ validating international phone numbers.")
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")
+           itstool
            pkg-config
            protobuf
            xorg-server-for-tests))
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index ce41791672..ab673490fe 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -591,7 +591,7 @@ devices.")
 (define-public fswatch
   (package
     (name "fswatch")
-    (version "1.16.0")
+    (version "1.17.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -600,7 +600,7 @@ devices.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1zsvc8arza2ypnnmv4m0qfpnldmy1zh10q6wss05ibmanslfj2ql"))))
+                "15bk2adv1ycqn3rxvpvapwrlzsxw8fvcahqiglfkibwb9ss7s8dh"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake gettext-minimal libtool))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 9884bc0487..111150ce6b 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -615,7 +615,7 @@ mpdevil loads all tags and covers on demand.")
 (define-public mympd
   (package
     (name "mympd")
-    (version "10.3.2")
+    (version "10.3.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -624,14 +624,17 @@ mpdevil loads all tags and covers on demand.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04mpj0qikdg7nqp8rvwr83bx3544qy2ha0sjj4cnpjknka6p8xan"))))
+                "1n8z3rscrw7k097q5z1d59mrryy7b8m0zdfhi767a1qpa121m8if"))))
     (build-system cmake-build-system)
     (arguments
-     (list #:tests? #f)) ; no test target
-    (native-inputs (list jq perl))
+     (list
+      #:configure-flags
+      #~(list "-DMYMPD_STRIP_BINARY=OFF")  ; handled by 'strip phase
+      #:tests? #f)) ; no test target
+    (native-inputs (list jq perl pkg-config))
     (inputs (list flac libid3tag lua openssl pcre2))
     (home-page "https://jcorporation.github.io/")
     (synopsis "Web-based MPD client")
-    (description "MyMPD is a mobile-friendly web client for the MPD music
-player daemon.")
+    (description "MyMPD is a mobile-friendly web client for the Music Player
+Daemon (MPD).")
     (license license:gpl3+)))
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 3786dc177c..4d2458344f 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -141,7 +141,7 @@ bind processes, and much more.")
 (define-public hwloc-2
   (package
     (inherit hwloc-1)
-    (version "2.9.1")
+    (version "2.9.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.open-mpi.org/release/hwloc/v"
@@ -149,7 +149,7 @@ bind processes, and much more.")
                                   "/hwloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "17jr14a5ns5rpwvy28fy7xqagbvfprsz7wrsjgh5gx7y40d97i3w"))))
+                "1kv0n3b9knb8aawf0hxaxn9wc9bbpwh676r2gmb0pc7qfzvgv1qa"))))
 
     ;; libnuma is no longer needed.
     (inputs (modify-inputs (package-inputs hwloc-1)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 2e7eddafb0..4f0a2d9d1f 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -207,50 +207,50 @@
 (define-public audacious
   (package
     (name "audacious")
-    (version "4.3")
+    (version "4.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://distfiles.audacious-media-player.org/"
                            "audacious-" version ".tar.bz2"))
        (sha256
-        (base32 "14chrsh1dacw5r2qpzw0rhg2lchpbya90y96r6w0vry78p44sn17"))))
+        (base32 "0hi0njnw3q7kngmjk837ynagighrbz8a4wpf8bim2nsh85lf5sc5"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
-             "--disable-gtk")
-       #:tests? #f                      ; no check target
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'unpack-plugins
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((plugins (assoc-ref inputs "audacious-plugins")))
-               (invoke "tar" "xvf" plugins))))
-         (add-after 'unpack-plugins 'configure-plugins
-           (lambda* (#:key configure-flags outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion
-                   (string-append "audacious-plugins-" ,version)
-                 (substitute* "configure"
-                   (("/bin/sh") (which "sh")))
-                 (apply invoke "./configure"
-                        (append configure-flags
-                                ;; audacious-plugins requires audacious to build.
-                                (list (string-append "PKG_CONFIG_PATH="
-                                                     out "/lib/pkgconfig:"
-                                                     (getenv "PKG_CONFIG_PATH"))
-                                      (string-append "--prefix=" out))))))))
-         (add-after 'configure-plugins 'build-plugins
-           (lambda _
-             (with-directory-excursion
-                 (string-append "audacious-plugins-" ,version)
-               (invoke "make" "-j" (number->string (parallel-job-count))))))
-         (add-after 'build-plugins 'install-plugins
-           (lambda _
-             (with-directory-excursion
-                 (string-append "audacious-plugins-" ,version)
-               (invoke "make" "install")))))))
+     (list
+      #:configure-flags
+      #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
+              "--disable-gtk")
+      #:tests? #f                       ; no check target
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'unpack-plugins
+            (lambda* (#:key inputs #:allow-other-keys)
+              (invoke "tar" "xvf"
+                      #$(this-package-native-input "audacious-plugins"))))
+          (add-after 'unpack-plugins 'configure-plugins
+            (lambda* (#:key configure-flags outputs #:allow-other-keys)
+              (with-directory-excursion
+                  (string-append "audacious-plugins-" #$version)
+                (substitute* "configure"
+                  (("/bin/sh") (which "sh")))
+                (apply invoke "./configure"
+                       (append configure-flags
+                               ;; audacious-plugins requires audacious to build.
+                               (list (string-append "PKG_CONFIG_PATH="
+                                                    #$output "/lib/pkgconfig:"
+                                                    (getenv "PKG_CONFIG_PATH"))
+                                     (string-append "--prefix=" #$output)))))))
+          (add-after 'configure-plugins 'build-plugins
+            (lambda _
+              (with-directory-excursion
+                  (string-append "audacious-plugins-" #$version)
+                (invoke "make" "-j" (number->string (parallel-job-count))))))
+          (add-after 'build-plugins 'install-plugins
+            (lambda _
+              (with-directory-excursion
+                  (string-append "audacious-plugins-" #$version)
+                (invoke "make" "install")))))))
     (native-inputs
      `(("audacious-plugins"
         ,(origin
@@ -258,7 +258,7 @@
            (uri (string-append "https://distfiles.audacious-media-player.org/"
                                "audacious-plugins-" version ".tar.bz2"))
            (sha256
-            (base32 "1ilzz2fv0mirlfhzhrcbccv996slj65z1ifibzrx0w5xqk4gcbk6"))))
+            (base32 "19n8zpayakszm00bakfzagbbqci95dxv4h7j9ml2sfjqmzijdsid"))))
        ("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")         ; for gdbus-codegen
        ("pkg-config" ,pkg-config)))
@@ -7048,14 +7048,14 @@ midi devices to JACK midi devices.")
 (define-public opustags
   (package
     (name "opustags")
-    (version "1.6.0")
+    (version "1.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/fmang/opustags")
                     (commit version)))
               (sha256
-               (base32 "1wsfw713rhi2gg5xc04cx5i31hlw0l3wdflj3r1y8w45bdk6ag1z"))
+               (base32 "1f1bj0ng89plivdwpjc8qkfy8nn1kw5gqnbc74scigz7mw9z443i"))
               (file-name (git-file-name name version))))
     (arguments
      (list
@@ -7073,9 +7073,14 @@ midi devices to JACK midi devices.")
                     (perl-exporter-tiny-lib
                       (string-append #$(this-package-native-input "perl-exporter-tiny")
                                      "/lib/perl5/site_perl/"
+                                     #$(package-version perl)))
+                    (perl-test-deep-lib
+                      (string-append #$(this-package-native-input "perl-test-deep")
+                                     "/lib/perl5/site_perl/"
                                      #$(package-version perl))))
                (setenv "PERL5LIB" (string-append perl-list-moreutils-lib ":"
-                                                 perl-exporter-tiny-lib))))))))
+                                                 perl-exporter-tiny-lib ":"
+                                                 perl-test-deep-lib))))))))
     (build-system cmake-build-system)
     (inputs
       (list libogg))
@@ -7084,6 +7089,7 @@ midi devices to JACK midi devices.")
             ffmpeg
             perl-exporter-tiny
             perl-list-moreutils
+            perl-test-deep
             perl-test-harness))
     (synopsis "Ogg Opus tags editor")
     (description "@code{opustags} is an Ogg Opus tag editor.  It reads and edits
@@ -7325,6 +7331,82 @@ the same way, and tries to match each block with one in its brain to play in
 realtime.")
     (license license:gpl2+)))
 
+(define-public le-biniou-data
+  (package
+    (name "le-biniou-data")
+    (version "3.66.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/lebiniou/lebiniou-data")
+                    (commit (string-append "version-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1s8dax6ryfqz7aqq8rj5ipxddshp5mjdvj0mn9kk1zzr55hvkfb7"))))
+    (build-system gnu-build-system)
+    (native-inputs (list autoconf automake libtool))
+    (home-page "https://biniou.net/")
+    (synopsis "Data files for use with Le Biniou")
+    (description
+     "This package contains data files for use with Le Biniou.")
+    (license license:gpl2+)))
+
+(define-public le-biniou
+  (package
+    (name "le-biniou")
+    (version "3.66.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/lebiniou/lebiniou")
+                    (commit (string-append "version-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fvf944i703yd17kkxgja2xyyznb30p006piclz1rmgkhijp0lcp"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags #~(list (string-append "LDFLAGS=-Wl,-rpath="
+                                                    #$output "/lib")
+                                     (string-append
+                                      "LEBINIOU_DATADIR="
+                                      #$(this-package-input "le-biniou-data")))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'patch
+                          (lambda _
+                            (substitute* "src/bulfius_vui.c"
+                              (("xdg-open")
+                               (string-append
+                                #$(this-package-input "xdg-utils")
+                                "/bin/xdg-open"))))))))
+    (native-inputs (list autoconf
+                         automake
+                         libtool
+                         perl ;for pod2man
+                         pkg-config))
+    (inputs (list alsa-lib
+                  curl
+                  ffmpeg
+                  fftw
+                  glib
+                  imagemagick
+                  jack-1
+                  jansson
+                  le-biniou-data
+                  libcaca
+                  libsndfile
+                  pulseaudio
+                  sdl2
+                  ulfius
+                  xdg-utils))
+    (home-page "https://biniou.net/")
+    (synopsis "Audio visualization and VJing tool")
+    (description
+     "Le Biniou is a music visualization & VJing tool.  It creates live
+visuals based on audio performances or existing tracks.")
+    (license license:gpl2+)))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b0cdcdf6a3..587a400d33 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1085,14 +1085,14 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public ndisc6
   (package
     (name "ndisc6")
-    (version "1.0.6")
+    (version "1.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.remlab.net/files/ndisc6/ndisc6-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1yrw8maj1646d498ax8xi0jmzk80idrc5x0913x5rwg1kc7224x7"))))
+                "02b6r4mwqj3kkia3nnqlr5nq8qqg1pg47lirb8d35mqh0pbk3i7d"))))
     (build-system gnu-build-system)
     (home-page "https://www.remlab.net/ndisc6/")
     (synopsis "IPv6 diagnostic tools")
@@ -1667,34 +1667,32 @@ and min/max network usage.")
 (define-public iodine
   (package
     (name "iodine")
-    (version "0.7.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://code.kryo.se/" name "/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd"))))
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://code.kryo.se/iodine/"
+                           "iodine-" version ".tar.gz"))
+       (sha256
+        (base32 "1ihlwxr5xi82gskcdl06qil9q67bcc80p18wm079gxqphv7r4vjl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (delete 'configure)
+         (delete 'configure)            ; no configure script
          (add-before 'build 'fix-ifconfig-path
            ;; This package works only with the net-tools version of ifconfig.
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "src/tun.c"
                (("PATH=[^ ]* ")
-                (string-append (assoc-ref inputs "net-tools") "/bin/")))
-             #t))
+                (string-append (assoc-ref inputs "net-tools") "/bin/")))))
          (add-before 'check 'delete-failing-tests
            ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
            (lambda _
              (substitute* "tests/common.c"
                (("tcase_add_test\\(tc, \
 test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
-                ""))
-             #t)))
+                "")))))
        #:make-flags (list ,(string-append "CC=" (cc-for-target))
                           (string-append "prefix=" (assoc-ref %outputs "out")))
        #:test-target "test"))
@@ -4369,14 +4367,15 @@ stamps.")
 (define-public nbd
   (package
     (name "nbd")
-    (version "3.24")
+    (version "3.25")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "mirror://sourceforge/nbd/nbd/" version
-                            "/nbd-" version ".tar.xz"))
+        (uri (string-append
+              "https://github.com/NetworkBlockDevice/nbd/releases/download/nbd-"
+              version "/nbd-" version ".tar.xz"))
         (sha256
-         (base32 "036ib2d5722sx9nn7jydqfpl5ici5if2z7g8xrskzcx74dniaxv8"))))
+         (base32 "02nxrgq3024g106x9wdyg23f0bj3avrmf3jdb4kckcaprc7zvj7m"))))
     (build-system gnu-build-system)
     (inputs
      (list glib))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index e3dba508f0..9312d34242 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -20,7 +20,8 @@
 ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
 ;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
-;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022, 2023 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2023 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -56,6 +57,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages cpio)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
@@ -731,16 +733,16 @@ high-performance computing} clusters.")
 (define-public nix
   (package
     (name "nix")
-    (version "2.5.1")
+    (version "2.16.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "http://github.com/NixOS/nix")
+             (url "https://github.com/NixOS/nix")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1m8rmv8i6lg83pmalvjlq1fn8mcghn3ngjv3kw1kqsa45ymj5sqq"))
+        (base32 "1rca8ljd33dmvh9bqk6sy1zxk97aawcr6k1f7hlm4d1cd9mrcw7x"))
        (patches
         (search-patches "nix-dont-build-html-doc.diff"))))
     (build-system gnu-build-system)
@@ -757,7 +759,19 @@ high-performance computing} clusters.")
                 (apply invoke "make" "install"
                        (string-append "sysconfdir=" etc)
                        (string-append "profiledir=" etc "/profile.d")
-                       make-flags)))))))
+                       make-flags))))
+          (replace 'check
+            (lambda args
+              ;; A few tests expect the environment variable NIX_STORE to be
+              ;; "/nix/store"
+              (let ((original-NIX_STORE (getenv "NIX_STORE")))
+                (dynamic-wind
+                  (lambda ()
+                    (setenv "NIX_STORE" "/nix/store"))
+                  (lambda ()
+                    (apply (assoc-ref %standard-phases 'check) args))
+                  (lambda ()
+                    (setenv "NIX_STORE" original-NIX_STORE)))))))))
     (native-inputs
      (list autoconf
            autoconf-archive
@@ -767,7 +781,8 @@ high-performance computing} clusters.")
            googletest
            jq
            libtool
-           pkg-config))
+           pkg-config
+           rapidcheck))
     (inputs
      (append (list boost
                    brotli
@@ -779,6 +794,7 @@ high-performance computing} clusters.")
                    libseccomp
                    libsodium
                    lowdown
+                   nlohmann-json
                    openssl
                    sqlite
                    xz
diff --git a/gnu/packages/pantheon.scm b/gnu/packages/pantheon.scm
index acb19a3ef8..1c6795cc1d 100644
--- a/gnu/packages/pantheon.scm
+++ b/gnu/packages/pantheon.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
+;;; Copyright © 2023 Wamm K. D. <jaft.r@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,7 @@
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages package-management)
+  #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
@@ -160,3 +162,26 @@ desktop.")
 on Flathub or another third-party website providing a Flatpak app for
 download.")
     (license license:gpl3+)))
+
+(define-public pantheon-wallpapers
+  (package
+    (name "pantheon-wallpapers")
+    (version "7.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/elementary/wallpapers/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256 (base32
+                       "0km3h52kapbm8ymwxdxasz80qbgzkfni7981pdyf740wjp7linwb"))))
+    (build-system meson-build-system)
+    (native-inputs (list gettext-minimal))  ; for msgfmt
+    (inputs (list libexif))
+    (synopsis "Wallpapers for the Pantheon desktop")
+    (description "This package provides wallpapers for the Pantheon desktop.")
+    (home-page "https://github.com/elementary/wallpapers")
+    (license (list license:cc-by-sa4.0
+                   license:cc0
+                   (license:non-copyleft "https://unsplash.com/license")
+                   (license:non-copyleft "https://www.pexels.com/license/")))))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 74394e1ceb..569e98430c 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -64,14 +64,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20230522")
+    (version "20230622")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "00j2nqy808wd43hgalgry15v4ga1wrfq8s5r1cv18fq20mv6px0s"))
+       (base32 "13i3himpq1gzhn3b0hl8vp34kz950ql9pssw251ad611f2nj8fny"))
       (snippet
        '(begin
           (use-modules (guix build utils))
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index db22f257f1..06e00a69d4 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -209,7 +209,7 @@ human.")
            readline
            yubikey-personalization      ; XC_YUBIKEY
            zlib))
-    (home-page "https://www.keepassxc.org")
+    (home-page "https://keepassxc.org")
     (synopsis "Password manager")
     (description "KeePassXC is a password manager or safe which helps you to
 manage your passwords in a secure way.  You can put all your passwords in one
@@ -531,6 +531,45 @@ them out, at the source.")
 random passwords that pass the checks.")
     (license license:gpl2+)))
 
+(define-public passwdqc
+  (package
+    (name "passwdqc")
+    (version "2.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.openwall.com/passwdqc/passwdqc"
+                                  "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1aq40v5094bhnj86v4i2nmqkybmzzp20q7jb92jgc860cibm07zz"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no tests provided
+      #:make-flags
+      #~(list (string-append "CC=" #$(cc-for-target))
+              (string-append "DESTDIR=" #$output)
+              "BINDIR=/bin"
+              "DEVEL_LIBDIR=/lib"
+              "SHARED_LIBDIR_REL=."
+              "INCLUDEDIR=/include"
+              "MANDIR=/share/man"
+              (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure))))        ;no configure script
+    (inputs (list linux-pam))
+    (home-page "https://www.openwall.com/passwdqc/")
+    (synopsis
+     "Password/passphrase strength checking and policy enforcement toolset")
+    (description
+     "Passwdqc is a password/passphrase strength checking and policy
+enforcement toolset, including an optional PAM module, @code{pam_passwdqc},
+command-line programs (@command{pwqcheck}, @command{pwqfilter}, and
+@command{pwqgen}), and a library, @code{libpasswdqc}.")
+    (license (list license:bsd-3        ;manual pages
+                   license:bsd-1))))    ;code
+
 (define-public assword
   (package
     (name "assword")
@@ -618,6 +657,12 @@ any X11 window.")
                                  "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-"
                                  extension-dir
                                  "}\"\n"))))))
+         (add-before 'install 'patch-program-name
+           ;; Use pass not .pass-real in tmpdir and cmd_usage
+           (lambda _
+             (substitute* "src/password-store.sh"
+               (("^PROGRAM=.*$")
+                "PROGRAM=\"pass\"\n"))))
          (add-before 'install 'patch-passmenu-path
            ;; FIXME Wayland support requires ydotool and dmenu-wl packages
            ;; We are ignoring part of the script that gets executed if
diff --git a/gnu/packages/patches/dezyne-add-missing-shebangs.patch b/gnu/packages/patches/dezyne-add-missing-shebangs.patch
deleted file mode 100644
index bf88e95c8a..0000000000
--- a/gnu/packages/patches/dezyne-add-missing-shebangs.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Upstream status: Taken from upstream development.
-
-From aace425e41247c1dd6b16eb7eabce50be7310d15 Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Mon, 24 Apr 2023 16:58:32 +0200
-Subject: [PATCH] DRAFT test: Add missing shebangs to run scripts.
-
-This fixes `make check' on current ci.guix.gnu.org.
-
-* test/all/parse_import_order/run,
-test/all/parse_locations/run,
-test/all/parse_peg_locations/run: Add #! /bin/sh.
----
- test/all/parse_import_order/run  | 3 ++-
- test/all/parse_locations/run     | 3 ++-
- test/all/parse_peg_locations/run | 3 ++-
- 3 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/test/all/parse_import_order/run b/test/all/parse_import_order/run
-index 6e231de4f9..c383e4f223 100755
---- a/test/all/parse_import_order/run
-+++ b/test/all/parse_import_order/run
-@@ -1,6 +1,7 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
--# Copyright © 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
-diff --git a/test/all/parse_locations/run b/test/all/parse_locations/run
-index 0b092b26dd..6c48ee1392 100755
---- a/test/all/parse_locations/run
-+++ b/test/all/parse_locations/run
-@@ -1,7 +1,8 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
- # Copyright © 2021 Paul Hoogendijk <paul@dezyne.org>
--# Copyright © 2020, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2020, 2021, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
-diff --git a/test/all/parse_peg_locations/run b/test/all/parse_peg_locations/run
-index 5b5ced0bb4..5206a23db6 100755
---- a/test/all/parse_peg_locations/run
-+++ b/test/all/parse_peg_locations/run
-@@ -1,6 +1,7 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
--# Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2020, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
--- 
-2.39.2
-
diff --git a/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch b/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch
new file mode 100644
index 0000000000..cd018da6cc
--- /dev/null
+++ b/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch
@@ -0,0 +1,33 @@
+From f233c46ac7b415104d04e4bb74bd7a0fcf24a333 Mon Sep 17 00:00:00 2001
+From: Olivier Dion <odion@efficios.com>
+Date: Thu, 15 Jun 2023 12:02:08 -0400
+Subject: [PATCH] Fix compatibility with glibc 2.35
+
+Something has change with the visibility of the _r_debug structure in
+glibc 2.35.  See this issue
+<https://github.com/dyninst/dyninst/issues/1282>.
+
+This patch is essentially the upstream fix
+<https://github.com/dyninst/dyninst/commit/273803a4c643ed3506f9a69c6ec71d5ab337489c>
+backported.
+
+Signed-off-by: Olivier Dion <odion@efficios.com>
+---
+ dyninstAPI_RT/src/RTlinux.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c
+index fc231d0a4..2f17ff677 100644
+--- a/dyninstAPI_RT/src/RTlinux.c
++++ b/dyninstAPI_RT/src/RTlinux.c
+@@ -406,7 +406,6 @@ void dyninstTrapHandler(int sig, siginfo_t *sg, ucontext_t *context)
+ #if defined(cap_binary_rewriter)
+ 
+ extern struct r_debug _r_debug;
+-DLLEXPORT struct r_debug _r_debug __attribute__ ((weak));
+ 
+ /* Verify that the r_debug variable is visible */
+ void r_debugCheck() { assert(_r_debug.r_map); }
+-- 
+2.40.1
+
diff --git a/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch b/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch
new file mode 100644
index 0000000000..1a03238246
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch
@@ -0,0 +1,15 @@
+Workaround https://github.com/fuzzylite/fuzzylite/issues/85
+
+diff --git a/fuzzylite/test/BenchmarkTest.cpp b/fuzzylite/test/BenchmarkTest.cpp
+index f868ec29..464d394d 100644
+--- a/fuzzylite/test/BenchmarkTest.cpp
++++ b/fuzzylite/test/BenchmarkTest.cpp
+@@ -30,7 +30,7 @@ namespace fl {
+     }
+ 
+     TEST_CASE("Benchmarks from FLD files", "[benchmark][fld]") {
+-        std::string path = "../../examples/";
++        std::string path = "../examples/";
+         typedef std::pair<std::string, int > Example;
+         std::vector<Example> examples;
+         examples.push_back(Example("mamdani/AllTerms", int(1e4)));
diff --git a/gnu/packages/patches/fuzzylite-soften-float-equality.patch b/gnu/packages/patches/fuzzylite-soften-float-equality.patch
new file mode 100644
index 0000000000..47403605dd
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-soften-float-equality.patch
@@ -0,0 +1,30 @@
+Origin: https://salsa.debian.org/debian/fuzzylite/-/blob/debian/6.0+dfsg-6/debian/patches/when-testing-large-float-numbers-for-equ.patch
+From: Johannes 'josch' Schauer <josch@debian.org>
+Date: Sun, 3 Feb 2019 10:33:22 +0100
+X-Dgit-Generated: 6.0+dfsg-2 80960ae38da9db032dfbfec6405398653e8205ff
+Subject: when testing large float numbers for equality, use a larger epsilon
+
+
+---
+
+--- fuzzylite-6.0+dfsg.orig/fuzzylite/test/BenchmarkTest.cpp
++++ fuzzylite-6.0+dfsg/fuzzylite/test/BenchmarkTest.cpp
+@@ -96,7 +96,17 @@ namespace fl {
+         CHECK(Op::isEq(1.0, Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds)));
+         FL_LOG(Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds));
+ 
+-        CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds)));
++        scalar eps =
++#ifndef __i386__
++            fuzzylite::macheps();
++#else
++            // on i386, due to the 80bit x87 register, double floating point
++            // numbers are handled differently and thus the difference between
++            // 35e9 and the result of Benchmark::convert() will be 2.179e-6,
++            // which is greater than the default epsilon of 1e-6.
++            1e-5;
++#endif
++        CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds), eps));
+         CHECK(Op::isEq(35, Benchmark::convert(35e9, Benchmark::NanoSeconds, Benchmark::Seconds)));
+     }
+ 
diff --git a/gnu/packages/patches/fuzzylite-use-catch2.patch b/gnu/packages/patches/fuzzylite-use-catch2.patch
new file mode 100644
index 0000000000..e4aa13a98b
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-use-catch2.patch
@@ -0,0 +1,184 @@
+Origin: https://salsa.debian.org/debian/fuzzylite/-/blob/debian/6.0+dfsg-6/debian/patches/fix-tests2.patch
+From: Ferdinand Thiessen <rpm@fthiessen.de>
+Date: Mon, 31 Jan 2022 16:06:19 GMT
+Subject: Replace Catch with Catch2 and require C++11 for tests
+Origin: vendor, https://github.com/fuzzylite/fuzzylite/issues/94
+Bug-Debian: http://bugs.debian.org/1017155
+
+--- a/fuzzylite/CMakeLists.txt
++++ b/fuzzylite/CMakeLists.txt
+@@ -194,7 +194,9 @@ if(FL_BUILD_BINARY)
+ endif(FL_BUILD_BINARY)
+ 
+ if(FL_BUILD_TESTS)
++    find_package(Catch2)
+     add_executable(fl-test ${fl-headers} ${fl-tests})
++    target_link_libraries(fl-test Catch2::Catch2)
+     set_target_properties(fl-test PROPERTIES OUTPUT_NAME fuzzylite-tests)
+     set_target_properties(fl-test PROPERTIES OUTPUT_NAME fuzzylite-tests IMPORT_PREFIX tmp-) #To prevent LNK1149 in Windows
+     set_target_properties(fl-test PROPERTIES DEBUG_POSTFIX -debug)
+--- a/fuzzylite/test/activation/ThresholdTest.cpp
++++ b/fuzzylite/test/activation/ThresholdTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/BenchmarkTest.cpp
++++ b/fuzzylite/test/BenchmarkTest.cpp
+@@ -16,7 +16,7 @@
+ 
+ #include "fl/Benchmark.h"
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ #include <vector>
+--- a/fuzzylite/test/hedge/HedgeFunctionTest.cpp
++++ b/fuzzylite/test/hedge/HedgeFunctionTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/imex/FldExporterTest.cpp
++++ b/fuzzylite/test/imex/FldExporterTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/imex/FllImporterTest.cpp
++++ b/fuzzylite/test/imex/FllImporterTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/imex/RScriptExporterTest.cpp
++++ b/fuzzylite/test/imex/RScriptExporterTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ #include <fstream>
+ 
+--- a/fuzzylite/test/MainTest.cpp
++++ b/fuzzylite/test/MainTest.cpp
+@@ -16,7 +16,7 @@
+  
+ #define CATCH_CONFIG_RUNNER
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ 
+ #include "fl/Headers.h"
+ 
+--- a/fuzzylite/test/norm/NormFunctionTest.cpp
++++ b/fuzzylite/test/norm/NormFunctionTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/QuickTest.cpp
++++ b/fuzzylite/test/QuickTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/term/AggregatedTest.cpp
++++ b/fuzzylite/test/term/AggregatedTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/term/DiscreteTest.cpp
++++ b/fuzzylite/test/term/DiscreteTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/term/FunctionTest.cpp
++++ b/fuzzylite/test/term/FunctionTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/term/TrapezoidTest.cpp
++++ b/fuzzylite/test/term/TrapezoidTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/term/TriangleTest.cpp
++++ b/fuzzylite/test/term/TriangleTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ namespace fl {
+--- a/fuzzylite/test/variable/VariableTest.cpp
++++ b/fuzzylite/test/variable/VariableTest.cpp
+@@ -14,7 +14,7 @@
+  fuzzylite is a registered trademark of FuzzyLite Limited.
+  */
+ 
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ 
+ #include <algorithm>    // std::random_shuffle
diff --git a/gnu/packages/patches/git-header-cmd.patch b/gnu/packages/patches/git-header-cmd.patch
deleted file mode 100644
index a8964ab174..0000000000
--- a/gnu/packages/patches/git-header-cmd.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-Add a '--header-cmd' to git send-email.
-
-Upstream status can be tracked at:
-https://lore.kernel.org/git/20230423122744.4865-1-maxim.cournoyer@gmail.com/T/#t
-
-diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
-index 51da7088a8..92a9ebe98c 100644
---- a/Documentation/config/sendemail.txt
-+++ b/Documentation/config/sendemail.txt
-@@ -61,6 +61,7 @@ sendemail.ccCmd::
- sendemail.chainReplyTo::
- sendemail.envelopeSender::
- sendemail.from::
-+sendemail.headerCmd::
- sendemail.signedoffbycc::
- sendemail.smtpPass::
- sendemail.suppresscc::
-diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
-index b0f438ec99..4d2ae061f9 100644
---- a/Documentation/git-send-email.txt
-+++ b/Documentation/git-send-email.txt
-@@ -320,6 +320,17 @@ Automating
- 	Output of this command must be single email address per line.
- 	Default is the value of `sendemail.ccCmd` configuration value.
- 
-+--header-cmd=<command>::
-+	Specify a command that is executed once per outgoing message
-+	and output RFC 2822 style header lines to be inserted into
-+	them. When the `sendemail.headerCmd` configuration variable is
-+	set, its value is always used. When --header-cmd is provided
-+	at the command line, its value takes precedence over the
-+	`sendemail.headerCmd` configuration variable.
-+
-+--no-header-cmd::
-+	Disable any header command in use.
-+
- --[no-]chain-reply-to::
- 	If this is set, each email will be sent as a reply to the previous
- 	email sent.  If disabled with "--no-chain-reply-to", all emails after
-diff --git a/git-send-email.perl b/git-send-email.perl
-index 66c9171109..22a64e608f 100755
---- a/git-send-email.perl
-+++ b/git-send-email.perl
-@@ -87,8 +87,10 @@ sub usage {
- 
-   Automating:
-     --identity              <str>  * Use the sendemail.<id> options.
--    --to-cmd                <str>  * Email To: via `<str> \$patch_path`
--    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`
-+    --to-cmd                <str>  * Email To: via `<str> \$patch_path`.
-+    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`.
-+    --header-cmd            <str>  * Add headers via `<str> \$patch_path`.
-+    --no-header-cmd                * Disable any header command in use.
-     --suppress-cc           <str>  * author, self, sob, cc, cccmd, body, bodycc, misc-by, all.
-     --[no-]cc-cover                * Email Cc: addresses in the cover letter.
-     --[no-]to-cover                * Email To: addresses in the cover letter.
-@@ -202,7 +204,7 @@ sub format_2822_time {
- 	$author,$sender,$smtp_authpass,$annotate,$compose,$time);
- # Things we either get from config, *or* are overridden on the
- # command-line.
--my ($no_cc, $no_to, $no_bcc, $no_identity);
-+my ($no_cc, $no_to, $no_bcc, $no_identity, $no_header_cmd);
- my (@config_to, @getopt_to);
- my (@config_cc, @getopt_cc);
- my (@config_bcc, @getopt_bcc);
-@@ -269,7 +271,7 @@ sub do_edit {
- # Variables with corresponding config settings
- my ($suppress_from, $signed_off_by_cc);
- my ($cover_cc, $cover_to);
--my ($to_cmd, $cc_cmd);
-+my ($to_cmd, $cc_cmd, $header_cmd);
- my ($smtp_server, $smtp_server_port, @smtp_server_options);
- my ($smtp_authuser, $smtp_encryption, $smtp_ssl_cert_path);
- my ($batch_size, $relogin_delay);
-@@ -318,6 +320,7 @@ sub do_edit {
-     "tocmd" => \$to_cmd,
-     "cc" => \@config_cc,
-     "cccmd" => \$cc_cmd,
-+    "headercmd" => \$header_cmd,
-     "aliasfiletype" => \$aliasfiletype,
-     "bcc" => \@config_bcc,
-     "suppresscc" => \@suppress_cc,
-@@ -519,6 +522,8 @@ sub config_regexp {
- 		    "compose" => \$compose,
- 		    "quiet" => \$quiet,
- 		    "cc-cmd=s" => \$cc_cmd,
-+		    "header-cmd=s" => \$header_cmd,
-+		    "no-header-cmd" => \$no_header_cmd,
- 		    "suppress-from!" => \$suppress_from,
- 		    "no-suppress-from" => sub {$suppress_from = 0},
- 		    "suppress-cc=s" => \@suppress_cc,
-@@ -1780,16 +1785,16 @@ sub process_file {
- 	$subject = $initial_subject;
- 	$message = "";
- 	$message_num++;
--	# First unfold multiline header fields
-+	# Retrieve and unfold header fields.
-+	my @header_lines = ();
- 	while(<$fh>) {
- 		last if /^\s*$/;
--		if (/^\s+\S/ and @header) {
--			chomp($header[$#header]);
--			s/^\s+/ /;
--			$header[$#header] .= $_;
--	    } else {
--			push(@header, $_);
--		}
-+		push(@header_lines, $_);
-+	}
-+	@header = unfold_headers(@header_lines);
-+	# Add computed headers, if applicable.
-+	unless ($no_header_cmd || ! $header_cmd) {
-+		push @header, invoke_header_cmd($header_cmd, $t);
- 	}
- 	# Now parse the header
- 	foreach(@header) {
-@@ -2021,15 +2026,63 @@ sub process_file {
- 	}
- }
- 
-+# Execute a command and return its output lines as an array.  Blank
-+# lines which do not appear at the end of the output are reported as
-+# errors.
-+sub execute_cmd {
-+	my ($prefix, $cmd, $file) = @_;
-+	my @lines = ();
-+	my $seen_blank_line = 0;
-+	open my $fh, "-|", "$cmd \Q$file\E"
-+		or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
-+	while (my $line = <$fh>) {
-+		die sprintf(__("(%s) Malformed output from '%s'"), $prefix, $cmd)
-+		    if $seen_blank_line;
-+		if ($line =~ /^$/) {
-+			$seen_blank_line = $line =~ /^$/;
-+			next;
-+		}
-+		push @lines, $line;
-+	}
-+	close $fh
-+	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
-+	return @lines;
-+}
-+
-+# Process headers lines, unfolding multiline headers as defined by RFC
-+# 2822.
-+sub unfold_headers {
-+	my @headers;
-+	foreach(@_) {
-+		last if /^\s*$/;
-+		if (/^\s+\S/ and @headers) {
-+			chomp($headers[$#headers]);
-+			s/^\s+/ /;
-+			$headers[$#headers] .= $_;
-+		} else {
-+			push(@headers, $_);
-+		}
-+	}
-+	return @headers;
-+}
-+
-+# Invoke the provided CMD with FILE as an argument, which should
-+# output RFC 2822 email headers. Fold multiline headers and return the
-+# headers as an array.
-+sub invoke_header_cmd {
-+	my ($cmd, $file) = @_;
-+	my @lines = execute_cmd("header-cmd", $header_cmd, $file);
-+	return unfold_headers(@lines);
-+}
-+
- # Execute a command (e.g. $to_cmd) to get a list of email addresses
- # and return a results array
- sub recipients_cmd {
- 	my ($prefix, $what, $cmd, $file) = @_;
--
-+	my @lines = ();
- 	my @addresses = ();
--	open my $fh, "-|", "$cmd \Q$file\E"
--	    or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
--	while (my $address = <$fh>) {
-+	@lines = execute_cmd($prefix, $cmd, $file);
-+	for my $address (@lines) {
- 		$address =~ s/^\s*//g;
- 		$address =~ s/\s*$//g;
- 		$address = sanitize_address($address);
-@@ -2038,8 +2091,6 @@ sub recipients_cmd {
- 		printf(__("(%s) Adding %s: %s from: '%s'\n"),
- 		       $prefix, $what, $address, $cmd) unless $quiet;
- 		}
--	close $fh
--	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
- 	return @addresses;
- }
- 
-diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
-index 6520346246..6519eea1ed 100755
---- a/t/t9001-send-email.sh
-+++ b/t/t9001-send-email.sh
-@@ -374,13 +374,16 @@ test_expect_success $PREREQ,!AUTOIDENT 'broken implicit ident aborts send-email'
- 	)
- '
- 
--test_expect_success $PREREQ 'setup tocmd and cccmd scripts' '
-+test_expect_success $PREREQ 'setup cmd scripts' '
- 	write_script tocmd-sed <<-\EOF &&
- 	sed -n -e "s/^tocmd--//p" "$1"
- 	EOF
--	write_script cccmd-sed <<-\EOF
-+	write_script cccmd-sed <<-\EOF &&
- 	sed -n -e "s/^cccmd--//p" "$1"
- 	EOF
-+	write_script headercmd-sed <<-\EOF
-+	sed -n -e "s/^headercmd--//p" "$1"
-+	EOF
- '
- 
- test_expect_success $PREREQ 'tocmd works' '
-@@ -410,6 +413,70 @@ test_expect_success $PREREQ 'cccmd works' '
- 	grep "^	cccmd@example.com" msgtxt1
- '
- 
-+test_expect_success $PREREQ 'headercmd works' '
-+	clean_fake_sendmail &&
-+	cp $patches headercmd.patch &&
-+	echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
-+	git send-email \
-+		--from="Example <nobody@example.com>" \
-+		--to=nobody@example.com \
-+		--header-cmd=./headercmd-sed \
-+		--smtp-server="$(pwd)/fake.sendmail" \
-+		headercmd.patch \
-+		&&
-+	grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
-+'
-+
-+test_expect_success $PREREQ '--no-header-cmd works' '
-+	clean_fake_sendmail &&
-+	cp $patches headercmd.patch &&
-+	echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
-+	git send-email \
-+		--from="Example <nobody@example.com>" \
-+		--to=nobody@example.com \
-+		--header-cmd=./headercmd-sed \
-+                --no-header-cmd \
-+		--smtp-server="$(pwd)/fake.sendmail" \
-+		headercmd.patch \
-+		&&
-+	! grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
-+'
-+
-+test_expect_success $PREREQ 'multiline fields are correctly unfolded' '
-+	clean_fake_sendmail &&
-+	cp $patches headercmd.patch &&
-+	write_script headercmd-multiline <<-\EOF &&
-+	echo "X-Debbugs-CC: someone@example.com
-+FoldedField: This is a tale
-+ best told using
-+ multiple lines."
-+	EOF
-+	git send-email \
-+		--from="Example <nobody@example.com>" \
-+		--to=nobody@example.com \
-+		--header-cmd=./headercmd-multiline \
-+		--smtp-server="$(pwd)/fake.sendmail" \
-+		headercmd.patch &&
-+	grep "^FoldedField: This is a tale best told using multiple lines.$" msgtxt1
-+'
-+
-+# Blank lines in the middle of the output of a command are invalid.
-+test_expect_success $PREREQ 'malform output reported on blank lines in command output' '
-+	clean_fake_sendmail &&
-+	cp $patches headercmd.patch &&
-+	write_script headercmd-malformed-output <<-\EOF &&
-+	echo "X-Debbugs-CC: someone@example.com
-+
-+SomeOtherField: someone-else@example.com"
-+	EOF
-+	! git send-email \
-+		--from="Example <nobody@example.com>" \
-+		--to=nobody@example.com \
-+		--header-cmd=./headercmd-malformed-output \
-+		--smtp-server="$(pwd)/fake.sendmail" \
-+		headercmd.patch
-+'
-+
- test_expect_success $PREREQ 'reject long lines' '
- 	z8=zzzzzzzz &&
- 	z64=$z8$z8$z8$z8$z8$z8$z8$z8 &&
diff --git a/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch b/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch
new file mode 100644
index 0000000000..131fea28fc
--- /dev/null
+++ b/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch
@@ -0,0 +1,505 @@
+diff --git a/lib/igt_aux.c b/lib/igt_aux.c
+index 672d7d4b0..4c24b0928 100644
+--- a/lib/igt_aux.c
++++ b/lib/igt_aux.c
+@@ -52,8 +52,16 @@
+ #include <assert.h>
+ #include <grp.h>
+ 
+-#include <proc/readproc.h>
+-#include <libudev.h>
++#ifdef HAVE_LIBPROCPS
++#  include <proc/readproc.h>
++#else
++#  include <libproc2/pids.h>
++#endif
++
++#include <dirent.h>
++#ifdef __linux__
++#  include <libudev.h>
++#endif
+ 
+ #include "drmtest.h"
+ #include "i915_drm.h"
+@@ -1217,6 +1225,7 @@ void igt_unlock_mem(void)
+  */
+ int igt_is_process_running(const char *comm)
+ {
++#if HAVE_LIBPROCPS
+ 	PROCTAB *proc;
+ 	proc_t *proc_info;
+ 	bool found = false;
+@@ -1235,6 +1244,26 @@ int igt_is_process_running(const char *comm)
+ 
+ 	closeproc(proc);
+ 	return found;
++#else
++	enum pids_item Item[] = { PIDS_CMD };
++	struct pids_info *info = NULL;
++	struct pids_stack *stack;
++	char *pid_comm;
++	bool found = false;
++
++	if (procps_pids_new(&info, Item, 1) < 0)
++		return false;
++	while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++		pid_comm = PIDS_VAL(0, str, stack, info);
++		if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) {
++			found = true;
++			break;
++		}
++	}
++
++	procps_pids_unref(&info);
++	return found;
++#endif
+ }
+ 
+ /**
+@@ -1251,6 +1280,7 @@ int igt_is_process_running(const char *comm)
+  */
+ int igt_terminate_process(int sig, const char *comm)
+ {
++#if HAVE_LIBPROCPS
+ 	PROCTAB *proc;
+ 	proc_t *proc_info;
+ 	int err = 0;
+@@ -1272,6 +1302,28 @@ int igt_terminate_process(int sig, const char *comm)
+ 
+ 	closeproc(proc);
+ 	return err;
++#else
++	enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++	struct pids_info *info = NULL;
++	struct pids_stack *stack;
++	char *pid_comm;
++	int pid;
++	int err = 0;
++
++	if (procps_pids_new(&info, Items, 2) < 0)
++		return -errno;
++	while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++		pid = PIDS_VAL(0, s_int, stack, info);
++		pid_comm = PIDS_VAL(1, str, stack, info);
++		if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) {
++			if (kill(pid, sig) < 0)
++				err = -errno;
++			break;
++		}
++	}
++	procps_pids_unref(&info);
++	return err;
++#endif
+ }
+ 
+ struct pinfo {
+@@ -1341,9 +1393,9 @@ igt_show_stat_header(void)
+ }
+ 
+ static void
+-igt_show_stat(proc_t *info, int *state, const char *fn)
++igt_show_stat(const pid_t tid, const char *cmd, int *state, const char *fn)
+ {
+-	struct pinfo p = { .pid = info->tid, .comm = info->cmd, .fn = fn };
++	struct pinfo p = { .pid = tid, .comm = cmd, .fn = fn };
+ 
+ 	if (!*state)
+ 		igt_show_stat_header();
+@@ -1353,7 +1405,7 @@ igt_show_stat(proc_t *info, int *state, const char *fn)
+ }
+ 
+ static void
+-__igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir)
++__igt_lsof_fds(const pid_t tid, const char *cmd, int *state, char *proc_path, const char *dir)
+ {
+ 	struct dirent *d;
+ 	struct stat st;
+@@ -1400,7 +1452,7 @@ again:
+ 		dirn = dirname(copy_fd_lnk);
+ 
+ 		if (!strncmp(dir, dirn, strlen(dir)))
+-			igt_show_stat(proc_info, state, fd_lnk);
++			igt_show_stat(tid, cmd, state, fd_lnk);
+ 
+ 		free(copy_fd_lnk);
+ 		free(fd_lnk);
+@@ -1416,13 +1468,13 @@ again:
+ static void
+ __igt_lsof(const char *dir)
+ {
+-	PROCTAB *proc;
+-	proc_t *proc_info;
+-
+ 	char path[30];
+ 	char *name_lnk;
+ 	struct stat st;
+ 	int state = 0;
++#ifdef HAVE_LIBPROCPS
++	PROCTAB *proc;
++	proc_t *proc_info;
+ 
+ 	proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ 	igt_assert(proc != NULL);
+@@ -1443,19 +1495,56 @@ __igt_lsof(const char *dir)
+ 		name_lnk[read] = '\0';
+ 
+ 		if (!strncmp(dir, name_lnk, strlen(dir)))
+-			igt_show_stat(proc_info, &state, name_lnk);
++			igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk);
+ 
+ 		/* check also fd, seems that lsof(8) doesn't look here */
+ 		memset(path, 0, sizeof(path));
+ 		snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid);
+ 
+-		__igt_lsof_fds(proc_info, &state, path, dir);
++		__igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir);
+ 
+ 		free(name_lnk);
+ 		freeproc(proc_info);
+ 	}
+ 
+ 	closeproc(proc);
++#else
++	enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++	struct pids_info *info = NULL;
++	struct pids_stack *stack;
++
++	if (procps_pids_new(&info, Items, 2) < 0)
++		return;
++	while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++		ssize_t read;
++		int tid = PIDS_VAL(0, s_int, stack, info);
++		char *pid_comm = PIDS_VAL(1, str, stack, info);
++
++		/* check current working directory */
++		memset(path, 0, sizeof(path));
++		snprintf(path, sizeof(path), "/proc/%d/cwd", tid);
++
++		if (stat(path, &st) == -1)
++			continue;
++
++		name_lnk = malloc(st.st_size + 1);
++
++		igt_assert((read = readlink(path, name_lnk, st.st_size + 1)));
++		name_lnk[read] = '\0';
++
++		if (!strncmp(dir, name_lnk, strlen(dir)))
++			igt_show_stat(tid, pid_comm, &state, name_lnk);
++
++		/* check also fd, seems that lsof(8) doesn't look here */
++		memset(path, 0, sizeof(path));
++		snprintf(path, sizeof(path), "/proc/%d/fd", tid);
++
++		__igt_lsof_fds(tid, pid_comm, &state, path, dir);
++
++		free(name_lnk);
++	}
++	procps_pids_unref(&info);
++#endif
+ }
+ 
+ /**
+@@ -1490,7 +1579,7 @@ igt_lsof(const char *dpath)
+ 	free(sanitized);
+ }
+ 
+-static void pulseaudio_unload_module(proc_t *proc_info)
++static void pulseaudio_unload_module(const uid_t euid, const gid_t egid)
+ {
+ 	struct igt_helper_process pa_proc = {};
+ 	char xdg_dir[PATH_MAX];
+@@ -1498,14 +1587,14 @@ static void pulseaudio_unload_module(proc_t *proc_info)
+ 	struct passwd *pw;
+ 
+ 	igt_fork_helper(&pa_proc) {
+-		pw = getpwuid(proc_info->euid);
++		pw = getpwuid(euid);
+ 		homedir = pw->pw_dir;
+-		snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid);
++		snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid);
+ 
+ 		igt_info("Request pulseaudio to stop using audio device\n");
+ 
+-		setgid(proc_info->egid);
+-		setuid(proc_info->euid);
++		setgid(egid);
++		setuid(euid);
+ 		clearenv();
+ 		setenv("HOME", homedir, 1);
+ 		setenv("XDG_RUNTIME_DIR",xdg_dir, 1);
+@@ -1524,10 +1613,13 @@ static void pipewire_reserve_wait(void)
+ 	char xdg_dir[PATH_MAX];
+ 	const char *homedir;
+ 	struct passwd *pw;
+-	proc_t *proc_info;
+-	PROCTAB *proc;
++	int tid = 0, euid, egid;
+ 
++#ifdef HAVE_LIBPROCPS
+ 	igt_fork_helper(&pw_reserve_proc) {
++		proc_t *proc_info;
++		PROCTAB *proc;
++
+ 		igt_info("Preventing pipewire-pulse to use the audio drivers\n");
+ 
+ 		proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+@@ -1540,19 +1632,45 @@ static void pipewire_reserve_wait(void)
+ 		}
+ 		closeproc(proc);
+ 
++		tid = proc_info->tid;
++		euid = proc_info->euid;
++		egid = proc_info->egid;
++		freeproc(proc_info);
++#else
++	igt_fork_helper(&pw_reserve_proc) {
++		enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID };
++		enum rel_items { EU_PID, EU_EUID, EU_EGID };
++		struct pids_info *info = NULL;
++		struct pids_stack *stack;
++
++		igt_info("Preventing pipewire-pulse to use the audio drivers\n");
++
++		if (procps_pids_new(&info, Items, 3) < 0) {
++			igt_info("error getting pids: %d\n", errno);
++			exit(errno);
++		}
++		while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++			tid = PIDS_VAL(EU_PID, s_int, stack, info);
++			if (pipewire_pulse_pid == tid)
++				break;
++		}
++		euid = PIDS_VAL(EU_EUID, s_int, stack, info);
++		egid = PIDS_VAL(EU_EGID, s_int, stack, info);
++		procps_pids_unref(&info);
++#endif
++
+ 		/* Sanity check: if it can't find the process, it means it has gone */
+-		if (pipewire_pulse_pid != proc_info->tid)
++		if (pipewire_pulse_pid != tid)
+ 			exit(0);
+ 
+-		pw = getpwuid(proc_info->euid);
++		pw = getpwuid(euid);
+ 		homedir = pw->pw_dir;
+-		snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid);
+-		setgid(proc_info->egid);
+-		setuid(proc_info->euid);
++		snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid);
++		setgid(egid);
++		setuid(euid);
+ 		clearenv();
+ 		setenv("HOME", homedir, 1);
+ 		setenv("XDG_RUNTIME_DIR",xdg_dir, 1);
+-		freeproc(proc_info);
+ 
+ 		/*
+ 		 * pw-reserve will run in background. It will only exit when
+@@ -1570,9 +1688,7 @@ static void pipewire_reserve_wait(void)
+ int pipewire_pulse_start_reserve(void)
+ {
+ 	bool is_pw_reserve_running = false;
+-	proc_t *proc_info;
+ 	int attempts = 0;
+-	PROCTAB *proc;
+ 
+ 	if (!pipewire_pulse_pid)
+ 		return 0;
+@@ -1584,6 +1700,10 @@ int pipewire_pulse_start_reserve(void)
+ 	 * pipewire version 0.3.50 or upper.
+ 	 */
+ 	for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) {
++#ifdef HAVE_LIBPROCPS
++		PROCTAB *proc;
++		proc_t *proc_info;
++
+ 		usleep(1000);
+ 		proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ 		igt_assert(proc != NULL);
+@@ -1598,6 +1718,24 @@ int pipewire_pulse_start_reserve(void)
+ 			freeproc(proc_info);
+ 		}
+ 		closeproc(proc);
++#else
++		enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++		struct pids_info *info = NULL;
++		struct pids_stack *stack;
++
++		usleep(1000);
++
++		if (procps_pids_new(&info, Items, 2) < 0)
++			return 1;
++		while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++			if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) {
++				is_pw_reserve_running = true;
++				pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info);
++				break;
++			}
++		}
++		procps_pids_unref(&info);
++#endif
+ 		if (is_pw_reserve_running)
+ 			break;
+ 	}
+@@ -1645,7 +1783,7 @@ void pipewire_pulse_stop_reserve(void)
+  * If the check fails, it means that the process can simply be killed.
+  */
+ static int
+-__igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
++__igt_lsof_audio_and_kill_proc(const pid_t tid, const char *cmd, const uid_t euid, const gid_t egid, char *proc_path)
+ {
+ 	const char *audio_dev = "/dev/snd/";
+ 	char path[PATH_MAX * 2];
+@@ -1670,10 +1808,10 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ 	 * 2) unload/unbind the the audio driver(s);
+ 	 * 3) stop the pw-reserve thread.
+ 	 */
+-	if (!strcmp(proc_info->cmd, "pipewire-pulse")) {
++	if (!strcmp(cmd, "pipewire-pulse")) {
+ 		igt_info("process %d (%s) is using audio device. Should be requested to stop using them.\n",
+-			 proc_info->tid, proc_info->cmd);
+-		pipewire_pulse_pid = proc_info->tid;
++			 tid, cmd);
++		pipewire_pulse_pid = tid;
+ 		return 0;
+ 	}
+ 	/*
+@@ -1685,9 +1823,9 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ 	 * will respawn them. So, just ignore here, they'll honor pw-reserve,
+ 	 * when the time comes.
+ 	 */
+-	if (!strcmp(proc_info->cmd, "pipewire-media-session"))
++	if (!strcmp(cmd, "pipewire-media-session"))
+ 		return 0;
+-	if (!strcmp(proc_info->cmd, "wireplumber"))
++	if (!strcmp(cmd, "wireplumber"))
+ 		return 0;
+ 
+ 	dp = opendir(proc_path);
+@@ -1723,22 +1861,22 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ 		 * enough to unbind audio modules and won't cause race issues
+ 		 * with systemd trying to reload it.
+ 		 */
+-		if (!strcmp(proc_info->cmd, "pulseaudio")) {
+-			pulseaudio_unload_module(proc_info);
++		if (!strcmp(cmd, "pulseaudio")) {
++			pulseaudio_unload_module(euid, egid);
+ 			break;
+ 		}
+ 
+ 		/* For all other processes, just kill them */
+ 		igt_info("process %d (%s) is using audio device. Should be terminated.\n",
+-				proc_info->tid, proc_info->cmd);
++				tid, cmd);
+ 
+-		if (kill(proc_info->tid, SIGTERM) < 0) {
++		if (kill(tid, SIGTERM) < 0) {
+ 			igt_info("Fail to terminate %s (pid: %d) with SIGTERM\n",
+-				proc_info->cmd, proc_info->tid);
+-			if (kill(proc_info->tid, SIGABRT) < 0) {
++				cmd, tid);
++			if (kill(tid, SIGABRT) < 0) {
+ 				fail++;
+ 				igt_info("Fail to terminate %s (pid: %d) with SIGABRT\n",
+-					proc_info->cmd, proc_info->tid);
++					cmd, tid);
+ 			}
+ 		}
+ 
+@@ -1760,23 +1898,47 @@ int
+ igt_lsof_kill_audio_processes(void)
+ {
+ 	char path[PATH_MAX];
++	int fail = 0;
++
++#ifdef HAVE_LIBPROCPS
+ 	proc_t *proc_info;
+ 	PROCTAB *proc;
+-	int fail = 0;
+ 
+ 	proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ 	igt_assert(proc != NULL);
+ 	pipewire_pulse_pid = 0;
+-
+ 	while ((proc_info = readproc(proc, NULL))) {
+ 		if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1)
+ 			fail++;
+ 		else
+-			fail += __igt_lsof_audio_and_kill_proc(proc_info, path);
++			fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path);
+ 
+ 		freeproc(proc_info);
+ 	}
+ 	closeproc(proc);
++#else
++	enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID };
++	enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID };
++	struct pids_info *info = NULL;
++	struct pids_stack *stack;
++	pid_t tid;
++
++	if (procps_pids_new(&info, Items, 4) < 0)
++		return 1;
++	while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++		tid = PIDS_VAL(EU_PID, s_int, stack, info);
++
++		if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1)
++			fail++;
++		else
++			fail += __igt_lsof_audio_and_kill_proc(tid,
++				PIDS_VAL(EU_CMD, str, stack, info),
++				PIDS_VAL(EU_EUID, s_int, stack, info),
++				PIDS_VAL(EU_EGID, s_int, stack, info),
++				path);
++	}
++	procps_pids_unref(&info);
++#endif
+ 
+ 	return fail;
+ }
+diff --git a/lib/meson.build b/lib/meson.build
+index 85f100f75..55efdc83b 100644
+--- a/lib/meson.build
++++ b/lib/meson.build
+@@ -114,7 +114,6 @@ lib_deps = [
+ 	libdrm,
+ 	libdw,
+ 	libkmod,
+-	libprocps,
+ 	libudev,
+ 	math,
+ 	pciaccess,
+@@ -178,6 +177,12 @@ if chamelium.found()
+ 	lib_sources += 'monitor_edids/monitor_edids_helper.c'
+ endif
+ 
++if libprocps.found()
++	lib_deps += libprocps
++else
++	lib_deps += libproc2
++endif
++
+ if get_option('srcdir') != ''
+     srcdir = join_paths(get_option('srcdir'), 'tests')
+ else
+diff --git a/meson.build b/meson.build
+index 1c872cc9c..0487158dc 100644
+--- a/meson.build
++++ b/meson.build
+@@ -125,7 +125,15 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info)
+ 
+ pciaccess = dependency('pciaccess', version : '>=0.10')
+ libkmod = dependency('libkmod')
+-libprocps = dependency('libprocps', required : true)
++libprocps = dependency('libprocps', required : false)
++libproc2 = dependency('libproc2', required : false)
++if libprocps.found()
++  config.set('HAVE_LIBPROCPS', 1)
++elif libproc2.found()
++  config.set('HAVE_LIBPROC2', 1)
++else
++  error('Either libprocps or libproc2 is required')
++endif
+ 
+ libunwind = dependency('libunwind', required : get_option('libunwind'))
+ build_info += 'With libunwind: @0@'.format(libunwind.found())
diff --git a/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch b/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch
new file mode 100644
index 0000000000..371cbfe202
--- /dev/null
+++ b/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch
@@ -0,0 +1,72 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Thu, 31 Mar 2022 17:02:00 +0200
+Subject: Make openjdk use libxcursor directly
+
+Fixes <https://issues.guix.gnu.org/54654>.
+
+This patch makes openjdk use libxcursor directly.
+Without it, libx11 would try to dlopen("libXcursor.so.1") and fail.
+
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk	2022-03-31 15:34:08.773419480 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk	2022-03-31 21:36:27.854273411 +0200
+@@ -217,7 +217,7 @@
+       endif
+     endif
+ 
+-    LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(SPEECHD_LIBS) $(LIBDL) -lXtst -lXi -ljava -ljvm
++    LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXcursor -lXrender $(SPEECHD_LIBS) $(LIBDL) -lXtst -lXi -ljava -ljvm
+ 
+     ifeq ($(call isTargetOs, linux), true)
+       LIBAWT_XAWT_LIBS += -lpthread
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c	2022-03-31 15:34:11.917502206 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c	2022-03-31 21:38:16.417253535 +0200
+@@ -40,10 +40,12 @@
+ #include <X11/keysym.h>
+ #include <X11/Sunkeysym.h>
+ #include <X11/Xlib.h>
++#include <X11/Xlibint.h>
+ #include <X11/Xatom.h>
+ #include <X11/XKBlib.h>
+ #include <X11/Xos.h>
+ #include <X11/Xutil.h>
++#include <X11/Xcursor/Xcursor.h>
+ 
+ #if defined(AIX)
+ #undef X_HAVE_UTF8_STRING
+@@ -972,10 +974,21 @@
+ 
+ }
+ 
++static XColor _Xconst foreground = { 0,    0,     0,     0  };  /* black */
++static XColor _Xconst background = { 0, 65535, 65535, 65535 };  /* white */
++
+ JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XCreateFontCursor
+ (JNIEnv *env, jclass clazz, jlong display, jint shape) {
+     AWT_CHECK_HAVE_LOCK_RETURN(0);
+-    return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape);
++    Display * dpy = (Display *) jlong_to_ptr(display);
++    if (dpy->cursor_font == None) {
++        dpy->cursor_font = XLoadFont(dpy, "cursor");
++        if (dpy->cursor_font == None) return None;
++    }
++    Cursor result = XcursorTryShapeCursor(dpy, dpy->cursor_font, dpy->cursor_font, (int) shape, (int) shape + 1, &foreground, &background);
++    if (!result)
++        result = XCreateFontCursor(dpy, (int) shape);
++    return result;
+ }
+ 
+ /*
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix	2022-03-31 15:34:10.553466316 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix	2022-03-31 21:36:27.854273411 +0200
+@@ -31,7 +31,7 @@
+ 
+ J_INC =		$(TESTJAVA)/include
+ INCLUDES =	-I$(J_INC) -I$(J_INC)/$(SYST) -I.
+-LIBS =		-L$(TESTJAVA)/lib -ljawt -lX11
++LIBS =		-L$(TESTJAVA)/lib -ljawt -lX11 -lXcursor
+ 
+ all:		$(CLASSES) libmylib.so
+ 
diff --git a/gnu/packages/patches/lightdm-vnc-ipv6.patch b/gnu/packages/patches/lightdm-vnc-ipv6.patch
new file mode 100644
index 0000000000..68e4363d3e
--- /dev/null
+++ b/gnu/packages/patches/lightdm-vnc-ipv6.patch
@@ -0,0 +1,48 @@
+Submitted upstream: https://github.com/canonical/lightdm/pull/312
+
+diff --git a/src/vnc-server.c b/src/vnc-server.c
+index d3500764..00a2fc02 100644
+--- a/src/vnc-server.c
++++ b/src/vnc-server.c
+@@ -126,18 +126,10 @@ vnc_server_start (VNCServer *server)
+ 
+     g_return_val_if_fail (server != NULL, FALSE);
+ 
+-    g_autoptr(GError) ipv4_error = NULL;
+-    priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, priv->port, priv->listen_address, &ipv4_error);
+-    if (ipv4_error)
+-        g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
+-
+-    if (priv->socket)
+-    {
+-        GSource *source = g_socket_create_source (priv->socket, G_IO_IN, NULL);
+-        g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
+-        g_source_attach (source, NULL);
+-    }
+-
++    // Bind to IPv6 first, as this implies binding to 0.0.0.0 in the
++    // Linux kernel default configuration, which would otherwise cause
++    // IPv6 clients to fail with "Error binding to address [::]:5900:
++    // Address already in use" (#266).
+     g_autoptr(GError) ipv6_error = NULL;
+     priv->socket6 = open_tcp_socket (G_SOCKET_FAMILY_IPV6, priv->port, priv->listen_address, &ipv6_error);
+     if (ipv6_error)
+@@ -150,6 +142,18 @@ vnc_server_start (VNCServer *server)
+         g_source_attach (source, NULL);
+     }
+ 
++    g_autoptr(GError) ipv4_error = NULL;
++    priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, priv->port, priv->listen_address, &ipv4_error);
++    if (ipv4_error)
++        g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
++
++    if (priv->socket)
++    {
++        GSource *source = g_socket_create_source (priv->socket, G_IO_IN, NULL);
++        g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
++        g_source_attach (source, NULL);
++    }
++
+     if (!priv->socket && !priv->socket6)
+         return FALSE;
+ 
diff --git a/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch b/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
deleted file mode 100644
index f14ec4ac0d..0000000000
--- a/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Author: Wilfried (justxi) Holzke
-
-Adopted from https://github.com/justxi/rocm/blob/master/sys-devel/llvm-roc/files/llvm-roc-4.0.0-remove-isystem-usr-include.patch
-
-Index: llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
-===================================================================
---- llvm-project-rocm-4.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp
-+++ llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
-@@ -326,11 +326,6 @@ void RocmInstallationDetector::AddHIPInc
-     //
-     // ROCm 3.5 does not fully support the wrapper headers. Therefore it needs
-     // a workaround.
--    SmallString<128> P(D.ResourceDir);
--    if (UsesRuntimeWrapper)
--      llvm::sys::path::append(P, "include", "cuda_wrappers");
--    CC1Args.push_back("-internal-isystem");
--    CC1Args.push_back(DriverArgs.MakeArgString(P));
-   }
- 
-   if (DriverArgs.hasArg(options::OPT_nogpuinc))
-@@ -341,8 +336,6 @@ void RocmInstallationDetector::AddHIPInc
-     return;
-   }
- 
--  CC1Args.push_back("-internal-isystem");
--  CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath()));
-   if (UsesRuntimeWrapper)
-     CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"});
- }
diff --git a/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch b/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch
deleted file mode 100644
index d6ed3aef93..0000000000
--- a/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Taken from the Gentoo patch:
-https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files/llvm-roc-5.0.0-linkdl.patch
-
-LLVMOffloadArch should link libdl to fix undefined symbol 'dlsym' when linking
-
---- a/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt
-+++ b/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt
-@@ -3,6 +3,7 @@ add_llvm_tool(offload-arch
-   ${CMAKE_CURRENT_SOURCE_DIR}/offload-arch.cpp
-   DEPENDS generated-table LLVMOffloadArch
- )
-+target_link_libraries(LLVMOffloadArch PRIVATE ${CMAKE_DL_LIBS})
- target_link_libraries(offload-arch PRIVATE LLVMOffloadArch)
- 
- if(CMAKE_HOST_UNIX)
diff --git a/gnu/packages/patches/maven-generate-component-xml.patch b/gnu/packages/patches/maven-generate-component-xml.patch
index 6cb23c7858..289556fbef 100644
--- a/gnu/packages/patches/maven-generate-component-xml.patch
+++ b/gnu/packages/patches/maven-generate-component-xml.patch
@@ -17,7 +17,8 @@ new file mode 100755
 index 0000000..c6748bd
 --- /dev/null
 +++ b/components.sh
-@@ -0,0 +1,148 @@
+@@ -0,0 +1,149 @@
++#!/bin/sh
 +## This script generates a rough plexus/components.xml file. It is meant to
 +## replace plexus-component-metadata as it eventually has a recursive dependency
 +## on itself.
diff --git a/gnu/packages/patches/maven-generate-javax-inject-named.patch b/gnu/packages/patches/maven-generate-javax-inject-named.patch
index b8eba5ab90..38c4565e81 100644
--- a/gnu/packages/patches/maven-generate-javax-inject-named.patch
+++ b/gnu/packages/patches/maven-generate-javax-inject-named.patch
@@ -13,7 +13,8 @@ new file mode 100755
 index 0000000..979f373
 --- /dev/null
 +++ b/sisu.sh
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,13 @@
++#!/bin/sh
 +## This script generates a rough javax.inject.Named file. It is meant to
 +## replace sisu-maven-plugin as it eventually has a recursive dependency
 +## on maven.
diff --git a/gnu/packages/patches/nix-dont-build-html-doc.diff b/gnu/packages/patches/nix-dont-build-html-doc.diff
index 79142bc215..2eb45117b0 100644
--- a/gnu/packages/patches/nix-dont-build-html-doc.diff
+++ b/gnu/packages/patches/nix-dont-build-html-doc.diff
@@ -3,24 +3,41 @@ We can't simply disable it because we need manpages.
 
 Author: Zhu Zihao <all_but_last@163.com>
 
-diff --git a/doc/manual/local.mk b/doc/manual/local.mk
-index e43d9f2fb..c323d1847 100644
 --- a/doc/manual/local.mk
 +++ b/doc/manual/local.mk
-@@ -69,8 +69,6 @@ $(d)/builtins.json: $(bindir)/nix
+@@ -138,11 +138,6 @@
  	$(trace-gen) $(dummy-env) NIX_PATH=nix/corepkgs=corepkgs $(bindir)/nix __dump-builtins > $@.tmp
  	@mv $@.tmp $@
  
 -# Generate the HTML manual.
+-.PHONY: manual-html
+-manual-html: $(docdir)/manual/index.html
 -install: $(docdir)/manual/index.html
- 
+-
  # Generate 'nix' manpages.
  install: $(mandir)/man1/nix3-manpages
-@@ -94,7 +92,5 @@ doc/manual/generated/man1/nix3-manpages: $(d)/src/command-ref/new-cli
+ man: doc/manual/generated/man1/nix3-manpages
+@@ -167,23 +162,4 @@
  	done
  	@touch $@
  
--$(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/command-ref/conf-file.md $(d)/src/expressions/builtins.md $(call rwildcard, $(d)/src, *.md)
--	$(trace-gen) RUST_LOG=warn mdbook build doc/manual -d $(DESTDIR)$(docdir)/manual
- 
+-$(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/anchors.jq $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/contributing/experimental-feature-descriptions.md $(d)/src/command-ref/conf-file.md $(d)/src/language/builtins.md
+-	$(trace-gen) \
+-		tmp="$$(mktemp -d)"; \
+-		cp -r doc/manual "$$tmp"; \
+-		find "$$tmp" -name '*.md' | while read -r file; do \
+-			$(call process-includes,$$file,$$file); \
+-		done; \
+-		find "$$tmp" -name '*.md' | while read -r file; do \
+-			docroot="$$(realpath --relative-to="$$(dirname "$$file")" $$tmp/manual/src)"; \
+-			sed -i "s,@docroot@,$$docroot,g" "$$file"; \
+-		done; \
+-		set -euo pipefail; \
+-		RUST_LOG=warn mdbook build "$$tmp/manual" -d $(DESTDIR)$(docdir)/manual.tmp 2>&1 \
+-			| { grep -Fv "because fragment resolution isn't implemented" || :; }; \
+-		rm -rf "$$tmp/manual"
+-	@rm -rf $(DESTDIR)$(docdir)/manual
+-	@mv $(DESTDIR)$(docdir)/manual.tmp/html $(DESTDIR)$(docdir)/manual
+-	@rm -rf $(DESTDIR)$(docdir)/manual.tmp
+-
  endif
diff --git a/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch b/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
index 7454e1efbe..c99b2c68dd 100644
--- a/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
+++ b/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
@@ -1,10 +1,10 @@
 Remove references to hueplusplus in order to unbundle and use the input package.
 
 diff --git a/OpenRGB.pro b/OpenRGB.pro
-index 61758892..8702d998 100644
+index 556be3bc..41e704aa 100644
 --- a/OpenRGB.pro
 +++ b/OpenRGB.pro
-@@ -493,35 +493,6 @@ SOURCES +=
+@@ -783,35 +783,6 @@ SOURCES +=
      dependencies/Swatches/swatches.cpp                                                          \
      dependencies/dmiinfo.cpp                                                                    \
      dependencies/ColorWheel/ColorWheel.cpp                                                      \
@@ -40,15 +40,15 @@ index 61758892..8702d998 100644
      dependencies/libe131/src/e131.c                                                             \
      dependencies/libcmmk/src/libcmmk.c                                                          \
      main.cpp                                                                                    \
-@@ -1188,6 +1159,7 @@ unix:!macx {
-     -lmbedx509                                                                                  \
+@@ -1789,6 +1760,7 @@ contains(QMAKE_PLATFORM, linux) {
      -lmbedtls                                                                                   \
      -lmbedcrypto                                                                                \
+     -ldl                                                                                        \
 +    -lhueplusplusshared                                                                         \
  
      COMPILER_VERSION = $$system($$QMAKE_CXX " -dumpversion")
      if (!versionAtLeast(COMPILER_VERSION, "9")) {
-@@ -1218,7 +1190,6 @@ unix:!macx {
+@@ -1821,7 +1793,6 @@ contains(QMAKE_PLATFORM, linux) {
      }
  
      SOURCES +=                                                                                  \
diff --git a/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch b/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch
new file mode 100644
index 0000000000..ea3f68927a
--- /dev/null
+++ b/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch
@@ -0,0 +1,89 @@
+# This patch was imported from Debian:
+# https://sources.debian.org/src/python-vega-datasets/0.9%2Bdfsg-1/debian/patches/remove-la-riots-related-code.patch/
+# According to the Debian package, the license of this dataset is not clear and it is not available from Los Angeles Times for European users.
+Index: vega_datasets/vega_datasets/tests/test_local_datasets.py
+===================================================================
+--- vega_datasets.orig/vega_datasets/tests/test_local_datasets.py
++++ vega_datasets/vega_datasets/tests/test_local_datasets.py
+@@ -75,7 +75,6 @@ def test_cars_column_names():
+     [
+         ("cars", "Year"),
+         ("stocks", "date"),
+-        ("la-riots", "death_date"),
+         ("iowa-electricity", "year"),
+         ("seattle-weather", "date"),
+         ("seattle-temps", "date"),
+Index: vega_datasets/vega_datasets/core.py
+===================================================================
+--- vega_datasets.orig/vega_datasets/core.py
++++ vega_datasets/vega_datasets/core.py
+@@ -322,11 +322,6 @@ class IowaElectricity(Dataset):
+     _pd_read_kwds = {"parse_dates": ["year"]}
+
+
+-class LARiots(Dataset):
+-    name = "la-riots"
+-    _pd_read_kwds = {"parse_dates": ["death_date"]}
+-
+-
+ class Miserables(Dataset):
+     name = "miserables"
+     _return_type = tuple
+Index: vega_datasets/vega_datasets/datasets.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/datasets.json
++++ vega_datasets/vega_datasets/datasets.json
+@@ -143,10 +143,6 @@
+     "filename": "jobs.json",
+     "format": "json"
+   },
+-  "la-riots": {
+-    "filename": "la-riots.csv",
+-    "format": "csv"
+-  },
+   "londonBoroughs": {
+     "filename": "londonBoroughs.json",
+     "format": "json"
+@@ -279,4 +275,4 @@
+     "filename": "zipcodes.csv",
+     "format": "csv"
+   }
+-}
+\ No newline at end of file
++}
+Index: vega_datasets/vega_datasets/local_datasets.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/local_datasets.json
++++ vega_datasets/vega_datasets/local_datasets.json
+@@ -8,7 +8,6 @@
+   "driving": "_data/driving.json",
+   "iowa-electricity": "_data/iowa-electricity.csv",
+   "iris": "_data/iris.json",
+-  "la-riots": "_data/la-riots.csv",
+   "ohlc": "_data/ohlc.json",
+   "seattle-temps": "_data/seattle-temps.csv",
+   "seattle-weather": "_data/seattle-weather.csv",
+@@ -16,4 +15,4 @@
+   "stocks": "_data/stocks.csv",
+   "us-employment": "_data/us-employment.csv",
+   "wheat": "_data/wheat.json"
+-}
+\ No newline at end of file
++}
+Index: vega_datasets/vega_datasets/dataset_info.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/dataset_info.json
++++ vega_datasets/vega_datasets/dataset_info.json
+@@ -49,12 +49,6 @@
+       "R. A. Fisher (1936). 'The use of multiple measurements in taxonomic problems'. Annals of Eugenics. 7 (2): 179-188."
+     ]
+   },
+-  "la-riots" : {
+-    "description" : "More than 60 people lost their lives amid the looting and fires that ravaged Los Angeles for five days starting on April 29, 1992. This dataset contains metadata about each person, including the geographic coordinates of their death. It was compiled and published by the Los Angeles Times Data Desk [1]_.",
+-    "references" : [
+-      "http://spreadsheets.latimes.com/la-riots-deaths/"
+-    ]
+-  },
+   "ohlc" : {
+     "description" : "This dataset contains the performance of the Chicago Board Options Exchange `Volatility Index <https://en.wikipedia.org/wiki/VIX>`_ in the summer of 2009."
+   },
diff --git a/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch b/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch
new file mode 100644
index 0000000000..2948234029
--- /dev/null
+++ b/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch
@@ -0,0 +1,16 @@
+#From xuhuisheng
+#at https://github.com/RadeonOpenCompute/ROCm/issues/1659#issuecomment-1041026624
+
+diff --git a/utils/flags.hpp b/utils/flags.hpp
+index 8f0228cc..2eaa47c5 100644
+--- a/utils/flags.hpp
++++ b/utils/flags.hpp
+@@ -245,7 +245,7 @@ release(bool, ROC_SYSTEM_SCOPE_SIGNAL, true,                                  \
+         "Enable system scope for signals (uses interrupts).")                 \
+ release(bool, ROC_SKIP_COPY_SYNC, false,                                      \
+         "Skips copy syncs if runtime can predict the same engine.")           \
+-release(bool, ROC_ENABLE_PRE_VEGA, false,                                     \
++release(bool, ROC_ENABLE_PRE_VEGA, true,                                     \
+         "Enable support of pre-vega ASICs in ROCm path")                      \
+ release(bool, HIP_FORCE_QUEUE_PROFILING, false,                               \
+         "Force command queue profiling by default")                           \
diff --git a/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch b/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch
new file mode 100644
index 0000000000..a5404ad62c
--- /dev/null
+++ b/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch
@@ -0,0 +1,79 @@
+See <https://github.com/RadeonOpenCompute/rocm_bandwidth_test/pull/90>.
+
+From a58f9fd4cb5d1120b9ce58c912ca87fa14720f73 Mon Sep 17 00:00:00 2001
+From: pppig236 <weikaik@umich.edu>
+Date: Tue, 2 May 2023 15:19:52 -0400
+Subject: [PATCH] fix include for rocm 5.5.0
+
+---
+ base_test.hpp           |  8 +-------
+ common.hpp              | 11 ++---------
+ rocm_bandwidth_test.hpp |  8 +-------
+ 3 files changed, 4 insertions(+), 23 deletions(-)
+
+diff --git a/base_test.hpp b/base_test.hpp
+index 3e79de1..af99a85 100755
+--- a/base_test.hpp
++++ b/base_test.hpp
+@@ -42,14 +42,8 @@
+ 
+ #ifndef ROC_BANDWIDTH_TEST_BASE_H_
+ #define ROC_BANDWIDTH_TEST_BASE_H_
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#endif
++#include <hsa/hsa.h>
+ #include <iostream>
+ #include <string>
+ #include <vector>
+diff --git a/common.hpp b/common.hpp
+index d2933a0..3c4858f 100755
+--- a/common.hpp
++++ b/common.hpp
+@@ -48,16 +48,9 @@
+ #include <vector>
+ #include <cmath>
+ #include <stdio.h>
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#include "hsa_ext_amd.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#include "hsa/hsa_ext_amd.h"
+-#endif
++#include <hsa/hsa.h>
++#include <hsa/hsa_ext_amd.h>
+ 
+ using namespace std;
+ 
+diff --git a/rocm_bandwidth_test.hpp b/rocm_bandwidth_test.hpp
+index f7eb338..b8550a7 100755
+--- a/rocm_bandwidth_test.hpp
++++ b/rocm_bandwidth_test.hpp
+@@ -43,14 +43,8 @@
+ #ifndef __ROC_BANDWIDTH_TEST_H__
+ #define __ROC_BANDWIDTH_TEST_H__
+ 
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#endif
++#include <hsa/hsa.h>
+ #include "base_test.hpp"
+ #include "common.hpp"
+ 
+-- 
+2.40.1
+
diff --git a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
index fc2c74718a..6462b81eb9 100644
--- a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
+++ b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
@@ -1,4 +1,5 @@
-https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25
+See https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25 for
+original patch.
 
 From c65cba2e73f9118e128b9ab7e655ee0f8a7798e7 Mon Sep 17 00:00:00 2001
 From: Craig Andrews <candrews@integralblue.com>
@@ -12,23 +13,23 @@ Without these additional required dependencies, linking fails with errors such a
  1 file changed, 18 insertions(+), 2 deletions(-)
 
 diff --git a/lib/comgr/CMakeLists.txt b/lib/comgr/CMakeLists.txt
-index 8b5ca2f..a7d226f 100644
+index fd3ae4a..131e581 100644
 --- a/lib/comgr/CMakeLists.txt
 +++ b/lib/comgr/CMakeLists.txt
-@@ -294,7 +294,11 @@ install(FILES
-   DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}")
+@@ -322,7 +322,11 @@ install(FILES
  
- set(CLANG_LIBS
--  clangFrontendTool)
-+  clangFrontendTool
-+  clangFrontend
-+  clangBasic
-+  clangDriver
-+  clangSerialization)
- 
- set(LLD_LIBS
-   lldELF
-@@ -305,8 +309,21 @@ if (LLVM_LINK_LLVM_DYLIB)
+ if(TARGET clangFrontendTool)
+   set(CLANG_LIBS
+-    clangFrontendTool)
++    clangFrontendTool
++    clangFrontend
++    clangBasic
++    clangDriver
++    clangSerialization)
+ else()
+   set(CLANG_LIBS
+     clang-cpp)
+@@ -337,8 +341,23 @@ if (LLVM_LINK_LLVM_DYLIB)
  else()
    llvm_map_components_to_libnames(LLVM_LIBS
      ${LLVM_TARGETS_TO_BUILD}
@@ -38,6 +39,8 @@ index 8b5ca2f..a7d226f 100644
 +    Symbolize
 +    Support
 +    Object
++    TargetParser
++    Bitreader
 +    BitWriter
 +    MC
 +    MCParser
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
index 97376fd421..65ad362307 100644
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
@@ -1,14 +1,12 @@
 Do not build and install clinfo.
 
-diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
-index 76847d3..3f62bfe 100644
---- a/CMakeLists.txt.orig
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0dc5bf4..95a12af 100644
+--- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
- 
- 
- set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
- #add_subdirectory(khronos/icd)
+@@ -27,7 +27,7 @@ else()
+   find_package(OpenCL REQUIRED)
+ endif()
  add_subdirectory(amdocl)
 -add_subdirectory(tools/clinfo)
 +#add_subdirectory(tools/clinfo)
@@ -16,14 +14,14 @@ index 76847d3..3f62bfe 100644
  if(BUILD_TESTS)
    add_subdirectory(tests/ocltst)
 diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
-index 48353eb..cd1e7c1 100644
+index a703f58..c07546a 100644
 --- a/packaging/CMakeLists.txt
 +++ b/packaging/CMakeLists.txt
-@@ -5,6 +5,6 @@ set(CPACK_COMPONENTS_ALL binary dev icd)
+@@ -12,6 +12,6 @@ endif()
  set(CPACK_DEB_COMPONENT_INSTALL ON)
  set(CPACK_RPM_COMPONENT_INSTALL ON)
  
--install(TARGETS clinfo DESTINATION bin COMPONENT binary)
-+#install(TARGETS clinfo DESTINATION bin COMPONENT binary)
- install(TARGETS amdocl DESTINATION lib COMPONENT binary)
- install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary)
+-install(TARGETS clinfo DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary)
++#install(TARGETS clinfo DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary)
+ install(TARGETS amdocl DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary)
+ install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
deleted file mode 100644
index 9f80d7da9d..0000000000
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Do not build and install libOpenCL.
-
---- b/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
- 
- 
- set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
--add_subdirectory(khronos/icd)
-+#add_subdirectory(khronos/icd)
- add_subdirectory(amdocl)
- add_subdirectory(tools/clinfo)
- add_subdirectory(tools/cltrace)
- if(BUILD_TESTS)
-   add_subdirectory(tests/ocltst)
-@@ -25,16 +25,6 @@ endif()
- 
- ###--- Packaging ------------------------------------------------------------###
- 
--# DEV package
--install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
--        DESTINATION include
--        COMPONENT DEV
--        USE_SOURCE_PERMISSIONS
--        PATTERN cl_d3d10.h EXCLUDE
--        PATTERN cl_d3d11.h EXCLUDE
--        PATTERN cl_dx9_media_sharing.h EXCLUDE
--        PATTERN cl_egl.h EXCLUDE)
--
- #############################
- # Packaging steps
- #############################
-@@ -53,8 +43,8 @@ if (DEFINED ROCM_PATCH_VERSION)
-   set(OPENCL_AMD_ICD_FILE "amdocl64_${ROCM_PATCH_VERSION}.icd")
- endif()
- 
--get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
--get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
-+#get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
-+#get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
- 
- #Set Package Version
- set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
-diff --git a/khronos/icd/CMakeLists.txt b/khronos/icd/CMakeLists.txt
-index 4bafa86..987dd6f 100644
---- a/khronos/icd/CMakeLists.txt	2020-06-07 16:05:32.425022904 +0200
-+++ b/khronos/icd/CMakeLists.txt	2020-06-07 16:06:03.273022786 +0200
-@@ -132,7 +132,7 @@ if (BUILD_TESTING)
-     add_subdirectory (test)
- endif()
- 
--install (TARGETS OpenCL
--    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
--    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
--    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+#install (TARGETS OpenCL
-+#    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-+#    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+#    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
-index 48353eb..cd1e7c1 100644
---- a/packaging/CMakeLists.txt
-+++ b/packaging/CMakeLists.txt
-@@ -17,5 +17,5 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL
-         PATTERN cl_dx9_media_sharing.h EXCLUDE
-         PATTERN cl_egl.h EXCLUDE )
- 
--install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
-+#install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
- install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION share/doc/rocm-ocl-icd COMPONENT icd)
diff --git a/gnu/packages/patches/ruby-nokogiri.patch b/gnu/packages/patches/ruby-nokogiri.patch
new file mode 100644
index 0000000000..b55b430234
--- /dev/null
+++ b/gnu/packages/patches/ruby-nokogiri.patch
@@ -0,0 +1,29 @@
+Description: Removed some unnecessary test setup such as SimpleCov and
+  minitest-reporters.
+diff --git a/test/helper.rb b/test/helper.rb
+index ed3133c6..4f5d4f1b 100644
+--- a/test/helper.rb
++++ b/test/helper.rb
+@@ -13,22 +13,10 @@
+ # - NOKOGIRI_GC: read more in test/test_memory_leak.rb
+ #
+ 
+-require "simplecov"
+-SimpleCov.start do
+-  add_filter "/test/"
+-  enable_coverage :branch
+-end
+-
+ $VERBOSE = true
+ 
+ require "minitest/autorun"
+ require "minitest/benchmark"
+-require "minitest/reporters"
+-
+-nokogiri_minitest_reporters_options = { color: true, slow_count: 10, detailed_skip: false }
+-nokogiri_minitest_reporters_options[:fast_fail] = true if ENV["NOKOGIRI_TEST_FAIL_FAST"]
+-puts "Minitest::Reporters options: #{nokogiri_minitest_reporters_options}"
+-Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new(nokogiri_minitest_reporters_options))
+ 
+ require "fileutils"
+ require "tempfile"
diff --git a/gnu/packages/patches/vcmi-disable-privacy-breach.patch b/gnu/packages/patches/vcmi-disable-privacy-breach.patch
new file mode 100644
index 0000000000..c03bc66119
--- /dev/null
+++ b/gnu/packages/patches/vcmi-disable-privacy-breach.patch
@@ -0,0 +1,21 @@
+Origin: https://salsa.debian.org/games-team/vcmi/-/blob/debian/1.1.0+dfsg-1/debian/patches/disable-privacy-breach
+From: Johannes Schauer <josch@debian.org>
+Subject: do not check remote repositories on startup by default
+Forwarded: not-needed
+
+--- a/config/schemas/settings.json
++++ b/config/schemas/settings.json
+@@ -401,11 +401,11 @@
+ 				},
+ 				"autoCheckRepositories" : {
+ 					"type" : "boolean",
+-					"default" : true
++					"default" : false
+ 				},
+ 				"updateOnStartup" : {
+ 					"type" : "boolean",
+-					"default" : true
++					"default" : false
+ 				},
+ 				"updateConfigUrl" : {
+ 					"type" : "string",
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 2b30ee1b9d..efb9a04aee 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -370,7 +370,7 @@ you to figure out what is going on in that merge you keep avoiding.")
 (define-public patchwork
   (package
     (name "patchwork")
-    (version "3.0.4")
+    (version "3.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -379,7 +379,7 @@ you to figure out what is going on in that merge you keep avoiding.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dl0prsyzsnlq6g0jw05mxx00bq9y2rpc3vrbfxfiblyyydrn2xn"))))
+                "0is9d4gf93jcbyshyj2k3kjyrjnvimrm6bai6dbcx630md222j5w"))))
     (build-system python-build-system)
     (arguments
      `(;; TODO: Tests require a running database
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 96d4484bf2..ef81900069 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -824,14 +824,14 @@ and based on PDF specification 1.7.")
 (define-public mupdf
   (package
     (name "mupdf")
-    (version "1.22.1")
+    (version "1.22.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://mupdf.com/downloads/archive/"
-                           "mupdf-" version "-source.tar.lz"))
+                           "mupdf-" version "-source.tar.gz"))
        (sha256
-        (base32 "1px73qnazjvmbwf1fab8ad8j1dmiddg1mjb7zg7h9i1vp4bh7c1k"))
+        (base32 "1dxybd4fzjdmkpwd984yj511nmjxjbpj00yccycfm37gwvs6mijl"))
        (modules '((guix build utils)
                   (ice-9 ftw)
                   (srfi srfi-1)))
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 0a954c0e6f..1e78c8e9fe 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020. 2021, 2022 Vinicius Monego <monego@posteo.net>
-;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -459,7 +459,7 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "4.4.0")
+    (version "4.4.1")
     (source
      (origin
        (method url-fetch)
@@ -467,7 +467,7 @@ photographic equipment.")
              "https://github.com/darktable-org/darktable/releases/"
              "download/release-" version "/darktable-" version ".tar.xz"))
        (sha256
-        (base32 "105hyc8rhc8md683h8mbvqxxc2f5w2bk3348n2c4jz6rmcsgr1w8"))))
+        (base32 "038gdri1mcmq9mlaikq5x9xyrs20b99jpcchfspngnwa5s6x6hz0"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -484,13 +484,6 @@ photographic equipment.")
                  (string-append "\""
                                 (search-input-file inputs "/lib/libOpenCL.so")
                                 "\"")))))
-          (add-after 'unpack 'fix-missing-include
-            (lambda _
-              ;; Fix missing include needed to build tests.  See upstream
-              ;; issue: https://github.com/darktable-org/darktable/issues/12604
-              (substitute* "./src/common/variables.h"
-                (("once")
-                 "once\n#include \"common/image.h\""))))
           (add-before 'configure 'prepare-build-environment
             (lambda _
               ;; Rawspeed fails to build with GCC due to OpenMP error:
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index c71d648cf4..cb6b4e7047 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -133,7 +134,8 @@
                "--enable-intl"
                "--enable-mbstring"
                "--enable-pcntl"
-               "--enable-sockets"))
+               "--enable-sockets"
+               "--enable-sysvsem"))     ; Required for, e.g. Nextcloud
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'do-not-record-build-flags
diff --git a/gnu/packages/plan9.scm b/gnu/packages/plan9.scm
index 318344f2ec..f78c26e215 100644
--- a/gnu/packages/plan9.scm
+++ b/gnu/packages/plan9.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 宋文武 <iyzsong@member.fsf.org>
+;;; Copyright © 2023 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,8 +21,14 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages commencement)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages xorg))
 
 (define-public drawterm
@@ -63,3 +70,109 @@
 Plan 9 systems.  It behaves like a Plan 9 kernel and will attempt to
 reconstruct a Plan 9 terminal-like experience from a non-Plan 9 system.")
       (license license:expat))))
+
+(define-public plan9port
+  ;; no releases
+  (let ((commit "cc4571fec67407652b03d6603ada6580de2194dc")
+        (revision "0"))
+    (package
+      (name "plan9port")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/9fans/plan9port")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1g2kzlghcghs560na6xalfsjq5zwp015wv9wk8wxn26981zs759x"))
+                (modules '((guix build utils)))
+                (snippet #~(for-each delete-file-recursively
+                                     '("font/luc" ;nonfree
+                                       "font/lucm" "font/lucsans" "font/pelm")))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:tests? #f ;no tests
+             #:phases #~(modify-phases %standard-phases
+                          (add-after 'unpack 'setup
+                            (lambda _
+                              (delete-file "src/cmd/mk/mk.pdf")
+                              (substitute* "src/cmd/acme/acme.c"
+                                (("/lib/font/bit/lucsans/euro.8.font")
+                                 (string-append #$output
+                                  "/font/fixed/unicode.5x8.font"))
+                                (("/lib/font/bit/lucm/unicode.9.font")
+                                 (string-append #$output
+                                  "/font/fixed/unicode.6x9.font")))
+                              (substitute* (find-files "src")
+                                (("/lib/font/bit")
+                                 (string-append #$output "/font")))
+                              (substitute* "bin/9c"
+                                (("which")
+                                 (which "which")))
+                              (substitute* "src/cmd/fontsrv/freetyperules.sh"
+                                (("'\\$i'/freetype2")
+                                 (string-append "-I"
+                                                #$freetype
+                                                "/include/freetype2")))
+                              (with-output-to-file "LOCAL.config"
+                                (lambda _
+                                  (format #t "CC9=~a~%" #$(cc-for-target))
+                                  (format #t "FONTSRV=fontsrv~%")))
+                              (setenv "X11"
+                                      #$libx11)
+                              (setenv "PLAN9"
+                                      (getcwd))
+                              (setenv "PLAN9_TARGET"
+                                      #$output)))
+                          (delete 'configure) ;no configure
+                          (replace 'build
+                            (lambda _
+                              (invoke "./INSTALL" "-b")))
+                          (replace 'install
+                            (lambda _
+                              (for-each (lambda (x)
+                                          (let ((out (string-append #$output
+                                                                    "/" x)))
+                                            (mkdir-p out)
+                                            (copy-recursively x out)))
+                                        ;; TODO: use external sky and dict packages
+                                        '("bin" "face"
+                                          "font"
+                                          "include"
+                                          "lib"
+                                          "lp"
+                                          "mail"
+                                          "man"
+                                          "ndb"
+                                          "plumb"
+                                          "tmac"
+                                          "troff"
+                                          "postscript"))
+                              (install-file "rcmain" #$output)))
+                          (add-after 'install 'wrap-executables
+                            (lambda _
+                              (for-each (lambda (exe)
+                                          (wrap-program exe
+                                            `("PLAN9" ":" prefix
+                                              (,#$output))))
+                                        (find-files
+                                         (string-append #$output "/bin")))))
+                          ;; Plan9 doesn't compress man pages
+                          (delete 'compress-documentation))))
+      (native-inputs (list perl which))
+      (inputs (list bash-minimal                  ;for 'wrap-program'
+                    fontconfig libx11 libxext libxt))
+      ;; Propagate gcc-toolchain because some programs, like the 9c compiler,
+      ;; are just aliased scripts to gcc equivalents.
+      (propagated-inputs (list gcc-toolchain))
+      (home-page "https://9fans.github.io/plan9port/")
+      (synopsis "Port of many Plan 9 libraries and programs")
+      (description
+       "Plan 9 from User Space (aka plan9port) is a port of many Plan 9
+programs from their native Plan 9 environment to Unix-like operating
+systems.")
+      (license (list license:expat ;modifications
+                     license:lpl1.02 ;original Plan9 code
+                     license:zlib))))) ;src/cmd/bzip2
diff --git a/gnu/packages/potassco.scm b/gnu/packages/potassco.scm
index 03d243cdc7..e6d7caa1ef 100644
--- a/gnu/packages/potassco.scm
+++ b/gnu/packages/potassco.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022, 2023 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +32,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system pyproject)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages pkg-config)
@@ -153,8 +155,7 @@ satisfiability checking (SAT).")
               (snippet
                #~(begin
                    (delete-file-recursively "clasp")
-                   ;; TODO: Unvendor other third-party stuff
-                   (delete-file-recursively "third_party/catch")))
+                   (delete-file-recursively "third_party")))
               (sha256
                (base32
                 "19s59ndcm2yj0kxlikfxnx2bmp6b7n31wq1zvwc7hyk37rqarwys"))))
@@ -173,12 +174,22 @@ satisfiability checking (SAT).")
             (lambda _
               (substitute* "CMakeLists.txt"
                 (("add_subdirectory\\(clasp\\)")
-                 "find_package(clasp REQUIRED)"))
+                 "find_package(clasp REQUIRED)")
+                (("add_subdirectory\\(third_party\\)")
+                 (string-append
+                  "find_package(tsl-hopscotch-map)\n"
+                  "find_package(tl-optional)\n"
+                  "find_package(mpark_variant)\n"
+                  "find_package(tsl-sparse-map)\n"
+                  "find_package(tsl-ordered-map)\n"
+                  "find_package(Catch2 3 REQUIRED)")))
               (substitute* "libclingo/CMakeLists.txt"
                 (("\"cmake/Clingo\"") "\"cmake/clingo\"")
                 (("ClingoConfig\\.cmake") "clingo-config.cmake")
                 (("ClingoConfigVersion\\.cmake")
                  "clingo-config-version.cmake"))
+              (substitute* "libgringo/CMakeLists.txt"
+                (("mpark::variant") "mpark_variant"))
               (substitute* "cmake/ClingoConfig.cmake.in"
                 (("find_package\\(Clasp") "find_package(clasp"))
               (rename-file "cmake/ClingoConfig.cmake.in"
@@ -198,8 +209,13 @@ satisfiability checking (SAT).")
                                 "unpool-ast-v2" "parse_term"
                                 "propagator" "propgator-sequence-mining"
                                 "symbol" "visitor"))))))))))
-    (inputs (list catch2-3.1 clasp libpotassco))
-    (native-inputs (list pkg-config))
+    (inputs (list catch2-3.3 clasp libpotassco))
+    (native-inputs (list mpark-variant
+                         pkg-config
+                         tl-optional
+                         tsl-hopscotch-map
+                         tsl-ordered-map
+                         tsl-sparse-map))
     (home-page "https://potassco.org/")
     (synopsis "Grounder and solver for logic programs")
     (description "Clingo computes answer sets for a given logic program.")
@@ -216,6 +232,7 @@ satisfiability checking (SAT).")
               (uri (git-reference
                     (url "https://github.com/santifa/pasp-mode")
                     (commit commit)))
+              (file-name (git-file-name name version))
               (patches
                (search-patches "emacs-pasp-mode-quote-file-names.patch"))
               (sha256
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 74e51ec61e..89e5de6278 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -56,14 +56,14 @@
 (define-public a2ps
   (package
     (name "a2ps")
-    (version "4.15.4")
+    (version "4.15.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/a2ps/a2ps-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1mvd41xvcy8vk91nndzifasq600kzlswl1379bhnpn49pa23y1ja"))
+                "0zys627j17dcqryzrbc473mxzwyshsbxq7j5cabn7hp70i0ipfw1"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove timestamp from the installed 'README' file.
@@ -167,17 +167,17 @@ It also includes the capability to perform syntax highlighting for several
 different programming languages.")
     (license gpl3+)))
 
-(define-public fmt
+(define-public fmt-10
   (package
     (name "fmt")
-    (version "9.1.0")
+    (version "10.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/fmtlib/fmt/releases/download/"
                            version "/fmt-" version ".zip"))
        (sha256
-        (base32 "15n9yi6xzzs7g9rm87kg8y5yhl2zrqj3bjr845saa63f6swlrsyc"))))
+        (base32 "10f23avnpad8sakmq514w2bw6cw7xrb30kc3v8k7yn1zbwbcnhs9"))))
     (build-system cmake-build-system)
     (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
     (native-inputs (list unzip))
@@ -189,9 +189,21 @@ a fast alternative to @code{IOStreams}.")
     ;; The library is bsd-2, but documentation and tests include other licenses.
     (license (list bsd-2 bsd-3 psfl))))
 
+(define-public fmt-9
+  (package
+    (inherit fmt-10)
+    (version "9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/fmtlib/fmt/releases/download/"
+                           version "/fmt-" version ".zip"))
+       (sha256
+        (base32 "15n9yi6xzzs7g9rm87kg8y5yhl2zrqj3bjr845saa63f6swlrsyc"))))))
+
 (define-public fmt-8
   (package
-    (inherit fmt)
+    (inherit fmt-9)
     (version "8.1.1")
     (source
      (origin
@@ -203,7 +215,7 @@ a fast alternative to @code{IOStreams}.")
 
 (define-public fmt-8.0
   (package
-    (inherit fmt)
+    (inherit fmt-8)
     (version "8.0.1")
     (source
      (origin
@@ -215,7 +227,7 @@ a fast alternative to @code{IOStreams}.")
 
 (define-public fmt-7
   (package
-    (inherit fmt)
+    (inherit fmt-8)
     (version "7.1.3")
     (source
      (origin
@@ -227,7 +239,7 @@ a fast alternative to @code{IOStreams}.")
 
 (define-public fmt-6
   (package
-    (inherit fmt)
+    (inherit fmt-7)
     (version "6.1.2")
     (source
      (origin
@@ -269,6 +281,10 @@ a fast alternative to @code{IOStreams}.")
        ("libcxxabi" ,libcxxabi-6)
        ("clang" ,clang-6)))))
 
+;; Note: Updating fmt causes some 1000s of rebuilds, so let's have a pinned
+;; version.
+(define-public fmt fmt-9)
+
 (define-public source-highlight
   (package
     (name "source-highlight")
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 7269f01c62..8cd805799e 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -563,49 +563,49 @@ source files.")
                 "12hp1clg83jfl35x1h2ymzpj5w83wrnqw7hjfc6mqa8lsvpw535r"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'do-not-use-bundler-for-tests
-           (lambda _
-             (substitute* "spec/spec_helper.rb"
-               (("Bundler\\.setup.*") ""))))
-         (add-after 'unpack 'relax-version-requirements
-           (lambda _
-             (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
-               (("'rake',.*")
-                "'rake'\n")
-               (("\"rubocop\",.*")
-                "'rubocop'\n")
-               (("\"parser\",.*")
-                "'parser'\n"))))
-         (add-after 'unpack 'patch-protoc
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "lib/protobuf/tasks/compile.rake"
-               (("\"protoc\"")
-                (string-append "\"" (search-input-file inputs "bin/protoc")
-                               "\"")))))
-         (add-after 'unpack 'skip-failing-test
-           ;; See: https://github.com/ruby-protobuf/protobuf/issues/419
-           (lambda _
-             (substitute* "spec/lib/protobuf/rpc/connectors/ping_spec.rb"
-               (("expect\\(::IO\\)\\.to receive\\(:select\\).*" all)
-                (string-append "        pending\n" all)))))
-         (add-after 'replace-git-ls-files 'replace-more-git-ls-files
-           (lambda _
-             (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
-               (("`git ls-files -- \\{test,spec,features\\}/*`")
-                "`find test spec features -type f | sort`")
-               (("`git ls-files -- bin/*`")
-                "`find bin -type f | sort`"))))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "rspec")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-use-bundler-for-tests
+            (lambda _
+              (substitute* "spec/spec_helper.rb"
+                (("Bundler\\.setup.*") ""))))
+          (add-after 'unpack 'relax-version-requirements
+            (lambda _
+              (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
+                (("'rake',.*")
+                 "'rake'\n")
+                (("\"rubocop\",.*")
+                 "'rubocop'\n")
+                (("\"parser\",.*")
+                 "'parser'\n"))))
+          (add-after 'unpack 'patch-protoc
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "lib/protobuf/tasks/compile.rake"
+                (("\"protoc\"")
+                 (string-append "\"" (search-input-file inputs "bin/protoc")
+                                "\"")))))
+          (add-after 'unpack 'skip-failing-test
+            ;; See: https://github.com/ruby-protobuf/protobuf/issues/419
+            (lambda _
+              (substitute* "spec/lib/protobuf/rpc/connectors/ping_spec.rb"
+                (("expect\\(::IO\\)\\.to receive\\(:select\\).*" all)
+                 (string-append "        pending\n" all)))))
+          (add-after 'replace-git-ls-files 'replace-more-git-ls-files
+            (lambda _
+              (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
+                (("`git ls-files -- \\{test,spec,features\\}/*`")
+                 "`find test spec features -type f | sort`")
+                (("`git ls-files -- bin/*`")
+                 "`find bin -type f | sort`"))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rspec")))))))
     (native-inputs
      (list ruby-benchmark-ips
            ruby-ffi-rzmq
            ruby-parser
-           ruby-pry-byebug
            ruby-pry-stack-explorer
            ruby-rake
            ruby-rspec
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 468a339788..87e15b4560 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1813,19 +1813,20 @@ side effects when unit testing.")
 (define-public python-mypy-extensions
   (package
     (name "python-mypy-extensions")
-    (version "0.4.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mypy_extensions" version))
-        (sha256
-         (base32
-          "1a04qsk8hd1lqns8w1j7cr0vmvbhg450di5k1i16kqxkbf7q30id"))))
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "mypy_extensions" version))
+              (sha256
+               (base32
+                "10h7mwjjfbwxzq7jzaj1pnv9g6laa1k0ckgw72j44160bnazinvm"))))
     (build-system python-build-system)
-    (arguments `(#:tests? #f)); no tests
+    (arguments
+     `(#:tests? #f)) ;no tests
     (home-page "https://github.com/python/mypy_extensions")
     (synopsis "Experimental extensions for MyPy")
-    (description "The @code{python-mypy-extensions} module defines
+    (description
+     "The @code{python-mypy-extensions} module defines
 experimental extensions to the standard @code{typing} module that are
 supported by the MyPy typechecker.")
     (license license:expat)))
diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm
index f3530e5230..e1275158c0 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -181,18 +181,18 @@ compression algorithm.")
 (define-public python-isal
   (package
     (name "python-isal")
-    (version "0.11.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "isal" version))
        (sha256
-        (base32 "1bxj7r24p974pqfgym485s90ydhzji9q7zyfg3sf8fycm9ya01wd"))
-       ;; Remove bundles isa-l source code
+        (base32 "01914gwfrb95dagz9sqnsmvc0hssg2pb6aj204fdamss4piz8r0k"))
+       ;; Remove bundled isa-l source code
        (modules '((guix build utils)))
        (snippet
         '(delete-file-recursively "src/isal/isa-l"))))
-    (build-system python-build-system)
+    (build-system pyproject-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index a8e43d96cf..938deaec6a 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2019, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
@@ -324,13 +324,13 @@ implements several methods for sequential model-based optimization.
 (define-public python-trimesh
   (package
     (name "python-trimesh")
-    (version "3.10.7")
+    (version "3.22.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trimesh" version))
        (sha256
-        (base32 "0bw55cwxlxds0j54naijh64sdb0rkscx4i1fy0ql94h96kw2p2ir"))))
+        (base32 "1ck4dkhz1x6sznd83c1hlvsv2m6d22fr82na0947j5jf47a4c1gl"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-numpy))
@@ -346,7 +346,7 @@ implements several methods for sequential model-based optimization.
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-build
            (lambda _
-             (substitute* "trimesh/resources/templates/blender_boolean.py"
+             (substitute* "trimesh/resources/templates/blender_boolean.py.tmpl"
                (("\\$MESH_PRE")
                 "'$MESH_PRE'")))))))
     (home-page "https://github.com/mikedh/trimesh")
@@ -669,27 +669,55 @@ provides an example implementation of the algorithm as well as scripts
 necessary for reproducing the experiments in the paper.")
     (license license:expat)))
 
+(define-public python-einops
+  (package
+    (name "python-einops")
+    (version "0.6.1")
+    (source (origin
+              (method git-fetch) ;PyPI misses .ipynb files required for tests
+              (uri (git-reference
+                    (url "https://github.com/arogozhnikov/einops")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h8p39kd7ylg99mh620xr20hg7v78x1jnj6vxwk31rlw2dmv2dpr"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'set-backend
+                          (lambda _
+                            ;; Einops supports different backends, but we test
+                            ;; only NumPy for availability and simplicity.
+                            (setenv "EINOPS_TEST_BACKENDS" "numpy"))))))
+    (native-inputs (list jupyter
+                         python-hatchling
+                         python-nbconvert
+                         python-nbformat
+                         python-parameterized
+                         python-pytest))
+    (propagated-inputs (list python-numpy))
+    (home-page "https://einops.rocks/")
+    (synopsis "Tensor operations for different backends")
+    (description "Einops provides a set of tensor operations for NumPy and
+multiple deep learning frameworks.")
+    (license license:expat)))
+
 (define-public python-xarray
   (package
     (name "python-xarray")
-    (version "0.15.1")
+    (version "2023.6.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "xarray" version))
               (sha256
                (base32
-                "1yx8j66b7rn10m2l6gmn8yr9cn38pi5cj0x0wwpy4hdnhy6i7qv4"))))
-    (build-system python-build-system)
+                "1339fz5gxkizq02h6vn19546x9p4c3nd9ipzpcg39h7gwhg26yi6"))))
+    (build-system pyproject-build-system)
     (native-inputs
      (list python-setuptools-scm python-pytest))
     (propagated-inputs
      (list python-numpy python-pandas))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "pytest"))))))
     (home-page "https://github.com/pydata/xarray")
     (synopsis "N-D labeled arrays and datasets")
     (description "Xarray (formerly xray) makes working with labelled
@@ -702,6 +730,107 @@ large and growing library of domain-agnostic functions for advanced analytics
 and visualization with these data structures.")
     (license license:asl2.0)))
 
+(define-public python-xarray-einstats
+  (package
+    (name "python-xarray-einstats")
+    (version "0.5.1")
+    (source (origin
+              (method git-fetch) ; no tests in PyPI
+              (uri (git-reference
+                    (url "https://github.com/arviz-devs/xarray-einstats")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1gg7p2lq7zxic64nbr6a8ynizs8rjzb29fnqib7hw3lmp13wsfm0"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-einops python-flit-core python-numba
+                         python-pytest))
+    (propagated-inputs (list python-numpy python-scipy python-xarray))
+    (home-page "https://einstats.python.arviz.org/en/latest/")
+    (synopsis "Stats, linear algebra and einops for xarray")
+    (description
+     "@code{xarray_einstats} provides wrappers around some NumPy and SciPy
+functions and around einops with an API and features adapted to xarray.")
+    (license license:asl2.0)))
+
+(define-public python-pytensor
+  (package
+    (name "python-pytensor")
+    (version "2.12.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pymc-devs/pytensor")
+                    (commit (string-append "rel-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1445fwbmzkdbndkq9hxiagdkfclgrnmpfzad40zqn6m5ry8192x8"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Replace version manually because pytensor uses
+          ;; versioneer, which requires git metadata.
+          (add-after 'unpack 'versioneer
+            (lambda _
+              (with-output-to-file "setup.cfg"
+                (lambda ()
+                  (display "\
+[versioneer]
+VCS = git
+style = pep440
+versionfile_source = pytensor/_version.py
+versionfile_build = pytensor/_version.py
+tag_prefix =
+parentdir_prefix = pytensor-
+")))
+              (invoke "versioneer" "install")
+              (substitute* "setup.py"
+                (("versioneer.get_version\\(\\)")
+                 (string-append "\"" #$version "\"")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (setenv "HOME" "/tmp") ; required for most tests
+                ;; Test discovery fails, have to call pytest by hand.
+                ;; test_tensor_basic.py file requires JAX.
+                (invoke "python" "-m" "pytest" "-vv"
+                        "--ignore" "tests/link/jax/test_tensor_basic.py"
+                        ;; Skip benchmark tests.
+                        "-k" (string-append
+                              "not test_elemwise_speed"
+                              " and not test_logsumexp_benchmark"
+                              " and not test_fused_elemwise_benchmark"
+                              " and not test_scan_multiple_output"
+                              " and not test_vector_taps_benchmark"
+                              " and not test_cython_performance")
+                        ;; Skip computationally intensive tests.
+                        "--ignore" "tests/scan/"
+                        "--ignore" "tests/tensor/"
+                        "--ignore" "tests/sandbox/"
+                        "--ignore" "tests/sparse/sandbox/")))))))
+    (native-inputs (list python-cython python-pytest python-versioneer))
+    (propagated-inputs (list python-cons
+                             python-etuples
+                             python-filelock
+                             python-logical-unification
+                             python-minikanren
+                             python-numba
+                             python-numpy
+                             python-scipy
+                             python-typing-extensions))
+    (home-page "https://pytensor.readthedocs.io/en/latest/")
+    (synopsis
+     "Library for mathematical expressions in multi-dimensional arrays")
+    (description
+     "PyTensor is a Python library that allows one to define, optimize, and
+efficiently evaluate mathematical expressions involving multi-dimensional
+arrays.  It is a fork of the Aesara library.")
+    (license license:bsd-3)))
+
 (define-public python-msgpack-numpy
   (package
     (name "python-msgpack-numpy")
@@ -891,18 +1020,18 @@ two-dimensional renderings such as scatter plots and histograms.
 (define-public python-pandas-flavor
   (package
     (name "python-pandas-flavor")
-    (version "0.2.0")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pandas_flavor" version))
        (sha256
         (base32
-         "12g4av8gpl6l83yza3h97j3f2jblqv69frlidrvdq8ny2rc6awbq"))))
+         "0473lkbdnsag3w5x65sxwjlyq0i7z938ssxqwn2cpcml282vksx1"))))
     (build-system python-build-system)
     (propagated-inputs
-     (list python-pandas python-xarray))
-    (home-page "https://github.com/Zsailer/pandas_flavor")
+     (list python-lazy-loader python-packaging python-pandas python-xarray))
+    (home-page "https://github.com/pyjanitor-devs/pandas_flavor")
     (synopsis "Write your own flavor of Pandas")
     (description "Pandas 0.23 added a simple API for registering accessors
 with Pandas objects.  Pandas-flavor extends Pandas' extension API by
@@ -1154,6 +1283,9 @@ Mathematics (GLM) library to Python.")
               " and not test_exception_text"
               " and not test_worker_bad_args"
 
+              ;; These time out
+              " and not test_nanny_timeout"
+
               ;; These tests are rather flaky
               " and not test_quiet_quit_when_cluster_leaves"
               " and not multiple_clients_restart"))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 6869eb0a8b..61a21f9c94 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -3658,6 +3658,50 @@ and Jinja2 template engine.  It is called a micro framework because it does not
 presume or force a developer to use a particular tool or library.")
     (license license:bsd-3)))
 
+(define-public python-flask-compress
+  (package
+    (name "python-flask-compress")
+    (version "1.13")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Flask-Compress" version))
+              (sha256
+               (base32
+                "178jzz6jxlxllcjqamzh5q7ahfh90m5cl1il9vmjs3xhz65z35pf"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-brotli python-flask))
+    (native-inputs (list python-setuptools-scm))
+    (home-page "https://github.com/colour-science/flask-compress")
+    (synopsis "Compress responses in a Flask app")
+    (description
+     "This package lets you compress Flask application responses and static
+files with gzip, deflate or brotli.  Flask-Compress both adds the various
+headers required for a compressed response and compresses the response data.")
+    (license license:expat)))
+
+(define-public python-flask-seasurf
+  (package
+    (name "python-flask-seasurf")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Flask-SeaSurf" version))
+              (sha256
+               (base32
+                "1aaib4n27q0f2alp87mhv3f79vg7qckp71rphbd0mb39qw470lsl"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:tests? #false)) ;there are none
+    (propagated-inputs (list python-flask))
+    (home-page "https://github.com/maxcountryman/flask-seasurf/")
+    (synopsis "CSRF extension for Flask")
+    (description "SeaSurf is a Flask extension for preventing cross-site
+request forgery (CSRF).  CSRF attacks are problematic because the mechanism
+they use is relatively easy to exploit.  This extension attempts to aid you in
+securing your application from such attacks.  This extension is based on the
+Django middleware.")
+    (license license:bsd-3)))
+
 (define-public python-flask-wtf
   (package
     (name "python-flask-wtf")
@@ -4998,13 +5042,13 @@ for httplib2 transport.")
 (define-public whoogle-search
   (package
     (name "whoogle-search")
-    (version "0.8.1")
+    (version "0.8.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "whoogle-search" version))
               (sha256
                (base32
-                "1kqkb23wb9a4a8zdky2066887vgv7ywhivhxi5nipkx07mf8v01k"))))
+                "1r6ymainwc3b8aar90b74mpnx3rsfscgzh0llwvsb03fbhiypw5g"))))
     (build-system pyproject-build-system)
     (arguments
      (list
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b650b71f3b..6d460e286e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -29,7 +29,7 @@
 ;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016–2018, 2021–2023 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -106,7 +106,7 @@
 ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
 ;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
-;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
+;;; Copyright © 2021, 2022, 2023 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 ;;; Copyright © 2021, 2022 Pradana Aumars <paumars@courrier.dev>
 ;;; Copyright © 2021, 2022 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
@@ -161,6 +161,7 @@
   #:use-module (gnu packages adns)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages astronomy)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
@@ -665,6 +666,26 @@ of their positions to minimize overlaps (relatively easy).  This library
 implements the latter option to help with matplotlib graphs.")
     (license license:expat)))
 
+(define-public python-affine
+  (package
+    (name "python-affine")
+    (version "2.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "affine" version))
+              (sha256
+               (base32
+                "1shyvajayyzbkp9dihb4mz835jnkp0kqqbyjfqci6v43da6q2kd2"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-coveralls python-flake8 python-pydocstyle
+                             python-pytest python-pytest-cov))
+    (native-inputs (list python-flit-core))
+    (home-page "https://github.com/rasterio/affine")
+    (synopsis "Matrices describing affine transformation of the plane")
+    (description "This is a package for matrices describing the affine
+transformation of the plane.")
+    (license license:bsd-3)))
+
 (define-public python-argopt
   (package
    (name "python-argopt")
@@ -1746,6 +1767,51 @@ It can handle tasks such as scanning, tracerouting, probing, unit tests,
 attacks or network discovery.")
     (license license:gpl2)))
 
+(define-public python-rasterio
+  (package
+    (name "python-rasterio")
+    (version "1.3.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "rasterio" version))
+              (sha256
+               (base32
+                "012341c1rlcdr9rkg97lbhxrwzn4sr2xah4zjfnqy2r1227wpzdb"))))
+    (properties
+     '((updater-ignored-native-inputs . ("gdal" "python-cython"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:tests? #false                   ;test data not present
+      #:phases
+      '(modify-phases %standard-phases
+         (add-before 'check 'build-extensions
+           (lambda _
+             ;; Cython extensions have to be built before running the tests.
+             (invoke "python" "setup.py" "build_ext" "--inplace"))))))
+    (propagated-inputs (list python-affine
+                             python-attrs
+                             python-certifi
+                             python-click
+                             python-click-plugins
+                             python-cligj
+                             python-numpy
+                             python-setuptools
+                             python-snuggs))
+    (native-inputs (list gdal
+                         python-boto3
+                         python-cython
+                         python-hypothesis
+                         python-packaging
+                         python-pytest
+                         python-pytest-cov
+                         python-shapely))
+    (home-page "https://github.com/rasterio/rasterio")
+    (synopsis "Fast and direct raster I/O for use with Numpy and SciPy")
+    (description "This package implements fast and direct raster I/O for use
+with Numpy and SciPy.")
+    (license license:bsd-3)))
+
 (define-public python-shapely
   (package
     (name "python-shapely")
@@ -2220,14 +2286,14 @@ Unicode-to-LaTeX conversion.")
 (define-public python-cftime
   (package
     (name "python-cftime")
-    (version "1.5.1.1")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cftime" version))
        (sha256
-        (base32 "0l1a22zlhdpgaisibvvm7dhij4vzfm661rnv00y2snpyqxpdgi3d"))))
-    (build-system python-build-system)
+        (base32 "1lp6jrjjgl18csn4bcnphn0l16ag4aynvn7x0kins155p07w0546"))))
+    (build-system pyproject-build-system)
     (propagated-inputs
      (list python-numpy))
     (native-inputs
@@ -3070,6 +3136,32 @@ to the terminal in real time but is also available to the Python program
 for additional processing.")
     (license license:expat)))
 
+(define-public python-fastprogress
+  (package
+    (name "python-fastprogress")
+    (version "1.0.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fastai/fastprogress")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "01h8f786wgmmd3fj98wk1n5id67nsp19gs8bbgims04aciwhvj21"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:tests? #f                  ;there are no tests
+           #:phases #~(modify-phases %standard-phases
+                        ;; XXX: Fails with: "In procedure utime: No such file
+                        ;; or directory".
+                        (delete 'ensure-no-mtimes-pre-1980))))
+    (home-page "https://github.com/fastai/fastprogress")
+    (synopsis "Progress bar for Jupyter Notebook and console")
+    (description
+     "Fastprogress is a progress bar for Jupyter Notebook and console.")
+    (license license:asl2.0)))
+
 (define-public python-case
   (package
     (name "python-case")
@@ -4578,6 +4670,27 @@ for geospatial data.  cligj allows you to quickly build consistent,
 well-tested and interoperable CLIs for handling GeoJSON.")
     (license license:bsd-3)))
 
+(define-public python-cloup
+  (package
+    (name "python-cloup")
+    (version "2.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "cloup" version))
+              (sha256
+               (base32
+                "05c6cjpnf9s72gyn5dckxbmd8rf2kgdzfsl7pqzrnc1lcdl13zmv"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-click))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/janLuke/cloup")
+    (synopsis "Extension library for python-click")
+    (description
+     "Cloup enriches Click with several features that make it more expressive
+and configurable such as option groups, constraints, subcommand aliases,
+subcommands sections and a themeable HelpFormatter.")
+    (license license:bsd-3)))
+
 (define-public python-vcversioner
   (package
     (name "python-vcversioner")
@@ -8404,27 +8517,33 @@ retrieve text and metadata from PDFs as well as merge entire files together.")
 (define-public python-pikepdf
   (package
     (name "python-pikepdf")
-    (version "2.16.1")
+    (version "7.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pikepdf" version))
        (sha256
-        (base32 "1phdpi9cm2pbvgcxqvwr8ck327sxhdw4dnxmzhrbf7hzydmgykg2"))))
+        (base32 "1vp3q85l2w7wpc8kqs26ijg3ivvvgj50z7g14p3pc0zdz8vbi0md"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #false))                ;require python-xmp-toolkit
     (native-inputs
      (list pybind11
-           python-setuptools
-           python-setuptools-scm
-           python-setuptools-scm-git-archive
-           python-toml
-           python-wheel))
+           python-attrs
+           python-coverage
+           python-hypothesis
+           python-psutil
+           python-pytest
+           python-pytest-cov
+           python-pytest-timeout
+           python-pytest-xdist
+           python-dateutil
+           ;; python-xmp-toolkit
+           python-tomli))
     (inputs
      (list qpdf))
     (propagated-inputs
-     (list python-lxml python-pillow))
+     (list python-deprecation python-lxml python-packaging python-pillow))
     (home-page "https://github.com/pikepdf/pikepdf")
     (synopsis "Read and write PDFs with Python")
     (description
@@ -11875,11 +11994,11 @@ applications.")
        (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-problematic-tests
+         (add-before 'build 'configure
            (lambda _
-             ;; FIXME: The test_draft.TestDraftSockets test fails with:
-             ;;   zmq.error.Again: Resource temporarily unavailable
-             (delete-file "zmq/tests/test_draft.py")))
+             ;; Our zeromq package is built with '--enable-drafts'; also
+             ;; enable draft support for pyzmq so the draft test passes.
+             (setenv "ZMQ_DRAFT_API" "1")))
          (add-before 'check 'build-extensions
            (lambda _
              ;; Cython extensions have to be built before running the tests.
@@ -13686,6 +13805,24 @@ asyncio.")
     ;; Either license applies.
     (license (list license:expat license:asl2.0))))
 
+(define-public python-snuggs
+  (package
+    (name "python-snuggs")
+    (version "1.4.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "snuggs" version))
+              (sha256
+               (base32
+                "0yv1wayrw9g6k0c2f721kha7wsv0s1fdlxpf5x7f34iqzq9z272h"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-numpy python-pyparsing))
+    (native-inputs (list python-hypothesis python-pytest))
+    (home-page "https://github.com/mapbox/snuggs")
+    (synopsis "Snuggs are S-expressions for Numpy")
+    (description "Snuggs are S-expressions for Numpy.")
+    (license license:expat)))
+
 (define-public python-pytest-black
   (package
     (name "python-pytest-black")
@@ -17199,6 +17336,45 @@ Eventlet, or gevent.  Tasks can execute asynchronously (in the background) or
 synchronously (wait until ready).")
     (license license:bsd-3)))
 
+(define-public python-cesium
+  (package
+    (name "python-cesium")
+    (version "0.12.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "cesium" version))
+              (sha256
+               (base32
+                "0jr0ycqz9ns6mcskm4sxx92k40fj3v0x9knjaw5ac9f3mpqxsfbv"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; The installed test files contain the /gnu/store location, not the
+          ;; location of the discovered test files from the build directory.
+          ;; The test framework doesn't like this.  The easiest way around
+          ;; this mismatch is to jump to the output directory.
+          (add-before 'check 'check-chdir
+            (lambda _ (chdir #$output))))))
+    (propagated-inputs
+     (list python-click ;XXX required by python-dask
+           python-cloudpickle
+           python-dask
+           python-gatspy
+           python-joblib
+           python-numpy
+           python-pandas
+           python-scikit-learn
+           python-scipy
+           python-toolz))
+    (native-inputs (list python-cython python-pytest python-setuptools-scm))
+    (home-page "https://pypi.org/project/cesium/")
+    (synopsis "Library for time-series feature extraction and processing")
+    (description
+     "Cesium is a library for time-series feature extraction and processing.")
+    (license license:bsd-3)))
+
 (define-public python-translitcodec
   (package
     (name "python-translitcodec")
@@ -17442,13 +17618,13 @@ checking library.")
 (define-public python-codespell
   (package
     (name "python-codespell")
-    (version "2.2.4")
+    (version "2.2.5")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "codespell" version))
         (sha256
-          (base32 "0fp8ihlj8q23qdfryj5pq8srl85vn8k8p6gq3zg9qz957i3j0ihb"))))
+          (base32 "0mmynpblhwbja0vmzbmbb9cgpxdl7b0lxaf9h2zr5dpddvgsv7vd"))))
     (build-system pyproject-build-system)
     (inputs
       (list python-chardet))
@@ -19028,6 +19204,34 @@ feels like an AST.")
 inspection of types defined in the Python standard typing module.")
     (license license:expat)))
 
+(define-public python-lazy-loader
+  (package
+    (name "python-lazy-loader")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "lazy_loader" version))
+              (sha256
+               (base32
+                "12piaj94m5wbx33cxb80xgnsvzgya6cp90zj12qsq064fm8pmp0f"))))
+    (build-system pyproject-build-system)
+    (native-inputs
+     (list python-pytest python-pytest-cov))
+    (propagated-inputs
+     (list python-flit-core))
+    (home-page "https://scientific-python.org/specs/spec-0001/")
+    (synopsis "Load subpackages and functions on demand")
+    (description "@code{python-lazy-loader} makes it easy to load subpackages
+and functions on demand.  Its main features are:
+
+@itemize
+@item Allow subpackages to be made visible to users without incurring import
+costs.
+@item Allow external libraries to be imported only when used, improving import
+times.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public python-lazy-object-proxy
   (package
     (name "python-lazy-object-proxy")
@@ -20377,7 +20581,7 @@ OpenSSH Server for example.")
 (define-public python-pyelftools
   (package
     (name "python-pyelftools")
-    (version "0.28")
+    (version "0.29")
     (home-page "https://github.com/eliben/pyelftools")
     (source
      (origin
@@ -20386,7 +20590,7 @@ OpenSSH Server for example.")
                            (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1z4fx39c9rds0bd4d2fjjq7n05b1nfxl36pmy523x8knm38l4gpr"))
+        (base32 "1mi7i9zlhkkap4q50ciak57ia46mj2jzq0713m3dh0x8j05k9xml"))
        (snippet
         ;; Delete bundled readelf executable.
         '(delete-file "test/external_tools/readelf"))))
@@ -20592,24 +20796,26 @@ from the header, as well as section details and data available.")
 (define-public python-xopen
   (package
     (name "python-xopen")
-    (version "0.8.2")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "xopen" version))
        (sha256
         (base32
-         "1xrlcnd6fri3w97zzzp6vyk4l21yq1lc8r4wksi06hgpkbh4jdq0"))))
-    (build-system python-build-system)
+         "17qda88irg77qdm2kkxq4zgdhwfgykcpdgd4cx3xfpp9k219q7wh"))))
+    (build-system pyproject-build-system)
     (propagated-inputs
-     (list python-setuptools-scm))
+     (list pigz python-isal python-typing-extensions))
+    (native-inputs
+     (list python-pytest python-pytest-timeout python-setuptools-scm))
     (home-page "https://github.com/marcelm/xopen/")
     (synopsis "Open compressed files transparently")
-    (description "This module provides an @code{xopen} function that works like
-     Python's built-in @code{open} function, but can also deal with compressed files.
-     Supported compression formats are gzip, bzip2 and, xz, and are automatically
-     recognized by their file extensions.  The focus is on being as efficient as
-     possible on all supported Python versions.")
+    (description "This module provides an @code{xopen} function that works
+like Python's built-in @code{open} function, but can also deal with compressed
+files.  Supported compression formats are gzip, bzip2 and, xz, and are
+automatically recognized by their file extensions.  The focus is on being as
+efficient as possible on all supported Python versions.")
     (license license:expat)))
 
 (define-public python-cheetah
@@ -23729,13 +23935,13 @@ with PEP 484 argument (and return) type annotations.")
 (define-public bpython
   (package
     (name "bpython")
-    (version "0.23")
+    (version "0.24")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bpython" version))
        (sha256
-        (base32 "0ah5giynavyh70yc0jqgmjaajv3xg5j2y7k9i3q8mi47r2mph04z"))))
+        (base32 "1g9xzl49skghd9q2a8b71gg1n97lfnj9in2kzcmzsj4cgbynywwq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -23760,7 +23966,6 @@ with PEP 484 argument (and return) type annotations.")
            python-requests
            python-curtsies
            python-greenlet
-           python-six
            python-cwcwidth
            python-pyxdg
            ;; optional dependencies
@@ -28569,7 +28774,7 @@ placement and scaling of SVG figures and adding markers, such as labels.")
      (list
       ;; Avoid python-pytest-coverage
       #:test-flags '(list "-c /dev/null")))
-    (propagated-inputs (list python-wcwidth))
+    (propagated-inputs (list python-six python-wcwidth))
     (native-inputs (list python-pytest))
     (home-page "https://github.com/jquast/blessed")
     (synopsis "Wrapper around terminal capabilities")
@@ -29361,14 +29566,14 @@ process.")
 (define-public python-aiofiles
   (package
     (name "python-aiofiles")
-    (version "0.6.0")
+    (version "23.1.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "aiofiles" version))
         (sha256
           (base32
-            "14m01kjxm2j7zyljjj6xlhlgygcsriymbx730gc5jp9xglaina70"))))
+            "0d8n79slihf1lkbh2m6yw51rlq6n6vssljsdacbdpq0rkbglglpd"))))
     (build-system python-build-system)
     (home-page "https://github.com/Tinche/aiofiles")
     (synopsis "File support for @code{asyncio}")
@@ -30263,6 +30468,41 @@ result.")
 lets you write CommonMark inside of Docutils & Sphinx projects.")
     (license license:expat)))
 
+(define-public python-redo
+  ;; The latest release isn't tagged:
+  ;; https://github.com/mozilla-releng/redo/issues/76
+  (let ((commit "50cfe8e3656f253f9e51df3a998530351d2d9a8c")
+        (revision "0"))
+    (package
+      (name "python-redo")
+      (version (git-version "2.0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch) ; There are no tests in the PyPI release.
+         (uri (git-reference
+               (url "https://github.com/mozilla-releng/redo")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0xpylx97qr4ikdhsr208ri41007mpp57a4n8mmlmlqmdljmsdpdb"))))
+      (build-system python-build-system)
+      (native-inputs
+       (list python-mock
+             python-pytest))
+      (arguments
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 (replace 'check
+                   (lambda* (#:key tests? #:allow-other-keys)
+                     (when tests?
+                       ;; The project uses tox to run the tests via pytest.
+                       (invoke "pytest")))))))
+      (home-page "https://github.com/mozilla-releng/redo")
+      (synopsis "Utilities to retry Python callables")
+      (description "Redo provides various means to add seamless ability to
+retry to any Python callable.")
+      (license license:mpl2.0))))
+
 (define-public python-pyhull
   (package
     (name "python-pyhull")
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 64704cf093..82d8d5a7af 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -177,7 +177,7 @@ used as a drop-in substitute for @code{libfec}.")
 (define-public liquid-dsp
   (package
     (name "liquid-dsp")
-    (version "1.5.0")
+    (version "1.6.0")
     (source
      (origin (method git-fetch)
              (uri (git-reference
@@ -185,7 +185,7 @@ used as a drop-in substitute for @code{libfec}.")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
-              (base32 "0m0bhj80rs9yhfwnrlx960lii1cqijz1wr8q93i7m2z91h3v3w0j"))))
+              (base32 "1zw3h2d7kiyxz5zcg5wy4d6pkb07q1pqkc6zz4v9wq8s2v180hnx"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake))
@@ -198,12 +198,8 @@ used as a drop-in substitute for @code{libfec}.")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'delete-static-library
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((version #$(version-major+minor
-                                (package-version this-package))))
-                (delete-file (string-append #$output
-                                            "/lib/libliquid.a."
-                                            version))))))))
+            (lambda _
+              (delete-file (string-append #$output "/lib/libliquid.a")))))))
     (home-page "https://liquidsdr.org")
     (synopsis "Signal processing library for software-defined radios")
     (description
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 9709121a19..a28249d9bd 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -35,7 +35,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (guix build-system ruby))
 
-(define %ruby-rails-version "7.0.4.3")
+(define %ruby-rails-version "7.0.5.1")
 
 (define ruby-rails-monorepo
   (origin
@@ -46,7 +46,7 @@
     (file-name (git-file-name "ruby-rails" %ruby-rails-version))
     (sha256
      (base32
-      "0f5f8r8wdmdmbyl07b0z555arai4ys2j8dj3fy0mq63y9bfhcqqk"))))
+      "0s16i73rqzlrx5icn848mf2nmblmgxk06wj9576dkadsb8pspv0l"))))
 
 (define-public ruby-activesupport
   (package
@@ -109,10 +109,7 @@
     (propagated-inputs
      (list ruby-concurrent
            ruby-i18n
-           ;; This is sub-optimal, but apparently necessary (see:
-           ;; https://github.com/rails/rails/commit/
-           ;; 9766eb4a833c26c64012230b96dd1157ebb8e8a2).
-           ruby-minitest-5.15
+           ruby-minitest
            ruby-tzinfo
            ruby-tzinfo-data))
     (synopsis "Ruby on Rails utility library")
@@ -344,7 +341,9 @@ serialization, internationalization, and testing.")
               ;; A few tests require to set the timezone.
               (setenv "TZDIR" (search-input-directory (or native-inputs inputs)
                                                       "share/zoneinfo")))))))
-    (native-inputs (list tzdata-for-tests))
+    (native-inputs
+     (list tzdata-for-tests
+           ruby-mini-portile-2))
     (propagated-inputs (list ruby-activemodel ruby-activesupport ruby-sqlite3))
     (synopsis "Ruby library to connect to relational databases")
     (description
@@ -883,7 +882,7 @@ Rails generators.  An existing user is @code{rspec-rails}, which uses
               (substitute* "bootsnap.gemspec"
                 (("`git ls-files -z ext lib`")
                  "`find ext lib -type f -print0 | sort -z`")))))))
-    (native-inputs (list ruby-mocha ruby-rake-compiler))
+    (native-inputs (list ruby-mocha-1 ruby-rake-compiler))
     (propagated-inputs (list ruby-msgpack))
     (synopsis "Accelerator for large Ruby/Rails application")
     (description "Bootsnap is a library that plugs into Ruby, with optional
@@ -930,6 +929,7 @@ already included in Rails.")
                  (lambda _
                    (delete-file "gemfiles/rails_7_propshaft.gemfile.lock")
                    (substitute* "gemfiles/rails_7_propshaft.gemfile"
+                     ((".*gem \"byebug\".*") "")
                      ;; Remove appraisal, and add tzinfo-data, which needs to
                      ;; be in the Gemfile to become available.
                      ((".*appraisal.*")
@@ -948,8 +948,7 @@ already included in Rails.")
                    (delete-file "test/npm_integration_test.rb")
                    (delete-file "test/packager_integration_test.rb"))))))
     (native-inputs
-     (list ruby-byebug
-           ruby-capybara
+     (list ruby-capybara
            ruby-propshaft
            ruby-rails
            ruby-rexml
@@ -978,18 +977,25 @@ already included in Rails.")
                 "1i1x24afmn09n48fj4yz2pdm6vlfnq14gism0cgxsyqmlrvsxajn"))))
     (build-system ruby-build-system)
     (arguments
-     (list #:test-target "default"
-           #:phases #~(modify-phases %standard-phases
-                        (add-before 'check 'disable-problematic-tests
-                          (lambda _
-                            (substitute* "test/mime_type_test.rb"
-                              ;; One test fails because of the newer rack
-                              ;; version used (see:
-                              ;; https://github.com/rails/marcel/issues/91).
-                              (("test \"gets content type.*" all)
-                               (string-append
-                                all "    skip('fails on guix')\n"))))))))
-    (native-inputs (list ruby-byebug ruby-nokogiri ruby-rack))
+     (list
+      #:test-target "default"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              ;; Remove byebug dependency
+              (substitute* "test/test_helper.rb"
+                (("require 'byebug'") ""))))
+          (add-before 'check 'disable-problematic-tests
+            (lambda _
+              (substitute* "test/mime_type_test.rb"
+                ;; One test fails because of the newer rack
+                ;; version used (see:
+                ;; https://github.com/rails/marcel/issues/91).
+                (("test \"gets content type.*" all)
+                 (string-append
+                  all "    skip('fails on guix')\n"))))))))
+    (native-inputs (list ruby-nokogiri ruby-rack))
     (propagated-inputs (list ruby-mimemagic))
     (synopsis "MIME type detection using magic numbers, filenames and extensions")
     (description
@@ -1226,7 +1232,13 @@ mountable_engine")
                               ;; valid, store".
                               "test_cache_works_with_etags"
                               ;; Likewise.
-                              "test_cache_works_with_last_modified")))))
+                              "test_cache_works_with_last_modified")
+                  (skip-tests "application/initializers/frameworks_test.rb"
+                              ;; These tests are either broken, or rely on
+                              ;; database availability
+                              "expire schema cache dump if the version can't be checked because the database is unhealthy"
+                              "does not expire schema cache dump if check_schema_cache_dump_version is false and the database unhealthy"
+                              "does not expire schema cache dump if check_schema_cache_dump_version is false")))))
           (add-before 'check 'set-paths
             (lambda _
               (setenv "PATH" (string-append (getenv "PATH") ":"
@@ -1426,7 +1438,7 @@ Stimulus can be used.")
                ;; needs to be in the Gemfile to become available.
                (("group :test do") "group :test do\n  gem 'tzinfo-data'")))))))
     (propagated-inputs
-     (list ruby-actionview ruby-activemodel ruby-arel ruby-bindex ruby-railties))
+     (list ruby-actionview ruby-activemodel ruby-arel ruby-skiptrace ruby-railties))
     (native-inputs
      (list bundler ruby-rails ruby-mocha ruby-simplecov))
     (synopsis "Debugging tool for your Ruby on Rails applications")
diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm
index b85b39d783..e883371928 100644
--- a/gnu/packages/rocm.scm
+++ b/gnu/packages/rocm.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
-;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This program is free software; you can redistribute it and/or modify it
 ;;; under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@
 
 ;; The components are tightly integrated and can only be upgraded as a unit. If
 ;; you want to upgrade ROCm, bump this version number and update hashes below.
-(define %rocm-version "5.1.3")
+(define %rocm-version "5.6.0")
 
 (define-public rocm-cmake
   (package
@@ -51,7 +51,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1bn3l04qnc1ls9abs15s1sgsrwmkfk0g8jgdjqshrcr3ab8ffcpf"))))
+                "183s2ksn142r7nl7l56qvyrgvvkdgqfdzmgkfpp4a6g9mjp88ady"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; Tests try to use git commit
     (native-inputs (list git))
@@ -73,13 +73,13 @@ tasks needed for the ROCM software stack.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "07vkrxxc49i72r0lcl6dap0qcw1bignsw920rj4h1mac3bwa8q4j"))))
+                "1jg96ycy99s9fis8sk1b7qx5p33anw16mqlm07zqbnhry2gqkcbh"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
        (list "-DCMAKE_SKIP_BUILD_RPATH=FALSE"
              "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE")))
-    (inputs `(("llvm" ,llvm-for-rocm)))
+    (inputs (list llvm-for-rocm))
     (home-page "https://github.com/RadeonOpenCompute/ROCm-Device-Libs")
     (synopsis "ROCm Device libraries")
     (description "AMD-specific device-side language runtime libraries, namely
@@ -98,7 +98,7 @@ oclc, ocml, ockl, opencl, hip and hc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1achb3216cbm7x2d05xj7j7ivn24y11q2d2p5whw3v4ykgfqql6f"))
+                "15s2dx0pdvjv3xfccq5prkplcbwps8x9jas5qk93q7kv8wx57p3b"))
               (patches
                (search-patches "rocm-comgr-3.1.0-dependencies.patch"))))
     (build-system cmake-build-system)
@@ -108,10 +108,7 @@ oclc, ocml, ockl, opencl, hip and hc.")
          (add-after 'unpack 'chdir
            (lambda _
              (chdir "lib/comgr"))))))
-    (inputs
-     `(("rocm-device-libs" ,rocm-device-libs)
-       ("llvm" ,llvm-for-rocm)
-       ("lld" ,lld)))
+    (inputs (list llvm-for-rocm rocm-device-libs))
     (home-page "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport")
     (synopsis "ROCm Code Object Manager")
     (description "The Comgr library provides APIs for compiling and inspecting
@@ -130,7 +127,7 @@ AMDGPU code objects.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0k5bchq1jhgraqrhj9q47b45n33wnd2ipwrrj39q51jzxmyyzxj2"))))
+                "0v8j4gkbb21gqqmz1b4nmampx5ywva99ipsx8lcjr5ckcg84fn9x"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; Not sure how to run tests.
     (inputs (list libdrm numactl))
@@ -153,27 +150,32 @@ driver.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1j1cy64w13plgsy20mir4xm6x4xnwkyil3g03xnda6ynhd7bkhv7"))))
+                "07wh7s1kgvpw8ydxmr2wvvn05fdqcmcc20qjbmnc3cbbhxviksyr"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags
-       `(,(string-append
-           "-DBITCODE_DIR="
-           (assoc-ref %build-inputs "rocm-device-libs")
-           "/amdgcn/bitcode/"))
-       #:tests? #f ; No tests.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir
-           (lambda _
-             (chdir "src"))))))
+     (list
+      #:tests? #f ; No tests.
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'add-rocm-device-lib-path
+            (lambda _
+              (substitute* "src/image/blit_src/CMakeLists.txt"
+                (("-O2")
+                 (string-append
+                  "-O2 --rocm-device-lib-path="
+                  #$(this-package-input "rocm-device-libs")
+                  "/amdgcn/bitcode/")))))
+          (add-after 'add-rocm-device-lib-path 'chdir
+            (lambda _
+              (chdir "src"))))))
     (inputs
-     `(("libelf" ,libelf)
-       ("numactl" ,numactl)
-       ("llvm" ,llvm-for-rocm)
-       ("roct-thunk-interface" ,roct-thunk-interface)
-       ("rocm-device-libs" ,rocm-device-libs))) ; For bitcode.
-    (native-inputs (list xxd))
+     (list libdrm
+           libelf
+           llvm-for-rocm
+           numactl
+           rocm-device-libs ; For bitcode.
+           roct-thunk-interface))
+    (native-inputs (list pkg-config xxd))
     (home-page "https://github.com/RadeonOpenCompute/ROCR-Runtime")
     (synopsis "ROCm Platform Runtime")
     (description "User-mode API interfaces and libraries necessary for host
@@ -182,7 +184,7 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
 
 ;; This is the source only for ROCclr as from v4.5 it should only be built as
 ;; part of a client.  A warning is output if attempting to build stand-alone
-;; and there is no install.  The previous version is kept as rocclr-4.
+;; and there is no install.
 (define rocclr-src
   (origin
     (method git-fetch)
@@ -191,7 +193,8 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
           (commit (string-append "rocm-" %rocm-version))))
     (sha256
      (base32
-      "0x1frzpz9j1s516vscbdm9g5cqirvv5w7wmq2kyljcygnci7yqar"))))
+      "1fzvnngxcvxscn718cqfglm4izccx88zjdr3g5ldfqw7hyd034sk"))
+    (patches (search-patches "rocclr-5.6.0-enable-gfx800.patch"))))
 
 (define-public rocm-opencl-runtime
   (package
@@ -206,11 +209,9 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rirvc8h0ahicw1vw4js4jq5gw25x47gmg3gczmyz97c72wvgfiv"))
+                "1azfxf0ac3mnbyfgn30bz5glwlmaigzdz0cd29jzc4b05hks1yr3"))
               (patches
                (search-patches
-                ;; Do not install libOpenCL, which ocl-icd provides.
-                "rocm-opencl-runtime-4.3-noopencl.patch"
                 ;; Guix includes a program clinfo already.
                 "rocm-opencl-runtime-4.3-noclinfo.patch"))))
     (build-system cmake-build-system)
@@ -222,7 +223,12 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
          (string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package))
          ;; The ROCclr source is needed to build the runtime.
          (string-append "-DROCCLR_PATH=" #$rocclr-src)
-         (string-append "-DROCM_PATH=" #$output))
+         (string-append "-DROCM_PATH=" #$output)
+         ;; Don't build the ICD loader as we have the opencl-icd-loader
+         ;; package already.
+         "-DBUILD_ICD=OFF"
+         ;; Don't duplicate the install in an "opencl" directory as well.
+         "-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'create-icd
@@ -238,6 +244,7 @@ applications to launch compute kernels to available HSA ROCm kernel agents.")
      (list glew
            mesa
            numactl
+           opencl-headers
            opencl-icd-loader
            rocm-comgr
            rocr-runtime))
@@ -258,18 +265,19 @@ and in-process/in-memory compilation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0hdfbvn55h5lk5s8vqlmri5r94vlas8v8yjxwd9d70igslk0kr67"))))
+                "150bvyxp9krq8f7jqd1g5b4l85rih4ch322y4sg1hnciqpabn6a6"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; No tests.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-binary-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "rocminfo.cc"
-               (("lsmod")
-                (string-append (assoc-ref inputs "kmod") "/bin/lsmod"))
-               (("grep") (which "grep"))))))))
+     (list
+      #:tests? #f ; No tests.
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-binary-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "rocminfo.cc"
+                (("lsmod")
+                 (search-input-file inputs "bin/lsmod"))
+                (("grep") (search-input-file inputs "bin/grep"))))))))
     (inputs
      (list rocr-runtime kmod))
     (home-page "https://github.com/RadeonOpenCompute/rocminfo")
@@ -290,7 +298,8 @@ available to ROCm and show their properties.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rnn2ms68mvzpcp31dk304sfqnv352i7vb48k7rw3qjahhrjm48c"))))
+                "0ca6r8xijw3a3hrlgkqqsf3iqyia6sdmidgmjl12f5vypxzp5kmm"))
+              (patches (search-patches "rocm-bandwidth-test-5.5.0-fix-includes.patch"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; No tests.
     (inputs (list rocr-runtime))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index f60a0ec537..45b102daa3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -262,7 +262,7 @@ a focus on simplicity and productivity.")
      (modify-inputs (package-inputs ruby-3.1)
        (prepend libyaml)))))
 
-(define-public ruby ruby-2.7)
+(define-public ruby ruby-3.1)
 
 (define-public mruby
   (package
@@ -385,32 +385,18 @@ a menu system for providing multiple options to the user.")
 (define-public ruby-hoe
   (package
     (name "ruby-hoe")
-    (version "3.21.0")
+    (version "4.0.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "hoe" version))
               (sha256
                (base32
-                "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
+                "0r2hy7mq9jd9hsbvskd9sxfbagc92adnn7abzxbda05sscbf46hn"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
-         ;; variable is set, so unset it for the duration of the tests.
-         ;;
-         ;; TestHoe#test_possibly_better
-         ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
-         ;; Expected: 2019-11-12 00:00:00 UTC
-         ;; Actual: 1970-01-01 00:00:00 UTC
-         (add-before 'check 'unset-SOURCE-DATE-EPOCH
-           (lambda _
-             (unsetenv "SOURCE_DATE_EPOCH")
-             #t))
-         (add-after 'check 'set-SOURCE-DATE-EPOCH-again
-           (lambda _
-             (setenv "SOURCE_DATE_EPOCH" "1")
-             #t)))))
+     (list
+      ;; Circular dependency with minitest
+      #:tests? #f))
     (synopsis "Ruby project management helper")
     (description
      "Hoe is a rake/rubygems helper for project Rakefiles.  It helps manage,
@@ -421,6 +407,17 @@ announcement.")
     (home-page "https://www.zenspider.com/projects/hoe.html")
     (license license:expat)))
 
+(define-public ruby-hoe-3
+  (package
+    (inherit ruby-hoe)
+    (version "3.26.0")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "hoe" version))
+              (sha256
+               (base32
+                "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
+
 (define-public ruby-rake-compiler
   (package
     (name "ruby-rake-compiler")
@@ -494,13 +491,13 @@ hosts by wrapping the @file{rsync} binary.")
 (define-public ruby-i18n
   (package
     (name "ruby-i18n")
-    (version "1.7.0")
+    (version "1.13.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "i18n" version))
               (sha256
                (base32
-                "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
+                "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
@@ -563,6 +560,17 @@ Eval Print Loop).")
     (home-page "https://github.com/ruby/irb")
     (license license:bsd-2)))
 
+(define-public ruby-irb-1.1.1
+  (package
+    (inherit ruby-irb)
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "irb" version))
+              (sha256
+               (base32
+                "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v"))))))
+
 (define-public ruby-iruby
   (package
     (name "ruby-iruby")
@@ -670,6 +678,15 @@ groups.")
               (sha256
                (base32
                 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
+    (arguments
+     (cons*
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "lib/rspec/core/ruby_project.rb"
+                (("File\\.exists\\?") "File.exist?")))))
+      (package-arguments ruby-rspec-core)))
     (propagated-inputs `())))
 
 (define-public ruby-date
@@ -768,6 +785,27 @@ re-sourced, but they will be rendered in a single-line format.")
     (home-page "https://github.com/rspec-given/sorcerer")
     (license license:expat)))
 
+(define-public ruby-sorted-set
+  (package
+    (name "ruby-sorted-set")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "sorted_set" version))
+              (sha256
+               (base32
+                "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     (list ruby-rbtree ruby-set))
+    (synopsis
+     "Ruby Set variant whose elements are sorted in ascending order")
+    (description
+     "This package implements a variant of Set whose elements are sorted in
+ascending order")
+    (home-page "https://github.com/knu/sorted_set")
+    (license license:bsd-2)))
+
 (define-public ruby-given-core
   (package
     (name "ruby-given-core")
@@ -934,7 +972,7 @@ support for stubbing and mocking.")
 (define-public ruby-rspec-block-is-expected
   (package
     (name "ruby-rspec-block-is-expected")
-    (version "1.0.2")
+    (version "1.0.5")
     (source (origin
               (method git-fetch)        ;for tests
               (uri (git-reference
@@ -943,7 +981,7 @@ support for stubbing and mocking.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1w8mj00k8am24yw7lbhg616m111p7h7bbfxaw7np4i7wnlwzm8fk"))))
+                "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass"))))
     (build-system ruby-build-system)
     (arguments
      (list #:phases #~(modify-phases %standard-phases
@@ -954,7 +992,12 @@ support for stubbing and mocking.")
                               (("RuboCop::RakeTask.new") ""))
                             ;; Contains extraneous requirements not actually
                             ;; needed for the test suite.
-                            (delete-file "Gemfile"))))))
+                            (delete-file "Gemfile")))
+                        (add-before 'build 'drop-signing-key-requirement
+                          (lambda _
+                            (substitute* "rspec-block_is_expected.gemspec"
+                              (("spec.signing_key =.*")
+                               "spec.signing_key = nil")))))))
     (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations))
     (propagated-inputs (list ruby-rspec-core))
     (synopsis "Simplify testing of blocks in RSpec")
@@ -1174,18 +1217,28 @@ specified in a \"Gemfile\", as well as their dependencies.")
                 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'do-not-use-rvm
-          (lambda _
-            (substitute* "rakelib/tags.rake"
-              (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
-            #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "rakelib/tags.rake"
+                (("File\\.exists\\?") "File.exist?"))
+
+              ;; TODO This test is broken
+              ;; https://github.com/tenderlove/builder/issues/13
+              (substitute* "test/test_blankslate.rb"
+                (("test_late_included_module_in_kernel_is_ok")
+                 "test_late_included_module_in_kernel_is_ok
+    skip(\"test expected to fail\")
+"))
+              (substitute* "rakelib/tags.rake"
+                (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")))))))
     (synopsis "Ruby library to create structured data")
     (description "Builder provides a number of builder objects that make it
 easy to create structured data.  Currently the following builder objects are
 supported: XML Markup and XML Events.")
-    (home-page "https://github.com/jimweirich/builder")
+    (home-page "https://github.com/tenderlove/builder")
     (license license:expat)))
 
 (define-public ruby-bump
@@ -1296,9 +1349,27 @@ script.")
                (base32
                 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
     (build-system ruby-build-system)
-    ;; FIXME: There are no unit tests.  The tests are demonstrations of the
-    ;; "saikuro" tool.
-    (arguments `(#:tests? #f))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-module-resolution
+            (lambda _
+              (substitute* "lib/saikuro.rb"
+                ;; irb 1.2.0 or later doesn't have RubyToken
+                (("require 'irb/ruby-lex'")
+                 "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'"))))
+          (delete 'check)
+          (add-after 'install 'check
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (saikuro (string-append out "/bin/saikuro")))
+                (setenv "GEM_PATH" (string-append
+                                    (getenv "GEM_PATH") ":"
+                                    #$output "/lib/ruby/vendor_ruby"))
+                (invoke saikuro "--cyclo" "--token" "--input_directory" "tests")))))))
+    (propagated-inputs (list ruby-irb-1.1.1
+                             ruby-e2mmap)) ;required by rubygems
     (synopsis "Cyclomatic complexity analyzer")
     (description "Saikuro is a Ruby cyclomatic complexity analyzer.  When
 given Ruby source code Saikuro will generate a report listing the cyclomatic
@@ -1314,29 +1385,30 @@ line of code.")
 (define-public ruby-awesome-print
   (package
     (name "ruby-awesome-print")
-    (version "1.8.0")
+    (version "1.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "awesome_print" version))
        (sha256
         (base32
-         "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h"))))
+         "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             ;; Remove failing test.
-             (for-each delete-file
-                       '("spec/ext/nokogiri_spec.rb"
-                         "spec/colors_spec.rb"
-                         "spec/formats_spec.rb"
-                         "spec/methods_spec.rb"
-                         "spec/misc_spec.rb"
-                         "spec/objects_spec.rb"))
-             (invoke "rspec" "-c" "spec"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda _
+              ;; Remove failing test.
+              (for-each delete-file
+                        '("spec/ext/nokogiri_spec.rb"
+                          "spec/colors_spec.rb"
+                          "spec/formats_spec.rb"
+                          "spec/methods_spec.rb"
+                          "spec/misc_spec.rb"
+                          "spec/objects_spec.rb"))
+              (invoke "rspec" "-c" "spec"))))))
     (native-inputs
      (list ruby-nokogiri ruby-rspec ruby-simplecov))
     (synopsis "Pretty print Ruby objects to visualize their structure")
@@ -1526,6 +1598,16 @@ converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
     (home-page "https://asciidoctor.org")
     (license license:expat)))
 
+(define-public ruby-asciidoctor/minimal
+  (hidden-package
+   (package
+     (inherit ruby-asciidoctor)
+     (arguments
+      (ensure-keyword-arguments
+       (package-arguments ruby-asciidoctor)
+       (list #:tests? #f)))
+     (native-inputs '()))))
+
 (define-public ruby-asciidoctor-multipage
   (package
     (name "ruby-asciidoctor-multipage")
@@ -1876,6 +1958,37 @@ enforcing & linting tool.")
            ruby-rubocop-ast
            ruby-rubocop-capybara))))
 
+(define-public ruby-rubocop-packaging
+  (package
+    (name "ruby-rubocop-packaging")
+    (version "0.5.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/utkarsh2102/rubocop-packaging")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list #:test-target "spec"))
+    (propagated-inputs
+     (list ruby-rubocop))
+    (native-inputs
+     (list ruby-rspec
+           ruby-yard
+           ruby-bump))
+    (synopsis
+     "Collection of RuboCop checks for downstream compatibility issues")
+    (description
+     "This package provides a collection of RuboCop cops to check for
+downstream compatibility issues in the Ruby code.")
+    (home-page "https://github.com/utkarsh2102/rubocop-packaging")
+    (license license:expat)))
+
 (define-public ruby-rubocop-performance
   (package
     (name "ruby-rubocop-performance")
@@ -2080,7 +2193,7 @@ to save time in the following ways:
 (define-public ruby-chunky-png
   (package
     (name "ruby-chunky-png")
-    (version "1.3.14")
+    (version "1.4.0")
     (source
      (origin
        (method git-fetch)
@@ -2089,17 +2202,17 @@ to save time in the following ways:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
+        (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-bundler
-           (lambda _
-             (substitute* (find-files "." "\\.rb$")
-               (("require.*bundler/setup.*") ""))
-             #t)))))
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-bundler
+            (lambda _
+              (substitute* (find-files "." "\\.rb$")
+                (("require.*bundler/setup.*") "")))))))
     (native-inputs
      (list bundler ruby-rspec ruby-standard ruby-yard))
     (synopsis "Ruby library to handle PNG images")
@@ -2137,14 +2250,14 @@ or a background processing library.")
 (define-public ruby-text-hyphen
   (package
     (name "ruby-text-hyphen")
-    (version "1.4.1")
+    (version "1.5.0")
     (source
       (origin
         (method url-fetch)
         (uri (rubygems-uri "text-hyphen" version))
         (sha256
           (base32
-            "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
+            "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4"))))
     (build-system ruby-build-system)
     (native-inputs
      (list ruby-hoe))
@@ -2402,27 +2515,27 @@ features:
 (define-public ruby-contracts
   (package
     (name "ruby-contracts")
-    (version "0.16.0")
+    (version "0.17")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "contracts" version))
        (sha256
         (base32
-         "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
+         "0gfybfsb6kqxvvcrv1q7bfjaxmq73pf3vqy4bbzarkbajil05ii5"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         ;; Don't run or require rubocop, the code linting tool, as this is a
-         ;; bit unnecessary.
-         (add-after 'unpack 'dont-run-rubocop
-          (lambda _
-            (substitute* "Rakefile"
-              ((".*rubocop.*") "")
-              ((".*RuboCop.*") ""))
-            #t)))))
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Don't run or require rubocop, the code linting tool, as this is a
+          ;; bit unnecessary.
+          (add-after 'unpack 'dont-run-rubocop
+            (lambda _
+              (substitute* "Rakefile"
+                ((".*rubocop.*") "")
+                ((".*RuboCop.*") "")))))))
     (native-inputs
      (list ruby-rspec))
     (synopsis "Method contracts for Ruby")
@@ -3000,14 +3113,14 @@ the GNOME Libxml2 XML toolkit.")
 (define-public ruby-lino
   (package
     (name "ruby-lino")
-    (version "1.1.0")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "lino" version))
        (sha256
         (base32
-         "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
+         "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; No included tests
@@ -3021,6 +3134,47 @@ error streams.")
     (home-page "https://github.com/tobyclemson/lino")
     (license license:expat)))
 
+(define-public ruby-x25519
+  (package
+    (name "ruby-x25519")
+    (version "1.0.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/RubyCrypto/x25519")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list #:test-target "spec"
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'remove-unnecessary-dependencies
+                          (lambda _
+                            (substitute* "Gemfile"
+                              ((".*rubocop.*")
+                               ""))
+                            (substitute* "Rakefile"
+                              (("require \"rubocop/rake_task\"")
+                               "")
+                              (("RuboCop::RakeTask.new")
+                               ""))))
+                        (add-before 'build 'compile
+                          (lambda _
+                            (invoke "rake" "compile"))))))
+    (native-inputs (list ruby-rake-compiler ruby-rspec))
+    (synopsis "Cryptography library for Ruby providing the X25519
+Diffie-Hellman function")
+    (description
+     "The x25519 gem is an efficient public key cryptography library for
+Ruby providing key exchange/agreement via the X25519 (as known as
+Curve25519) Elliptic Curve Diffie-Hellman function as described in
+@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.")
+    (home-page "https://github.com/RubyCrypto/x25519")
+    (license license:bsd-3)))
+
 (define-public ruby-xml-simple
   (package
     (name "ruby-xml-simple")
@@ -3067,7 +3221,7 @@ generating XPath expressions.")
 (define-public ruby-thor
   (package
     (name "ruby-thor")
-    (version "1.2.1")
+    (version "1.2.2")
     (source (origin
               ;; Pull from git because the gem has no tests.
               (method git-fetch)
@@ -3077,7 +3231,7 @@ generating XPath expressions.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1vjm628ks5kw8q6dskh38dqyz2j8c3n694wsqkj4jb4jrn6rkfzx"))))
+                "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z"))))
     (build-system ruby-build-system)
     (arguments
      (list
@@ -3137,57 +3291,89 @@ same log file.")
 (define-public ruby-rbnacl
   (package
     (name "ruby-rbnacl")
-    (version "6.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "rbnacl" version))
-       (sha256
-        (base32
-         "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
+    (version "7.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rbnacl" version))
+              (sha256
+               (base32
+                "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-unnecessary-dependencies
-           (lambda _
-             ;; Coveralls relates to a network service, and Rubocop to code
-             ;; linting and both are unnecessary to run the tests
-             (substitute* "Gemfile"
-               ((".*rubocop.*") "\n")
-               ((".*guard-rspec.*") "\n")
-               ((".*coveralls.*") "\n"))
-             (substitute* "spec/spec_helper.rb"
-               (("require \"coveralls\"") "")
-               (("Coveralls.wear!") ""))
-             #t))
-         (add-after 'unpack 'use-libsodium-from-store
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("lib/rbnacl/init.rb"
-                            "lib/rbnacl/sodium.rb")
-               (("ffi_lib \\[.+\\]")
-                (string-append "ffi_lib [\""
-                               (assoc-ref inputs "libsodium") "/lib/libsodium.so"
-                               "\"]")))
-             #t))
-         ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "rspec"))
-             #t)))))
-    (propagated-inputs
-     (list ruby-ffi))
-    (inputs
-     (list libsodium))
-    (native-inputs
-     (list bundler ruby-rspec))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-unnecessary-dependencies
+            (lambda _
+              ;; Coveralls relates to a network service, and Rubocop to code
+              ;; linting and both are unnecessary to run the tests
+              (substitute* "Gemfile"
+                ((".*rubocop.*")
+                 "\n")
+                ((".*guard-rspec.*")
+                 "\n")
+                ((".*coveralls.*")
+                 "\n"))
+              (substitute* "spec/spec_helper.rb"
+                (("require \"coveralls\"")
+                 "")
+                (("Coveralls.wear!")
+                 ""))))
+          (add-after 'unpack 'use-libsodium-from-store
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("lib/rbnacl/init.rb"
+                             "lib/rbnacl/sodium.rb")
+                (("ffi_lib \\[.+\\]")
+                 (string-append "ffi_lib [\""
+                                (assoc-ref inputs "libsodium")
+                                "/lib/libsodium.so" "\"]")))))
+          ;; Run Rspec directly to avoid the Rubocop dependency in the
+          ;; Rakefile
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rspec")))))))
+    (propagated-inputs (list ruby-ffi))
+    (inputs (list libsodium))
+    (native-inputs (list bundler ruby-rspec))
     (synopsis "Ruby FFI binding to libsodium")
     (description
      "This package provides Ruby FFI bindings to the Networking and
 Cryptography (NaCl) library, also known as libsodium.  This provides a
 high-level toolkit for building cryptographic systems and protocols.")
-    (home-page "https://github.com/crypto-rb/rbnacl")
+    (home-page "https://github.com/RubyCrypto/rbnacl")
+    (license license:expat)))
+
+(define-public ruby-rbtree
+  (package
+    (name "ruby-rbtree")
+    (version "0.4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rbtree" version))
+              (sha256
+               (base32
+                "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'extconf
+            (lambda _
+              (invoke "ruby" "extconf.rb")
+              (invoke "make" "install" (string-append "prefix=" #$output))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "ruby" "-I." "test.rb")))))))
+    (synopsis "Ruby implementation of a sorted associative collection")
+    (description
+     "This package provides a RBTree is a sorted associative collection that
+is implemented with a Red-Black Tree.  It maps keys to values like a Hash, but
+maintains its elements in ascending key order.  The interface is the almost
+identical to that of Hash.")
+    (home-page "http://rbtree.rubyforge.org/")
     (license license:expat)))
 
 (define-public ruby-hkdf
@@ -3513,27 +3699,28 @@ engine.")
           "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
   (build-system ruby-build-system)
   (arguments
-   '(#:phases
-     (modify-phases %standard-phases
-       (add-after 'unpack 'remove-unnecessary-dependencies
-         (lambda _
-           ;; pry is a debugging tool, and is unnecessary when running the
-           ;; tests
-           (substitute* "spec/lib/hamster/vector/insert_spec.rb"
-             (("require 'pry'") ""))
-           (substitute* "spec/spec_helper.rb"
-             (("require \"pry\"") "")
-             ;; CodeClimate is an online service, and is unnecessary for
-             ;; running the tests
-             (("require \"codeclimate-test-reporter\"") "")
-             (("CodeClimate.*\n") ""))
-           #t))
-       ;; No Rakefile is included, so run rspec directly.
-       (replace 'check
-         (lambda* (#:key tests? #:allow-other-keys)
-           (when tests?
-             (invoke "rspec"))
-           #t)))))
+   (list
+    ;; Only supports Ruby 2 currently
+    #:ruby ruby-2.7
+    #:phases
+    #~(modify-phases %standard-phases
+        (add-after 'unpack 'remove-unnecessary-dependencies
+          (lambda _
+            ;; pry is a debugging tool, and is unnecessary when running the
+            ;; tests
+            (substitute* "spec/lib/hamster/vector/insert_spec.rb"
+              (("require 'pry'") ""))
+            (substitute* "spec/spec_helper.rb"
+              (("require \"pry\"") "")
+              ;; CodeClimate is an online service, and is unnecessary for
+              ;; running the tests
+              (("require \"codeclimate-test-reporter\"") "")
+              (("CodeClimate.*\n") ""))))
+        ;; No Rakefile is included, so run rspec directly.
+        (replace 'check
+          (lambda* (#:key tests? #:allow-other-keys)
+            (when tests?
+              (invoke "ruby" (which "rspec"))))))))
   (propagated-inputs
    (list ruby-concurrent))
   (native-inputs
@@ -3618,18 +3805,18 @@ It is a low-dependency variant of ruby-hydra.")
     (inherit ruby-hydra-minimal)
     (name "ruby-hydra")
     (arguments
-        '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'make-files-writable
-                      (lambda _
-                        (for-each make-file-writable (find-files "."))
-                        #t))
-                    (replace 'check
-                      (lambda _
-                        (invoke "rspec"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'make-files-writable
+            (lambda _
+              (for-each make-file-writable (find-files "."))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rspec")))))))
     (native-inputs
      (list ruby-rspec))
-    (propagated-inputs
-     (list ruby-byebug))
     (description
      "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
 
@@ -3678,8 +3865,6 @@ It is a low-dependency variant of ruby-hydra.")
     (build-system ruby-build-system)
     ;; Tests need Internet access.
     (arguments `(#:tests? #f))
-    (native-inputs
-     (list ruby-rspec ruby-yard))
     (synopsis "Rake tasks for managing and releasing Ruby Gems")
     (description "Rubygems-task provides Rake tasks for managing and releasing
 Ruby Gems.")
@@ -4083,14 +4268,26 @@ for breakage.")
 (define-public ruby-connection-pool
   (package
     (name "ruby-connection-pool")
-    (version "2.2.2")
+    (version "2.4.1")
     (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "connection_pool" version))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mperham/connection_pool")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
+                "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5"))))
     (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "Rakefile"
+                (("require \"standard/rake\"") "")
+                ((":\"standard:fix\",") "")))))))
     (native-inputs
      (list bundler))
     (synopsis "Generic connection pool for Ruby")
@@ -4102,7 +4299,7 @@ interface for Ruby programs.")
 (define-public ruby-fast-gettext
   (package
     (name "ruby-fast-gettext")
-    (version "2.0.3")
+    (version "2.3.0")
     (home-page "https://github.com/grosser/fast_gettext")
     (source (origin
               (method git-fetch)
@@ -4111,34 +4308,16 @@ interface for Ruby programs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
+                "0ba1wv96qarvvh19s8m1cgd26a9jgil4wl8nwgv4sl9fg5sqgksm"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "spec"
-       #:phases (modify-phases %standard-phases
-                  (add-before 'check 'remove-version-constraints
-                    (lambda _
-                      (delete-file "Gemfile.lock")
-                      #t))
-                  (add-before 'check 'remove-activerecord-test
-                    (lambda _
-                      ;; FIXME: This test fails because ActiveRecord depends on
-                      ;; a different version of ruby-sqlite than the currently
-                      ;; available one.
-                      (delete-file
-                       "spec/fast_gettext/translation_repository/db_spec.rb")
-                      #t))
-                  (add-before 'check 'disable-i18n-test
-                    (lambda _
-                      ;; XXX: This test checks i18n intricasies with Rails 3 and
-                      ;; automatically disables itself for Rails 4.0, but does
-                      ;; not know about newer versions as it has not been updated
-                      ;; since 2014.  Disable for later versions of Rails too.
-                      (substitute* "spec/fast_gettext/vendor/string_spec.rb"
-                        (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
-                                         "ActiveRecord::VERSION::MINOR == 0"))
-                         "ActiveRecord::VERSION::MAJOR >= 4"))
-                      #t)))))
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'remove-version-constraints
+            (lambda _
+              (delete-file "Gemfile.lock"))))))
     (native-inputs
      (list ;; For tests.
            ruby-activerecord
@@ -4147,6 +4326,7 @@ interface for Ruby programs.")
            ruby-forking-test-runner
            ruby-i18n
            ruby-rubocop
+           ruby-rubocop-packaging
            ruby-rspec
            ruby-single-cov
            ruby-sqlite3
@@ -4207,12 +4387,13 @@ fiber, and defaults to a shared thread-local state.")
                 "0pd8gqgy67rp1baq5r7himl0r9jzv5kqlhdmqh8wngynv548w2ai"))))
     (build-system ruby-build-system)
     (arguments
-     (list #:phases
+     (list #:ruby ruby-2.7
+           #:phases
            #~(modify-phases %standard-phases
                (replace 'check
                  (lambda* (#:key tests? #:allow-other-keys)
                    (when tests?
-                     (invoke "rspec")))))))
+                     (invoke "ruby" (which "rspec"))))))))
     (native-inputs (list ruby-rspec ruby-simplecov))
     (synopsis "Fuzzing, randomization, and stress testing library")
     (description "Flores is a fuzzing, randomization, and stress library to
@@ -4223,16 +4404,18 @@ help tests uncover more bugs.")
 (define-public ruby-net-http-persistent
   (package
     (name "ruby-net-http-persistent")
-    (version "3.0.0")
+    (version "4.0.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "net-http-persistent" version))
               (sha256
                (base32
-                "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
+                "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list ruby-connection-pool ruby-hoe))
+     (list ruby-connection-pool
+           ruby-hoe
+           ruby-rake-manifest))
     (synopsis "Persistent HTTP connection manager")
     (description "Net::HTTP::Persistent manages persistent HTTP connections
 using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
@@ -4421,7 +4604,7 @@ including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
     ;; dependency cycle we disable tests.
     (arguments `(#:tests? #f))
     (native-inputs
-     (list bundler ruby-yard))
+     (list bundler ruby-yard/minimal))
     (synopsis "Ruby library providing basic localization APIs")
     (description
      "Ruby-Locale is the pure ruby library which provides basic APIs for
@@ -4488,22 +4671,22 @@ Soundex, Metaphone, Double Metaphone, Porter Stemming.")
 (define-public ruby-gettext
   (package
     (name "ruby-gettext")
-    (version "3.1.7")
+    (version "3.4.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "gettext" version))
               (sha256
                (base32
-                "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
+                "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k"))))
     (build-system ruby-build-system)
     ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
     ;; which needs ruby-gettext.  To break the dependency cycle we disable
     ;; tests.
     (arguments `(#:tests? #f))
     (propagated-inputs
-     (list ruby-locale ruby-text))
+     (list ruby-locale ruby-text ruby-erubi))
     (native-inputs
-     (list bundler ruby-yard))
+     (list bundler ruby-yard/minimal))
     (synopsis "GNU gettext-like program for Ruby")
     (description
      "Gettext is a GNU gettext-like program for Ruby.  The catalog
@@ -4539,17 +4722,17 @@ use GNU gettext tools for maintenance.")
 (define-public ruby-test-construct
   (package
     (name "ruby-test-construct")
-    (version "2.0.1")
+    (version "2.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "test_construct" version))
        (sha256
         (base32
-         "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
+         "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list bundler ruby-mocha ruby-rspec))
+     (list bundler ruby-mocha-1 ruby-rspec))
     (synopsis "Creates temporary files and directories for testing")
     (description
      "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
@@ -4583,6 +4766,16 @@ It allows writing tests, checking results and automated testing in Ruby.")
     (home-page "https://test-unit.github.io/")
     (license (list license:psfl license:ruby))))
 
+(define-public ruby-test-unit/minimal
+  (hidden-package
+   (package
+     (inherit ruby-test-unit)
+     (arguments
+      (ensure-keyword-arguments
+       (package-arguments ruby-test-unit)
+       (list #:tests? #f)))
+     (native-inputs '()))))
+
 (define-public ruby-mapping
   (package
     (name "ruby-mapping")
@@ -4597,7 +4790,16 @@ It allows writing tests, checking results and automated testing in Ruby.")
                (base32
                 "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs"))))
     (build-system ruby-build-system)
-    (arguments (list #:test-target "spec"))
+    (arguments
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "spec/mapping/model_spec.rb"
+                ;; From https://github.com/ioquatix/mapping/pull/2
+                (("offset:") "offset =")))))))
     (native-inputs (list ruby-rspec))
     (synopsis "Map model objects based on their class to a given output model")
     (description "The @code{mapping} gem maps model objects based on their
@@ -4620,17 +4822,24 @@ another.")
          "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; Run rspec manually without using the Rakefile, as the versions of
-         ;; Rake and RSpec 2 are incompatible:
-         ;;
-         ;; NoMethodError: undefined method `last_comment'
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "rspec"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Run rspec manually without using the Rakefile, as the versions of
+          ;; Rake and RSpec 2 are incompatible:
+          ;;
+          ;; NoMethodError: undefined method `last_comment'
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Skip some broken tests, this should be redundant with the
+              ;; next release
+              (delete-file "spec/markaby/markaby_test_unit_spec.rb")
+              (substitute* "spec/markaby/markaby_spec.rb"
+                (("generated.should == str")
+                 "# Test broken: generated.should == str"))
+
+              (when tests?
+                (invoke "rspec")))))))
     (propagated-inputs
      (list ruby-builder))
     (native-inputs
@@ -4700,7 +4909,7 @@ HTML, and PDF through LaTeX.")
                                  "/lib\""))))
              #t)))))
     (native-inputs
-     (list bundler ruby-test-unit))
+     (list bundler ruby-test-unit/minimal))
     (synopsis "Ruby library adding metaclass method to all objects")
     (description
      "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
@@ -4992,42 +5201,6 @@ definitions more readable.")
     (home-page "https://github.com/jordansissel/ruby-insist/")
     (license license:asl2.0)))
 
-(define-public ruby-instantiator
-  (package
-    (name "ruby-instantiator")
-    (version "0.0.7")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "instantiator" version))
-              (sha256
-               (base32
-                "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-test-unit-to-search-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
-               (substitute* "Rakefile"
-                 (("t\\.libs << \"test\"" line)
-                  (string-append line "; t.libs << \""
-                                 test-unit "/lib/ruby/vendor_ruby"
-                                 "/gems/test-unit-"
-                                 ,(package-version ruby-test-unit)
-                                 "/lib\""))))
-             #t)))))
-    (propagated-inputs
-     (list ruby-blankslate))
-    (native-inputs
-     (list bundler ruby-test-unit))
-    (synopsis "Instantiate an arbitrary Ruby class")
-    (description
-     "Instantiator lets you instantiate an arbitrary Ruby class without
-knowing anything about the constructor.")
-    (home-page "https://github.com/floehopper/instantiator")
-    (license license:expat)))
-
 (define-public ruby-introspection
   (package
     (name "ruby-introspection")
@@ -5039,24 +5212,11 @@ knowing anything about the constructor.")
                (base32
                 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
     (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-test-unit-to-search-path
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
-              (substitute* "Rakefile"
-                (("t\\.libs << \"test\"" line)
-                 (string-append line "; t.libs << \""
-                                test-unit "/lib/ruby/vendor_ruby"
-                                "/gems/test-unit-"
-                                ,(package-version ruby-test-unit)
-                                "/lib\""))))
-            #t)))))
     (propagated-inputs
-     (list ruby-instantiator ruby-metaclass))
+     (list ruby-metaclass))
     (native-inputs
-     (list bundler ruby-blankslate ruby-test-unit))
+     (list bundler
+           ruby-blankslate))
     (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
     (description
      "Introspection provides tools to inspect the hierarchy of method
@@ -5142,7 +5302,7 @@ Ruby, but can be used for all programs.")
 (define-public ruby-maxitest
   (package
     (name "ruby-maxitest")
-    (version "4.4.1")
+    (version "5.1.0")
     (home-page "https://github.com/grosser/maxitest")
     (source (origin
               ;; Pull from git because the gem does not contain tests.
@@ -5153,31 +5313,32 @@ Ruby, but can be used for all programs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0l646lgrgsfgg9qh05b8a3jd43kgrmr6xzbdvyspmdlhchk1qszg"))))
+                "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "default"
-       #:phases (modify-phases %standard-phases
-                  (replace 'replace-git-ls-files
-                    (lambda _
-                      (substitute* "maxitest.gemspec"
-                        (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
-                         "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))))
-                  (add-before 'check 'remove-version-constraints
-                    (lambda _
-                      ;; Don't use specific versions of dependencies, instead
-                      ;; take whatever is available in Guix.
-                      (delete-file "Gemfile.lock")))
-                  (add-before 'check 'add-mtest-on-PATH
-                    (lambda _
-                      ;; Tests use 'mtest' which is not automatically added on
-                      ;; PATH.
-                      (setenv "PATH" (string-append (getcwd) "/bin:"
-                                                    (getenv "PATH"))))))))
+     (list
+      #:test-target "default"
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'replace-git-ls-files
+            (lambda _
+              (substitute* "maxitest.gemspec"
+                (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
+                 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))))
+          (add-before 'check 'remove-version-constraints
+            (lambda _
+              ;; Don't use specific versions of dependencies, instead
+              ;; take whatever is available in Guix.
+              (delete-file "Gemfile.lock")))
+          (add-before 'check 'add-mtest-on-PATH
+            (lambda _
+              ;; Tests use 'mtest' which is not automatically added on
+              ;; PATH.
+              (setenv "PATH" (string-append (getcwd) "/bin:"
+                                            (getenv "PATH"))))))))
     (native-inputs
      (list procps
            ruby-bump
-           ruby-byebug
            ruby-rspec
            ruby-wwtd))
     (propagated-inputs
@@ -5192,27 +5353,29 @@ number, support for interrupted tests, better backtraces, and more.")
 (define-public ruby-mocha
   (package
     (name "ruby-mocha")
-    (version "1.13.0")
+    (version "2.0.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "mocha" version))
               (sha256
                (base32
-                "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
+                "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'remove-rubocop-dependency
-           (lambda _
-             ;; Disable dependency on Rubocop, which is just a linter,
-             ;; and would introduce a circular dependency.
-             (substitute* "mocha.gemspec"
-               ((".*rubocop.*")
-                "true\n"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'remove-rubocop-dependency
+            (lambda _
+              ;; Disable dependency on Rubocop, which is just a linter,
+              ;; and would introduce a circular dependency.
+              (substitute* "Gemfile"
+                ((".*rubocop.*") "")))))))
+    (propagated-inputs
+     (list ruby-ruby2-keywords))
     (native-inputs
-     (list ruby-introspection))
+     (list ruby-psych-3
+           ruby-introspection))
     (synopsis "Mocking and stubbing library for Ruby")
     (description
      "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
@@ -5221,6 +5384,19 @@ allows mocking and stubbing of methods on real (non-mock) classes.")
     ;; Mocha can be used with either license at the users choice.
     (license (list license:expat license:ruby))))
 
+(define-public ruby-mocha-1
+  (package
+    (inherit ruby-mocha)
+    (version "1.13.0")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "mocha" version))
+              (sha256
+               (base32
+                "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
+    (arguments
+     '(#:tests? #f))))
+
 (define-public ruby-mocha-on-bacon
   (package
     (name "ruby-mocha-on-bacon")
@@ -5248,16 +5424,25 @@ Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
 (define-public ruby-net-ssh
   (package
     (name "ruby-net-ssh")
-    (version "4.2.0")
+    (version "7.1.0")
     (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "net-ssh" version))
+              (method git-fetch) ;for tests
+              (uri (git-reference
+                    (url "https://github.com/net-ssh/net-ssh")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
+                "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list bundler ruby-mocha ruby-test-unit))
+     (list bundler
+           ruby-bcrypt-pbkdf
+           ruby-ed25519
+           ruby-mocha
+           ruby-rbnacl
+           ruby-test-unit
+           ruby-x25519))
     (synopsis "Ruby implementation of the SSH2 client protocol")
     (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
 client protocol.  It allows you to write programs that invoke and interact
@@ -5280,7 +5465,7 @@ with processes on remote servers, via SSH2.")
         (base32 "1mdxh81z2hkcc359g6z96fywbr57azlv2yj4zq76adn5lyqq4hgw"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list bundler ruby-test-unit ruby-mocha))
+     (list bundler ruby-test-unit ruby-mocha-1))
     (propagated-inputs
      (list ruby-net-ssh))
     (synopsis "Pure-Ruby SCP client library")
@@ -5322,13 +5507,13 @@ default (and first) theme.  It's what you get when you run @code{jekyll new}.")
 (define-public ruby-minitest
   (package
     (name "ruby-minitest")
-    (version "5.18.0")
+    (version "5.18.1")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "minitest" version))
               (sha256
                (base32
-                "0ic7i5z88zcaqnpzprf7saimq2f6sad57g5mkkqsrqrcd6h3mx06"))))
+                "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb"))))
     (build-system ruby-build-system)
     (native-inputs (list ruby-hoe))
     (home-page "https://github.com/minitest/minitest")
@@ -5337,17 +5522,6 @@ default (and first) theme.  It's what you get when you run @code{jekyll new}.")
 facilities supporting TDD, BDD, mocking, and benchmarking.")
     (license license:expat)))
 
-(define-public ruby-minitest-5.15
-  (package
-    (inherit ruby-minitest)
-    (version "5.15.0")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "minitest" version))
-              (sha256
-               (base32
-                "06xf558gid4w8lwx13jwfdafsch9maz8m0g85wnfymqj63x5nbbd"))))))
-
 ;; This is the last release of Minitest 4, which is used by some packages.
 (define-public ruby-minitest-4
   (package
@@ -5360,17 +5534,26 @@ facilities supporting TDD, BDD, mocking, and benchmarking.")
                (base32
                 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-unsupported-method
-           (lambda _
-             (substitute* "Rakefile"
-               (("self\\.rubyforge_name = .*") ""))))
-         (add-after 'build 'exclude-failing-tests
-           (lambda _
-             ;; Some tests are failing on Ruby 2.4 due to the deprecation of
-             ;; Fixnum.
-             (delete-file "test/minitest/test_minitest_spec.rb"))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-unsupported-method
+            (lambda _
+              (substitute* "Rakefile"
+                (("self\\.rubyforge_name = .*") ""))))
+          (add-after 'build 'patch-tests
+            (lambda _
+              ;; test_no_method_error_on_unexpected_methods
+              ;; This test fails due to some extra information in the message
+              (substitute* "test/minitest/test_minitest_mock.rb"
+                (("assert_equal expected, e.message")
+                 "assert_equal expected, e.message.lines.first.strip"))
+              ;; Some tests are failing on Ruby 2.4 due to the deprecation of
+              ;; Fixnum.
+              (delete-file "test/minitest/test_minitest_spec.rb"))))))
+    (native-inputs
+     (list ruby-minitest
+           ruby-hoe))))
 
 (define-public ruby-minitest-around
   (package
@@ -5484,14 +5667,14 @@ functionality, making it easier to migrate test suites from bacon to minitest.")
 (define-public ruby-minitest-focus
   (package
     (name "ruby-minitest-focus")
-    (version "1.1.2")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "minitest-focus" version))
        (sha256
         (base32
-         "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
+         "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67"))))
     (build-system ruby-build-system)
     (propagated-inputs
      (list ruby-minitest))
@@ -5643,18 +5826,19 @@ MiniTest @code{Object#stub} with a global @code{stub} method.")
          "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:tests? #f          ; Test suite has bitrotted.
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'clean-dependencies
-           (lambda _
-             ;; Remove unneeded require statement that would entail another
-             ;; dependency.
-             (substitute* "test/minitest_config.rb"
-               (("require 'minitest/bisect'") ""))
-             #t)))))
+     (list
+      #:tests? #f          ; Test suite has bitrotted.
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'clean-dependencies
+            (lambda _
+              ;; Remove unneeded require statement that would entail another
+              ;; dependency.
+              (substitute* "test/minitest_config.rb"
+                (("require 'minitest/bisect'") "")))))))
     (native-inputs
-     (list ruby-hoe ruby-minitest-pretty-diff ruby-minitest-focus
+     (list ruby-hoe
+           ruby-minitest-focus
            ruby-minitest-moar))
     (synopsis "Bonus assertions for @code{Minitest}")
     (description
@@ -5935,7 +6119,8 @@ you to merge elements inside a hash together recursively.")
            ruby-rspec
            ruby-simplecov
            ruby-simplecov-lcov
-           ruby-zeitwerk))
+           ruby-zeitwerk
+           ruby-mini-portile-2))
     (propagated-inputs
      (list ruby-activesupport))
     (synopsis "Asynchronous background tasks execution library")
@@ -6016,16 +6201,14 @@ objects back to a @code{String}.")
 (define-public ruby-slop
   (package
     (name "ruby-slop")
-    (version "4.5.0")
+    (version "4.10.1")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "slop" version))
               (sha256
                (base32
-                "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
+                "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4"))))
     (build-system ruby-build-system)
-    (native-inputs
-     (list ruby-minitest))
     (synopsis "Ruby command line option parser")
     (description "Slop provides a Ruby domain specific language for gathering
 options and parsing command line flags.")
@@ -6135,12 +6318,15 @@ net/http library.")
          "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; As seen in the .travis.yml file.
-             (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
+     (list
+      ;; TODO Tests don't currently work with Ruby 3
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; As seen in the .travis.yml file.
+              (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
     (native-inputs
      (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby))
     (synopsis "Common interface to multiple JSON libraries for Ruby")
@@ -6274,49 +6460,59 @@ to reproduce user environments.")
 (define-public ruby-mini-portile-2
   (package
     (inherit ruby-mini-portile)
-    (version "2.8.1")
+    (version "2.8.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "mini_portile2" version))
               (sha256
                (base32
-                "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp"))))))
+                "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"))))))
 
 (define-public ruby-nokogiri
   (package
     (name "ruby-nokogiri")
-    (version "1.13.10")
+    (version "1.15.2")
     (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "nokogiri" version))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sparklemotion/nokogiri")
+                    (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720")))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0n79k78c5vdcyl0m3y3l5x9kxl6xf5lgriwi2vd665qmdkr01vnk"))))
+                "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj"))
+              (patches (search-patches "ruby-nokogiri.patch"))))
     (build-system ruby-build-system)
     (arguments
-     ;; Tests fail because Nokogiri can only test with an installed extension,
-     ;; and also because many test framework dependencies are missing.
-     (list
-      #:tests? #f
-      #:gem-flags #~(list "--" "--use-system-libraries"
-                          (string-append "--with-xml2-include="
-                                         #$(this-package-input "libxml2")
-                                         "/include/libxml2" ))
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'install 'delete-mkmf.log
-            (lambda _
-              ;; Rubygems installs build log files that embed volatile file
-              ;; names (see:
-              ;; https://github.com/rubygems/rubygems/issues/6259).
-              (for-each delete-file (find-files #$output "^mkmf\\.log$")))))))
-    (native-inputs (list ruby-hoe))
+     (list #:gem-flags #~(list "--" "--use-system-libraries"
+                               (string-append "--with-xml2-include="
+                                              #$(this-package-input "libxml2")
+                                              "/include/libxml2"))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'install 'delete-mkmf.log
+                          (lambda _
+                            ;; Rubygems installs build log files that embed volatile file
+                            ;; names (see:
+                            ;; https://github.com/rubygems/rubygems/issues/6259).
+                            (for-each delete-file
+                                      (find-files #$output "^mkmf\\.log$"))))
+                        (delete 'check)
+                        (add-after 'install 'check
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (setenv "GEM_PATH" (string-append
+                                                (getenv "GEM_PATH") ":"
+                                                #$output "/lib/ruby/vendor_ruby"))
+                            (when tests?
+                              (for-each (lambda (file)
+                                          (invoke "ruby" "-Itest" file))
+                                        (find-files "test" "^test_.*\\.rb"))))))))
+    (native-inputs (list ruby-hoe ruby-rubyzip))
     (inputs (list zlib libxml2 libxslt))
     (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config))
     (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
     (description "Nokogiri (鋸) parses and searches XML/HTML, and features
 both CSS3 selector and XPath 1.0 support.")
-    (home-page "https://www.nokogiri.org/")
+    (home-page "https://nokogiri.org/")
     (license license:expat)))
 
 (define-public ruby-method-source
@@ -6522,21 +6718,41 @@ across multiple CPU cores.")
     (home-page "https://github.com/whitequark/parser")
     (license license:expat)))
 
+(define-public ruby-set
+  (package
+    (name "ruby-set")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "set" version))
+              (sha256
+               (base32
+                "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33"))))
+    (build-system ruby-build-system)
+    (synopsis
+     "Ruby class to deal with collections of unordered, unique values")
+    (description
+     "This package provides a class to deal with collections of unordered,
+unique values")
+    (home-page "https://github.com/ruby/set")
+    (license license:bsd-2)))
+
 (define-public ruby-sexp-processor
   (package
     (name "ruby-sexp-processor")
-    (version "4.15.0")
+    (version "4.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "sexp_processor" version))
        (sha256
         (base32
-         "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
+         "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd"))))
     (build-system ruby-build-system)
     (native-inputs
-     ;; TODO: Add ruby-minitest-proveit once available.
-     (list ruby-hoe))
+     (list ruby-hoe
+           ruby-minitest
+           ruby-minitest-proveit))
     (synopsis "ParseTree fork which includes generic S-exp processing tools")
     (description "The sexp_processor package is derived from ParseTree, but
 contrary to ParseTree, it includes all the generic S-exp processing tools.
@@ -6548,17 +6764,32 @@ Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
 (define-public ruby-ruby-parser
   (package
     (name "ruby-ruby-parser")
-    (version "3.14.2")
+    (version "3.20.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "ruby_parser" version))
        (sha256
         (base32
-         "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
+         "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z"))))
     (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "Rakefile"
+                (("`which bison`")
+                 (string-append "\"" (which "bison") "\""))
+                (("which unifdef")
+                 (which "unifdef"))))))))
     (native-inputs
-     (list ruby-hoe ruby-racc unifdef))
+     (list ruby-hoe
+           ruby-racc
+           unifdef
+           bison
+           ruby-minitest))
     (propagated-inputs
      (list ruby-sexp-processor))
     (home-page "https://github.com/seattlerb/ruby_parser/")
@@ -6678,7 +6909,9 @@ rate.")
          "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:tests? #f)) ; No included tests
+     (list
+      #:ruby ruby-2.7
+      #:tests? #f)) ; No included tests
     (synopsis "Creates a version constraint of supported Rubies")
     (description
      "This package helps create a version constraint of supported Rubies,
@@ -6728,14 +6961,14 @@ The output can be customized with a formatting system.")
 (define-public ruby-pry
   (package
     (name "ruby-pry")
-    (version "0.13.1")
+    (version "0.14.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "pry" version))
        (sha256
         (base32
-         "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
+         "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
@@ -6825,16 +7058,18 @@ development tools to catch coverage problems early.")
 (define-public ruby-oedipus-lex
   (package
     (name "ruby-oedipus-lex")
-    (version "2.6.0")
+    (version "2.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "oedipus_lex" version))
        (sha256
         (base32
-         "094nd7jd3klv45mvprfn2ivcgw8cckq3jhlly77j903vlamfi0df"))))
+         "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7"))))
     (build-system ruby-build-system)
-    (native-inputs (list ruby-hoe))
+    (native-inputs
+     (list ruby-hoe
+           ruby-minitest))
     (synopsis "Ruby lexer")
     (description
      "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
@@ -6967,7 +7202,7 @@ intended for use with event loops such as async.")
 (define-public ruby-tilt
   (package
     (name "ruby-tilt")
-    (version "2.0.10")
+    (version "2.0.11")
     (source
      (origin
        (method git-fetch)               ;the distributed gem lacks tests
@@ -6977,28 +7212,44 @@ intended for use with event loops such as async.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
+         "0a75s6ci2rwai5q1bnlqbz8kxqnfp2497jhkcry1n4g29lcxq9ja"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-some-dependencies
-           (lambda _
-             (substitute* "Gemfile"
-               ;; TODO ronn is used for generating the manual
-               (("gem 'ronn'.*") "\n")
-               ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
-               ;; pass it in as a native-input
-               (("gem 'haml'.*") "\n")
-               ;; TODO Not all of these gems are packaged for Guix yet:
-               ;; less, coffee-script, livescript, babel-transpiler,
-               ;; typescript-node
-               (("if can_execjs") "if false")
-               ;; Disable the secondary group to reduce the number of
-               ;; dependencies. None of the normal approaches work, so patch
-               ;; the Gemfile instead.
-               (("group :secondary") "[].each"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              ;; Patch some tests
+              (substitute* "test/tilt_sasstemplate_test.rb"
+                (("}\",") "}
+\","))))
+          (add-after 'unpack 'remove-some-dependencies
+            (lambda _
+              (substitute* "Gemfile"
+                (("gem 'less'") "\n")
+                (("gem 'coffee-script'") "\n")
+                (("gem 'livescript'") "\n")
+                (("gem 'babel-transpiler'") "\n")
+                (("gem 'typescript-node'") "\n")
+                (("gem 'typescript-node'") "\n")
+                (("gem 'duktape'.*") "\n")
+                ;; TODO ronn is used for generating the manual
+                (("gem 'ronn'.*") "\n")
+                ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
+                ;; pass it in as a native-input
+                (("gem 'haml'.*") "\n")
+                ;; TODO Not all of these gems are packaged for Guix yet:
+                ;; less, coffee-script, livescript, babel-transpiler,
+                ;; typescript-node
+                (("if can_execjs") "if false")
+                ;; Disable the secondary group to reduce the number of
+                ;; dependencies. None of the normal approaches work, so patch
+                ;; the Gemfile instead.
+                (("group :secondary") "[].each"))))
+          (add-before 'check 'set-SASS_IMPLEMENTATION
+            (lambda _
+              (setenv "SASS_IMPLEMENTATION" "sassc"))))))
     (propagated-inputs
      (list ruby-pandoc-ruby ruby-sassc))
     (native-inputs
@@ -7078,7 +7329,7 @@ aware transformations between times in different time zones.")
 (define-public ruby-tzinfo-data
   (package
     (name "ruby-tzinfo-data")
-    (version "1.2021.1")
+    (version "1.2023.3")
     (source
      (origin
        (method git-fetch)
@@ -7090,59 +7341,62 @@ aware transformations between times in different time zones.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
+         "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "Rakefile"
-               (("https://data.iana.org/time-zones/releases")
-                (assoc-ref inputs "tzdata")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             (substitute* "Rakefile"
-               ;; Don't need gpg, and it may break after a time.
-               (("gpg ") "echo ")
-               (("    sh\\(\\\"make -C" text)
-                (string-append "    sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
-                               "    sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
-               (setenv "cc" ,(cc-for-target)))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "Rakefile"
+                (("URI\\.parse\\(url\\)\\.open")
+                 "URI.open(url)")
+                (("https://data.iana.org/time-zones/releases")
+                 (assoc-ref inputs "tzdata")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" (getcwd))
+              (substitute* "Rakefile"
+                ;; Don't need gpg, and it may break after a time.
+                (("gpg ") "echo ")
+                (("    sh\\(\\\"make -C" text)
+                 (string-append "    sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
+                                "    sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
+              (setenv "cc" #$(cc-for-target)))))))
     (propagated-inputs
      (list ruby-tzinfo))
     (native-inputs
      `(("tzdata"
         ,(file-union "tzdata-for-ruby-tzdata-info"
-           `(("tzdata2021a.tar.gz"
+           `(("tzdata2023c.tar.gz"
               ,(origin
                  (method url-fetch)
-                 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
+                 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz")
                  (sha256
                   (base32
-                   "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
-             ("tzdata2021a.tar.gz.asc"
+                   "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z"))))
+             ("tzdata2023c.tar.gz.asc"
               ,(origin
                  (method url-fetch)
-                 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
+                 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc")
                  (sha256
                   (base32
-                   "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
-             ("tzcode2021a.tar.gz"
+                   "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m"))))
+             ("tzcode2023c.tar.gz"
               ,(origin
                  (method url-fetch)
-                 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
+                 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz")
                  (sha256
                   (base32
-                   "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
-             ("tzcode2021a.tar.gz.asc"
+                   "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6"))))
+             ("tzcode2023c.tar.gz.asc"
               ,(origin
                  (method url-fetch)
-                 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
+                 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc")
                  (sha256
                   (base32
-                   "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))))))
+                   "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i")))))))))
     (synopsis "Data from the IANA Time Zone database")
     (description
      "This library provides @code{TZInfo::Data}, which contains data from the
@@ -7153,26 +7407,27 @@ IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
 (define-public ruby-rb-inotify
   (package
     (name "ruby-rb-inotify")
-    (version "0.9.10")
+    (version "0.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "rb-inotify" version))
        (sha256
         (base32
-         "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
+         "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:tests? #f ; there are no tests
-       #:phases
-       (modify-phases %standard-phases
-         ;; Building the gemspec with rake is not working here since it is
-         ;; generated with Jeweler.  It is also unnecessary because the
-         ;; existing gemspec does not use any development tools to generate a
-         ;; list of files.
-         (replace 'build
-          (lambda _
-            (invoke "gem" "build" "rb-inotify.gemspec"))))))
+     (list
+      #:tests? #f ; there are no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Building the gemspec with rake is not working here since it is
+          ;; generated with Jeweler.  It is also unnecessary because the
+          ;; existing gemspec does not use any development tools to generate a
+          ;; list of files.
+          (replace 'build
+            (lambda _
+              (invoke "gem" "build" "rb-inotify.gemspec"))))))
     (propagated-inputs
      (list ruby-ffi))
     (native-inputs
@@ -7312,34 +7567,33 @@ development of Ruby gems.")
                 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-test-include-path
-          (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
-               (substitute* "Rakefile"
-                 (("Hoe\\.add_include_dirs .*")
-                  (string-append "Hoe.add_include_dirs \""
-                                 minitest "/lib/ruby/vendor_ruby"
-                                 "/gems/minitest-"
-                                 ,(package-version ruby-minitest-4)
-                                 "/lib" "\""))))
-             #t))
-         (add-before 'check 'fix-test-assumptions
-          (lambda _
-            ;; The test output includes the file name, so a couple of tests
-            ;; fail.  Changing the regular expressions slightly fixes this
-            ;; problem.
-            (substitute* "test/test_mini_test.rb"
-              (("output.sub!\\(.*, 'FILE:LINE'\\)")
-               "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
-              (("gsub\\(/.*, 'FILE:LINE'\\)")
-               "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
-            #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-test-include-path
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let* ((minitest (assoc-ref inputs "ruby-minitest")))
+                (substitute* "Rakefile"
+                  (("Hoe\\.add_include_dirs .*")
+                   (string-append "Hoe.add_include_dirs \""
+                                  minitest "/lib/ruby/vendor_ruby"
+                                  "/gems/minitest-"
+                                  #$(package-version ruby-minitest-4)
+                                  "/lib" "\""))))))
+          (add-before 'check 'fix-test-assumptions
+            (lambda _
+              ;; The test output includes the file name, so a couple of tests
+              ;; fail.  Changing the regular expressions slightly fixes this
+              ;; problem.
+              (substitute* "test/test_mini_test.rb"
+                (("output.sub!\\(.*, 'FILE:LINE'\\)")
+                 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
+                (("gsub\\(/.*, 'FILE:LINE'\\)")
+                 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")))))))
     (propagated-inputs
-     `(("ruby-minitest-4" ,ruby-minitest-4)))
+     (list ruby-minitest-4))
     (native-inputs
-     (list ruby-hoe))
+     (list ruby-hoe-3))
     (synopsis "Adapter library between minitest and test/unit")
     (description
      "This library bridges the gap between the small and fast minitest and
@@ -7361,20 +7615,21 @@ Ruby's large and slower test/unit.")
     ;; Rebuilding the gemspec seems to require git, even though this is not a
     ;; git repository, so we just build the gem from the existing gemspec.
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-test
-           (lambda -
-             (substitute* "tests/hsl_triple_test.rb"
-               (("0\\\\\\.0%")
-                "0\\.?0?%"))))
-         (replace 'build
-          (lambda _
-            (invoke "gem" "build" "term-ansicolor.gemspec"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-test
+            (lambda -
+              (substitute* "tests/hsl_triple_test.rb"
+                (("0\\\\\\.0%")
+                 "0\\.?0?%"))))
+          (replace 'build
+            (lambda _
+              (invoke "gem" "build" "term-ansicolor.gemspec"))))))
     (propagated-inputs
      (list ruby-tins))
     (native-inputs
-     (list ruby-gem-hadar ruby-minitest-tu-shim))
+     (list ruby-gem-hadar))
     (synopsis "Ruby library to control the attributes of terminal output")
     (description
      "This Ruby library uses ANSI escape sequences to control the attributes
@@ -7383,22 +7638,112 @@ of terminal output.")
     ;; There is no mention of the "or later" clause.
     (license license:gpl2)))
 
+(define-public ruby-immutable-struct
+  (package
+    (name "ruby-immutable-struct")
+    (version "2.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stitchfix/immutable-struct")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "17hlmy9jfwn3i5h2rwv832ycwcdqwxq7dkkd2yly28klwj0l52rq"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      ;; Issues with the lack of Set in Ruby 3
+      #:ruby ruby-2.7
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "ruby" (which "rspec"))))))))
+    (native-inputs
+     (list ruby-rspec))
+    (synopsis "Ruby library for creating immutable struct classes")
+    (description
+     "Easily create value objects without the pain of Ruby's Struct (or its setters)")
+    (home-page "https://stitchfix.github.io/immutable-struct/")
+    (license license:expat)))
+
+(define-public ruby-faker
+  (package
+    (name "ruby-faker")
+    (version "3.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/faker-ruby/faker")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-rubocop-from-rakefile
+            (lambda _
+              (substitute* "Rakefile"
+                (("require 'rubocop/rake_task'") "")
+                (("RuboCop::RakeTask\\.new") "")))))))
+    (native-inputs (list ruby-yard ruby-simplecov ruby-timecop))
+    (propagated-inputs (list ruby-i18n))
+    (synopsis "Library for generating fake data")
+    (description "Faker is a port of Data::Faker from Perl. It is used to
+easily generate fake data: names, addresses, phone numbers, etc.")
+    (home-page "https://github.com/faker-ruby/faker")
+    (license license:expat)))
+
 (define-public ruby-terraform
   (package
   (name "ruby-terraform")
-  (version "0.22.0")
+  (version "1.7.0")
   (source
    (origin
-     (method url-fetch)
-     (uri (rubygems-uri "ruby-terraform" version))
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/infrablocks/ruby_terraform")
+           (commit (string-append "v" version))))
+     (file-name (git-file-name name version))
      (sha256
       (base32
-       "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
+       "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd"))))
   (build-system ruby-build-system)
   (arguments
-   '(#:tests? #f)) ; No included tests
+   (list
+    #:test-target "spec"
+    #:phases
+    #~(modify-phases %standard-phases
+        (add-after 'unpack 'disable-bundler
+          (lambda _
+            (substitute* "spec/spec_helper.rb"
+              (("require 'bundler/setup'") ""))))
+        (add-before 'check 'disable-falinig-tests
+          (lambda _
+            (substitute* "spec/ruby_terraform/commands/plan_spec.rb"
+              (("it 'logs an error raised when running the command'")
+               "xit 'logs an error raised when running the command'")
+              (("it 'raises execution error when an error occurs running the command'")
+               "xit 'raises execution error when an error occurs running the command'"))))
+        (replace 'check
+          (lambda* (#:key tests? #:allow-other-keys)
+            (when tests?
+              (invoke "rspec")))))))
+  (native-inputs
+   (list ruby-rspec
+         ruby-faker
+         ruby-simplecov))
   (propagated-inputs
-   (list ruby-lino))
+   (list ruby-lino ruby-immutable-struct))
   (synopsis "Ruby wrapper around the Terraform command line interface")
   (description
    "This package provides a Ruby wrapper around the Terraform command line
@@ -7427,6 +7772,55 @@ process tree data structure for the current host.")
     ;; There is no mention of the "or later" clause.
     (license license:gpl2)))
 
+(define-public ruby-psych
+  (package
+    (name "ruby-psych")
+    (version "5.1.0")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/ruby/psych")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83"))))
+    (build-system ruby-build-system)
+    (inputs
+     (list libyaml))
+    (native-inputs
+     (list ruby-rake-compiler))
+    (synopsis "Ruby YAML parser and emitter")
+    (description
+     "Psych is a YAML parser and emitter.  Psych leverages libyaml for its
+YAML parsing and emitting capabilities.  In addition to wrapping libyaml,
+Psych also knows how to serialize and de-serialize most Ruby objects to and
+from the YAML format.")
+    (home-page "https://github.com/ruby/psych")
+    (license license:expat)))
+
+(define-public ruby-psych-3
+  (package
+    (inherit ruby-psych)
+    (version "3.3.4")
+    (source (origin
+              (method git-fetch)        ;for tests
+              (uri (git-reference
+                    (url "https://github.com/ruby/psych")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "ruby-psych" version))
+              (sha256
+               (base32
+                "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc"))))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "bundle" "exec" "rake" "default")))))))))
+
 (define-public ruby-utils
   (package
     (name "ruby-utils")
@@ -7493,57 +7887,75 @@ a native C extension.")
 (define-public ruby-json-pure
   (package
     (name "ruby-json-pure")
-    (version "2.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "json_pure" version))
-              (sha256
-               (base32
-                "00pziwkfqwk8vj19s65sdki31q1wvmf5v9b3sfglxm94qfvas1lx"))))
+    (version "2.6.3")
+    (source
+     (origin
+       ;; For tests
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/flori/json.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-rakefile
-           (lambda _
-             (substitute* "Rakefile"
-               ;; Since this is not a git repository, do not call 'git'.
-               (("`git ls-files`") "`find . -type f |sort`")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-rakefile
+            (lambda _
+              (substitute* "Rakefile"
+                ;; Since this is not a git repository, do not call 'git'.
+                (("`git ls-files`") "`find . -type f |sort`")))))))
     (native-inputs
      (list bundler ragel ruby-simplecov ruby-test-unit which))
     (synopsis "JSON implementation in pure Ruby")
     (description
      "This package provides a JSON implementation written in pure Ruby.")
-    (home-page "https://flori.github.com/json/")
+    (home-page "https://flori.github.io/json/")
     (license license:ruby)))
 
 (define-public ruby-jwt
   (package
     (name "ruby-jwt")
-    (version "2.1.0")
+    (version "2.7.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "jwt" version))
+       ;; For tests
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jwt/ruby-jwt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
+         "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "test"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-unnecessary-dependencies
-           (lambda _
-             (substitute* "spec/spec_helper.rb"
-               (("require 'simplecov.*") "\n")
-               ;; Use [].each to disable running the SimpleCov configuration
-               ;; block
-               (("SimpleCov\\.configure") "[].each")
-               (("require 'codeclimate-test-reporter'") "")
-               (("require 'codacy-coverage'") "")
-               (("Codacy::Reporter\\.start") ""))
-             #t)))))
+     (list
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-unnecessary-dependencies
+            (lambda _
+              (substitute* "ruby-jwt.gemspec"
+                (("spec\\.add_development_dependency 'appraisal'") "")
+                (("spec\\.add_development_dependency 'simplecov'") ""))
+              (substitute* "Gemfile"
+                (("gem 'rubocop'.*") ""))
+              (substitute* "Rakefile"
+                (("require 'rubocop/rake_task'") "")
+                (("RuboCop::RakeTask\\.new\\(:rubocop\\)") ""))
+              (substitute* "spec/spec_helper.rb"
+                (("require 'simplecov.*") "\n")
+                ;; Use [].each to disable running the SimpleCov configuration
+                ;; block
+                (("SimpleCov\\.configure") "[].each")
+                (("require 'codeclimate-test-reporter'") "")
+                (("require 'codacy-coverage'") "")
+                (("Codacy::Reporter\\.start") "")))))))
     (native-inputs
      (list bundler ruby-rspec ruby-rbnacl))
     (synopsis "Ruby implementation of the JSON Web Token standard")
@@ -7578,7 +7990,7 @@ a native C extension.")
 (define-public ruby-listen
   (package
     (name "ruby-listen")
-    (version "3.2.0")
+    (version "3.8.0")
     (source
      (origin
        ;; The gem does not include a Rakefile, so fetch from the Git
@@ -7590,24 +8002,24 @@ a native C extension.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
+         "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-files-in-gemspec
-           (lambda _
-             (substitute* "listen.gemspec"
-               (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
-             #t))
-         (add-before 'check 'remove-unnecessary-dependencies'
-           (lambda _
-             (substitute* "Rakefile"
-               ;; Rubocop is for code linting, and is unnecessary for running
-               ;; the tests.
-               ((".*rubocop.*") ""))
-             #t)))))
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-files-in-gemspec
+            (lambda _
+              (substitute* "listen.gemspec"
+                (("`git ls-files -z`")
+                 "`find . -type f -printf '%P\\\\0' |sort -z`"))))
+          (add-before 'check 'remove-unnecessary-dependencies'
+            (lambda _
+              (substitute* "Rakefile"
+                ;; Rubocop is for code linting, and is unnecessary for running
+                ;; the tests.
+                ((".*rubocop.*") "")))))))
     (native-inputs
      (list bundler ruby-rspec))
     (inputs
@@ -7901,36 +8313,35 @@ with PostgreSQL 9.3 and later.")
                (("require \"bundler/setup\".*") "")))))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'sanitize-dependencies
-           (lambda _
-             (substitute* "Rakefile"
-               ((".*chandler/tasks.*") ""))))
-         (add-after 'unpack 'skip-tmp-path-sensitive-test
-           (lambda _
-             (substitute* "test/commands/where_test.rb"
-               (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
-                "unless true\n"))))
-         (add-before 'build 'compile
-           (lambda _
-             (invoke "rake" "compile")))
-         (add-before 'check 'disable-misbehaving-test
-           ;; Expects 5, gets 162. From a file containing ~10 lines.
-           (lambda _
-             (substitute* "test/commands/finish_test.rb"
-               (("test_finish_inside_autoloaded_files")
-                "finish_inside_autoloaded_files"))))
-         (add-before 'check 'set-home
-           (lambda _
-             (setenv "HOME" (getcwd)))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'sanitize-dependencies
+            (lambda _
+              (substitute* "Rakefile"
+                ((".*chandler/tasks.*") ""))))
+          (add-after 'unpack 'skip-tmp-path-sensitive-test
+            (lambda _
+              (substitute* "test/commands/where_test.rb"
+                (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
+                 "unless true\n"))))
+          (add-before 'build 'compile
+            (lambda _
+              (invoke "rake" "compile")))
+          (add-before 'check 'patch-tests
+            (lambda _
+              ;; srand': no implicit conversion of nil into Integer (TypeError)
+              (delete-file "test/minitest_runner_test.rb")
+              ;; Expects 5, gets 162. From a file containing ~10 lines.
+              (substitute* "test/commands/finish_test.rb"
+                (("test_finish_inside_autoloaded_files")
+                 "finish_inside_autoloaded_files"))))
+          (add-before 'check 'set-home
+            (lambda _
+              (setenv "HOME" (getcwd)))))))
     (native-inputs
      (list bundler
-           ;; Using minitest 5.17 would cause 5 new bug failures.  This is
-           ;; probably related to
-           ;; https://github.com/deivid-rodriguez/byebug/pull/837.  Use
-           ;; minitest 5.15 until this is resolved and released.
-           ruby-minitest-5.15
+           ruby-minitest
            ruby-pry
            ruby-rake-compiler
            ruby-rubocop
@@ -8025,7 +8436,7 @@ including comments and whitespace.")
                   "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
       (build-system ruby-build-system)
       (native-inputs
-       (list ruby-rspec ruby-yard ruby-rubygems-tasks))
+       (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
       (synopsis "Calculate the differences between two tree-like structures")
       (description
        "This library provides functions to calculate the differences between two
@@ -8053,7 +8464,7 @@ tree-like structures.  It is similar to Ruby's built-in @code{TSort} module.")
        (list ruby-tdiff
              ruby-nokogiri))
       (native-inputs
-       (list ruby-rspec ruby-yard ruby-rubygems-tasks))
+       (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
       (synopsis "Calculate the differences between two XML/HTML documents")
       (description
        "@code{Nokogiri::Diff} adds the ability to calculate the
@@ -8092,7 +8503,7 @@ generates Ruby program.")
   (package
     (name "ruby-rack")
     ;; Do not upgrade to version 3, as Rails doesn't support it yet.
-    (version "2.2.6.3")
+    (version "2.2.7")
     (source
      (origin
        (method git-fetch)               ;for tests
@@ -8102,7 +8513,7 @@ generates Ruby program.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "19n33q0v15qjh7kbp2painyzyqg16kkf0mp68vcnlswghmmjcyzq"))))
+         "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify"))))
     (build-system ruby-build-system)
     (arguments
      (list
@@ -8130,7 +8541,10 @@ generates Ruby program.")
                                   (number->string (+ 22 size-diff))
                                   "-"
                                   (number->string (+ 33 size-diff)))))))))))
-    (native-inputs (list ruby-minitest ruby-minitest-global-expectations))
+    (native-inputs
+     (list ruby-minitest
+           ruby-minitest-global-expectations
+           ruby-webrick))
     (synopsis "Unified web application interface for Ruby")
     (description "Rack provides a minimal, modular and adaptable interface for
 developing web applications in Ruby.  By wrapping HTTP requests and responses,
@@ -8344,39 +8758,49 @@ techniques and a terse syntax.")
 (define-public ruby-rest-client
   (package
     (name "ruby-rest-client")
-    (version "2.0.2")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "rest-client" version))
        (sha256
         (base32
-         "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
+         "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'remove-unnecessary-development-dependencies
-           (lambda _
-             (substitute* "rest-client.gemspec"
-               ;; Remove rubocop as it's unused. Rubocop also indirectly
-               ;; depends on this package through ruby-parser and ruby-ast so
-               ;; this avoids a dependency loop.
-               ((".*rubocop.*") "\n")
-               ;; Remove pry as it's unused, it's a debugging tool
-               ((".*pry.*") "\n")
-               ;; Remove an unnecessarily strict rdoc dependency
-               ((".*rdoc.*") "\n"))
-             #t))
-         (add-before 'check 'delete-network-dependent-tests
-           (lambda _
-             (delete-file "spec/integration/request_spec.rb")
-             (delete-file "spec/integration/httpbin_spec.rb")
-             #t)))))
+     (list
+      ;; TODO Some tests are currently broken
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'remove-unnecessary-development-dependencies
+            (lambda _
+              (substitute* "rest-client.gemspec"
+                ;; Remove rubocop as it's unused. Rubocop also indirectly
+                ;; depends on this package through ruby-parser and ruby-ast so
+                ;; this avoids a dependency loop.
+                ((".*rubocop.*") "\n")
+                ;; Remove pry as it's unused, it's a debugging tool
+                ((".*pry.*") "\n")
+                ;; Remove an unnecessarily strict rdoc dependency
+                ((".*rdoc.*") "\n"))))
+          (add-before 'check 'delete-network-dependent-tests
+            (lambda _
+              (delete-file "spec/integration/request_spec.rb")
+              (delete-file "spec/integration/httpbin_spec.rb")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rspec")))))))
     (propagated-inputs
-     (list ruby-http-cookie ruby-mime-types ruby-netrc))
+     (list ruby-http-accept-1
+           ruby-http-cookie
+           ruby-mime-types
+           ruby-netrc))
     (native-inputs
-     (list bundler ruby-webmock-2 ruby-rspec))
+     (list bundler
+           ruby-webmock-2
+           ruby-rspec))
     (synopsis "Simple HTTP and REST client for Ruby")
     (description
      "@code{rest-client} provides a simple HTTP and REST client for Ruby,
@@ -8513,7 +8937,8 @@ better performance than @code{Regexp} and @code{String} methods from the
                 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
                  (string-append stripped "\n"))))))))
     (native-inputs
-     (list ruby-rspec))
+     (list ruby-rspec
+           ruby-sorted-set))
     (synopsis "Simple arrays of objects to arrays of ranges compressor")
     (description "RangeCompresses is a tiny library that allows compressing
 arrays of objects into arrays of ranges.  For example, it can turn the
@@ -8781,15 +9206,30 @@ abstraction for Ruby.")
 (define-public ruby-benchmark-ips
   (package
     (name "ruby-benchmark-ips")
-    (version "2.8.2")
+    (version "2.12.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "benchmark-ips" version))
+       (method git-fetch)               ;no tests in distributed gem
+       (uri (git-reference
+             (url "https://github.com/evanphx/benchmark-ips")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
+         "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s"))))
     (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda _
+              (substitute* "Gemfile"
+                (("gem 'rake'.*")
+                 "gem 'rake'"))
+              (substitute* "benchmark-ips.gemspec"
+                (("git ls-files -- examples lib")
+                 "find examples lib -type f | sort")))))))
     (native-inputs
      (list ruby-hoe))
     (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
@@ -8888,7 +9328,7 @@ top of Faraday.")
 (define-public ruby-octokit
   (package
     (name "ruby-octokit")
-    (version "6.1.0")
+    (version "6.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8897,15 +9337,22 @@ top of Faraday.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "01njrd17bz28mlsa8hi9gad7s6d1d0vpyn0g66p3d42zgplr9qkq"))))
+                "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk"))))
     (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-unnecessary-dependencies
+            (lambda _
+              (substitute* "spec/spec_helper.rb"
+                (("require 'pry-byebug'") "")))))))
     (native-inputs
      (list ruby-faraday-multipart
            ruby-jwt
            ruby-mime-types
            ruby-multi-json
            ruby-netrc
-           ruby-pry-byebug
            ruby-rbnacl
            ruby-rspec
            ruby-simplecov
@@ -8953,33 +9400,42 @@ navigation capabilities to @code{pry}, using @code{byebug}.")
 (define-public ruby-stackprof
   (package
     (name "ruby-stackprof")
-    (version "0.2.17")
+    (version "0.2.25")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "stackprof" version))
        (sha256
-        (base32 "06lz70k8c0r7fyxk1nc3idh14x7nvsr21ydm1bsmbj00jyhmfzsn"))))
+        (base32 "0bhdgfb0pmw9mav1kw9fn0ka012sa0i3h5ppvqssw5xq48nhxnr8"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'skip-dubious-test
-           (lambda _
-             ,@(if (or (target-riscv64?)
-                       (target-ppc32?))
-                 ;; This unreliable test can fail with "Expected 32 to be <= 25."
-                 '((substitute* "test/test_stackprof.rb"
-                     ((".*assert_operator profile\\[:missed_samples.*") "")))
-                 ;; This unreliable test can fail with "Expected 0 to be >= 1."
-                 '((substitute* "test/test_stackprof.rb"
-                     (("def test_(cputime)" _ name)
-                      (string-append "def skip_" name)))))))
-         (add-before 'check 'build-tests
-           (lambda _
-             (invoke "rake" "compile"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'patch-gemspec
+            (lambda _
+              (substitute* "stackprof.gemspec"
+                (("rake-compiler.*")
+                 "rake-compiler>.freeze, [\"> 0.9\"])\n")
+                (("mocha.*")
+                 "mocha>.freeze, [\"> 0.14\"])\n"))))
+          (add-before 'check 'skip-dubious-test
+            (lambda _
+              (substitute* "test/test_stackprof.rb"
+                ;; This unreliable test can fail with "Expected 0 to be >= 1."
+                (("def test_(cputime)" _ name)
+                 (string-append "def skip_" name))
+                ;; This test often fails
+                (("def test_gc") "def skip_test_gc"))))
+          (add-before 'check 'build-tests
+            (lambda _
+              (invoke "rake" "compile")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "bundle" "exec" "rake" "default")))))))
     (native-inputs
-     (list ruby-mocha ruby-rake-compiler))
+     (list bundler ruby-mocha-1 ruby-rake-compiler))
     (synopsis "Sampling profiler for Ruby code")
     (description
      "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
@@ -9054,7 +9510,7 @@ variable length integers (varint) in Ruby Protocol Buffers.")
 (define-public ruby-version-gem
   (package
     (name "ruby-version-gem")
-    (version "1.1.2")
+    (version "1.1.3")
     (source (origin
               (method git-fetch)        ;for tests
               (uri (git-reference
@@ -9063,39 +9519,31 @@ variable length integers (varint) in Ruby Protocol Buffers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "17y4dydlczd5xvvwfy94x63d5wi14cdkfhi6g94fm1sgsxxzzmq0"))))
+                "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf"))))
     (build-system ruby-build-system)
     (arguments
-     (list #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'relax-requirements
-                          (lambda _
-                            (substitute* "Gemfile"
-                              (("^linting = .*")
-                               "linting = false\n")
-                              (("^coverage = .*")
-                               "coverage = false\n")
-                              (("^debug = .*")
-                               "debug = false\n"))
-                            (substitute* "spec/spec_helper.rb"
-                              (("^RUN_COVERAGE = .*")
-                               "RUN_COVERAGE = false\n")
-                              (("^ALL_FORMATTERS = .*")
-                               "ALL_FORMATTERS = false\n"))))
-                        (add-before 'build 'drop-signing-key-requirement
-                          (lambda _
-                            (substitute* "version_gem.gemspec"
-                              (("spec.signing_key =.*")
-                               "spec.signing_key = nil"))))
-                        (add-before 'check 'disable-problematic-tests
-                          (lambda _
-                            (substitute* "spec/version_gem/ruby_spec.rb"
-                              ;; The test validates the minimum version of
-                              ;; Ruby to be 2.7.7, but because our Ruby is
-                              ;; 2.7.4 grafted with 2.7.7, the version seen is
-                              ;; 2.7.4 and it fails.
-                              (("it 'returns true when current ruby greater \
-than minimum'" all)
-                               (string-append "x" all))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'relax-requirements
+            (lambda _
+              (substitute* "Gemfile"
+                (("^linting = .*")
+                 "linting = false\n")
+                (("^coverage = .*")
+                 "coverage = false\n")
+                (("^debug = .*")
+                 "debug = false\n"))
+              (substitute* "spec/spec_helper.rb"
+                (("^RUN_COVERAGE = .*")
+                 "RUN_COVERAGE = false\n")
+                (("^ALL_FORMATTERS = .*")
+                 "ALL_FORMATTERS = false\n"))))
+          (add-before 'build 'drop-signing-key-requirement
+            (lambda _
+              (substitute* "version_gem.gemspec"
+                (("spec.signing_key =.*")
+                 "spec.signing_key = nil")))))))
     (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
     (synopsis "Improved @code{Version} module for Ruby")
     (description "VersionGem aims to provide introspection of a @code{Version}
@@ -9183,7 +9631,7 @@ Profiling multiple threads simultaneously is supported.
 (define-public ruby-ruby-memcheck
   (package
     (name "ruby-ruby-memcheck")
-    (version "1.2.0")
+    (version "1.3.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9192,10 +9640,13 @@ Profiling multiple threads simultaneously is supported.
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1sx8nhx7w4z5s5vj6kq6caqsfznswqzwca372j82cd80hf9iznra"))))
+                "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni"))))
     (build-system ruby-build-system)
     (arguments
      (list
+      ;; The tests seem to fail on 32bit x86
+      #:tests? (not (or (target-x86-32?)
+                        (%current-target-system)))
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-valgrind-path
@@ -9564,6 +10015,7 @@ CI environment from environment variables.")
      (list ruby-cucumber-compatibility-kit
            ruby-nokogiri
            ruby-pry
+           ruby-webrick
            ruby-rspec))
     (synopsis "Describe automated tests in plain language")
     (description "Cucumber is a tool for running automated tests written in
@@ -9814,28 +10266,38 @@ is an infix boolean expression used by Cucumber.")
     (home-page "https://github.com/cucumber/tag-expressions")
     (license license:expat)))
 
-(define-public ruby-bindex
+(define-public ruby-skiptrace
   (package
-    (name "ruby-bindex")
-    (version "0.5.0")
+    (name "ruby-skiptrace")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
-       (uri (rubygems-uri "bindex" version))
+       (uri (rubygems-uri "skiptrace" version))
        (sha256
         (base32
-         "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
+         "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "default"))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-git-from-gemspec
+            (lambda _
+              (substitute* "skiptrace.gemspec"
+                (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "bundle" "exec" "rake" "default")))))))
     (native-inputs
      (list bundler ruby-rake-compiler))
     (synopsis "Provides access for bindings relating to Ruby exceptions")
     (description
-     "@code{bindex} provides a way to access the bindings that relate to
+     "@code{skiptrace} provides a way to access the bindings that relate to
 exceptions in Ruby, providing more information about the context in which the
 exception occurred.")
-    (home-page "https://github.com/gsamokovarov/bindex")
+    (home-page "https://github.com/gsamokovarov/skiptrace")
     (license license:expat)))
 
 (define-public ruby-bio-logger
@@ -9898,7 +10360,7 @@ A modified copy of yajl is used, and included in the package.")
 (define-public ruby-yard
   (package
     (name "ruby-yard")
-    (version "0.9.25")
+    (version "0.9.34")
     (source
      (origin
        (method git-fetch)
@@ -9909,20 +10371,42 @@ A modified copy of yajl is used, and included in the package.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
+         "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb"))))
     (build-system ruby-build-system)
     (arguments
-     ;; Note: Tests are willfully disabled to alleviate dependency cycle
-     ;; problems.
-     `(#:tests? #f
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'do-not-set-date-in-gemspec
-                    ;; Fix a reproducibility issue (see:
-                    ;; https://github.com/lsegal/yard/issues/1343).
-                    (lambda _
-                      (substitute* "yard.gemspec"
-                        ((".*s\\.date.*") ""))
-                      #t)))))
+     (list
+      #:test-target "default"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-set-date-in-gemspec
+            ;; Fix a reproducibility issue (see:
+            ;; https://github.com/lsegal/yard/issues/1343).
+            (lambda _
+              (substitute* "yard.gemspec"
+                ((".*s\\.date.*") ""))))
+          (add-before 'check 'prepare-for-tests
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (substitute* "Rakefile"
+                  ((".*[Ss]amus.*") ""))
+                ;; Delete the Gemfile to avoid errors relating to it.
+                (delete-file "Gemfile")
+                ;; $HOME needs to be set to somewhere writeable for tests to
+                ;; run.
+                (setenv "HOME" "/tmp")
+                ;; This test fails
+                ;; #<File (class)> received :open with unexpected arguments
+                ;; expected: ("gem1.gem", "rb")
+                ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-")
+                (substitute* "spec/cli/diff_spec.rb"
+                  (("it \"searches for .gem file")
+                   "xit \"searches for .gem file"))))))))
+    (native-inputs
+     (list ruby-rspec
+           ruby-rack
+           ruby-redcloth
+           ruby-webrick
+           ruby-asciidoctor/minimal))
     (synopsis "Documentation generation tool for Ruby")
     (description "YARD is a documentation generation tool for the Ruby
 programming language.  It enables the user to generate consistent, usable
@@ -9932,27 +10416,15 @@ definitions.")
     (home-page "https://yardoc.org")
     (license license:expat)))
 
-(define-public ruby-yard-with-tests
-  (package
-    (inherit ruby-yard)
-    (name "ruby-yard-with-tests")
-    (arguments
-     (substitute-keyword-arguments
-         (strip-keyword-arguments '(#:tests?) (package-arguments ruby-yard))
-       ((#:test-target _ "default") "default")
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (add-before 'check 'prepare-for-tests
-             (lambda* (#:key tests? #:allow-other-keys)
-               (when tests?
-                 (substitute* "Rakefile"
-                   ((".*[Ss]amus.*") ""))
-                 ;; Delete the Gemfile to avoid errors relating to it.
-                 (delete-file "Gemfile")
-                 ;; $HOME needs to be set to somewhere writeable for tests to
-                 ;; run.
-                 (setenv "HOME" "/tmp"))))))))
-    (native-inputs (list ruby-rspec ruby-rack ruby-redcloth ruby-asciidoctor))))
+(define-public ruby-yard/minimal
+  (hidden-package
+   (package
+     (inherit ruby-yard)
+     (arguments
+      (ensure-keyword-arguments
+       (package-arguments ruby-yard)
+       (list #:tests? #f)))
+     (native-inputs '()))))
 
 (define-public ruby-spectroscope
   (package
@@ -10308,14 +10780,14 @@ look up the likely MIME type definitions.")
 (define-public ruby-mime-types
   (package
     (name "ruby-mime-types")
-    (version "3.1")
+    (version "3.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "mime-types" version))
        (sha256
         (base32
-         "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
+         "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"))))
     (build-system ruby-build-system)
     (propagated-inputs
      (list ruby-mime-types-data))
@@ -10323,7 +10795,6 @@ look up the likely MIME type definitions.")
      (list ruby-hoe
            ruby-fivemat
            ruby-minitest-focus
-           ruby-minitest-rg
            ruby-minitest-bonus-assertions
            ruby-minitest-hooks))
     (synopsis "Library and registry for MIME content type definitions")
@@ -10413,25 +10884,40 @@ neither too verbose nor too minimal.")
 (define-public ruby-sqlite3
   (package
     (name "ruby-sqlite3")
-    (version "1.4.4")
+    (version "1.6.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "sqlite3" version))
+       (method git-fetch)        ;for tests
+       (uri (git-reference
+             (url "https://github.com/sparklemotion/sqlite3-ruby")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1z1wa639c278bsipczn6kv8b13fj85pi8gk7x462chqx6k0wm0ax"))))
+         "0ijj8z8fpk2lczydkxv71k250g5gd8ip8klsscxc9f16b01gh9qs"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'add-gemtest-file
-           ;; This file exists in the repository but is not distributed.
-           (lambda _ (invoke "touch" ".gemtest"))))))
+     (list
+      #:gem-flags #~(list "--" "--enable-system-libraries")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'check)
+          (add-after 'install 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (setenv "GEM_PATH"
+                        (string-append (getenv "GEM_PATH") ":"
+                                       #$output "/lib/ruby/vendor_ruby"))
+                (invoke "rake" "test")))))))
+    (propagated-inputs
+     (list ruby-mini-portile-2))
     (inputs
      (list sqlite))
     (native-inputs
-     (list ruby-hoe ruby-rake-compiler ruby-mini-portile-2))
+     (list ruby-hoe
+           ruby-ruby-memcheck
+           ruby-rake-compiler
+           ruby-rake-compiler-dock))
     (synopsis "Interface with SQLite3 databases")
     (description
      "This module allows Ruby programs to interface with the SQLite3 database
@@ -10992,35 +11478,87 @@ defined in a @file{.env} file.")
 defined in a @file{.env} file.  This is the Rails variant, adapted for use
 with Ruby on Rails projects.")))
 
+(define-public ruby-http-accept
+  (package
+    (name "ruby-http-accept")
+    (version "2.2.0")
+    (source (origin
+              (method git-fetch)        ;for the tests
+              (uri (git-reference
+                    (url "https://github.com/socketry/http-accept")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-missing-key-directive
+            ;; This seem to be a common problem in Ruby projects (see:
+            ;; https://github.com/prawnpdf/ttfunk/issues/99).
+            (lambda _
+              (substitute* "http-accept.gemspec"
+                ((".*spec.signing_key.*") ""))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "rspec")))))))
+    (native-inputs
+     (list ruby-rspec
+           ruby-covered))
+    (synopsis "Parse Accept and Accept-Language HTTP headers")
+    (description
+     "This package provides a set of parsers for Accept and Accept-Language
+HTTP headers.")
+    (home-page "https://github.com/socketry/http-accept")
+    (license license:expat)))
+
+(define-public ruby-http-accept-1
+  (package
+    (inherit ruby-http-accept)
+    (version "1.7.0")
+    (source (origin
+              (method git-fetch)        ;for the tests
+              (uri (git-reference
+                    (url "https://github.com/ioquatix/http-accept")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "ruby-http-accept" version))
+              (sha256
+               (base32
+                "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z"))))))
+
 (define-public ruby-http-cookie
   (package
     (name "ruby-http-cookie")
-    (version "1.0.3")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "http-cookie" version))
        (sha256
         (base32
-         "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
+         "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'add-dependency-to-bundler
-           (lambda _
-             ;; Fix NameError
-             (substitute* "Rakefile"
-               (("HTTP::Cookie::VERSION")
-                "Bundler::GemHelper.gemspec.version"))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'add-dependency-to-bundler
+            (lambda _
+              ;; Fix NameError
+              (substitute* "Rakefile"
+                (("HTTP::Cookie::VERSION")
+                 "Bundler::GemHelper.gemspec.version")))))))
     (propagated-inputs
      (list ruby-domain-name))
     (native-inputs
-     `(("rubysimplecov" ,ruby-simplecov)
-       ("bundler" ,bundler)
-       ("ruby-sqlite3" ,ruby-sqlite3)
-       ("ruby-test-unit" ,ruby-test-unit)))
+     (list ruby-simplecov
+           bundler
+           ruby-sqlite3
+           ruby-test-unit))
     (synopsis "Handle HTTP Cookies based on RFC 6265")
     (description
      "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
@@ -11171,6 +11709,33 @@ secure hash algorithm for hashing passwords.")
     (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby")
     (license license:expat)))
 
+(define-public ruby-bcrypt-pbkdf
+  (package
+    (name "ruby-bcrypt-pbkdf")
+    (version "1.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "bcrypt_pbkdf" version))
+              (sha256
+               (base32
+                "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-before 'build 'compile
+                          (lambda _
+                            (invoke "rake" "compile"))))))
+    (native-inputs (list ruby-minitest ruby-rake-compiler
+                         ruby-rake-compiler-dock ruby-rdoc))
+    (synopsis "Reading password encrypted Ed25519 keys in Ruby")
+    (description
+     "This gem implements @samp{bcrypt_pbkdf}, which is a variant of
+PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based
+pseudorandom function.  This is currently used by @samp{net-ssh} to
+read password encrypted Ed25519 keys.")
+    (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby")
+    (license license:expat)))
+
 (define-public ruby-bio-commandeer
   (package
     (name "ruby-bio-commandeer")
@@ -11574,7 +12139,7 @@ part of the Prawn PDF generator.")
 (define-public ruby-puma
   (package
     (name "ruby-puma")
-    (version "6.2.0")
+    (version "6.3.0")
     (source
      (origin
        (method git-fetch)               ;for tests
@@ -11584,17 +12149,23 @@ part of the Prawn PDF generator.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0d71h5ggvfgnxq9msd1hmcz3s8mspzf7kqas1hzr0w9pfafddyv3"))))
+         "0qnayzgyr23w87jc849r00394hv1gw2rk9080nws43ilnycagzxq"))))
     (build-system ruby-build-system)
     (arguments
      (list
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-Gemfile
+            (lambda _
+              (substitute* "Gemfile"
+                (("gem \"rake-compiler\".*")
+                 "gem 'rake-compiler'\n"))))
           (add-after 'unpack 'disable-rubocop
             (lambda _
               (setenv "PUMA_NO_RUBOCOP" "1")))
           (add-after 'unpack 'use-rack-2
             (lambda _
+              (setenv "PUMA_CI_RACK" "rack2")
               (setenv "PUMA_CI_RACK_2" "1")))
           (add-before 'build 'increase-resource-limits
             (lambda _
@@ -11707,7 +12278,7 @@ or JRuby.")
          "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
     (build-system ruby-build-system)
     (propagated-inputs
-     (list ruby-hoe))
+     (list ruby-hoe-3))
     (synopsis "Hoe plugins for tighter Git integration")
     (description
      "This package provides a set of Hoe plugins for tighter Git integration.
@@ -11774,25 +12345,29 @@ associated records.")
 (define-public ruby-timecop
   (package
     (name "ruby-timecop")
-    (version "0.9.1")
+    (version "0.9.6")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "timecop" version))
        (sha256
         (base32
-         "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
+         "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-check-rubylib
-           (lambda _
-             ;; Set RUBYLIB so timecop tests finds its own lib.
-             (setenv "RUBYLIB" "lib")
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'set-check-rubylib
+            (lambda _
+              ;; Set RUBYLIB so timecop tests finds its own lib.
+              (setenv "RUBYLIB" "lib"))))))
     (native-inputs
-     (list bundler ruby-minitest-rg ruby-mocha ruby-activesupport))
+     (list bundler
+           ruby-minitest-rg
+           ruby-mocha
+           ruby-activesupport
+           ruby-pry))
     (synopsis "Test mocks for time-dependent functions")
     (description
      "Timecop provides \"time travel\" and \"time freezing\" capabilities,
@@ -11941,7 +12516,8 @@ libraries for compiling Ruby native extensions.")
          "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list ruby-hoe))
+     (list ruby-hoe
+           ruby-minitest))
     (synopsis "RFC 2617 HTTP digest authentication library")
     (description
      "This library implements HTTP's digest authentication scheme based on
@@ -12247,7 +12823,7 @@ programs running in the background, in Ruby.")
                (("RuboCop::RakeTask\\.new") ""))
              #t)))))
     (native-inputs
-     (list bundler ruby-yard ruby-mocha ruby-minitest-reporters))
+     (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters))
     (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
     (synopsis "Domain name parser")
     (description "The gem @code{public_suffix} is a domain name parser,
@@ -12294,7 +12870,7 @@ all known public suffixes.")
            ruby-rspec-its-minimal
            ruby-simplecov
            ruby-sporkmonger-rack-mount
-           ruby-yard))
+           ruby-yard/minimal))
     (propagated-inputs
      (list ruby-public-suffix))
     (home-page "https://github.com/sporkmonger/addressable")
@@ -12401,14 +12977,14 @@ your application.")
 (define-public ruby-kpeg
   (package
   (name "ruby-kpeg")
-  (version "1.1.0")
+  (version "1.3.3")
   (source
     (origin
       (method url-fetch)
       (uri (rubygems-uri "kpeg" version))
       (sha256
         (base32
-          "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
+          "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp"))))
   (build-system ruby-build-system)
   (native-inputs
    (list ruby-hoe))
@@ -12424,7 +13000,7 @@ technique.")
 (define-public ruby-rdoc
   (package
     (name "ruby-rdoc")
-    (version "6.2.0")
+    (version "6.5.0")
     (source
      (origin
        (method git-fetch)
@@ -12434,7 +13010,7 @@ technique.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
+         "06dcjs4s2phvg9bq42mlfqv4c4zpdr8w7aq107lm2q0qqqw7xjlr"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -12485,20 +13061,35 @@ about the changes.")
 (define-public ruby-terminfo
   (package
     (name "ruby-terminfo")
-    (version "0.1.1")
+    (version "0.2")
     (source
       (origin
         (method url-fetch)
-        (uri (rubygems-uri "ruby-terminfo" version))
+        (uri (string-append
+              "http://www.a-k-r.org/" name "/" name "-" version ".tar.gz"))
         (sha256
           (base32
-            "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
+            "1n59dw351z6nzylgj0gpx4rpz6qhf8lrhzcbp1xqfpqvryhaxrjh"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "test"
-       ;; Rakefile requires old packages and would need modification to
-       ;; work with current software.
-       #:tests? #f))
+     (list
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'replace-git-ls-files)
+          (replace 'build
+            (lambda _
+              (invoke "ruby" "extconf.rb")
+              (invoke "make")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (for-each (lambda (f)
+                            (invoke "ruby" "-I" "test" f))
+                          (find-files "test" "^test_.*\\.rb$")))))
+          (replace 'install
+            (lambda _
+              (invoke "make" "install" (string-append "prefix=" #$output)))))))
     (inputs
      (list ncurses))
     (native-inputs
@@ -12546,20 +13137,20 @@ strings or files.")
         (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
     (build-system ruby-build-system)
     (propagated-inputs
-     `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
-       ("ruby-diffy" ,ruby-diffy)
-       ("ruby-terminfo" ,ruby-terminfo)))
+     (list ruby-command-line-reporter-3
+           ruby-diffy))
     (arguments
-     `(;; This package contains tests for a sass implementation, and the to
-       ;; avoid any circular dependencies, the tests are not run here
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-test
-           (lambda _
-             (delete-file "spec/values/colors/alpha_hex-3.5/error")
-             (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
-               (("string") "color")))))))
+     (list
+      ;; This package contains tests for a sass implementation, and the to
+      ;; avoid any circular dependencies, the tests are not run here
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-test
+            (lambda _
+              (delete-file "spec/values/colors/alpha_hex-3.5/error")
+              (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
+                (("string") "color")))))))
     (home-page "https://github.com/sass/sass-spec")
     (synopsis "Test suite for Sass")
     (description "Sass Spec is a test suite for Sass.  Test cases are all in
@@ -12569,14 +13160,19 @@ the @file{spec} directory.")
 (define-public ruby-sass
   (package
     (name "ruby-sass")
-    (version "3.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "sass" version))
-              (sha256
-               (base32
-                "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
+    (version "3.7.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sass/ruby-sass")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky"))))
     (build-system ruby-build-system)
+    (arguments
+     (list #:test-target "test:ruby"))
     (propagated-inputs
      (list ruby-sass-listen))
     (native-inputs
@@ -13271,7 +13867,7 @@ hashes more powerful.")
                 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
     (build-system ruby-build-system)
     (native-inputs
-     (list ruby-hoe))
+     (list ruby-hoe-3))
     (home-page "https://github.com/adrianomitre/heredoc_unindent")
     (synopsis "Heredoc indentation cleaner")
     (description "This gem removes common margin from indented strings, such
@@ -13303,17 +13899,18 @@ indentation will probably be an issue and hence this gem.")
     (native-inputs
      (list ruby-rspec ruby-hashie ruby-heredoc-unindent))
     (arguments
-     '(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-TZ
-           (lambda _
-             ;; This test is dependent on the timezone
-             ;; spec/transform/to_date_spec.rb:35
-             ;; # SafeYAML::Transform::ToDate converts times to the local
-             ;; timezone
-             (setenv "TZ" "UTC-11")
-             #t)))))
+     (list
+      #:ruby ruby-2.7
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'set-TZ
+            (lambda _
+              ;; This test is dependent on the timezone
+              ;; spec/transform/to_date_spec.rb:35
+              ;; # SafeYAML::Transform::ToDate converts times to the local
+              ;; timezone
+              (setenv "TZ" "UTC-11"))))))
     (home-page "https://github.com/dtao/safe_yaml")
     (synopsis "YAML parser")
     (description "The SafeYAML gem provides an alternative implementation of
@@ -13950,6 +14547,10 @@ for scalable network clients and servers.")
      (list
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-unnecessary-dependencies
+            (lambda _
+              (substitute* "Gemfile"
+                (("gem \"pry-byebug\"") ""))))
           (replace 'replace-git-ls-files
             (lambda _
               (substitute* "language_server-protocol.gemspec"
@@ -13962,8 +14563,7 @@ for scalable network clients and servers.")
            ruby-benchmark-ips
            ruby-m
            ruby-minitest
-           ruby-minitest-power-assert
-           ruby-pry-byebug))
+           ruby-minitest-power-assert))
     (synopsis "Language Server Protocol (LSP) development kit for Ruby")
     (description "This package provides a Language Server Protocol (LSP)
 development kit for Ruby.")
@@ -13985,6 +14585,10 @@ development kit for Ruby.")
      (list #:phases #~(modify-phases %standard-phases
                         (add-after 'extract-gemspec 'relax-requirements
                           (lambda _
+                            (substitute* "spy.gemspec"
+                              ((".*pry-byebug.*") ""))
+                            (substitute* "test/test_helper.rb"
+                              ((".*pry-byebug.*") ""))
                             (substitute* "Gemfile"
                               ((".*redcarpet.*") "")
                               ((".*yard.*") "")))))))
@@ -13992,7 +14596,6 @@ development kit for Ruby.")
      (list ruby-coveralls
            ruby-minitest-reporters
            ruby-pry
-           ruby-pry-byebug
            ruby-rspec-core
            ruby-rspec-expectations))
     (synopsis "Mocking library for Ruby")
@@ -14153,7 +14756,6 @@ can be used to build formatters, linters, language servers, and more.")
            ruby-rubocop-performance
            ruby-concurrent-ruby
            ruby-pry
-           ruby-pry-byebug
            ruby-parser
            ruby-subprocess))
     (synopsis "Runtime type checking component for Sorbet")
@@ -14588,27 +15190,27 @@ is also included.")
 (define-public swagger-diff
   (package
     (name "swagger-diff")
-    (version "1.1.2")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "swagger-diff" version))
        (sha256
         (base32
-         "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
+         "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         ;; Don't run or require rubocop, the code linting tool, as this is a
-         ;; bit unnecessary.
-         (add-after 'unpack 'dont-run-rubocop
-           (lambda _
-             (substitute* "Rakefile"
-               ((".*rubocop.*") "")
-               ((".*RuboCop.*") ""))
-             #t)))))
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Don't run or require rubocop, the code linting tool, as this is a
+          ;; bit unnecessary.
+          (add-after 'unpack 'dont-run-rubocop
+            (lambda _
+              (substitute* "Rakefile"
+                ((".*rubocop.*") "")
+                ((".*RuboCop.*") "")))))))
     (propagated-inputs
      (list ruby-json-schema))
     (native-inputs
@@ -15719,29 +16321,36 @@ HTTPS server, a proxy server, and a virtual-host server.")
     (license license:bsd-2)))
 
 (define-public ruby-websocket
-  (package
-    (name "ruby-websocket")
-    (version "1.2.9")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "websocket" version))
-              (sha256
-               (base32
-                "0dib6p55sl606qb4vpwrvj5wh881kk4aqn2zpfapf8ckx7g14jw8"))))
-    (build-system ruby-build-system)
-    (arguments (list #:test-target "spec"
-                     #:phases #~(modify-phases %standard-phases
-                                  (add-after 'unpack 'disable-rubocop
-                                    (lambda _
-                                      (substitute* "Rakefile"
-                                        (("require 'rubocop/rake_task'") "")
-                                        (("RuboCop::RakeTask.new") "")))))))
-    (native-inputs (list ruby-rspec))
-    (synopsis "WebSocket protocol Ruby library")
-    (description "This package provides a Ruby library to handle the WebSocket
+  (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1")
+        (revision "1"))
+    (package
+      (name "ruby-websocket")
+      (version (git-version "1.2.9" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/imanel/websocket-ruby")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv"))
+                (file-name (git-file-name name version))))
+      (build-system ruby-build-system)
+      (arguments (list #:test-target "spec"
+                       #:phases #~(modify-phases %standard-phases
+                                    (add-after 'unpack 'disable-rubocop
+                                      (lambda _
+                                        (substitute* "Rakefile"
+                                          (("require 'rubocop/rake_task'") "")
+                                          (("RuboCop::RakeTask.new") "")))))))
+      (native-inputs
+       (list ruby-rspec
+             ruby-webrick))
+      (synopsis "WebSocket protocol Ruby library")
+      (description "This package provides a Ruby library to handle the WebSocket
 protocol.")
-    (home-page "https://github.com/imanel/websocket-ruby")
-    (license license:expat)))
+      (home-page "https://github.com/imanel/websocket-ruby")
+      (license license:expat))))
 
 (define-public ruby-interception
   (package
@@ -15795,7 +16404,7 @@ any unhandled exceptions.")
 (define-public ruby-braintree
   (package
     (name "ruby-braintree")
-    (version "4.10.0")
+    (version "4.12.0")
     (source
      (origin
        (method git-fetch)               ;for tests
@@ -15804,27 +16413,30 @@ any unhandled exceptions.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01b5bp8q038ray5wwg3qhg4hj3r5a48vnfzs3gxkdjm5ky6bmn4p"))))
+        (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "test:unit"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-rubocop
-           (lambda _
-             (substitute* "Rakefile"
-               (("sh \"rubocop\"") ""))))
-         (add-after 'unpack 'relax-requirements
-           (lambda _
-             (substitute* "Gemfile"
-               (("gem \"libxml-ruby\", \"3.2.0\"")
-                "gem \"libxml-ruby\", \"~> 3.0.0\"")
-               (("gem \"rspec\", \"3.9.0\"")
-                "gem \"rspec\", \">= 3.9.0\"")
-               (("gem \"webrick\", \"~>1.7.0\"")
-                "gem \"webrick\", \">=1.7.0\"")
-               ((".*gem \"rubocop\".*") "")
-               ((".*gem \"rspec_junit_formatter\".*") "")))))))
+     (list
+      #:test-target "test:unit"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-rubocop
+            (lambda _
+              (substitute* "Rakefile"
+                (("sh \"rubocop\"") ""))))
+          (add-after 'unpack 'relax-requirements
+            (lambda _
+              (substitute* "Gemfile"
+                (("gem \"pry\".*") "gem 'pry'\n")
+                (("gem \"rake\".*") "gem 'rake'\n")
+                (("gem \"libxml-ruby\", \"3.2.0\"")
+                 "gem \"libxml-ruby\", \"~> 3.0.0\"")
+                (("gem \"rspec\", \"3.9.0\"")
+                 "gem \"rspec\", \">= 3.9.0\"")
+                (("gem \"webrick\", \"~>1.7.0\"")
+                 "gem \"webrick\", \">=1.7.0\"")
+                ((".*gem \"rubocop\".*") "")
+                ((".*gem \"rspec_junit_formatter\".*") "")))))))
     (native-inputs
      (list ruby-libxml
            ruby-pry
@@ -15906,24 +16518,23 @@ and Nokogiri.")
 (define-public ruby-wapiti
   (package
     (name "ruby-wapiti")
-    (version "2.0.0")
+    (version "2.1.0")
     ;; the gem archive lacks tests
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/inukshuk/wapiti-ruby")
-                    (commit version)))
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kawqw45j7mqk5zmwbn67x1vxiapdgm2ypqqz2bs9l5s7nglzr5b"))))
+                "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6"))))
     (build-system ruby-build-system)
     (propagated-inputs
      (list ruby-builder
            ruby-rexml))
     (native-inputs
-     (list ruby-byebug
-           ruby-pry
+     (list ruby-pry
            ruby-rake-compiler
            ruby-rspec
            ruby-simplecov))
@@ -16003,6 +16614,7 @@ parts (e.g., given and family names, honorifics etc.).")
     (arguments
      ;; thanks to the Gentoo packagers for figuring this out
      (list
+      #:ruby ruby-2.7
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'extract-gemspec 'fix-tests
@@ -16184,8 +16796,7 @@ markdown syntax document and passes the Markdown 1.0 test suite.")
            ruby-rdf
            ruby-rdf-vocab))
     (native-inputs
-     (list ruby-byebug
-           ruby-cucumber
+     (list ruby-cucumber
            ruby-minitest
            ruby-yard))
     (arguments
@@ -16255,6 +16866,57 @@ process citations, a dedicated processor engine is required: a pure Ruby
 engine is available in the @code{citeproc-ruby} gem.")
     (license (list license:agpl3+ license:bsd-2))))
 
+(define-public ruby-ed25519
+  (package
+    (name "ruby-ed25519")
+    (version "1.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/RubyCrypto/ed25519")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:test-target "spec"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'compile
+            (lambda _
+              (invoke "rake" "compile")))
+          (add-after 'unpack 'remove-unnecessary-dependencies
+            (lambda _
+              ;; Coveralls relates to a network service, and RuboCop to code
+              ;; linting and both are unnecessary to run the tests
+              (substitute* "Gemfile"
+                ((".*coveralls.*")
+                 "\n")
+                ((".*rubocop.*")
+                 "\n"))
+              (substitute* "spec/spec_helper.rb"
+                (("require \"coveralls\"")
+                 "")
+                (("Coveralls.wear!")
+                 ""))
+              (substitute* "Rakefile"
+                (("require \"rubocop/rake_task\"")
+                 "")
+                (("RuboCop::RakeTask.new")
+                 "")))))))
+    (native-inputs (list ruby-rake-compiler ruby-rspec))
+    (synopsis
+     "Ruby binding to the Ed25519 elliptic curve public-key signature system")
+    (description
+     "This package provides a Ruby binding to the Ed25519 elliptic curve
+public-key signature system described in
+@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.")
+    (home-page "https://github.com/RubyCrypto/ed25519")
+    (license license:expat)))
+
 (define-public ruby-edtf
   (package
     (name "ruby-edtf")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 2337b60ee9..215ea741f8 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -138,6 +138,12 @@
                (("\\./configure")
                 (string-append (which "sh") " configure")))
              #t))
+         ;; disable array-parameter warnings that become errors while
+         ;; compiling microcode target
+         (add-before 'configure 'set-flags
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CFLAGS" "-Wno-array-parameter")
+             (setenv "CPPFLAGS" "-Wno-array-parameter")))
          (replace 'build
            (lambda* (#:key system outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 39954d6764..1f8c128eba 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2023 Alexey Abramov <levenson@mmer.org>
+;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,7 @@
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
@@ -58,6 +60,8 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages perl))
@@ -613,6 +617,61 @@ object, without whitespace.")
 RPC system.  Think JSON, except binary.  Or think Protocol Buffers, except faster.")
     (license license:expat)))
 
+(define-public python-msgspec
+  (package
+    (name "python-msgspec")
+    (version "0.16.0")
+    (source (origin
+              ;; There are no tests in the PyPI tarball.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jcrist/msgspec")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "09q567klcv7ly60w9lqip2ffyhrij100ky9igh3p3vqwbml33zb3"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      ;; Disable only one failing test.
+      ;;
+      ;; AssertionError: msgspec/structs.pyi:7: error: Positional-only
+      ;; parameters are only supported in Python 3.8 and greater
+      #:test-flags #~(list "-k" "not test_mypy")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'versioneer
+                     (lambda _
+                       (invoke "versioneer" "install")
+                       (substitute* "setup.py"
+                         (("version=versioneer.get_version\\(),")
+                          (format #f "version=~s," #$version))))))))
+    (native-inputs (list python-attrs
+                         python-gcovr
+                         python-msgpack
+                         python-mypy
+                         python-pytest
+                         python-setuptools-scm
+                         python-versioneer))
+    (propagated-inputs (list python-pyyaml python-tomli python-tomli-w))
+    (home-page "https://jcristharif.com/msgspec/")
+    (synopsis "Fast serialization/validation library")
+    (description "@code{msgspec} is a fast serialization and validation
+library, with builtin support for JSON, MessagePack, YAML, and TOML.  It
+includes the following features:
+
+@itemize
+@item High performance encoders/decoders for common protocols.
+@item Support for a wide variety of Python types.
+@item Zero-cost schema validation using familiar Python type annotations.
+@item A speedy Struct type for representing structured data.
+@end itemize")
+    ;; XXX: It might support more architectures but GitHub Actions listed only
+    ;; two right now. Try to build for the rest supported by Guix.  See:
+    ;; https://github.com/jcrist/msgspec/blob/main/.github/workflows/ci.yml#L83
+    (supported-systems (list "x86_64-linux" "aarch64-linux"))
+    (license license:bsd-3)))
+
 (define-public python-ruamel.yaml
   (package
     (name "python-ruamel.yaml")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 070613afe1..cbeaa05b3d 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -188,33 +188,32 @@ in Zsh intelligently.")
     (build-system gnu-build-system)
     (native-inputs
      (list ruby
-           ruby-byebug
            ruby-pry
            ruby-rspec
            ruby-rspec-wait
            tmux
            zsh))
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-tests
-           (lambda _
-             ;; Failing tests since tmux-3.2a
-             (delete-file "spec/options/buffer_max_size_spec.rb")))
-         (delete 'configure)
-         (replace 'check ; Tests use ruby's bundler; instead execute rspec directly.
-           (lambda _
-             (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
-             (setenv "SHELL" (which "zsh"))
-             (invoke "rspec")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (zsh-plugins
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              ;; Failing tests since tmux-3.2a
+              (delete-file "spec/options/buffer_max_size_spec.rb")))
+          (delete 'configure)
+          (replace 'check ; Tests use ruby's bundler; instead execute rspec directly.
+            (lambda _
+              (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
+              (setenv "SHELL" (which "zsh"))
+              (invoke "rspec")))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (zsh-plugins
                       (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
-               (invoke "make" "all")
-               (install-file "zsh-autosuggestions.zsh" zsh-plugins)
-               #t))))))
+                (invoke "make" "all")
+                (install-file "zsh-autosuggestions.zsh" zsh-plugins)))))))
     (home-page "https://github.com/zsh-users/zsh-autosuggestions")
     (synopsis "Fish-like autosuggestions for zsh")
     (description
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index 059be5a2be..a4aac0ebf8 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -569,108 +569,111 @@ FFC is part of the FEniCS Project.")
                               "$ENV{CATCH_DIR}/include" back "\n")))))))
     (build-system cmake-build-system)
     (inputs
-     `(("blas" ,openblas)
-       ("boost" ,boost)
-       ("eigen" ,eigen)
-       ("hdf5" ,hdf5-parallel-openmpi)
-       ("lapack" ,lapack)
-       ("libxml2" ,libxml2)
-       ("openmpi" ,openmpi)
-       ("python" ,python-3)
-       ("scotch" ,pt-scotch32)
-       ("suitesparse" ,suitesparse)
-       ("sundials" ,sundials-openmpi)
-       ("zlib" ,zlib)))
+     (list openblas
+           boost
+           eigen
+           hdf5-parallel-openmpi
+           lapack
+           libxml2
+           openmpi
+           python-3
+           pt-scotch32
+           suitesparse
+           sundials-openmpi
+           zlib))
     (native-inputs
-     `(("catch" ,catch2-1)
-       ("pkg-config" ,pkg-config)))
+     (list catch-framework pkg-config))
     (propagated-inputs
-     `(("ffc" ,python-fenics-ffc)
-       ("petsc" ,petsc-openmpi)
-       ("slepc" ,slepc-openmpi)))
+     (list python-fenics-ffc petsc-openmpi slepc-openmpi))
     (arguments
-     `(#:configure-flags
-       `("-DDOLFIN_ENABLE_DOCS:BOOL=OFF"
-         "-DDOLFIN_ENABLE_HDF5:BOOL=ON"
-         "-DDOLFIN_ENABLE_MPI:BOOL=ON"
-         "-DDOLFIN_ENABLE_PARMETIS:BOOL=OFF"
-         "-DDOLFIN_ENABLE_SCOTCH:BOOL=ON"
-         "-DDOLFIN_ENABLE_SUNDIALS:BOOL=ON"
-         "-DDOLFIN_ENABLE_TRILINOS:BOOL=OFF")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'patch-usr-bin-file 'mpi-setup
-           ,%openmpi-setup)
-         (add-after 'patch-source-shebangs 'set-paths
-           (lambda _
-             ;; Define paths to store locations.
-             (setenv "BLAS_DIR" (assoc-ref %build-inputs "blas"))
-             (setenv "CATCH_DIR" (assoc-ref %build-inputs "catch"))
-             (setenv "LAPACK_DIR" (assoc-ref %build-inputs "lapack"))
-             (setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc"))
-             (setenv "SLEPC_DIR" (assoc-ref %build-inputs "slepc"))
-             (setenv "SCOTCH_DIR" (assoc-ref %build-inputs "scotch"))
-             (setenv "SUNDIALS_DIR" (assoc-ref %build-inputs "sundials"))
-             (setenv "UMFPACK_DIR" (assoc-ref %build-inputs "suitesparse"))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; The Dolfin repository uses git-lfs, whereby web links are
-             ;; substituted for large files.  Guix does not currently support
-             ;; git-lfs, so only the links are downloaded.  The tests that
-             ;; require the absent meshes cannot run and are skipped.
-             ;;
-             ;; One serial test fails and is skipped.
-             ;; i) demo_multimesh-stokes_serial:
-             ;;   Warning: Found no facets matching domain for boundary
-             ;;   condition.
-             ;;
-             ;; One mpi test fails and is skipped.
-             ;; i) demo_stokes-iterative_mpi:
-             ;;   The MPI_Comm_rank() function was called before MPI_INIT was
-             ;;   invoked
-             (call-with-output-file "CTestCustom.cmake"
-               (lambda (port)
-                 (display
-                   (string-append
-                    "set(CTEST_CUSTOM_TESTS_IGNORE "
-                    "demo_bcs_serial "
-                    "demo_bcs_mpi "
-                    "demo_eigenvalue_serial "
-                    "demo_eigenvalue_mpi "
-                    "demo_navier-stokes_serial "
-                    "demo_navier-stokes_mpi "
-                    "demo_stokes-taylor-hood_serial "
-                    "demo_stokes-taylor-hood_mpi "
-                    "demo_subdomains_serial "
-                    "demo_advection-diffusion_serial "
-                    "demo_advection-diffusion_mpi "
-                    "demo_auto-adaptive-navier-stokes_serial "
-                    "demo_contact-vi-snes_serial "
-                    "demo_contact-vi-snes_mpi "
-                    "demo_contact-vi-tao_serial "
-                    "demo_contact-vi-tao_mpi "
-                    "demo_curl-curl_serial "
-                    "demo_curl-curl_mpi "
-                    "demo_dg-advection-diffusion_serial "
-                    "demo_dg-advection-diffusion_mpi "
-                    "demo_elasticity_serial "
-                    "demo_elasticity_mpi "
-                    "demo_elastodynamics_serial "
-                    "demo_elastodynamics_mpi "
-                    "demo_lift-drag_serial "
-                    "demo_lift-drag_mpi "
-                    "demo_mesh-quality_serial "
-                    "demo_mesh-quality_mpi "
-                    "demo_multimesh-stokes_serial "
-                    ")\n") port)))))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "make" "unittests")
-               (invoke "make" "demos")
-               (invoke "ctest" "-R" "unittests")
-               (invoke "ctest" "-R" "demo" "-R" "serial")
-               (invoke "ctest" "-R" "demo" "-R" "mpi")))))))
+     (list #:configure-flags #~`("-DDOLFIN_ENABLE_DOCS:BOOL=OFF"
+                                 "-DDOLFIN_ENABLE_HDF5:BOOL=ON"
+                                 "-DDOLFIN_ENABLE_MPI:BOOL=ON"
+                                 "-DDOLFIN_ENABLE_PARMETIS:BOOL=OFF"
+                                 "-DDOLFIN_ENABLE_SCOTCH:BOOL=ON"
+                                 "-DDOLFIN_ENABLE_SUNDIALS:BOOL=ON"
+                                 "-DDOLFIN_ENABLE_TRILINOS:BOOL=OFF")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'patch-usr-bin-file 'mpi-setup
+                 #$%openmpi-setup)
+               (add-after 'patch-source-shebangs 'set-paths
+                 (lambda _
+                   ;; Define paths to store locations.
+                   (setenv "BLAS_DIR"
+                           #$(this-package-input "openblas"))
+                   (setenv "CATCH_DIR"
+                           #$(this-package-input "catch"))
+                   (setenv "LAPACK_DIR"
+                           #$(this-package-input "lapack"))
+                   (setenv "PETSC_DIR"
+                           #$(this-package-input "petsc"))
+                   (setenv "SLEPC_DIR"
+                           #$(this-package-input "slepc"))
+                   (setenv "SCOTCH_DIR"
+                           #$(this-package-input "scotch"))
+                   (setenv "SUNDIALS_DIR"
+                           #$(this-package-input "sundials"))
+                   (setenv "UMFPACK_DIR"
+                           #$(this-package-input "suitesparse"))))
+               (add-before 'check 'pre-check
+                 (lambda _
+                   ;; The Dolfin repository uses git-lfs, whereby web links are
+                   ;; substituted for large files.  Guix does not currently support
+                   ;; git-lfs, so only the links are downloaded.  The tests that
+                   ;; require the absent meshes cannot run and are skipped.
+                   ;;
+                   ;; One serial test fails and is skipped.
+                   ;; i) demo_multimesh-stokes_serial:
+                   ;;   Warning: Found no facets matching domain for boundary
+                   ;;   condition.
+                   ;;
+                   ;; One mpi test fails and is skipped.
+                   ;; i) demo_stokes-iterative_mpi:
+                   ;;   The MPI_Comm_rank() function was called before MPI_INIT was
+                   ;;   invoked
+                   (call-with-output-file "CTestCustom.cmake"
+                     (lambda (port)
+                       (display (string-append
+                                 "set(CTEST_CUSTOM_TESTS_IGNORE "
+                                 "demo_bcs_serial "
+                                 "demo_bcs_mpi "
+                                 "demo_eigenvalue_serial "
+                                 "demo_eigenvalue_mpi "
+                                 "demo_navier-stokes_serial "
+                                 "demo_navier-stokes_mpi "
+                                 "demo_stokes-taylor-hood_serial "
+                                 "demo_stokes-taylor-hood_mpi "
+                                 "demo_subdomains_serial "
+                                 "demo_advection-diffusion_serial "
+                                 "demo_advection-diffusion_mpi "
+                                 "demo_auto-adaptive-navier-stokes_serial "
+                                 "demo_contact-vi-snes_serial "
+                                 "demo_contact-vi-snes_mpi "
+                                 "demo_contact-vi-tao_serial "
+                                 "demo_contact-vi-tao_mpi "
+                                 "demo_curl-curl_serial "
+                                 "demo_curl-curl_mpi "
+                                 "demo_dg-advection-diffusion_serial "
+                                 "demo_dg-advection-diffusion_mpi "
+                                 "demo_elasticity_serial "
+                                 "demo_elasticity_mpi "
+                                 "demo_elastodynamics_serial "
+                                 "demo_elastodynamics_mpi "
+                                 "demo_lift-drag_serial "
+                                 "demo_lift-drag_mpi "
+                                 "demo_mesh-quality_serial "
+                                 "demo_mesh-quality_mpi "
+                                 "demo_multimesh-stokes_serial "
+                                 ")\n") port)))))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "make" "unittests")
+                     (invoke "make" "demos")
+                     (invoke "ctest" "-R" "unittests")
+                     (invoke "ctest" "-R" "demo" "-R" "serial")
+                     (invoke "ctest" "-R" "demo" "-R" "mpi")))))))
     (home-page "https://bitbucket.org/fenics-project/dolfin/")
     (synopsis "Problem solving environment for differential equations")
     (description
@@ -708,101 +711,114 @@ user interface to the FEniCS core components and external libraries.")
     (name "fenics")
     (build-system python-build-system)
     (inputs
-     `(("pybind11" ,pybind11)
-       ("python-matplotlib" ,python-matplotlib)
-       ,@(alist-delete "python" (package-inputs fenics-dolfin))))
+     (modify-inputs (package-inputs fenics-dolfin)
+       (delete "python")
+       (prepend pybind11 python-matplotlib)))
     (native-inputs
-     `(("cmake" ,cmake-minimal)
-       ("ply" ,python-ply)
-       ("pytest" ,python-pytest)
-       ("python-decorator" ,python-decorator)
-       ("python-pkgconfig" ,python-pkgconfig)
-       ,@(package-native-inputs fenics-dolfin)))
+     (modify-inputs (package-native-inputs fenics-dolfin)
+       (prepend cmake-minimal python-ply python-pytest python-decorator)))
     (propagated-inputs
-     `(("dolfin" ,fenics-dolfin)
-       ("petsc4py" ,python-petsc4py)
-       ("slepc4py" ,python-slepc4py)))
+     (list fenics-dolfin
+           python-petsc4py
+           python-slepc4py
+
+           ;; 'dolfin/jit/jit.py' parses 'dolfin.pc' at run time.
+           python-pkgconfig))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'relax-requirements
-           (lambda _
-             (substitute* "python/setup.py"
-               (("pybind11==") "pybind11>="))))
-         (add-after 'patch-source-shebangs 'set-paths
-           (lambda _
-             ;; Define paths to store locations.
-             (setenv "PYBIND11_DIR" (assoc-ref %build-inputs "pybind11"))
-             ;; Move to python sub-directory.
-             (chdir "python")))
-         (add-after 'build 'mpi-setup
-           ,%openmpi-setup)
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Exclude three tests that generate
-             ;; 'NotImplementedError' in matplotlib version 3.1.2.
-             ;; See
-             ;; <https://github.com/matplotlib/matplotlib/issues/15382>.
-             ;; Also exclude tests that require meshes supplied by
-             ;; git-lfs.
-             (substitute* "demo/test.py"
-               (("(.*stem !.*)" line)
-                (string-append
-                 line "\n"
-                 "excludeList = [\n"
-                 "'built-in-meshes', \n"
-                 "'hyperelasticity', \n"
-                 "'elasticity', \n"
-                 "'multimesh-quadrature', \n"
-                 "'multimesh-marking', \n"
-                 "'mixed-poisson-sphere', \n"
-                 "'mesh-quality', \n"
-                 "'lift-drag', \n"
-                 "'elastodynamics', \n"
-                 "'dg-advection-diffusion', \n"
-                 "'curl-curl', \n"
-                 "'contact-vi-tao', \n"
-                 "'contact-vi-snes', \n"
-                 "'collision-detection', \n"
-                 "'buckling-tao', \n"
-                 "'auto-adaptive-navier-stokes', \n"
-                 "'advection-diffusion', \n"
-                 "'subdomains', \n"
-                 "'stokes-taylor-hood', \n"
-                 "'stokes-mini', \n"
-                 "'navier-stokes', \n"
-                 "'eigenvalue']\n"
-                 "demos = ["
-                 "d for d in demos if d[0].stem not in "
-                 "excludeList]\n")))
-             (setenv "HOME" (getcwd))
-             ;; Restrict OpenBLAS to MPI-only in preference to MPI+OpenMP.
-             (setenv "OPENBLAS_NUM_THREADS" "1")))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (with-directory-excursion "test"
-                 (invoke
-                  "pytest" "unit"
-                  ;; The test test_snes_set_from_options() in the file
-                  ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
-                  "--ignore" "unit/nls/test_PETScSNES_solver.py"
-                  ;; Fails with a segfault.
-                  "--ignore" "unit/io/test_XDMF.py")))))
-         (add-after 'install 'install-demo-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((demos (string-append
-                            (assoc-ref outputs "out")
-                            "/share/python-dolfin/demo")))
-               (mkdir-p demos)
-               (with-directory-excursion "demo"
-                 (for-each (lambda (file)
-                             (let* ((dir (dirname file))
-                                    (tgt-dir (string-append demos "/" dir)))
-                               (unless (equal? "." dir)
-                                 (mkdir-p tgt-dir)
-                                 (install-file file tgt-dir))))
-                           (find-files "." ".*\\.(py|gz|xdmf)$")))))))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'relax-requirements
+                 (lambda _
+                   (substitute* "python/setup.py"
+                     (("pybind11==")
+                      "pybind11>="))))
+               (add-after 'unpack 'set-dolfin-pc-file-name
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Instead of cluttering the user's 'PKG_CONFIG_PATH' environment
+                   ;; variable, hard-code the 'dolfin.pc' absolute file name.
+                   (let ((pc-file (search-input-file inputs
+                                                     "/lib/pkgconfig/dolfin.pc")))
+                     (substitute* "python/dolfin/jit/jit.py"
+                       (("pkgconfig\\.parse\\(\"dolfin\"\\)")
+                        (string-append "pkgconfig.parse(\"" pc-file
+                                       "\")"))))))
+               (add-after 'patch-source-shebangs 'set-paths
+                 (lambda _
+                   ;; Define paths to store locations.
+                   (setenv "PYBIND11_DIR" #$(this-package-input "pybind11"))
+                   ;; Move to python sub-directory.
+                   (chdir "python")))
+               (add-after 'build 'mpi-setup
+                 #$%openmpi-setup)
+               (add-before 'check 'pre-check
+                 (lambda _
+                   ;; Exclude three tests that generate
+                   ;; 'NotImplementedError' in matplotlib version 3.1.2.
+                   ;; See
+                   ;; <https://github.com/matplotlib/matplotlib/issues/15382>.
+                   ;; Also exclude tests that require meshes supplied by
+                   ;; git-lfs.
+                   (substitute* "demo/test.py"
+                     (("(.*stem !.*)" line)
+                      (string-append line
+                                     "\n"
+                                     "excludeList = [\n"
+                                     "'built-in-meshes', \n"
+                                     "'hyperelasticity', \n"
+                                     "'elasticity', \n"
+                                     "'multimesh-quadrature', \n"
+                                     "'multimesh-marking', \n"
+                                     "'mixed-poisson-sphere', \n"
+                                     "'mesh-quality', \n"
+                                     "'lift-drag', \n"
+                                     "'elastodynamics', \n"
+                                     "'dg-advection-diffusion', \n"
+                                     "'curl-curl', \n"
+                                     "'contact-vi-tao', \n"
+                                     "'contact-vi-snes', \n"
+                                     "'collision-detection', \n"
+                                     "'buckling-tao', \n"
+                                     "'auto-adaptive-navier-stokes', \n"
+                                     "'advection-diffusion', \n"
+                                     "'subdomains', \n"
+                                     "'stokes-taylor-hood', \n"
+                                     "'stokes-mini', \n"
+                                     "'navier-stokes', \n"
+                                     "'eigenvalue']\n"
+                                     "demos = ["
+                                     "d for d in demos if d[0].stem not in "
+                                     "excludeList]\n")))
+                   (setenv "HOME"
+                           (getcwd))
+                   ;; Restrict OpenBLAS to MPI-only in preference to MPI+OpenMP.
+                   (setenv "OPENBLAS_NUM_THREADS" "1")))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (with-directory-excursion "test"
+                       (invoke "pytest"
+                               "unit"
+                               ;; The test test_snes_set_from_options() in the file
+                               ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
+                               "--ignore"
+                               "unit/nls/test_PETScSNES_solver.py"
+                               ;; Fails with a segfault.
+                               "--ignore"
+                               "unit/io/test_XDMF.py")))))
+               (add-after 'install 'install-demo-files
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((demos (string-append (assoc-ref outputs "out")
+                                                "/share/python-dolfin/demo")))
+                     (mkdir-p demos)
+                     (with-directory-excursion "demo"
+                       (for-each (lambda (file)
+                                   (let* ((dir (dirname file))
+                                          (tgt-dir (string-append
+                                                    demos "/" dir)))
+                                     (unless (equal? "." dir)
+                                       (mkdir-p tgt-dir)
+                                       (install-file file tgt-dir))))
+                                 (find-files "." ".*\\.(py|gz|xdmf)$")))))))))
     (home-page "https://fenicsproject.org/")
     (synopsis "High-level environment for solving differential equations")
     (description
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index b973efc291..0ac9d78482 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -132,7 +132,7 @@ file names.
 (define-public libssh
   (package
     (name "libssh")
-    (version "0.10.4")
+    (version "0.10.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.libssh.org/files/"
@@ -140,7 +140,7 @@ file names.
                                   "/libssh-" version ".tar.xz"))
               (sha256
                (base32
-                "0zfr9fy4vg1bmz1k836hg9wi20mmaz2sgw61s6464iv1mda2qf87"))
+                "0d22gq77ga24ijlgr3d1wvhfvprx61iklkb3npifxfb7ygvjy3mn"))
               (modules '((guix build utils)))
               (snippet
                ;; 'PATH_MAX' is undefined on GNU/Hurd; work around it.
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index e025653338..f28e60362c 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -81,6 +81,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
@@ -622,14 +623,14 @@ for reading and writing some dBase files.")
 (define-public r-kernsmooth
   (package
     (name "r-kernsmooth")
-    (version "2.23-21")
+    (version "2.23-22")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "KernSmooth" version))
        (sha256
         (base32
-         "12qsy90cmcg8pdvcpasdskh82x9d83xdznibi9b7z1hkw8ccnqrx"))))
+         "1sblhl7b9d3m6034xd3254ddkj9ssqxawknzksfbgjh68s849q3n"))))
     (properties `((upstream-name . "KernSmooth")))
     (build-system r-build-system)
     (native-inputs
@@ -666,14 +667,14 @@ also flexible enough to handle most nonstandard requirements.")
 (define-public r-matrix
   (package
     (name "r-matrix")
-    (version "1.5-4.1")
+    (version "1.6-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Matrix" version))
        (sha256
         (base32
-         "0bh87f6yll06q0068wavwmagvsc0p95g7071zsjr2yzb2dr5i2b5"))))
+         "17dpfqyr68dldlj4v26rjrwv6pv87czj9szqqp64fwczyy0fdszb"))))
     (properties `((upstream-name . "Matrix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -955,19 +956,20 @@ effects of different types of color-blindness.")
 (define-public r-digest
   (package
     (name "r-digest")
-    (version "0.6.31")
+    (version "0.6.33")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "digest" version))
        (sha256
-        (base32 "1f9isi4i2502f88c2sh4l461hgyary2aa02zd47pb9mc1r4lya2s"))))
+        (base32 "06bq696wpmn8ivbrpxw0qlcf835kc515m8jfv9zbwf8ndf42qw5y"))))
     (build-system r-build-system)
     ;; Vignettes require r-knitr, which requires r-digest, so we have to
     ;; disable them and the tests.
     (arguments
      `(#:tests? #f
        #:configure-flags (list "--no-build-vignettes")))
+    (native-inputs (list r-simplermarkdown))
     (home-page "https://dirk.eddelbuettel.com/code/digest.html")
     (synopsis "Create cryptographic hash digests of R objects")
     (description
@@ -1717,13 +1719,13 @@ R packages that praise their users.")
 (define-public r-testthat
   (package
     (name "r-testthat")
-    (version "3.1.8")
+    (version "3.1.10")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "testthat" version))
               (sha256
                (base32
-                "09y8gdzssb41m8j2ph12g6nlwxm02075aiyc5bb6lsqgvnpzi4rl"))))
+                "1xh80rxv0whz618kpwzlzg0jg2vhm4073nyx03hd4xpg0ifhhd9i"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-brio
@@ -1862,14 +1864,14 @@ database.")
 (define-public r-dbplyr
   (package
     (name "r-dbplyr")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dbplyr" version))
        (sha256
         (base32
-         "1b3zf2ai4kp96wd6i4jg9b3n37bwbw7lfvxvs1i1kcn6brch1p0d"))))
+         "1d3m7bhd8n5l0x1phfwzgrw2kwfyahb9yd61bbcnryd6m8c8kr3w"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-blob
@@ -1945,14 +1947,14 @@ side.")
 (define-public r-locfit
   (package
     (name "r-locfit")
-    (version "1.5-9.7")
+    (version "1.5-9.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "locfit" version))
        (sha256
         (base32
-         "1zvsa7hvnp0pvjyy0nnrg8bdv8gv4l23jb66wkc0kipvi78grra8"))))
+         "1qqxw69p42l4szr2fl73bdydpcbxn68iyxyyjy7qy3p56bxrn2hd"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice))
@@ -2026,6 +2028,74 @@ and fast file reading.")
      "This package provides tools to export R data as LaTeX and HTML tables.")
     (license license:gpl2+)))
 
+(define-public python-vega-datasets
+  (package
+    (name "python-vega-datasets")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "vega_datasets" version))
+       (sha256
+        (base32 "1h1zv607mars2j73v8fdwihjh479blqxyw29nhmc73lf40s9iglx"))
+       (modules '((guix build utils)))
+       (patches
+        (search-patches "python-vega-datasets-remove-la-riots-code.patch"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'remove-la-riots-dataset
+                 ;; Remove dataset with unclear license.
+                 (lambda _
+                   (delete-file "vega_datasets/_data/la-riots.csv"))))))
+    (native-inputs (list python-pytest))
+    (propagated-inputs (list python-pandas))
+    (home-page "https://github.com/altair-viz/vega_datasets")
+    (synopsis "Example datasets used by Vega-related projects")
+    (description "This package provides a collection of datasets used in Vega
+and Vega-Lite examples.")
+    (license license:expat)))
+
+(define-public python-altair
+  (package
+    (name "python-altair")
+    (version "5.0.1")
+    (source (origin
+              (method git-fetch)        ; no tests in PyPI
+              (uri (git-reference
+                    (url "https://github.com/altair-viz/altair")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1r74v5n51br9pjhxdzrr62cdgnwkapci93aifnl8dqmfpizfpd7d"))))
+    (build-system pyproject-build-system)
+    (arguments
+     ;; First two open an external connection.
+     ;; Last introduces a circular dependency on altair-viewer.
+     (list #:test-flags #~(list "-k" (string-append
+                                      "not test_from_and_to_json_roundtrip"
+                                      " and not test_render_examples_to_chart"
+                                      " and not test_save_html"))))
+    (propagated-inputs (list python-jinja2
+                             python-jsonschema
+                             python-numpy
+                             python-pandas
+                             python-toolz
+                             python-typing-extensions))
+    (native-inputs (list python-black
+                         python-hatchling
+                         python-ipython
+                         python-m2r
+                         python-pytest
+                         python-vega-datasets))
+    (home-page "https://altair-viz.github.io/")
+    (synopsis "Declarative statistical visualization library for Python")
+    (description
+     "Vega-Altair is a declarative statistical visualization library for Python.")
+    (license license:expat)))
+
 (define-public python-hdmedians
   (package
     (name "python-hdmedians")
@@ -2056,6 +2126,111 @@ point (up to 50% contamination) and have a number of nice applications in
 machine learning, computer vision, and high-dimensional statistics.")
     (license license:asl2.0)))
 
+(define-public python-arviz
+  (package
+    (name "python-arviz")
+    (version "0.15.1")
+    (source (origin
+              (method git-fetch)        ; PyPI misses some test files
+              (uri (git-reference
+                    (url "https://github.com/arviz-devs/arviz")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0nqr4v927r9kc50z7rwlk2m8nw3dnnmmwmwcfijzd93gbg53wc4f"))))
+    (build-system pyproject-build-system)
+    (arguments
+     ;; FIXME: matplotlib tests fail because of the "--save" test flag.
+     (list #:test-flags #~'("--ignore"
+                            "arviz/tests/base_tests/test_plots_matplotlib.py")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'remove-radon
+                 (lambda _
+                   (delete-file
+                    ;; This dataset is loaded remotely, it's not supposed to
+                    ;; be copied locally.
+                    "arviz/data/example_data/code/radon/radon.json")))
+               (add-before 'check 'write-permission
+                 (lambda _
+                   ;; 3 tests require write permission.
+                   (setenv "HOME" "/tmp"))))))
+    (native-inputs (list python-cloudpickle python-pytest))
+    (propagated-inputs (list python-h5netcdf
+                             python-matplotlib
+                             python-numpy
+                             python-packaging
+                             python-pandas
+                             python-scipy
+                             python-typing-extensions
+                             python-xarray
+                             python-xarray-einstats))
+    (home-page "https://github.com/arviz-devs/arviz")
+    (synopsis "Exploratory analysis of Bayesian models")
+    (description
+     "ArviZ is a Python package for exploratory analysis of Bayesian models.
+It includes functions for posterior analysis, data storage, model checking,
+comparison and diagnostics.")
+    (license license:asl2.0)))
+
+(define-public python-pymc
+  (package
+    (name "python-pymc")
+    (version "5.5.0")
+    (source (origin
+              (method git-fetch)        ; no tests in PyPI
+              (uri (git-reference
+                    (url "https://github.com/pymc-devs/pymc")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "077xigv3lfcn9fqc14rsnam4v95fmqk2wpzfrgj08vg8m7f69wdj"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:tests? #f ; tests are too computationally intensive
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'versioneer
+                          (lambda _
+                            (with-output-to-file "setup.cfg"
+                (lambda ()
+                  (display "\
+[versioneer]
+VCS = git
+style = pep440
+versionfile_source = pymc/_version.py
+versionfile_build = pymc/_version.py
+tag_prefix =
+parentdir_prefix = pymc-
+")))
+              (invoke "versioneer" "install")
+              (substitute* "setup.py"
+                (("versioneer.get_version\\(\\)")
+                 (string-append "\"" #$version "\"")))))
+                        ;; To create the compiledir for tests.
+                        (add-before 'check 'write-permissions
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (when tests?
+                              (setenv "HOME" "/tmp")))))))
+    (native-inputs (list python-pytest-cov python-versioneer))
+    (propagated-inputs (list python-arviz
+                             python-cachetools
+                             python-cloudpickle
+                             python-fastprogress
+                             python-numpy
+                             python-pandas
+                             python-pytensor
+                             python-scipy
+                             python-typing-extensions))
+    (home-page "https://github.com/pymc-devs/pymc")
+    (synopsis "Library for probabilistic programming in Python")
+    (description
+     "PyMC (formerly PyMC3) is a Python package for Bayesian statistical
+modeling focusing on advanced Markov chain Monte Carlo (MCMC) and variational
+inference (VI) algorithms.")
+    (license license:asl2.0)))
+
 (define-public python-patsy
   (package
     (name "python-patsy")
@@ -2090,41 +2265,49 @@ building design matrices.")
 (define-public python-statsmodels
   (package
     (name "python-statsmodels")
-    (version "0.13.1")
+    (version "0.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "statsmodels" version))
        (sha256
-        (base32 "0sbsyxgpzhys5padhkhrj71z4i1q41sm938pz0x8ff6jjvcchvh0"))
+        (base32 "1927ysv7m46m1x3wz05i0s3r5x0nasmidf2yy54djrp9i7bcfxb8"))
        (modules '((guix build utils)))
        (snippet
-        '(begin
-           (for-each delete-file (find-files "." "\\.c$"))))))
-    (build-system python-build-system)
+        '(for-each delete-file (find-files "." "\\.c$")))))
+    (build-system pyproject-build-system)
     (arguments
-     `(;; The test suite is very large and rather brittle.  Tests often fail
-       ;; because of minor changes in dependencies that upstream hasn't fixed
-       ;; in a new release.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-matplotlib-backend-to-agg
-          (lambda _
-            ;; Set the matplotlib backend to Agg to avoid problems using the
-            ;; GTK backend without a display.
-            (substitute* (append (find-files "statsmodels/graphics/tests" "\\.py")
-                                 '("statsmodels/tsa/vector_ar/tests/test_var.py"
-                                   "statsmodels/duration/tests/test_survfunc.py"))
-              (("import matplotlib\\.pyplot as plt" line)
-               (string-append "import matplotlib;matplotlib.use('Agg');"
-                              line)))
-            #t)))))
+     (list
+      ;; The test suite is very large and rather brittle.  Tests often fail
+      ;; because of minor changes in dependencies that upstream hasn't fixed
+      ;; in a new release.
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-matplotlib-backend-to-agg
+            (lambda _
+              ;; Set the matplotlib backend to Agg to avoid problems using the
+              ;; GTK backend without a display.
+              (substitute* (append (find-files "statsmodels/graphics/tests" "\\.py")
+                                   '("statsmodels/tsa/vector_ar/tests/test_var.py"
+                                     "statsmodels/duration/tests/test_survfunc.py"))
+                (("import matplotlib\\.pyplot as plt" line)
+                 (string-append "import matplotlib;matplotlib.use('Agg');"
+                                line))))))))
     (propagated-inputs
-     (list python-numpy python-scipy python-pandas python-patsy
-           python-matplotlib))
+     (list python-numpy python-packaging python-pandas python-patsy
+           python-scipy))
     (native-inputs
-     (list python-cython python-nose python-sphinx))
+     (list python-colorama
+           python-cython
+           python-flake8
+           python-isort
+           python-joblib
+           python-matplotlib
+           python-pytest
+           python-pytest-randomly
+           python-pytest-xdist
+           python-setuptools-scm))
     (home-page "https://statsmodels.sourceforge.net/")
     (synopsis "Statistical modeling and econometrics in Python")
     (description
@@ -2178,14 +2361,14 @@ and environmental data in the framework of Euclidean exploratory methods.")
 (define-public r-xml2
   (package
     (name "r-xml2")
-    (version "1.3.4")
+    (version "1.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xml2" version))
        (sha256
         (base32
-         "0c1h7fvkrcqcgnky6hhp9ysaraxhqdqjvsdlq0450fk4ishv22rl"))))
+         "10p214gzzcy2zzcq2xkh1vz2wrjsys5gplvk9c1crq3nmfki0six"))))
     (build-system r-build-system)
     (inputs
      (list libxml2 zlib))
@@ -2576,13 +2759,13 @@ pure C implementation of the Git core methods.")
 (define-public r-rstudioapi
   (package
     (name "r-rstudioapi")
-    (version "0.14")
+    (version "0.15.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rstudioapi" version))
               (sha256
                (base32
-                "1i5g9l2739mlaglzg98iifycx98jlzxj5933qfb8lwmdn63hk7a6"))))
+                "1kvc870gx02cpb800zjvdrhfhyfpzgkydgw2g7kxdlrpr8fwhnwk"))))
     (build-system r-build-system)
     (native-inputs
      (list r-knitr))
@@ -2774,13 +2957,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.12.4.0.0")
+    (version "0.12.4.1.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "1jw2fhbva0qrgd4cwddjgwl8f8fzkxyp6vysl1qabh5bcp259nzn"))))
+                "1mf5dpsbjhfwalf4k3yhzgh0j1f40v1g7a3p6crm6xfp0k85jhq3"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2866,13 +3049,13 @@ certain criterion, e.g., it contains a certain regular file.")
 (define-public r-rmarkdown
   (package
     (name "r-rmarkdown")
-    (version "2.22")
+    (version "2.23")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "rmarkdown" version))
         (sha256
-          (base32 "1f47ccph09ilqlr0bnyrxkadja4ddp4klvb933aws3rya0cmaqy6"))))
+          (base32 "09f8gfa4cfjwqb44xdr832blbgknn4ciyisvcrpyz5x51iphi3b6"))))
     (properties
      `((upstream-name . "rmarkdown")
        (updater-extra-propagated-inputs . ("pandoc"))))
@@ -4174,13 +4357,13 @@ vignettes.")
 (define-public r-mvtnorm
   (package
     (name "r-mvtnorm")
-    (version "1.2-0")
+    (version "1.2-2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mvtnorm" version))
               (sha256
                (base32
-                "1q1bmsvd10iz003xlsd40dj5bhmy2069p88ydf9f4gj56mysnlpm"))))
+                "047y4sv1ydvszmzrssywhqfhx2mcrlbkypczgbh380wk7yrncmbg"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran))
@@ -4384,13 +4567,13 @@ features present in other programming languages.")
 (define-public r-plotly
   (package
     (name "r-plotly")
-    (version "4.10.1")
+    (version "4.10.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotly" version))
               (sha256
                (base32
-                "0yin1kid3a69fcwrrajwzqbhx4xc81x8p8m0yfh1fkm2rfhj22dc"))
+                "0y2jiyfx895f15wcpizybssic4draw1vgvqz2b7f82z73319m01b"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "inst/htmlwidgets/lib/"
@@ -4434,8 +4617,8 @@ features present in other programming languages.")
     (propagated-inputs
      (list r-base64enc
            r-crosstalk
-           r-digest
            r-data-table
+           r-digest
            r-dplyr
            r-ggplot2
            r-htmltools
@@ -5400,14 +5583,14 @@ data for species delimitation, nearest neighbor based noise detection.")
 (define-public r-deoptimr
   (package
     (name "r-deoptimr")
-    (version "1.0-13")
+    (version "1.0-14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DEoptimR" version))
        (sha256
         (base32
-         "1wpqg659vpcd6cgy4sa9qygf0s0w44n46yma8990awkgnbxjmfxa"))))
+         "0d2ij0ncwjp9kh5bv7nvha8p1g73y620pw62c1q5chvjpjvxshfp"))))
     (properties `((upstream-name . "DEoptimR")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/DEoptimR")
@@ -5423,14 +5606,14 @@ can be efficiently implemented directly in the R language.")
 (define-public r-robustbase
   (package
     (name "r-robustbase")
-    (version "0.95-1")
+    (version "0.99-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robustbase" version))
        (sha256
         (base32
-         "1sm37gqs35cvkacigsla8kzvpzjzsrgkabf58ymk9pzcndnx4b46"))))
+         "0xshwfv6vq47857xfhwnlxcl1511ghn6pyjylrg39i19xhp44za3"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran))
@@ -5468,14 +5651,14 @@ analysis} (PCA) by projection pursuit.")
 (define-public r-rrcov
   (package
     (name "r-rrcov")
-    (version "1.7-3")
+    (version "1.7-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rrcov" version))
        (sha256
         (base32
-         "0shcsfxgb37ggys9d4cyfjs1p2szj52lfkva746fqsx64cvkcfw5"))))
+         "0jkm2w38kbzicfx2542rb90r7kcrbm7hiaasajw1zq8gb7ffshb3"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-lattice r-mvtnorm r-pcapp r-robustbase))
@@ -5519,14 +5702,14 @@ generally.")
 (define-public r-robust
   (package
     (name "r-robust")
-    (version "0.7-1")
+    (version "0.7-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robust" version))
        (sha256
         (base32
-         "1pv5xvns3p8dpaadf6v0fqz099ml768ahgp271wpiclrcc6cgapg"))))
+         "1kryflq2p0c78pggnj5yghjivy4npxfkzcqhxh9jvrngkpxhsrb6"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-fit-models r-lattice r-mass r-robustbase r-rrcov))
@@ -5620,14 +5803,14 @@ VGLMs can be loosely thought of as multivariate generalised linear models.")
 (define-public r-pbapply
   (package
     (name "r-pbapply")
-    (version "1.7-0")
+    (version "1.7-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pbapply" version))
        (sha256
         (base32
-         "1h06nz312si2hsy2klrmy6w46q341bl3q5v61g133450w0qykf34"))))
+         "04xf1p7c0066cwnxfmzaikbc322bxnw022ziv8kkhzlc6268rvdf"))))
     (build-system r-build-system)
     (home-page "https://github.com/psolymos/pbapply")
     (synopsis "Adding progress bar to apply functions")
@@ -5790,14 +5973,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-33")
+    (version "1.1-34")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "0409nhvdkkh571gdi9w21z6szkgnmj4sssw3988idh5wgknsamnr"))))
+         "1bbaxkrd5m3d40y6jdyrdr4vsjyzkfixbqjwj6c8inmks98f2wp8"))))
     (build-system r-build-system)
     (propagated-inputs
      (list r-boot
@@ -5805,8 +5988,8 @@ algorithms.")
            r-mass
            r-matrix
            r-minqa
-           r-nloptr
            r-nlme
+           r-nloptr
            r-rcpp
            r-rcppeigen))
     (native-inputs
@@ -6837,14 +7020,14 @@ or eta squared effect size.")
 (define-public r-logspline
   (package
     (name "r-logspline")
-    (version "2.1.19")
+    (version "2.1.20")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "logspline" version))
         (sha256
           (base32
-            "1527cnnn5qdjp8gr4yls0jp0aachjz5s2v79vs79vrfyvxp9w89p"))))
+            "1nsrgz9sh9qg2fj0x7k48lqhpgzq1z78jfz89ckzp5xm4r8lpgcb"))))
     (properties `((upstream-name . "logspline")))
     (build-system r-build-system)
     (native-inputs (list gfortran))
@@ -6929,13 +7112,13 @@ designs, one-way designs, general ANOVA designs, and linear regression.")
 (define-public r-norm
   (package
     (name "r-norm")
-    (version "1.0-11.0")
+    (version "1.0-11.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "norm" version))
               (sha256
                (base32
-                "0bj0d518c5cld1h2ymm7sjhd6b3v2h3w8rcn9b5mki1fg20lx2nd"))))
+                "1g33g721c0f2b275b334ir6n0h81fh567vs9vrxk60y21z1ydzy2"))))
     (build-system r-build-system)
     (native-inputs
      (list gfortran))
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index bd9fbab386..28b5989d6a 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -76,7 +76,7 @@
 (define-public nextcloud-client
   (package
     (name "nextcloud-client")
-    (version "3.2.0")
+    (version "3.8.2")
     (source
      (origin
        (method git-fetch)
@@ -87,14 +87,14 @@
        (file-name
         (git-file-name name version))
        (sha256
-        (base32 "137h65sn4ixspbblvn0r2ngg8234yk582bppkkr87c3krfp21gx4"))
+        (base32 "0gmj217jmmx13wwb096prwzn3njv616njk1id97g6lrbn969fcnn"))
        (modules '((guix build utils)
                   (ice-9 ftw)
                   (srfi srfi-1)))
        (snippet
         '(begin
            ;; Not available in Guix.
-           (let* ((keep '("QProgressIndicator" "qtokenizer")))
+           (let* ((keep '("QProgressIndicator" "qtokenizer" "kirigami")))
              (with-directory-excursion "src/3rdparty"
                (for-each delete-file-recursively
                          (lset-difference string=?
@@ -103,11 +103,11 @@
            (with-directory-excursion "src/gui"
              (substitute* "CMakeLists.txt"
                ;; Remove references of deleted 3rdparties.
-               (("[ \t]*\\.\\./3rdparty/qtlockedfile/?.*\\.cpp")
+               (("[ \t]*\\.\\./3rdparty/qtlockedfile/?.*\\.(cpp|h)")
                 "")
-               (("[ \t]*\\.\\./3rdparty/qtsingleapplication/?.*\\.cpp")
+               (("[ \t]*\\.\\./3rdparty/qtsingleapplication/?.*\\.(cpp|h)")
                 "")
-               (("[ \t]*\\.\\./3rdparty/kmessagewidget/?.*\\.cpp")
+               (("[ \t]*\\.\\./3rdparty/kmessagewidget/?.*\\.(cpp|h)")
                 "")
                (("[ \t]*list\\(APPEND 3rdparty_SRC \\.\\./3rdparty/?.*\\)")
                 "")
@@ -121,8 +121,8 @@
                 "@kwidgetsaddons@")
                ;; Expand libraries, that used to be statically linked, but
                ;; no longer are post-vendoring.
-               (("\\$\\{synclib_NAME\\}")
-                (string-append "${synclib_NAME} "
+               (("KF5::Archive")
+                (string-append "KF5::Archive "
                                "QtSolutions_LockedFile "
                                "QtSolutions_SingleApplication "
                                "KF5WidgetsAddons")))
@@ -137,7 +137,7 @@
     (arguments
      `(#:configure-flags
        (list
-        "-DUNIT_TESTING=ON")
+        "-DUNIT_TESTING=ON" "-DBUILD_UPDATER=OFF")
        #:imported-modules
        ((guix build glib-or-gtk-build-system)
         ,@%qt-build-system-modules)
@@ -151,7 +151,7 @@
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Patch install directory for dbus service files.
              (substitute* "shell_integration/libcloudproviders/CMakeLists.txt"
-               (("PKGCONFIG_GETVAR\\(.+ _install_dir\\)")
+               (("pkg_get_variable\\(_install_dir dbus-1 .*\\)")
                 (string-append "set(_install_dir \"${CMAKE_INSTALL_PREFIX}"
                                "/share/dbus-1/services\")")))
              (substitute* "shell_integration/dolphin/CMakeLists.txt"
@@ -161,6 +161,11 @@
                (("@kwidgetsaddons@")
                 (search-input-directory inputs
                                         "/include/KF5/KWidgetsAddons/")))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "QT_QPA_PLATFORM" "offscreen")
+               (invoke "ctest" "-E" "SyncXAttrTest"))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests write to $HOME.
@@ -176,6 +181,7 @@
        ("doxygen" ,doxygen)
        ("extra-cmake-modules" ,extra-cmake-modules)
        ("glib:bin" ,glib "bin")
+       ("librsvg" ,(librsvg-for-system))
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
@@ -183,8 +189,10 @@
        ("ruby" ,ruby)))
     (inputs
      (list appstream
+           dbus
            desktop-file-utils
            glib
+           karchive
            kconfig
            kcoreaddons
            kio
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index a3fa39e5da..21649f78af 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
-;;; Copyright @ 2020 luhux <luhux@outlook.com>
+;;; Copyright © 2020 luhux <luhux@outlook.com>
 ;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2021, 2022 Raphaël Mélotte <raphael.melotte@mind.be>
 ;;; Copyright © 2021 ikasero <ahmed@ikasero.com>
@@ -244,7 +244,7 @@ keybindings have different functions.")
 (define-public asciinema
   (package
     (name "asciinema")
-    (version "2.2.0")
+    (version "2.3.0")
     (source
      (origin
        (method git-fetch)
@@ -253,7 +253,7 @@ keybindings have different functions.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0pcrghfi9p1p40d0339lcmhcv24hm1vxqr4rsdln34v385vqv14a"))))
+        (base32 "0mqn12h51nqdmn1ya7hw1l2z2893937dqq4b1zh32y6bazd807fl"))))
     (build-system pyproject-build-system)
     (arguments
      (list #:phases
@@ -1150,13 +1150,13 @@ than a terminal.")
 (define-public python-curtsies
   (package
     (name "python-curtsies")
-    (version "0.4.0")
+    (version "0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "curtsies" version))
        (sha256
-        (base32 "1zj284kacv0d10ab3amkkx37hcciylkqympsksi9bwzy6g7fyafb"))))
+        (base32 "1c122vgfsvksxkd41g2vij6hjsz97ikg59snclq4af2mkhs0zlb2"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1441,7 +1441,7 @@ basic input/output.")
 (define-public alacritty
   (package
     (name "alacritty")
-    (version "0.12.1")
+    (version "0.12.2")
     (source
      (origin
        ;; XXX: The crate at "crates.io" has limited contents.  In particular,
@@ -1452,7 +1452,7 @@ basic input/output.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fz5nbx58058lzfhwgvlnrmhpc4bg8sv8fp48gdgp1l82ajbl3lg"))))
+        (base32 "17a7v32gxsy79cj1ap71ckrypxv7i9jv4lnibg0ymcpwk9zpwxjz"))))
     (build-system cargo-build-system)
     (arguments
      `(#:install-source? #f     ; virtual manifest
@@ -1460,7 +1460,7 @@ basic input/output.")
        #:cargo-inputs
        (("rust-alacritty-config" ,rust-alacritty-config-0.1)
         ("rust-alacritty-config-derive" ,rust-alacritty-config-derive-0.2)
-        ("rust-alacritty-terminal" ,rust-alacritty-terminal-0.18)
+        ("rust-alacritty-terminal" ,rust-alacritty-terminal-0.19)
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-clap" ,rust-clap-3)
         ("rust-cocoa" ,rust-cocoa-0.24)
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 1781e75af2..f70a4302fd 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -433,7 +433,7 @@ compiled, requires few libraries, and starts up quickly.")
     (license license:gpl2+)))
 
 (define-public l3afpad
-  (let ((commit "5235c9e13bbf0d31a902c6776918c2d7cdbb61ff")
+  (let ((commit "16f22222116b78b7f6a6fd83289937cdaabed624")
         (revision "0"))
     (package
       (name "l3afpad")
@@ -446,8 +446,20 @@ compiled, requires few libraries, and starts up quickly.")
                        (commit commit)))
                 (sha256
                  (base32
-                  "1alyghm2wpakzdfag0g4g8gb1h9l4wdg7mnhq8bk0iq5ryqia16a"))))
+                  "0q55351lvvlw9bi35l49mxa43g4fv110pwprzkk9m5li77vb0bcp"))))
       (build-system glib-or-gtk-build-system)
+      (arguments
+        (list
+         #:phases
+         #~(modify-phases %standard-phases
+            (add-after 'install 'install-documentation
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let* ((out (assoc-ref outputs "out"))
+                       (doc (string-append out "/share/doc/" #$name "-"
+                                           #$(package-version this-package)))
+                       (man (string-append out "/share/man/man1")))
+                  (install-file "l3afpad.1" man)
+                  (install-file "README" doc)))))))
       (native-inputs
        (list intltool autoconf automake pkg-config))
       (inputs
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 140932a809..d94b7c27f5 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -1219,7 +1219,20 @@ ciphers such as ChaCha20, Curve25519, NTRU, and Blake2b.")
     (arguments
      '(#:test-target "run_minimal_tests"
        #:configure-flags
-       '("-DBUILD_SHARED_LIBS=ON")))
+       '("-DBUILD_SHARED_LIBS=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? test-target parallel-tests? #:allow-other-keys)
+             (when tests?
+               ;; SSLTest.HostMatching fails due to an expired certificate.
+               ;; Fake the time to be that of the release.
+               (invoke "faketime" "2022-05-23"
+                       "make" test-target
+                       "-j" (if parallel-tests?
+                                (number->string (parallel-job-count))
+                                "1"))))))))
+    (native-inputs (list libfaketime))
     (synopsis "General purpose cryptographic library")
     (description "AWS libcrypto (aws-lc) contains portable C implementations
 of algorithms needed for TLS and common applications, and includes optimized
diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm
index aee6c22e2d..46b7fd2cd6 100644
--- a/gnu/packages/toolkits.scm
+++ b/gnu/packages/toolkits.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,6 +55,18 @@
                   (guix build utils)
                   (ice-9 ftw)
                   (srfi srfi-26))
+      ;; The build phase does not use make but we will use make-flags in a
+      ;; similar fashion to make inheritance for older imgui versions easier.
+      #:make-flags
+      ;; This first option is necessary at least for OpenBoardView, otherwise
+      ;; it would fail with the "Too many vertices in ImDrawList using 16-bit
+      ;; indices".
+      #~(list "-DImDrawIdx=unsigned int"
+              "-I" (string-append (getcwd) "/source")
+              "-I" (search-input-directory %build-inputs "include/freetype2")
+              "-g" "-O2" "-fPIC" "-shared"
+              "-lGL" "-lSDL2" "-lglfw"
+              "-o" "libimgui.so")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'adjust-includes
@@ -64,32 +76,24 @@
                  "#include <SDL2/SDL"))))
           (delete 'configure)
           (replace 'build
-            (lambda* (#:key inputs #:allow-other-keys)
+            (lambda* (#:key make-flags #:allow-other-keys)
               ;; Build main library.
               (apply invoke #$(cc-for-target)
-                     ;; This option is necessary at least for OpenBoardView,
-                     ;; otherwise it would fail with the "Too many vertices in
-                     ;; ImDrawList using 16-bit indices".
-                     "-DImDrawIdx=unsigned int"
-                     "-I" (getcwd)
-                     "-I" (search-input-directory inputs "include/freetype2")
-                     "-g" "-O2" "-fPIC" "-shared"
-                     "-lGL" "-lSDL2" "-lglfw"
-                     "-o" "libimgui.so"
-                     "imgui.cpp"
-                     "imgui_draw.cpp"
-                     "imgui_tables.cpp"
-                     "imgui_widgets.cpp"
-                     ;; Include the supported backends.
-                     "backends/imgui_impl_glfw.cpp"
-                     (if (file-exists? "backends/imgui_impl_sdl2.cpp")
-                         "backends/imgui_impl_sdl2.cpp"
-                         "backends/imgui_impl_sdl.cpp")
-                     "backends/imgui_impl_opengl2.cpp"
-                     "backends/imgui_impl_opengl3.cpp"
-                     ;; Include wrappers for C++ standard library (STL) and
-                     ;; fontconfig.
-                     (find-files "misc" "\\.cpp$"))))
+                     (append make-flags
+                             `("imgui.cpp"
+                               "imgui_draw.cpp"
+                               "imgui_tables.cpp"
+                               "imgui_widgets.cpp"
+                               ;; Include the supported backends.
+                               "backends/imgui_impl_glfw.cpp"
+                               ,(if (file-exists? "backends/imgui_impl_sdl2.cpp")
+                                    "backends/imgui_impl_sdl2.cpp"
+                                    "backends/imgui_impl_sdl.cpp")
+                               "backends/imgui_impl_opengl2.cpp"
+                               "backends/imgui_impl_opengl3.cpp"
+                               ;; Include wrappers for C++ standard library (STL) and
+                               ;; fontconfig.
+                               ,@(find-files "misc" "\\.cpp$"))))))
           (replace 'install
             (lambda _
               (let* ((header? (cut string-suffix? ".h" <>))
@@ -164,4 +168,10 @@ standard operating system features.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n"))))))
+                "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments imgui)
+       ((#:make-flags flags ''())
+        ;; Remove the "-DImDrawIdx=unsigned int" make-flag as this breaks
+        ;; mangohud, the only user of this version.
+        #~(delete "-DImDrawIdx=unsigned int" #$flags))))))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 9e26753857..8ae2118188 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -201,7 +201,7 @@ traffic from the application you're using.")
 (define-public privoxy
   (package
     (name "privoxy")
-    (version "3.0.33")
+    (version "3.0.34")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/ijbswa/Sources/"
@@ -209,7 +209,7 @@ traffic from the application you're using.")
                                  version "-stable-src.tar.gz"))
              (sha256
               (base32
-               "1bhzi2ddv3g1z9h7lhxy7p0wibqg4m5nh46ikldmcqdc1pkh9c84"))))
+               "0b2x7hm34fbqaxb46afpx6bnc3x76d753y2p8rmn2kkgcnhvrk76"))))
     (build-system gnu-build-system)
     (arguments
      '(;; The default 'sysconfdir' is $out/etc; change that to
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 3e17d47a7a..f7e35a062c 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2023 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
 
 (define-module (gnu packages tree-sitter)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages graphviz)
@@ -29,12 +31,68 @@
   #:use-module (gnu packages node)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system tree-sitter)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix utils))
 
+(define-public python-tree-sitter
+  (package
+    (name "python-tree-sitter")
+    (version "0.20.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tree-sitter/py-tree-sitter")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rc8zqiry4n52xlf7pwx4s56ka9vwjzwgn7blwbkiscqdwvsai92"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-tree-sitter-lib-path
+            (lambda _
+              (let ((tree-sitter #$(this-package-input "tree-sitter")))
+                (substitute* "setup.py"
+                  (((string-append
+                     "( *)\\[\"tree_sitter\\/core\\/lib\\/src\\/lib\\.c\", "
+                     "\"tree_sitter\\/binding\\.c\"\\],") all tabs)
+                   (string-append
+                    tabs "[\"tree_sitter/binding.c\"],\n"
+                    tabs "library_dirs=[\"" tree-sitter "/lib\"],\n"
+                    tabs "libraries=[\"tree-sitter\"],"))
+                  (("include_dirs=.*")
+                   (string-append
+                    "include_dirs=[\"" tree-sitter "/include\"],\n"))))))
+          (add-before 'check 'set-test-lib-paths
+            (lambda _
+              (let ((py #$(this-package-native-input "tree-sitter-python"))
+                    (js #$(this-package-native-input "tree-sitter-javascript")))
+                (substitute* "tests/test_tree_sitter.py"
+                  (("Language\\.build_library")
+                   "_ =")
+                  (("LIB_PATH(, \"python\")" all name)
+                   (string-append
+                    "\"" py "/lib/tree-sitter/libtree-sitter-python.so\"" name))
+                  (("LIB_PATH(, \"javascript\")" all name)
+                   (string-append
+                    "\"" js "/lib/tree-sitter/libtree-sitter-javascript.so\""
+                    name)))))))))
+    (inputs (list tree-sitter))
+    (native-inputs
+     (list tree-sitter-python tree-sitter-javascript))
+    (home-page "https://github.com/tree-sitter/py-tree-sitter")
+    (synopsis "Python bindings to the Tree-sitter parsing library")
+    (description "This package provides Python bindings to the
+Tree-sitter parsing library.")
+    (license license:expat)))
+
 (define-public tree-sitter
   (package
     (name "tree-sitter")
@@ -340,6 +398,13 @@ will be used in description and synopsis."
    #:article "an"
    #:repository-url "https://github.com/elm-tooling/tree-sitter-elm"))
 
+(define-public tree-sitter-gomod
+  (tree-sitter-grammar
+   "gomod" "Go .mod"
+   "1hblbi2bs4hlil703myqhvvq2y1x41rc3w903hg2bhbazh7x8yyf"
+   "1.0.0"
+   #:repository-url "https://github.com/camdencheek/tree-sitter-go-mod.git"))
+
 (define-public tree-sitter-go
   ;; There are a lot of additions, the last tag was placed more than 1 year ago
   (let ((commit "64457ea6b73ef5422ed1687178d4545c3e91334a")
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 40b9e124d2..ecdb1d1781 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -227,15 +227,14 @@ Python 3.3 and later, rather than on Python 2.")
 (define-public git
   (package
    (name "git")
-   (version "2.40.1")
+   (version "2.41.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1li1xwgiwccy88bkshsah2kzl1006jg29jp7n32gvjggiswvi4s8"))
-            (patches (search-patches "git-header-cmd.patch"))))
+              "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -255,7 +254,7 @@ Python 3.3 and later, rather than on Python 2.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "04yy5za8963q6xzrirflvxbi1216jzqj8ssvgd9nkld3ifa9q1gy"))))
+            "0xsqakgy0s60zpa13ilj6zj420kdh8pf4v3nrp1nziwj8ja4qymw"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc)
       ("docbook2x" ,docbook2x)
@@ -2617,13 +2616,13 @@ email header.")
 (define-public b4
   (package
     (name "b4")
-    (version "0.12.0")
+    (version "0.12.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "b4" version))
        (sha256
-        (base32 "0qwi2f729mflrv8dazb3xbs23hzprbchjrhjcc8fjvpn7yvnrd7f"))))
+        (base32 "0qpa0ahw1d86mdgs09ykq5pd0lm8083ds6j0knalw757yh31akmn"))))
     (build-system python-build-system)
     (arguments
      (list #:tests? #f                  ;no tests
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 55eab972b9..c11ae52ef4 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -65,6 +65,7 @@
 ;;; Copyright © 2022 Andy Tai <atai@atai.org>
 ;;; Copyright © 2023 Ott Joon <oj@vern.cc>
 ;;; Copyright © 2023 Dominik Delgado Steuter <dds@disroot.org>
+;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -179,6 +180,7 @@
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -2468,6 +2470,52 @@ To load this plugin, specify the following option when starting mpv:
 to download videos from Austria's national television broadcaster.")
       (license license:gpl2+))))
 
+(define-public yle-dl
+  (package
+    (name "yle-dl")
+    (version "20230611")
+    (source (origin
+              ;; PyPI release doesn't include tests.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/aajanki/yle-dl")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "04smlq6cswfp08sjif0cxnall0xbxl3bgly849nm5kg1m33ybmqk"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'wrap 'wrap-path
+            (lambda _
+              (wrap-program (string-append #$output "/bin/yle-dl")
+                `("PATH" = (,(string-append #$(this-package-input "ffmpeg")
+                                            "/bin")
+                            ,(string-append #$(this-package-input "wget")
+                                            "/bin"))))))
+          ;; Integration tests require internet access.
+          (add-before 'check 'remove-integration-tests
+            (lambda _
+              (delete-file-recursively "tests/integration"))))))
+    (native-inputs
+     (list python-flit-core python-pytest python-pytest-runner))
+    (inputs (list bash-minimal ffmpeg-5 wget))
+    (propagated-inputs
+     (list python-attrs
+           python-configargparse
+           python-lxml
+           python-requests
+           python-xattr))
+    (home-page "https://aajanki.github.io/yle-dl/")
+    (synopsis "Download videos from Yle servers")
+    (description
+     "Yle-dl is a command line program for downloading media files from the
+video streaming services of the Finnish national broadcasting company Yle.")
+    (license license:gpl3+)))
+
 (define-public youtube-dl
   (package
     (name "youtube-dl")
@@ -2554,7 +2602,7 @@ YouTube.com and many more sites.")
 (define-public yt-dlp
   (package/inherit youtube-dl
     (name "yt-dlp")
-    (version "2023.03.04")
+    (version "2023.07.06")
     (source
      (origin
        (method git-fetch)
@@ -2563,7 +2611,7 @@ YouTube.com and many more sites.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zb4blj7qrmwkryyqrkxl909f59hvbs8dwiwl7sw1fs2kdzb1rw4"))))
+        (base32 "14g3qc3j4px5jiv292yj5hh8vxlnnd5bzvsq7h37jvhmrn5r4bsw"))))
     (arguments
      (substitute-keyword-arguments (package-arguments youtube-dl)
        ((#:tests? _) (not (%current-target-system)))
@@ -2612,8 +2660,7 @@ YouTube.com and many more sites.")
     (native-inputs
      (append
        ;; To generate the manpage.
-       (if (member (%current-system)
-                   (package-transitive-supported-systems pandoc))
+       (if (supported-package? pandoc)
          (list pandoc)
          '())
        (list python-pytest zip)))
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index f928087e8a..d58b022123 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -79,7 +79,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "9.0.1384")
+    (version "9.0.1672")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -88,7 +88,7 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "07a59a0ibklwmks5f26f9a7c2klhppqbj0kdijcs4ayarh5q2qwf"))))
+               "1cl4a7rzks0ll0b8y0ffrbin622k0qww3l0nz9kb0mz2favw0b9q"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -133,6 +133,9 @@
              (substitute* "src/testdir/test_messages.vim"
                ((".*Test_echo_verbose_system.*" line)
                 (string-append line "return\n")))
+             (substitute* "src/testdir/test_normal.vim"
+               ((".*Test_mouse_shape_after_cancelling_gr.*" line)
+                (string-append line "return\n")))
              (substitute* "src/testdir/test_terminal.vim"
                ((".*Test_open_term_from_cmd.*" line)
                 (string-append line "return\n"))
@@ -221,13 +224,6 @@ with the editor vim.")))
              "--disable-selinux"
              "--enable-gui")
        ,@(substitute-keyword-arguments (package-arguments vim)
-           ;; This flag fixes the following error:
-           ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
-           ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
-           ((#:make-flags flags)
-            `(append
-              (list "LDFLAGS=-lexpat")
-              ,flags))
            ((#:phases phases)
             `(modify-phases ,phases
                (add-before 'check 'start-xserver
@@ -693,7 +689,7 @@ are detected, the user is notified.")))
 (define-public neovim
   (package
     (name "neovim")
-    (version "0.9.0")
+    (version "0.9.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -702,7 +698,7 @@ are detected, the user is notified.")))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xsvhm191cy5ivcw0c8dnpzbpcvvn5hsnkzkipr2aabgrsgqj628"))))
+                "18dsl9fjcqvcqffny6jmcxwx5a7d13aykn310hbgghny8l11rw3c"))))
     (build-system cmake-build-system)
     (arguments
      (list #:modules
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index c88fd31146..9b1bdeb5e4 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -596,55 +596,54 @@ server and embedded PowerPC, and S390 guests.")
     (name "libx86emu")
     (version "3.5")
     (home-page "https://github.com/wfeldt/libx86emu")
-    (source
-     (origin
-       (method git-fetch)
-       (uri
-        (git-reference
-         (url home-page)
-         (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "11nj3y7maz9ch15b1c2b69gd8d7mpaha377zpdbvfsmg5w9zz93l"))
-       (modules
-        '((guix build utils)))
-       (snippet
-        `(begin
-           ;; Remove git2log program file.
-           (delete-file "git2log")
-           ;; Remove variables that depends on git2log.
-           (substitute* "Makefile"
-             (("GIT2LOG.*=.*$") "")
-             (("GITDEPS.*=.*$") "")
-             (("BRANCH.*=.*$") ""))))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "11nj3y7maz9ch15b1c2b69gd8d7mpaha377zpdbvfsmg5w9zz93l"))
+              (modules '((guix build utils)))
+              (snippet `(begin
+                          ;; Remove git2log program file.
+                          (delete-file "git2log")
+                          ;; Remove variables that depends on git2log.
+                          (substitute* "Makefile"
+                            (("GIT2LOG.*=.*$") "")
+                            (("GITDEPS.*=.*$") "")
+                            (("BRANCH.*=.*$") ""))))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (include (string-append out "/include"))
-                    (lib (string-append out "/lib")))
-               ;; Correct the values of version and install directories.
-               (substitute* "Makefile"
-                 (("VERSION.*=.*$")
-                  (string-append "VERSION := "
-                                 ,version "\n"))
-                 (("PREFIX.*=.*$")
-                  (string-append "PREFIX := " out "\n"))
-                 (("MAJOR_VERSION.*=.*$")
-                  (string-append "MAJOR_VERSION := "
-                                 ,(version-major version) "\n"))
-                 (("LIBDIR.*=.*$")
-                  (string-append "LIBDIR = " lib "\n"))
-                 (("/usr/include") include)))))
-         (delete 'configure))))         ; no configure script
-    (native-inputs
-     (list nasm perl))
+       ;; sys/io.h is not present from glibc on non-x86 systems.
+       #:tests? ,(and (target-x86?)
+                      (not (%current-target-system)))
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (include (string-append out "/include"))
+                             (lib (string-append out "/lib")))
+                        ;; Correct the values of version and install directories.
+                        (substitute* "Makefile"
+                          (("VERSION.*=.*$")
+                           (string-append "VERSION := "
+                                          ,version "\n"))
+                          (("PREFIX.*=.*$")
+                           (string-append "PREFIX := " out "\n"))
+                          (("MAJOR_VERSION.*=.*$")
+                           (string-append "MAJOR_VERSION := "
+                                          ,(version-major version) "\n"))
+                          (("LIBDIR.*=.*$")
+                           (string-append "LIBDIR = " lib "\n"))
+                          (("/usr/include")
+                           include)))))
+                  (delete 'configure)))) ;no configure script
+    (native-inputs (list nasm perl))
     (synopsis "Library for x86 emulation")
-    (description "Libx86emu is a small library to emulate x86 instructions.  The
+    (description
+     "Libx86emu is a small library to emulate x86 instructions.  The
 focus here is not a complete emulation but to cover enough for typical
 firmware blobs.  You can
 @enumerate
@@ -2436,7 +2435,7 @@ which is a hypervisor.")
 (define-public osinfo-db-tools
   (package
     (name "osinfo-db-tools")
-    (version "1.9.0")
+    (version "1.10.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-tools-"
@@ -2444,7 +2443,7 @@ which is a hypervisor.")
 
               (sha256
                (base32
-                "1h23a8nzdxjyvw44dwh903563n3b1z5skx8g0b1p1v5cif3iqpr5"))))
+                "0s6ah44wbay7kb3l1ydr0r4ip335zgf6s12ghjjnww0nni9xsb40"))))
     (build-system meson-build-system)
     (inputs
      (list libsoup-minimal-2 libxml2 libxslt json-glib libarchive))
@@ -2466,14 +2465,14 @@ administrators and developers in managing the database.")
 (define-public osinfo-db
   (package
     (name "osinfo-db")
-    (version "20220516")
+    (version "20230518")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0vfsdk3c6n6y04c5rf92m31zvl969kaniyx2fqywbp69mzc6j3yn"))))
+                "0vfch55xgz1p16sv84ahb59apg8j7n8p4kxv0rq7rw7jwk65pv6a"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a7031b46b2..866bf077fb 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -274,7 +274,7 @@ and the GTK+ toolkit.")
 (define-public lynx
   (package
     (name "lynx")
-    (version "2.9.0dev.9")
+    (version "2.9.0dev.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -282,7 +282,7 @@ and the GTK+ toolkit.")
                     "/lynx" version ".tar.bz2"))
               (sha256
                (base32
-                "06jhv8ibfw1xkf8d8zrnkc2aw4d462s77hlp6f6xa6k8awzxvmkg"))))
+                "1rg8dqafq8ray37s0w855mahq7ywfb4qa4h5q676sxq0klamnid6"))))
     (build-system gnu-build-system)
     (native-inputs (list pkg-config perl))
     (inputs (list ncurses
@@ -294,41 +294,40 @@ and the GTK+ toolkit.")
                   gzip
                   bzip2))
     (arguments
-     `(#:configure-flags
-       (let ((openssl (assoc-ref %build-inputs "openssl")))
-         `("--with-pkg-config"
-           "--with-screen=ncurses"
-           "--with-zlib"
-           "--with-bzlib"
-           ,(string-append "--with-ssl=" openssl)
-           ;; "--with-socks5"    ; XXX TODO
-           "--enable-widec"
-           "--enable-ascii-ctypes"
-           "--enable-local-docs"
-           "--enable-htmlized-cfg"
-           "--enable-gzip-help"
-           "--enable-nls"
-           "--enable-ipv6"))
-       #:tests? #f  ; no check target
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'set-makefile-shell
-           (lambda _ (substitute* "po/makefile.inn"
-                       (("/bin/sh") (which "sh")))
-                     #t))
-         (replace 'install
-           (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (apply invoke "make" "install-full" make-flags)
-             #t)))))
+     (list #:configure-flags
+           #~(let ((openssl #$(this-package-input "openssl")))
+               (list "--with-pkg-config"
+                     "--with-screen=ncurses"
+                     "--with-zlib"
+                     "--with-bzlib"
+                     (string-append "--with-ssl=" openssl)
+                     ;; "--with-socks5"    ; XXX TODO
+                     "--enable-widec"
+                     "--enable-ascii-ctypes"
+                     "--enable-local-docs"
+                     "--enable-htmlized-cfg"
+                     "--enable-gzip-help"
+                     "--enable-nls"
+                     "--enable-ipv6"))
+           #:tests? #f                  ; no check target
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'configure 'set-makefile-shell
+                 (lambda _ (substitute* "po/makefile.inn"
+                        (("/bin/sh") (which "sh")))))
+               (replace 'install
+                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                   (apply invoke "make" "install-full" make-flags))))))
     (synopsis "Text Web Browser")
     (description
-     "Lynx is a fully-featured World Wide Web (WWW) client for users running
-cursor-addressable, character-cell display devices.  It will display Hypertext
-Markup Language (HTML) documents containing links to files on the local
-system, as well as files on remote systems running http, gopher, ftp, wais,
-nntp, finger, or cso/ph/qi servers.  Lynx can be used to access information on
-the WWW, or to build information systems intended primarily for local
-access.")
+     "Lynx is a fully-featured @acronym{WWW, World Wide Web} client for users
+of cursor-addressable, character-cell display devices.  It will display
+@acronym{HTML, Hypertext Markup Language} documents containing links to files
+on the local system, as well as files on remote systems running http, gopher,
+ftp, wais, nntp, finger, or cso/ph/qi servers.
+
+Lynx can be used to access information on the WWW, or to build information
+systems intended primarily for local access.")
     (home-page "https://lynx.invisible-island.net/")
     ;; This was fixed in 2.8.9dev.10.
     (properties `((lint-hidden-cve . ("CVE-2016-9179"))))
@@ -587,7 +586,7 @@ driven and does not detract you from your daily work.")
 (define-public nyxt
   (package
     (name "nyxt")
-    (version "3.2.0")
+    (version "3.4.0")
     (source
      (origin
        (method git-fetch)
@@ -596,7 +595,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "0igvj5v2k96kmbybx4lm3v26iylw114lvp0h5wx7kjfq03m50ffp"))
+         "0k1vk3qj9sc3wa0yhx1ih8xq9864dd34hfk622zdmyx2f8q81qd3"))
        (file-name (git-file-name "nyxt" version))
        (modules '((guix build utils)))
        (snippet
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index f5b6c8cd2f..ad5ec0aba7 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -185,6 +185,7 @@
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages skribilo)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages syncthing)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -319,6 +320,60 @@ and its related documentation.")
                 (base32
                  "1jgmfbazc2n9dnl7axhahwppyq25bvbvwx0lqplq76by97fgf9q1")))))))
 
+(define-public miniflux
+  (package
+    (name "miniflux")
+    (version "2.0.44")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/miniflux/v2")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18ggk71nk3zylgkwq32glggdcapgsj772qn2y4i9hbk374l6h61w"))))
+    (build-system go-build-system)
+    (arguments
+     (list #:go go-1.19
+           #:install-source? #f
+           #:import-path "miniflux.app"
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'rename-binary
+                 (lambda _
+                   (let ((bindir (string-append #$output "/bin/")))
+                     (rename-file (string-append bindir "miniflux.app")
+                                  (string-append bindir "miniflux"))))))))
+    (inputs
+     (list go-github-com-coreos-go-oidc
+           go-github-com-go-telegram-bot-api-telegram-bot-api
+           go-github-com-gorilla-mux
+           go-github-com-lib-pq
+           go-github-com-matrix-org-gomatrix
+           go-github-com-prometheus-client-golang
+           go-github-com-puerkitobio-goquery
+           go-github-com-rylans-getlang
+           go-github-com-tdewolff-minify-v2
+           go-github-com-yuin-goldmark
+           go-golang-org-x-term
+           go-mvdan-cc-xurls))
+    (home-page "https://miniflux.app/")
+    (synopsis "Minimalist and opinionated feed reader")
+    (description
+     "Miniflux is a minimalist and opinionated feed reader:
+
+@itemize
+@item Written in Go (Golang)
+@item Works only with Postgresql
+@item Doesn't use any ORM
+@item Doesn't use any complicated framework
+@item Use only modern vanilla Javascript (ES6 and Fetch API)
+@item Single binary compiled statically without dependency
+@item The number of features is voluntarily limited
+@end itemize\n")
+    (license license:asl2.0)))
+
 (define-public mod-wsgi
   (package
     (name "mod-wsgi")
@@ -8795,6 +8850,139 @@ snapshots of the URLs you feed it in several formats.")
     (home-page "https://archivebox.io/")
     (license license:expat)))
 
+(define-public orcania
+  (package
+    (name "orcania")
+    (version "2.3.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/babelouest/orcania")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0dhczbhwvf3f9mj38qm46j10rpr77yz1np68mabfw8zcfwhr0pn4"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DBUILD_ORCANIA_TESTING=ON"
+                                     "-DBUILD_ORCANIA_DOCUMENTATION=ON")
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'build 'build-doc
+                          (lambda _
+                            (invoke "make" "doc")))
+                        (add-after 'install 'install-doc
+                          (lambda _
+                            (let ((doc (string-append #$output
+                                                      "/share/doc/orcania")))
+                              (mkdir-p doc)
+                              (copy-recursively "../source/doc/html" doc)))))))
+    (native-inputs (list check doxygen subunit))
+    (home-page "https://babelouest.github.io/orcania/")
+    (synopsis "Collection of C functions for Ulfius")
+    (description
+     "Orcania is a library with functions that can be shared among C programs.
+It is intended to provide low-level functionalities for the Ulfius and Yder
+libraries.")
+    (license license:lgpl2.1)))
+
+(define-public yder
+  (package
+    (name "yder")
+    (version "1.4.19")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/babelouest/yder")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02jgrqby39ykfdhc7z0bh3x5aqisqybz6lnvn7msh9wqbj5zvzi8"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DWITH_JOURNALD=OFF"
+                                     "-DBUILD_YDER_TESTING=ON"
+                                     "-DBUILD_YDER_DOCUMENTATION=ON")
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'build 'build-doc
+                          (lambda _
+                            (invoke "make" "doc")))
+                        (add-after 'install 'install-doc
+                          (lambda _
+                            (let ((doc (string-append #$output
+                                                      "/share/doc/yder")))
+                              (mkdir-p doc)
+                              (copy-recursively "../source/doc/html" doc)))))))
+    (native-inputs (list check doxygen subunit))
+    (inputs (list orcania))
+    (home-page "https://babelouest.github.io/yder/")
+    (synopsis "Logging library for C applications")
+    (description
+     "Yder is a logging library written in C.  It can log messages to the
+console, a file, syslog, journald, or a callback function.")
+    (license license:lgpl2.1)))
+
+(define-public ulfius
+  (package
+    (name "ulfius")
+    (version "2.7.13")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/babelouest/ulfius")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dfwdpqmqki63dddi53bfv6jd0kzv8gh2w1lxsv6mzk3sxl6qakf"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~(list "-DBUILD_ULFIUS_TESTING=ON"
+                                     "-DBUILD_ULFIUS_DOCUMENTATION=ON")
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'build 'build-doc
+                          (lambda _
+                            (invoke "make" "doc")))
+                        (replace 'check
+                          (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+                            (when tests?
+                              (let ((job-count (number->string
+                                                (or (and parallel-tests?
+                                                         (parallel-job-count))
+                                                    1))))
+                                ;; Skip failing tests that try to start a server.
+                                (invoke "ctest" "--output-on-failure"
+                                        "-j" job-count "-E"
+                                        "(core|framework|example_callbacks)")))))
+                        (add-after 'install 'install-doc
+                          (lambda _
+                            (let ((doc (string-append #$output
+                                                      "/share/doc/ulfius")))
+                              (mkdir-p doc)
+                              (copy-recursively "../source/doc/html" doc)))))))
+    (native-inputs (list check doxygen subunit))
+    (inputs (list zlib))
+    (propagated-inputs ;for libulfius.pc
+     (list curl
+           gnutls
+           jansson
+           libgcrypt
+           libmicrohttpd
+           orcania
+           yder))
+    (home-page "https://babelouest.github.io/ulfius/")
+    (synopsis "HTTP Framework for REST Applications in C")
+    (description
+     "Ulfius is a HTTP Framework library for REST Applications written in C.
+It is based on GNU libmicrohttpd for the backend web server, Jansson for the
+JSON manipulation library, and libcurl for the http/smtp client API.  It can
+be used to facilitate creation of web applications in C programs with a small
+memory footprint, as in embedded systems applications.  It can create
+webservices in HTTP or HTTPS mode, stream data, or implement server
+websockets.")
+    (license license:lgpl2.1)))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 5ab93ad9eb..f47fff25d2 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -199,6 +199,13 @@ engine that uses Wayland for graphics output.")
                 (substitute* "Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp"
                   (("libWPEBackend-fdo-[\\.0-9]+\\.so" all)
                    (search-input-file inputs (string-append "lib/" all)))))))
+          #$@(if (target-x86-32?)
+                 ;; Don't include x86intrin.h on i686-linux.
+                 '((add-after 'unpack 'fix-headers
+                     (lambda _
+                       (substitute* "Source/ThirdParty/ANGLE/src/common/platform.h"
+                         (("\\|\\| defined\\(__i386__\\)") "")))))
+                 '())
           #$@(if (target-x86-64?)
                  '()
                  '((add-after 'unpack 'disable-sse2
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 860e804452..b9909de219 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -62,6 +62,7 @@
 ;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
 ;;; Copyright © 2023 Gabriel Wicki <gabriel@erlikon.ch>
 ;;; Copyright © 2023 Jonathan Brielamier <jonathan.brielmaier@web.de>
+;;; Copyright © 2023 Vessel Wave <vesselwave@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -112,7 +113,6 @@
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gperf)
@@ -877,9 +877,9 @@ used on each workspace.  Xinerama is fully supported, allowing windows to be
 tiled on several screens.")
     (license license:bsd-3)))
 
-(define-public xmobar
+(define-public ghc-xmobar
   (package
-    (name "xmobar")
+    (name "ghc-xmobar")
     (version "0.46")
     (source (origin
               (method url-fetch)
@@ -896,17 +896,18 @@ tiled on several screens.")
            ghc-alsa-mixer
            ghc-dbus
            ghc-hinotify
-           ghc-http
+           ghc-http-client-tls
            ghc-http-conduit
            ghc-http-types
-           ghc-iwlib
            ghc-libmpd
            ghc-netlink
+           ghc-cereal
            ghc-old-locale
            ghc-parsec-numbers
            ghc-regex-compat
            ghc-temporary
            ghc-timezone-olson
+           ghc-timezone-series
            ghc-x11
            ghc-x11-xft
            ghc-cairo
@@ -914,18 +915,35 @@ tiled on several screens.")
            libxpm))
     (arguments
      `(#:configure-flags (list "--flags=all_extensions")
-       ;; Haddock documentation is for the library.
-       #:haddock? #f
        #:phases
        (modify-phases %standard-phases
-         (add-after 'register 'remove-libraries
+         (add-after 'install 'remove-binaries
              (lambda* (#:key outputs #:allow-other-keys)
-               (delete-file-recursively (string-append (assoc-ref outputs "out") "/lib"))))
+               (delete-file-recursively (string-append (assoc-ref outputs "out") "/bin"))))
          (add-before 'build 'patch-test-shebang
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs"
                (("/bin/bash") (which "bash"))))))))
     (home-page "https://xmobar.org")
+    (synopsis "Haskell library for minimalistic text based status bars")
+    (description
+     "@code{ghc-xmobar} is the haskell library that @code{xmobar} is based on.
+It can be used to extend @code{xmobar} with other Haskell code.")
+    (license license:bsd-3)))
+
+(define-public xmobar
+  (package
+    (inherit ghc-xmobar)
+    (name "xmobar")
+    (inputs
+     (list ghc-xmobar
+           libxpm))
+    (arguments
+     `(#:configure-flags (list "--flags=all_extensions" "exe:xmobar")
+       ;; Haddock documentation is for the library.
+       #:haddock? #f
+       ;; Tests are for the library.
+       #:tests? #f))
     (synopsis "Minimalistic text based status bar")
     (description
      "@code{xmobar} is a lightweight, text-based, status bar written in
@@ -1687,6 +1705,29 @@ modules for building a Wayland compositor.")
     (description "Sway is a i3-compatible Wayland compositor.")
     (license license:expat)))
 
+(define-public swayfx
+  (package
+    (inherit sway)
+    (name "swayfx")
+    (version "0.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/WillPower3309/swayfx")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1550n9xnqbl1am4cwlnj8ip5cs7kgdzx96ga2hkcw29cpyian7rv"))))
+    (build-system meson-build-system)
+    (home-page "https://github.com/WillPower3309/swayfx")
+    (synopsis "Sway Fork with extra options and effects")
+    (description
+     "Fork of Sway, a Wayland compositor compatible with i3.  SwayFX
+adds extra options and effects to the original Sway, such as blur, rounded
+corners, shadows, inactive window dimming, etc.")
+    (license license:expat)))
+
 (define-public swayidle
   (package
     (name "swayidle")
@@ -1924,7 +1965,7 @@ core/thread.")
 (define-public mako
   (package
     (name "mako")
-    (version "1.7.1")
+    (version "1.8.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1933,7 +1974,7 @@ core/thread.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0vpar1a7zafkd2plmyaackgba6fyg35s9zzyxmj8j7v2q5zxirgz"))))
+                "05g1gp61qd9n9w4lq925i4wgryagvah6x489g17j7rnw59q4qhdi"))))
     (build-system meson-build-system)
     (arguments
      (list #:phases
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index cdd5a48259..1f7539764c 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -55,7 +55,7 @@
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;; Copyright © 2022 Derek Chuank <derekchuank@outlook.com>
-;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022, 2023 Wamm K. D. <jaft.r@outlook.com>
 ;;; Copyright © 2022 Tobias Kortkamp <tobias.kortkamp@gmail.com>
 ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
 ;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com>
@@ -129,6 +129,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
@@ -1271,64 +1272,40 @@ compact configuration syntax.")
 (define-public rxvt-unicode
   (package
     (name "rxvt-unicode")
-    (version "9.30")
+    (version "9.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0badnkjsn3zps24r5iggj8k5v4f00npc77wqg92pcn1q5z8r677y"))))
+                "1s3jcvac40zzp03fvmhjsdpsjx0gb1wk54qz74zhzzj9q75kz8da"))))
     (build-system gnu-build-system)
     (arguments
      ;; This sets the destination when installing the necessary terminal
      ;; capability data, which are not provided by 'ncurses'.  See
      ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
-     `(#:configure-flags (list "--enable-256-color")
-       #:make-flags (list (string-append "TERMINFO="
-                                         (assoc-ref %outputs "out")
-                                         "/share/terminfo"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-desktop-urxvt
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((output (assoc-ref outputs "out"))
-                    (desktop (string-append output "/share/applications")))
-               (mkdir-p desktop)
-               (with-output-to-file
-                   (string-append desktop "/urxvt.desktop")
-                 (lambda _
-                   (format #t
-                           "[Desktop Entry]~@
-                           Name=rxvt-unicode~@
-                           Comment=~@
-                           Exec=~a/bin/urxvt~@
-                           TryExec=~@*~a/bin/urxvt~@
-                           Icon=~@
-                           Type=Application~%"
-                           output))))))
-         (add-after 'install 'install-desktop-urxvtc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((output (assoc-ref outputs "out"))
-                    (desktop (string-append output "/share/applications")))
-               (mkdir-p desktop)
-               (with-output-to-file
-                   (string-append desktop "/urxvtc.desktop")
+     (list #:configure-flags #~(list "--enable-256-color")
+           #:make-flags #~(list (string-append "TERMINFO=" #$output "/share/terminfo"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'install-desktop-entries
                  (lambda _
-                   (format #t
-                           "[Desktop Entry]~@
-                           Name=rxvt-unicode (client)~@
-                           Comment=Rxvt clone with XFT and unicode support~@
-                           Exec=~a/bin/urxvtc~@
-                           TryExec=~@*~a/bin/urxvtc~@
-                           Icon=~@
-                           Type=Application~%"
-                           output)))))))))
+                   (for-each (lambda (exec name)
+                               (make-desktop-entry-file
+                                (string-append #$output "/share/applications/"
+                                               exec ".desktop")
+                                #:type "Application"
+                                #:name name
+                                #:comment '((#f #$(package-synopsis this-package)))
+                                #:exec exec
+                                #:try-exec exec
+                                #:icon "utilities-terminal"
+                                #:categories '("System" "TerminalEmulator")))
+                             '("urxvt" "urxvtc")
+                             '("rxvt-unicode" "rxvt-unicode (client)")))))))
     (inputs
-     `(("libptytty" ,libptytty)
-       ("libXft" ,libxft)
-       ("libX11" ,libx11)
-       ("libXt" ,libxt)))
+     (list libptytty libxft libx11 libxt libxext))
     (native-inputs
      (list ncurses ;trigger the installation of terminfo data
            perl pkg-config))
@@ -2993,6 +2970,7 @@ After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
               (uri (git-reference
                     (url (string-append "https://github.com/yory8/" name "/"))
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256 (base32
                         "0b9kvj0dif4221dy6c1npknhhjxvbc4kygzhwxjirpwjws0yv6v9"))))
     (build-system go-build-system)
@@ -3098,7 +3076,7 @@ using @command{dmenu}.")
 (define-public fuzzel
   (package
     (name "fuzzel")
-    (version "1.8.2")
+    (version "1.9.1")
     (home-page "https://codeberg.org/dnkl/fuzzel")
     (source (origin
               (method git-fetch)
@@ -3106,7 +3084,7 @@ using @command{dmenu}.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1d6xy4q5s8p5ckvd9wy3zzj9gh7nh9v1qhn3938b1wfhfzjdzrg6"))))
+                "0k65nl2yifxnb95nv6nnikqxdanng2baw7gl47ji1av3gsdx3bsm"))))
     (build-system meson-build-system)
     (arguments
      (list #:build-type "release"
@@ -3530,3 +3508,34 @@ on the screen and which then writes out the necessary C code for it.")
                          (append mesa)))
     (synopsis
      "GUI toolkit for X based on the X11 Xlib library, with OpenGL support")))
+
+(define-public show-me-the-key
+  (package
+    (name "show-me-the-key")
+    (version "1.8.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/AlynxZhou/showmethekey/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256 (base32
+                       "1gvrri6kfywxk8hfchc66r6fpwlrcai2j227ib33w6503cx66rl9"))))
+    (build-system meson-build-system)
+    (inputs (list libevdev
+                  libinput
+                  gtk
+                  json-glib-minimal
+                  cairo
+                  pango
+                  libxkbcommon
+                  polkit))
+    (native-inputs (list `(,glib "bin") ; for glib-compile-resources
+                         `(,gtk  "bin") ; for gtk-update-icon-cache
+                         pkg-config))
+    (home-page "https://github.com/AlynxZhou/showmethekey")
+    (synopsis "Screencast tool to display pressed keys")
+    (description "Show Me the Key is a screencast tool to display your keys
+and works under both Xorg and Wayland (via @code{libinput}), inspired by
+@code{python-screenkey}.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 8d9974b825..555f0ab624 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -185,7 +185,7 @@ hierarchical form with variable field lengths.")
     (version "2.9.14")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://download.gnome.org/sources/libxml2/"
+             (uri (string-append "mirror://gnome/sources/libxml2/"
                                  (version-major+minor version)"/libxml2-"
                                  version ".tar.xz"))
              (sha256
@@ -326,7 +326,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
     (version "1.1.37")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://download.gnome.org/sources"
+             (uri (string-append "mirror://gnome/sources"
                                  "/libxslt/" (version-major+minor version)
                                  "/libxslt-" version ".tar.xz"))
              (sha256
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e41ddea28f..96440a6d0a 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6059,14 +6059,14 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "4.4.5")
+    (version "4.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.xpra.org/src/xpra-"
                            version ".tar.xz"))
        (sha256
-        (base32 "06p9wbs23vx8f2nb8ncz84xwgcxq5ly3dcscgc2r30jn6qzw6sx3"))
+        (base32 "0d3s13wqbn9jwqp4i55mn4chgjkrckq3jx4jrq1bcjjz5agzfrq5"))
        (patches (search-patches "xpra-4.2-systemd-run.patch"
                                 "xpra-4.2-install_libs.patch"))))
     (build-system python-build-system)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index bbc2ac2c79..636d827ff9 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1613,7 +1613,7 @@ information on the configuration file syntax."
                                  '("conf=/etc/security/limits.conf")))))
                (if (member (pam-service-name pam)
                            '("login" "greetd" "su" "slim" "gdm-password"
-                             "sddm" "sudo" "sshd"))
+                             "sddm" "sudo" "sshd" "lightdm"))
                    (pam-service
                     (inherit pam)
                     (session (cons pam-limits
diff --git a/gnu/services/cgit.scm b/gnu/services/cgit.scm
index c2c003983a..e33cb9e7db 100644
--- a/gnu/services/cgit.scm
+++ b/gnu/services/cgit.scm
@@ -561,7 +561,8 @@ to it, that should loaded as Git repositories.  An empty list means that all
 subdirectories will be loaded.")
   (readme
    (file-object "")
-   "Text which will be used as default value for @code{cgit-repo-readme}.")
+   "Text which will be used as default @code{repository-cgit-configuration}
+@code{readme}.")
   (remove-suffix?
    (boolean #f)
    "If set to @code{#t} and @code{repository-directory} is enabled, if any
@@ -642,7 +643,7 @@ for cgit to allow access to that repository.")
    "URL which, if specified, will be used as root for all cgit links.")
   (repositories
    (repository-cgit-configuration-list '())
-   "A list of @dfn{cgit-repo} records to use with config.")
+   "A list of @code{repository-cgit-configuration} records.")
   (extra-options
    (list '())
    "Extra options will be appended to cgitrc file."))
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index a63748b652..01aec64bee 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -1398,18 +1398,7 @@ rules."
                     '("gnome-settings-daemon"
                       "gnome-control-center"
                       "gnome-system-monitor"
-                      "gvfs"
-                      ;; spice-gtk provides polkit actions for USB redirection
-                      ;; in GNOME Boxes.
-                      ("gnome-boxes" "spice-gtk")))))
-
-(define (gnome-setuid-programs config)
-  "Return the list of GNOME setuid programs."
-  (let* ((gnome (gnome-desktop-configuration-gnome config))
-         (spice-gtk (gnome-package gnome '("gnome-boxes" "spice-gtk"))))
-    (map file-like->setuid-program
-         (list (file-append spice-gtk
-                            "/libexec/spice-client-glib-usb-acl-helper")))))
+                      "gvfs"))))
 
 (define gnome-desktop-service-type
   (service-type
@@ -1419,8 +1408,6 @@ rules."
                              gnome-udev-rules)
           (service-extension polkit-service-type
                              gnome-polkit-settings)
-          (service-extension setuid-program-service-type
-                             gnome-setuid-programs)
           (service-extension profile-service-type
                              (compose list gnome-desktop-configuration-gnome))))
    (default-value (gnome-desktop-configuration))
diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm
index 90d3c35b6c..23e1d36364 100644
--- a/gnu/services/dict.scm
+++ b/gnu/services/dict.scm
@@ -167,15 +167,15 @@ database {
            (provision '(dicod))
            (requirement '(user-processes))
            (documentation "Run the dicod daemon.")
-           (start #~(if (and (defined? 'make-inetd-constructor)
-                             #$(= 1 (length interfaces))) ;XXX
+           (start #~(if (defined? 'make-inetd-constructor)
                         (make-inetd-constructor
                          (list #$dicod "--inetd" "--foreground"
                                (string-append "--config=" #$dicod.conf))
-                         (list (endpoint
-                                (addrinfo:addr
-                                 (car (getaddrinfo #$(first interfaces)
-                                                   "dict")))))
+                         (map (lambda (interface)
+                                (endpoint
+                                 (addrinfo:addr
+                                  (car (getaddrinfo interface "dict")))))
+                              '#$interfaces)
                          #:requirements '#$requirement
                          #:user "dicod" #:group "dicod"
                          #:service-name-stem "dicod")
@@ -183,8 +183,7 @@ database {
                          (list #$dicod "--foreground"
                                (string-append "--config=" #$dicod.conf))
                          #:user "dicod" #:group "dicod")))
-           (stop #~(if (and (defined? 'make-inetd-destructor)
-                            #$(= 1 (length interfaces))) ;XXX
+           (stop #~(if (defined? 'make-inetd-destructor)
                        (make-inetd-destructor)
                        (make-kill-destructor)))
            (actions (list (shepherd-configuration-action dicod.conf)))))))
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index de40454f7d..e9d3a631c2 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -27,8 +27,9 @@
   #:use-module (guix store)
   #:use-module (guix records)
   #:use-module (guix packages)
-  #:use-module (guix derivations)                 ;imported-modules, etc.
   #:use-module (guix utils)
+  #:use-module ((guix diagnostics)
+                #:select (define-with-syntax-properties formatted-message))
   #:use-module (gnu services)
   #:use-module (gnu services herd)
   #:use-module (gnu packages admin)
@@ -186,12 +187,25 @@ DEFAULT is given, use it as the service's default value."
     ((guix build utils) #:hide (delete))
     (guix build syscalls)))
 
+(define-with-syntax-properties (validate-provision (provision properties))
+  (match provision
+    (((? symbol?) ..1) provision)
+    (_
+     (raise
+      (make-compound-condition
+       (condition
+        (&error-location
+         (location (source-properties->location properties))))
+       (formatted-message
+        (G_ "'provision' must be a non-empty list of symbols")))))))
+
 (define-record-type* <shepherd-service>
   shepherd-service make-shepherd-service
   shepherd-service?
   (documentation shepherd-service-documentation        ;string
                  (default "[No documentation.]"))
-  (provision     shepherd-service-provision)           ;list of symbols
+  (provision     shepherd-service-provision            ;list of symbols
+                 (sanitize validate-provision))
   (requirement   shepherd-service-requirement          ;list of symbols
                  (default '()))
   (one-shot?     shepherd-service-one-shot?            ;Boolean
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 880557915c..506f5a7ab6 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -478,6 +478,7 @@ potential infinite waits blocking libvirt."))
     (list (shepherd-service
            (documentation "Run the libvirt daemon.")
            (provision '(libvirtd))
+           (requirement '(dbus-system))
            (start #~(make-forkexec-constructor
                      (list (string-append #$libvirt "/sbin/libvirtd")
                            "-f" #$config-file
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 45897d7d6f..818226a4f7 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -1144,6 +1144,14 @@ a webserver.")
    (uri "~ \\.php$")
    (body (list
           "fastcgi_split_path_info ^(.+\\.php)(/.+)$;"
+
+          ;; Include some upstream recommendations from
+          ;; https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi
+          ;; Mitigate https://httpoxy.org/ vulnerabilities
+          "fastcgi_param HTTP_PROXY \"\";"
+          ;; Only pass existing php files to the backend.
+          "if (!-f $document_root$fastcgi_script_name) { return 404; }"
+
           (string-append "fastcgi_pass unix:" socket ";")
           "fastcgi_index index.php;"
           (list "include " nginx-package "/share/nginx/conf/fastcgi.conf;")))))
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 81346495c2..841e7e0c7e 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -148,11 +148,13 @@ parent image record."
 (define efi-disk-image
   (image-without-os
    (format 'disk-image)
+   (partition-table-type 'gpt)
    (partitions (list esp-partition root-partition))))
 
 (define efi32-disk-image
   (image-without-os
    (format 'disk-image)
+   (partition-table-type 'gpt)
    (partitions (list esp32-partition root-partition))))
 
 (define iso9660-image
@@ -215,6 +217,7 @@ set to the given OS."
    (constructor (cut image-with-os
                  (image
                   (inherit efi-disk-image)
+                  (partition-table-type 'mbr)
                   (name 'image.qcow2)
                   (format 'compressed-qcow2))
                  <>))))
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 7c45dbccaf..485baea4c5 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2016-2017, 2019-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016-2017, 2019-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Google LLC
@@ -160,6 +160,17 @@ containerized OS.  EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
                                            (nscd-configuration
                                             (inherit (service-value s))
                                             (caches %nscd-container-caches))))
+                                 ((eq? guix-service-type (service-kind s))
+                                  ;; Pass '--disable-chroot' so that
+                                  ;; guix-daemon can build thing even in
+                                  ;; Docker without '--privileged'.
+                                  (service guix-service-type
+                                           (guix-configuration
+                                            (inherit (service-value s))
+                                            (extra-options
+                                             (cons "--disable-chroot"
+                                                   (guix-configuration-extra-options
+                                                    (service-value s)))))))
                                  (else s)))
                          (operating-system-user-services os))))
     (file-systems (append (map mapping->fs
diff --git a/gnu/tests/image.scm b/gnu/tests/image.scm
index 99d34b7670..be6852cae0 100644
--- a/gnu/tests/image.scm
+++ b/gnu/tests/image.scm
@@ -20,7 +20,7 @@
   #:use-module (gnu)
   #:use-module (gnu image)
   #:use-module (gnu tests)
-  #:autoload   (gnu system image) (system-image root-offset)
+  #:autoload   (gnu system image) (system-image root-offset image-with-os efi-disk-image)
   #:use-module (gnu system uuid)
   #:use-module (gnu system vm)
   #:use-module (gnu packages guile)
@@ -153,6 +153,10 @@
       (flags '(boot))
       (initializer dummy-initializer))))))
 
+;; A efi disk image with default partitions
+(define i6
+  (image-with-os efi-disk-image %simple-efi-os))
+
 (define (run-images-test)
   (define test
     (with-imported-modules '((srfi srfi-64)
@@ -202,10 +206,10 @@
               (disk-get-primary-partition-count (disk-new d2-device)))
 
             (test-equal "test"
-                (let* ((disk (disk-new d2-device))
-                       (partitions (disk-partitions disk))
-                       (boot-partition (find normal-partition? partitions)))
-                  (partition-get-name boot-partition)))
+              (let* ((disk (disk-new d2-device))
+                     (partitions (disk-partitions disk))
+                     (boot-partition (find normal-partition? partitions)))
+                (partition-get-name boot-partition)))
 
             ;; Image i3.
             (define i3-image
@@ -259,6 +263,15 @@
                    (filter data-partition?
                            (disk-partitions (disk-new d5-device)))))
 
+            ;; Image i6.
+            (define i6-image
+              #$(system-image i6))
+            (define d6-device
+              (get-device i6-image))
+
+            (test-equal "gpt"
+              (disk-type-name (disk-probe d6-device)))
+
             (test-end)))))
 
   (gexp->derivation "images-test" test))
diff --git a/gnu/tests/lightdm.scm b/gnu/tests/lightdm.scm
index 6011d2c515..f1c3b67c8a 100644
--- a/gnu/tests/lightdm.scm
+++ b/gnu/tests/lightdm.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>.
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>.
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -142,10 +142,6 @@
             (test-assert "can connect to TCP port 5900 on IPv4"
               (wait-for-tcp-port 5900 marionette))
 
-            ;; The VNC server fails to listen to IPv6 due to "Error binding to
-            ;; address [::]:5900: Address already in use" (see:
-            ;; https://github.com/canonical/lightdm/issues/266).
-            (test-expect-fail 1)
             (test-assert "can connect to TCP port 5900 on IPv6"
               (wait-for-tcp-port 5900 marionette
                                  #:address