summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-07-27 17:53:05 +0200
committerMarius Bakke <marius@gnu.org>2022-07-27 17:53:05 +0200
commit6a3ed96af73939df69167b5736d03abf1d7ecebd (patch)
treec44435fc118e474835323ece38d5e560d0d62dc0
parentf7815e76b00f61959e3bae68e4d7365ace45abf1 (diff)
parent4059158e6a284976c80b0fe8f64f69868d59ab10 (diff)
downloadguix-6a3ed96af73939df69167b5736d03abf1d7ecebd.tar.gz
Merge branch 'staging' into core-updates
-rw-r--r--doc/guix.texi63
-rw-r--r--gnu/local.mk7
-rw-r--r--gnu/packages/algebra.scm19
-rw-r--r--gnu/packages/astronomy.scm4
-rw-r--r--gnu/packages/audio.scm14
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/clojure.scm187
-rw-r--r--gnu/packages/cpp.scm8
-rw-r--r--gnu/packages/crates-graphics.scm567
-rw-r--r--gnu/packages/crates-gtk.scm596
-rw-r--r--gnu/packages/crates-io.scm1195
-rw-r--r--gnu/packages/datamash.scm6
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm4
-rw-r--r--gnu/packages/engineering.scm4
-rw-r--r--gnu/packages/file-systems.scm8
-rw-r--r--gnu/packages/finance.scm4
-rw-r--r--gnu/packages/fontutils.scm15
-rw-r--r--gnu/packages/freedesktop.scm46
-rw-r--r--gnu/packages/gnome.scm6
-rw-r--r--gnu/packages/gnuzilla.scm12
-rw-r--r--gnu/packages/image.scm13
-rw-r--r--gnu/packages/libusb.scm15
-rw-r--r--gnu/packages/linux.scm32
-rw-r--r--gnu/packages/lisp-xyz.scm89
-rw-r--r--gnu/packages/messaging.scm46
-rw-r--r--gnu/packages/music.scm35
-rw-r--r--gnu/packages/networking.scm12
-rw-r--r--gnu/packages/nss.scm4
-rw-r--r--gnu/packages/patches/dbxfs-remove-sentry-sdk.patch63
-rw-r--r--gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch73
-rw-r--r--gnu/packages/patches/eigen-remove-openmp-error-counting.patch64
-rw-r--r--gnu/packages/patches/eigen-stabilise-sparseqr-test.patch74
-rw-r--r--gnu/packages/patches/php-curl-compat.patch17
-rw-r--r--gnu/packages/patches/php-openssl_x509_checkpurpose_basic.patch108
-rw-r--r--gnu/packages/pdf.scm23
-rw-r--r--gnu/packages/perl.scm8
-rw-r--r--gnu/packages/php.scm9
-rw-r--r--gnu/packages/protobuf.scm17
-rw-r--r--gnu/packages/python-xyz.scm4
-rw-r--r--gnu/packages/shells.scm15
-rw-r--r--gnu/packages/toolkits.scm6
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm14
-rw-r--r--gnu/packages/virtualization.scm4
-rw-r--r--gnu/packages/vpn.scm9
-rw-r--r--gnu/packages/web.scm2
-rw-r--r--gnu/packages/xdisorg.scm42
-rw-r--r--guix/build/clojure-build-system.scm58
-rw-r--r--guix/download.scm84
-rw-r--r--guix/scripts/deploy.scm32
-rw-r--r--tests/texlive.scm3
53 files changed, 2735 insertions, 1023 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 6a4773189e..559a42528d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5276,8 +5276,7 @@ but also the package modules from your own repository.  The result in
 modules:
 
 @example
-$ guix pull --list-generations
-@dots{}
+$ guix describe
 Generation 19	Aug 27 2018 16:20:48
   guix d894ab8
     repository URL: https://git.savannah.gnu.org/git/guix.git
@@ -5287,16 +5286,13 @@ Generation 19	Aug 27 2018 16:20:48
     repository URL: https://example.org/variant-packages.git
     branch: master
     commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb
-  11 new packages: variant-gimp, variant-emacs-with-cool-features, @dots{}
-  4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{}
 @end example
 
 @noindent
-The output of @command{guix pull} above shows that Generation@tie{}19 includes
-both Guix and packages from the @code{variant-personal-packages} channel.  Among
-the new and upgraded packages that are listed, some like @code{variant-gimp} and
-@code{variant-emacs-with-cool-features} might come from
-@code{variant-packages}, while others come from the Guix default channel.
+The output of @command{guix describe} above shows that we're now running
+Generation@tie{}19 and that it includes
+both Guix and packages from the @code{variant-personal-packages} channel
+(@pxref{Invoking guix describe}).
 
 @node Using a Custom Guix Channel
 @section Using a Custom Guix Channel
@@ -5326,10 +5322,11 @@ addressed below (@pxref{Channel Authentication}).
 @cindex pinning, channels
 @cindex replicating Guix
 @cindex reproducibility, of Guix
-The @command{guix pull --list-generations} output above shows precisely which
-commits were used to build this instance of Guix.  We can thus replicate it,
-say, on another machine, by providing a channel specification in
-@file{~/.config/guix/channels.scm} that is ``pinned'' to these commits:
+The @command{guix describe} command shows precisely which commits were
+used to build the instance of Guix we're using (@pxref{Invoking guix
+describe}).  We can replicate this instance on another machine or at a
+different point in time by providing a channel specification ``pinned''
+to these commits that looks like this:
 
 @lisp
 ;; Deploy specific commits of my channels of interest.
@@ -5343,18 +5340,36 @@ say, on another machine, by providing a channel specification in
        (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
 @end lisp
 
-The @command{guix describe --format=channels} command can even generate this
-list of channels directly (@pxref{Invoking guix describe}).  The resulting
-file can be used with the @option{-C} option of @command{guix pull}
-(@pxref{Invoking guix pull}) or @command{guix time-machine}
-(@pxref{Invoking guix time-machine}).
+To obtain this pinned channel specification, the easiest way is to run
+@command{guix describe} and to save its output in the @code{channels}
+format in a file, like so:
+
+@example
+guix describe -f channels > channels.scm
+@end example
+
+The resulting @file{channels.scm} file can be passed to the @option{-C}
+option of @command{guix pull} (@pxref{Invoking guix pull}) or
+@command{guix time-machine} (@pxref{Invoking guix time-machine}), as in
+this example:
+
+@example
+guix time-machine -C channels.scm -- shell python -- python3
+@end example
+
+Given the @file{channels.scm} file, the command above will always fetch
+the @emph{exact same Guix instance}, then use that instance to run the
+exact same Python (@pxref{Invoking guix shell}).  On any machine, at any
+time, it ends up running the exact same binaries, bit for bit.
 
-At this point the two machines run the @emph{exact same Guix}, with access to
-the @emph{exact same packages}.  The output of @command{guix build gimp} on
-one machine will be exactly the same, bit for bit, as the output of the same
-command on the other machine.  It also means both machines have access to all
-the source code of Guix and, transitively, to all the source code of every
-package it defines.
+@cindex lock files
+Pinned channels address a problem similar to ``lock files'' as
+implemented by some deployment tools---they let you pin and reproduce a
+set of packages.  In the case of Guix though, you are effectively
+pinning the entire package set as defined at the given channel commits;
+in fact, you are pinning all of Guix, including its core modules and
+command-line tools.  You're also getting strong guarantees that you are,
+indeed, obtaining the exact same software.
 
 This gives you super powers, allowing you to track the provenance of binary
 artifacts with very fine grain, and to reproduce software environments at
diff --git a/gnu/local.mk b/gnu/local.mk
index 2654b7309f..f6dcfb95b4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1013,8 +1013,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ecl-16-libffi.patch			\
   %D%/packages/patches/efibootmgr-remove-extra-decl.patch	\
   %D%/packages/patches/efivar-211.patch			\
-  %D%/packages/patches/eigen-remove-openmp-error-counting.patch	\
-  %D%/packages/patches/eigen-stabilise-sparseqr-test.patch	\
+  %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch	\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
   %D%/packages/patches/elixir-path-length.patch			\
@@ -1618,8 +1617,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/perl-www-curl-fix-struct-void.patch	\
   %D%/packages/patches/perl-www-curl-remove-symbol.patch	\
   %D%/packages/patches/phoronix-test-suite-fsdg.patch		\
-  %D%/packages/patches/php-bug-74093-test.patch \
-  %D%/packages/patches/php-openssl_x509_checkpurpose_basic.patch	\
+  %D%/packages/patches/php-bug-74093-test.patch			\
+  %D%/packages/patches/php-curl-compat.patch			\
   %D%/packages/patches/picard-fix-id3-rename-test.patch		\
   %D%/packages/patches/picprog-non-intel-support.patch		\
   %D%/packages/patches/pidgin-add-search-path.patch		\
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 95fbdb5e36..bb71373aa9 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -986,20 +986,17 @@ extends it by a set of algebraic capabilities.")
 (define-public eigen
   (package
     (name "eigen")
-    (version "3.3.8")
+    (version "3.4.0")
     (source (origin
-              (method url-fetch)
-              (uri (list
-                     (string-append "https://bitbucket.org/eigen/eigen/get/"
-                                    version ".tar.bz2")
-                     (string-append "mirror://debian/pool/main/e/eigen3/eigen3_"
-                                    version ".orig.tar.bz2")))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/libeigen/eigen.git")
+                    (commit version)))
               (sha256
                (base32
-                "1vxrsncfnkyq6gwxpsannpryp12mk7lc8f42ybvz3saf7icwc582"))
-              (file-name (string-append name "-" version ".tar.bz2"))
-              (patches (search-patches "eigen-remove-openmp-error-counting.patch"
-                                       "eigen-stabilise-sparseqr-test.patch"))
+                "0k1c4qnymwwvm68rv6s0cyk08xbw65ixvwqccsh36c2axcqk3znp"))
+              (file-name (git-file-name name version))
+              (patches (search-patches "eigen-fix-strict-aliasing-bug.patch"))
               (modules '((guix build utils)))
               (snippet
                ;; There are 3 test failures in the "unsupported" directory,
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 498252aaf4..e84eb188ff 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -426,7 +426,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
 (define-public gnuastro
   (package
     (name "gnuastro")
-    (version "0.17")
+    (version "0.18")
     (source
      (origin
        (method url-fetch)
@@ -434,7 +434,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
                            version ".tar.lz"))
        (sha256
         (base32
-         "1gq37axs9l556pxxmnh47h088gbmp7sk3xjg59qzk2bsycg3dkgh"))))
+         "1y9ig2kkwiwl0rmp9ip9n83fyjjpg2cc2pxzvdzr8rysq5az357y"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 262994c998..66654b99fc 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4352,7 +4352,7 @@ code, used in @code{libtoxcore}.")
 (define-public gsm
   (package
     (name "gsm")
-    (version "1.0.19")
+    (version "1.0.20")
     (source
      (origin
        (method url-fetch)
@@ -4360,8 +4360,7 @@ code, used in @code{libtoxcore}.")
         (string-append "http://www.quut.com/" name "/" name
                        "-" version ".tar.gz"))
        (sha256
-        (base32
-         "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
+        (base32 "1gwhmqs24c14gc9qr91iqb2jkbr3qqy4dvf27yf8j7mq322w65b3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "tst"
@@ -4374,8 +4373,7 @@ code, used in @code{libtoxcore}.")
              ;; mediastreamer.
              (substitute* "Makefile"
                (("^CCFLAGS.*" all)
-                (string-append all "CCFLAGS += -fPIC\n")))
-             #t))
+                (string-append all "CCFLAGS += -fPIC\n")))))
          (add-before 'install 'pre-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
@@ -4384,8 +4382,7 @@ code, used in @code{libtoxcore}.")
                (mkdir-p (string-append out "/man/man1"))
                (mkdir-p (string-append out "/man/man3"))
                (mkdir-p (string-append out "/bin"))
-               (mkdir-p (string-append out "/lib")))
-             #t))
+               (mkdir-p (string-append out "/lib")))))
          (add-after 'install 'post-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
@@ -4393,8 +4390,7 @@ code, used in @code{libtoxcore}.")
                             (string-append out "/include"))
                (mkdir-p (string-append out "/include/gsm"))
                (copy-recursively "inc"
-                                 (string-append out "/include/gsm")))
-             #t))
+                                 (string-append out "/include/gsm")))))
          (delete 'configure))))         ; no configure script
     (synopsis "GSM 06.10 lossy speech compression library")
     (description "This C library provides an encoder and a decoder for the GSM
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index b184a434d4..b8dfe96e6d 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -131,7 +131,7 @@ that was originally contributed to Debian.")
     ;; XXX We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.80")
+    (version "3.81")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -142,7 +142,7 @@ that was originally contributed to Debian.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "0sjbg248kfabv9av2jwkr28fqgj4zjm2nqh9nc16p6p2qz91zgy0"))
+                "19ncvhz45dhr0nmymwkxspq9l44gaafkspxiwxbqs1hpnqxmzgx8"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index c8157bfdcd..9876192f5f 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -43,36 +43,44 @@
          ;; The libraries below are needed to run the tests.
          (libraries
           `(("core-specs-alpha-src"
-             ,(lib "core.specs.alpha/archive/core.specs.alpha-"
-                   "0.1.24"
-                   "0v2a0svf1ar2y42ajxwsjr7zmm5j7pp2zwrd2jh3k7xzd1p9x1fv"))
+             ,(lib "core.specs.alpha/archive/v"
+                   "0.2.62"
+                   "0v6nhghsigpzm8y7dykfm318q5dvk5l8sykmn1hr0qgs1jsjqh9j"))
             ("data-generators-src"
              ,(lib "data.generators/archive/data.generators-"
-                   "0.1.2"
-                   "0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1"))
+                   "1.0.0"
+                   "0s3hf1njvs68b8igasikvzagzqxl0gbri7w2qhzsypkhfh60v2cp"))
+            ("java-classpath-src"
+             ,(lib "java.classpath/archive/java.classpath-"
+                   "1.0.0"
+                   "178zajjsc9phk5l61r8w9hcpk0wgc9a811pl7kjgvn7rg4l7fh7j"))
             ("spec-alpha-src"
-             ,(lib "spec.alpha/archive/spec.alpha-"
-                   "0.1.143"
-                   "00alf0347licdn773w2jarpllyrbl52qz4d8mw61anjksacxylzz"))
+             ,(lib "spec.alpha/archive/v"
+                   "0.3.218"
+                   "0h5nd9xlind1a2vmllr2yfhnirgj2pm5dndgqzrly78l5iwcc3wa"))
             ("test-check-src"
-             ,(lib "test.check/archive/test.check-"
-                   "0.9.0"
-                   "0p0mnyhr442bzkz0s4k5ra3i6l5lc7kp6ajaqkkyh4c2k5yck1md"))
+             ,(lib "test.check/archive/v"
+                   "1.1.1"
+                   "0kx8l79mhpnn94rpsgc7nac7gb222g7a47mzrycj8crfc54wf0c1"))
             ("test-generative-src"
              ,(lib "test.generative/archive/test.generative-"
-                   "0.5.2"
-                   "1pjafy1i7yblc7ixmcpfq1lfbyf3jaljvkgrajn70sws9xs7a9f8"))
+                   "1.0.0"
+                   "0yy2vc38s4j5n94jdcjx1v7l2gdq0lywam31id1jh07sx37lv5il"))
             ("tools-namespace-src"
              ,(lib "tools.namespace/archive/tools.namespace-"
-                   "0.2.11"
-                   "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0"))))
+                   "1.0.0"
+                   "1ifpk93m33rj2xm1qnnninlsdvm1liqmsp9igr63pjjwwwjw1cnn"))
+            ("tools-reader-src"
+             ,(lib "tools.reader/archive/tools.reader-"
+                   "1.3.2"
+                   "1n4dhg61iyypnjbxmihhqjb7lfpc0lzfvlk4jd8w0yr6za414f3a"))))
          (library-names (match libraries
                           (((library-name _) ...)
                            library-name))))
 
     (package
       (name "clojure")
-      (version "1.10.0")
+      (version "1.11.1")
       (source (let ((name+version (string-append name "-" version)))
                 (origin
                   (method git-fetch)
@@ -81,18 +89,23 @@
                         (commit name+version)))
                   (file-name (string-append name+version "-checkout"))
                   (sha256
-                   (base32 "1kcyv2836acs27vi75hvf3r773ahv2nlh9b3j9xa9m9sdanz1h83")))))
+                   (base32 "1xbab21rm9zvhmw1i2h5lqm7612vrdkxprq0rgb2i3sbgsxcdsn4")))))
       (build-system ant-build-system)
       (inputs
        `(("jre" ,icedtea)))
       (arguments
        `(#:imported-modules ((guix build clojure-utils)
+                             (guix build clojure-build-system)
                              (guix build guile-build-system)
                              ,@%ant-build-system-modules)
          #:modules ((guix build ant-build-system)
+                    ((guix build clojure-build-system) #:prefix clj:)
                     (guix build clojure-utils)
                     (guix build java-utils)
                     (guix build utils)
+                    (guix build syscalls)
+                    (ice-9 match)
+                    (ice-9 regex)
                     (srfi srfi-26))
          #:test-target "test"
          #:phases
@@ -106,22 +119,60 @@
                            "--extract"
                            "--verbose"
                            "--file" (assoc-ref inputs name)
-                           "--strip-components=1"))
-                 (copy-recursively (string-append name "/src/main/clojure/")
-                                   "src/clj/"))
+                           "--strip-components=1")))
                (for-each extract-library ',library-names)
+               (copy-recursively "core-specs-alpha-src/src/main/clojure"
+                                 "src/clj/")
+               (copy-recursively "spec-alpha-src/src/main/clojure"
+                                 "src/clj/")
                #t))
            (add-after 'unpack-library-sources 'fix-manifest-classpath
              (lambda _
                (substitute* "build.xml"
                  (("<attribute name=\"Class-Path\" value=\".\"/>") ""))
                #t))
+           (add-after 'unpack-library-sources 'clojure-spec-skip-macros
+             ;; Disable spec macro instrumentation when compiling clojure.spec
+             ;; See: https://clojure.atlassian.net/browse/CLJ-2254
+             (lambda _
+               (substitute* "build.xml"
+                 (("<sysproperty key=\"java.awt.headless\" value=\"true\"/>")
+                  ,(string-join
+                    '("<sysproperty key=\"java.awt.headless\" value=\"true\"/>"
+                      "<sysproperty key=\"clojure.spec.skip-macros\" value=\"true\"/>\n")
+                    "\n")))
+               #t))
+           (add-after 'unpack-library-sources 'clojure-spec-compile
+             ;; Compile and include clojure.spec.alpha & clojure.core.specs.alpha
+             (lambda _
+               (substitute* "build.xml"
+                 (("<arg value=\"clojure.math\"/>")
+                  ,(string-join
+                    '("<arg value=\"clojure.math\"/>"
+                      "<arg value=\"clojure.spec.alpha\"/>"
+                      "<arg value=\"clojure.spec.gen.alpha\"/>"
+                      "<arg value=\"clojure.spec.test.alpha\"/>"
+                      "<arg value=\"clojure.core.specs.alpha\"/>"))))
+               #t))
+           (add-before 'build 'maven-classpath-properties
+             (lambda _
+               (define (make-classpath libraries)
+                 (string-join (map (lambda (library)
+                                     (string-append library "/src/main/clojure"))
+                                   libraries) ":"))
+               (with-output-to-file "maven-classpath.properties"
+                 (lambda ()
+                   (let ((classpath (make-classpath ',library-names)))
+                     (display (string-append "maven.compile.classpath=" classpath "\n"))
+                     (display (string-append "maven.test.classpath=" classpath "\n")))))
+               #t))
            (add-after 'build 'build-javadoc ant-build-javadoc)
            (replace 'install (install-jars "./"))
            (add-after 'install-license-files 'install-doc
              (cut install-doc #:doc-dirs '("doc/clojure/") <...>))
            (add-after 'install-doc 'install-javadoc
-             (install-javadoc "target/javadoc/")))))
+             (install-javadoc "target/javadoc/"))
+           (add-after 'reset-gzip-timestamps 'reset-class-timestamps clj:reset-class-timestamps))))
       (native-inputs libraries)
       (home-page "https://clojure.org/")
       (synopsis "Lisp dialect running on the JVM")
@@ -153,14 +204,14 @@ designs.")
 (define-public clojure-tools
   (package
     (name "clojure-tools")
-    (version "1.10.3.1040")
+    (version "1.11.1.1149")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.clojure.org/install/clojure-tools-"
                            version
                            ".tar.gz"))
-       (sha256 (base32 "0xvr9nmk9q789vp32zmmzj4macv8v7y9ivnfd6lf7i8vxgg6hvgv"))
+       (sha256 (base32 "196wl87br8zg3npfwpr5c1q0knxd1810vzgb0b6h195hyjf6i210"))
        ;; Remove AOT compiled JAR.  The other JAR only contains uncompiled
        ;; Clojure source code.
        (snippet
@@ -224,7 +275,15 @@ Clojure repl, use Clojure and Java libraries, and start Clojure programs.")
     (arguments
      '(#:source-dirs '("src/main/clojure/")
        #:test-dirs '("src/test/clojure/")
-       #:doc-dirs '()))
+       #:doc-dirs '()
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-import
+           (lambda _
+             (substitute*
+                 "src/main/clojure/clojure/algo/generic/math_functions.clj"
+               (("clojure.algo.generic.math-functions")
+                "clojure.algo.generic.math-functions\n(:refer-clojure :exclude [abs])")))))))
     (synopsis "Generic versions of common functions")
     (description
      "Generic versions of commonly used functions, implemented as multimethods
@@ -261,31 +320,29 @@ defining and using monads and useful monadic functions.")
     (license license:epl1.0)))
 
 (define-public clojure-core-match
-  (let ((commit "1837ffbd4a150e8f3953b2d9ed5cf4a4ad3720a7")
-        (revision "1")) ; this is the 1st commit buildable with clojure 1.9
-    (package
-      (name "clojure-core-match")
-      (version (git-version "0.3.0-alpha5" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/clojure/core.match")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "04bdlp5dgkrqzrz0lw3mfwmygj2218qnm1cz3dkb9wy4m0238s4d"))))
-      (build-system clojure-build-system)
-      (arguments
-       '(#:source-dirs '("src/main/clojure")
-         #:test-dirs '("src/test/clojure")
-         #:doc-dirs '()))
-      (synopsis "Optimized pattern matching for Clojure")
-      (description
-       "An optimized pattern matching library for Clojure.
+  (package
+    (name "clojure-core-match")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/clojure/core.match")
+                    (commit (string-append "core.match-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ajpxjv4yc282cm0jw8819fay2j6jqp9nfy69k7vll09q7vqsd22"))))
+    (build-system clojure-build-system)
+    (arguments
+     '(#:source-dirs '("src/main/clojure")
+       #:test-dirs '("src/test/clojure")
+       #:doc-dirs '()))
+    (synopsis "Optimized pattern matching for Clojure")
+    (description
+     "An optimized pattern matching library for Clojure.
 It supports Clojure 1.5.1 and later as well as ClojureScript.")
-      (home-page "https://github.com/clojure/core.match")
-      (license license:epl1.0))))
+    (home-page "https://github.com/clojure/core.match")
+    (license license:epl1.0)))
 
 (define-public clojure-data-codec
   (package
@@ -354,8 +411,7 @@ lazy - should allow parsing and emitting of large XML documents")
     (license license:epl1.0)))
 
 (define-public clojure-instaparse
-  (let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e")
-        (version "1.4.9")) ; upstream forget to tag this release
+  (let ((version "1.4.12"))
     (package
       (name "clojure-instaparse")
       (version version)
@@ -363,14 +419,27 @@ lazy - should allow parsing and emitting of large XML documents")
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/Engelberg/instaparse")
-                      (commit commit)))
+                      (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "002mrgin4z3dqy88r1lak7smd0m7x8d22vmliw0m6w6mh5pa17lk"))))
+                  "1xdiwsv1dc8mvrmvgs4xdqk3z6ddsammc6brhcb771yhimx8jjcr"))))
       (build-system clojure-build-system)
       (arguments
-       '(#:doc-dirs '("docs/")))
+       '(;; Disabled AOT, because of failing test: No implementation of
+         ;; method: :conj-flat of protocol:
+         ;; #'instaparse.auto-flatten-seq/ConjFlat found for class:
+         ;; instaparse.auto_flatten_seq.AutoFlattenSeq
+         #:aot-exclude '(#:all)
+         #:doc-dirs '("docs/")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-import
+             (lambda _
+               (substitute*
+                   "test/instaparse/defparser_test.cljc"
+                 (("AssertionError")
+                  "Exception")))))))
       (synopsis "No grammar left behind")
       (description
        "Instaparse aims to be the simplest way to build parsers in Clojure.
@@ -458,7 +527,7 @@ concise, powerful tests.")
 (define-public clojure-tools-cli
   (package
     (name "clojure-tools-cli")
-    (version "0.4.2")
+    (version "1.0.206")
     (home-page "https://github.com/clojure/tools.cli")
     (source (origin
               (method git-fetch)
@@ -467,7 +536,7 @@ concise, powerful tests.")
                     (commit (string-append "tools.cli-" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "1yqlm8lwbcjm0dp032z7vzc4bdlmc4jixznvf4adsqhvqw85hvj2"))))
+               (base32 "1hvk5zacl3fr8lfcbfgckaicqjx697j0kzw2x5hwj8j5xlr8ri2r"))))
     (build-system clojure-build-system)
     (arguments
      '(#:source-dirs '("src/main/clojure/")
@@ -482,7 +551,7 @@ work with command-line arguments.")
 (define-public clojure-tools-deps-alpha
   (package
     (name "clojure-tools-deps-alpha")
-    (version "0.12.1104")
+    (version "0.14.1212")
     (home-page "https://github.com/clojure/tools.deps.alpha")
     (source (origin
               (method git-fetch)
@@ -492,7 +561,7 @@ work with command-line arguments.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "174m83n5m3arai2vbg434zjibbsr3r4pp7lz3adja8lxq7g21r80"))))
+                "0r8qfihii6cf95kl86x6zfldnm7wlkgda2qmq3340j1x03v244dd"))))
     (build-system clojure-build-system)
     (arguments
      `(#:source-dirs '("src/main/clojure" "src/main/resources")
@@ -544,7 +613,7 @@ dependency graph expansion and the creation of classpaths.")
 (define-public clojure-tools-gitlibs
   (package
     (name "clojure-tools-gitlibs")
-    (version "2.4.172")
+    (version "2.4.181")
     (home-page "https://github.com/clojure/tools.gitlibs")
     (source (origin
               (method git-fetch)
@@ -554,7 +623,7 @@ dependency graph expansion and the creation of classpaths.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "19d83wigmigy66f5i61a3ishg7zrlv8jngj8m9brsh9v38a0fwdr"))))
+                "1d8c79f33axghadwqa955yjfsxa6fgl8jq4nfll2zrp6sjw0597k"))))
     (build-system clojure-build-system)
     (arguments
      '(#:source-dirs '("src/main/clojure")
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 5ae5efc330..8330f0d157 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -1474,7 +1474,7 @@ output randomness while retaining speed, simplicity, and conciseness.")
 (define-public libconfini
   (package
     (name "libconfini")
-    (version "1.16.3")
+    (version "1.16.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1483,10 +1483,12 @@ output randomness while retaining speed, simplicity, and conciseness.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "01g8ai2z4fwshk06k824j6ib8nfb3cwxs5kqpqjvv4k5ayzm892h"))))
+                "002lmf1b2phmc6s348k00yx5shrcc7psn3pgqvraxvr6n8g747jx"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags
+       (list "--disable-static")
+       #:phases
        (modify-phases %standard-phases
          (replace 'bootstrap
            (lambda _ (invoke "sh" "bootstrap" "--noconfigure"))))))
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index d1a9c4dd6d..f0414602bc 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -345,8 +346,39 @@ alpha channel embedding.")
        (("rust-gleam" ,rust-gleam-0.6)
         ("rust-libc" ,rust-libc-0.2))))))
 
+(define-public rust-cgmath-0.18
+  (package
+    (name "rust-cgmath")
+    (version "0.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cgmath" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05sk7c1c1jg5ygqvc3y77kxddp177gwazfibhd864ag3800x760s"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-approx" ,rust-approx-0.4)
+        ("rust-mint" ,rust-mint-0.5)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-serde" ,rust-serde-1))
+       #:cargo-development-inputs
+       (("rust-serde-json" ,rust-serde-json-1))))
+    (home-page "https://github.com/brendanzab/cgmath")
+    (synopsis "Linear algebra and mathematics library")
+    (description
+     "This package provides a linear algebra and mathematics library
+for computer graphics.")
+    (license license:asl2.0)))
+
 (define-public rust-cgmath-0.17
   (package
+    (inherit rust-cgmath-0.18)
     (name "rust-cgmath")
     (version "0.17.0")
     (source
@@ -358,7 +390,6 @@ alpha channel embedding.")
        (sha256
         (base32
          "1rvgila6ivr0dh1bxza450a4yfwdi2pwj3h1vnwg0jy4xk6l8f98"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t     ; Crate won't build without glium.
        #:cargo-inputs
@@ -370,13 +401,7 @@ alpha channel embedding.")
         ("rust-simd" ,rust-simd-0.2))
        #:cargo-development-inputs
        (;("rust-glium" ,rust-glium-0.23)
-        ("rust-serde-json" ,rust-serde-json-1))))
-    (home-page "https://github.com/brendanzab/cgmath")
-    (synopsis "Linear algebra and mathematics library")
-    (description
-     "This package provides a linear algebra and mathematics library
-for computer graphics.")
-    (license license:asl2.0)))
+        ("rust-serde-json" ,rust-serde-json-1))))))
 
 (define-public rust-cgmath-0.16
   (package
@@ -966,8 +991,48 @@ EUI-64, also known as MAC-48 media access control addresses.")
      "Generated OpenGL bindings and wrapper for Servo.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-glutin-0.28
+  (package
+    (name "rust-glutin")
+    (version "0.28.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "glutin" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1lpnf61x4jbm55bpdr10k1a1pl3cs719i9y4qibsdj2bajz9vsh0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-android-glue" ,rust-android-glue-0.2)
+        ("rust-cgl" ,rust-cgl-0.3)
+        ("rust-cocoa" ,rust-cocoa-0.24)
+        ("rust-core-foundation" ,rust-core-foundation-0.9)
+        ("rust-glutin-egl-sys" ,rust-glutin-egl-sys-0.1)
+        ("rust-glutin-emscripten-sys" ,rust-glutin-emscripten-sys-0.1)
+        ("rust-glutin-gles2-sys" ,rust-glutin-gles2-sys-0.1)
+        ("rust-glutin-glx-sys" ,rust-glutin-glx-sys-0.1)
+        ("rust-glutin-wgl-sys" ,rust-glutin-wgl-sys-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libloading" ,rust-libloading-0.7)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-objc" ,rust-objc-0.2)
+        ("rust-osmesa-sys" ,rust-osmesa-sys-0.1)
+        ("rust-parking-lot" ,rust-parking-lot-0.11)
+        ("rust-wayland-egl" ,rust-wayland-egl-0.29)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-winit" ,rust-winit-0.26))))
+    (inputs
+     (list rust-wayland-client-0.29 rust-wayland-egl-0.29))
+    (home-page "https://github.com/tomaka/glutin")
+    (synopsis "Cross-platform OpenGL context provider")
+    (description "This package provides an OpenGL context provider.")
+    (license license:asl2.0)))
+
 (define-public rust-glutin-0.26
   (package
+    (inherit rust-glutin-0.28)
     (name "rust-glutin")
     (version "0.26.0")
     (source
@@ -977,7 +1042,6 @@ EUI-64, also known as MAC-48 media access control addresses.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "18szbh4dixcr7pmymvbrpv21hv0wrpii5w03rv2534bb2ywwpq8s"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-android-glue" ,rust-android-glue-0.2)
@@ -999,11 +1063,7 @@ EUI-64, also known as MAC-48 media access control addresses.")
         ("rust-winapi" ,rust-winapi-0.3)
         ("rust-winit" ,rust-winit-0.24))))
     (inputs
-     (list rust-wayland-client-0.28 rust-wayland-egl-0.28))
-    (home-page "https://github.com/tomaka/glutin")
-    (synopsis "Cross-platform OpenGL context provider")
-    (description "This package provides an OpenGL context provider.")
-    (license license:asl2.0)))
+     (list rust-wayland-client-0.28 rust-wayland-egl-0.28))))
 
 (define-public rust-glutin-0.22
   (package
@@ -1079,7 +1139,7 @@ EUI-64, also known as MAC-48 media access control addresses.")
 (define-public rust-glutin-egl-sys-0.1
   (package
     (name "rust-glutin-egl-sys")
-    (version "0.1.4")
+    (version "0.1.5")
     (source
      (origin
        (method url-fetch)
@@ -1088,7 +1148,7 @@ EUI-64, also known as MAC-48 media access control addresses.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0k1x1frdp4wp47qkai8zzmgqxzpfcn7780m29qgd92lbnbrxwbkp"))))
+         "04f2ci9kb8q4dv4kviigvgfy54lr4jmbnmjsvi50qj13anjnmfra"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -1945,31 +2005,58 @@ interactive applications.")
      "This package provides a library for window abstraction.")
     (license license:expat)))
 
-(define-public rust-png-0.16
+(define-public rust-png-0.17
   (package
     (name "rust-png")
-    (version "0.16.8")
+    (version "0.17.5")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "png" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1ipl44q3vy4kvx6j296vk7d4v8gvcg203lrkvvixwixq1j98fciw"))))
+        (base32 "1fp3vnaxmjdv71dcakc21k07ir5s31dlx1mrazfqddzgaynw0f6w"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #false                  ;XXX missing files in tarball
        #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
         ("rust-crc32fast" ,rust-crc32fast-1)
-        ("rust-deflate" ,rust-deflate-0.8)
-        ("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))
-    (home-page "https://github.com/image-rs/image-png.git")
+        ("rust-deflate" ,rust-deflate-1)
+        ("rust-miniz-oxide" ,rust-miniz-oxide-0.5))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-getopts" ,rust-getopts-0.2)
+        ("rust-glium" ,rust-glium-0.31)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-term" ,rust-term-0.7))))
+    (home-page "https://github.com/image-rs/image-png")
     (synopsis "PNG decoding and encoding library in pure Rust")
     (description
      "This package is a PNG decoding and encoding library in pure Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-png-0.16
+  (package
+    (inherit rust-png-0.17)
+    (name "rust-png")
+    (version "0.16.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "png" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1ipl44q3vy4kvx6j296vk7d4v8gvcg203lrkvvixwixq1j98fciw"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-crc32fast" ,rust-crc32fast-1)
+        ("rust-deflate" ,rust-deflate-0.8)
+        ("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))))
+
 (define-public rust-png-0.15
   (package
     (inherit rust-png-0.16)
@@ -2087,28 +2174,45 @@ interactive applications.")
 images in AVIF format.")
     (license license:bsd-3)))
 
-(define-public rust-raw-window-handle-0.3
+(define-public rust-raw-window-handle-0.4
   (package
     (name "rust-raw-window-handle")
-    (version "0.3.3")
+    (version "0.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "raw-window-handle" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "04c2wir7qq3g2b143yav52a1g5ack8ffqx2bpmrn9bc0dix1li0a"))))
+         "0hgvrqbr2b62zhq4ryv08h92mwis9v8f7j9pwcgxzlp7nswvw05q"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+     `(#:cargo-inputs
+       (("rust-cty" ,rust-cty-0.2))))
     (home-page "https://github.com/rust-windowing/raw-window-handle")
     (synopsis "Interoperability library for Rust Windowing applications")
     (description
      "Interoperability library for Rust Windowing applications.")
     (license license:expat)))
 
+(define-public rust-raw-window-handle-0.3
+  (package
+    (inherit rust-raw-window-handle-0.4)
+    (name "rust-raw-window-handle")
+    (version "0.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "raw-window-handle" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04c2wir7qq3g2b143yav52a1g5ack8ffqx2bpmrn9bc0dix1li0a"))))
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))))
+
 (define-public rust-resize-0.3
   (package
     (name "rust-resize")
@@ -2161,8 +2265,41 @@ implements standard Rust traits to make `RGB`/`RGBA` pixels and slices
 first-class Rust objects.")
     (license license:expat)))
 
+(define-public rust-smithay-client-toolkit-0.15
+  (package
+    (name "rust-smithay-client-toolkit")
+    (version "0.15.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "smithay-client-toolkit" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "18wxla80y6m4l3dwawi7bl1d9m9dfcg4sxxjcgjqq3psjxmg2a4a"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-calloop" ,rust-calloop-0.9)
+        ("rust-dlib" ,rust-dlib-0.5)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-memmap2" ,rust-memmap2-0.3)
+        ("rust-nix" ,rust-nix-0.22)
+        ("rust-pkg-config" ,rust-pkg-config-0.3)
+        ("rust-wayland-client" ,rust-wayland-client-0.29)
+        ("rust-wayland-cursor" ,rust-wayland-cursor-0.29)
+        ("rust-wayland-protocols" ,rust-wayland-protocols-0.29))))
+    (home-page "https://github.com/smithay/client-toolkit")
+    (synopsis "Toolkit for making client Wayland applications")
+    (description
+     "This package provides a toolkit for making client Wayland applications.")
+    (license license:expat)))
+
 (define-public rust-smithay-client-toolkit-0.12
   (package
+    (inherit rust-smithay-client-toolkit-0.15)
     (name "rust-smithay-client-toolkit")
     (version "0.12.2")
     (source
@@ -2186,12 +2323,7 @@ first-class Rust objects.")
         ("rust-nix" ,rust-nix-0.18)
         ("rust-wayland-client" ,rust-wayland-client-0.28)
         ("rust-wayland-cursor" ,rust-wayland-cursor-0.28)
-        ("rust-wayland-protocols" ,rust-wayland-protocols-0.28))))
-    (home-page "https://github.com/smithay/client-toolkit")
-    (synopsis "Toolkit for making client Wayland applications")
-    (description
-     "This package provides a toolkit for making client Wayland applications.")
-    (license license:expat)))
+        ("rust-wayland-protocols" ,rust-wayland-protocols-0.28))))))
 
 (define-public rust-smithay-client-toolkit-0.6
   (package
@@ -2389,8 +2521,50 @@ applications.")
         ("rust-num-derive" ,rust-num-derive-0.2)
         ("rust-num-traits" ,rust-num-traits-0.2))))))
 
+(define-public rust-wayland-client-0.29
+  (package
+    (name "rust-wayland-client")
+    (version "0.29.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-client" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "13s5sj9344izk2g48yizk81kcg8jg4940gg2v6bzcmrjwxh388li"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #false               ;circular dependency on wayland-protocols
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-downcast-rs" ,rust-downcast-rs-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-nix" ,rust-nix-0.22)
+        ("rust-scoped-tls" ,rust-scoped-tls-1)
+        ("rust-wayland-commons" ,rust-wayland-commons-0.29)
+        ("rust-wayland-scanner" ,rust-wayland-scanner-0.29))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3))))
+    (inputs
+     (list rust-bitflags-1
+           rust-downcast-rs-1
+           rust-libc-0.2
+           rust-nix-0.22
+           rust-scoped-tls-1
+           rust-wayland-commons-0.29
+           rust-wayland-scanner-0.29
+           rust-wayland-sys-0.29))
+    (home-page "https://github.com/smithay/wayland-rs")
+    (synopsis
+     "Rust bindings to the standard C implementation of the wayland protocol")
+    (description
+     "This package provides Rust bindings to the standard C implementation of
+the wayland protocol, client side.")
+    (license license:expat)))
+
 (define-public rust-wayland-client-0.28
   (package
+    (inherit rust-wayland-client-0.29)
     (name "rust-wayland-client")
     (version "0.28.3")
     (source
@@ -2418,14 +2592,7 @@ applications.")
            rust-scoped-tls-1
            rust-wayland-commons-0.28
            rust-wayland-scanner-0.28
-           rust-wayland-sys-0.28))
-    (home-page "https://github.com/smithay/wayland-rs")
-    (synopsis
-     "Rust bindings to the standard C implementation of the wayland protocol")
-    (description
-     "This package provides Rust bindings to the standard C implementation of
-the wayland protocol, client side.")
-    (license license:expat)))
+           rust-wayland-sys-0.28))))
 
 (define-public rust-wayland-client-0.23
   (package
@@ -2487,26 +2654,27 @@ the wayland protocol, client side.")
        (("rust-byteorder" ,rust-byteorder-1)
         ("rust-tempfile" ,rust-tempfile-3))))))
 
-(define-public rust-wayland-commons-0.28
+(define-public rust-wayland-commons-0.29
   (package
     (name "rust-wayland-commons")
-    (version "0.28.3")
+    (version "0.29.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "wayland-commons" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0mid1sgy3bmiywnrhsr31b8w6zvk1ll2ci2as15ddv8pczvm0128"))))
+        (base32 "0gnk4a771i3g1k4fbzx54xnganpc9j68jrx8xj839hfp83iybxll"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-nix" ,rust-nix-0.18)
+       (("rust-nix" ,rust-nix-0.22)
         ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-smallvec" ,rust-smallvec-1))))
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-wayland-sys" ,rust-wayland-sys-0.29))))
     (inputs
-     (list rust-nix-0.18 rust-once-cell-1 rust-smallvec-1
-           rust-wayland-sys-0.28))
+     (list rust-nix-0.22 rust-once-cell-1 rust-smallvec-1
+           rust-wayland-sys-0.29))
     (home-page "https://github.com/smithay/wayland-rs")
     (synopsis "Types and structures used by wayland-client and wayland-server")
     (description
@@ -2514,6 +2682,28 @@ the wayland protocol, client side.")
 and wayland-server.")
     (license license:expat)))
 
+(define-public rust-wayland-commons-0.28
+  (package
+    (inherit rust-wayland-commons-0.29)
+    (name "rust-wayland-commons")
+    (version "0.28.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-commons" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0mid1sgy3bmiywnrhsr31b8w6zvk1ll2ci2as15ddv8pczvm0128"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nix" ,rust-nix-0.18)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (inputs
+     (list rust-nix-0.18 rust-once-cell-1 rust-smallvec-1
+           rust-wayland-sys-0.28))))
+
 (define-public rust-wayland-commons-0.23
   (package
     (inherit rust-wayland-commons-0.28)
@@ -2554,24 +2744,24 @@ and wayland-server.")
        (("rust-nix" ,rust-nix-0.14)
         ("rust-wayland-sys" ,rust-wayland-sys-0.21))))))
 
-(define-public rust-wayland-cursor-0.28
+(define-public rust-wayland-cursor-0.29
   (package
     (name "rust-wayland-cursor")
-    (version "0.28.3")
+    (version "0.29.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "wayland-cursor" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0pvf96a9hg7b40vyvamcg491sa0006fr9bzf1xkaf8q22qn15syn"))))
+        (base32 "1gd6aswkrdz556n54pjpd4rchw7jkgcx6hnrhgy62y2y7pqmh9y5"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-nix" ,rust-nix-0.18)
+       (("rust-nix" ,rust-nix-0.22)
         ("rust-xcursor" ,rust-xcursor-0.3))))
     (inputs
-     (list rust-nix-0.18 rust-wayland-client-0.28 rust-xcursor-0.3))
+     (list rust-nix-0.22 rust-wayland-client-0.29 rust-xcursor-0.3))
     (home-page "https://github.com/smithay/wayland-rs")
     (synopsis "Bindings to libwayland-cursor")
     (description
@@ -2580,20 +2770,40 @@ and load them into WlBuffers as well as obtain the necessary metadata to
 properly display animated cursors.")
     (license license:expat)))
 
-(define-public rust-wayland-egl-0.28
+(define-public rust-wayland-cursor-0.28
   (package
-    (name "rust-wayland-egl")
+    (inherit rust-wayland-cursor-0.29)
+    (name "rust-wayland-cursor")
     (version "0.28.3")
     (source
      (origin
        (method url-fetch)
+       (uri (crate-uri "wayland-cursor" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0pvf96a9hg7b40vyvamcg491sa0006fr9bzf1xkaf8q22qn15syn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nix" ,rust-nix-0.18)
+        ("rust-xcursor" ,rust-xcursor-0.3))))
+    (inputs
+     (list rust-nix-0.18 rust-wayland-client-0.28 rust-xcursor-0.3))))
+
+(define-public rust-wayland-egl-0.29
+  (package
+    (name "rust-wayland-egl")
+    (version "0.29.4")
+    (source
+     (origin
+       (method url-fetch)
        (uri (crate-uri "wayland-egl" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1xd7iap0x4sidmy9dv02cdnxjhnbk9li7r7f39x9cg0i8xs50ly6"))))
+        (base32 "0flslbp8q4nv3hcw941vapn3jh6y7glqaqv63h1mjaqnxrlisa43"))))
     (build-system cargo-build-system)
     (inputs
-     (list rust-wayland-client-0.28 rust-wayland-sys-0.28))
+     (list rust-wayland-client-0.29 rust-wayland-sys-0.29))
     ;; For the PKG_CONFIG_PATH environment variable.
     (native-inputs
      (list pkg-config))
@@ -2606,25 +2816,43 @@ WlSurface, which can then play the role of the base surface for
 initializing an OpenGL or Vulkan context.")
     (license license:expat)))
 
-(define-public rust-wayland-protocols-0.28
+(define-public rust-wayland-egl-0.28
   (package
-    (name "rust-wayland-protocols")
+    (inherit rust-wayland-egl-0.29)
+    (name "rust-wayland-egl")
     (version "0.28.3")
     (source
      (origin
        (method url-fetch)
+       (uri (crate-uri "wayland-egl" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1xd7iap0x4sidmy9dv02cdnxjhnbk9li7r7f39x9cg0i8xs50ly6"))))
+    (build-system cargo-build-system)
+    (inputs
+     (list rust-wayland-client-0.28 rust-wayland-sys-0.28))
+    (native-inputs
+     (list pkg-config))))
+
+(define-public rust-wayland-protocols-0.29
+  (package
+    (name "rust-wayland-protocols")
+    (version "0.29.4")
+    (source
+     (origin
+       (method url-fetch)
        (uri (crate-uri "wayland-protocols" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0c0sw13qssrvf3jgygwqpiimpaagz3haxn9jridd4k85sfs856ii"))))
+        (base32 "0hap8vky2fwsq05c98c8xs00gb9m5kxp8kq3zr0jwh036gi7l530"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags-1))))
+       (("rust-bitflags" ,rust-bitflags-1.2))))
     (inputs
-     (list rust-bitflags-1 rust-wayland-client-0.28
-           rust-wayland-commons-0.28 rust-wayland-scanner-0.28
-           rust-wayland-server-0.28))
+     (list rust-bitflags-1.2 rust-wayland-client-0.29
+           rust-wayland-commons-0.29 rust-wayland-scanner-0.29
+           rust-wayland-server-0.29))
     (home-page "https://github.com/smithay/wayland-rs")
     (synopsis "Generated API for the officials Wayland protocol extensions")
     (description
@@ -2632,6 +2860,27 @@ initializing an OpenGL or Vulkan context.")
 extensions.")
     (license license:expat)))
 
+(define-public rust-wayland-protocols-0.28
+  (package
+    (inherit rust-wayland-protocols-0.29)
+    (name "rust-wayland-protocols")
+    (version "0.28.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-protocols" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0c0sw13qssrvf3jgygwqpiimpaagz3haxn9jridd4k85sfs856ii"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1))))
+    (inputs
+     (list rust-bitflags-1 rust-wayland-client-0.28
+           rust-wayland-commons-0.28 rust-wayland-scanner-0.28
+           rust-wayland-server-0.28))))
+
 (define-public rust-wayland-protocols-0.23
   (package
     (inherit rust-wayland-protocols-0.28)
@@ -2679,17 +2928,17 @@ extensions.")
         ("rust-wayland-sys" ,rust-wayland-sys-0.21)
         ("rust-wayland-scanner" ,rust-wayland-scanner-0.21))))))
 
-(define-public rust-wayland-scanner-0.28
+(define-public rust-wayland-scanner-0.29
   (package
     (name "rust-wayland-scanner")
-    (version "0.28.3")
+    (version "0.29.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "wayland-scanner" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0g8ky63qk27in7zajycj3fyydsxlj19hanfcvr8d7z5kcxbvl43h"))))
+        (base32 "1q7r764z8k922xf51fj56b1xm29ffi9ap8jnf4c478gp8cqyv89r"))))
     (build-system cargo-build-system)
     (inputs
      (list rust-proc-macro2-1 rust-quote-1 rust-xml-rs-0.8))
@@ -2702,6 +2951,21 @@ you are working on custom Wayland protocol extensions.  Look at the
 wayland-client crate for usable bindings.")
     (license license:expat)))
 
+(define-public rust-wayland-scanner-0.28
+  (package
+    (inherit rust-wayland-scanner-0.29)
+    (name "rust-wayland-scanner")
+    (version "0.28.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-scanner" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0g8ky63qk27in7zajycj3fyydsxlj19hanfcvr8d7z5kcxbvl43h"))))
+    (inputs
+     (list rust-proc-macro2-1 rust-quote-1 rust-xml-rs-0.8))))
+
 (define-public rust-wayland-scanner-0.23
   (package
     (inherit rust-wayland-scanner-0.28)
@@ -2738,17 +3002,17 @@ wayland-client crate for usable bindings.")
         (base32
          "17mp49v7w0p0x5ry628lj2llljnwkr9aj9g4bqqhfibid32jhf5z"))))))
 
-(define-public rust-wayland-server-0.28
+(define-public rust-wayland-server-0.29
   (package
     (name "rust-wayland-server")
-    (version "0.28.3")
+    (version "0.29.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "wayland-server" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "09jfdjfqhjfcpiz4csgh60ymfkmz1cl3jmxyzq9hzcp0kyyxix93"))))
+        (base32 "1wj8gf28dbjwb824i29wf3wr5r6wp6ssknjm9b5dnb1fah47mk66"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -2756,7 +3020,7 @@ wayland-client crate for usable bindings.")
         ("rust-downcast-rs" ,rust-downcast-rs-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-nix" ,rust-nix-0.18)
+        ("rust-nix" ,rust-nix-0.22)
         ("rust-parking-lot" ,rust-parking-lot-0.11)
         ("rust-scoped-tls" ,rust-scoped-tls-1))))
     (inputs
@@ -2764,12 +3028,12 @@ wayland-client crate for usable bindings.")
            rust-downcast-rs-1
            rust-lazy-static-1
            rust-libc-0.2
-           rust-nix-0.18
+           rust-nix-0.22
            rust-parking-lot-0.11
            rust-scoped-tls-1
-           rust-wayland-commons-0.28
-           rust-wayland-scanner-0.28
-           rust-wayland-sys-0.28))
+           rust-wayland-commons-0.29
+           rust-wayland-scanner-0.29
+           rust-wayland-sys-0.29))
     (home-page "https://github.com/smithay/wayland-rs")
     (synopsis
      "Bindings to the standard C implementation of the wayland protocol")
@@ -2778,6 +3042,39 @@ wayland-client crate for usable bindings.")
 the wayland protocol, server side.")
     (license license:expat)))
 
+(define-public rust-wayland-server-0.28
+  (package
+    (inherit rust-wayland-server-0.29)
+    (name "rust-wayland-server")
+    (version "0.28.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-server" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "09jfdjfqhjfcpiz4csgh60ymfkmz1cl3jmxyzq9hzcp0kyyxix93"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-downcast-rs" ,rust-downcast-rs-1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-nix" ,rust-nix-0.18)
+        ("rust-parking-lot" ,rust-parking-lot-0.11)
+        ("rust-scoped-tls" ,rust-scoped-tls-1))))
+    (inputs
+     (list rust-bitflags-1
+           rust-downcast-rs-1
+           rust-lazy-static-1
+           rust-libc-0.2
+           rust-nix-0.18
+           rust-parking-lot-0.11
+           rust-scoped-tls-1
+           rust-wayland-commons-0.28
+           rust-wayland-scanner-0.28
+           rust-wayland-sys-0.28))))
+
 (define-public rust-wayland-server-0.23
   (package
     (inherit rust-wayland-server-0.28)
@@ -2832,35 +3129,36 @@ the wayland protocol, server side.")
         ("rust-wayland-sys" ,rust-wayland-sys-0.21)
         ("rust-wayland-scanner" ,rust-wayland-scanner-0.21))))))
 
-(define-public rust-wayland-sys-0.28
+(define-public rust-wayland-sys-0.29
   (package
     (name "rust-wayland-sys")
-    (version "0.28.3")
+    (version "0.29.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "wayland-sys" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "16f03jsy7q6p2wpaazc4w4kycyyk0fz7lacpdbcizl9m1i7874v7"))))
+        (base32 "1m2jwk5q36jidwbdmdicmi27r9dzi4wanzg3i28nfxc9kbvisd6r"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-dlib" ,rust-dlib-0.4)
+       (("rust-dlib" ,rust-dlib-0.5)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
+        ("rust-memoffset" ,rust-memoffset-0.6)
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-libraries
            (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libwayland (assoc-ref inputs "wayland")))
+             (let ((libwayland (dirname (search-input-file
+                                         inputs "lib/libwayland-client.so"))))
                (substitute* (find-files "src" "\\.rs$")
                  (("libwayland.*\\.so" shared-lib)
-                  (string-append libwayland "/lib/" shared-lib)))
-               #t))))))
+                  (string-append libwayland "/" shared-lib)))))))))
     (inputs
-     (list rust-dlib-0.4 rust-lazy-static-1 rust-libc-0.2
+     (list rust-dlib-0.5 rust-lazy-static-1 rust-libc-0.2
            rust-pkg-config-0.3))
     (propagated-inputs
      (list wayland))
@@ -2873,6 +3171,40 @@ you are working on custom Wayland protocol extensions.  Look at the
 crate @code{rust-wayland-client} for usable bindings.")
     (license license:expat)))
 
+(define-public rust-wayland-sys-0.28
+  (package
+    (inherit rust-wayland-sys-0.29)
+    (name "rust-wayland-sys")
+    (version "0.28.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wayland-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "16f03jsy7q6p2wpaazc4w4kycyyk0fz7lacpdbcizl9m1i7874v7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-dlib" ,rust-dlib-0.4)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-libraries
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((libwayland (assoc-ref inputs "wayland")))
+               (substitute* (find-files "src" "\\.rs$")
+                 (("libwayland.*\\.so" shared-lib)
+                  (string-append libwayland "/lib/" shared-lib)))
+               #t))))))
+    (inputs
+     (list rust-dlib-0.4 rust-lazy-static-1 rust-libc-0.2
+           rust-pkg-config-0.3))
+    (propagated-inputs
+     (list wayland))))
+
 (define-public rust-wayland-sys-0.23
   (package
     (inherit rust-wayland-sys-0.28)
@@ -2911,17 +3243,17 @@ crate @code{rust-wayland-client} for usable bindings.")
         (base32
          "0a0ndgkg98pvmkv44yya4f7mxzjaxylknqh64bpa05w0azyv02jj"))))))
 
-(define-public rust-winit-0.24
+(define-public rust-winit-0.26
   (package
     (name "rust-winit")
-    (version "0.24.0")
+    (version "0.26.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "winit" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "15zmpx5ip6ziqhds7md1s0ri0blhxfa8fg1ylg84pf0frrpxlkns"))))
+        (base32 "0fp7cdh7llbqmm6ga8f6bzk9785jmkbyy1w631hr9faq3n9wqhwv"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -2936,24 +3268,23 @@ crate @code{rust-wayland-client} for usable bindings.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-mio" ,rust-mio-0.6)
-        ("rust-mio-extras" ,rust-mio-extras-2)
-        ("rust-ndk" ,rust-ndk-0.2)
-        ("rust-ndk-glue" ,rust-ndk-glue-0.2)
+        ("rust-mint" ,rust-mint-0.5)
+        ("rust-mio" ,rust-mio-0.8)
+        ("rust-ndk" ,rust-ndk-0.5)
+        ("rust-ndk-glue" ,rust-ndk-glue-0.5)
         ("rust-ndk-sys" ,rust-ndk-sys-0.2)
         ("rust-objc" ,rust-objc-0.2)
         ("rust-parking-lot" ,rust-parking-lot-0.11)
         ("rust-percent-encoding" ,rust-percent-encoding-2)
-        ("rust-raw-window-handle" ,rust-raw-window-handle-0.3)
+        ("rust-raw-window-handle" ,rust-raw-window-handle-0.4)
         ("rust-serde" ,rust-serde-1)
-        ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.12)
-        ("rust-stdweb" ,rust-stdweb-0.4)
+        ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.15)
         ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
         ("rust-web-sys" ,rust-web-sys-0.3)
         ("rust-winapi" ,rust-winapi-0.3)
         ("rust-x11-dl" ,rust-x11-dl-2))))
     (inputs
-     (list rust-wayland-client-0.28))
+     (list rust-wayland-client-0.29 rust-wayland-protocols-0.29))
     (home-page "https://github.com/rust-windowing/winit")
     (synopsis "Window creation library")
     (description
@@ -2967,6 +3298,50 @@ Consequently, in order to show something on the window you need to use
 the platform-specific getters provided by winit, or another library.")
     (license license:asl2.0)))
 
+(define-public rust-winit-0.24
+  (package
+    (inherit rust-winit-0.26)
+    (name "rust-winit")
+    (version "0.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "winit" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "15zmpx5ip6ziqhds7md1s0ri0blhxfa8fg1ylg84pf0frrpxlkns"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cocoa" ,rust-cocoa-0.24)
+        ("rust-core-foundation" ,rust-core-foundation-0.9)
+        ("rust-core-graphics" ,rust-core-graphics-0.22)
+        ("rust-core-video-sys" ,rust-core-video-sys-0.1)
+        ("rust-dispatch" ,rust-dispatch-0.2)
+        ("rust-instant" ,rust-instant-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-mio-extras" ,rust-mio-extras-2)
+        ("rust-ndk" ,rust-ndk-0.2)
+        ("rust-ndk-glue" ,rust-ndk-glue-0.2)
+        ("rust-ndk-sys" ,rust-ndk-sys-0.2)
+        ("rust-objc" ,rust-objc-0.2)
+        ("rust-parking-lot" ,rust-parking-lot-0.11)
+        ("rust-percent-encoding" ,rust-percent-encoding-2)
+        ("rust-raw-window-handle" ,rust-raw-window-handle-0.3)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.12)
+        ("rust-stdweb" ,rust-stdweb-0.4)
+        ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
+        ("rust-web-sys" ,rust-web-sys-0.3)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-x11-dl" ,rust-x11-dl-2))))
+    (inputs
+     (list rust-wayland-client-0.28))))
+
 (define-public rust-winit-0.20
   (package
     (inherit rust-winit-0.24)
diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index e392220a01..316e427522 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -168,8 +168,40 @@
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-cairo-rs-0.15
+  (package
+    (name "rust-cairo-rs")
+    (version "0.15.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cairo-rs" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1g396fdz8crf74dmmjarcsdbsm8qgxy3a5x9kw6m2d9xn28y6vn7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.15)
+        ("rust-freetype" ,rust-freetype-0.7)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-thiserror" ,rust-thiserror-1))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list cairo))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Cairo library")
+    (description "Rust bindings for the Cairo library")
+    (license license:expat)))
+
 (define-public rust-cairo-rs-0.14
   (package
+    (inherit rust-cairo-rs-0.15)
     (name "rust-cairo-rs")
     (version "0.14.9")
     (source
@@ -191,13 +223,7 @@
         ("rust-libc" ,rust-libc-0.2)
         ("rust-thiserror" ,rust-thiserror-1))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3))))
-    (inputs
-     (list cairo))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the Cairo library")
-    (description "Rust bindings for the Cairo library")
-    (license license:expat)))
+       (("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-cairo-rs-0.9
   (package
@@ -277,8 +303,37 @@
        #:cargo-development-inputs
        (("rust-tempfile" ,rust-tempfile-3))))))
 
+(define-public rust-cairo-sys-rs-0.15
+  (package
+    (name "rust-cairo-sys-rs")
+    (version "0.15.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cairo-sys-rs" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1j6k4pps3dv6g0vlpmxc2xyk0s40vj2wpzi55lbwjspmpqlx8m9w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-6)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-x11" ,rust-x11-2))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list cairo))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libcairo")
+    (description "This package provides FFI bindings to libcairo.")
+    (license license:expat)))
+
 (define-public rust-cairo-sys-rs-0.14
   (package
+    (inherit rust-cairo-sys-rs-0.15)
     (name "rust-cairo-sys-rs")
     (version "0.14.9")
     (source
@@ -288,7 +343,6 @@
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "0w3md4xk87ign30wb3rqfmmj0q6pvg5arbm35flgsd08jxvbhj5l"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build?
        #t
@@ -298,12 +352,7 @@
         ("rust-system-deps" ,rust-system-deps-3)
         ("rust-winapi" ,rust-winapi-0.3)
         ("rust-x11" ,rust-x11-2))))
-    (inputs
-     (list cairo))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libcairo")
-    (description "This package provides FFI bindings to libcairo.")
-    (license license:expat)))
+    (native-inputs '())))
 
 (define-public rust-cairo-sys-rs-0.10
   (package
@@ -440,8 +489,41 @@
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-gdk-pixbuf-0.15
+  (package
+    (name "rust-gdk-pixbuf")
+    (version "0.15.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gdk-pixbuf" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "16k1z21r76m620z61kfmgid1n6s8dnxpa4zlrppcr6dhr2fdsf5d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; FIXME: error[E0277]: `Errors` doesn't implement `std::fmt::Display`
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.15)
+        ("rust-gio" ,rust-gio-0.15)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list gdk-pixbuf))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GdkPixbuf library")
+    (description "Rust bindings for the GdkPixbuf library")
+    (license license:expat)))
+
 (define-public rust-gdk-pixbuf-0.14
   (package
+    (inherit rust-gdk-pixbuf-0.15)
     (name "rust-gdk-pixbuf")
     (version "0.14.0")
     (source
@@ -461,13 +543,7 @@
         ("rust-glib" ,rust-glib-0.14)
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
-       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
-    (inputs
-     (list gdk-pixbuf))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the GdkPixbuf library")
-    (description "Rust bindings for the GdkPixbuf library")
-    (license license:expat)))
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
 (define-public rust-gdk-pixbuf-0.9
   (package
@@ -549,8 +625,42 @@
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-gdk-pixbuf-sys-0.15
+  (package
+    (name "rust-gdk-pixbuf-sys")
+    (version "0.15.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gdk-pixbuf-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "19q2qjrzmmgc7bbs59sk6k0sv3xhpmnk9a2h0cajfr95g19jy2ql"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;#:skip-build?
+       ;#t
+       #:cargo-inputs
+       (("rust-gio-sys" ,rust-gio-sys-0.15)
+        ("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-6))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list gdk-pixbuf))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgdk_pixbuf-2.0")
+    (description "This package provides FFI bindings to @code{libgdk_pixbuf-2.0}.")
+    (license license:expat)))
+
 (define-public rust-gdk-pixbuf-sys-0.14
   (package
+    (inherit rust-gdk-pixbuf-sys-0.15)
     (name "rust-gdk-pixbuf-sys")
     (version "0.14.0")
     (source
@@ -572,13 +682,7 @@
         ("rust-system-deps" ,rust-system-deps-3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3))))
-    (inputs
-     (list gdk-pixbuf))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libgdk_pixbuf-2.0")
-    (description "This package provides FFI bindings to @code{libgdk_pixbuf-2.0}.")
-    (license license:expat)))
+        ("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-gdk-pixbuf-sys-0.10
   (package
@@ -719,8 +823,48 @@
        (("rust-shell-words" ,rust-shell-words-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))))
 
+(define-public rust-gio-0.15
+  (package
+    (name "rust-gio")
+    (version "0.15.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gio" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0fr8qiqjf9yzl8867kgqdsxpkcx2jrns3xwmlf0jfiid668brzb8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; FIXME: error[E0277]: `Errors` doesn't implement `std::fmt::Display`
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-io" ,rust-futures-io-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-gio-sys" ,rust-gio-sys-0.15)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-thiserror" ,rust-thiserror-1))
+       #:cargo-development-inputs
+       (("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-gir-format-check" ,rust-gir-format-check-0.1)
+        ("rust-serial-test" ,rust-serial-test-0.6))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list glib))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Gio library")
+    (description "Rust bindings for the Gio library")
+    (license license:expat)))
+
 (define-public rust-gio-0.14
   (package
+    (inherit rust-gio-0.15)
     (name "rust-gio")
     (version "0.14.8")
     (source
@@ -746,13 +890,7 @@
         ("rust-thiserror" ,rust-thiserror-1))
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1)
-        ("rust-serial-test" ,rust-serial-test-0.4))))
-    (inputs
-     (list glib))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the Gio library")
-    (description "Rust bindings for the Gio library")
-    (license license:expat)))
+        ("rust-serial-test" ,rust-serial-test-0.4))))))
 
 (define-public rust-gio-0.9
   (package
@@ -848,8 +986,51 @@
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-gio-sys-0.15
+  (package
+    (name "rust-gio-sys")
+    (version "0.15.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gio-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "13fgmc2xdzg9qk9l3nlp1bilwn6466mrqbiq4fhc9qkia93pl59j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; FIXME: some GLib macros are not found
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-6)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-1)
+        ("rust-tempfile" ,rust-tempfile-3))
+       #:phases (modify-phases %standard-phases
+                  (add-before 'check 'extend-include-path
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((gio-headers (search-input-directory
+                                          inputs "include/gio-unix-2.0")))
+                        ;; Tests rely on these headers.
+                        (setenv "C_INCLUDE_PATH"
+                                (string-append gio-headers ":"
+                                               (getenv "C_INCLUDE_PATH")))))))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list glib))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgio-2.0")
+    (description "This package provides FFI bindings to libgio-2.0.")
+    (license license:expat)))
+
 (define-public rust-gio-sys-0.14
   (package
+    (inherit rust-gio-sys-0.15)
     (name "rust-gio-sys")
     (version "0.14.0")
     (source
@@ -868,13 +1049,7 @@
         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-system-deps" ,rust-system-deps-3)
-        ("rust-winapi" ,rust-winapi-0.3))))
-    (inputs
-     (list glib))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libgio-2.0")
-    (description "This package provides FFI bindings to libgio-2.0.")
-    (license license:expat)))
+        ("rust-winapi" ,rust-winapi-0.3))))))
 
 (define-public rust-gio-sys-0.10
   (package
@@ -939,8 +1114,51 @@
     (description "File format checker in Rust.")
     (license license:expat)))
 
+(define-public rust-glib-0.15
+  (package
+    (name "rust-glib")
+    (version "0.15.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "glib" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0pahikbwxr3vafdrr5l2hnlhkf9xi4illryan0l59ayhp9pk1c7d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; FIXME: error[E0277]: `Errors` doesn't implement `std::fmt::Display`
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-executor" ,rust-futures-executor-0.3)
+        ("rust-futures-task" ,rust-futures-task-0.3)
+        ("rust-glib-macros" ,rust-glib-macros-0.15)
+        ("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-thiserror" ,rust-thiserror-1))
+       #:cargo-development-inputs
+       (("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-gir-format-check" ,rust-gir-format-check-0.1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list glib))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GLib library")
+    (description "Rust bindings for the GLib library")
+    (license license:expat)))
+
 (define-public rust-glib-0.14
   (package
+    (inherit rust-glib-0.15)
     (name "rust-glib")
     (version "0.14.8")
     (source
@@ -966,13 +1184,7 @@
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
         ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-smallvec" ,rust-smallvec-1))))
-    (inputs
-     (list glib))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the GLib library")
-    (description "Rust bindings for the GLib library")
-    (license license:expat)))
+        ("rust-smallvec" ,rust-smallvec-1))))))
 
 (define-public rust-glib-0.10
   (package
@@ -1057,8 +1269,37 @@
        #:cargo-development-inputs
        (("rust-tempfile" ,rust-tempfile-3))))))
 
+(define-public rust-glib-macros-0.15
+  (package
+    (name "rust-glib-macros")
+    (version "0.15.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "glib-macros" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0r3cr0c79rs91z0sps089nsf8ppnm8agp48qwwqlkc32lqqq39i5"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; XXX: Circular dependency on rust-glib??
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-heck" ,rust-heck-0.4)
+        ("rust-proc-macro-crate" ,rust-proc-macro-crate-1)
+        ("rust-proc-macro-error" ,rust-proc-macro-error-1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GLib library, proc macros crate")
+    (description "Rust bindings for the GLib library, proc macros crate.")
+    (license license:expat)))
+
 (define-public rust-glib-macros-0.14
   (package
+    (inherit rust-glib-macros-0.15)
     (name "rust-glib-macros")
     (version "0.14.1")
     (source
@@ -1079,11 +1320,7 @@
         ("rust-proc-macro-error" ,rust-proc-macro-error-1)
         ("rust-proc-macro2" ,rust-proc-macro2-1)
         ("rust-quote" ,rust-quote-1)
-        ("rust-syn" ,rust-syn-1))))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the GLib library, proc macros crate")
-    (description "Rust bindings for the GLib library, proc macros crate.")
-    (license license:expat)))
+        ("rust-syn" ,rust-syn-1))))))
 
 (define-public rust-glib-macros-0.10
   (package
@@ -1109,8 +1346,40 @@
         ("rust-quote" ,rust-quote-1)
         ("rust-syn" ,rust-syn-1))))))
 
+(define-public rust-glib-sys-0.15
+  (package
+    (name "rust-glib-sys")
+    (version "0.15.10")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "glib-sys" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1m5sqm69fdk8vaw6hggyizhs1r1vivx73splrdvczsb5iqpijjzg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; XXX: Tests are sensitive to the version of glib, even though
+       ;; the library supports a wide range.  Skip for now.
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-6))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list glib))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libglib-2.0")
+    (description "This package provides FFI bindings to libglib-2.0.")
+    (license license:expat)))
+
 (define-public rust-glib-sys-0.14
   (package
+    (inherit rust-glib-sys-0.15)
     (name "rust-glib-sys")
     (version "0.14.0")
     (source
@@ -1120,7 +1389,6 @@
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "1bjlymn3fw4g8slij6iiggaipknf9072mr2qm3i4a91199an078w"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build?
        #t
@@ -1130,12 +1398,7 @@
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))
-    (inputs
-     (list glib))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libglib-2.0")
-    (description "This package provides FFI bindings to libglib-2.0.")
-    (license license:expat)))
+    (native-inputs '())))
 
 (define-public rust-glib-sys-0.10
   (package
@@ -1181,28 +1444,32 @@
        (("rust-shell-words" ,rust-shell-words-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))))
 
-(define-public rust-gobject-sys-0.14
+(define-public rust-gobject-sys-0.15
   (package
     (name "rust-gobject-sys")
-    (version "0.14.0")
+    (version "0.15.10")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "gobject-sys" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1xf3jiwzrjingq8jr15bjkbv6m5dypzp67cjnm5f7njrjzicm4ma"))))
+        (base32 "02hyilvpi4hw4gr03z2plsbf1zicsfs5l0xxadqx3v3b4i2cwmqd"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build?
-       #t
+     `(;; FIXME: Constant value mismatch for G_TYPE_FUNDAMENTAL_MAX
+       ;; Rust: "255"
+       ;; C:    "1020"
+       #:tests? #f
        #:cargo-inputs
-       (("rust-glib-sys" ,rust-glib-sys-0.14)
+       (("rust-glib-sys" ,rust-glib-sys-0.15)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-system-deps" ,rust-system-deps-3))
+        ("rust-system-deps" ,rust-system-deps-6))
        #:cargo-development-inputs
-       (("rust-shell-words" ,rust-shell-words-0.1)
+       (("rust-shell-words" ,rust-shell-words-1)
         ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
     (inputs
      (list glib))
     (home-page "https://gtk-rs.org/")
@@ -1210,6 +1477,28 @@
     (description "This package provides FFI bindings to libgobject-2.0.")
     (license license:expat)))
 
+(define-public rust-gobject-sys-0.14
+  (package
+    (inherit rust-gobject-sys-0.15)
+    (version "0.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gobject-sys" version))
+       (file-name (string-append "rust-gobject-sys-" version ".tar.gz"))
+       (sha256
+        (base32 "1xf3jiwzrjingq8jr15bjkbv6m5dypzp67cjnm5f7njrjzicm4ma"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.14)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-3))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-0.1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs '())))
+
 (define-public rust-gobject-sys-0.10
   (package
     (inherit rust-gobject-sys-0.14)
@@ -1482,29 +1771,31 @@
 library.")
     (license license:expat)))
 
-(define-public rust-pango-0.14
+(define-public rust-pango-0.15
   (package
     (name "rust-pango")
-    (version "0.14.8")
+    (version "0.15.10")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "pango" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "10c5q8wl9gkjh323whq6pg9yfvr2vmz00f98z1d77jp506cdavsl"))))
+        (base32 "0ksf85fqkw4y5pf21p84g5xn4fnqn21cbrmx2d9yx6k591ah9r12"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build?
-       #t
+     `(;; FIXME: error[E0277]: `Errors` doesn't implement `std::fmt::Display`
+       #:tests? #f
        #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-glib" ,rust-glib-0.14)
+        ("rust-glib" ,rust-glib-0.15)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-pango-sys" ,rust-pango-sys-0.14))
+        ("rust-pango-sys" ,rust-pango-sys-0.15))
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (native-inputs
+     (list pkg-config))
     (inputs
      (list pango))
     (home-page "https://gtk-rs.org/")
@@ -1512,6 +1803,31 @@ library.")
     (description "Rust bindings for the Pango library")
     (license license:expat)))
 
+(define-public rust-pango-0.14
+  (package
+    (inherit rust-pango-0.15)
+    (name "rust-pango")
+    (version "0.14.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "pango" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "10c5q8wl9gkjh323whq6pg9yfvr2vmz00f98z1d77jp506cdavsl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build?
+       #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-glib" ,rust-glib-0.14)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-pango-sys" ,rust-pango-sys-0.14))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
+
 (define-public rust-pango-0.9
   (package
     (inherit rust-pango-0.14)
@@ -1592,8 +1908,39 @@ library.")
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-pango-sys-0.15
+  (package
+    (name "rust-pango-sys")
+    (version "0.15.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "pango-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1an3c931kbkr08n9d9d1dapsq3n26zs0xn4ixn11jrp4rn0h186j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-system-deps" ,rust-system-deps-6))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list pango))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libpango-1.0")
+    (description "This package provides FFI bindings to @code{libpango-1.0}.")
+    (license license:expat)))
+
 (define-public rust-pango-sys-0.14
   (package
+    (inherit rust-pango-sys-0.15)
     (name "rust-pango-sys")
     (version "0.14.0")
     (source
@@ -1603,7 +1950,6 @@ library.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "1zj236n9kjldf47wwlxvhshwm5zhg589a0fml5mm8qg7lnf0jrr3"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build?
        #t
@@ -1611,13 +1957,7 @@ library.")
        (("rust-glib-sys" ,rust-glib-sys-0.14)
         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-system-deps" ,rust-system-deps-3))))
-    (inputs
-     (list pango))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libpango-1.0")
-    (description "This package provides FFI bindings to @code{libpango-1.0}.")
-    (license license:expat)))
+        ("rust-system-deps" ,rust-system-deps-3))))))
 
 (define-public rust-pango-sys-0.10
   (package
@@ -1662,8 +2002,44 @@ library.")
        (("rust-shell-words" ,rust-shell-words-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))))
 
+(define-public rust-pangocairo-0.15
+  (package
+    (name "rust-pangocairo")
+    (version "0.15.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pangocairo" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rjk0clrjxah4kc0kybn7l7bxa5m5kpxkihxc2i7a6hx3xfa8xkq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; FIXME: error[E0277]: `Errors` doesn't implement `std::fmt::Display`
+       #:tests? #f
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.15)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango" ,rust-pango-0.15)
+        ("rust-pangocairo-sys" ,rust-pangocairo-sys-0.15))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list pango))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the PangoCairo library")
+    (description
+     "Rust bindings for the PangoCairo library.")
+    (license license:expat)))
+
 (define-public rust-pangocairo-0.9
   (package
+    (inherit rust-pangocairo-0.15)
     (name "rust-pangocairo")
     (version "0.9.0")
     (source
@@ -1690,14 +2066,7 @@ library.")
         ("rust-pangocairo-sys" ,rust-pangocairo-sys-0.10)
         ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
        #:cargo-development-inputs
-       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
-    (inputs
-     (list gtk+))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "Rust bindings for the PangoCairo library")
-    (description
-     "Rust bindings for the PangoCairo library.")
-    (license license:expat)))
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
 (define-public rust-pangocairo-0.8
   (package
@@ -1729,8 +2098,43 @@ library.")
        #:cargo-development-inputs
        (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
 
+(define-public rust-pangocairo-sys-0.15
+  (package
+    (name "rust-pangocairo-sys")
+    (version "0.15.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pangocairo-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "154llaawy60zh8fkw2yq0r31ynpmqlsr7brryzaq2v4ijijp9kvq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.15)
+        ("rust-glib-sys" ,rust-glib-sys-0.15)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango-sys" ,rust-pango-sys-0.15)
+        ("rust-system-deps" ,rust-system-deps-6))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     ;; XXX: Should these be propagated from their respective crates?
+     (list cairo glib pango))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgtk-3")
+    (description "This package provides FFI bindings to libgtk-3.")
+    (license license:expat)))
+
 (define-public rust-pangocairo-sys-0.10
   (package
+    (inherit rust-pangocairo-sys-0.15)
     (name "rust-pangocairo-sys")
     (version "0.10.1")
     (source
@@ -1752,13 +2156,7 @@ library.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3))))
-    (inputs
-     (list gtk+))
-    (home-page "https://gtk-rs.org/")
-    (synopsis "FFI bindings to libgtk-3")
-    (description "This package provides FFI bindings to libgtk-3.")
-    (license license:expat)))
+        ("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-soup-sys-0.10
   (package
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 16ac36c9f5..2e71a89e6b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Jacob Hrbek <kreyren@rixotstudio.cz>
-;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2021, 2022 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Evgenii Lepikhin <e.lepikhin@corp.mail.ru>
@@ -1815,23 +1815,24 @@ Rust, using gimli.")
         ("rust-memmap" ,rust-memmap-0.7)
         ("rust-rustc-test" ,rust-rustc-test-0.3))))))
 
-(define-public rust-adler-0.2
+(define-public rust-adler-1
   (package
     (name "rust-adler")
-    (version "0.2.3")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "adler" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0zpdsrfq5bd34941gmrlamnzjfbsx0x586afb7b0jqhr8g1lwapf"))))
+        (base32 "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
-        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1))))
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3))))
     (home-page "https://github.com/jonas-schievink/adler")
     (synopsis "Implementation of the Adler-32 checksum")
     (description
@@ -1842,10 +1843,24 @@ checksum, used in the zlib compression format.")
            license:asl2.0
            (license:non-copyleft "https://spdx.org/licenses/0BSD.html")))))
 
+(define-public rust-adler-0.2
+  (package
+    (inherit rust-adler-1)
+    (name "rust-adler")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "adler" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0zpdsrfq5bd34941gmrlamnzjfbsx0x586afb7b0jqhr8g1lwapf"))))
+    (build-system cargo-build-system)))
+
 (define-public rust-adler32-1
   (package
     (name "rust-adler32")
-    (version "1.1.0")
+    (version "1.2.0")
     (source
       (origin
         (method url-fetch)
@@ -1854,15 +1869,19 @@ checksum, used in the zlib compression format.")
           (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0bgks405vz823bphgwhj4l9h6vpfh900s0phfk4qqijyh9xhfysn"))))
+          "0d7jq7jsjyhsgbhnfq5fvrlh9j0i9g1fqrl2735ibv5f75yjgqda"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
         ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1))
        #:cargo-development-inputs
-       (("rust-bencher" ,rust-bencher-0.1)
-        ("rust-rand" ,rust-rand-0.4))))
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-getrandom" ,rust-getrandom-0.1)
+        ("rust-humansize" ,rust-humansize-1)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
+        ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3))))
     (home-page "https://github.com/remram44/adler32-rs")
     (synopsis "Implementation of the Adler32 rolling hash algorithm")
     (description
@@ -2747,17 +2766,17 @@ applications.")
     (description "This package provides the glue for the Android JNI.")
     (license license:expat)))
 
-(define-public rust-android-log-sys-0.1
+(define-public rust-android-log-sys-0.2
   (package
     (name "rust-android-log-sys")
-    (version "0.1.2")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "android_log-sys" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0klq7cp4lm74gjf9p12zdjcr159blbicrfvadmaqvfxbi8njw1dq"))))
+        (base32 "0bhhs1cgzp9vzjvkn2q31ppc7w4am5s273hkvl5iac5475kmp5l5"))))
     (arguments `(#:skip-build? #true))  ;XXX: Android only
     (build-system cargo-build-system)
     (home-page "https://github.com/nercury/android_log-sys-rs")
@@ -2765,22 +2784,36 @@ applications.")
     (description "This package provides FFI bindings to Android log Library.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-android-logger-0.8
+(define-public rust-android-log-sys-0.1
+  (package
+    (inherit rust-android-log-sys-0.2)
+    (name "rust-android-log-sys")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "android_log-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0klq7cp4lm74gjf9p12zdjcr159blbicrfvadmaqvfxbi8njw1dq"))))
+    (arguments `(#:skip-build? #true)))) ;XXX: Android only
+
+(define-public rust-android-logger-0.10
   (package
     (name "rust-android-logger")
-    (version "0.8.6")
+    (version "0.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "android_logger" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0kj8i03fqqwxd803hrk27j2399v27ajjj9zxi2nnyml0s4nm9gcc"))))
+        (base32 "0rigzgkaik2y7pvsilpjdy19mdq1kkamw2rdf9fjkvb5hfqhkvfr"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-android-log-sys" ,rust-android-log-sys-0.1)
-        ("rust-env-logger" ,rust-env-logger-0.7)
+       (("rust-android-log-sys" ,rust-android-log-sys-0.2)
+        ("rust-env-logger" ,rust-env-logger-0.8)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4))))
     (home-page "https://github.com/Nercury/android_logger-rs")
@@ -2790,6 +2823,25 @@ applications.")
 it outputs messages to Android's logcat.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-android-logger-0.8
+  (package
+    (inherit rust-android-logger-0.10)
+    (name "rust-android-logger")
+    (version "0.8.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "android_logger" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0kj8i03fqqwxd803hrk27j2399v27ajjj9zxi2nnyml0s4nm9gcc"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-android-log-sys" ,rust-android-log-sys-0.1)
+        ("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-log" ,rust-log-0.4))))))
+
 (define-public rust-ansi-parser-0.6
   (package
     (name "rust-ansi-parser")
@@ -9434,8 +9486,35 @@ spreadsheet file.")
         ("rust-serde" ,rust-serde-1)
         ("rust-zip" ,rust-zip-0.5))))))
 
+(define-public rust-calloop-0.9
+  (package
+    (name "rust-calloop")
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "calloop" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "10mbcsd7fj3cg0a463h3003wycv955cnj4pm2gla2sp5xxhyqbmz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ;XXX fails without stdin, fixed in 0.11
+       #:cargo-inputs
+       (("rust-futures-io" ,rust-futures-io-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-nix" ,rust-nix-0.22))
+       #:cargo-development-inputs
+       (("rust-futures" ,rust-futures-0.3))))
+    (home-page "https://github.com/Smithay/calloop")
+    (synopsis "Callback-based event loop")
+    (description "This package provides a callback-based event loop.")
+    (license license:expat)))
+
 (define-public rust-calloop-0.6
   (package
+    (inherit rust-calloop-0.9)
     (name "rust-calloop")
     (version "0.6.5")
     (source
@@ -9450,11 +9529,7 @@ spreadsheet file.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-log" ,rust-log-0.4)
-        ("rust-nix" ,rust-nix-0.18))))
-    (home-page "https://github.com/Smithay/calloop")
-    (synopsis "Callback-based event loop")
-    (description "This package provides a callback-based event loop.")
-    (license license:expat)))
+        ("rust-nix" ,rust-nix-0.18))))))
 
 (define-public rust-calloop-0.4
   (package
@@ -10162,8 +10237,32 @@ using linear constraints, like ``this button must line up with this text
 box''.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cast-0.3
+  (package
+    (name "rust-cast")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cast" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-quickcheck" ,rust-quickcheck-1))))
+    (home-page "https://github.com/japaric/cast.rs")
+    (synopsis
+     "Ergonomic, checked cast functions for primitive types")
+    (description
+     "Ergonomic, checked cast functions for primitive types.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-cast-0.2
   (package
+    (inherit rust-cast-0.3)
     (name "rust-cast")
     (version "0.2.3")
     (source
@@ -10181,13 +10280,7 @@ box''.")
        #:cargo-inputs
        (("rust-rustc-version" ,rust-rustc-version-0.2))
        #:cargo-development-inputs
-       (("rust-quickcheck" ,rust-quickcheck-0.9))))
-    (home-page "https://github.com/japaric/cast.rs")
-    (synopsis
-     "Ergonomic, checked cast functions for primitive types")
-    (description
-     "Ergonomic, checked cast functions for primitive types.")
-    (license (list license:expat license:asl2.0))))
+       (("rust-quickcheck" ,rust-quickcheck-0.9))))))
 
 (define-public rust-cblas-sys-0.1
   (package
@@ -10361,24 +10454,24 @@ that need to represent UTF-16 data as 8-bit characters.")
 winded @code{#[cfg()]} checks.")
     (license license:expat)))
 
-(define-public rust-cfg-expr-0.8
+(define-public rust-cfg-expr-0.10
   (package
     (name "rust-cfg-expr")
-    (version "0.8.1")
+    (version "0.10.3")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "cfg-expr" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "03lgv8psc2qrr93hxgdfmfwbj1crpzghxd7qh6w2nz0l4qryh4ml"))))
+        (base32 "1nw50j1sl6q96067399r1c6ppwp483q6vvmqdsnv493cv7sarb0a"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-smallvec" ,rust-smallvec-1)
         ("rust-target-lexicon" ,rust-target-lexicon-0.12))
        #:cargo-development-inputs
-       (("rust-difference" ,rust-difference-2))))
+       (("rust-similar-asserts" ,rust-similar-asserts-1))))
     (home-page "https://github.com/EmbarkStudios/cfg-expr")
     (synopsis "Parser and evaluator for Rust @code{cfg()} expressions")
     (description
@@ -10386,6 +10479,26 @@ winded @code{#[cfg()]} checks.")
 expressions.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cfg-expr-0.8
+  (package
+    (inherit rust-cfg-expr-0.10)
+    (name "rust-cfg-expr")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cfg-expr" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "03lgv8psc2qrr93hxgdfmfwbj1crpzghxd7qh6w2nz0l4qryh4ml"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-smallvec" ,rust-smallvec-1)
+        ("rust-target-lexicon" ,rust-target-lexicon-0.12))
+       #:cargo-development-inputs
+       (("rust-difference" ,rust-difference-2))))))
+
 (define-public rust-cfg-expr-0.7
   (package
     (inherit rust-cfg-expr-0.8)
@@ -12227,6 +12340,25 @@ idiomatic wrappers for Mac OS X's CommonCrypto library.")
      "Common path finds the common prefix between a set of paths.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-const-cstr-0.3
+  (package
+    (name "rust-const-cstr")
+    (version "0.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "const-cstr" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "19ij6m8s16d0i7vma535l7w4x8bcanjcxs7c6n7sci86ydghnggd"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/cybergeek94/const-cstr")
+    (synopsis "Create static C-compatible strings from Rust string literals")
+    (description
+     "This crate lets you create static C-compatible strings from Rust string
+literals.")
+    (license (list license:expat license:asl2.0))))
+
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
 (define-public rust-compiler-builtins-0.1
@@ -13880,7 +14012,7 @@ final xor value.  It has many built-in CRC functions.")
 (define-public rust-crc32fast-1
   (package
     (name "rust-crc32fast")
-    (version "1.2.0")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
@@ -13889,15 +14021,14 @@ final xor value.  It has many built-in CRC functions.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1c9dhkvf3brrzzplcijaywxi2w8wv5578i0ryhcm7x8dmzi5s4ms"))))
+         "03c8f29yx293yf43xar946xbls1g60c207m9drf8ilqhr25vsh5m"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if-0.1))
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-1))
        #:cargo-development-inputs
        (("rust-bencher" ,rust-bencher-0.1)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-quickcheck" ,rust-quickcheck-1)
         ("rust-rand" ,rust-rand-0.4))))
     (home-page "https://github.com/srijs/rust-crc32fast")
     (synopsis
@@ -16639,10 +16770,10 @@ the Debug trait manually.")
 thread.")
     (license license:mpl2.0)))
 
-(define-public rust-deflate-0.9
+(define-public rust-deflate-1
   (package
     (name "rust-deflate")
-    (version "0.9.1")
+    (version "1.0.0")
     (source
       (origin
         (method url-fetch)
@@ -16650,21 +16781,42 @@ thread.")
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0w0ww0hrq4bjnihxgbnrri4lj5c8yzg31fyzx36fd9pvvw2vz5az"))))
+          "0bs319wa9wl7pn9j6jrrxg1gaqbak581rkx210cbix0qyljpwvy8"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; not all test files included
        #:cargo-inputs
        (("rust-adler32" ,rust-adler32-1)
-        ("rust-gzip-header" ,rust-gzip-header-0.3))
+        ("rust-gzip-header" ,rust-gzip-header-1))
        #:cargo-development-inputs
-       (("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))
+       (("rust-miniz-oxide" ,rust-miniz-oxide-0.5))))
     (home-page "https://github.com/image-rs/deflate-rs")
     (synopsis "DEFLATE, zlib and gzip encoder written in rust")
     (description "This package provides a DEFLATE, zlib and gzip encoder
 written in rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-deflate-0.9
+  (package
+    (inherit rust-deflate-1)
+    (name "rust-deflate")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "deflate" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0w0ww0hrq4bjnihxgbnrri4lj5c8yzg31fyzx36fd9pvvw2vz5az"))))
+    (arguments
+     `(#:tests? #f      ; not all test files included
+       #:cargo-inputs
+       (("rust-adler32" ,rust-adler32-1)
+        ("rust-gzip-header" ,rust-gzip-header-0.3))
+       #:cargo-development-inputs
+       (("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))))
+
 (define-public rust-deflate-0.8
   (package
     (inherit rust-deflate-0.9)
@@ -18387,25 +18539,25 @@ Central Dispatch.")
 Google's diff-match-patch.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-dlib-0.4
+(define-public rust-dlib-0.5
   (package
     (name "rust-dlib")
-    (version "0.4.2")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "dlib" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0xlsf3lrz9hd7q3ff6lp5mw4kn3nbryn746kd07i93r6wg8ia7xi"))))
+         "1547hy7nrhkrb2i09va244c0h8mr845ccbs2d2mc414c68bpa6xc"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-libloading" ,rust-libloading-0.6))))
+     `(#:tests? #f                      ;FIXME: Several macros are not found.
+       #:cargo-inputs
+       (("rust-libloading" ,rust-libloading-0.7))))
     (inputs
-     (list rust-libloading-0.6))
+     (list rust-libloading-0.7))
     (home-page "https://github.com/vberger/dlib")
     (synopsis "Helper macros for manually loading optional system libraries")
     (description
@@ -18413,6 +18565,26 @@ Google's diff-match-patch.")
 system libraries.")
     (license license:expat)))
 
+(define-public rust-dlib-0.4
+  (package
+    (inherit rust-dlib-0.5)
+    (name "rust-dlib")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "dlib" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xlsf3lrz9hd7q3ff6lp5mw4kn3nbryn746kd07i93r6wg8ia7xi"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libloading" ,rust-libloading-0.6))))
+    (inputs
+     (list rust-libloading-0.6))))
+
 (define-public rust-dlv-list-0.2
   (package
     (name "rust-dlv-list")
@@ -23021,6 +23193,27 @@ macOS API for file changes notifications")
      `(#:skip-build? #t     ; only available on macOS
        #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))))
 
+(define-public rust-fslock-0.2
+  (package
+    (name "rust-fslock")
+    (version "0.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "fslock" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1yrv9j44k3njzpnh8m2jc0gr3hklzyzwfj3gmsdklbi76n4jnh84"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/brunoczim/fslock")
+    (synopsis "Lock file library")
+    (description "This package provides a library to use files as locks.")
+    (license license:expat)))
+
 (define-public rust-fst-0.4
   (package
     (name "rust-fst")
@@ -25357,8 +25550,42 @@ graphics.")
 graphics.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-glium-0.31
+  (package
+    (name "rust-glium")
+    (version "0.31.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "glium" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06cfsq3mgjlq3bnxv7jh5bb5is7040xyvf8cf1x45vnq8fdz1d0a"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #true              ;XXX circular dependencies
+       #:cargo-inputs
+       (("rust-backtrace" ,rust-backtrace-0.3)
+        ("rust-fnv" ,rust-fnv-1)
+        ("rust-glutin" ,rust-glutin-0.28)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-memoffset" ,rust-memoffset-0.6)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-takeable-option" ,rust-takeable-option-0.5))
+       #:cargo-development-inputs
+       (("rust-gl-generator" ,rust-gl-generator-0.14))))
+    (home-page "https://github.com/glium/glium")
+    (synopsis "OpenGL wrapper")
+    (description
+     "Glium is an intermediate layer between OpenGL and your application.  You
+still need to manually handle the graphics pipeline, but without having to use
+OpenGL's old and error-prone API.")
+    (license license:asl2.0)))
+
 (define-public rust-glium-0.25
   (package
+    (inherit rust-glium-0.31)
     (name "rust-glium")
     (version "0.25.1")
     (source
@@ -25370,7 +25597,6 @@ graphics.")
        (sha256
         (base32
          "0mhjly07x10lxg802ppg16wbxddhh4fdnlg10i99qwpfamvqhzbd"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-backtrace" ,rust-backtrace-0.3)
@@ -25385,15 +25611,7 @@ graphics.")
         ("rust-gl-generator" ,rust-gl-generator-0.11)
         ("rust-image" ,rust-image-0.21)
         ("rust-obj" ,rust-obj-0.9)
-        ("rust-rand" ,rust-rand-0.6))))
-    (home-page "https://github.com/glium/glium")
-    (synopsis
-     "OpenGL wrapper")
-    (description
-     "Glium is an intermediate layer between OpenGL and your application.  You
-still need to manually handle the graphics pipeline, but without having to use
-OpenGL's old and error-prone API.")
-    (license license:asl2.0)))
+        ("rust-rand" ,rust-rand-0.6))))))
 
 (define-public rust-glob-0.3
   (package
@@ -25966,19 +26184,18 @@ support.")
         ("rust-quote" ,rust-quote-1)
         ("rust-syn" ,rust-syn-1))))))
 
-(define-public rust-gzip-header-0.3
+(define-public rust-gzip-header-1
   (package
     (name "rust-gzip-header")
-    (version "0.3.0")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "gzip-header" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0fg6vm8sgsm69szwqyz7abfbyziv6pv0jkcailimlamvsfrzwc81"))))
+         "18lm2y96mahkmcd76pzyam2sl3v6lsl9mn8ajri9l0p6j9xm5k4m"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -25990,6 +26207,25 @@ support.")
 of gzip files based on the gzip header implementation in the @code{flate2} crate.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-gzip-header-0.3
+  (package
+    (inherit rust-gzip-header-1)
+    (name "rust-gzip-header")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gzip-header" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fg6vm8sgsm69szwqyz7abfbyziv6pv0jkcailimlamvsfrzwc81"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crc32fast" ,rust-crc32fast-1))))))
+
 (define-public rust-h2-0.3
   (package
     (name "rust-h2")
@@ -29620,14 +29856,14 @@ whether or not a given path points to an executable file.")
 (define-public rust-itertools-0.10
   (package
     (name "rust-itertools")
-    (version "0.10.0")
+    (version "0.10.3")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "itertools" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "06dkghwi1a6ah2103gibxnr2ys762m5x4rp75x0q43imis8p5m9p"))))
+        (base32 "1qy55fqbaisr9qgbn7cvdvqlfqbh1f4ddf99zwan56z7l6gx3ad9"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -30576,10 +30812,10 @@ kernel32.")
      "This package provides a Log macro for log's kv-unstable backend.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-language-tags-0.2
+(define-public rust-language-tags-0.3
   (package
     (name "rust-language-tags")
-    (version "0.2.2")
+    (version "0.3.2")
     (source
       (origin
         (method url-fetch)
@@ -30587,13 +30823,14 @@ kernel32.")
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "16hrjdpa827carq5x4b8zhas24d8kg4s16m6nmmn1kb7cr5qh7d9"))))
+          "124k6w9nx33q4xs8rpa9f7klshrsa0x4f7qngdwq890lpdj5jd6l"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-heapsize" ,rust-heapsize-0.3)
-        ("rust-heapsize-plugin" ,rust-heapsize-plugin-0.1))))
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1)
+        ("rust-serde-json" ,rust-serde-json-1))))
     (home-page "https://github.com/pyfisch/rust-language-tags")
     (synopsis "Language tags for Rust")
     (description
@@ -30604,6 +30841,25 @@ currently supports parsing (fully conformant parser), formatting and comparing
 language tags.")
     (license license:expat)))
 
+(define-public rust-language-tags-0.2
+  (package
+    (inherit rust-language-tags-0.3)
+    (name "rust-language-tags")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "language-tags" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "16hrjdpa827carq5x4b8zhas24d8kg4s16m6nmmn1kb7cr5qh7d9"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-heapsize" ,rust-heapsize-0.3)
+        ("rust-heapsize-plugin" ,rust-heapsize-plugin-0.1))))))
+
 (define-public rust-lab-0.11
   (package
     (name "rust-lab")
@@ -31484,14 +31740,14 @@ library.")
          "0sidr67nsa693mqrqgk2np3bkqni0778yk147xncspy171jdk13g"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-libc" ,rust-libc-0.2)
         ("rust-static-assertions"
          ,rust-static-assertions-1))))
+    (inputs (list rust-cfg-if-1 rust-winapi-0.3))
     (home-page "https://github.com/nagisa/rust_libloading/")
     (synopsis "Safer binding to dynamic library loading utilities")
     (description "This package provides a safer binding to dynamic library
@@ -34168,9 +34424,11 @@ file IO.")
         (base32 "1yfx2v8kmkhr2d4gwk8ghihdwg73vapn3vvp0im06f0kgx8crb2r"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg-1))))
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg-1))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3))))
+    (inputs (list rust-autocfg-1))
     (home-page "https://github.com/Gilnaa/memoffset")
     (synopsis "C-like offset_of functionality for Rust structs")
     (description
@@ -34197,7 +34455,8 @@ for Rust structs.")
        #:cargo-inputs
        (("rust-rustc-version" ,rust-rustc-version-0.2))
        #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3))))))
+       (("rust-doc-comment" ,rust-doc-comment-0.3))))
+    (inputs '())))
 
 (define-public rust-memoffset-0.2
   (package
@@ -34795,26 +35054,25 @@ float parser.")
         (sha256
          (base32 "0xynhr97vyv5n5lls41dl7bfa3ba122lix9mqij1l7yprl6n6r4w"))))))
 
-(define-public rust-miniz-oxide-0.4
+(define-public rust-miniz-oxide-0.5
   (package
     (name "rust-miniz-oxide")
-    (version "0.4.3")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "miniz_oxide" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "17d1xp29v5xgh4vahxld14w1c1hgh38qmxpv7i18wy096gn2cb8g"))))
+        (base32 "1k1wfxb35v129mhqy14yqhrj3wvknafrwygiq7zvi0m5iml7ap3g"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-adler" ,rust-adler-0.2)
-        ("rust-autocfg" ,rust-autocfg-1)
+     `(#:cargo-inputs
+       (("rust-adler" ,rust-adler-1)
         ("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
         ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1)
-        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1))))
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)
+        ("rust-simd-adler32" ,rust-simd-adler32-0.3))))
     (home-page  "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide")
     (synopsis "Pure rust replacement for the miniz DEFLATE/zlib encoder/decoder")
     (description
@@ -34823,6 +35081,26 @@ float parser.")
 streaming API for miniz_oxide.")
     (license (list license:expat license:zlib license:asl2.0))))
 
+(define-public rust-miniz-oxide-0.4
+  (package
+    (inherit rust-miniz-oxide-0.5)
+    (name "rust-miniz-oxide")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "miniz_oxide" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "17d1xp29v5xgh4vahxld14w1c1hgh38qmxpv7i18wy096gn2cb8g"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-adler" ,rust-adler-0.2)
+        ("rust-autocfg" ,rust-autocfg-1)
+        ("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
+        ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1)
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1))))))
+
 (define-public rust-miniz-oxide-0.3
   (package
     (inherit rust-miniz-oxide-0.4)
@@ -34837,8 +35115,7 @@ streaming API for miniz_oxide.")
          (base32
           "198n4hfpq0qcxf275l6fpzh7b9cl7ck2xs6pjgpds74bazv9yrxa"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs (("rust-adler32" ,rust-adler32-1))))))
+     `(#:cargo-inputs (("rust-adler32" ,rust-adler32-1))))))
 
 (define-public rust-miniz-oxide-0.2
   (package
@@ -34853,7 +35130,8 @@ streaming API for miniz_oxide.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "17f92krv9hhsyc38prpfyn99m2hqhr4fgszpsla66a6gcrnpbhxn"))))))
+         "17f92krv9hhsyc38prpfyn99m2hqhr4fgszpsla66a6gcrnpbhxn"))))
+    (arguments `(#:skip-build? #t))))
 
 (define-public rust-miniz-oxide-c-api-0.2
   (package
@@ -34912,7 +35190,7 @@ drop-in replacement for miniz.")
 (define-public rust-mint-0.5
   (package
     (name "rust-mint")
-    (version "0.5.4")
+    (version "0.5.9")
     (source
      (origin
        (method url-fetch)
@@ -34921,8 +35199,13 @@ drop-in replacement for miniz.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0c4190gr348fkfijij7vm19iagwl36mssj1irc9f6m448hbhgn68"))))
+         "1zw5glv8z2d99c82jy2za97hh9p6377xmf4rbwz7jynsdfxfngg5"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))
+       #:cargo-development-inputs
+       (("rust-serde-json" ,rust-serde-json-1))))
     (home-page "https://github.com/kvark/mint")
     (synopsis "Math interoperability standard types")
     (description
@@ -35826,8 +36109,65 @@ quick compile time, and minimal dependencies.")
        #:cargo-inputs
        (("rust-rayon" ,rust-rayon-1))))))
 
+(define-public rust-nalgebra-0.29
+  (package
+    (name "rust-nalgebra")
+    (version "0.29.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "nalgebra" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1zri11vkrbk3ayvy8xqcdvvyjvfcbl5a18x8z82racnn11zfn1nm"))
+       (modules '((guix build utils)))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:tests? #f       ;TODO: how to enable required features?
+        #:cargo-inputs
+        (("rust-abomonation" ,rust-abomonation-0.7)
+         ("rust-alga" ,rust-alga-0.9)
+         ("rust-approx" ,rust-approx-0.5)
+         ("rust-bytemuck" ,rust-bytemuck-1)
+         ("rust-glam" ,rust-glam-0.17)
+         ("rust-glam" ,rust-glam-0.16)
+         ("rust-glam" ,rust-glam-0.15)
+         ("rust-glam" ,rust-glam-0.14)
+         ("rust-glam" ,rust-glam-0.13)
+         ("rust-matrixcompare-core" ,rust-matrixcompare-core-0.1)
+         ("rust-matrixmultiply" ,rust-matrixmultiply-0.3)
+         ("rust-mint" ,rust-mint-0.5)
+         ("rust-nalgebra-macros" ,rust-nalgebra-macros-0.1)
+         ("rust-num-complex" ,rust-num-complex-0.4)
+         ("rust-num-rational" ,rust-num-rational-0.4)
+         ("rust-num-traits" ,rust-num-traits-0.2)
+         ("rust-pest" ,rust-pest-2)
+         ("rust-pest-derive" ,rust-pest-derive-2)
+         ("rust-proptest" ,rust-proptest-1)
+         ("rust-quickcheck" ,rust-quickcheck-1)
+         ("rust-rand" ,rust-rand-0.8)
+         ("rust-rand-distr" ,rust-rand-distr-0.4)
+         ("rust-rkyv" ,rust-rkyv-0.6)
+         ("rust-serde" ,rust-serde-1)
+         ("rust-simba" ,rust-simba-0.6)
+         ("rust-typenum" ,rust-typenum-1))
+        #:cargo-development-inputs
+        (("rust-criterion" ,rust-criterion-0.3)
+         ("rust-itertools" ,rust-itertools-0.10)
+         ("rust-matrixcompare" ,rust-matrixcompare-0.3)
+         ("rust-rand-isaac" ,rust-rand-isaac-0.3)
+         ("rust-rand-xorshift" ,rust-rand-xorshift-0.3)
+         ("rust-serde-json" ,rust-serde-json-1))))
+    (home-page "https://nalgebra.org")
+    (synopsis "Linear algebra library")
+    (description
+     "This package provides a general-purpose linear algebra library with
+transformations and statically-sized or dynamically-sized matrices.")
+    (license license:bsd-3)))
+
 (define-public rust-nalgebra-0.26
   (package
+    (inherit rust-nalgebra-0.29)
     (name "rust-nalgebra")
     (version "0.26.2")
     (source
@@ -35873,13 +36213,7 @@ quick compile time, and minimal dependencies.")
          ("rust-matrixcompare" ,rust-matrixcompare-0.2)
          ("rust-rand-isaac" ,rust-rand-isaac-0.3)
          ("rust-rand-xorshift" ,rust-rand-xorshift-0.3)
-         ("rust-serde-json" ,rust-serde-json-1))))
-    (home-page "https://nalgebra.org")
-    (synopsis "Linear algebra library")
-    (description
-     "This package provides a general-purpose linear algebra library with
-transformations and statically-sized or dynamically-sized matrices.")
-    (license license:bsd-3)))
+         ("rust-serde-json" ,rust-serde-json-1))))))
 
 (define-public rust-nalgebra-0.21
   (package
@@ -36456,8 +36790,37 @@ general elements and for numerics.")
         ("rust-quickcheck" ,rust-quickcheck-0.7)
         ("rust-rawpointer" ,rust-rawpointer-0.1))))))
 
+(define-public rust-ndk-0.5
+  (package
+    (name "rust-ndk")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ndk" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "17b9imdmv6cffr12bdpvxw1myxdyvaf6jwkmd3w7abn7akv6in4n"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #true              ;XXX: Android only
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-jni" ,rust-jni-0.18)
+        ("rust-jni-glue" ,rust-jni-glue-0.0)
+        ("rust-jni-sys" ,rust-jni-sys-0.3)
+        ("rust-ndk-sys" ,rust-ndk-sys-0.2)
+        ("rust-num-enum" ,rust-num-enum-0.5)
+        ("rust-thiserror" ,rust-thiserror-1))))
+    (home-page "https://github.com/rust-windowing/android-ndk-rs")
+    (synopsis "Safe Rust bindings to the Android NDK")
+    (description
+     "This package provides safe Rust bindings to the Android NDK.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-ndk-0.2
   (package
+    (inherit rust-ndk-0.5)
     (name "rust-ndk")
     (version "0.2.1")
     (source
@@ -36467,7 +36830,6 @@ general elements and for numerics.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "0wvf4hy18lpfkr4bap846qv2cx1vdg3x0d4hcfba9l5yzv0ngcay"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #true              ;XXX: Android only
        #:cargo-inputs
@@ -36476,34 +36838,50 @@ general elements and for numerics.")
         ("rust-jni-sys" ,rust-jni-sys-0.3)
         ("rust-ndk-sys" ,rust-ndk-sys-0.2)
         ("rust-num-enum" ,rust-num-enum-0.4)
-        ("rust-thiserror" ,rust-thiserror-1))))
+        ("rust-thiserror" ,rust-thiserror-1))))))
+
+(define-public rust-ndk-context-0.1
+  (package
+    (name "rust-ndk-context")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "ndk-context" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "12sai3dqsblsvfd1l1zab0z6xsnlha3xsfl7kagdnmj3an3jvc17"))))
+    (build-system cargo-build-system)
+    (arguments
+     '(#:tests? #f))                 ;TODO: requires many dependencies + setup
     (home-page "https://github.com/rust-windowing/android-ndk-rs")
-    (synopsis "Safe Rust bindings to the Android NDK")
+    (synopsis "Handles for accessing Android APIs")
     (description
-     "This package provides safe Rust bindings to the Android NDK.")
+     "This package provides handles for accessing Android APIs.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-ndk-glue-0.2
+(define-public rust-ndk-glue-0.5
   (package
     (name "rust-ndk-glue")
-    (version "0.2.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "ndk-glue" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0hajn6nsg6i3khi7yr2ayafpiznm5z3k5v64afqnz753nyw9kwxx"))))
+        (base32 "1m44jh4f9sirs757ikc8sracg6dzw77h9l4bw9vm8s1dly7fw6y7"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #true              ;XXX: Android only
        #:cargo-inputs
-       (("rust-android-logger" ,rust-android-logger-0.8)
+       (("rust-android-logger" ,rust-android-logger-0.10)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-ndk" ,rust-ndk-0.2)
-        ("rust-ndk-macro" ,rust-ndk-macro-0.2)
+        ("rust-ndk" ,rust-ndk-0.5)
+        ("rust-ndk-context" ,rust-ndk-context-0.1)
+        ("rust-ndk-macro" ,rust-ndk-macro-0.3)
         ("rust-ndk-sys" ,rust-ndk-sys-0.2))))
     (home-page "https://github.com/rust-windowing/android-ndk-rs")
     (synopsis "Startup code for Android binaries")
@@ -36511,22 +36889,45 @@ general elements and for numerics.")
      "This package provides startup code for Android binaries.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-ndk-macro-0.2
+(define-public rust-ndk-glue-0.2
+  (package
+    (inherit rust-ndk-glue-0.5)
+    (name "rust-ndk-glue")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ndk-glue" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0hajn6nsg6i3khi7yr2ayafpiznm5z3k5v64afqnz753nyw9kwxx"))))
+    (arguments
+     `(#:skip-build? #true              ;XXX: Android only
+       #:cargo-inputs
+       (("rust-android-logger" ,rust-android-logger-0.8)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-ndk" ,rust-ndk-0.2)
+        ("rust-ndk-macro" ,rust-ndk-macro-0.2)
+        ("rust-ndk-sys" ,rust-ndk-sys-0.2))))))
+
+(define-public rust-ndk-macro-0.3
   (package
     (name "rust-ndk-macro")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "ndk-macro" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "07a8vjr4fpksssgp453bf82n73i4i17yj1lvbgvd0964glqcdl85"))))
+        (base32 "0v3sxc11kq3d5vdwfml62l7y5dr0flsf6kp5xid9sbv7qh0arxqd"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-darling" ,rust-darling-0.10)
-        ("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)
+       (("rust-darling" ,rust-darling-0.13)
+        ("rust-proc-macro-crate" ,rust-proc-macro-crate-1)
         ("rust-proc-macro2" ,rust-proc-macro2-1)
         ("rust-quote" ,rust-quote-1)
         ("rust-syn" ,rust-syn-1))))
@@ -36535,17 +36936,37 @@ general elements and for numerics.")
     (description "This package provides helper macros for android ndk.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-ndk-macro-0.2
+  (package
+    (inherit rust-ndk-macro-0.3)
+    (name "rust-ndk-macro")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ndk-macro" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "07a8vjr4fpksssgp453bf82n73i4i17yj1lvbgvd0964glqcdl85"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-darling" ,rust-darling-0.10)
+        ("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))))
+
 (define-public rust-ndk-sys-0.2
   (package
     (name "rust-ndk-sys")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "ndk-sys" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "13c68a217ag3k18vlffpcj2qjfinchxxchzlwnsp075v7p5j4jf4"))))
+        (base32 "08915adplysmvx0ha12if1v7zxzx82xgj3nnmiddkm8aq9sdvg71"))))
     (build-system cargo-build-system)
     (arguments `(#:skip-build? #t))
     (home-page "https://github.com/rust-windowing/android-ndk-rs")
@@ -37085,7 +37506,10 @@ while still providing platform specific APIs.")
         ("rust-cc" ,rust-cc-1)
         ("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-memoffset" ,rust-memoffset-0.6))))))
+        ("rust-memoffset" ,rust-memoffset-0.6))))
+    (inputs
+     (list rust-bitflags-1.2 rust-cc-1 rust-cfg-if-1 rust-libc-0.2
+           rust-memoffset-0.6))))
 
 (define-public rust-nix-0.21
   (package
@@ -38398,8 +38822,37 @@ Rust.")
     (description "Numeric syntax extensions in Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-num-enum-0.5
+  (package
+    (name "rust-num-enum")
+    (version "0.5.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num_enum" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1j8rq7i4xnbzy72z82k41469xlj1bmn4ixagd9wlbvv2ark9alyg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #false                  ;missing files
+       #:cargo-inputs
+       (("rust-num-enum-derive" ,rust-num-enum-derive-0.5))
+       #:cargo-development-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-rustversion" ,rust-rustversion-1)
+        ("rust-trybuild" ,rust-trybuild-1)
+        ("rust-walkdir" ,rust-walkdir-2))))
+    (home-page "https://github.com/illicitonion/num_enum")
+    (synopsis "Macros easing inter-operation between primitives and enums")
+    (description
+     "This library provides procedural macros to make inter-operation between
+primitives and enums easier.")
+    (license (list license:bsd-3 license:expat license:asl2.0))))
+
 (define-public rust-num-enum-0.4
   (package
+    (inherit rust-num-enum-0.5)
     (name "rust-num-enum")
     (version "0.4.3")
     (source
@@ -38416,29 +38869,24 @@ Rust.")
        (("rust-derivative" ,rust-derivative-2)
         ("rust-num-enum" ,rust-num-enum-0.4)
         ("rust-num-enum-derive" ,rust-num-enum-derive-0.4))))
-    (home-page "https://github.com/illicitonion/num_enum")
-    (synopsis "Macros easing inter-operation between primitives and enums")
-    (description
-     "This library provides procedural macros to make inter-operation between
-primitives and enums easier.")
     (license license:bsd-3)))
 
-(define-public rust-num-enum-derive-0.4
+(define-public rust-num-enum-derive-0.5
   (package
     (name "rust-num-enum-derive")
-    (version "0.4.3")
+    (version "0.5.7")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "num_enum_derive" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "17fvb7xpxq2dsqp5nsz98w1qhkk3gnc56xis53009vnzvlys79gz"))))
+        (base32 "1kj6b8f2fx8prlcl6y1k97668s5aiia4f9gjlk0nmpak3rj9h11v"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #f                      ;FIXME: some doc tests fail
        #:cargo-inputs
-       (("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)
+       (("rust-proc-macro-crate" ,rust-proc-macro-crate-1)
         ("rust-proc-macro2" ,rust-proc-macro2-1)
         ("rust-quote" ,rust-quote-1)
         ("rust-syn" ,rust-syn-1))))
@@ -38449,6 +38897,27 @@ primitives and enums easier.")
 primitives and enums easier.")
     (license license:bsd-3)))
 
+(define-public rust-num-enum-derive-0.4
+  (package
+    (inherit rust-num-enum-derive-0.5)
+    (name "rust-num-enum-derive")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num_enum_derive" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "17fvb7xpxq2dsqp5nsz98w1qhkk3gnc56xis53009vnzvlys79gz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f                      ;FIXME: some doc tests fail
+       #:cargo-inputs
+       (("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))))))
+
 (define-public rust-num-format-0.4
   (package
     (name "rust-num-format")
@@ -47944,19 +48413,18 @@ Rust.")
     (description "This package provides core APIs for Rayon.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-rctree-0.3
+(define-public rust-rctree-0.4
   (package
     (name "rust-rctree")
-    (version "0.3.3")
+    (version "0.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "rctree" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1a54z2b850albiqx9vw009p9xg363vqzh1ybkwb89zn8375jk7my"))))
+          "1s92472lniqn2c0b5ln8ssl014x0raiyzkk0hagrvsd6far2iq4s"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/RazrFalcon/rctree")
     (synopsis "DOM-like tree implemented using reference counting")
@@ -47964,6 +48432,20 @@ Rust.")
 reference counting.")
     (license license:expat)))
 
+(define-public rust-rctree-0.3
+  (package
+    (inherit rust-rctree-0.4)
+    (name "rust-rctree")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rctree" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1a54z2b850albiqx9vw009p9xg363vqzh1ybkwb89zn8375jk7my"))))))
+
 (define-public rust-rdrand-0.4
   (package
     (name "rust-rdrand")
@@ -52526,21 +53008,20 @@ computation (experimental)")
 cipher.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-safe-arch-0.5
+(define-public rust-safe-arch-0.6
   (package
     (name "rust-safe-arch")
-    (version "0.5.2")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "safe_arch" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "01ffy9aw9v1n4bcwl525zw3gnh18jk7aq38iqcn51bwnjrnkvzy1"))))
+        (base32 "0ad5ykwgq9ll1ymp83d9cayzj8q191rik71ga5wzkndhrkj22j3r"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-bytemuck" ,rust-bytemuck-1))))
     (home-page "https://github.com/Lokathor/safe_arch")
     (synopsis "Access core::arch safely")
@@ -52548,6 +53029,24 @@ cipher.")
 @code{#[cfg()]}.")
     (license (list license:zlib license:asl2.0 license:expat))))
 
+
+(define-public rust-safe-arch-0.5
+  (package
+    (inherit rust-safe-arch-0.6)
+    (name "rust-safe-arch")
+    (version "0.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "safe_arch" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "01ffy9aw9v1n4bcwl525zw3gnh18jk7aq38iqcn51bwnjrnkvzy1"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bytemuck" ,rust-bytemuck-1))))))
+
 (define-public rust-safemem-0.3
   (package
     (name "rust-safemem")
@@ -53736,8 +54235,39 @@ macOS and iOS.")
        (("rust-core-foundation-sys" ,rust-core-foundation-sys-0.2)
         ("rust-libc" ,rust-libc-0.2))))))
 
+(define-public rust-selectors-0.23
+  (package
+    (name "rust-selectors")
+    (version "0.23.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "selectors" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "17w7slv2bkksvbq6pggx3db23vh1g022hxv06smilwmyhv38gspx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cssparser" ,rust-cssparser-0.28)
+        ("rust-derive-more" ,rust-derive-more-0.99)
+        ("rust-fxhash" ,rust-fxhash-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-phf" ,rust-phf-0.8)
+        ("rust-phf-codegen" ,rust-phf-codegen-0.8)
+        ("rust-precomputed-hash" ,rust-precomputed-hash-0.1)
+        ("rust-servo-arc" ,rust-servo-arc-0.1)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/servo/servo")
+    (synopsis "CSS Selectors matching for Rust")
+    (description "This package provides CSS Selectors matching for Rust.")
+    (license license:mpl2.0)))
+
 (define-public rust-selectors-0.22
   (package
+    (inherit rust-selectors-0.23)
     (name "rust-selectors")
     (version "0.22.0")
     (source
@@ -53764,11 +54294,7 @@ macOS and iOS.")
         ("rust-smallvec" ,rust-smallvec-1)
         ("rust-thin-slice" ,rust-thin-slice-0.1))
        #:cargo-development-inputs
-       (("rust-phf-codegen" ,rust-phf-codegen-0.8))))
-    (home-page "https://github.com/servo/servo")
-    (synopsis "CSS Selectors matching for Rust")
-    (description "This package provides CSS Selectors matching for Rust.")
-    (license license:mpl2.0)))
+       (("rust-phf-codegen" ,rust-phf-codegen-0.8))))))
 
 (define-public rust-selectors-0.21
   (package
@@ -55063,10 +55589,10 @@ for later processing.")
     (description "This package provides YAML support for Serde.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-serial-test-0.5
+(define-public rust-serial-test-0.6
   (package
     (name "rust-serial-test")
-    (version "0.5.1")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
@@ -55074,19 +55600,40 @@ for later processing.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0pchc7imdi9wv8xxnwkb9lzs6cg06ghs0gaajjb834y8837wpg70"))))
+        (base32 "05gcah6s133r44y4z5qskx7prs1vjlzgv06h4l2xb8gp30fw9g75"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-lazy-static" ,rust-lazy-static-1)
+       (("rust-document-features" ,rust-document-features-0.2)
+        ("rust-fslock" ,rust-fslock-0.2)
+        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-parking-lot" ,rust-parking-lot-0.11)
-        ("rust-serial-test-derive" ,rust-serial-test-derive-0.5))))
+        ("rust-serial-test-derive" ,rust-serial-test-derive-0.6))))
     (home-page "https://github.com/palfrey/serial_test")
     (synopsis "Allows for the creation of serialised Rust tests")
     (description
      "This package allows for the creation of serialised Rust tests.")
     (license license:expat)))
 
+(define-public rust-serial-test-0.5
+  (package
+    (inherit rust-serial-test-0.6)
+    (name "rust-serial-test")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "serial-test" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0pchc7imdi9wv8xxnwkb9lzs6cg06ghs0gaajjb834y8837wpg70"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-parking-lot" ,rust-parking-lot-0.11)
+        ("rust-serial-test-derive" ,rust-serial-test-derive-0.5))))))
+
 (define-public rust-serial-test-0.1
   (package
     (inherit rust-serial-test-0.5)
@@ -55105,31 +55652,54 @@ for later processing.")
      `(#:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1))))))
 
-(define-public rust-serial-test-derive-0.5
+(define-public rust-serial-test-derive-0.6
   (package
     (name "rust-serial-test-derive")
-    (version "0.5.1")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "serial_test_derive" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1m8sd97xr8dn6p9by0xwfqm0rz8cbn1ghs5l1fv1xd6xzvgddb5j"))))
+        (base32 "1s6aj2bs0rr8hnralx16bvbqlbrihmii7cyplggk5yv0gp6vr098"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-1)
+       (("rust-proc-macro-error" ,rust-proc-macro-error-1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
         ("rust-quote" ,rust-quote-1)
+        ("rust-rustversion" ,rust-rustversion-1)
         ("rust-syn" ,rust-syn-1))
        #:cargo-development-inputs
-       (("rust-env-logger" ,rust-env-logger-0.7))))
+       (("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-trybuild" ,rust-trybuild-1))))
     (home-page "https://github.com/palfrey/serial_test")
     (synopsis "Helper crate for serial_test")
     (description
      "This package is an helper crate for @code{rust-serial-test}.")
     (license license:expat)))
 
+(define-public rust-serial-test-derive-0.5
+  (package
+    (inherit rust-serial-test-derive-0.6)
+    (name "rust-serial-test-derive")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "serial_test_derive" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1m8sd97xr8dn6p9by0xwfqm0rz8cbn1ghs5l1fv1xd6xzvgddb5j"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-syn" ,rust-syn-1))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.7))))))
+
 (define-public rust-serial-test-derive-0.1
   (package
     (inherit rust-serial-test-derive-0.5)
@@ -56235,32 +56805,33 @@ It's not intended to be used directly.  See the signature crate's documentation
 for additional details.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-simba-0.1
+(define-public rust-simba-0.6
   (package
     (name "rust-simba")
-    (version "0.1.5")
+    (version "0.6.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "simba" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1chz3abrvrj4qz86gwrrzajsl5zcc2l0dhxi39mymbgscw9ip4zv"))))
+          "0px0nncs3ki86pjcldz40mhvraywh7y9jypfcqqdcihs287q9dzh"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-approx" ,rust-approx-0.3)
+       (("rust-approx" ,rust-approx-0.5)
         ("rust-cordic" ,rust-cordic-0.1)
         ("rust-decimal" ,rust-decimal-2)
         ("rust-fixed" ,rust-fixed-1)
-        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-libm" ,rust-libm-0.2)
+        ("rust-num-complex" ,rust-num-complex-0.4)
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-packed-simd" ,rust-packed-simd-0.3)
-        ("rust-paste" ,rust-paste-0.1)
-        ("rust-rand" ,rust-rand-0.7)
-        ("rust-wide" ,rust-wide-0.4))))
+        ("rust-paste" ,rust-paste-1)
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-wide" ,rust-wide-0.7))))
     (home-page "https://github.com/dimforge/simba")
     (synopsis "SIMD algebra for Rust")
     (description "This package provides a set of mathematical traits to
@@ -56270,7 +56841,7 @@ pattern in Rust.")
 
 (define-public rust-simba-0.5
   (package
-    (inherit rust-simba-0.1)
+    (inherit rust-simba-0.6)
     (name "rust-simba")
     (version "0.5.1")
     (source
@@ -56280,7 +56851,6 @@ pattern in Rust.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32 "0p1x1ndajy4j3dr9zbh79cz5k0hbj4p9bagd7cj00gc5aws0d0lf"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -56295,12 +56865,11 @@ pattern in Rust.")
         ("rust-paste" ,rust-paste-1)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-serde" ,rust-serde-1)
-        ("rust-wide" ,rust-wide-0.6))))
-    (license license:asl2.0)))
+        ("rust-wide" ,rust-wide-0.6))))))
 
 (define-public rust-simba-0.4
   (package
-    (inherit rust-simba-0.1)
+    (inherit rust-simba-0.5)
     (name "rust-simba")
     (version "0.4.0")
     (source
@@ -56327,6 +56896,34 @@ pattern in Rust.")
         ("rust-wide" ,rust-wide-0.6))))
     (license license:asl2.0)))
 
+(define-public rust-simba-0.1
+  (package
+    (inherit rust-simba-0.4)
+    (name "rust-simba")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "simba" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1chz3abrvrj4qz86gwrrzajsl5zcc2l0dhxi39mymbgscw9ip4zv"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-approx" ,rust-approx-0.3)
+        ("rust-cordic" ,rust-cordic-0.1)
+        ("rust-decimal" ,rust-decimal-2)
+        ("rust-fixed" ,rust-fixed-1)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-packed-simd" ,rust-packed-simd-0.3)
+        ("rust-paste" ,rust-paste-0.1)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-wide" ,rust-wide-0.4))))
+    (license license:bsd-3)))
+
 (define-public rust-simd-0.2
   (package
     (name "rust-simd")
@@ -56379,6 +56976,33 @@ CPUs, as well as raw interfaces to platform-specific instructions.
        #:cargo-development-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1))))))
 
+(define-public rust-simd-adler32-0.3
+  (package
+    (name "rust-simd-adler32")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "simd-adler32" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "060b9v15s3miq06582cj2ywam92ph6xs34s62mc8az3xc4wxz98l"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-adler" ,rust-adler-1)
+        ("rust-adler32" ,rust-adler32-1)
+        ("rust-criterion" ,rust-criterion-0.3)
+        ("rust-rand" ,rust-rand-0.8))))
+    (home-page "https://github.com/mcountryman/simd-adler32")
+    (synopsis
+     "Adler-32 rolling hash algorithm implementation")
+    (description
+     "This package provides a SIMD-accelerated Adler-32 rolling hash algorithm
+implementation in Rust.")
+    (license license:expat)))
+
 (define-public rust-simd-helpers-0.1
   (package
     (name "rust-simd-helpers")
@@ -56471,6 +57095,32 @@ extensions.")
     (description "This package provides a diff library for Rust.")
     (license license:asl2.0)))
 
+(define-public rust-similar-asserts-1
+  (package
+    (name "rust-similar-asserts")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "similar-asserts" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1789db0fm85p4zvy44b2jwdjgw6h2b51bi133kak2l1pl8qzbjb4"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-console" ,rust-console-0.15)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-similar" ,rust-similar-2))
+       #:cargo-development-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/mitsuhiko/similar-asserts")
+    (synopsis "Asserts macros with colorized diff output")
+    (description
+     "This crate provides @code{assert_eq!}-like macros with colorized
+diff output.")
+    (license license:asl2.0)))
+
 (define-public rust-simplelog-0.11
   (package
     (name "rust-simplelog")
@@ -57235,7 +57885,7 @@ inline storage.")
 (define-public rust-smallvec-1
   (package
     (name "rust-smallvec")
-    (version "1.6.1")
+    (version "1.9.0")
     (source
      (origin
        (method url-fetch)
@@ -57244,11 +57894,12 @@ inline storage.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0kk08axr0ybfbjzk65a41k84mb6sfhyajmfndaka9igkx34kf3zy"))))
+         "1lfss4vs5z5njm3ac9c499s5m1gphzm5a7gxcbw1zncpjmsdpl1g"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-serde" ,rust-serde-1))
+       (("rust-arbitrary" ,rust-arbitrary-1)
+        ("rust-serde" ,rust-serde-1))
        #:cargo-development-inputs
        (("rust-bincode" ,rust-bincode-1))))
     (home-page "https://github.com/servo/rust-smallvec")
@@ -60898,31 +61549,31 @@ processors, disks, components and networks.")
     (description "Send log messages to syslog.")
     (license license:expat)))
 
-(define-public rust-system-deps-3
+(define-public rust-system-deps-6
   (package
     (name "rust-system-deps")
-    (version "3.2.0")
+    (version "6.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "system-deps" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "19ig3hxgyq9d7qy8cwpl74l75ay2w0y0a4rginqb68h7hygjc328"))))
+        (base32 "02g750rlhh7ynqa3p4a3qm7jrkjp3d0jlzrl29z225ch9hf5m951"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #f                      ;source is missing some test files
        #:cargo-inputs
        (("rust-anyhow" ,rust-anyhow-1)
-        ("rust-cfg-expr" ,rust-cfg-expr-0.8)
-        ("rust-heck" ,rust-heck-0.3)
+        ("rust-cfg-expr" ,rust-cfg-expr-0.10)
+        ("rust-heck" ,rust-heck-0.4)
         ("rust-itertools" ,rust-itertools-0.10)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
         ("rust-strum" ,rust-strum-0.21)
         ("rust-strum-macros" ,rust-strum-macros-0.21)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-toml" ,rust-toml-0.5)
-        ("rust-version-compare" ,rust-version-compare-0.0))
+        ("rust-version-compare" ,rust-version-compare-0.1))
        #:cargo-development-inputs
        (("rust-assert-matches" ,rust-assert-matches-1)
         ("rust-itertools" ,rust-itertools-0.10)
@@ -60935,6 +61586,37 @@ This makes those dependencies declarative, so other tools can read them as
 well.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-system-deps-3
+  (package
+    (inherit rust-system-deps-6)
+    (name "rust-system-deps")
+    (version "3.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "system-deps" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "19ig3hxgyq9d7qy8cwpl74l75ay2w0y0a4rginqb68h7hygjc328"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f                      ;source is missing some test files
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-cfg-expr" ,rust-cfg-expr-0.8)
+        ("rust-heck" ,rust-heck-0.3)
+        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-pkg-config" ,rust-pkg-config-0.3)
+        ("rust-strum" ,rust-strum-0.21)
+        ("rust-strum-macros" ,rust-strum-macros-0.21)
+        ("rust-thiserror" ,rust-thiserror-1)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-version-compare" ,rust-version-compare-0.0))
+       #:cargo-development-inputs
+       (("rust-assert-matches" ,rust-assert-matches-1)
+        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-lazy-static" ,rust-lazy-static-1))))))
+
 (define-public rust-system-deps-1
   (package
     (inherit rust-system-deps-3)
@@ -61030,19 +61712,18 @@ without a mutable reference.")
     (description "This package lets you temporarily take a T from a &mut T.")
     (license license:expat)))
 
-(define-public rust-takeable-option-0.4
+(define-public rust-takeable-option-0.5
   (package
     (name "rust-takeable-option")
-    (version "0.4.0")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "takeable-option" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0hvd6vk4ksgg2y99498jw52ric4lxm0i6ygpzqm95gdrhvsxyynp"))))
+         "182axkm8pq7cynsfn65ar817mmdhayrjmbl371yqp8zyzhr8kbin"))))
     (build-system cargo-build-system)
     (home-page "https://docs.rs/takeable-option/")
     (synopsis "Small wrapper around option")
@@ -61050,6 +61731,21 @@ without a mutable reference.")
      "This package provides a small wrapper around option.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-takeable-option-0.4
+  (package
+    (inherit rust-takeable-option-0.5)
+    (name "rust-takeable-option")
+    (version "0.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "takeable-option" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hvd6vk4ksgg2y99498jw52ric4lxm0i6ygpzqm95gdrhvsxyynp"))))))
+
 (define-public rust-tap-1
   (package
     (name "rust-tap")
@@ -61130,14 +61826,14 @@ memory all at once.")
 (define-public rust-target-lexicon-0.12
   (package
     (name "rust-target-lexicon")
-    (version "0.12.2")
+    (version "0.12.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "target-lexicon" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1zsvillq0zsggg3fb0mfmcia0f68wfclahaqc0zgln14pkfzrgyr"))))
+        (base32 "1hfk4v8gbhczr6jwsy1ja6yg4npkvznym6b7r4fbgjc0fw428960"))))
     (build-system cargo-build-system)
     (arguments `(#:skip-build? #t))
     (home-page "https://github.com/CraneStation/target-lexicon")
@@ -62455,6 +63151,33 @@ into mod, giving clear and readable test results.")
 for TLS).")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-test-generator-0.3
+  (package
+    (name "rust-test-generator")
+    (version "0.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "test-generator" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1h03y4503jhhrks4m7xqfjya9lsx3ip5dlbldr7mgcws6j8bx5za"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glob" ,rust-glob-0.3)
+        ("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))))
+    (home-page "https://github.com/frehberg/test-generator")
+    (synopsis "Generate parameterized tests from different input parameters")
+    (description
+     "This crate provides @code{#[test_resources]} and @code{#[bench_resources]}
+procedural macro attributes that generates multiple parameterized tests using
+one body with different resource input parameters.  A test is generated for
+each resource matching the specific resource location pattern.")
+    (license license:asl2.0)))
+
 (define-public rust-tester-0.5
   (package
     (name "rust-tester")
@@ -63408,14 +64131,14 @@ C library.")
 (define-public rust-tinyvec-1
   (package
     (name "rust-tinyvec")
-    (version "1.1.1")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tinyvec" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "08qhf0a9vxf85bj1hd38i8qzwiwm6v4vvwd11k7c728f59bwlz1i"))))
+        (base32 "0hn3fkpb9nca9nf9znz2dxlp4ccv37hnbh67aczpzpmpbgq20ljv"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -69216,8 +69939,28 @@ If that fails, no determination is made, and calls return None.")
          (base32
           "1pf91pvj8n6akh7w6j5ypka6aqz08b3qpzgs0ak2kjf4frkiljwi"))))))
 
+(define-public rust-version-compare-0.1
+  (package
+    (name "rust-version-compare")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "version-compare" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0wyasmnqqngvm54x0gsxbwpxznvn747jkp0dx1nnppy1j9xj927y"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/timvisee/version-compare")
+    (synopsis "Rust library to easily compare version numbers")
+    (description
+     "This package provides a Rust library to easily compare version
+numbers, and test them against various comparison operators.")
+    (license license:expat)))
+
 (define-public rust-version-compare-0.0.11
   (package
+    (inherit rust-version-compare-0.1)
     (name "rust-version-compare")
     (version "0.0.11")
     (source
@@ -69227,14 +69970,7 @@ If that fails, no determination is made, and calls return None.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "06v688jg6gd00zvm3cp7qh2h3mz8cs2ngr09bnwxhyddxrcwh60w"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/timvisee/version-compare")
-    (synopsis "Rust library to easily compare version numbers")
-    (description
-     "This package provides a Rust library to easily compare version
-numbers, and test them against various comparison operators.")
-    (license license:expat)))
+        (base32 "06v688jg6gd00zvm3cp7qh2h3mz8cs2ngr09bnwxhyddxrcwh60w"))))))
 
 (define-public rust-version-compare-0.0 rust-version-compare-0.0.11)
 
@@ -70822,10 +71558,10 @@ It locates installed executable in cross platforms.")
 environment.")
     (license (list license:expat license:boost1.0))))
 
-(define-public rust-wide-0.4
+(define-public rust-wide-0.7
   (package
     (name "rust-wide")
-    (version "0.4.6")
+    (version "0.7.4")
     (source
       (origin
         (method url-fetch)
@@ -70834,22 +71570,23 @@ environment.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0ad75vnzygj8qfcl1l9n4wi93xmqzvhqlpqn4hfayrwbn6wa69aq"))))
+          "0psw31mh21cn4w7i0klsz7law8p8iddsqir8x35cf6n3vb8s5axk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-bytemuck" ,rust-bytemuck-1))))
+       (("rust-bytemuck" ,rust-bytemuck-1)
+        ("rust-safe-arch" ,rust-safe-arch-0.6))))
     (home-page "https://github.com/Lokathor/wide")
     (synopsis "Rust for wide blocks")
     (description "This crate has data types for blocks of primitives packed
 together and used as a single unit.  This works very well with SIMD/vector
 hardware of various targets.  Both in terms of explicit SIMD usage and also in
 terms of allowing LLVM's auto-vectorizer to do its job.")
-    (license license:zlib)))
+    (license (list license:zlib license:asl2.0 license:expat))))
 
 (define-public rust-wide-0.6
   (package
-    (inherit rust-wide-0.4)
+    (inherit rust-wide-0.7)
     (name "rust-wide")
     (version "0.6.5")
     (source
@@ -70863,8 +71600,27 @@ terms of allowing LLVM's auto-vectorizer to do its job.")
     (arguments
      `(#:cargo-inputs
        (("rust-bytemuck" ,rust-bytemuck-1)
-        ("rust-safe-arch" ,rust-safe-arch-0.5))))
-    (license (list license:zlib license:asl2.0 license:expat))))
+        ("rust-safe-arch" ,rust-safe-arch-0.5))))))
+
+(define-public rust-wide-0.4
+  (package
+    (inherit rust-wide-0.6)
+    (name "rust-wide")
+    (version "0.4.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "wide" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0ad75vnzygj8qfcl1l9n4wi93xmqzvhqlpqn4hfayrwbn6wa69aq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bytemuck" ,rust-bytemuck-1))))
+    (license (list license:zlib))))
 
 (define-public rust-widestring-0.4
   (package
@@ -71967,6 +72723,35 @@ Read/Write streams as well as low-level in-memory encoding and decoding.")
 library.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-yeslogic-fontconfig-sys-3
+  (package
+    (name "rust-yeslogic-fontconfig-sys")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "yeslogic-fontconfig-sys" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "11n3126s717rjqxhf5js3hc0qq8qv7jbicbiyszyp5yk6s8ddfzj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-const-cstr" ,rust-const-cstr-0.3)
+        ("rust-dlib" ,rust-dlib-0.5)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list fontconfig))
+    (home-page "https://github.com/yeslogic/fontconfig-rs")
+    (synopsis "Raw bindings to Fontconfig without a vendored C library")
+    (description
+     "This package provides a wrapper around the @code{Fontconfig} library,
+for locating fonts.")
+    (license license:expat)))
+
 (define-public rust-zbase32-0.1
   (package
     (name "rust-zbase32")
diff --git a/gnu/packages/datamash.scm b/gnu/packages/datamash.scm
index 4ce1dbda7d..ac5094935a 100644
--- a/gnu/packages/datamash.scm
+++ b/gnu/packages/datamash.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016-2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,7 +35,7 @@
 (define-public datamash
   (package
     (name "datamash")
-    (version "1.7")
+    (version "1.8")
     (source
      (origin
       (method url-fetch)
@@ -43,7 +43,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "1cxdlhgz3wzjqlq8bgwad93fgqymk2abbldfzw1ffnhcp4mmjjjp"))))
+        "1zgn55gvf60w2rs5f7vx7vdp50j89ki7mmjvm81xs5pngs67xnbs"))))
     (native-inputs
      (list which ;for tests
            perl))                 ;for help2man
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 47b15e588f..90035f7255 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -1401,7 +1401,7 @@ wrapper for disk usage querying and visualisation.")
 (define-public qdirstat
   (package
     (name "qdirstat")
-    (version "1.8")
+    (version "1.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1410,7 +1410,7 @@ wrapper for disk usage querying and visualisation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "079rmy3j0442y5gjh6la6w1j6jaw83wklamrf19yxi20zsm99xs7"))))
+                "04vpdlwk01kgmc4r5rnrmrgd4sf2kfh1rjzb2rjkfxdd4pbghsy9"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index aa10b96fdf..a6521eafb5 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -333,14 +333,14 @@ and BOOTP/TFTP for network booting of diskless machines.")
     ;; When updating, check whether isc-dhcp's bundled copy should be as well.
     ;; The BIND release notes are available here:
     ;; https://www.isc.org/bind/
-    (version "9.16.30")
+    (version "9.16.31")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://ftp.isc.org/isc/bind9/" version
                            "/bind-" version ".tar.xz"))
        (sha256
-        (base32 "1nv02apqpqk7mi1330jgsacpplhgnkx6mba5nmbsx1x72gqc77q0"))
+        (base32 "1yvwdvcyy996p50j7nr4b010w16jjj5czw15g87wf1dn6xncp8lc"))
        (patches
         (search-patches "bind-re-add-attr-constructor-priority.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 312cb58b28..702378c206 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5758,7 +5758,7 @@ keywords and smart indentation.")
 (define-public emacs-robot-log
   (package
     (name "emacs-robot-log")
-    (version "0.1.3")
+    (version "0.1.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5767,7 +5767,7 @@ keywords and smart indentation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pv0kljx2n2n7ql6rfw1x63mbd1k2qwbq3zkw452lb8jmnp7dr3y"))))
+                "1l9yxryrhvylh2x17cczd8v8978w1nv8173d4l9hv0cr26kp5b68"))))
     (build-system emacs-build-system)
     (native-inputs (list python-robotframework))
     (arguments (list #:tests? #t))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 6eefd14d7e..bf32187dde 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2791,13 +2791,13 @@ program that can perform mesh processing tasks in batch mode, without a GUI.")
 (define-public poke
   (package
     (name "poke")
-    (version "2.3")
+    (version "2.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/poke/poke-" version
                                   ".tar.gz"))
               (sha256
-               (base32 "0rn7ph7fvbwasf7jhai122sniqjkw81p0kvbxjlv6z6s2q8wz41n"))
+               (base32 "0ivfzslpdy0n9wcdjyascnqczppaxcq0x4x6hblqqwy62xcjh7l4"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index a792bd8700..c6063c42c4 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -1478,13 +1478,13 @@ compatible directories.")
 (define-public python-dropbox
   (package
     (name "python-dropbox")
-    (version "11.25.0")
+    (version "11.33.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "dropbox" version))
         (sha256
-         (base32 "0vq9c2hp2amsxr2ys2mlgqp6a8hxmvrcwav70ri7wjzalfs32gj6"))))
+         (base32 "1hd9gprvcr6h0p8fxhynf97qf6799whfpsmr73g619392598nqvw"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f))  ; Tests require a network connection.
     (native-inputs
@@ -1500,7 +1500,7 @@ Dropbox API v2.")
 (define-public dbxfs
   (package
     (name "dbxfs")
-    (version "1.0.51")
+    (version "1.0.63")
     (source
       (origin
         ;; Release tarball contains files not in git repository.
@@ -1511,7 +1511,7 @@ Dropbox API v2.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "0bidb1gg5lqa1561f20qnj7gy323q65qwzfrb8h8gs6dsl3g6yfg"))
+          "1vzfhw3z2r0rb6s0qdzirh3pl7rv1z8xmxa0z5h7h1wqhpl05ai7"))
         (patches (search-patches "dbxfs-remove-sentry-sdk.patch"))))
     (build-system python-build-system)
     (arguments
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 89f5fc055c..adceb98f83 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -190,7 +190,7 @@
               "python3" "./test/functional/test_runner.py"
               (string-append "--jobs=" (number->string (parallel-job-count))))
              #t)))))
-    (home-page "https://bitcoin.org/en/")
+    (home-page "https://bitcoin.org/")
     (synopsis "Bitcoin peer-to-peer client")
     (description
      "Bitcoin is a digital currency that enables instant payments to anyone
@@ -1843,7 +1843,7 @@ that allows you to run services and through them access the Bitcoin Cash network
            python-requests))
     (native-inputs
      (list python-pytest))
-    (home-page "http://furius.ca/beancount")
+    (home-page "https://beancount.github.io/")
     (synopsis "Command-line double-entry accounting tool")
     (description
      "Beancount is a double-entry bookkeeping computer language that lets you
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 123d477838..278695a03c 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
@@ -460,7 +460,18 @@ implementing the pen protocol for manipulating glyphs.")
      (arguments
       (substitute-keyword-arguments (package-arguments python-fontpens-bootstrap)
         ((#:tests? _ #f)
-         #t)))
+         #t)
+        ((#:phases phases #~%standard-phases)
+         #~(modify-phases #$phases
+             (add-after 'unpack 'drop-flaky-docstring
+               ;; XXX This assertion fails on certain (Intel?) machines, but not
+               ;; others (AMD?), so we can't patch in a ‘correct’ value.  Just
+               ;; drop it until the proper fix lands upstream.  Reported there
+               ;; as <https://github.com/robotools/fontPens/issues/41>.
+               (lambda _
+                 (substitute* "Lib/fontPens/penTools.py"
+                   ((".*\\(\\(0, 0), \\(50, 20), \\(100, 40)).*") "")
+                   ((".*107\\.70329614269009.*") ""))))))))
      (native-inputs
       (modify-inputs (package-native-inputs python-fontpens-bootstrap)
         (append python-fontparts-bootstrap
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 23757c1b9d..57141ad7d8 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -1455,7 +1455,7 @@ these interfaces, based on the useradd, usermod and userdel commands.")
 (define-public libmbim
   (package
     (name "libmbim")
-    (version "1.20.2")
+    (version "1.26.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1463,7 +1463,7 @@ these interfaces, based on the useradd, usermod and userdel commands.")
                     "libmbim-" version ".tar.xz"))
               (sha256
                (base32
-                "16q550sy84izi5ic3sbbhjnnka2fwhj8vvdrirpn9xspbsgbc3sm"))))
+                "1ncaarl4lgc7i52rwz50yq701wk2rr478cjybxbifsjqqk2cx27n"))))
     (build-system gnu-build-system)
     (native-inputs
      (list `(,glib "bin") ; for glib-mkenums
@@ -1485,7 +1485,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
 (define-public libqmi
   (package
     (name "libqmi")
-    (version "1.24.14")
+    (version "1.30.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1493,7 +1493,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
                     "libqmi-" version ".tar.xz"))
               (sha256
                (base32
-                "0zshxqbm9ldybgrzh7pjmwmfjvvvfd0xh8qhgl8xiqdb9ply73r0"))))
+                "140rmjw436rh6rqmnfw6yaflpffd27ilwcv4s9jvvl1skv784946"))))
     (build-system gnu-build-system)
     (inputs
      (list libgudev))
@@ -1515,7 +1515,7 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
 (define-public modem-manager
   (package
     (name "modem-manager")
-    (version "1.12.10")
+    (version "1.18.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1523,19 +1523,23 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
                     "ModemManager-" version ".tar.xz"))
               (sha256
                (base32
-                "1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj"))))
+                "1sv53lvz9nfbq6jzprl5xhai0vylc01kglcdrgz2vszf5615y98n"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags
-       `(,(string-append "--with-udev-base-dir=" %output "/lib/udev"))))
+     (list
+      #:configure-flags
+      #~(list (string-append "--with-udev-base-dir=" #$output "/lib/udev"))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ;; For testing.
-       ("dbus" ,dbus)))
+     (list gettext-minimal
+           `(,glib "bin") ; for glib-mkenums
+           gobject-introspection
+           pkg-config
+           vala
+           ;; For testing.
+           dbus
+           python
+           python-dbus
+           python-pygobject))
     (propagated-inputs
      (list glib)) ; required by mm-glib.pc
     (inputs
@@ -1548,6 +1552,8 @@ broadband (2G/3G/4G) devices and connections.  Whether built-in devices, USB
 dongles, bluetooth-paired telephones, or professional RS232/USB devices with
 external power supplies, ModemManager is able to prepare and configure the
 modems and setup connections with them.")
+    (properties
+     '((upstream-name . "ModemManager")))
     (license license:gpl2+)))
 
 (define-public telepathy-logger
@@ -1870,15 +1876,15 @@ manually by a user.")
 (define-public perl-file-basedir
   (package
     (name "perl-file-basedir")
-    (version "0.08")
+    (version "0.09")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/K/KI/KIMRYAN/"
+       (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
                            "File-BaseDir-" version ".tar.gz"))
        (sha256
         (base32
-         "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
+         "1nb757cyyy80xln147qgns113i2ivfpgcfhsxw8qzb322llgg9kd"))))
     (build-system perl-build-system)
     (native-inputs
      (list perl-module-build perl-file-which perl-test-pod
@@ -1922,7 +1928,7 @@ applications define in those files.")
 (define-public perl-file-mimeinfo
   (package
     (name "perl-file-mimeinfo")
-    (version "0.29")
+    (version "0.33")
     (source
      (origin
        (method url-fetch)
@@ -1930,7 +1936,7 @@ applications define in those files.")
                            "File-MimeInfo-" version ".tar.gz"))
        (sha256
         (base32
-         "1sh8r6vczyz08zm8vfsjmkg6a165wch54akjdrd1vbifcmwjg5pi"))))
+         "1i5iw6ri0w9clwpqf40xmsh4isc8xvx2lyf2r5g34886i6rsdgpn"))))
     (build-system perl-build-system)
     ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
     ;; perl-test-tiny as native-inputs.
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7b1a57167f..2456434d62 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017, 2018 nee <nee-git@hidamari.blue>
@@ -1846,7 +1846,7 @@ either on a local, or remote machine via a number of methods.")
 (define-public gnome-commander
   (package
     (name "gnome-commander")
-    (version "1.14.2")
+    (version "1.14.3")
     (source
      (origin
        (method url-fetch)
@@ -1854,7 +1854,7 @@ either on a local, or remote machine via a number of methods.")
                            (version-major+minor version)  "/"
                            "gnome-commander-" version ".tar.xz"))
        (sha256
-        (base32 "1s8fdwp0z1smzkwrsvssp9g3yak6z4cdk0qx0c4qmwca9z9fyy0k"))))
+        (base32 "0yzx9slg632iflw9p96nlh9i50dhacq7hrzpkj8b48mr1zkxrn3q"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list desktop-file-utils
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 1c82bbe553..2d23022503 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -367,8 +367,8 @@ in C/C++.")
 ;; XXXX: Workaround 'snippet' limitations.
 (define computed-origin-method (@@ (guix packages) computed-origin-method))
 
-(define %icecat-version "91.11.0-guix0-preview1")
-(define %icecat-build-id "20220628000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "91.12.0-guix0-preview1")
+(define %icecat-build-id "20220726000000") ;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'
@@ -390,11 +390,11 @@ in C/C++.")
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "1905595fsydd8q4bqxsp5gb4h9s47qjj90wjrqv4ky8yxs9bx6z5"))))
+              "0p1bhc1qla4a7iqk0fc6sj224ld6wplpmj4yw6nfx1b8hbqqy2vc"))))
 
-         (upstream-icecat-base-version "91.11.0") ; maybe older than base-version
+         (upstream-icecat-base-version "91.12.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
-         (gnuzilla-commit "65a61287a5142a9403ec00d973cb5e5d658a3c71")
+         (gnuzilla-commit "298024d727053a1609df4003fb4438836d5181f4")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -406,7 +406,7 @@ in C/C++.")
                                       (string-take gnuzilla-commit 8)))
             (sha256
              (base32
-              "02mg7vg0bv5lxkdg86z18mf43rx7sh5i2w69lnirr8zqcrr5yd48"))))
+              "1lgz6knklxbrqr1vaj9d0y0997f4f6v44a8cng8ihkmn7aa7lvwg"))))
 
          ;; 'search-patch' returns either a valid file name or #f, so wrap it
          ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 181d24acd6..7db53f3e22 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2020, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -55,6 +55,7 @@
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
@@ -2362,7 +2363,7 @@ Wacom-style graphics tablets.")
 (define-public phockup
   (package
     (name "phockup")
-    (version "1.7.1")
+    (version "1.9.0")
     (source
      (origin
        (method git-fetch)
@@ -2372,7 +2373,7 @@ Wacom-style graphics tablets.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0nqd89g4ppwc96gxyh9npain7ipnzj66p6n3irsvhrpi4k54h388"))))
+         "1xs2h3nj19wsfffl87akinx14drk5nn2svjwyj0csv10apk0q4pp"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan '(("src" "share/phockup/")
@@ -2382,8 +2383,8 @@ Wacom-style graphics tablets.")
          (add-after 'unpack 'configure
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* (list "src/dependency.py" "src/exif.py")
-               (("exiftool")
-                (search-input-file inputs "/bin/exiftool")))))
+               (("'exiftool'")
+                (string-append "'" (search-input-file inputs "/bin/exiftool") "'")))))
          (add-before 'install 'check
            (lambda _
              (invoke "pytest")))
@@ -2401,7 +2402,7 @@ Wacom-style graphics tablets.")
                    ,(search-path-as-string->list
                      (getenv "GUIX_PYTHONPATH"))))))))))
     (inputs
-     (list perl-image-exiftool python python-tqdm))
+     (list bash-minimal perl-image-exiftool python python-tqdm))
     (native-inputs
      (list python-pytest python-pytest-mock))
     (home-page "https://github.com/ivandokov/phockup")
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 9d56b935a8..baeebc3bc7 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Christopher Howard <christopher@librehacker.com>
@@ -28,6 +28,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages libusb)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -471,14 +472,14 @@ over USB.")
 (define-public libmtp
   (package
     (name "libmtp")
-    (version "1.1.19")
+    (version "1.1.20")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/libmtp/libmtp/" version
                                  "/libmtp-" version ".tar.gz"))
              (sha256
               (base32
-               "0a1jlf5b2c2vylkvdd3cxjs20a96jlbrdyx7rwai5rzmcdpszd6y"))))
+               "1l2npk3b5v9cxhs2g01w3b13mxvin881cr085r0cyi2p5yn1s6f9"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
@@ -488,11 +489,9 @@ over USB.")
      ;; libmtp.pc refers to all these.
      (list libusb))
     (arguments
-     `(#:configure-flags
-       (list "--disable-static"
-             (string-append "--with-udev="
-                            (assoc-ref %outputs "out")
-                            "/lib/udev"))))
+     (list #:configure-flags
+           #~(list "--disable-static"
+                   (string-append "--with-udev=" #$output "/lib/udev"))))
     (home-page "http://libmtp.sourceforge.net/")
     (synopsis "Library implementing the Media Transfer Protocol")
     (description "Libmtp implements an MTP (Media Transfer Protocol)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8dcb99dae4..7c900b21dd 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -352,7 +352,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The current "stable" kernels. That is, the most recently released major
 ;; versions that are still supported upstream.
 
-(define-public linux-libre-5.18-version "5.18.12")
+(define-public linux-libre-5.18-version "5.18.14")
 (define-public linux-libre-5.18-gnu-revision "gnu")
 (define deblob-scripts-5.18
   (linux-libre-deblob-scripts
@@ -362,7 +362,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0vjpn8iw9yg39sr6jfhzyvivf159h9zfgnjamwa283zfll0h0a53")))
 (define-public linux-libre-5.18-pristine-source
   (let ((version linux-libre-5.18-version)
-        (hash (base32 "09wmgfrnv1df6jg9v3svwhvnxl0j6h4f240p903xlmgj884lvds0")))
+        (hash (base32 "1bsnk2rskdkimciij5q3hjs00lc7ks1h1qh9kc4s7lrk252lczg1")))
    (make-linux-libre-source version
 
                             (%upstream-linux-source version hash)
@@ -371,7 +371,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.15-version "5.15.55")
+(define-public linux-libre-5.15-version "5.15.57")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
@@ -381,12 +381,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "129qlhwdv2mfb85gbvq03kkbdfp73b444rryr4rrbvi0jmq4cp24")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "1k7x7fp675wglfd357n7hjidnm3j8zj3gcymyazg6fkcid8bvxhy")))
+        (hash (base32 "1zgh43pgn8fsyxzksfw6llxqw6fc8qassfn9a18k2xn83xd0kqv2")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.131")
+(define-public linux-libre-5.10-version "5.10.133")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
@@ -396,12 +396,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1981axxswghza3iadp94q54y8w30h9w9vyq4cbjiiv9alvbv0pb8")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "1ki11mvl3dky7iih90znr47vr66dxnlwrqwg2jkk1hqn5i243i4b")))
+        (hash (base32 "03i84g3pfh24f10zsdyyqyv9fhy01ah9lk02y48hqwnabdylqp1v")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.206")
+(define-public linux-libre-5.4-version "5.4.207")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
@@ -411,12 +411,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1vnjbdyssa7dwyjl9kg35alwvf7yh597cl74yr1wy2gk5bc9paw6")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1asvc7y1f938icspxx39n6y6r0w9mp0k9vik84rsx1hzzv0db41c")))
+        (hash (base32 "1wwpd26qhv6i00p0yxjisns6qiz9bfrxvn1xb4ylwr8ls7zyx78v")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.252")
+(define-public linux-libre-4.19-version "4.19.253")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
@@ -426,12 +426,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0ac7k6x9h8gqi37n8d4fyi52h4cmzyy8f5vfv1aiihww4kvzca7v")))
+        (hash (base32 "1jc2j0wskgr1bdzpz6sn2bvafpviiin6mwr93yykcczzfjijr8yz")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.288")
+(define-public linux-libre-4.14-version "4.14.289")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
@@ -441,12 +441,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "00i91lx938nqlgy63hiricqd0fnbbf26vgya9c5lb7m1f4x324im")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0yyzxyz66mfngx3ll3pl43413xb67iyxddzh3lpzqcfg7d0rxfwz")))
+        (hash (base32 "1v24mv49skgijcbafgai0glrzwiv2j1hndkz7v6ygc18jxh5fqg6")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.323")
+(define-public linux-libre-4.9-version "4.9.324")
 (define-public linux-libre-4.9-gnu-revision "gnu1")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
@@ -456,7 +456,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0bib3641dbcqdkx3anna3caxnsg3nw9cnmhcklq0s93g3m57041h")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "1h96ai9w5q2axhliw85aymdsg8py9y6gl8big5r2gwkbls6h7pa3")))
+        (hash (base32 "0g51vfp0g3py82l3q66p7nvl03h6l1nlny18gangji75a3c39yh4")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
@@ -3208,7 +3208,7 @@ processes currently causing I/O.")
 (define-public iotop
   (package
     (name "iotop")
-    (version "1.21")
+    (version "1.22")
     (source
      (origin
        (method git-fetch)
@@ -3217,7 +3217,7 @@ processes currently causing I/O.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "03wdnkfl51dapilg6r9vjga1xrl9lxlypfz07k50nscvbq8v8fb7"))))
+        (base32 "04a77qir35s1bwvd39qddx2kfizdbf5jxlnz8zmy1cnrigbwcy1h"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 2f6d22fe7d..51d74bd8af 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -95,6 +95,7 @@
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -22779,3 +22780,91 @@ binding @code{*debugger-hook*} is not enough -- most notably, for
     (arguments
      ;; Tests fail on ECL: https://github.com/phoe/trivial-custom-debugger/issues/3
      '(#:tests? #f))))
+
+(define-public sbcl-ospm
+  (package
+    (name "sbcl-ospm")
+    (version "0.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/atlas-engineer/ospm")
+             (commit version)))
+       (file-name (git-file-name "cl-ospm" version))
+       (sha256
+        (base32 "1b64ar6x08bcig4brlsim445favjf1zhyj6qz018cildp3xs4miz"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     (list sbcl-alexandria
+           sbcl-calispel
+           sbcl-hu.dwim.defclass-star
+           sbcl-local-time
+           sbcl-moptilities
+           sbcl-named-readtables
+           sbcl-serapeum
+           sbcl-trivia))
+    (native-inputs
+     ;; FIXME: Tests have execution errors because of Guix being run in a container.
+     (list sbcl-lisp-unit2 guix))
+    (home-page "https://github.com/atlas-engineer/ospm")
+    (synopsis "System package manager in Common Lisp")
+    (description
+     "This library is a universal interface to the operating system package manager.
+It has extensive support for Guix, among others:
+
+@itemize
+@item package listing and searching;
+@item package installation and uninstallation;
+@item package file listing;
+@item profile listing;
+@item manifest listing and installation;
+@item generation listing, switching and deletion.
+@end itemize\n")
+    (license license:bsd-3)))
+
+(define-public cl-ospm
+  (let ((pkg (sbcl-package->cl-source-package sbcl-ospm)))
+    (package
+      (inherit pkg)
+      (inputs
+       (cons (list "osicat" cl-osicat)
+             (package-inputs pkg))))))
+
+(define-public sbcl-ndebug
+  (package
+    (name "sbcl-ndebug")
+    (version "0.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/atlas-engineer/ndebug")
+             (commit version)))
+       (file-name (git-file-name "ndebug" version))
+       (sha256
+        (base32 "0wdp0wqk6clq3hh9yqmgdm55x50b5m7ly9004j2c8k5zz1rgi4rr"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     (list
+      sbcl-dissect
+      sbcl-lparallel
+      sbcl-slime-swank
+      sbcl-trivial-custom-debugger))
+    (native-inputs
+     (list sbcl-lisp-unit2))
+    (home-page "https://github.com/atlas-engineer/ndebug/")
+    (synopsis "Toolkit to build UI-aware Common Lisp debugger hooks")
+    (description
+     "NDebug provides a small set of utilities to make graphical (or, rather
+non-REPL-resident) Common Lisp applications easier to integrate with the
+standard Lisp debugger (@code{*debugger-hook*}, namely) and
+implementation-specific debugger hooks (via @code{trivial-custom-debugger}),
+especially in a multi-threaded context.")
+    (license license:bsd-3)))
+
+(define-public cl-ndebug
+  (sbcl-package->cl-source-package sbcl-ndebug))
+
+(define-public ecl-ndebug
+  (sbcl-package->ecl-package sbcl-ndebug))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index b68a798715..eee082ed8e 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -583,7 +583,7 @@ end-to-end encryption.")
 (define-public axc
   (package
     (name "axc")
-    (version "0.3.6")
+    (version "0.3.7")
     (source
      (origin
        (method git-fetch)
@@ -593,12 +593,13 @@ end-to-end encryption.")
        (modules '((guix build utils)))
        (snippet
         `(begin
-           ;; Submodules
+           ;; Empty directories meant to hold submodules that we provide as
+           ;; proper inputs below.
            (delete-file-recursively "lib")))
        (file-name
         (git-file-name name version))
        (sha256
-        (base32 "05sv7l6lk0xk4wb2bspc2sdpygrb1f0szzi82a1kyfm0fjz887b3"))))
+        (base32 "0b02b9flri374f8aw6xfz7mm9s57rb7393r8mdphv7kcsf76i7i5"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -2080,39 +2081,38 @@ support, and more.")
 (define-public freetalk
   (package
     (name "freetalk")
-    (version "4.1")
+    (version "4.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/freetalk/freetalk-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
+                "105mw7pg2mcp85r82cs4rv77nwvbw8025047364jzbq6lwllynxv"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list "CFLAGS=-fcommon")
-       #:phases
-       (modify-phases %standard-phases
-         ;; For 'system' commands in Scheme code.
-         (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out       (assoc-ref outputs "out"))
-                    (bash      (assoc-ref inputs "bash"))
-                    (coreutils (assoc-ref inputs "coreutils"))
-                    (less      (assoc-ref inputs "less")))
-               (wrap-program (string-append out "/bin/freetalk")
-                 `("PATH" ":" prefix
-                   ,(map (lambda (dir)
-                           (string-append dir "/bin"))
-                         (list bash coreutils less))))
-               #t))))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'wrap-program
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     (wrap-program (string-append out "/bin/freetalk")
+                       `("PATH" ":" suffix
+                         ,(map (lambda (command)
+                                 (dirname
+                                  (search-input-file
+                                   inputs (string-append "bin/" command))))
+                               ;; This list is not exhaustive: we assume that,
+                               ;; e.g., cat is packaged with other coreutils.
+                               (list "bash" ; src/{commands,util}.c et al
+                                     "cat"  ; extensions/first-time-run.sh
+                                     "less")))))))))) ; extensions/history.scm.
     (native-inputs
      (list autoconf automake pkg-config texinfo))
     (inputs
      (list bash
            glib
-           guile-2.0
+           guile-3.0
            less
            loudmouth
            readline))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 697fae8fc0..520d64d33c 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -3287,33 +3287,34 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.9.26")
+    (version "0.9.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "02r4dhhbn3dzhqi5cnm2vwimqk10bdlpy233n4a3590qg4krnqkd"))))
+                "11131hb6n13n51rr319jhaa9jjxl9q8n9vkxq3si7gcxlli6pdbs"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no "check" target
     (inputs
-     `(("qt" ,qtbase-5)
-       ("qtx11extras" ,qtx11extras)
-       ("alsa-lib" ,alsa-lib)
-       ("jack" ,jack-1)
-       ("libsndfile" ,libsndfile)
-       ("ladspa" ,ladspa)
-       ("lv2" ,lv2)
-       ("lilv" ,lilv)
-       ("suil" ,suil)
-       ("libsamplerate" ,libsamplerate)
-       ("libvorbis" ,libvorbis)
-       ("libmad" ,libmad)
-       ("rubberband" ,rubberband)
-       ("liblo" ,liblo)
-       ("zlib" ,zlib)))
+     (list alsa-lib
+           jack-1
+           ladspa
+           liblo
+           libmad
+           libsamplerate
+           libsndfile
+           libvorbis
+           lilv
+           lv2
+           qtbase-5
+           qtsvg
+           qtx11extras
+           rubberband
+           suil
+           zlib))
     (native-inputs
      (list pkg-config qttools))
     (home-page "https://qtractor.org/")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ff9dffb4c7..66a8167b81 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -906,14 +906,14 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public ndisc6
   (package
     (name "ndisc6")
-    (version "1.0.5")
+    (version "1.0.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.remlab.net/files/ndisc6/ndisc6-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0lgkbnnll8nrr7h63ywd42sg8fiv6jhhymd7rnml8a3yqjgjz4rn"))))
+                "1yrw8maj1646d498ax8xi0jmzk80idrc5x0913x5rwg1kc7224x7"))))
     (build-system gnu-build-system)
     (home-page "https://www.remlab.net/ndisc6/")
     (synopsis "IPv6 diagnostic tools")
@@ -3506,8 +3506,8 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
               ;; on, introducing nondeterminism (see:
               ;; https://github.com/savoirfairelinux/opendht/issues/626).
               (substitute* "tests/Makefile.am"
-                (("tests/dhtrunnertester.(h|cpp)$" all)
-                 (string-append "# " all)))))
+                (("\\bdhtrunnertester\\.(h|cpp)\\b")
+                 ""))))
           (add-after 'unpack 'fix-python-installation-prefix
             ;; Specify the installation prefix for the compiled Python module
             ;; that would otherwise attempt to installs itself to Python's own
@@ -4111,14 +4111,14 @@ stamps.")
 (define-public nbd
   (package
     (name "nbd")
-    (version "3.23")
+    (version "3.24")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://sourceforge/nbd/nbd/" version
                             "/nbd-" version ".tar.xz"))
         (sha256
-         (base32 "1d2phi0m9x32p9zddv9fpkhj1rbhlvq93wsn9niy7i3aavn71x6y"))))
+         (base32 "036ib2d5722sx9nn7jydqfpl5ici5if2z7g8xrskzcx74dniaxv8"))))
     (build-system gnu-build-system)
     (inputs
      (list glib))
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index bc628f536b..8563eefc0a 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -104,7 +104,7 @@ in the Mozilla clients.")
     (name "nss")
     ;; Also update and test the nss-certs package, which duplicates version and
     ;; source to avoid a top-level variable reference & module cycle.
-    (version "3.80")
+    (version "3.81")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -115,7 +115,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "0sjbg248kfabv9av2jwkr28fqgj4zjm2nqh9nc16p6p2qz91zgy0"))
+                "19ncvhz45dhr0nmymwkxspq9l44gaafkspxiwxbqs1hpnqxmzgx8"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
diff --git a/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch b/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
index e4f660000d..6f7ba53542 100644
--- a/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
+++ b/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
@@ -1,38 +1,48 @@
 sentry-sdk provides a link to sentry.io, a service which monitors applications deployed in the wild.
 Defaults to true. Best to just remove the option.
 
----
- dbxfs/main.py | 16 ----------------
- setup.py      |  1 -
- 2 files changed, 17 deletions(-)
-
 diff --git a/dbxfs/main.py b/dbxfs/main.py
-index 5a6cea1..5d00818 100755
+index 458e82a..784dd2a 100755
 --- a/dbxfs/main.py
 +++ b/dbxfs/main.py
-@@ -40,8 +40,6 @@ import userspacefs
+@@ -43,8 +43,6 @@ import userspacefs
  import keyring
  from keyring.errors import KeyringError
  
 -import sentry_sdk
 -
- from block_tracing import block_tracing, BLOCK_TRACING_INHERITS
+ from block_tracing import block_tracing
  
  from dbxfs.dbxfs import FileSystem as DropboxFileSystem
-@@ -299,12 +297,6 @@ def _main(argv=None):
-             config['keyring_user'] = keyring_user
-             save_config = True
+@@ -127,16 +125,6 @@ def on_new_process(proc_args):
+     level = [logging.WARNING, logging.INFO, logging.DEBUG][min(2, verbose)]
+     logging.basicConfig(level=level, handlers=[logging_stream], format=format_)
  
--    if not config.get("asked_send_error_reports", False):
--        if yes_no_input("Would you like to help us improve %s by providing anonymous error reports?" % (APP_NAME,), default_yes=True):
--            config['send_error_reports'] = True
--        config['asked_send_error_reports'] = True
+-    if int(proc_args.get('send_error_reports', '0')):
+-        version = proc_args['version']
+-        try:
+-            sentry_sdk.init("https://b4b13ebd300849bd92260507a594e618@sentry.io/1293235",
+-                            release='%s@%s' % (APP_NAME, version),
+-                            with_locals=False)
+-            sentry_sdk.set_user(dict(id=proc_args['sentry_user']))
+-        except Exception:
+-            log.warning("Failed to initialize sentry", exc_info=True)
+-
+ def create_fs(fs_args):
+     refresh_token = fs_args.get('refresh_token')
+     access_token = fs_args.get('access_token')
+@@ -527,10 +515,6 @@ deprecated, this functionality will be removed in the future.
+         config['asked_send_error_reports'] = True
+         save_config = True
+ 
+-    if config.get("send_error_reports", False) and not isinstance(config.get("sentry_user", None), str):
+-        config['sentry_user'] = uuid.uuid4().hex
 -        save_config = True
 -
-     if save_access_token and yes_no_input("Do you want \"%s\" to be the default mount point?" % (mount_point,), default_yes=True):
+     if save_refresh_token and yes_no_input("Do you want \"%s\" to be the default mount point?" % (mount_point,), default_yes=True):
          config['mount_point'] = mount_point
          save_config = True
-@@ -315,14 +307,6 @@ def _main(argv=None):
+@@ -541,15 +525,6 @@ deprecated, this functionality will be removed in the future.
  
      log.info("Starting %s...", APP_NAME)
  
@@ -41,24 +51,31 @@ index 5a6cea1..5d00818 100755
 -            sentry_sdk.init("https://b4b13ebd300849bd92260507a594e618@sentry.io/1293235",
 -                            release='%s@%s' % (APP_NAME, version),
 -                            with_locals=False)
+-            sentry_sdk.set_user(dict(id=config['sentry_user']))
 -        except Exception:
 -            log.warning("Failed to initialize sentry", exc_info=True)
 -
      if cache_folder is None:
          cache_folder = os.path.join(appdirs.user_cache_dir(APP_NAME), "file_cache")
          try:
+@@ -602,8 +577,6 @@ deprecated, this functionality will be removed in the future.
+     proc_args['verbose'] = str(args.verbose)
+     proc_args['version'] = version
+     proc_args['send_error_reports'] = str(int(config.get('send_error_reports', False)))
+-    if config.get('send_error_reports', False):
+-        proc_args['sentry_user'] = config['sentry_user']
+ 
+     return userspacefs.simple_main(mount_point, display_name,
+                                    ('dbxfs.main.create_fs', fs_args),
 diff --git a/setup.py b/setup.py
-index 89e25c6..f940d47 100644
+index ae696e9..869d0db 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -43,7 +43,6 @@ setup(
+@@ -47,7 +47,6 @@ setup(
          "privy>=6.0,<7",
          "keyring>=15.1.0",
          "keyrings.alt>=3.1,<5",
--        "sentry_sdk>=0.3,<1",
+-        "sentry_sdk>=1.0,<2",
      ],
      extras_require={
          'safefs': ["safefs"],
--- 
-2.28.0
-
diff --git a/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch b/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch
new file mode 100644
index 0000000000..139d633c44
--- /dev/null
+++ b/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch
@@ -0,0 +1,73 @@
+From f046e326d9e30772725d8fb26dc33328e418d9d3 Mon Sep 17 00:00:00 2001
+From: Antonio Sanchez <cantonios@google.com>
+Date: Fri, 17 Sep 2021 12:49:01 -0700
+Subject: [PATCH] Fix strict aliasing bug causing product_small failure.
+
+Packet loading is skipped due to aliasing violation, leading to nullopt matrix
+multiplication.
+
+Fixes #2327.
+
+
+(cherry picked from commit 3c724c44cff3f9e2e9e35351abff0b5c022b320d)
+---
+ Eigen/src/Core/arch/AVX/Complex.h    |  4 +++-
+ Eigen/src/Core/arch/AVX512/Complex.h |  4 +++-
+ Eigen/src/Core/arch/SSE/Complex.h    | 11 +++--------
+ 3 files changed, 9 insertions(+), 10 deletions(-)
+
+diff --git a/Eigen/src/Core/arch/AVX/Complex.h b/Eigen/src/Core/arch/AVX/Complex.h
+index ab7bd6c65..e9096c0a1 100644
+--- a/Eigen/src/Core/arch/AVX/Complex.h
++++ b/Eigen/src/Core/arch/AVX/Complex.h
+@@ -99,7 +99,9 @@ template<> EIGEN_STRONG_INLINE Packet4cf ploadu<Packet4cf>(const std::complex<fl
+ 
+ template<> EIGEN_STRONG_INLINE Packet4cf pset1<Packet4cf>(const std::complex<float>& from)
+ {
+-  return Packet4cf(_mm256_castpd_ps(_mm256_broadcast_sd((const double*)(const void*)&from)));
++  const float re = std::real(from);
++  const float im = std::imag(from);
++  return Packet4cf(_mm256_set_ps(im, re, im, re, im, re, im, re));
+ }
+ 
+ template<> EIGEN_STRONG_INLINE Packet4cf ploaddup<Packet4cf>(const std::complex<float>* from)
+diff --git a/Eigen/src/Core/arch/AVX512/Complex.h b/Eigen/src/Core/arch/AVX512/Complex.h
+index 49c72b3f1..074253859 100644
+--- a/Eigen/src/Core/arch/AVX512/Complex.h
++++ b/Eigen/src/Core/arch/AVX512/Complex.h
+@@ -97,7 +97,9 @@ template<> EIGEN_STRONG_INLINE Packet8cf ploadu<Packet8cf>(const std::complex<fl
+ 
+ template<> EIGEN_STRONG_INLINE Packet8cf pset1<Packet8cf>(const std::complex<float>& from)
+ {
+-  return Packet8cf(_mm512_castpd_ps(pload1<Packet8d>((const double*)(const void*)&from)));
++  const float re = std::real(from);
++  const float im = std::imag(from);
++  return Packet8cf(_mm512_set_ps(im, re, im, re, im, re, im, re, im, re, im, re, im, re, im, re));
+ }
+ 
+ template<> EIGEN_STRONG_INLINE Packet8cf ploaddup<Packet8cf>(const std::complex<float>* from)
+diff --git a/Eigen/src/Core/arch/SSE/Complex.h b/Eigen/src/Core/arch/SSE/Complex.h
+index 8fe22da46..215bfd7bb 100644
+--- a/Eigen/src/Core/arch/SSE/Complex.h
++++ b/Eigen/src/Core/arch/SSE/Complex.h
+@@ -106,14 +106,9 @@ template<> EIGEN_STRONG_INLINE Packet2cf ploadu<Packet2cf>(const std::complex<fl
+ 
+ template<> EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<float>&  from)
+ {
+-  Packet2cf res;
+-#ifdef EIGEN_VECTORIZE_SSE3
+-  res.v = _mm_castpd_ps(_mm_loaddup_pd(reinterpret_cast<double const*>(&from)));
+-#else
+-  res.v = _mm_castpd_ps(_mm_load_sd(reinterpret_cast<double const*>(&from)));
+-  res.v = _mm_movelh_ps(res.v, res.v);
+-#endif
+-  return res;
++  const float re = std::real(from);
++  const float im = std::imag(from);
++  return Packet2cf(_mm_set_ps(im, re, im, re));
+ }
+ 
+ template<> EIGEN_STRONG_INLINE Packet2cf ploaddup<Packet2cf>(const std::complex<float>* from) { return pset1<Packet2cf>(*from); }
+-- 
+2.37.0
+
diff --git a/gnu/packages/patches/eigen-remove-openmp-error-counting.patch b/gnu/packages/patches/eigen-remove-openmp-error-counting.patch
deleted file mode 100644
index 556474e8b3..0000000000
--- a/gnu/packages/patches/eigen-remove-openmp-error-counting.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From ef3cc72cb65e2d500459c178c63e349bacfa834f Mon Sep 17 00:00:00 2001
-From: Luke Peterson <hazelnusse@gmail.com>
-Date: Thu, 8 Oct 2020 12:16:53 -0700
-Subject: [PATCH] Remove error counting in OpenMP parallelize_gemm
-
-This resolves a compilation error associated with
-Eigen::eigen_assert_exception. It also eliminates the counting of
-exceptions that may occur in the OpenMP parallel section. If an
-unhandled exception occurs in this section, the behavior is non-conforming
-according to the OpenMP specification.
----
- Eigen/src/Core/products/Parallelizer.h | 14 +++++---------
- test/CMakeLists.txt                    |  2 +-
- 2 files changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h
-index 67b2442b5..a3cc05b77 100644
---- a/Eigen/src/Core/products/Parallelizer.h
-+++ b/Eigen/src/Core/products/Parallelizer.h
-@@ -132,8 +132,7 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
- 
-   ei_declare_aligned_stack_constructed_variable(GemmParallelInfo<Index>,info,threads,0);
- 
--  int errorCount = 0;
--  #pragma omp parallel num_threads(threads) reduction(+: errorCount)
-+  #pragma omp parallel num_threads(threads)
-   {
-     Index i = omp_get_thread_num();
-     // Note that the actual number of threads might be lower than the number of request ones.
-@@ -152,14 +151,11 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
-     info[i].lhs_start = r0;
-     info[i].lhs_length = actualBlockRows;
- 
--    EIGEN_TRY {
--      if(transpose) func(c0, actualBlockCols, 0, rows, info);
--      else          func(0, rows, c0, actualBlockCols, info);
--    } EIGEN_CATCH(...) {
--      ++errorCount;
--    }
-+    if(transpose)
-+      func(c0, actualBlockCols, 0, rows, info);
-+    else
-+      func(0, rows, c0, actualBlockCols, info);
-   }
--  if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception());
- #endif
- }
- 
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-index 0747aa6cb..b02577780 100644
---- a/test/CMakeLists.txt
-+++ b/test/CMakeLists.txt
-@@ -163,7 +163,7 @@ ei_add_test(constructor)
- ei_add_test(linearstructure)
- ei_add_test(integer_types)
- ei_add_test(unalignedcount)
--if(NOT EIGEN_TEST_NO_EXCEPTIONS)
-+if(NOT EIGEN_TEST_NO_EXCEPTIONS AND NOT EIGEN_TEST_OPENMP)
-   ei_add_test(exceptions)
- endif()
- ei_add_test(redux)
--- 
-GitLab
-
diff --git a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch b/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch
deleted file mode 100644
index b95b46077a..0000000000
--- a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Mon, 16 Mar 2020 22:51:37 +0000
-Subject: gnu: eigen: Stabilise sparseqr test.
-
-Taken verbatim from this[0] upstream commit.
-
-[0]: https://gitlab.com/libeigen/eigen/-/commit/3b5deeb546d4017b24846f5b0dc3296a50a039fe
-
-From 3b5deeb546d4017b24846f5b0dc3296a50a039fe Mon Sep 17 00:00:00 2001
-From: Gael Guennebaud <g.gael@free.fr>
-Date: Tue, 19 Feb 2019 22:57:51 +0100
-Subject: [PATCH] bug #899: make sparseqr unit test more stable by 1) trying
- with larger threshold and 2) relax rank computation for rank-deficient
- problems.
-
----
- test/sparseqr.cpp | 31 ++++++++++++++++++++++++++-----
- 1 file changed, 26 insertions(+), 5 deletions(-)
-
-diff --git a/test/sparseqr.cpp b/test/sparseqr.cpp
-index 3ffe62314..3576cc626 100644
---- a/test/sparseqr.cpp
-+++ b/test/sparseqr.cpp
-@@ -43,6 +43,7 @@ int generate_sparse_rectangular_problem(MatrixType& A, DenseMat& dA, int maxRows
- 
- template<typename Scalar> void test_sparseqr_scalar()
- {
-+  typedef typename NumTraits<Scalar>::Real RealScalar;
-   typedef SparseMatrix<Scalar,ColMajor> MatrixType; 
-   typedef Matrix<Scalar,Dynamic,Dynamic> DenseMat;
-   typedef Matrix<Scalar,Dynamic,1> DenseVector;
-@@ -91,14 +92,34 @@ template<typename Scalar> void test_sparseqr_scalar()
-     exit(0);
-     return;
-   }
--  
--  VERIFY_IS_APPROX(A * x, b);
--  
--  //Compare with a dense QR solver
-+
-+  // Compare with a dense QR solver
-   ColPivHouseholderQR<DenseMat> dqr(dA);
-   refX = dqr.solve(b);
-   
--  VERIFY_IS_EQUAL(dqr.rank(), solver.rank());
-+  bool rank_deficient = A.cols()>A.rows() || dqr.rank()<A.cols();
-+  if(rank_deficient)
-+  {
-+    // rank deficient problem -> we might have to increase the threshold
-+    // to get a correct solution.
-+    RealScalar th = RealScalar(20)*dA.colwise().norm().maxCoeff()*(A.rows()+A.cols()) * NumTraits<RealScalar>::epsilon();
-+    for(Index k=0; (k<16) && !test_isApprox(A*x,b); ++k)
-+    {
-+      th *= RealScalar(10);
-+      solver.setPivotThreshold(th);
-+      solver.compute(A);
-+      x = solver.solve(b);
-+    }
-+  }
-+
-+  VERIFY_IS_APPROX(A * x, b);
-+  
-+  // For rank deficient problem, the estimated rank might
-+  // be slightly off, so let's only raise a warning in such cases.
-+  if(rank_deficient) ++g_test_level;
-+  VERIFY_IS_EQUAL(solver.rank(), dqr.rank());
-+  if(rank_deficient) --g_test_level;
-+
-   if(solver.rank()==A.cols()) // full rank
-     VERIFY_IS_APPROX(x, refX);
- //   else
--- 
-2.24.1
-
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
new file mode 100644
index 0000000000..0617251194
--- /dev/null
+++ b/gnu/packages/patches/php-curl-compat.patch
@@ -0,0 +1,17 @@
+Fix test result with cURL 7.83 and later.
+
+Taken from upstream:
+
+  https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
+
+diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
+index 3b53658d6a7e..3834e4674f82 100644
+--- a/ext/curl/tests/curl_basic_007.phpt
++++ b/ext/curl/tests/curl_basic_007.phpt
+@@ -20,5 +20,5 @@ curl_close($ch);
+ 
+ ?>
+ --EXPECTF--
+-string(%d) "No URL set!%w"
++string(%d) "No URL set%A"
+ int(3)
diff --git a/gnu/packages/patches/php-openssl_x509_checkpurpose_basic.patch b/gnu/packages/patches/php-openssl_x509_checkpurpose_basic.patch
deleted file mode 100644
index 427965f231..0000000000
--- a/gnu/packages/patches/php-openssl_x509_checkpurpose_basic.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 98175fc7f1623873ceb2e9a017a319d19bfb3912 Mon Sep 17 00:00:00 2001
-From: "Christoph M. Becker" <cmbecker69@gmx.de>
-Date: Sun, 12 Dec 2021 13:41:37 +0100
-Subject: [PATCH] Fix openssl_x509_checkpurpose_basic.phpt
-
-This test fails because san-cert.pem and san-ca.pem have expired.  We
-fix that by using the CertificateGenerator to generate temporary certs
-during the test run.  Since san-cert.pem and san-ca.pem have been
-identical, we only generate one certificate.
-
-Closes GH-7763.
----
- .../openssl_x509_checkpurpose_basic.phpt      | 10 +++++-
- ext/openssl/tests/san-ca.pem                  | 15 ---------
- ext/openssl/tests/san-cert.pem                | 31 -------------------
- 3 files changed, 9 insertions(+), 47 deletions(-)
- delete mode 100644 ext/openssl/tests/san-ca.pem
- delete mode 100644 ext/openssl/tests/san-cert.pem
-
-diff --git a/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt b/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt
-index 99b4f0bdff31..35629bd93626 100644
---- a/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt
-+++ b/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt
-@@ -8,10 +8,14 @@ if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0")
- ?>
- --FILE--
- <?php
-+include 'CertificateGenerator.inc';
-+$certificateGenerator = new CertificateGenerator();
-+$certificateGenerator->saveCaCert(__DIR__ . "/san-cert.pem");
-+
- $cert = "file://" . __DIR__ . "/cert.crt";
- $bert = "file://" . __DIR__ . "/bug41033.pem";
- $sert = "file://" . __DIR__ . "/san-cert.pem";
--$cpca = __DIR__ . "/san-ca.pem";
-+$cpca = __DIR__ . "/san-cert.pem";
- $utfl = __DIR__ . "/sni_server_uk.pem";
- $rcrt = openssl_x509_read($cert);
- 
-@@ -84,6 +88,10 @@ var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpc
- var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
- var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca), $utfl));
- ?>
-+--CLEAN--
-+<?php
-+@unlink(__DIR__ . "/san-cert.pem");
-+?>
- --EXPECT--
- bool(false)
- bool(false)
-diff --git a/ext/openssl/tests/san-ca.pem b/ext/openssl/tests/san-ca.pem
-deleted file mode 100644
-index 88682ba2dcf6..000000000000
---- a/ext/openssl/tests/san-ca.pem
-+++ /dev/null
-@@ -1,15 +0,0 @@
-------BEGIN CERTIFICATE-----
--MIICYTCCAcqgAwIBAgIJAIaqxtY5dwjtMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
--BAYTAlVTMQswCQYDVQQIEwJNTjEUMBIGA1UEBxMLTWlubmVhcG9saXMxITAfBgNV
--BAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDAeFw0xMzA5MjQwODA1NTFaFw0y
--MTEyMTEwODA1NTFaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNTjEUMBIGA1UE
--BxMLTWlubmVhcG9saXMxITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRl
--ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsFGqfbU/8D+KjroQl4XMyt9m
--dcSP7iZtqphOu9nVZxYAAqfaqj8FnC/pwYV3TU6ZHndLTQAllwYT3sQBQPPGmZQ9
--clSIMEL003t3pi4ZVXkttG6Vvr+Z9PBcHhlKLQ7WMHnn4qctllWXTSoyTQpkETF3
--Fc3mrG5G37BhoUno7NECAwEAAaM9MDswOQYDVR0RBDIwMIILZXhhbXBsZS5vcmeC
--D3d3dy5leGFtcGxlLm9yZ4IQdGVzdC5leGFtcGxlLm9yZzANBgkqhkiG9w0BAQUF
--AAOBgQBf/FZhzheIcQJ+dyTk8xQ/nJLvpmBhbd1LNtfwk/MsC9UHsz4QXs9sBw1k
--rH0FjoqgM6avj7zKHJFTj6q7Rd+OX5V4HynYPhX67sWbN3KWEHffL98nGGd/bo3X
--pSjNk5vnyKYiwdUUe11Ac9csh0HcSBbhOYjy0T/i9AlQcKbuCg==
-------END CERTIFICATE-----
-diff --git a/ext/openssl/tests/san-cert.pem b/ext/openssl/tests/san-cert.pem
-deleted file mode 100644
-index 923d490e72fd..000000000000
---- a/ext/openssl/tests/san-cert.pem
-+++ /dev/null
-@@ -1,31 +0,0 @@
-------BEGIN CERTIFICATE-----
--MIICYTCCAcqgAwIBAgIJAIaqxtY5dwjtMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
--BAYTAlVTMQswCQYDVQQIEwJNTjEUMBIGA1UEBxMLTWlubmVhcG9saXMxITAfBgNV
--BAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDAeFw0xMzA5MjQwODA1NTFaFw0y
--MTEyMTEwODA1NTFaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNTjEUMBIGA1UE
--BxMLTWlubmVhcG9saXMxITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRl
--ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsFGqfbU/8D+KjroQl4XMyt9m
--dcSP7iZtqphOu9nVZxYAAqfaqj8FnC/pwYV3TU6ZHndLTQAllwYT3sQBQPPGmZQ9
--clSIMEL003t3pi4ZVXkttG6Vvr+Z9PBcHhlKLQ7WMHnn4qctllWXTSoyTQpkETF3
--Fc3mrG5G37BhoUno7NECAwEAAaM9MDswOQYDVR0RBDIwMIILZXhhbXBsZS5vcmeC
--D3d3dy5leGFtcGxlLm9yZ4IQdGVzdC5leGFtcGxlLm9yZzANBgkqhkiG9w0BAQUF
--AAOBgQBf/FZhzheIcQJ+dyTk8xQ/nJLvpmBhbd1LNtfwk/MsC9UHsz4QXs9sBw1k
--rH0FjoqgM6avj7zKHJFTj6q7Rd+OX5V4HynYPhX67sWbN3KWEHffL98nGGd/bo3X
--pSjNk5vnyKYiwdUUe11Ac9csh0HcSBbhOYjy0T/i9AlQcKbuCg==
-------END CERTIFICATE-----
-------BEGIN PRIVATE KEY-----
--MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALBRqn21P/A/io66
--EJeFzMrfZnXEj+4mbaqYTrvZ1WcWAAKn2qo/BZwv6cGFd01OmR53S00AJZcGE97E
--AUDzxpmUPXJUiDBC9NN7d6YuGVV5LbRulb6/mfTwXB4ZSi0O1jB55+KnLZZVl00q
--Mk0KZBExdxXN5qxuRt+wYaFJ6OzRAgMBAAECgYB11e5iWvqjPmQEZRdnnJU0VD8u
--n7ItT+Nk6qtb4gY8Abj6DWIW+01th5vqqJ8FvGyartFVYa69kuM+srG/zevAZWeu
--fGZtwiwZR4DRSyRcPp4rnNiksK3dkAZA6UewmRDPv8uyHJlXc5i+Ft1ILJ5Q5jgn
--UkC4z3EJP5Se9KZywQJBAOO4lRq42wLsYr2SDrQDSs4leie3FKc2bgvjF7Djosh1
--ZYbf55F5b9w1zgnccmni2HkqOnyFu4SKarmXyCsYxrkCQQDGNvnUh7/zZswrdWZ/
--PMp9zVDTh/5Oc2B4ByNLw1ERDwYhjchKgPRlQvn4cp3Pwf3UYPQ/8XGXzzEJey3A
--r0rZAkBf/tDEOgcBPXsGZQrTscuYCU5sbY5ESvqrAilbhSp7DJom+D5bIfEYyIm5
--uHd20Yzlzvpmwc1huyPwZt6X5FLpAkATDReoGMAXSesXxjnqwtIHk2NQYYLM0YQV
--JUJ8NrKk/Bevw+vbVVeoH+7ctU97t36JGiR/vNoZKD3jVmaIXZDJAkEA4wJbwzIo
--L32mu9VmZa7wjmfkraQEmXTPaA5D9lNC0AwRTgkj+x2Qe1vawNblNK9PPLBDdplQ
--L//53ADq/wv5rA==
-------END PRIVATE KEY-----
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 9addcead0a..68d0dde8b8 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -664,26 +664,26 @@ interaction.")
 (define-public podofo
   (package
     (name "podofo")
-    (version "0.9.7")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/podofo/podofo/" version
                                   "/podofo-" version ".tar.gz"))
               (sha256
                (base32
-                "1f0yvkx6nf99fp741w2y706d8bs9824x1z2gqm3rdy5fv8bfgwkw"))))
+                "0m2icjy35jd0900g0fyfrmf0zsldv1chfc1q0zcqlaqrbzhhgrjx"))))
     (build-system cmake-build-system)
     (native-inputs
      (list cppunit pkg-config))
     (inputs
-     `(("libjpeg" ,libjpeg-turbo)
-       ("libtiff" ,libtiff)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("libpng" ,libpng)
-       ("lua" ,lua-5.1)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
+     (list fontconfig
+           freetype
+           libjpeg-turbo
+           libpng
+           libtiff
+           lua-5.1
+           openssl
+           zlib))
     (arguments
      `(#:configure-flags
        (list "-DPODOFO_BUILD_SHARED=ON")
@@ -694,8 +694,7 @@ interaction.")
              (let ((freetype (assoc-ref inputs "freetype")))
                ;; Look for freetype include files in the correct place.
                (substitute* "cmake/modules/FindFREETYPE.cmake"
-                 (("/usr/local") freetype)))
-             #t)))))
+                 (("/usr/local") freetype))))))))
     (home-page "http://podofo.sourceforge.net")
     (synopsis "Tools to work with the PDF file format")
     (description
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 3d0257ea4f..259db6e2bf 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -2147,14 +2147,14 @@ CPAN::Meta object are present.")
 (define-public perl-cpanel-json-xs
   (package
     (name "perl-cpanel-json-xs")
-    (version "4.26")
+    (version "4.30")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Cpanel-JSON-XS-" version ".tar.gz"))
        (sha256
-        (base32 "0c07jfh6pq0f3hlhg0cqmznna7rlcflgrqv17mbkz9gnvg4x3szv"))))
+        (base32 "1d5xwk3j3pvc2s439vjrnhwcx44wkskda9mrwv3ix2c6pp7slpsn"))))
     (build-system perl-build-system)
     (propagated-inputs
      (list perl-common-sense))
@@ -8571,7 +8571,7 @@ for a given module is comprehensive.")
 (define-public perl-pod-parser
   (package
     (name "perl-pod-parser")
-    (version "1.63")
+    (version "1.65")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8579,7 +8579,7 @@ for a given module is comprehensive.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1k8clxxdjag56zm6cv38c3q81gj7xphfhh98l21jynwp55hvbq6v"))))
+                "12mj07a34shx5h203l693fra7ip9hc49zrd7w8gsa5llcpnbv9rv"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Pod-Parser")
     (synopsis "Modules for parsing/translating POD format documents")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 191dcafb4a..fdea27160d 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,7 +61,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.26")
+    (version "7.4.30")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -69,10 +69,9 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "1y0f1xgfi8cks6npdhrycg8r9g3q0pikqgf5h4xafpy8znmb61g3"))
-              (patches
-               (search-patches "php-bug-74093-test.patch"
-                               "php-openssl_x509_checkpurpose_basic.patch"))
+                "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
+              (patches (search-patches "php-bug-74093-test.patch"
+                                       "php-curl-compat.patch"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index daf7b933ad..6c3a47986d 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -25,6 +25,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages protobuf)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -49,16 +50,18 @@
 (define-public fstrm
   (package
     (name "fstrm")
-    (version "0.3.2")
+    (version "0.6.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://dl.farsightsecurity.com/dist/" name "/"
-                           name "-" version ".tar.gz"))
+       (uri (string-append "https://dl.farsightsecurity.com/dist/fstrm/"
+                           "fstrm-" version ".tar.gz"))
        (sha256
-        (base32
-         "1i9y8a1712aj80p5a1kcp378bnjrg3s2127q7304hklhmjcrjl1d"))))
+        (base32 "13q9iz5fpp607zvk0i39158fvvjciz4y5k14rly94b9ak0gar95w"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "--disable-static")))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -79,8 +82,8 @@ XML, JSON, MessagePack, YAML, etc.
 Frame Streams can be used either as a streaming transport over a reliable byte
 stream socket (TCP sockets, TLS connections, @code{AF_UNIX} sockets, etc.) for
 data in motion, or as a file format for data at rest.")
-    (license (list license:asl2.0
-                   (license:non-copyleft #f "See libmy/argv*")))))
+    (license (list license:expat        ; the combined work
+                   license:hpnd))))     ; libmy/argv*
 
 (define-public protobuf
   (package
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 51607127ac..9d9fbcd08f 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -21998,14 +21998,14 @@ package updates.")
 (define-public python-userspacefs
   (package
     (name "python-userspacefs")
-    (version "2.0.4")
+    (version "2.0.5")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "userspacefs" version))
         (sha256
          (base32
-          "06f2gsiypas270nqfjir4wwjlpkjp097pm6zchc7k20ggg32gv1k"))))
+          "0v0qkdwfc61s2yiq7d7amin93x5biypfmi9pfhf8yj1rdpx5yvsx"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-fusepyng))
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 3d5e545536..1d28e6eb91 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -360,25 +360,18 @@ has a small feature set similar to a traditional Bourne shell.")
 (define-public es
   (package
     (name "es")
-    (version "0.9.1")
+    (version "0.9.2")
     (source
      (origin
-       (method url-fetch)
+       (method url-fetch/tarbomb)
        (uri (string-append "https://github.com/wryun/es-shell/releases/"
                            "download/v" version "/es-" version ".tar.gz"))
        (sha256
-        (base32
-         "1fplzxc6lncz2lv2fyr2ig23rgg5j96rm2bbl1rs28mik771zd5h"))
+        (base32 "1pgmqhsk14wyvl489sxdy7kdl2gwrsq1xvkip0z90kh888mlh9n9"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:test-target "test"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 're-enter-rootdir
-           ;; The tarball has no folder.
-           (lambda _
-             (chdir ".."))))))
+     (list #:test-target "test"))
     (inputs
      (list readline))
     (native-inputs
diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm
index fd3385122e..3030e3aa49 100644
--- a/gnu/packages/toolkits.scm
+++ b/gnu/packages/toolkits.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -32,7 +32,7 @@
 (define-public imgui
   (package
     (name "imgui")
-    (version "1.87")
+    (version "1.88")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -41,7 +41,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "10qil22s5qak3as41787iz273sibpq1bq66bakgn7yvhj5fym6hz"))
+                "13cw4hx55y5z678r558hv7znfz666wh0w849c5padnj4nkpbihdi"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove bundled fonts.
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index d18a355187..0e3f01ede9 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -221,14 +221,14 @@ Python 3.3 and later, rather than on Python 2.")
 (define-public git
   (package
     (name "git")
-    (version "2.37.0")
+    (version "2.37.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "07s1jmsc1d4dlmr3qpibfzj14gy1gm049zp2vp1lw36h3dqs2zwz"))))
+                "001m3gnal902hv22gp1m44c6247357pb80db0svms74gidmjq5n8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("native-perl" ,perl)
@@ -248,7 +248,7 @@ Python 3.3 and later, rather than on Python 2.")
                  version ".tar.xz"))
            (sha256
             (base32
-             "1q68mnbpznapxxyjpysjx5lz8m6y25frxl5yshgx139c0xcr64c0"))))
+             "098yz8kzvzmmrkyiv8j79s5nryws302pnq6jcbrqbidrziwcxkjd"))))
        ;; For subtree documentation.
        ("asciidoc" ,asciidoc)
        ("docbook2x" ,docbook2x)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d702e0f685..e9f108bde5 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1559,14 +1559,14 @@ operate properly.")
 (define-public ffmpeg-5
   (package
     (name "ffmpeg")
-    (version "5.0.1")
+    (version "5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0yq0jcdc4qm5znrzylj3dsicrkk2n3n8bv28vr0a506fb7iglbpg"))))
+                "00wbd5skv6ba5yqq4ca505ncckhvpzwflcsall7madg2bsmnmssm"))))
     (build-system gnu-build-system)
     (inputs
      (append
@@ -5384,7 +5384,7 @@ brightness, contrast, and frame rate.")
 (define-public get-iplayer
   (package
     (name "get-iplayer")
-    (version "3.27")
+    (version "3.30")
     (source
       (origin
         (method git-fetch)
@@ -5393,7 +5393,7 @@ brightness, contrast, and frame rate.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "077y31gg020wjpx5pcivqgkqawcjxh5kjnvq97x2gd7i3wwc30qi"))))
+         (base32 "1kzsdq1mhm5h83bbdbhh3jhpfvq4f13ly22mfd6vvmhj8mq084pi"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -5408,8 +5408,7 @@ brightness, contrast, and frame rate.")
                     (man (string-append out "/share/man/man1")))
                (install-file "get_iplayer" bin)
                (install-file "get_iplayer.cgi" bin)
-               (install-file "get_iplayer.1" man))
-             #t))
+               (install-file "get_iplayer.1" man))))
          (add-after 'install 'wrap-program
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -5420,8 +5419,7 @@ brightness, contrast, and frame rate.")
                    prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
                (wrap-program (string-append out "/bin/get_iplayer.cgi")
                  `("PERL5LIB" ":"
-                   prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
-               #t))))))
+                   prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))))))))
     (inputs
      (list perl-mojolicious perl-lwp-protocol-https perl-xml-libxml))
     (home-page "https://github.com/get-iplayer/get_iplayer")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index e184f54e81..136574b270 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2334,14 +2334,14 @@ administrators and developers in managing the database.")
 (define-public osinfo-db
   (package
     (name "osinfo-db")
-    (version "20211216")
+    (version "20220516")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "10hhpciqk4lzsj66zkdvghd1i5zh6hg1fn9as4qhwcr1wnqfgv09"))))
+                "0vfsdk3c6n6y04c5rf92m31zvl969kaniyx2fqywbp69mzc6j3yn"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index af6be7257d..3ab7dc6be9 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2022 Lu hui <luhux76@gmail.com>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
+;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -676,13 +677,13 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer
 (define-public openconnect
   (package
    (name "openconnect")
-   (version "8.10")
+   (version "9.01")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/"
                                 "openconnect-" version ".tar.gz"))
             (sha256
-             (base32 "1cdsx4nsrwawbsisfkldfc9i4qn60g03vxb13nzppr2br9p4rrih"))))
+             (base32 "1iz4j00031a5ircrx30lkiwf58yl9kc827m4ssck4yg963wgmmxk"))))
    (build-system gnu-build-system)
    (propagated-inputs
     (list libxml2 gnutls zlib))
@@ -769,7 +770,7 @@ and probably others.")
 (define-public openfortivpn
   (package
     (name "openfortivpn")
-    (version "1.15.0")
+    (version "1.17.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -778,7 +779,7 @@ and probably others.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qsfgpxg553s8rc9cyrc4k96z0pislxsdxb9wyhp8fdprkak2mw2"))))
+                "0an58f0qcyxdx3d5zb5m8vi45a0251b950b5lh16572n8z2g6s2l"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf automake pkg-config))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 0e2a441225..27b3a5ce67 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -2881,7 +2881,7 @@ application classes.")
          "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
     (build-system perl-build-system)
     (native-inputs
-     (list perl-module-install perl-test-www-mechanize-catalyst))
+     (list perl-module-install perl-pod-parser perl-test-www-mechanize-catalyst))
     (propagated-inputs
      (list perl-catalyst-runtime perl-moose perl-namespace-autoclean
            starman))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index ac08769c7e..9157c4a9ed 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -161,6 +161,48 @@ specified window, otherwise it outputs the title of the active window.  With
 outputs when titles change.")
     (license license:unlicense)))
 
+(define-public xvkbd
+  (package
+    (name "xvkbd")
+    (version "4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://t-sato.in.coocan.jp/xvkbd/xvkbd-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1x5yldv9y99cw5hzzs73ygdn1z80zns9hz0baa355r711zghfbcm"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'remove-bugs
+                 ;; Both variables are inexplicably but explicitly set to
+                 ;; $(pkg-config --variable=VARIABLE xt) instead of our own.
+                 (lambda _
+                   (substitute* "Makefile.in"
+                     (("^(appdefaultdir|datarootdir) = .*" _ variable)
+                      (string-append variable " = @" variable "@\n"))))))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list libxaw libxmu libxtst))
+    (home-page "http://t-sato.in.coocan.jp/xvkbd/")
+    (synopsis "Virtual computer keyboard for the X Window System")
+    (description
+     "The @acronym{xvkbd, X virtual keyboard} displays a drawing of a computer
+keyboard in a window on the screen.  Clicking on its keys sends the
+corresponding keystroke(s) to other X clients, as if typed on a physical
+keyboard.
+
+This is useful for systems without keyboard hardware but with a pointing device,
+such as kiosk terminals or handheld devices with touch screens.
+
+A limited number of keyboard layouts are available, as is dictionary completion.
+You can also use xvkbd to send a series of predetermined keystrokes from the
+command line, without displaying a keyboard at all.")
+    (license license:gpl2+)))
+
 (define-public arandr
   (package
     (name "arandr")
diff --git a/guix/build/clojure-build-system.scm b/guix/build/clojure-build-system.scm
index 7d494078ea..cacbefb386 100644
--- a/guix/build/clojure-build-system.scm
+++ b/guix/build/clojure-build-system.scm
@@ -22,11 +22,15 @@
                           ant-build))
   #:use-module (guix build clojure-utils)
   #:use-module (guix build java-utils)
+  #:use-module (guix build syscalls)
   #:use-module (guix build utils)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:export (%standard-phases
-            clojure-build))
+            clojure-build
+            reset-class-timestamps))
 
 ;; Commentary:
 ;;
@@ -108,6 +112,55 @@ priority over TEST-INCLUDE."
                   jar-names)))
   #t)
 
+(define (regular-jar-file? file stat)
+  "Predicate returning true if FILE is ending on '.jar'
+and STAT indicates it is a regular file."
+    (and (string-suffix? ".jar" file)
+         (eq? 'regular (stat:type stat))))
+
+;; XXX: The only difference compared to 'strip-jar-timestamps' in
+;; ant-build-system.scm is the date.  TODO: Adjust and factorize.
+(define* (reset-class-timestamps #:key outputs #:allow-other-keys)
+  "Unpack all jar archives, reset the timestamp of all contained class files,
+and repack them.  This is necessary to ensure that archives are reproducible."
+  (define (repack-archive jar)
+    (format #t "resetting class timestamps and repacking ~a\n" jar)
+
+    ;; Note: .class files need to be strictly newer than source files,
+    ;; otherwise the Clojure compiler will recompile sources.
+    (let* ((early-1980 315619200) ; 1980-01-02 UTC
+           (dir (mkdtemp! "jar-contents.XXXXXX"))
+           (manifest (string-append dir "/META-INF/MANIFEST.MF")))
+      (with-directory-excursion dir
+        (invoke "jar" "xf" jar))
+      (delete-file jar)
+      (for-each (lambda (file)
+                  (let ((s (lstat file)))
+                    (unless (eq? (stat:type s) 'symlink)
+                      (when (string-match "^(.*)\\.class$" file)
+                        (utime file early-1980 early-1980)))))
+                (find-files dir #:directories? #t))
+      ;; The jar tool will always set the timestamp on the manifest file
+      ;; and the containing directory to the current time, even when we
+      ;; reuse an existing manifest file.  To avoid this we use "zip"
+      ;; instead of "jar".  It is important that the manifest appears
+      ;; first.
+      (with-directory-excursion dir
+        (let* ((files (find-files "." ".*" #:directories? #t))
+               ;; To ensure that the reference scanner can detect all
+               ;; store references in the jars we disable compression
+               ;; with the "-0" option.
+               (command (if (file-exists? manifest)
+                            `("zip" "-0" "-X" ,jar ,manifest ,@files)
+                            `("zip" "-0" "-X" ,jar ,@files))))
+          (apply invoke command)))
+      (utime jar 0 0)))
+  (for-each (match-lambda
+              ((output . directory)
+               (for-each repack-archive
+                         (find-files directory regular-jar-file?))))
+            outputs))
+
 (define-with-docs install
   "Standard 'install' phase for clojure-build-system."
   (install-jars "./"))
@@ -119,7 +172,8 @@ priority over TEST-INCLUDE."
     (replace 'build build)
     (replace 'check check)
     (replace 'install install)
-    (add-after 'install-license-files 'install-doc install-doc)))
+    (add-after 'install-license-files 'install-doc install-doc)
+    (add-after 'reset-gzip-timestamps 'reset-class-timestamps reset-class-timestamps)))
 
 (define* (clojure-build #:key
                         inputs
diff --git a/guix/download.scm b/guix/download.scm
index 1a80e3abd2..d459ba8cf1 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -269,49 +269,55 @@
       (kde
        "https://download.kde.org/"
        "https://download.kde.org/Attic/"    ; for when it gets archived.
-       ;; Mirrors from http://files.kde.org/extra/mirrors.html
+       ;; I could not find the classic static mirror list anymore.  Instead,
+       ;; add ‘.mirrorlist’ to the end of a recent download.kde.org tarball URL.
        ;; Europe
-       "http://mirror.easyname.at/kde"
-       "http://mirror.karneval.cz/pub/kde"
-       "http://ftp.fi.muni.cz/pub/kde/"
-       "http://mirror.oss.maxcdn.com/kde/"
-       "http://ftp5.gwdg.de/pub/linux/kde/"
-       "http://ftp-stud.fht-esslingen.de/Mirrors/ftp.kde.org/pub/kde/"
-       "http://mirror.klaus-uwe.me/kde/ftp/"
-       "http://kde.beta.mirror.ga/"
-       "http://kde.alpha.mirror.ga/"
-       "http://mirror.netcologne.de/kde"
-       "http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/kde/"
-       "http://ftp.rz.uni-wuerzburg.de/pub/unix/kde/"
-       "http://mirrors.dotsrc.org/kde/"
-       "http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/"
-       "http://kde-mirror.freenux.org/"
-       "http://mirrors.ircam.fr/pub/KDE/"
-       "http://www-ftp.lip6.fr/pub/X11/kde/"
-       "http://fr2.rpmfind.net/linux/KDE/"
+       "https://mirrors.xtom.de/kde/"
+       "https://mirror.lyrahosting.com/pub/kde/"
+       "https://mirrors.xtom.nl/kde/"
+       "https://mirror.hs-esslingen.de/Mirrors/ftp.kde.org/pub/kde/"
+       "https://mirror.kumi.systems/kde/ftp/"
+       "https://mirrors.ircam.fr/pub/KDE/"
+       "https://ftp.gwdg.de/pub/linux/kde/"
+       "https://mirrors.gethosted.online/kde/pub/kde/"
+       "https://fr2.rpmfind.net/linux/KDE/"
+       "https://mirror.faigner.de/kde/ftp/"
+       "https://www.mirrorservice.org/sites/download.kde.org/"
+       "https://mirrors.ukfast.co.uk/sites/kde.org/ftp/"
+       "https://mirrors.dotsrc.org/kde/"
        "http://kde.mirror.anlx.net/"
-       "http://www.mirrorservice.org/sites/ftp.kde.org/pub/kde/"
-       "http://ftp.heanet.ie/mirrors/ftp.kde.org/"
-       "http://ftp.nluug.nl/pub/windowing/kde/"
-       "http://ftp.surfnet.nl/windowing/kde/"
-       "http://ftp.icm.edu.pl/pub/unix/kde/"
-       "http://ftp.pbone.net/pub/kde/"
-       "http://piotrkosoft.net/pub/mirrors/ftp.kde.org/"
-       "http://mirrors.fe.up.pt/pub/kde/"
-       "http://ftp.iasi.roedu.net/pub/mirrors/ftp.kde.org/"
-       "http://ftp.acc.umu.se/mirror/kde.org/ftp/"
-       "http://kde.ip-connect.vn.ua/"
+       "https://mirror.karneval.cz/pub/kde/"
+       "https://ftp.fi.muni.cz/pub/kde/"
+       "https://www-ftp.lip6.fr/pub/X11/kde/"
+       "https://ftp.icm.edu.pl/pub/unix/kde/"
+       "https://kde.mirror.garr.it/kde/ftp/"
+       "https://ftp.acc.umu.se/mirror/kde.org/ftp/"
+       "https://mirrors.up.pt/pub/kde/"
+       "https://mirrors.nav.ro/kde/"
+       "https://mirrors.xtom.ee/kde/"
+       "https://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/"
+       "https://kde.ip-connect.vn.ua/"
+       "https://mirrors.netix.net/kde/"
+       "https://ftp.cc.uoc.gr/mirrors/kde/"
        ;; North America
-       "http://mirror.its.dal.ca/kde/"
-       "http://mirror.csclub.uwaterloo.ca/kde/"
-       "http://mirror.cc.columbia.edu/pub/software/kde/"
-       "http://kde.mirrors.hoobly.com/"
-       "http://ftp.ussg.iu.edu/kde/"
-       "http://mirrors.mit.edu/kde/"
-       "http://kde.mirrors.tds.net/pub/kde/"
+       "https://mirror.its.dal.ca/kde/"
+       "https://nnenix.mm.fcix.net/kdeftp/"
+       "https://mirrors.mit.edu/kde/"
+       "https://mirror.csclub.uwaterloo.ca/kde/"
+       "https://mirror.fcix.net/kdeftp/"
+       "https://mirrors.ocf.berkeley.edu/kde/"
+       "https://mirrors.xtom.com/kde/"
+       ;; South America
+       "https://kde.c3sl.ufpr.br/"
+       ;; Asia
+       "https://mirrors.bfsu.edu.cn/kde/"
+       "https://ftp-srv2.kddi-research.jp/pub/X11/kde/"
+       "https://mirrors.xtom.jp/kde/"
+       "https://mirrors.xtom.hk/kde/"
+       ;; Africa
+       "http://mirror.retentionrange.co.bw/kde/"
        ;; Oceania
-       "http://ftp.kddlabs.co.jp/pub/X11/kde/"
-       "http://kde.mirror.uber.com.au/")
+       "https://mirrors.xtom.au/kde/")
       (openbsd
        "https://ftp.openbsd.org/pub/OpenBSD/"
        ;; Anycast CDN redirecting to your friendly local mirror.
diff --git a/guix/scripts/deploy.scm b/guix/scripts/deploy.scm
index 27478eabc0..2c76645173 100644
--- a/guix/scripts/deploy.scm
+++ b/guix/scripts/deploy.scm
@@ -76,6 +76,9 @@ Perform the deployment specified by FILE.\n"))
                  (lambda args
                    (show-version-and-exit "guix deploy")))
 
+         (option '(#\n "dry-run") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'dry-run? #t result)))
          (option '(#\x "execute") #f #f
                  (lambda (opt name arg result)
                    (alist-cons 'execute-command? #t result)))
@@ -110,14 +113,20 @@ Perform the deployment specified by FILE.\n"))
                                            environment-modules))))
     (load* file module)))
 
-(define (show-what-to-deploy machines)
+(define* (show-what-to-deploy machines #:key (dry-run? #f))
   "Show the list of machines to deploy, MACHINES."
   (let ((count (length machines)))
-    (format (current-error-port)
-            (N_ "The following ~d machine will be deployed:~%"
-                "The following ~d machines will be deployed:~%"
+    (if dry-run?
+        (format (current-error-port)
+                (N_ "The following ~d machine would be deployed:~%"
+                    "The following ~d machines would be deployed:~%"
+                    count)
                 count)
-            count)
+        (format (current-error-port)
+                (N_ "The following ~d machine will be deployed:~%"
+                    "The following ~d machines will be deployed:~%"
+                    count)
+                count))
     (display (indented-string
               (fill-paragraph (string-join (map machine-display-name machines)
                                            ", ")
@@ -241,6 +250,7 @@ otherwise."
                                      #:argument-handler handle-argument))
            (file (assq-ref opts 'file))
            (machines (and file (load-source-file file)))
+           (dry-run? (assoc-ref opts 'dry-run?))
            (execute-command? (assoc-ref opts 'execute-command?)))
       (unless file
         (leave (G_ "missing deployment file argument~%")))
@@ -254,7 +264,8 @@ otherwise."
           (with-build-handler (build-notifier #:use-substitutes?
                                               (assoc-ref opts 'substitutes?)
                                               #:verbosity
-                                              (assoc-ref opts 'verbosity))
+                                              (assoc-ref opts 'verbosity)
+                                              #:dry-run? dry-run?)
             (parameterize ((%graft? (assq-ref opts 'graft?)))
               (if execute-command?
                   (match command
@@ -270,7 +281,8 @@ otherwise."
                     (_
                      (leave (G_ "'-x' specified but no command given~%"))))
                   (begin
-                    (show-what-to-deploy machines)
-                    (map/accumulate-builds store
-                                           (cut deploy-machine* store <>)
-                                           machines))))))))))
+                    (show-what-to-deploy machines #:dry-run? dry-run?)
+                    (unless dry-run?
+                      (map/accumulate-builds store
+                                             (cut deploy-machine* store <>)
+                                             machines)))))))))))
diff --git a/tests/texlive.scm b/tests/texlive.scm
index f718e3a0a0..c1bd50b75f 100644
--- a/tests/texlive.scm
+++ b/tests/texlive.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -184,6 +184,7 @@ completely compatible with Plain TeX.")
                                  "tex/texsis/config/")
                           ('base32 (? string? hash))
                           #:trivial? #t))
+               ('version . any)
                ('propagated-inputs
                 ('list 'texlive-cm
                        'texlive-hyphen-base