summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2021-06-06 21:16:32 +0200
committerMarius Bakke <marius@gnu.org>2021-06-06 21:16:32 +0200
commit8d59c262ada2e2167196a8fb8cbebd9c329a79dd (patch)
tree85a74de8cc23a2f0179c0b9f0adfa4c274449a0c
parente7f0835b07d868fd447aa64c873174fa385e1699 (diff)
parenta068ed6a5f5b3535fce49ac4eca1fec82edd6fdc (diff)
downloadguix-8d59c262ada2e2167196a8fb8cbebd9c329a79dd.tar.gz
Merge branch 'master' into core-updates
 Conflicts:
	gnu/local.mk
	gnu/packages/algebra.scm
	gnu/packages/bioinformatics.scm
	gnu/packages/curl.scm
	gnu/packages/docbook.scm
	gnu/packages/emacs-xyz.scm
	gnu/packages/maths.scm
	gnu/packages/plotutils.scm
	gnu/packages/python-web.scm
	gnu/packages/python-xyz.scm
	gnu/packages/radio.scm
	gnu/packages/readline.scm
	gnu/packages/tls.scm
	gnu/packages/xml.scm
	gnu/packages/xorg.scm
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac6
-rw-r--r--doc/contributing.texi36
-rw-r--r--doc/guix.texi58
-rw-r--r--etc/guix-daemon.cil.in7
-rw-r--r--etc/news.scm35
-rw-r--r--gnu/bootloader/u-boot.scm7
-rw-r--r--gnu/build/linux-boot.scm16
-rw-r--r--gnu/local.mk13
-rw-r--r--gnu/machine/ssh.scm41
-rw-r--r--gnu/packages/admin.scm42
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/animation.scm78
-rw-r--r--gnu/packages/aspell.scm4
-rw-r--r--gnu/packages/astronomy.scm4
-rw-r--r--gnu/packages/audio.scm32
-rw-r--r--gnu/packages/axoloti.scm5
-rw-r--r--gnu/packages/benchmark.scm19
-rw-r--r--gnu/packages/bioconductor.scm3531
-rw-r--r--gnu/packages/bioinformatics.scm2178
-rw-r--r--gnu/packages/check.scm9
-rw-r--r--gnu/packages/chromium.scm31
-rw-r--r--gnu/packages/ci.scm8
-rw-r--r--gnu/packages/cluster.scm45
-rw-r--r--gnu/packages/compression.scm14
-rw-r--r--gnu/packages/cran.scm904
-rw-r--r--gnu/packages/crates-graphics.scm119
-rw-r--r--gnu/packages/crates-io.scm1664
-rw-r--r--gnu/packages/crypto.scm12
-rw-r--r--gnu/packages/cryptsetup.scm26
-rw-r--r--gnu/packages/curl.scm15
-rw-r--r--gnu/packages/databases.scm20
-rw-r--r--gnu/packages/dictionaries.scm5
-rw-r--r--gnu/packages/diffoscope.scm4
-rw-r--r--gnu/packages/disk.scm50
-rw-r--r--gnu/packages/django.scm17
-rw-r--r--gnu/packages/dns.scm3
-rw-r--r--gnu/packages/education.scm38
-rw-r--r--gnu/packages/emacs-xyz.scm1660
-rw-r--r--gnu/packages/emacs.scm12
-rw-r--r--gnu/packages/emulators.scm404
-rw-r--r--gnu/packages/engineering.scm4
-rw-r--r--gnu/packages/entr.scm5
-rw-r--r--gnu/packages/file-systems.scm37
-rw-r--r--gnu/packages/fltk.scm6
-rw-r--r--gnu/packages/fonts.scm28
-rw-r--r--gnu/packages/fpga.scm7
-rw-r--r--gnu/packages/freeipmi.scm6
-rw-r--r--gnu/packages/ftp.scm4
-rw-r--r--gnu/packages/game-development.scm4
-rw-r--r--gnu/packages/games.scm72
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/gnome.scm20
-rw-r--r--gnu/packages/gnucash.scm12
-rw-r--r--gnu/packages/gnuzilla.scm63
-rw-r--r--gnu/packages/guile-xyz.scm39
-rw-r--r--gnu/packages/guile.scm4
-rw-r--r--gnu/packages/hardware.scm4
-rw-r--r--gnu/packages/i2p.scm74
-rw-r--r--gnu/packages/icu4c.scm16
-rw-r--r--gnu/packages/image-processing.scm5
-rw-r--r--gnu/packages/image.scm4
-rw-r--r--gnu/packages/installers.scm3
-rw-r--r--gnu/packages/jami.scm13
-rw-r--r--gnu/packages/julia-jll.scm2667
-rw-r--r--gnu/packages/julia-xyz.scm1334
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/libreoffice.scm4
-rw-r--r--gnu/packages/linux.scm77
-rw-r--r--gnu/packages/lisp-xyz.scm458
-rw-r--r--gnu/packages/lisp.scm18
-rw-r--r--gnu/packages/llvm.scm10
-rw-r--r--gnu/packages/lxqt.scm211
-rw-r--r--gnu/packages/mail.scm19
-rw-r--r--gnu/packages/markup.scm6
-rw-r--r--gnu/packages/maths.scm179
-rw-r--r--gnu/packages/mc.scm32
-rw-r--r--gnu/packages/mes.scm5
-rw-r--r--gnu/packages/messaging.scm41
-rw-r--r--gnu/packages/monitoring.scm30
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/mtools.scm4
-rw-r--r--gnu/packages/music.scm93
-rw-r--r--gnu/packages/networking.scm190
-rw-r--r--gnu/packages/ocaml.scm789
-rw-r--r--gnu/packages/package-management.scm46
-rw-r--r--gnu/packages/parallel.scm36
-rw-r--r--gnu/packages/patches/amule-crypto-6.patch45
-rw-r--r--gnu/packages/patches/emacs-geiser-autoload-activate-implementation.patch26
-rw-r--r--gnu/packages/patches/emacs-geiser-guile-auto-activate.patch34
-rw-r--r--gnu/packages/patches/freebayes-devendor-deps.patch152
-rw-r--r--gnu/packages/patches/lksctp-tools-1.0.18-fix-header-file-name.patch32
-rw-r--r--gnu/packages/patches/minimap2-aarch64-support.patch52
-rw-r--r--gnu/packages/patches/mosaicatcher-unbundle-htslib.patch49
-rw-r--r--gnu/packages/patches/nsis-source-date-epoch.patch23
-rw-r--r--gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch148
-rw-r--r--gnu/packages/patches/wgetpaste-update-bpaste.patch27
-rw-r--r--gnu/packages/pep.scm143
-rw-r--r--gnu/packages/perl.scm156
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/protobuf.scm10
-rw-r--r--gnu/packages/python-check.scm39
-rw-r--r--gnu/packages/python-science.scm86
-rw-r--r--gnu/packages/python-web.scm40
-rw-r--r--gnu/packages/python-xyz.scm391
-rw-r--r--gnu/packages/python.scm4
-rw-r--r--gnu/packages/racket.scm6
-rw-r--r--gnu/packages/radio.scm434
-rw-r--r--gnu/packages/readline.scm28
-rw-r--r--gnu/packages/rsync.scm41
-rw-r--r--gnu/packages/rust-apps.scm67
-rw-r--r--gnu/packages/security-token.scm46
-rw-r--r--gnu/packages/sequoia.scm74
-rw-r--r--gnu/packages/serialization.scm4
-rw-r--r--gnu/packages/shells.scm4
-rw-r--r--gnu/packages/smalltalk.scm15
-rw-r--r--gnu/packages/sphinx.scm56
-rw-r--r--gnu/packages/statistics.scm163
-rw-r--r--gnu/packages/suckless.scm8
-rw-r--r--gnu/packages/telephony.scm6
-rw-r--r--gnu/packages/text-editors.scm11
-rw-r--r--gnu/packages/tls.scm23
-rw-r--r--gnu/packages/tryton.scm239
-rw-r--r--gnu/packages/version-control.scm14
-rw-r--r--gnu/packages/video.scm125
-rw-r--r--gnu/packages/vim.scm2
-rw-r--r--gnu/packages/virtualization.scm30
-rw-r--r--gnu/packages/vnc.scm4
-rw-r--r--gnu/packages/web-browsers.scm22
-rw-r--r--gnu/packages/web.scm28
-rw-r--r--gnu/packages/wget.scm20
-rw-r--r--gnu/packages/xdisorg.scm79
-rw-r--r--gnu/packages/xiph.scm39
-rw-r--r--gnu/packages/xml.scm21
-rw-r--r--gnu/packages/xorg.scm31
-rw-r--r--gnu/services/cuirass.scm12
-rw-r--r--gnu/services/dns.scm10
-rw-r--r--gnu/services/networking.scm3
-rw-r--r--gnu/services/vpn.scm4
-rw-r--r--gnu/tests/linux-modules.scm13
-rw-r--r--gnu/tests/web.scm14
-rw-r--r--guix/build-system/r.scm2
-rw-r--r--guix/ci.scm25
-rw-r--r--guix/download.scm1
-rw-r--r--guix/git-download.scm79
-rw-r--r--guix/gnu-maintenance.scm32
-rw-r--r--guix/hg-download.scm24
-rw-r--r--guix/import/cran.scm4
-rw-r--r--guix/import/egg.scm352
-rw-r--r--guix/import/hackage.scm27
-rw-r--r--guix/import/opam.scm4
-rw-r--r--guix/licenses.scm8
-rw-r--r--guix/lint.scm171
-rw-r--r--guix/profiles.scm5
-rw-r--r--guix/progress.scm16
-rw-r--r--guix/scripts/archive.scm3
-rw-r--r--guix/scripts/build.scm3
-rw-r--r--guix/scripts/copy.scm9
-rw-r--r--guix/scripts/deploy.scm12
-rw-r--r--guix/scripts/edit.scm4
-rw-r--r--guix/scripts/environment.scm3
-rw-r--r--guix/scripts/graph.scm5
-rw-r--r--guix/scripts/import.scm4
-rw-r--r--guix/scripts/import/egg.scm107
-rw-r--r--guix/scripts/package.scm8
-rw-r--r--guix/scripts/publish.scm160
-rwxr-xr-xguix/scripts/substitute.scm11
-rw-r--r--guix/store.scm16
-rw-r--r--guix/swh.scm20
-rw-r--r--guix/ui.scm60
-rw-r--r--po/guix/POTFILES.in3
-rw-r--r--tests/egg.scm132
-rw-r--r--tests/gnu-maintenance.scm3
-rw-r--r--tests/hackage.scm7
-rw-r--r--tests/lint.scm55
-rw-r--r--tests/opam.scm4
176 files changed, 16004 insertions, 6402 deletions
diff --git a/Makefile.am b/Makefile.am
index a10e06e5a7..f06b294f28 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -247,6 +247,7 @@ MODULES =					\
   guix/import/cpan.scm				\
   guix/import/cran.scm				\
   guix/import/crate.scm				\
+  guix/import/egg.scm   			\
   guix/import/elpa.scm   			\
   guix/import/gem.scm				\
   guix/import/github.scm   			\
@@ -292,6 +293,7 @@ MODULES =					\
   guix/scripts/challenge.scm			\
   guix/scripts/import/crate.scm			\
   guix/scripts/import/cran.scm			\
+  guix/scripts/import/egg.scm   		\
   guix/scripts/import/elpa.scm  		\
   guix/scripts/import/gem.scm			\
   guix/scripts/import/gnu.scm			\
@@ -450,6 +452,7 @@ SCM_TESTS =					\
   tests/debug-link.scm				\
   tests/derivations.scm			\
   tests/discovery.scm				\
+  tests/egg.scm				\
   tests/elpa.scm				\
   tests/file-systems.scm			\
   tests/gem.scm				\
diff --git a/configure.ac b/configure.ac
index 583b902361..84592f6041 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,16 +96,12 @@ m4_pattern_forbid([^GUIX_])
 
 dnl Search for 'guile' and 'guild'.  This macro defines
 dnl 'GUILE_EFFECTIVE_VERSION'.
-GUILE_PKG([3.0 2.2])
+GUILE_PKG([3.0])
 GUILE_PROGS
 if test "x$GUILD" = "x"; then
    AC_MSG_ERROR(['guild' binary not found; please check your Guile installation.])
 fi
 
-if test "x$GUILE_EFFECTIVE_VERSION" = "x2.2"; then
-  PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.6])
-fi
-
 dnl Get CFLAGS and LDFLAGS for libguile.
 GUILE_FLAGS
 
diff --git a/doc/contributing.texi b/doc/contributing.texi
index c3419912a1..fa8c0cf3ba 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1018,20 +1018,21 @@ Make sure the package builds on your platform, using @code{guix build
 We recommend you also try building the package on other supported
 platforms.  As you may not have access to actual hardware platforms, we
 recommend using the @code{qemu-binfmt-service-type} to emulate them.  In
-order to enable it, add the following service to the list of services in
-your @code{operating-system} configuration:
+order to enable it, add the @code{virtualization} service module and the
+following service to the list of services in your @code{operating-system}
+configuration:
 
 @lisp
 (service qemu-binfmt-service-type
  (qemu-binfmt-configuration
-   (platforms (lookup-qemu-platforms "arm" "aarch64"))
+   (platforms (lookup-qemu-platforms "arm" "aarch64"))))
 @end lisp
 
 Then reconfigure your system.
 
 You can then build packages for different platforms by specifying the
 @code{--system} option.  For example, to build the "hello" package for
-the armhf, aarch64, or mips64 architectures, you would run the following
+the armhf or aarch64 architectures, you would run the following
 commands, respectively:
 @example
 guix build --system=armhf-linux --rounds=2 hello
@@ -1062,7 +1063,7 @@ and which optional dependencies should be used.  In particular, avoid adding
 the @code{texlive-tiny} package or @code{texlive-union} procedure instead.
 
 @item
-For important changes, check that dependent package (if applicable) are
+For important changes, check that dependent packages (if applicable) are
 not affected by the change; @code{guix refresh --list-dependent
 @var{package}} will help you do that (@pxref{Invoking guix refresh}).
 
@@ -1180,6 +1181,11 @@ MIME attachments.  You are advised to pay attention if your email client
 changes anything like line breaks or indentation which could potentially
 break the patches.
 
+Expect some delay when you submit your very first patch to
+@email{guix-patches@@gnu.org}. You have to wait until you get an
+acknowledgement with the assigned tracking number. Future acknowledgements
+should not be delayed.
+
 When a bug is resolved, please close the thread by sending an email to
 @email{@var{NNN}-done@@debbugs.gnu.org}.
 
@@ -1517,20 +1523,20 @@ doubt, please contact us, we will be happy to help!
 @table @asis
 @item guix
 Guix is written in the Guile programming language, and some strings contain
-special formating that is interpreted by Guile.  These special formating
+special formatting that is interpreted by Guile.  These special formatting
 should be highlighted by Weblate.  They start with @code{~} followed by one
 or more characters.
 
-When printing the string, Guile replaces the special formating symbols with
+When printing the string, Guile replaces the special formatting symbols with
 actual values.  For instance, the string @samp{ambiguous package specification
 `~a'} would be substituted to contain said package specification instead of
-@code{~a}.  To properly translate this string, you must keep the formating
+@code{~a}.  To properly translate this string, you must keep the formatting
 code in your translation, although you can place it where it makes sense in
 your language.  For instance, the French translation says @samp{spécification
 du paquet « ~a » ambiguë} because the adjective needs to be placed in the
 end of the sentence.
 
-If there are multiple formating symbols, make sure to respect the order.
+If there are multiple formatting symbols, make sure to respect the order.
 Guile does not know in which order you intended the string to be read, so it
 will substitute the symbols in the same order as the English sentence.
 
@@ -1538,9 +1544,9 @@ As an example, you cannot translate @samp{package '~a' has been superseded by
 '~a'} by @samp{'~a' superseeds package '~a'}, because the meaning would be
 reversed.  If @var{foo} is superseded by @var{bar}, the translation would read
 @samp{'foo' superseeds package 'bar'}.  To work around this problem, it
-is possible to use more advanced formating to select a given piece of data,
+is possible to use more advanced formatting to select a given piece of data,
 instead of following the default English order.  @xref{Formatted Output,,,
-guile, GNU Guile Reference Manual}, for more information on formating in Guile.
+guile, GNU Guile Reference Manual}, for more information on formatting in Guile.
 
 @item packages
 
@@ -1551,7 +1557,7 @@ and Descriptions}).   Texinfo markup looks like @samp{@@code@{rm -rf@}},
 The characters after ``@@'' form the name of the markup, and the text between
 ``@{'' and ``@}'' is its content.  In general, you should not translate the
 content of markup like @code{@@code}, as it contains literal code that do not
-change with language.  You can translate the content of formating markup such
+change with language.  You can translate the content of formatting markup such
 as @code{@@emph}, @code{@@i}, @code{@@itemize}, @code{@@item}.  However, do
 not translate the name of the markup, or it will not be recognized.  Do
 not translate the word after @code{@@end}, it is the name of the markup that
@@ -1581,10 +1587,10 @@ The manual and the cookbook both use Texinfo.  As for @code{packages}, please
 keep Texinfo markup as is.  There are more possible markup types in the manual
 than in the package descriptions.  In general, do not translate the content
 of @code{@@code}, @code{@@file}, @code{@@var}, @code{@@value}, etc.  You
-should translate the content of formating markup such as @code{@@emph},
+should translate the content of formatting markup such as @code{@@emph},
 @code{@@i}, etc.
 
-The manual contains sections that can be refered to by name by @code{@@ref},
+The manual contains sections that can be referred to by name by @code{@@ref},
 @code{@@xref} and @code{@@pxref}.  We have a mechanism in place so you do
 not have to translate their content.  If you keep the English title, we will
 automatically replace it with your translation of that title.  This ensures
@@ -1664,7 +1670,7 @@ synchronize it with our guix and artworks repositories after checking no issue
 was introduced in the translation.
 
 Developers can download the latest PO files from weblate in the Guix
-repository by runnig the @command{make download-po} target.  It will
+repository by running the @command{make download-po} command.  It will
 automatically download the latest files from weblate, reformat them to a
 canonical form, and check they do not contain issues.  The manual needs to be
 built again to check for additional issues that might crash Texinfo.
diff --git a/doc/guix.texi b/doc/guix.texi
index 3557c977e1..750483706b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -76,7 +76,7 @@ Copyright @copyright{} 2020 Damien Cassou@*
 Copyright @copyright{} 2020 Jakub Kądziołka@*
 Copyright @copyright{} 2020 Jack Hill@*
 Copyright @copyright{} 2020 Naga Malleswari@*
-Copyright @copyright{} 2020 Brice Waegeneire@*
+Copyright @copyright{} 2020, 2021 Brice Waegeneire@*
 Copyright @copyright{} 2020 R Veera Kumar@*
 Copyright @copyright{} 2020 Pierre Langlois@*
 Copyright @copyright{} 2020 pinoaffe@*
@@ -787,6 +787,13 @@ To use substitutes from @code{@value{SUBSTITUTE-SERVER}} or one of its mirrors
      ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub
 @end example
 
+@quotation Note
+If you do not enable substitutes, Guix will end up building
+@emph{everything} from source on your machine, making each installation
+and upgrade very expensive.  @xref{On Trusting Binaries}, for a
+discussion of reasons why one might want do disable substitutes.
+@end quotation
+
 @item
 Each user may need to perform a few additional steps to make their Guix
 environment ready for use, @pxref{Application Setup}.
@@ -833,8 +840,7 @@ GNU Guix is available for download from its website at
 GNU Guix depends on the following packages:
 
 @itemize
-@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x or
-2.2.x;
+@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x;
 @item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
 0.1.0 or later;
 @item
@@ -11624,6 +11630,28 @@ using this mode, the symbol of the package is made by appending the
 version to its name, so that multiple versions of the same package can
 coexist.
 @end table
+
+@item egg
+@cindex egg
+Import metadata for @uref{https://wiki.call-cc.org/eggs, CHICKEN eggs}.
+The information is taken from @file{PACKAGE.egg} files found in the
+@uref{git://code.call-cc.org/eggs-5-latest, eggs-5-latest} Git
+repository.  However, it does not provide all the information that we
+need, there is no ``description'' field, and the licenses used are not
+always precise (BSD is often used instead of BSD-N).
+
+@example
+guix import egg sourcehut
+@end example
+
+Additional options include:
+@table @code
+@item --recursive
+@itemx -r
+Traverse the dependency graph of the given upstream package recursively
+and generate package expressions for all those packages that are not yet
+in Guix.
+@end table
 @end table
 
 The structure of the @command{guix import} code is modular.  It would be
@@ -11778,6 +11806,8 @@ the updater for KDE packages;
 the updater for X.org packages;
 @item kernel.org
 the updater for packages hosted on kernel.org;
+@item egg
+the updater for @uref{https://wiki.call-cc.org/eggs/, Egg} packages;
 @item elpa
 the updater for @uref{https://elpa.gnu.org/, ELPA} packages;
 @item cran
@@ -16450,6 +16480,7 @@ configuration rejecting all incoming connections except those to the ssh port
 :INPUT ACCEPT
 :FORWARD ACCEPT
 :OUTPUT ACCEPT
+-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p tcp --dport 22 -j ACCEPT
 -A INPUT -j REJECT --reject-with icmp-port-unreachable
 COMMIT
@@ -16458,6 +16489,7 @@ COMMIT
 :INPUT ACCEPT
 :FORWARD ACCEPT
 :OUTPUT ACCEPT
+-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p tcp --dport 22 -j ACCEPT
 -A INPUT -j REJECT --reject-with icmp6-port-unreachable
 COMMIT
@@ -19236,7 +19268,7 @@ The MATE package to use.
 @end deftp
 
 @deffn {Scheme Variable} lxqt-desktop-service-type
-This is the type of the service that runs the @uref{https://lxqt.github.io,
+This is the type of the service that runs the @uref{https://lxqt-project.org,
 LXQt desktop environment}.  Its value is a @code{lxqt-desktop-configuration}
 object (see below).
 
@@ -33868,6 +33900,13 @@ every time you modify your @command{config.scm} file and the
 @command{-o StrictHostKeyChecking=no} prevents you from having to allow a
 connection to an unknown host every time you connect.
 
+@quotation Note
+If you find the above @samp{hostfwd} example not to be working (e.g.,
+your SSH client hangs attempting to connect to the mapped port of your
+VM), make sure that your Guix System VM has networking support, such as
+by using the @code{dhcp-client-service-type} service type.
+@end quotation
+
 @subsection Using @command{virt-viewer} with Spice
 
 As an alternative to the default @command{qemu} graphical client you can
@@ -34395,13 +34434,10 @@ This service type is intended to be extended by other service types,
 such as below:
 
 @lisp
-(define module-installing-service-type
-  (service-type
-    (name 'module-installing-service)
-    (extensions (list (service-extension linux-loadable-module-service-type
-                                         (const (list module-to-install-1
-                                                      module-to-install-2)))))
-    (default-value #f)))
+(simple-service 'installing-module
+                linux-loadable-module-service-type
+                (list module-to-install-1
+                      module-to-install-2))
 @end lisp
 
 This does not actually load modules at bootup, only adds it to the
diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in
index 4f52157354..c9f4e3186d 100644
--- a/etc/guix-daemon.cil.in
+++ b/etc/guix-daemon.cil.in
@@ -301,7 +301,7 @@
                 open read write)))
   (allow guix_daemon_t
          guix_daemon_conf_t
-         (lnk_file (create getattr rename unlink)))
+         (lnk_file (create getattr rename unlink read)))
   (allow guix_daemon_t net_conf_t
          (file (getattr open read)))
   (allow guix_daemon_t net_conf_t
@@ -328,6 +328,9 @@
   (allow guix_daemon_t
          cache_home_t
          (dir (search)))
+  (allow guix_daemon_t
+         cache_home_t
+         (lnk_file (getattr read)))
 
   ;; self upgrades
   (allow guix_daemon_t
@@ -340,7 +343,7 @@
   ;; Socket operations
   (allow guix_daemon_t
          guix_daemon_socket_t
-         (sock_file (unlink)))
+         (sock_file (unlink write)))
   (allow guix_daemon_t
          init_t
          (fd (use)))
diff --git a/etc/news.scm b/etc/news.scm
index 65d83061df..25bc0d40a2 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -14,6 +14,7 @@
 ;; Copyright © 2021 Zhu Zihao <all_but_last@163.com>
 ;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
 ;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;
 ;; Copying and distribution of this file, with or without modification, are
 ;; permitted in any medium without royalty provided the copyright notice and
@@ -22,6 +23,40 @@
 (channel-news
  (version 0)
 
+ (entry (commit "bdc298ecee15283451d3aa20a849dd7bb22c8538")
+        (title
+         (en "New @command{guix import egg} command")
+         (de "Neuer Befehl @command{guix import egg}")
+         (zh "新的 @command{guix import egg} 命令"))
+        (body
+         (en "The new @command{guix import egg} command allows packagers to
+generate a package definition or a template thereof given the name of a
+CHICKEN egg package, like so:
+
+@example
+guix import egg sourcehut
+@end example
+
+Run @command{info \"(guix) Invoking guix import\"} for more info.")
+         (de "Mit dem neuen Befehl @command{guix import egg} können
+Paketautoren eine Paketdefinition oder eine Vorlage dafür anhand des Namens
+eines „Egg“-Pakets für CHICKEN erzeugen, etwa so:
+
+@example
+guix import egg sourcehut
+@end example
+
+Führen Sie @command{info \"(guix.de) Aufruf von guix import\"} aus, um mehr
+Informationen zu bekommen.")
+         (zh "新的 @command{guix import egg} 命令能让贡献者从一个CHICKEN egg生
+成一个包装或包装样板。
+x
+@example
+guix import egg sourcehut
+@end example
+
+想了解更多可以运行 @command{info \"(guix) Invoking guix import\"}。")))
+
  (entry (commit "2161820ebbbab62a5ce76c9101ebaec54dc61586")
         (title
          (en "Risk of local privilege escalation during user account creation")
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 122c7c9861..6cad33b741 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -73,9 +73,12 @@
 
 (define install-allwinner64-u-boot
   #~(lambda (bootloader root-index image)
-      (let ((spl (string-append bootloader "/libexec/u-boot-sunxi-with-spl.fit.itb")))
+      (let ((spl (string-append bootloader "/libexec/u-boot-sunxi-with-spl.bin"))
+            (u-boot (string-append bootloader "/libexec/u-boot-sunxi-with-spl.fit.itb")))
         (write-file-on-device spl (stat:size (stat spl))
-                              image (* 8 1024)))))
+                              image (* 8 1024))
+        (write-file-on-device u-boot (stat:size (stat u-boot))
+                              image (* 40 1024)))))
 
 (define install-imx-u-boot
   #~(lambda (bootloader root-index image)
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index f20eeaac9f..7d1b3ee835 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
@@ -411,11 +411,13 @@ the last argument of `mknod'."
           (filter-map string->number (scandir "/proc")))))
 
 (define* (mount-root-file-system root type
-                                 #:key volatile-root? (flags 0) options)
+                                 #:key volatile-root? (flags 0) options
+                                 check?)
   "Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT? is
 true, mount ROOT read-only and make it an overlay with a writable tmpfs using
 the kernel built-in overlayfs. FLAGS and OPTIONS indicates the options to use
-to mount ROOT, and behave the same as for the `mount' procedure."
+to mount ROOT, and behave the same as for the `mount' procedure.
+If CHECK? is true, first run ROOT's fsck tool (if any) non-interactively."
 
   (if volatile-root?
       (begin
@@ -436,7 +438,8 @@ to mount ROOT, and behave the same as for the `mount' procedure."
         (mount "none" "/root" "overlay" 0
                "lowerdir=/real-root,upperdir=/rw-root/upper,workdir=/rw-root/work"))
       (begin
-        (check-file-system root type)
+        (when check?
+          (check-file-system root type))
         (mount root "/root" type flags options)))
 
   ;; Make sure /root/etc/mtab is a symlink to /proc/self/mounts.
@@ -600,7 +603,10 @@ upon error."
                                     root-fs-type
                                     #:volatile-root? volatile-root?
                                     #:flags root-fs-flags
-                                    #:options root-options)
+                                    #:options root-options
+                                    #:check? (if root-fs
+                                                 (file-system-check? root-fs)
+                                                 #t))
             (mount "none" "/root" "tmpfs"))
 
         ;; Mount the specified file systems.
diff --git a/gnu/local.mk b/gnu/local.mk
index fdd1227873..890227c160 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -42,6 +42,7 @@
 # Copyright © 2021 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 # Copyright © 2021 Greg Hogan <code@greghogan.com>
 # Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
+# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
 #
 # This file is part of GNU Guix.
 #
@@ -308,6 +309,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/jrnl.scm				\
   %D%/packages/jose.scm				\
   %D%/packages/julia.scm			\
+  %D%/packages/julia-jll.scm			\
   %D%/packages/julia-xyz.scm			\
   %D%/packages/jupyter.scm			\
   %D%/packages/kawa.scm				\
@@ -601,6 +603,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/base.scm				\
   %D%/services/certbot.scm			\
   %D%/services/cgit.scm			\
+  %D%/services/ci.scm				\
   %D%/services/configuration.scm		\
   %D%/services/cuirass.scm			\
   %D%/services/cups.scm				\
@@ -692,6 +695,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests.scm					\
   %D%/tests/audio.scm				\
   %D%/tests/base.scm				\
+  %D%/tests/ci.scm				\
   %D%/tests/cups.scm				\
   %D%/tests/databases.scm			\
   %D%/tests/desktop.scm				\
@@ -807,7 +811,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/akonadi-not-relocatable.patch		\
   %D%/packages/patches/akonadi-timestamps.patch		\
   %D%/packages/patches/allegro-mesa-18.2.5-and-later.patch	\
-  %D%/packages/patches/amule-crypto-6.patch			\
   %D%/packages/patches/anki-mpv-args.patch			\
   %D%/packages/patches/antiword-CVE-2014-8123.patch			\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch	\
@@ -974,8 +977,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-exwm-fix-fullscreen-states.patch	\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
-  %D%/packages/patches/emacs-geiser-guile-auto-activate.patch	\
-  %D%/packages/patches/emacs-geiser-autoload-activate-implementation.patch	\
   %D%/packages/patches/emacs-ignore-empty-xim-styles.patch	\
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
@@ -1018,7 +1019,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/fpc-reproducibility.patch		\
   %D%/packages/patches/fplll-std-fenv.patch     		\
   %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
-  %D%/packages/patches/freebayes-devendor-deps.patch		\
   %D%/packages/patches/freeglut-gcc-compat.patch		\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/fuse-overlapping-headers.patch				\
@@ -1254,7 +1254,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libffi-float128-powerpc64le.patch	\
   %D%/packages/patches/libvirt-add-install-prefix.patch	\
   %D%/packages/patches/libziparchive-add-includes.patch		\
-  %D%/packages/patches/lksctp-tools-1.0.18-fix-header-file-name.patch \
   %D%/packages/patches/localed-xorg-keyboard.patch		\
   %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \
   %D%/packages/patches/kiki-level-selection-crash.patch		\
@@ -1398,7 +1397,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-6.0.0-gcc.patch		\
   %D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch	\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
-  %D%/packages/patches/minimap2-aarch64-support.patch		\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
@@ -1407,6 +1405,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/module-init-tools-moduledir.patch	\
   %D%/packages/patches/monero-use-system-miniupnpc.patch			\
   %D%/packages/patches/mono-mdoc-timestamping.patch		\
+  %D%/packages/patches/mosaicatcher-unbundle-htslib.patch	\
   %D%/packages/patches/mozjs17-aarch64-support.patch		\
   %D%/packages/patches/mozjs24-aarch64-support.patch		\
   %D%/packages/patches/mozjs38-pkg-config-version.patch		\
@@ -1439,6 +1438,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/network-manager-plugin-path.patch	\
   %D%/packages/patches/nginx-socket-cloexec.patch		\
   %D%/packages/patches/nsis-env-passthru.patch			\
+  %D%/packages/patches/nsis-source-date-epoch.patch		\
   %D%/packages/patches/nss-getcwd-nonnull.patch			\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-3.56-pkgconfig.patch			\
@@ -1766,7 +1766,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/webkitgtk-share-store.patch		\
   %D%/packages/patches/webkitgtk-bind-all-fonts.patch		\
   %D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch	\
-  %D%/packages/patches/wgetpaste-update-bpaste.patch		\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
   %D%/packages/patches/wicd-urwid-1.3.patch			\
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index fa942169c4..ecd02e336c 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -38,6 +38,9 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module ((guix self) #:select (make-config.scm))
+  #:use-module ((guix inferior)
+                #:select (inferior-exception?
+                          inferior-exception-arguments))
   #:use-module (gcrypt pk-crypto)
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
@@ -443,17 +446,47 @@ have you run 'guix archive --generate-key?'")
   (mlet %store-monad ((_ (check-deployment-sanity machine))
                       (boot-parameters (machine-boot-parameters machine)))
     (let* ((os (machine-operating-system machine))
+           (host (machine-ssh-configuration-host-name
+                  (machine-configuration machine)))
            (eval (cut machine-remote-eval machine <>))
            (menu-entries (map boot-parameters->menu-entry boot-parameters))
            (bootloader-configuration (operating-system-bootloader os))
            (bootcfg (operating-system-bootcfg os menu-entries)))
+      (define-syntax-rule (eval/error-handling condition handler ...)
+        ;; Return a wrapper around EVAL such that HANDLER is evaluated if an
+        ;; exception is raised.
+        (lambda (exp)
+          (lambda (store)
+            (guard (condition ((inferior-exception? condition)
+                               (values (begin handler ...) store)))
+              (values (run-with-store store (eval exp))
+                      store)))))
+
       (mbegin %store-monad
         (with-roll-back #f
-          (switch-to-system eval os))
+          (switch-to-system (eval/error-handling c
+                              (raise (formatted-message
+                                      (G_ "\
+failed to switch systems while deploying '~a':~%~{~s ~}")
+                                      host
+                                      (inferior-exception-arguments c))))
+                            os))
         (with-roll-back #t
           (mbegin %store-monad
-            (upgrade-shepherd-services eval os)
-            (install-bootloader eval bootloader-configuration bootcfg)))))))
+            (upgrade-shepherd-services (eval/error-handling c
+                                         (warning (G_ "\
+an error occurred while upgrading services on '~a':~%~{~s ~}~%")
+                                                  host
+                                                  (inferior-exception-arguments
+                                                   c)))
+                                       os)
+            (install-bootloader (eval/error-handling c
+                                  (raise (formatted-message
+                                          (G_ "\
+failed to install bootloader on '~a':~%~{~s ~}~%")
+                                          host
+                                          (inferior-exception-arguments c))))
+                                bootloader-configuration bootcfg)))))))
 
 
 ;;;
@@ -540,4 +573,6 @@ for environment of type '~a'")
 
 ;; Local Variables:
 ;; eval: (put 'remote-let 'scheme-indent-function 1)
+;; eval: (put 'with-roll-back 'scheme-indent-function 1)
+;; eval: (put 'eval/error-handling 'scheme-indent-function 1)
 ;; End:
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 531686fdbb..48b9c8b893 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1162,14 +1162,14 @@ connection alive.")
                                       bind-release-version)))
     (package
       (name "isc-dhcp")
-      (version "4.4.2")
+      (version "4.4.2-P1")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "https://ftp.isc.org/isc/dhcp/"
                                     version "/dhcp-" version ".tar.gz"))
                 (sha256
                  (base32
-                  "08a5003zdxgl41b29zjkxa92h2i40zyjgxg0npvnhpkfl5jcsz0s"))))
+                  "06jsr0cg5rsmyibshrpcb9za0qgwvqccashdma7mlm1rflrh8pmh"))))
       (build-system gnu-build-system)
       (arguments
        `(#:parallel-build? #f
@@ -1292,7 +1292,7 @@ connection alive.")
                 ("coreutils*" ,coreutils)
                 ("sed*" ,sed)))
 
-      (home-page "https://www.isc.org/products/DHCP/")
+      (home-page "https://www.isc.org/dhcp/")
       (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
       (description
        "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
@@ -3608,14 +3608,14 @@ information tool.")
 (define-public nnn
   (package
     (name "nnn")
-    (version "4.0")
+    (version "4.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
                            version "/nnn-v" version ".tar.gz"))
        (sha256
-        (base32 "0m07nh1cdfikn4bkpni29j61hr9jdwbl0n5fmlm53l1xmn7yq6d2"))))
+        (base32 "1fnf35s3b2nfp18s712n5vhg6idx4rfgwdfv74nc2933v9l2dq7h"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
@@ -3626,30 +3626,26 @@ information tool.")
      `(#:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-after 'unpack 'patch-pkg-config
-           (lambda _
-             (substitute* "Makefile"
-               (("pkg-config")
-                ,(pkg-config-for-target))))))
+         (delete 'configure))           ; no configure script
        #:make-flags
        (list
         (string-append "PREFIX="
                        (assoc-ref %outputs "out"))
-        (string-append "CC=" ,(cc-for-target)))))
+        (string-append "CC=" ,(cc-for-target))
+        (string-append "PKG_CONFIG=" ,(pkg-config-for-target)))))
     (home-page "https://github.com/jarun/nnn")
     (synopsis "Terminal file browser")
-    (description "@command{nnn} is a fork of @command{noice}, a blazing-fast
-lightweight terminal file browser with easy keyboard shortcuts for
-navigation, opening files and running tasks.  There is no config file and
-mime associations are hard-coded.  The incredible user-friendliness and speed
-make it a perfect utility on modern distros.")
+    (description
+     "@command{nnn} is a fork of @command{noice}, a fast and minimal text
+terminal file browser with keyboard shortcuts for navigation, opening files and
+running tasks.  There is no configuration file and MIME associations are
+hard-coded.")
     (license license:bsd-2)))
 
 (define-public thermald
   (package
     (name "thermald")
-    (version "2.4.4")
+    (version "2.4.5")
     (source
      (origin
       (method git-fetch)
@@ -3658,7 +3654,7 @@ make it a perfect utility on modern distros.")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "1k0r2c13fihjndwfh0byw0i8ni4lzsjgwz874pvpj1l1nvjj0ajx"))))
+       (base32 "1y8s0cpjm01bz4isp3ksvnrbhpp3phivdhsb0w2kxhv09sfxkc5g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -3672,13 +3668,7 @@ make it a perfect utility on modern distros.")
        (modify-phases %standard-phases
          (add-before 'bootstrap 'no-early-./configure
            (lambda _
-             (setenv "NO_CONFIGURE" "yet")
-             ;; XXX thd_trip_point.h redefines "__STDC_LIMIT_MACROS" after
-             ;; <xz>/include/lzma.h.  ./configure forcibly appends -Werror
-             ;; to CXXFLAGS, overriding any -Wno-error we'd add.
-             (substitute* "configure.ac"
-               (("-Werror") ""))
-             #t)))))
+             (setenv "NO_CONFIGURE" "yet"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("autoconf-archive" ,autoconf-archive)
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index a4d3f5ac68..d0312426d0 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -341,7 +341,7 @@ precision.")
 (define-public giac
   (package
     (name "giac")
-    (version "1.7.0-9")
+    (version "1.7.0-11")
     (source
      (origin
        (method url-fetch)
@@ -353,7 +353,7 @@ precision.")
                            "~parisse/debian/dists/stable/main/source/"
                            "giac_" version ".tar.gz"))
        (sha256
-        (base32 "0yl5h13rnis8gqg48g9z719d5xfgxjcxz7bwbdqlwsvdy42crrim"))))
+        (base32 "12njy2akcc3sj1fmq52v19m4qd1ysrdcpc9a3zslkxsnidjix81m"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((ice-9 ftw)
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 3a915c7fda..71fc8f20b0 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
-;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,10 +25,12 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -45,6 +47,8 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
@@ -320,6 +324,78 @@ audio or video backends, ensuring good performance.")
       (home-page "https://www.gnu.org/software/gnash/")
       (license license:gpl3+))))
 
+;; This package provides a standalone (no browser plugin) version of
+;; Lightspark.
+(define-public lightspark
+  (package
+    (name "lightspark")
+    (version "0.8.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lightspark/lightspark")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17l5gzb7p8nivx1a2frca2jklcjdsk2qj4jniv3z8bh307ksz254"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;requires Adobe Flex SDK, see README.tests
+       ;; Disable browser plugins because neither NPAPI nor PPAPI is
+       ;; supported in the browsers we have.
+       #:configure-flags
+       '("-DCOMPILE_NPAPI_PLUGIN=FALSE"
+         "-DCOMPILE_PPAPI_PLUGIN=FALSE")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'prepare-build-environment
+           (lambda _
+             ;; Use relative etc path.
+             (substitute* "CMakeLists.txt" (("\\/etc") "etc"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "./tests")))))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("nasm" ,nasm)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("curl" ,curl)
+       ("ffmpeg" ,ffmpeg)
+       ("freeglut" ,freeglut)
+       ("glew" ,glew)
+       ("glibmm" ,glibmm)
+       ("gnash" ,gnash)
+       ("gnutls" ,gnutls)
+       ("libjpeg" ,libjpeg-turbo)
+       ("openssl" ,openssl)
+       ("pango" ,pango)
+       ("pcre2" ,pcre2)
+       ("rtmpdump" ,rtmpdump)
+       ("sdl2" ,sdl2)
+       ("sdl2-mixer" ,sdl2-mixer)
+       ("zlib" ,zlib)))
+    (home-page "https://lightspark.github.io/")
+    (synopsis "Flash player implementation")
+    (description
+     "Lightspark is a Flash player implementation for playing files in the SWF
+format.  It supports SWF files written on all versions of the ActionScript
+language.")
+    ;; NOTE: The bundled pugixml is a fork specific to Lightspark and
+    ;; incompatible with the one we have.
+    ;; FIXME: we also have jxrlib, but the build fails to find JXRMeta.h so we
+    ;; use the bundled one for now.
+    (license (list license:lgpl3+ ;lightspark
+                   license:mpl2.0 ;avmplus
+                   license:bsd-2 ;jxrlib
+                   license:expat)))) ;pugixml, PerlinNoise
+
 (define-public papagayo
   (let ((commit "e143684b30e59fe4a554f965cb655d23cbe93ee7")
         (revision "1"))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index e19c369517..a86984b28c 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -489,14 +489,14 @@ under permissive licensing terms.  See the 'Copyright' file."))))
 (define-public ispell
   (package
     (name "ispell")
-    (version "3.4.02")
+    (version "3.4.04")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.cs.hmc.edu/~geoff/tars/ispell-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0b6rqzqjdhwf323sf1dv8qzx5pxa5asz618922r59zjp65660yb6"))))
+        (base32 "0gp1rwn8grkvz28wgisc2j9w9svldnaiahl3lyis118xabqddg47"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-build? #f
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 6d1c4ddfe6..c4a686957d 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -228,7 +228,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
 (define-public gnuastro
   (package
     (name "gnuastro")
-    (version "0.14")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
@@ -236,7 +236,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
                            version ".tar.lz"))
        (sha256
         (base32
-         "1xp6n42qxv0x6yigi2w2l5k8006smv27lhrcssysgsvzbydghzg5"))))
+         "1jjr3ixxbpsr5m4s7ahh12ymcnlvjzwcp02ya16b1lvzrz1wmhy4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 930c111d5e..b250bc3af0 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -302,7 +302,7 @@ Linux kernel.")
 (define-public libopenmpt
   (package
     (name "libopenmpt")
-    (version "0.5.8")
+    (version "0.5.9")
     (source
      (origin
        (method url-fetch)
@@ -310,7 +310,7 @@ Linux kernel.")
         (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
                        "libopenmpt-" version "+release.autotools.tar.gz"))
        (sha256
-        (base32 "1kca5nc870mfv7i4ww2g1q9jn61gsq46irsypbr6fgxpfh8w5qi9"))))
+        (base32 "0h86p8mnpm98vc4v6jbvrmm02fch7dnn332i26fg3a2s1738m04d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1022,7 +1022,7 @@ generators of mostly elementary and occasionally exotic nature.")
 (define-public infamous-plugins
   (package
     (name "infamous-plugins")
-    (version "0.2.04")
+    (version "0.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1031,7 +1031,7 @@ generators of mostly elementary and occasionally exotic nature.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
+                "1r72agk5nxf5k0mghcc2j90z43j5d9i7rqjmf49jfyqnd443isip"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1041,6 +1041,12 @@ generators of mostly elementary and occasionally exotic nature.")
            (lambda _
              (substitute* (find-files "." "CMakeLists.txt")
                (("-msse2 -mfpmath=sse") ""))
+             #t))
+         (add-after 'unpack 'fix-build-with-newer-lv2
+           (lambda _
+             ;; https://github.com/ssj71/infamousPlugins/commit/4c7275b1fa8ea3296446421cbd29ec2df66588c0
+             (substitute* (find-files "src" ".*\\.cxx")
+               (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
              #t)))))
     (inputs
      `(("cairo" ,cairo)
@@ -4313,7 +4319,7 @@ representations.")
 (define-public cava
   (package
     (name "cava")
-    (version "0.7.3")
+    (version "0.7.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4322,7 +4328,7 @@ representations.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04j5hb29hivcbk542sfsx9m57dbnj2s6qpvy9fs488zvgjbgxrai"))))
+                "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -4465,7 +4471,7 @@ library.")
 (define-public faudio
   (package
     (name "faudio")
-    (version "21.05")
+    (version "21.06")
     (source
      (origin
        (method git-fetch)
@@ -4474,7 +4480,7 @@ library.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0lzvfx5gg5m6jbdzqwkjl4wq4fdg5n98fxn5x8n65vgvrj95sx6z"))))
+        (base32 "1nnx4l1r5hwdaw824d4fmd558qsqa22qzpvnkhs8nkjr40cnidkr"))))
     (arguments
      '(#:tests? #f                      ; No tests.
        #:configure-flags '("-DGSTREAMER=ON")))
@@ -5165,14 +5171,18 @@ while still staying in time.")
 (define-public butt
   (package
     (name "butt")
-    (version "0.1.29")
+    (version "0.1.30")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/butt/butt/butt-"
                                   version "/butt-" version ".tar.gz"))
               (sha256
                (base32
-                "0nbz0z4d7krvhmnwn10594gwc61gn2dlb5fazmynjfisrfdswqlg"))))
+                "1dfspdh3f18lpp7asxpj63b9zfpvazi7shgrdacg17gd42ycayq5"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "src/butt.cpp"
+                  ((".*zica.*") "")))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -5209,7 +5219,7 @@ while still staying in time.")
                                         version "_manual.pdf"))
                     (sha256
                      (base32
-                      "1hhgdhdg5s86hjcbwh856gcd3kcch0i5xgi3i3v02zz3xmzl7gg3"))))))
+                      "1w3krh7f2v5vdz18hqycnpn0qv1x6xl6pa1najgp4jbfisjc1mn8"))))))
     (home-page "https://danielnoethen.de/butt/")
     (synopsis "Audio streaming tool")
     (description "Butt is a tool to stream audio to a ShoutCast or
diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm
index 0b12e4fe29..c6dd748773 100644
--- a/gnu/packages/axoloti.scm
+++ b/gnu/packages/axoloti.scm
@@ -125,6 +125,11 @@
                (("arm-none-eabi-(gcc|g\\+\\+|objcopy|objdump)" tool)
                 (which tool)))
 
+             ;; XXX: for some reason the whitespace substitution does not
+             ;; work, so we disable it.
+             (substitute* "firmware/Makefile.patch"
+               (("^BDIR=.*") "BDIR=${axoloti_home}/build\n"))
+
              ;; Hardcode full path to compiler tools
              (substitute* '("firmware/Makefile"
                             "firmware/flasher/Makefile"
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index a537cd46f3..6a6ac1d8d5 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 malte Frank Gerdes <malte.f.gerdes@gmail.com>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -52,14 +52,14 @@
 (define-public fio
   (package
     (name "fio")
-    (version "3.26")
+    (version "3.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "1114h60vw63bim872an33xpvjfib6sc9dwj9xvk0yw41xjzfpp06"))))
+                "0akaixip86ycbxr13bjff2121rgfbz35fa9l39677wpwzckp4f4d"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
@@ -126,13 +126,9 @@ is to write a job file matching the I/O load one wants to simulate.")
     (license (list license:gpl2 license:gpl2+ license:bsd-2
                    license:public-domain))))
 
-;; Parameterized in anticipation of m(va)pich support
-(define (intel-mpi-benchmarks mpi)
+(define-public intel-mpi-benchmarks/openmpi
   (package
-    (name (string-append "intel-mpi-benchmarks"
-                         (if (string=? (package-name mpi) "openmpi")
-                             ""
-                             (string-append "-" (package-name mpi)))))
+    (name "intel-mpi-benchmarks")
     (version "2019.6")
     (source (origin
               (method git-fetch)
@@ -154,7 +150,7 @@ is to write a job file matching the I/O load one wants to simulate.")
                   #t))))
     (build-system gnu-build-system)
     (inputs
-     `(("mpi" ,mpi)))
+     `(("openmpi" ,openmpi)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -194,9 +190,6 @@ Efficiency of the MPI implementation.
 @end itemize")
     (license license:cpl1.0)))
 
-(define-public intel-mpi-benchmarks/openmpi
-  (intel-mpi-benchmarks openmpi))
-
 (define-public imb-openmpi
   (deprecated-package "imb-openmpi" intel-mpi-benchmarks/openmpi))
 
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 45e31a5760..d84481bdb8 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1,15 +1,16 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2018, 2020 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2020, 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com>
 ;;; Copyright © 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de>
+;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,8 +36,10 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graph)
   #:use-module (gnu packages graphviz)
@@ -103,6 +106,29 @@ analysis.")
 database, assembled using data from REACTOME.")
     (license license:cc-by4.0)))
 
+(define-public r-bsgenome-btaurus-ucsc-bostau8
+  (package
+    (name "r-bsgenome-btaurus-ucsc-bostau8")
+    (version "1.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "BSgenome.Btaurus.UCSC.bosTau8"
+                                     version 'annotation))
+              (sha256
+               (base32
+                "16wjy1aw9nvx03r7w8yh5w7sw3pn8i9nczd0n0728l6nnyqxlsz6"))))
+    (properties
+     `((upstream-name . "BSgenome.Btaurus.UCSC.bosTau8")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bsgenome" ,r-bsgenome)))
+    (home-page
+     "https://www.bioconductor.org/packages/BSgenome.Btaurus.UCSC.bosTau8/")
+    (synopsis "Full genome sequences for Bos taurus (UCSC version bosTau8)")
+    (description "This package provides the full genome sequences for Bos
+taurus (UCSC version bosTau8).")
+    (license license:artistic2.0)))
+
 (define-public r-bsgenome-celegans-ucsc-ce6
   (package
     (name "r-bsgenome-celegans-ucsc-ce6")
@@ -412,6 +438,28 @@ in Biostrings objects.")
 ID and species.  It is used by functions in the GenomeInfoDb package.")
     (license license:artistic2.0)))
 
+(define-public r-go-db
+  (package
+    (name "r-go-db")
+    (version "3.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GO.db" version 'annotation))
+              (sha256
+               (base32
+                "0i3wcf5h3n0dawzc1hy0kv74f06j80c47n4p3g3fmrcxlhi3jpa5"))))
+    (properties
+     `((upstream-name . "GO.db")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)))
+    (home-page "https://bioconductor.org/packages/GO.db")
+    (synopsis "Annotation maps describing the entire Gene Ontology")
+    (description
+     "The purpose of this GO.db annotation package is to provide detailed
+information about the latest version of the Gene Ontologies.")
+    (license license:artistic2.0)))
+
 (define-public r-homo-sapiens
   (package
     (name "r-homo-sapiens")
@@ -934,6 +982,64 @@ datasets which are derived from the Allen Brain Atlas:
 All datasets are restricted to protein coding genes.")
     (license license:gpl2+)))
 
+(define-public r-aneufinderdata
+  (package
+   (name "r-aneufinderdata")
+   (version "1.18.0")
+   (source (origin
+            (method url-fetch)
+            (uri (bioconductor-uri "AneuFinderData" version 'experiment))
+            (sha256
+             (base32
+              "02vb3kmza5hv8bc424fdmfif608xvpdb759w8882kac8izpv29ks"))))
+   (build-system r-build-system)
+   (home-page "https://bioconductor.org/packages/AneuFinderData/")
+   (synopsis "Data package for @code{AneuFinder}")
+   (description "This package contains data used by @code{AneuFinder}.")
+   (license license:artistic2.0)))
+
+(define-public r-aneufinder
+  (package
+    (name "r-aneufinder")
+    (version "1.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "AneuFinder" version))
+              (sha256
+               (base32
+                "0m6wphlriq7y21ih1p2kzml5jzcic79jc52kkk59dkjj8j88yllk"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-genomicranges" ,r-genomicranges)
+       ("r-aneufinderdata" ,r-aneufinderdata)
+       ("r-ecp" ,r-ecp)
+       ("r-foreach" ,r-foreach)
+       ("r-doparallel" ,r-doparallel)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-iranges" ,r-iranges)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-bamsignals" ,r-bamsignals)
+       ("r-dnacopy" ,r-dnacopy)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-reshape2" ,r-reshape2)
+       ("r-ggdendro" ,r-ggdendro)
+       ("r-ggrepel" ,r-ggrepel)
+       ("r-reordercluster" ,r-reordercluster)
+       ("r-mclust" ,r-mclust)
+       ("r-cowplot" ,r-cowplot)))
+    (home-page "https://bioconductor.org/packages/AneuFinder/")
+    (synopsis "Copy number variation analysis in single-cell-sequencing data")
+    (description "This package implements functions for copy number variant
+calling, plotting, export and analysis from whole-genome single cell
+sequencing data.")
+    (license license:artistic2.0)))
+
 (define-public r-arrmdata
   (package
     (name "r-arrmdata")
@@ -974,6 +1080,30 @@ from Illumina 450k methylation arrays.")
 chromstaR package.")
     (license license:gpl3)))
 
+(define-public r-copyhelper
+  (package
+    (name "r-copyhelper")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "CopyhelpeR" version 'experiment))
+       (sha256
+        (base32
+         "0x7cyynjmxls9as2gg0iyp9x5fpalxmdjq914ss7i84i9zyk5bhq"))))
+    (properties `((upstream-name . "CopyhelpeR")))
+    (build-system r-build-system)
+    (home-page "https://bioconductor.org/packages/CopyhelpeR/")
+    (synopsis "Helper files for CopywriteR")
+    (description
+     "This package contains the helper files that are required to run the
+Bioconductor package CopywriteR.  It contains pre-assembled 1kb bin GC-content
+and mappability files for the reference genomes hg18, hg19, hg38, mm9 and
+mm10.  In addition, it contains a blacklist filter to remove regions that
+display copy number variation.  Files are stored as GRanges objects from the
+GenomicRanges Bioconductor package.")
+    (license license:gpl2)))
+
 (define-public r-genelendatabase
   (package
     (name "r-genelendatabase")
@@ -998,6 +1128,32 @@ chromstaR package.")
 genomes and gene ID formats, largely based on the UCSC table browser.")
     (license license:lgpl2.0+)))
 
+(define-public r-genomationdata
+  (package
+    (name "r-genomationdata")
+    (version "1.22.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "genomationData" version 'experiment))
+              (sha256
+               (base32
+                "0igjsvfnws3498j65ifniw0kbxfqpfr59rcjddqvq4zsj453fx1g"))))
+    (properties
+     `((upstream-name . "genomationData")))
+    (build-system r-build-system)
+    ;; As this package provides little more than large data files, it doesn't
+    ;; make sense to build substitutes.
+    (arguments `(#:substitutable? #f))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
+    (synopsis "Experimental data for use with the genomation package")
+    (description
+     "This package contains experimental genetic data for use with the
+genomation package.  Included are Chip Seq, Methylation and Cage data,
+downloaded from Encode.")
+    (license license:gpl3+)))
+
 (define-public r-pasilla
   (package
     (name "r-pasilla")
@@ -1165,14 +1321,14 @@ across the entire multi-'omics experiment.")
 (define-public r-biocversion
   (package
     (name "r-biocversion")
-    (version "3.12.0")
+    (version "3.13.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocVersion" version))
        (sha256
         (base32
-         "1cj9swyf4zbkdq45bhw0kymh2aghkwimxjlfj5r2j7kdiyh6n3rk"))))
+         "0rsw8g4g1pcjw1zbx8x17yd3drhxqk4sx3cy3ddzy5731hl6mbfi"))))
     (properties `((upstream-name . "BiocVersion")))
     (build-system r-build-system)
     (home-page "https://bioconductor.org/packages/BiocVersion/")
@@ -1185,13 +1341,13 @@ of Bioconductor.")
 (define-public r-biocgenerics
   (package
     (name "r-biocgenerics")
-    (version "0.36.1")
+    (version "0.38.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "BiocGenerics" version))
               (sha256
                (base32
-                "0x8cllriayrs99wd5l003iq6i28rb1mci23qcn13ga85578f5lz5"))))
+                "1kv7lzmyki3hi771v01nml1v1hzz8pyhqqv0xcdzqy354mlgx4m6"))))
     (properties
      `((upstream-name . "BiocGenerics")))
     (build-system r-build-system)
@@ -1205,13 +1361,13 @@ packages.")
 (define-public r-coverageview
   (package
     (name "r-coverageview")
-    (version "1.28.0")
+    (version "1.30.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "CoverageView" version))
               (sha256
                (base32
-                "1k89gzqhd8ca8s9gk5bfzringnc5nayqbwzwwy35fls1cg96qmsj"))))
+                "1xhirbjdw09cqm4xvysxqicvqjbahavwvs7shg4cb05gwyd2ha8g"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-s4vectors" ,r-s4vectors)
@@ -1232,13 +1388,13 @@ how the coverage distributed across the genome.")
 (define-public r-cummerbund
   (package
    (name "r-cummerbund")
-   (version "2.32.0")
+   (version "2.34.0")
    (source (origin
              (method url-fetch)
              (uri (bioconductor-uri "cummeRbund" version))
              (sha256
               (base32
-               "1x7rby50api1c66al6a0i92q82ydjmh3h8l2k7hj0ffpn8c5pdgj"))))
+               "1avvmvrmldbscc7xd6a6k22xjykbzafvqf87wh5z9rx3qlzswsjx"))))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-biobase" ,r-biobase)
@@ -1259,16 +1415,76 @@ data.  In addition, provides numerous plotting functions for commonly
 used visualizations.")
    (license license:artistic2.0)))
 
+(define-public r-decipher
+  (package
+    (name "r-decipher")
+    (version "2.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "DECIPHER" version))
+              (sha256
+               (base32
+                "0mr7glkx2d37l9nszs52m0kycpm14vxl5gdp3z7i5j7yig1sw2nk"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-dbi" ,r-dbi)
+       ("r-iranges" ,r-iranges)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://www.bioconductor.org/packages/DECIPHER/")
+    (synopsis "Tools for deciphering and managing biological sequences")
+    (description "This package provides a toolset for deciphering and managing
+biological sequences.")
+    (license license:gpl3)))
+
+(define-public r-deepsnv
+  (package
+    (name "r-deepsnv")
+    (version "1.38.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "deepSNV" version))
+              (sha256
+               (base32
+                "0zz56hf417m7bgg2g2wpbaik30pi6h2nam1n5bviqgdn4mv8n0bs"))))
+    (properties `((upstream-name . "deepSNV")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rhtslib" ,r-rhtslib)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-variantannotation" ,r-variantannotation)
+       ("r-vgam" ,r-vgam)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/gerstung-lab/deepSNV/")
+    (synopsis "Detection of subclonal SNVs in deep sequencing data")
+    (description
+     "This package provides quantitative variant callers for detecting
+subclonal mutations in ultra-deep (>=100x coverage) sequencing experiments.
+The deepSNV algorithm is used for a comparative setup with a control experiment
+of the same loci and uses a beta-binomial model and a likelihood ratio test to
+discriminate sequencing errors and subclonal SNVs.  The shearwater algorithm
+computes a Bayes classifier based on a beta-binomial model for variant calling
+with multiple samples for precisely estimating model parameters - such as local
+error rates and dispersion - and prior knowledge, e.g.  from variation data
+bases such as COSMIC.")
+    (license license:gpl3)))
+
 (define-public r-delayedarray
   (package
     (name "r-delayedarray")
-    (version "0.16.3")
+    (version "0.18.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "DelayedArray" version))
               (sha256
                (base32
-                "0w1wppy6m2iv41852dscg3y19sq84ahdx3m7c2p2pxjcznmv6hys"))))
+                "0w632262dqzcnvq9s6jvc7naz93dayx51fsv05s0zb6cjwygbqjr"))))
     (properties
      `((upstream-name . "DelayedArray")))
     (build-system r-build-system)
@@ -1295,18 +1511,19 @@ array-like objects like @code{DataFrame} objects (typically with Rle columns),
 (define-public r-bluster
   (package
    (name "r-bluster")
-   (version "1.0.0")
+   (version "1.2.1")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "bluster" version))
             (sha256
              (base32
-              "0izrf82m5znyrgai5y5jss4k2brabh4ajxdvnlwwc92l5bw7jp61"))))
+              "128zd5vwlhmrkq0bpp1dxnkrcqfz1mjmdjlla4wqbjv7v6yyn6lg"))))
    (properties `((upstream-name . "bluster")))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-biocneighbors" ,r-biocneighbors)
       ("r-biocparallel" ,r-biocparallel)
+      ("r-cluster" ,r-cluster)
       ("r-igraph" ,r-igraph)
       ("r-matrix" ,r-matrix)
       ("r-rcpp" ,r-rcpp)
@@ -1324,13 +1541,13 @@ and evaluate clustering results.")
 (define-public r-ideoviz
   (package
     (name "r-ideoviz")
-    (version "1.26.0")
+    (version "1.28.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "IdeoViz" version))
               (sha256
                (base32
-                "1k5c0skr6pvpcvkak9f0a088w5wsx4fl3jb9a76gyyni4nkj7djq"))))
+                "17sx0v5lq2zmg098ps4ksj1h0yla3vlh6s2w1ahqsq0nvm193scm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -1348,13 +1565,13 @@ arbitrary genomic intervals along chromosomal ideogram.")
 (define-public r-iranges
   (package
     (name "r-iranges")
-    (version "2.24.1")
+    (version "2.26.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "IRanges" version))
               (sha256
                (base32
-                "01mx46a82vd3gz705pj0kk4wpxg683s8jqxchzjia3gz00b4qw52"))))
+                "0dzj8wqbjzilh2dsaj3ylx958xqrv0c688ayfq2r1z7rs75qy7kx"))))
     (properties
      `((upstream-name . "IRanges")))
     (build-system r-build-system)
@@ -1406,18 +1623,20 @@ absolute GSEA.")
 (define-public r-bisquerna
   (package
    (name "r-bisquerna")
-   (version "1.0.4")
+   (version "1.0.5")
    (source (origin
             (method url-fetch)
             (uri (cran-uri "BisqueRNA" version))
             (sha256
              (base32
-              "01g34n87ml7n3pck77497ddgbv3rr5p4153ac8ninpgjijlm3jw2"))))
+              "0p3p5lp69gri7vs6qfpm7br4ksbs4l7clm4nj8ki99wpqiqni23n"))))
    (properties `((upstream-name . "BisqueRNA")))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-biobase" ,r-biobase)
       ("r-limsolve" ,r-limsolve)))
+   (native-inputs
+     `(("r-knitr" ,r-knitr)))
    (home-page "https://www.biorxiv.org/content/10.1101/669911v1")
    (synopsis "Decomposition of bulk expression with single-cell sequencing")
    (description "This package provides tools to accurately estimate cell type
@@ -1501,17 +1720,45 @@ optimized in C++, and the main interface function provides an easy way of
 performing parallel computations on multicore machines.")
     (license license:gpl2+)))
 
+(define-public r-affy
+  (package
+    (name "r-affy")
+    (version "1.70.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affy" version))
+       (sha256
+        (base32
+         "0vz5y92gqcm0qk57qlba85bk683lzdr7vkmxv109rq6i17vdkkrm"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affyio" ,r-affyio)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-preprocesscore" ,r-preprocesscore)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://bioconductor.org/packages/affy")
+    (synopsis "Methods for affymetrix oligonucleotide arrays")
+    (description
+     "This package contains functions for exploratory oligonucleotide array
+analysis.")
+    (license license:lgpl2.0+)))
+
 (define-public r-affycomp
   (package
     (name "r-affycomp")
-    (version "1.66.0")
+    (version "1.68.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "affycomp" version))
        (sha256
         (base32
-         "106gz4rami04r0ffc7rxkrv92s3yrcnlqnyykd5s8lrkndbihrpk"))))
+         "07my5scdh6h0y1bx1h9y5m4fa8bnmw389f83gkb7cf19w4vp36b2"))))
     (properties `((upstream-name . "affycomp")))
     (build-system r-build-system)
     (propagated-inputs `(("r-biobase" ,r-biobase)))
@@ -1525,14 +1772,14 @@ measures for Affymetrix Oligonucleotide Arrays.")
 (define-public r-affycompatible
   (package
     (name "r-affycompatible")
-    (version "1.50.0")
+    (version "1.52.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AffyCompatible" version))
        (sha256
         (base32
-         "0pcs51miy45bky26i1d4iarbjh569gssb5g4fr26bzgjmq19yl7x"))))
+         "1xwz22wf2smsvmd0d5lfadbsgscnl3fl9msypy2mml38k048p6vj"))))
     (properties
      `((upstream-name . "AffyCompatible")))
     (build-system r-build-system)
@@ -1553,14 +1800,14 @@ Command Console} (AGCC)-compatible sample annotation files.")
 (define-public r-affycontam
   (package
     (name "r-affycontam")
-    (version "1.48.0")
+    (version "1.50.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "affyContam" version))
        (sha256
         (base32
-         "0pi5fll5868sb80vb9kbymz6gkjv58f0abk6zwn407cnyjhr342b"))))
+         "0242ga68wrdk1kcmxfdbq73a0d3zhrzdlzkzphfg3q0zjbvg49jj"))))
     (properties `((upstream-name . "affyContam")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1578,14 +1825,14 @@ problems in CEL-level data to help evaluate performance of quality metrics.")
 (define-public r-affycoretools
   (package
     (name "r-affycoretools")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "affycoretools" version))
        (sha256
         (base32
-         "0jacgwylg7wjw3xk3ga2sb1wkdklm5glamhbmqgvzm5kdjnl0rv0"))))
+         "1dx861spr3kn1dxwhf43s5l1r7bmrq0h6538l3q64iiwzzc6krdh"))))
     (properties `((upstream-name . "affycoretools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1617,17 +1864,41 @@ problems in CEL-level data to help evaluate performance of quality metrics.")
 to streamline the more common analyses that a Biostatistician might see.")
     (license license:artistic2.0)))
 
+(define-public r-affyio
+  (package
+    (name "r-affyio")
+    (version "1.62.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affyio" version))
+       (sha256
+        (base32
+         "07kibqsm888g06qqqa4648ph877kriy74kprbri8nyx83y8aspjr"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-zlibbioc" ,r-zlibbioc)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://github.com/bmbolstad/affyio")
+    (synopsis "Tools for parsing Affymetrix data files")
+    (description
+     "This package provides routines for parsing Affymetrix data files based
+upon file format information.  The primary focus is on accessing the CEL and
+CDF file formats.")
+    (license license:lgpl2.0+)))
+
 (define-public r-affxparser
   (package
     (name "r-affxparser")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "affxparser" version))
        (sha256
         (base32
-         "13h4iwskvgwgxid9f60gzb1zndgbhdlbn9ixv5waihy1jkcbn24p"))))
+         "0n3yyrglzqzw0wqxl9igqvkj8qslw6yjkym3vcq0c93kkg7vk01l"))))
     (properties `((upstream-name . "affxparser")))
     (build-system r-build-system)
     (home-page "https://github.com/HenrikBengtsson/affxparser")
@@ -1648,14 +1919,14 @@ structure.")
 (define-public r-annotate
   (package
     (name "r-annotate")
-    (version "1.68.0")
+    (version "1.70.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "annotate" version))
        (sha256
         (base32
-         "1rql591x56532m8n4axdkfkhkbcsz5hfrf7271s0lmkvy84i7z6l"))))
+         "13ny596wh65sw7dbw0zd4h84d6k1w99g91c4sqy83mdzgpv73sz7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -1675,13 +1946,13 @@ microarrays.")
 (define-public r-annotationdbi
   (package
     (name "r-annotationdbi")
-    (version "1.52.0")
+    (version "1.54.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "AnnotationDbi" version))
               (sha256
                (base32
-                "0zqxgh3nx6y8ry12s2vss2f4axz5vpqxha1y4ifhhcx4zhpzsglr"))))
+                "117zh7iqa6phsrxrkv45kxraamm3vbfz5i1a8vkhyalhdbs5ssph"))))
     (properties
      `((upstream-name . "AnnotationDbi")))
     (build-system r-build-system)
@@ -1689,6 +1960,7 @@ microarrays.")
      `(("r-biobase" ,r-biobase)
        ("r-biocgenerics" ,r-biocgenerics)
        ("r-dbi" ,r-dbi)
+       ("r-keggrest" ,r-keggrest)
        ("r-iranges" ,r-iranges)
        ("r-rsqlite" ,r-rsqlite)
        ("r-s4vectors" ,r-s4vectors)))
@@ -1701,17 +1973,43 @@ microarrays.")
 annotation data packages using SQLite data storage.")
     (license license:artistic2.0)))
 
+(define-public r-annotationfilter
+  (package
+    (name "r-annotationfilter")
+    (version "1.16.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "AnnotationFilter" version))
+              (sha256
+               (base32
+                "0799jja6v7l3jsi26wbjalkr5lriaxid05xb5g36iq93myhaj0sa"))))
+    (properties
+     `((upstream-name . "AnnotationFilter")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-genomicranges" ,r-genomicranges)
+       ("r-lazyeval" ,r-lazyeval)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/Bioconductor/AnnotationFilter")
+    (synopsis "Facilities for filtering Bioconductor annotation resources")
+    (description
+     "This package provides classes and other infrastructure to implement
+filters for manipulating Bioconductor annotation resources.  The filters are
+used by @code{ensembldb}, @code{Organism.dplyr}, and other packages.")
+    (license license:artistic2.0)))
+
 (define-public r-annotationforge
   (package
     (name "r-annotationforge")
-    (version "1.32.0")
+    (version "1.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AnnotationForge" version))
        (sha256
         (base32
-         "0y3820dkvwz09wlmz9drx6gqpsr9cwppaiz40zafwfxbz65y8px7"))))
+         "1by3diy0y4809k97cw97mp4j177gn1dzhqil8myij1r7b8sk7hax"))))
     (properties
      `((upstream-name . "AnnotationForge")))
     (build-system r-build-system)
@@ -1733,16 +2031,114 @@ annotation data packages using SQLite data storage.")
 databases.  Packages produced are intended to be used with AnnotationDbi.")
     (license license:artistic2.0)))
 
+(define-public r-annotationhub
+  (package
+    (name "r-annotationhub")
+    (version "3.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "AnnotationHub" version))
+       (sha256
+        (base32
+         "1p9773fv7j7q4x1sjqqaw32qy9lqn2gf6gkynh1d8n1kd7v7sclp"))))
+    (properties `((upstream-name . "AnnotationHub")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biocfilecache" ,r-biocfilecache)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-biocversion" ,r-biocversion)
+       ("r-curl" ,r-curl)
+       ("r-dplyr" ,r-dplyr)
+       ("r-httr" ,r-httr)
+       ("r-interactivedisplaybase" ,r-interactivedisplaybase)
+       ("r-rappdirs" ,r-rappdirs)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-yaml" ,r-yaml)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/AnnotationHub")
+    (synopsis "Client to access AnnotationHub resources")
+    (description
+     "This package provides a client for the Bioconductor AnnotationHub web
+resource.  The AnnotationHub web resource provides a central location where
+genomic files (e.g. VCF, bed, wig) and other resources from standard
+locations (e.g. UCSC, Ensembl) can be discovered.  The resource includes
+metadata about each resource, e.g., a textual description, tags, and date of
+modification.  The client creates and manages a local cache of files retrieved
+by the user, helping with quick and reproducible access.")
+    (license license:artistic2.0)))
+
+(define-public r-aroma-light
+  (package
+    (name "r-aroma-light")
+    (version "3.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "aroma.light" version))
+       (sha256
+        (base32
+         "1yvq6l1p8cpijvlib4fn9y88ihn0gaalrmgx82jgrfmnszkqn3y5"))))
+    (properties `((upstream-name . "aroma.light")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrixstats" ,r-matrixstats)
+       ("r-r-methodss3" ,r-r-methodss3)
+       ("r-r-oo" ,r-r-oo)
+       ("r-r-utils" ,r-r-utils)))
+    (home-page "https://github.com/HenrikBengtsson/aroma.light")
+    (synopsis "Methods for normalization and visualization of microarray data")
+    (description
+     "This package provides methods for microarray analysis that take basic
+data types such as matrices and lists of vectors.  These methods can be used
+standalone, be utilized in other packages, or be wrapped up in higher-level
+classes.")
+    (license license:gpl2+)))
+
+(define-public r-bamsignals
+  (package
+    (name "r-bamsignals")
+    (version "1.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "bamsignals" version))
+       (sha256
+        (base32
+         "1ljrip0jlxjcljqac7vzvwqbcqil5v4f4s4bhpq4akvdkshas6mn"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rhtslib" ,r-rhtslib)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/bamsignals")
+    (synopsis "Extract read count signals from bam files")
+    (description
+     "This package efficiently obtains count vectors from indexed bam
+files.  It counts the number of nucleotide sequence reads in given genomic
+ranges and it computes reads profiles and coverage profiles.  It also handles
+paired-end data.")
+    (license license:gpl2+)))
+
 (define-public r-biobase
   (package
     (name "r-biobase")
-    (version "2.50.0")
+    (version "2.52.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Biobase" version))
               (sha256
                (base32
-                "11kgc4flywlm3i18603558l8ksv91c24vkc5fnnbcd375i2dhhd4"))))
+                "1sg8w8860zhlz9s1pf75xa8asd2hyqsj13fh5xc37hf5yqdfkavr"))))
     (properties
      `((upstream-name . "Biobase")))
     (build-system r-build-system)
@@ -1758,26 +2154,25 @@ on Bioconductor or which replace R functions.")
 (define-public r-biomart
   (package
     (name "r-biomart")
-    (version "2.46.3")
+    (version "2.48.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biomaRt" version))
               (sha256
                (base32
-                "0gwmd0ykpv0gyh34c56g5m12lil20fvig49f3ih1jxrxf3q4wmq7"))))
+                "1h8lzd63qvy1y75nlnhazpkyhl6g1hz80baqg20gpxbv38wkyf55"))))
     (properties
      `((upstream-name . "biomaRt")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
        ("r-biocfilecache" ,r-biocfilecache)
+       ("r-digest" ,r-digest)
        ("r-httr" ,r-httr)
-       ("r-openssl" ,r-openssl)
        ("r-progress" ,r-progress)
        ("r-rappdirs" ,r-rappdirs)
        ("r-stringr" ,r-stringr)
-       ("r-xml" ,r-xml)
-       ("r-xml2" ,r-xml2)))
+       ("r-xml" ,r-xml)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/biomaRt")
@@ -1796,13 +2191,13 @@ powerful online queries from gene annotation to database mining.")
 (define-public r-biocparallel
   (package
     (name "r-biocparallel")
-    (version "1.24.1")
+    (version "1.26.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "BiocParallel" version))
               (sha256
                (base32
-                "1iryicvmcagcrj29kp49mqhiq2kn72j4idj380hi9illmdrg9ism"))))
+                "17w4gdajxxmsfgiwycp1d7rbxdqhc5jnngcb58ky0fv5xbv9f4j0"))))
     (properties
      `((upstream-name . "BiocParallel")))
     (build-system r-build-system)
@@ -1851,19 +2246,20 @@ objects.")
 (define-public r-biostrings
   (package
     (name "r-biostrings")
-    (version "2.58.0")
+    (version "2.60.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Biostrings" version))
               (sha256
                (base32
-                "1rbqhs73mhfr1gi0rx28jiyan7i3hb45ai3jpl1656fnrhgjfxq5"))))
+                "0xidh6wp0l47g1j9x8d4fs91ky6pi5nzf85ry801gqd2gqajh2zy"))))
     (properties
      `((upstream-name . "Biostrings")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
        ("r-crayon" ,r-crayon)
+       ("r-genomeinfodb" ,r-genomeinfodb)
        ("r-iranges" ,r-iranges)
        ("r-s4vectors" ,r-s4vectors)
        ("r-xvector" ,r-xvector)))
@@ -1875,17 +2271,90 @@ matching algorithms, and other utilities, for fast manipulation of large
 biological sequences or sets of sequences.")
     (license license:artistic2.0)))
 
+(define-public r-biovizbase
+  (package
+    (name "r-biovizbase")
+    (version "1.40.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "biovizBase" version))
+       (sha256
+        (base32
+         "14jyyg3ggdhaqhp0j4qf6dapykh76fygbaa4lr7czqbc5mr0iw23"))))
+    (properties `((upstream-name . "biovizBase")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-annotationfilter" ,r-annotationfilter)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dichromat" ,r-dichromat)
+       ("r-ensembldb" ,r-ensembldb)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-hmisc" ,r-hmisc)
+       ("r-iranges" ,r-iranges)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-rlang" ,r-rlang)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scales" ,r-scales)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://bioconductor.org/packages/biovizBase")
+    (synopsis "Basic graphic utilities for visualization of genomic data")
+    (description
+     "The biovizBase package is designed to provide a set of utilities, color
+schemes and conventions for genomic data.  It serves as the base for various
+high-level packages for biological data visualization.  This saves development
+effort and encourages consistency.")
+    (license license:artistic2.0)))
+
+(define-public r-bsgenome
+  (package
+    (name "r-bsgenome")
+    (version "1.60.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "BSgenome" version))
+              (sha256
+               (base32
+                "1jhissp9ad1rn2p0bzr3yslbn84yqbaqgnn5p9hyacwr7mr091cn"))))
+    (properties
+     `((upstream-name . "BSgenome")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://bioconductor.org/packages/BSgenome")
+    (synopsis "Infrastructure for Biostrings-based genome data packages")
+    (description
+     "This package provides infrastructure shared by all Biostrings-based
+genome data packages and support for efficient SNP representation.")
+    (license license:artistic2.0)))
+
 (define-public r-category
   (package
     (name "r-category")
-    (version "2.56.0")
+    (version "2.58.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Category" version))
        (sha256
         (base32
-         "0m77wpnica0h2ia9ajdaiga4plgz1s9wls6pdnxzk7kwl8a68wkr"))))
+         "0f76pb7h8qc51mca5pq00m9p02sbkcj6ywfzli20qai2ykpfr71x"))))
     (properties `((upstream-name . "Category")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1906,17 +2375,201 @@ biological sequences or sets of sequences.")
 analysis.")
     (license license:artistic2.0)))
 
+(define-public r-chipseeker
+  (package
+    (name "r-chipseeker")
+    (version "1.28.3")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "ChIPseeker" version))
+              (sha256
+               (base32
+                "18hdgml80770c0xgd06zrl8px1ql9fa65rirfkq07z7rzpnd23rw"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-boot" ,r-boot)
+       ("r-enrichplot" ,r-enrichplot)
+       ("r-iranges" ,r-iranges)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gplots" ,r-gplots)
+       ("r-gtools" ,r-gtools)
+       ("r-dplyr" ,r-dplyr)
+       ("r-plotrix" ,r-plotrix)
+       ("r-dplyr" ,r-dplyr)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-txdb-hsapiens-ucsc-hg19-knowngene"
+        ,r-txdb-hsapiens-ucsc-hg19-knowngene)))
+    (home-page "https://www.bioconductor.org/packages/ChIPseeker/")
+    (synopsis "ChIPseeker for ChIP peak annotation, comparison, and visualization")
+    (description "This package implements functions to retrieve the nearest
+genes around the peak, annotate genomic region of the peak, statstical methods
+for estimate the significance of overlap among ChIP peak data sets, and
+incorporate GEO database for user to compare the own dataset with those
+deposited in database.  The comparison can be used to infer cooperative
+regulation and thus can be used to generate hypotheses.  Several visualization
+functions are implemented to summarize the coverage of the peak experiment,
+average profile and heatmap of peaks binding to TSS regions, genomic
+annotation, distance to TSS, and overlap of peaks or genes.")
+    (license license:artistic2.0)))
+
+(define-public r-chipseq
+  (package
+    (name "r-chipseq")
+    (version "1.42.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "chipseq" version))
+       (sha256
+        (base32
+         "078p9h0zghlhpd6cr54nww1mk7q97imx8yqfayw5m2yq4097ivbi"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-lattice" ,r-lattice)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-shortread" ,r-shortread)))
+    (home-page "https://bioconductor.org/packages/chipseq")
+    (synopsis "Package for analyzing ChIPseq data")
+    (description
+     "This package provides tools for processing short read data from ChIPseq
+experiments.")
+    (license license:artistic2.0)))
+
+(define-public r-complexheatmap
+  (package
+    (name "r-complexheatmap")
+    (version "2.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ComplexHeatmap" version))
+       (sha256
+        (base32
+         "0jl96msj1njdrvngg68s50vmphvhi2lfwlv34x07pcdzgkjjs41f"))))
+    (properties
+     `((upstream-name . "ComplexHeatmap")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-cairo" ,r-cairo)
+       ("r-circlize" ,r-circlize)
+       ("r-clue" ,r-clue)
+       ("r-colorspace" ,r-colorspace)
+       ("r-digest" ,r-digest)
+       ("r-doparallel" ,r-doparallel)
+       ("r-foreach" ,r-foreach)
+       ("r-getoptlong" ,r-getoptlong)
+       ("r-globaloptions" ,r-globaloptions)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-png" ,r-png)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page
+     "https://github.com/jokergoo/ComplexHeatmap")
+    (synopsis "Making Complex Heatmaps")
+    (description
+     "Complex heatmaps are efficient to visualize associations between
+different sources of data sets and reveal potential structures.  This package
+provides a highly flexible way to arrange multiple heatmaps and supports
+self-defined annotation graphics.")
+    (license license:gpl2+)))
+
+(define-public r-copywriter
+  (package
+    (name "r-copywriter")
+    (version "2.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "CopywriteR" version))
+       (sha256
+        (base32
+         "0pacs714d9b1fdz68pp9ca0x77d376s19lxb82np4l9fgx0rgkxp"))))
+    (properties `((upstream-name . "CopywriteR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocparallel" ,r-biocparallel)
+       ("r-chipseq" ,r-chipseq)
+       ("r-copyhelper" ,r-copyhelper)
+       ("r-data-table" ,r-data-table)
+       ("r-dnacopy" ,r-dnacopy)
+       ("r-futile-logger" ,r-futile-logger)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-gtools" ,r-gtools)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://github.com/PeeperLab/CopywriteR")
+    (synopsis "Copy number information from targeted sequencing")
+    (description
+     "CopywriteR extracts DNA copy number information from targeted sequencing
+by utilizing off-target reads.  It allows for extracting uniformly distributed
+copy number information, can be used without reference, and can be applied to
+sequencing data obtained from various techniques including chromatin
+immunoprecipitation and target enrichment on small gene panels.  Thereby,
+CopywriteR constitutes a widely applicable alternative to available copy
+number detection tools.")
+    (license license:gpl2)))
+
+(define-public r-deseq
+  (package
+    (name "r-deseq")
+    (version "1.39.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "DESeq" version))
+       (sha256
+        (base32
+         "047hph5aqmjnz1aqprziw0smdn5lf96hmwpnvqrxv1j2yfvcf3h1"))))
+    (properties `((upstream-name . "DESeq")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-genefilter" ,r-genefilter)
+       ("r-geneplotter" ,r-geneplotter)
+       ("r-lattice" ,r-lattice)
+       ("r-locfit" ,r-locfit)
+       ("r-mass" ,r-mass)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)))
+    (home-page "https://www-huber.embl.de/users/anders/DESeq/")
+    (synopsis "Differential gene expression analysis")
+    (description
+     "This package provides tools for estimating variance-mean dependence in
+count data from high-throughput genetic sequencing assays and for testing for
+differential expression based on a model using the negative binomial
+distribution.")
+    (license license:gpl3+)))
+
 (define-public r-deseq2
   (package
     (name "r-deseq2")
-    (version "1.30.1")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DESeq2" version))
        (sha256
         (base32
-         "1i0jpzsm1vl7q6qdmplj45w13lsaycxrx5pazlanjba2khn79k19"))))
+         "0r1brwmj7av0bj72jajn27vx3zs1bgg8qfbhf02fln6kf7im4kaz"))))
     (properties `((upstream-name . "DESeq2")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1947,14 +2600,14 @@ distribution.")
 (define-public r-dexseq
   (package
     (name "r-dexseq")
-    (version "1.36.0")
+    (version "1.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DEXSeq" version))
        (sha256
         (base32
-         "0wfjb42xcr4wjy8a654b74411dky8hp6sp8xdwf0sxqgsxy106qi"))))
+         "1zywh30f4j4rj0f9w6yk5xr9mvdbg8gicy3wsb8yxdnamadyr7x4"))))
     (properties `((upstream-name . "DEXSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1989,16 +2642,85 @@ testing.  The package also provides functions for the visualization and
 exploration of the results.")
     (license license:gpl3+)))
 
+(define-public r-dirichletmultinomial
+  (package
+    (name "r-dirichletmultinomial")
+    (version "1.34.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "DirichletMultinomial" version))
+       (sha256
+        (base32
+         "0ikmj0300lfzj6q1vyahfyx5kwi5h59mds7ym4f2j1bbxqzy6ssl"))))
+    (properties
+     `((upstream-name . "DirichletMultinomial")))
+    (build-system r-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/DirichletMultinomial")
+    (synopsis "Dirichlet-Multinomial mixture models for microbiome data")
+    (description
+     "Dirichlet-multinomial mixture models can be used to describe variability
+in microbial metagenomic data.  This package is an interface to code
+originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
+1-15.")
+    (license license:lgpl3)))
+
+(define-public r-edaseq
+  (package
+    (name "r-edaseq")
+    (version "2.26.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "EDASeq" version))
+       (sha256
+        (base32
+         "1mqpi2iz4azr31b3ajsqb4n9izjh85dx642844n059c8s2pfmivh"))))
+    (properties `((upstream-name . "EDASeq")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-aroma-light" ,r-aroma-light)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-biomart" ,r-biomart)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-shortread" ,r-shortread)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/drisso/EDASeq")
+    (synopsis "Exploratory data analysis and normalization for RNA-Seq")
+    (description
+     "This package provides support for numerical and graphical summaries of
+RNA-Seq genomic read data.  Provided within-lane normalization procedures to
+adjust for GC-content effect (or other gene-level effects) on read counts:
+loess robust local regression, global-scaling, and full-quantile
+normalization.  Between-lane normalization procedures to adjust for
+distributional differences between lanes (e.g., sequencing depth):
+global-scaling and full-quantile normalization.")
+    (license license:artistic2.0)))
+
 (define-public r-edger
   (package
     (name "r-edger")
-    (version "3.32.1")
+    (version "3.34.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "edgeR" version))
               (sha256
                (base32
-                "1gaic8qf6a6sy0bmydh1xzf52w0wnq31aanpvw3a30pfsi218bcp"))))
+                "1ikl9y6hj2p92nrb1ydxy2410b3wrax83rfy2imaj0vgfmhsgx6g"))))
     (properties `((upstream-name . "edgeR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2017,17 +2739,123 @@ other types of genomic data that produce counts, including ChIP-seq, SAGE and
 CAGE.")
     (license license:gpl2+)))
 
+(define-public r-ensembldb
+  (package
+    (name "r-ensembldb")
+    (version "2.16.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ensembldb" version))
+       (sha256
+        (base32
+         "100m2mzxl4pmldqixzfdznnd4nqbykk2l7n4xazqjpnlpcldy2dj"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-annotationfilter" ,r-annotationfilter)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-curl" ,r-curl)
+       ("r-dbi" ,r-dbi)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/jotsetung/ensembldb")
+    (synopsis "Utilities to create and use Ensembl-based annotation databases")
+    (description
+     "The package provides functions to create and use transcript-centric
+annotation databases/packages.  The annotation for the databases are directly
+fetched from Ensembl using their Perl API.  The functionality and data is
+similar to that of the TxDb packages from the @code{GenomicFeatures} package,
+but, in addition to retrieve all gene/transcript models and annotations from
+the database, the @code{ensembldb} package also provides a filter framework
+allowing to retrieve annotations for specific entries like genes encoded on a
+chromosome region or transcript models of lincRNA genes.")
+    ;; No version specified
+    (license license:lgpl3+)))
+
+(define-public r-fastseg
+  (package
+    (name "r-fastseg")
+    (version "1.38.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "fastseg" version))
+       (sha256
+        (base32
+         "006v7qs707xmnr35b7rw135pyvacrmhv55a3c53birkpsrjgkps0"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://www.bioinf.jku.at/software/fastseg/index.html")
+    (synopsis "Fast segmentation algorithm for genetic sequencing data")
+    (description
+     "Fastseg implements a very fast and efficient segmentation algorithm.
+It can segment data from DNA microarrays and data from next generation
+sequencing for example to detect copy number segments.  Further it can segment
+data from RNA microarrays like tiling arrays to identify transcripts.  Most
+generally, it can segment data given as a matrix or as a vector.  Various data
+formats can be used as input to fastseg like expression set objects for
+microarrays or GRanges for sequencing data.")
+    (license license:lgpl2.0+)))
+
+(define-public r-gage
+  (package
+    (name "r-gage")
+    (version "2.42.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "gage" version))
+       (sha256
+        (base32
+         "0z7hrwdm6my6p7z04bcpfhqk72pd0s1bdzvsiiym59qj79fbvb83"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-go-db" ,r-go-db)
+       ("r-graph" ,r-graph)
+       ("r-keggrest" ,r-keggrest)))
+    (home-page (string-append "https://bmcbioinformatics.biomedcentral.com/"
+                              "articles/10.1186/1471-2105-10-161"))
+    (synopsis "Generally applicable gene-set enrichment for pathway analysis")
+    (description
+     "GAGE is a published method for gene set (enrichment or GSEA) or pathway
+analysis.  GAGE is generally applicable independent of microarray or RNA-Seq
+data attributes including sample sizes, experimental designs, assay platforms,
+and other types of heterogeneity.  The gage package provides functions for
+basic GAGE analysis, result processing and presentation.  In addition, it
+provides demo microarray data and commonly used gene set data based on KEGG
+pathways and GO terms.  These functions and data are also useful for gene set
+analysis using other methods.")
+    (license license:gpl2+)))
+
 (define-public r-genefilter
   (package
     (name "r-genefilter")
-    (version "1.72.1")
+    (version "1.74.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "genefilter" version))
        (sha256
         (base32
-         "1c6h3qnjvphs977qhv5vafvsb108r0q7xhaayly6qv6adqfn94rn"))))
+         "0dy9pmlb0pc9b4ks5fb9zgnmhc9f2mkqmsdlb7f5z88xmj68y4qk"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)
@@ -2045,16 +2873,83 @@ CAGE.")
 high-throughput sequencing experiments.")
     (license license:artistic2.0)))
 
+(define-public r-geneoverlap
+  (package
+    (name "r-geneoverlap")
+    (version "1.28.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GeneOverlap" version))
+              (sha256
+               (base32
+                "1kfw3h68rvbafhklds6sfmviwv91nms8wk0ywzkjg5h3mmgxbsv9"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-gplots" ,r-gplots)))
+    (home-page "https://www.bioconductor.org/packages/GeneOverlap/")
+    (synopsis "Test and visualize gene overlaps")
+    (description "This package can be used to test two sets of gene lists
+and visualize the results.")
+    (license license:gpl3)))
+
+(define-public r-genomation
+  (package
+    (name "r-genomation")
+    (version "1.24.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "genomation" version))
+              (sha256
+               (base32
+                "0qa3b4mfd7l1sy4pw64zr2d90y5apah900krxjl4x39acygg0i2r"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-data-table" ,r-data-table)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridbase" ,r-gridbase)
+       ("r-impute" ,r-impute)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-plotrix" ,r-plotrix)
+       ("r-plyr" ,r-plyr)
+       ("r-rcpp" ,r-rcpp)
+       ("r-readr" ,r-readr)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-seqpattern" ,r-seqpattern)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
+    (synopsis "Summary, annotation and visualization of genomic data")
+    (description
+     "This package provides a package for summary and annotation of genomic
+intervals.  Users can visualize and quantify genomic intervals over
+pre-defined functional regions, such as promoters, exons, introns, etc.  The
+genomic intervals represent regions with a defined chromosome position, which
+may be associated with a score, such as aligned reads from HT-seq experiments,
+TF binding sites, methylation scores, etc.  The package can use any tabular
+genomic feature data as long as it has minimal information on the locations of
+genomic intervals.  In addition, it can use BAM or BigWig files as input.")
+    (license license:artistic2.0)))
+
 (define-public r-genomeinfodb
   (package
     (name "r-genomeinfodb")
-    (version "1.26.7")
+    (version "1.28.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomeInfoDb" version))
               (sha256
                (base32
-                "0fp7sp3jmc2a1hk4r624lfavx8gc2ik3lv43ksc2jmspg6cvh516"))))
+                "0wjd7sh7kr9lfcdbzm5jdynl84nfsl7nqvly92qqrdcxd2sjfr63"))))
     (properties
      `((upstream-name . "GenomeInfoDb")))
     (build-system r-build-system)
@@ -2075,16 +2970,127 @@ translation between different chromosome sequence naming conventions (e.g.,
 names in their natural, rather than lexicographic, order.")
     (license license:artistic2.0)))
 
+(define-public r-genomicalignments
+  (package
+    (name "r-genomicalignments")
+    (version "1.28.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GenomicAlignments" version))
+              (sha256
+               (base32
+                "00rq110jkh89nxgk05zh8kssxk8mb4dq0wjg3n7ivfmmm9wdwhp2"))))
+    (properties
+     `((upstream-name . "GenomicAlignments")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "https://bioconductor.org/packages/GenomicAlignments")
+    (synopsis "Representation and manipulation of short genomic alignments")
+    (description
+     "This package provides efficient containers for storing and manipulating
+short genomic alignments (typically obtained by aligning short reads to a
+reference genome).  This includes read counting, computing the coverage,
+junction detection, and working with the nucleotide content of the
+alignments.")
+    (license license:artistic2.0)))
+
+(define-public r-genomicfeatures
+  (package
+    (name "r-genomicfeatures")
+    (version "1.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GenomicFeatures" version))
+              (sha256
+               (base32
+                "0y7lnvfcfrs72xbkn67xcqyz9csl5696mr2zl425fkhmnmimm4fg"))))
+    (properties
+     `((upstream-name . "GenomicFeatures")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocio" ,r-biocio)
+       ("r-biomart" ,r-biomart)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dbi" ,r-dbi)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rcurl" ,r-rcurl)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/GenomicFeatures")
+    (synopsis "Tools for working with transcript centric annotations")
+    (description
+     "This package provides a set of tools and methods for making and
+manipulating transcript centric annotations.  With these tools the user can
+easily download the genomic locations of the transcripts, exons and cds of a
+given organism, from either the UCSC Genome Browser or a BioMart
+database (more sources will be supported in the future).  This information is
+then stored in a local database that keeps track of the relationship between
+transcripts, exons, cds and genes.  Flexible methods are provided for
+extracting the desired features in a convenient format.")
+    (license license:artistic2.0)))
+
+(define-public r-genomicfiles
+  (package
+    (name "r-genomicfiles")
+    (version "1.28.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "GenomicFiles" version))
+       (sha256
+        (base32
+         "1plh14m7w6calw5yxcxp7g4bg8q00ax85m517wap78bni975k13y"))))
+    (properties `((upstream-name . "GenomicFiles")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixgenerics" ,r-matrixgenerics)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://bioconductor.org/packages/GenomicFiles")
+    (synopsis "Distributed computing by file or by range")
+    (description
+     "This package provides infrastructure for parallel computations
+distributed by file or by range.  User defined mapper and reducer functions
+provide added flexibility for data combination and manipulation.")
+    (license license:artistic2.0)))
+
 (define-public r-genomicranges
   (package
     (name "r-genomicranges")
-    (version "1.42.0")
+    (version "1.44.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicRanges" version))
               (sha256
                (base32
-                "0j4py5g6pdj35xhlaqhxxhg55j9l4mcdk3yck4dgyavv5f2dh24i"))))
+                "1qxc6dcwdlkan3hg0j9yfhz7gyi9qg671yj6zizsk6mzl7qqva0x"))))
     (properties
      `((upstream-name . "GenomicRanges")))
     (build-system r-build-system)
@@ -2109,14 +3115,14 @@ manipulating genomic intervals and variables defined along a genome.")
 (define-public r-gostats
   (package
     (name "r-gostats")
-    (version "2.56.0")
+    (version "2.58.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GOstats" version))
        (sha256
         (base32
-         "18q8p0fv9fl2r6zjxknfjwqxr69dlyxy6c8amzn6c6dwjq1cxk6j"))))
+         "0jjswy6qmfgr2f6vk3y9pdvs9x91gn31h55qllgh0qb2cb26g9wa"))))
     (properties `((upstream-name . "GOstats")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2140,14 +3146,14 @@ testing and other simple calculations.")
 (define-public r-gseabase
   (package
     (name "r-gseabase")
-    (version "1.52.1")
+    (version "1.54.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GSEABase" version))
        (sha256
         (base32
-         "0dawh1kjmf6921jm77j2s2phrq5237pjc4sdh8fkln89gf48zx6i"))))
+         "0946kkykms79mqnx262q20xzrrhv7cv723xh378335ff41qyf63n"))))
     (properties `((upstream-name . "GSEABase")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2169,14 +3175,14 @@ Enrichment Analysis} (GSEA).")
 (define-public r-hpar
   (package
     (name "r-hpar")
-    (version "1.32.1")
+    (version "1.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "hpar" version))
        (sha256
         (base32
-         "0h10b0fyblpsnxj60rpbk99z7snrkkb5jssmf0v27s6d445jq2zr"))))
+         "0q5pp04rq2gsh1kibvp8bvjkqc1kb46qpnj6agqp2vyqhrrfrm99"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -2186,16 +3192,120 @@ Enrichment Analysis} (GSEA).")
 the Human Protein Atlas project.")
     (license license:artistic2.0)))
 
+(define-public r-rhtslib
+  (package
+    (name "r-rhtslib")
+    (version "1.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "Rhtslib" version))
+       (sha256
+        (base32
+         "0acpgv98529ic2i2k03knz05akb6h51wbz7sr5zgi8gk4nmawrlf"))))
+    (properties `((upstream-name . "Rhtslib")))
+    (build-system r-build-system)
+    ;; Without this a temporary directory ends up in the Rhtslib.so binary,
+    ;; which makes R abort the build.
+    (arguments '(#:configure-flags '("--no-staged-install")))
+    (propagated-inputs
+     `(("curl" ,curl)
+       ("zlib" ,zlib) ; packages using rhtslib need to link with zlib
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/nhayden/Rhtslib")
+    (synopsis "High-throughput sequencing library as an R package")
+    (description
+     "This package provides the HTSlib C library for high-throughput
+nucleotide sequence analysis.  The package is primarily useful to developers
+of other R packages who wish to make use of HTSlib.")
+    (license license:lgpl2.0+)))
+
+(define-public r-impute
+  (package
+    (name "r-impute")
+    (version "1.66.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "impute" version))
+              (sha256
+               (base32
+                "0pprkv25avxhllddcssvqvy3nibmqkfwaq4xnlhka7858gyiyd1k"))))
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (build-system r-build-system)
+    (home-page "https://bioconductor.org/packages/impute")
+    (synopsis "Imputation for microarray data")
+    (description
+     "This package provides a function to impute missing gene expression
+microarray data, using nearest neighbor averaging.")
+    (license license:gpl2+)))
+
+(define-public r-interactivedisplaybase
+  (package
+    (name "r-interactivedisplaybase")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "interactiveDisplayBase" version))
+       (sha256
+        (base32
+         "00rgrrmglslgb6j7whp0m5dlyl4436r647br05rrpv8cxrmbs2iv"))))
+    (properties
+     `((upstream-name . "interactiveDisplayBase")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-dt" ,r-dt)
+       ("r-shiny" ,r-shiny)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/interactiveDisplayBase")
+    (synopsis "Base package for web displays of Bioconductor objects")
+    (description
+     "This package contains the basic methods needed to generate interactive
+Shiny-based display methods for Bioconductor objects.")
+    (license license:artistic2.0)))
+
+(define-public r-keggrest
+  (package
+    (name "r-keggrest")
+    (version "1.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "KEGGREST" version))
+       (sha256
+        (base32
+         "15313d20v3ziyn52fhc6fbzcy1kxjkdx18124bxhdfd14f4aypcd"))))
+    (properties `((upstream-name . "KEGGREST")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-httr" ,r-httr)
+       ("r-png" ,r-png)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/KEGGREST")
+    (synopsis "Client-side REST access to KEGG")
+    (description
+     "This package provides a package that provides a client interface to the
+@dfn{Kyoto Encyclopedia of Genes and Genomes} (KEGG) REST server.")
+    (license license:artistic2.0)))
+
 (define-public r-limma
   (package
     (name "r-limma")
-    (version "3.46.0")
+    (version "3.48.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "limma" version))
               (sha256
                (base32
-                "1xxv493q1kip9bjfv7v7k5dnq7hz7gvl80i983v4mvwavhgnbxfz"))))
+                "1mkpl2b1ksylc6dih4a6kgjjia8advikzmqmv762j4r7gya950pf"))))
     (build-system r-build-system)
     (home-page "http://bioinf.wehi.edu.au/limma")
     (synopsis "Package for linear models for microarray and RNA-seq data")
@@ -2205,17 +3315,408 @@ and the assessment of differential expression.  The analysis methods apply to
 different technologies, including microarrays, RNA-seq, and quantitative PCR.")
     (license license:gpl2+)))
 
+(define-public r-methylkit
+  (package
+    (name "r-methylkit")
+    (version "1.18.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "methylKit" version))
+              (sha256
+               (base32
+                "147nag4rz2xpjkkf8rmhja9k4ixjj1hsb0lq3lw7mw6q67zxsvf3"))))
+    (properties `((upstream-name . "methylKit")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-emdbook" ,r-emdbook)
+       ("r-fastseg" ,r-fastseg)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-gtools" ,r-gtools)
+       ("r-iranges" ,r-iranges)
+       ("r-kernsmooth" ,r-kernsmooth)
+       ("r-limma" ,r-limma)
+       ("r-mclust" ,r-mclust)
+       ("r-mgcv" ,r-mgcv)
+       ("r-qvalue" ,r-qvalue)
+       ("r-r-utils" ,r-r-utils)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rhtslib" ,r-rhtslib)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr))) ; for vignettes
+    (home-page "https://github.com/al2na/methylKit")
+    (synopsis
+     "DNA methylation analysis from high-throughput bisulfite sequencing results")
+    (description
+     "MethylKit is an R package for DNA methylation analysis and annotation
+from high-throughput bisulfite sequencing.  The package is designed to deal
+with sequencing data from @dfn{Reduced representation bisulfite
+sequencing} (RRBS) and its variants, but also target-capture methods and whole
+genome bisulfite sequencing.  It also has functions to analyze base-pair
+resolution 5hmC data from experimental protocols such as oxBS-Seq and
+TAB-Seq.")
+    (license license:artistic2.0)))
+
+(define-public r-motifrg
+  (package
+    (name "r-motifrg")
+    (version "1.31.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "motifRG" version))
+       (sha256
+        (base32
+         "1ml6zyzlk8yjbnfhga2qnw8nl43rankvka0kc1yljxr2b66aqbhn"))))
+    (properties `((upstream-name . "motifRG")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
+       ("r-iranges" ,r-iranges)
+       ("r-seqlogo" ,r-seqlogo)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://bioconductor.org/packages/motifRG")
+    (synopsis "Discover motifs in high throughput sequencing data")
+    (description
+     "This package provides tools for discriminative motif discovery in high
+throughput genetic sequencing data sets using regression methods.")
+    (license license:artistic2.0)))
+
+(define-public r-mutationalpatterns
+  (package
+    (name "r-mutationalpatterns")
+    (version "3.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MutationalPatterns" version))
+       (sha256
+        (base32
+         "0433i4xbz8hrfaj8fxgzps3x8dqrl5vgwzg7qmp4cy5sb1lw5wvs"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ;; These two packages are suggested packages
+       ("r-bsgenome-hsapiens-1000g" ,r-bsgenome-hsapiens-1000genomes-hs37d5)
+       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
+       ("r-cowplot" ,r-cowplot)
+       ("r-dplyr" ,r-dplyr)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggalluvial" ,r-ggalluvial)
+       ("r-ggdendro" ,r-ggdendro)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-iranges" ,r-iranges)
+       ("r-magrittr" ,r-magrittr)
+       ("r-nmf" ,r-nmf)
+       ("r-pracma" ,r-pracma)
+       ("r-purrr" ,r-purrr)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-stringr" ,r-stringr)
+       ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://bioconductor.org/packages/MutationalPatterns/")
+    (synopsis "Extract and visualize mutational patterns in genomic data")
+    (description "This package provides an extensive toolset for the
+characterization and visualization of a wide range of mutational patterns
+in SNV base substitution data.")
+    (license license:expat)))
+
+(define-public r-msnbase
+  (package
+    (name "r-msnbase")
+    (version "2.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MSnbase" version))
+       (sha256
+        (base32
+         "1z7s17j6zgb70m0khyf9icqlnbnzlivca7vw7j0vxyw417ld9lkr"))))
+    (properties `((upstream-name . "MSnbase")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-digest" ,r-digest)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-impute" ,r-impute)
+       ("r-iranges" ,r-iranges)
+       ("r-lattice" ,r-lattice)
+       ("r-maldiquant" ,r-maldiquant)
+       ("r-mass" ,r-mass)
+       ("r-mscoreutils" ,r-mscoreutils)
+       ("r-mzid" ,r-mzid)
+       ("r-mzr" ,r-mzr)
+       ("r-pcamethods" ,r-pcamethods)
+       ("r-plyr" ,r-plyr)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-rcpp" ,r-rcpp)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scales" ,r-scales)
+       ("r-vsn" ,r-vsn)
+       ("r-xml" ,r-xml)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/lgatto/MSnbase")
+    (synopsis "Base functions and classes for MS-based proteomics")
+    (description
+     "This package provides basic plotting, data manipulation and processing
+of mass spectrometry based proteomics data.")
+    (license license:artistic2.0)))
+
+(define-public r-msnid
+  (package
+    (name "r-msnid")
+    (version "1.26.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MSnID" version))
+       (sha256
+        (base32
+         "0r3vgigf4fk0xzfg8gcvad01jdh0fysh6x22m9qy77x6glyrxcj2"))))
+    (properties `((upstream-name . "MSnID")))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-HOME
+           (lambda _ (setenv "HOME" "/tmp"))))))
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-annotationhub" ,r-annotationhub)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocstyle" ,r-biocstyle)
+       ("r-biostrings" ,r-biostrings)
+       ("r-data-table" ,r-data-table)
+       ("r-doparallel" ,r-doparallel)
+       ("r-dplyr" ,r-dplyr)
+       ("r-foreach" ,r-foreach)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-iterators" ,r-iterators)
+       ("r-msnbase" ,r-msnbase)
+       ("r-msmstests" ,r-msmstests)
+       ("r-mzid" ,r-mzid)
+       ("r-mzr" ,r-mzr)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-purrr" ,r-purrr)
+       ("r-r-cache" ,r-r-cache)
+       ("r-rcpp" ,r-rcpp)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rlang" ,r-rlang)
+       ("r-runit" ,r-runit)
+       ("r-stringr" ,r-stringr)
+       ("r-tibble" ,r-tibble)
+       ("r-xtable" ,r-xtable)))
+    (home-page "https://bioconductor.org/packages/MSnID")
+    (synopsis "Utilities for LC-MSn proteomics identifications")
+    (description
+     "This package extracts @dfn{tandem mass spectrometry} (MS/MS) ID data
+from mzIdentML (leveraging the mzID package) or text files.  After collating
+the search results from multiple datasets it assesses their identification
+quality and optimize filtering criteria to achieve the maximum number of
+identifications while not exceeding a specified false discovery rate.  It also
+contains a number of utilities to explore the MS/MS results and assess missed
+and irregular enzymatic cleavages, mass measurement accuracy, etc.")
+    (license license:artistic2.0)))
+
+(define-public r-mzid
+  (package
+    (name "r-mzid")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "mzID" version))
+       (sha256
+        (base32
+         "1wsy6frxa5602jqb1nlqv39mzgpid8wfyvb9m2jb6srv7p59rgys"))))
+    (properties `((upstream-name . "mzID")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-doparallel" ,r-doparallel)
+       ("r-foreach" ,r-foreach)
+       ("r-iterators" ,r-iterators)
+       ("r-plyr" ,r-plyr)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-xml" ,r-xml)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/mzID")
+    (synopsis "Parser for mzIdentML files")
+    (description
+     "This package provides a parser for mzIdentML files implemented using the
+XML package.  The parser tries to be general and able to handle all types of
+mzIdentML files with the drawback of having less pretty output than a vendor
+specific parser.")
+    (license license:gpl2+)))
+
+(define-public r-mzr
+  (package
+    (name "r-mzr")
+    (version "2.26.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "mzR" version))
+       (sha256
+        (base32
+         "1m5xvnv0rxyrfri4jwyyryr13d55nyhqvfc5xxg5mpskw2v029kp"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "src/boost")
+           #t))))
+    (properties `((upstream-name . "mzR")))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-system-boost
+           (lambda _
+             (substitute* "src/Makevars"
+               (("\\./boost/libs.*") "")
+               (("PKG_LIBS=") "PKG_LIBS=$(BOOST_LIBS) ")
+               (("\\ARCH_OBJS=" line)
+                (string-append line
+                               "\nBOOST_LIBS=-lboost_system -lboost_regex \
+-lboost_iostreams -lboost_thread -lboost_filesystem -lboost_chrono\n")))
+             #t)))))
+    (inputs
+     `(;; Our default boost package won't work here, unfortunately, even with
+       ;; mzR version 2.26.0.
+       ("boost" ,boost-for-mysql) ; use this instead of the bundled boost sources
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-ncdf4" ,r-ncdf4)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rhdf5lib" ,r-rhdf5lib)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/sneumann/mzR/")
+    (synopsis "Parser for mass spectrometry data files")
+    (description
+     "The mzR package provides a unified API to the common file formats and
+parsers available for mass spectrometry data.  It comes with a wrapper for the
+ISB random access parser for mass spectrometry mzXML, mzData and mzML files.
+The package contains the original code written by the ISB, and a subset of the
+proteowizard library for mzML and mzIdentML.  The netCDF reading code has
+previously been used in XCMS.")
+    (license license:artistic2.0)))
+
+(define-public r-organismdbi
+  (package
+    (name "r-organismdbi")
+    (version "1.34.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "OrganismDbi" version))
+       (sha256
+        (base32
+         "0p8ccpdchdwci4kv9y07wdadzgms8nipvg6rm1rll35jcflnnkxi"))))
+    (properties `((upstream-name . "OrganismDbi")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-dbi" ,r-dbi)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-graph" ,r-graph)
+       ("r-iranges" ,r-iranges)
+       ("r-rbgl" ,r-rbgl)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/OrganismDbi")
+    (synopsis "Software to enable the smooth interfacing of database packages")
+    (description "The package enables a simple unified interface to several
+annotation packages each of which has its own schema by taking advantage of
+the fact that each of these packages implements a select methods.")
+    (license license:artistic2.0)))
+
+(define-public r-pcamethods
+  (package
+    (name "r-pcamethods")
+    (version "1.84.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "pcaMethods" version))
+       (sha256
+        (base32
+         "1ccqsxn487dy92c2d1iffh9917z4zq5ia92zv2h6pi00jjc6ymb5"))))
+    (properties `((upstream-name . "pcaMethods")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-mass" ,r-mass)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/hredestig/pcamethods")
+    (synopsis "Collection of PCA methods")
+    (description
+     "This package provides Bayesian PCA, Probabilistic PCA, Nipals PCA,
+Inverse Non-Linear PCA and the conventional SVD PCA.  A cluster based method
+for missing value estimation is included for comparison.  BPCA, PPCA and
+NipalsPCA may be used to perform PCA on incomplete data as well as for
+accurate missing value estimation.  A set of methods for printing and plotting
+the results is also provided.  All PCA methods make use of the same data
+structure (pcaRes) to provide a common interface to the PCA results.")
+    (license license:gpl3+)))
+
+(define-public r-protgenerics
+  (package
+    (name "r-protgenerics")
+    (version "1.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ProtGenerics" version))
+       (sha256
+        (base32
+         "1c79k8nc28782w5gxi7pkm8jmddq1hdw6khs9kgsp8dyk60ak6fq"))))
+    (properties `((upstream-name . "ProtGenerics")))
+    (build-system r-build-system)
+    (home-page "https://github.com/lgatto/ProtGenerics")
+    (synopsis "S4 generic functions for proteomics infrastructure")
+    (description
+     "This package provides S4 generic functions needed by Bioconductor
+proteomics packages.")
+    (license license:artistic2.0)))
+
 (define-public r-rbgl
   (package
     (name "r-rbgl")
-    (version "1.66.0")
+    (version "1.68.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RBGL" version))
        (sha256
         (base32
-         "016vyzgixb3gjpzi21rbs6ngnnqcxr77krwjjf1ldnzzj8vqrqsz"))))
+         "0l40ibf8g5s4ay83s92l198jjqc5l09hcmxqcjrpifvp5pjf9yy5"))))
     (properties `((upstream-name . "RBGL")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2228,17 +3729,67 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
 the graph algorithms contained in the Boost library.")
     (license license:artistic2.0)))
 
+(define-public r-rcas
+  (package
+    (name "r-rcas")
+    (version "1.18.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "RCAS" version))
+              (sha256
+               (base32
+                "0l92v870ndna8zjqwzf22fb9vyhkh6942v4gaiqr1yc4qr521p5p"))))
+    (properties `((upstream-name . "RCAS")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
+       ("r-cowplot" ,r-cowplot)
+       ("r-data-table" ,r-data-table)
+       ("r-dt" ,r-dt)
+       ("r-genomation" ,r-genomation)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggseqlogo" ,r-ggseqlogo)
+       ("r-gprofiler2" ,r-gprofiler2)
+       ("r-iranges" ,r-iranges)
+       ("r-knitr" ,r-knitr)
+       ("r-pbapply" ,r-pbapply)
+       ("r-pheatmap" ,r-pheatmap)
+       ("r-plotly" ,r-plotly)
+       ("r-plotrix" ,r-plotrix)
+       ("r-proxy" ,r-proxy)
+       ("r-ranger" ,r-ranger)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("r-s4vectors" ,r-s4vectors)
+       ("pandoc" ,pandoc)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (synopsis "RNA-centric annotation system")
+    (description
+     "RCAS aims to be a standalone RNA-centric annotation system that provides
+intuitive reports and publication-ready graphics.  This package provides the R
+library implementing most of the pipeline's features.")
+    (home-page "https://github.com/BIMSBbioinfo/RCAS")
+    (license license:artistic2.0)))
+
 (define-public r-regioner
   (package
     (name "r-regioner")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "regioneR" version))
        (sha256
         (base32
-         "0c2khfyrgy3y68cj6b07s91hplabbj70xwdgwrf2bsd9h6gknjdi"))))
+         "0xzzaz3cl6pyxfsg0d931v8k15wbd05s5mnsb7igxldc5qqg3nsl"))))
     (properties `((upstream-name . "regioneR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2262,14 +3813,14 @@ region sets and other genomic features.")
 (define-public r-reportingtools
   (package
     (name "r-reportingtools")
-    (version "2.30.2")
+    (version "2.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ReportingTools" version))
        (sha256
         (base32
-         "1vvra7l29s7lnq996nwlpzbkrbdkr3ivkgmfp4kndfykxsl9q4vb"))))
+         "0v6wzfswwcd1xdxgwa9gzlkmavr4p55jy11k84anh0rs0xx3dmmj"))))
     (properties
      `((upstream-name . "ReportingTools")))
     (build-system r-build-system)
@@ -2309,16 +3860,70 @@ reports together for a particular project that can be viewed in a web
 browser.")
     (license license:artistic2.0)))
 
+(define-public r-rhdf5
+  (package
+    (name "r-rhdf5")
+    (version "2.36.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "rhdf5" version))
+              (sha256
+               (base32
+                "1a5kw9ry9cr258al0x3q0ss5xn1ymscdypx51vzzgzamhy7dqakz"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rhdf5filters" ,r-rhdf5filters)
+       ("r-rhdf5lib" ,r-rhdf5lib)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/rhdf5")
+    (synopsis "HDF5 interface to R")
+    (description
+     "This R/Bioconductor package provides an interface between HDF5 and R.
+HDF5's main features are the ability to store and access very large and/or
+complex datasets and a wide variety of metadata on mass storage (disk) through
+a completely portable file format.  The rhdf5 package is thus suited for the
+exchange of large and/or complex datasets between R and other software
+package, and for letting R applications work on datasets that are larger than
+the available RAM.")
+    (license license:artistic2.0)))
+
+(define-public r-rhdf5filters
+  (package
+    (name "r-rhdf5filters")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "rhdf5filters" version))
+       (sha256
+        (base32
+         "133v0s452acspi4dbf6gsa2xrr0qza86jdjjbpwhdv6zfd1djbgc"))))
+    (properties `((upstream-name . "rhdf5filters")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rhdf5lib" ,r-rhdf5lib)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/grimbough/rhdf5filters")
+    (synopsis "HDF5 compression filters")
+    (description
+     "This package provides a collection of compression filters for use with
+HDF5 datasets.")
+    (license license:bsd-2)))
+
 (define-public r-rsamtools
   (package
     (name "r-rsamtools")
-    (version "2.6.0")
+    (version "2.8.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Rsamtools" version))
               (sha256
                (base32
-                "040pggkwglc6wy90qnc7xcdnaj0v3iqlykvvsl74241409qly554"))))
+                "0arhh5bbx3pmxmkh5sjgczcswqy83d35r7cjhd2knpczdvrixaq5"))))
     (properties
      `((upstream-name . "Rsamtools")))
     (build-system r-build-system)
@@ -2330,8 +3935,7 @@ browser.")
              (substitute* "DESCRIPTION"
                (("zlibbioc, ") ""))
              (substitute* "NAMESPACE"
-               (("import\\(zlibbioc\\)") ""))
-             #t)))))
+               (("import\\(zlibbioc\\)") "")))))))
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
        ("r-biocparallel" ,r-biocparallel)
@@ -2352,17 +3956,173 @@ Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed
 tab-delimited (tabix) files.")
     (license license:expat)))
 
+;; This is a CRAN package, but it depends on a Bioconductor package:
+;; s4vectors.
+(define-public r-restfulr
+  (package
+    (name "r-restfulr")
+    (version "0.0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "restfulr" version))
+       (sha256
+        (base32
+         "1dk45mzrr6ka92yjz7hfhkj12kpx1wg4szv1h1mg80mgga4ganbv"))))
+    (properties `((upstream-name . "restfulr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcurl" ,r-rcurl)
+       ("r-rjson" ,r-rjson)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xml" ,r-xml)
+       ("r-yaml" ,r-yaml)))
+    (home-page "https://cran.r-project.org/package=restfulr")
+    (synopsis "R interface to RESTful web services")
+    (description
+     "This package models a RESTful service as if it were a nested R list.")
+    (license license:artistic2.0)))
+
+(define-public r-rtracklayer
+  (package
+    (name "r-rtracklayer")
+    (version "1.52.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "rtracklayer" version))
+              (sha256
+               (base32
+                "0iic0g0clsjd9ypdmfs6k52hrnmfszhxzg0xx89nszpasf69wghv"))))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-system-zlib
+           (lambda _
+             (substitute* "DESCRIPTION"
+               ((" zlibbioc,") ""))
+             (substitute* "NAMESPACE"
+               (("import\\(zlibbioc\\)") "")))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocio" ,r-biocio)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rcurl" ,r-rcurl)
+       ("r-restfulr" ,r-restfulr)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xml" ,r-xml)
+       ("r-xvector" ,r-xvector)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (home-page "https://bioconductor.org/packages/rtracklayer")
+    (synopsis "R interface to genome browsers and their annotation tracks")
+    (description
+     "rtracklayer is an extensible framework for interacting with multiple
+genome browsers (currently UCSC built-in) and manipulating annotation tracks
+in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit
+built-in).  The user may export/import tracks to/from the supported browsers,
+as well as query and modify the browser state, such as the current viewport.")
+    (license license:artistic2.0)))
+
+;; This is a CRAN package, but it depends on a Bioconductor package.
+(define-public r-samr
+  (package
+    (name "r-samr")
+    (version "3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "samr" version))
+       (sha256
+        (base32
+         "01km0f7qgm73x19vbvsxl083hs1dq4dj8qm5h64cxbf20b08my15"))))
+    (properties `((upstream-name . "samr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-gsa" ,r-gsa)
+       ("r-impute" ,r-impute)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-openxlsx" ,r-openxlsx)
+       ("r-shiny" ,r-shiny)
+       ("r-shinyfiles" ,r-shinyfiles)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://statweb.stanford.edu/~tibs/SAM/")
+    (synopsis "Significance analysis of Microarrays")
+    (description
+     "This is a package for significance analysis of Microarrays for
+differential expression analysis, RNAseq data and related problems.")
+    ;; Any version of the LGPL
+    (license license:lgpl3+)))
+
+(define-public r-seqlogo
+  (package
+    (name "r-seqlogo")
+    (version "1.58.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "seqLogo" version))
+       (sha256
+        (base32
+         "1253sj1hc6bbrff0iv5xa3v9znqvisll0fy6fdjka9c778fn4mcp"))))
+    (properties `((upstream-name . "seqLogo")))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/seqLogo")
+    (synopsis "Sequence logos for DNA sequence alignments")
+    (description
+     "seqLogo takes the position weight matrix of a DNA sequence motif and
+plots the corresponding sequence logo as introduced by Schneider and
+Stephens (1990).")
+    (license license:lgpl2.0+)))
+
+(define-public r-seqpattern
+  (package
+    (name "r-seqpattern")
+    (version "1.24.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "seqPattern" version))
+              (sha256
+               (base32
+                "0h74z84zyvfzclsm0g13b95hirn99185wc6lp53jkzah9yyi59ay"))))
+    (properties
+     `((upstream-name . "seqPattern")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-kernsmooth" ,r-kernsmooth)
+       ("r-plotrix" ,r-plotrix)))
+    (home-page "https://bioconductor.org/packages/seqPattern")
+    (synopsis "Visualising oligonucleotide patterns and motif occurrences")
+    (description
+     "This package provides tools to visualize oligonucleotide patterns and
+sequence motif occurrences across a large set of sequences centred at a common
+reference point and sorted by a user defined feature.")
+    (license license:gpl3+)))
+
 (define-public r-shortread
   (package
     (name "r-shortread")
-    (version "1.48.0")
+    (version "1.50.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ShortRead" version))
        (sha256
         (base32
-         "0w4m8d3h660mmr2ymp206r1n4aqssxmkv8yxkbr5y1swrahxzfk9"))))
+         "0zqinw3c6h5v1c5nhzkiziirws16nbviccgw8nj2d22r33dbqwp3"))))
     (properties `((upstream-name . "ShortRead")))
     (build-system r-build-system)
     (inputs
@@ -2395,16 +4155,111 @@ purposes.  The package also contains legacy support for early single-end,
 ungapped alignment formats.")
     (license license:artistic2.0)))
 
+(define-public r-trajectoryutils
+  (package
+    (name "r-trajectoryutils")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "TrajectoryUtils" version))
+       (sha256
+        (base32
+         "1b7mg3ypp1ay98cav47h9vn692lx0n9b5b0hpansgnkr5prb823b"))))
+    (properties
+     `((upstream-name . "TrajectoryUtils")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-igraph" ,r-igraph)
+       ("r-matrix" ,r-matrix)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/TrajectoryUtils")
+    (synopsis "Single-cell trajectory analysis utilities")
+    (description
+     "This package implements low-level utilities for single-cell trajectory
+analysis, primarily intended for re-use inside higher-level packages.  It
+includes a function to create a cluster-level minimum spanning tree and data
+structures to hold pseudotime inference results.")
+    (license license:gpl3)))
+
+(define-public r-slingshot
+  (package
+   (name "r-slingshot")
+   (version "2.0.0")
+   (source (origin
+            (method url-fetch)
+            (uri (bioconductor-uri "slingshot" version))
+            (sha256
+             (base32
+              "1aqsz2kxwax8d8d5iv3zk5hlyk5aya1wbxs1wky2rgccw4d35whx"))))
+   (build-system r-build-system)
+   (propagated-inputs
+    `(("r-igraph" ,r-igraph)
+      ("r-matrixstats" ,r-matrixstats)
+      ("r-princurve" ,r-princurve)
+      ("r-s4vectors" ,r-s4vectors)
+      ("r-singlecellexperiment" ,r-singlecellexperiment)
+      ("r-summarizedexperiment" ,r-summarizedexperiment)
+      ("r-trajectoryutils" ,r-trajectoryutils)))
+   (native-inputs
+    `(("r-knitr" ,r-knitr)))
+   (home-page "https://bioconductor.org/packages/slingshot")
+   (synopsis "Tools for ordering single-cell sequencing")
+   (description "This package provides functions for inferring continuous,
+branching lineage structures in low-dimensional data.  Slingshot was designed
+to model developmental trajectories in single-cell RNA sequencing data and
+serve as a component in an analysis pipeline after dimensionality reduction
+and clustering.  It is flexible enough to handle arbitrarily many branching
+events and allows for the incorporation of prior knowledge through supervised
+graph construction.")
+   (license license:artistic2.0)))
+
+(define-public r-structuralvariantannotation
+  (package
+    (name "r-structuralvariantannotation")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "StructuralVariantAnnotation" version))
+       (sha256
+        (base32
+         "10h63h1v87nvm3bfyr6dsjlbmzxf1vks30d0xz6q4hssqq9xlzgv"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-assertthat" ,r-assertthat)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dplyr" ,r-dplyr)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-rlang" ,r-rlang)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-stringr" ,r-stringr)
+       ("r-variantannotation" ,r-variantannotation)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/StructuralVariantAnnotation/")
+    (synopsis "R package designed to simplify structural variant analysis")
+    (description
+     "This package contains useful helper functions for dealing with structural
+variants in VCF format.  The packages contains functions for parsing VCFs from
+a number of popular callers as well as functions for dealing with breakpoints
+involving two separate genomic loci encoded as GRanges objects.")
+    (license license:gpl3)))
+
 (define-public r-summarizedexperiment
   (package
     (name "r-summarizedexperiment")
-    (version "1.20.0")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "SummarizedExperiment" version))
               (sha256
                (base32
-                "04x6d4mcsnvz6glkmf6k2cv3fs8zk03i9rvv0ahpl793n8l411ps"))))
+                "16np5ik6jgbi68mhlib6yskywwbaa50mlr7m3sh1hqk889whfn1g"))))
     (properties
      `((upstream-name . "SummarizedExperiment")))
     (build-system r-build-system)
@@ -2429,17 +4284,48 @@ typically represent genomic ranges of interest and the columns represent
 samples.")
     (license license:artistic2.0)))
 
+(define-public r-sva
+  (package
+    (name "r-sva")
+    (version "3.40.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "sva" version))
+       (sha256
+        (base32
+         "12jkcybdfspabh7x124d44l9fj1hwwg3gvcqxvz5wpkiflc2vkji"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-edger" ,r-edger)
+       ("r-genefilter" ,r-genefilter)
+       ("r-mgcv" ,r-mgcv)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-limma" ,r-limma)))
+    (home-page "https://bioconductor.org/packages/sva")
+    (synopsis "Surrogate variable analysis")
+    (description
+     "This package contains functions for removing batch effects and other
+unwanted variation in high-throughput experiment.  It also contains functions
+for identifying and building surrogate variables for high-dimensional data
+sets.  Surrogate variables are covariates constructed directly from
+high-dimensional data like gene expression/RNA sequencing/methylation/brain
+imaging data that can be used in subsequent analyses to adjust for unknown,
+unmodeled, or latent sources of noise.")
+    (license license:artistic2.0)))
+
 (define-public r-systempiper
   (package
     (name "r-systempiper")
-    (version "1.24.6")
+    (version "1.26.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "systemPipeR" version))
        (sha256
         (base32
-         "05qnn105gm423fka4kb84vpgzjmz1py6mxpfa2agwwmc5v012qbp"))))
+         "1apqi5ih06s37v7wpp13ybksiinrwj0ii6mx6vvvfkb6ix0wljws"))))
     (properties `((upstream-name . "systemPipeR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2465,6 +4351,7 @@ samples.")
        ("r-shortread" ,r-shortread)
        ("r-stringr" ,r-stringr)
        ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-testthat" ,r-testthat)
        ("r-yaml" ,r-yaml)
        ("r-variantannotation" ,r-variantannotation)))
     (native-inputs
@@ -2483,16 +4370,73 @@ experimental designs is facilitated by a consistently implemented sample
 annotation infrastructure.")
     (license license:artistic2.0)))
 
+(define-public r-topgo
+  (package
+    (name "r-topgo")
+    (version "2.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "topGO" version))
+              (sha256
+               (base32
+                "1ggi7yrhkyi85p3sfj3yd95n9mzq1xpff28ixa4dl9yzasks1v5a"))))
+    (properties
+     `((upstream-name . "topGO")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-dbi" ,r-dbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-go-db" ,r-go-db)
+       ("r-graph" ,r-graph)
+       ("r-lattice" ,r-lattice)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-sparsem" ,r-sparsem)))
+    (home-page "https://bioconductor.org/packages/topGO")
+    (synopsis "Enrichment analysis for gene ontology")
+    (description
+     "The topGO package provides tools for testing @dfn{gene ontology} (GO)
+terms while accounting for the topology of the GO graph.  Different test
+statistics and different methods for eliminating local similarities and
+dependencies between GO terms can be implemented and applied.")
+    ;; Any version of the LGPL applies.
+    (license license:lgpl2.1+)))
+
+(define-public r-tximport
+  (package
+    (name "r-tximport")
+    (version "1.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "tximport" version))
+              (sha256
+               (base32
+                "0ip2yr0zspf2aagskxl4dwncr48dw5qb90an3sswnnh2dqdb82if"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/tximport")
+    (synopsis "Import and summarize transcript-level estimates for gene-level analysis")
+    (description
+     "This package provides tools to import transcript-level abundance,
+estimated counts and transcript lengths, and to summarize them into matrices
+for use with downstream gene-level analysis packages.  Average transcript
+length, weighted by sample-specific transcript abundance estimates, is
+provided as a matrix which can be used as an offset for different expression
+of gene-level counts.")
+    (license license:gpl2+)))
+
 (define-public r-variantannotation
   (package
     (name "r-variantannotation")
-    (version "1.36.0")
+    (version "1.38.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "VariantAnnotation" version))
               (sha256
                (base32
-                "1sl0l6v05lfglj281nszma0h5k234md7rn2pdah8vs2d4iq3kimw"))))
+                "0c9r00j8a3bs6n0dv4wi17jc1ljzvr3r2bi4h9axhcsf2ip906rh"))))
     (properties
      `((upstream-name . "VariantAnnotation")))
     (propagated-inputs
@@ -2521,16 +4465,52 @@ annotation infrastructure.")
 coding changes and predict coding outcomes.")
     (license license:artistic2.0)))
 
+(define-public r-vsn
+  (package
+    (name "r-vsn")
+    (version "3.60.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "vsn" version))
+       (sha256
+        (base32
+         "0nppph3kv8z83368snb8s3n4vcqj829yyi1kh4q09qvq18rhvssv"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-biobase" ,r-biobase)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-lattice" ,r-lattice)
+       ("r-limma" ,r-limma)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr))) ; for vignettes
+    (home-page "https://bioconductor.org/packages/release/bioc/html/vsn.html")
+    (synopsis "Variance stabilization and calibration for microarray data")
+    (description
+     "The package implements a method for normalising microarray intensities,
+and works for single- and multiple-color arrays.  It can also be used for data
+from other technologies, as long as they have similar format.  The method uses
+a robust variant of the maximum-likelihood estimator for an
+additive-multiplicative error model and affine calibration.  The model
+incorporates data calibration step (a.k.a.  normalization), a model for the
+dependence of the variance on the mean intensity and a variance stabilizing
+data transformation.  Differences between transformed intensities are
+analogous to \"normalized log-ratios\".  However, in contrast to the latter,
+their variance is independent of the mean, and they are usually more sensitive
+and specific in detecting differential transcription.")
+    (license license:artistic2.0)))
+
 (define-public r-xvector
   (package
     (name "r-xvector")
-    (version "0.30.0")
+    (version "0.32.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "XVector" version))
               (sha256
                (base32
-                "1pqljikg4f6jb7wgm5537zwgq5b013nyz1agjrwfq2cljb0ym6lq"))))
+                "1cw34gd9iaspl0v737xl7rngq63zrj03a5ngai15ggrnv1sq2aqr"))))
     (properties
      `((upstream-name . "XVector")))
     (build-system r-build-system)
@@ -2557,17 +4537,36 @@ coding changes and predict coding outcomes.")
 \"externally\" (behind an R external pointer, or on disk).")
     (license license:artistic2.0)))
 
+(define-public r-zlibbioc
+  (package
+    (name "r-zlibbioc")
+    (version "1.38.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "zlibbioc" version))
+              (sha256
+               (base32
+                "1dv5bf12kzk1yzyfs3g5syim16sbi44kalvzj2i2xcnxnl6x60ip"))))
+    (properties
+     `((upstream-name . "zlibbioc")))
+    (build-system r-build-system)
+    (home-page "https://bioconductor.org/packages/zlibbioc")
+    (synopsis "Provider for zlib-1.2.5 to R packages")
+    (description "This package uses the source code of zlib-1.2.5 to create
+libraries for systems that do not have these available via other means.")
+    (license license:artistic2.0)))
+
 (define-public r-geneplotter
   (package
     (name "r-geneplotter")
-    (version "1.68.0")
+    (version "1.70.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "geneplotter" version))
        (sha256
         (base32
-         "1f8nr60n1nig1gdy85wqdhpzxvp9r4chygxm8xpy882mdvfv6rqx"))))
+         "1d085lfa3yif5wkys1fb0zzgg0cqwd1y18vasgqqdr6rva075d4z"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotate" ,r-annotate)
@@ -2585,14 +4584,14 @@ coding changes and predict coding outcomes.")
 (define-public r-oligoclasses
   (package
     (name "r-oligoclasses")
-    (version "1.52.0")
+    (version "1.54.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "oligoClasses" version))
        (sha256
         (base32
-         "19p6h0cgnma5md5mm9bn6rxfhr0a9znljgdbvsqybms6asvh18gy"))))
+         "1nsfyfpj264h6y322pzz0i001b0m862j3skbq5rjwlrj1p8j2gi7"))))
     (properties `((upstream-name . "oligoClasses")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2620,14 +4619,14 @@ packages.")
 (define-public r-oligo
   (package
     (name "r-oligo")
-    (version "1.54.1")
+    (version "1.56.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "oligo" version))
        (sha256
         (base32
-         "0cpfkvxpni7an361li0k0qlfcraj7z9zv71r25dbly5kp3dql7k3"))))
+         "0fyq77im6s79havjwbchhqhnllxs134jsi98g6msxz66h16lj3al"))))
     (properties `((upstream-name . "oligo")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -2656,14 +4655,14 @@ Affymetrix (CEL files) and NimbleGen arrays (XYS files).")
 (define-public r-qvalue
   (package
     (name "r-qvalue")
-    (version "2.22.0")
+    (version "2.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "qvalue" version))
        (sha256
         (base32
-         "0xbww16lz0k2p4mmq1aqd7iz7d8rvzgw1gm55jy6xbx19ymj64i5"))))
+         "0xssanffh1hr7f48mnazcpwi25rdp7mxlyb9nbf4q2mp7m40jnpm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -2711,13 +4710,13 @@ integration with @code{Rcpp}.")
 (define-public r-apeglm
   (package
    (name "r-apeglm")
-   (version "1.12.0")
+   (version "1.14.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "apeglm" version))
             (sha256
              (base32
-              "0pix1fhxk2q89p2745fgsmxwics9rf10l392qhw3rw6v6ynhims2"))))
+              "1xld6ar440achik4dbd7vhiw6jfj0sb96jm52n7hav5bv4gag3mh"))))
    (properties `((upstream-name . "apeglm")))
    (build-system r-build-system)
    (propagated-inputs
@@ -2738,13 +4737,13 @@ posterior for individual coefficients.")
 (define-public r-greylistchip
   (package
    (name "r-greylistchip")
-   (version "1.22.0")
+   (version "1.24.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "GreyListChIP" version))
             (sha256
              (base32
-              "1d1yvza1aw3vs3di6mrra5l52ig0p9bpzprrqvknjaz5i4yb8ma6"))))
+              "1g9ja8p90czx83ar0l9ran7m6aggvszdbqm714fq7z4rxq9b4hs3"))))
    (properties `((upstream-name . "GreyListChIP")))
    (build-system r-build-system)
    (propagated-inputs
@@ -2765,14 +4764,14 @@ signal in the input, that lead to spurious peaks during peak calling.")
 (define-public r-diffbind
   (package
     (name "r-diffbind")
-    (version "3.0.15")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DiffBind" version))
        (sha256
         (base32
-         "06f613s8d9z51njyf839g22gwybx9zs5n6xghwr5j1ad2n4m6qwi"))))
+         "12x80z1a8gihqrlaxmzk80nc5700la72lival58s4wjv4k2lhyf3"))))
     (properties `((upstream-name . "DiffBind")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2840,17 +4839,49 @@ package comprehensively addressing issues ranging from post-alignments
 processing to visualization and annotation.")
     (license license:gpl2)))
 
+(define-public r-mbkmeans
+  (package
+    (name "r-mbkmeans")
+    (version "1.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "mbkmeans" version))
+              (sha256
+               (base32
+                "1k7ngpx4s50jplrsv19zzjr7izpdl9wwppb218ih5cp0ki1gcc2n"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-beachmat" ,r-beachmat)
+       ("r-benchmarkme" ,r-benchmarkme)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-clusterr" ,r-clusterr)
+       ("r-delayedarray" ,r-delayedarray)
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rhdf5lib" ,r-rhdf5lib)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "https://bioconductor.org/packages/mbkmeans")
+    (synopsis "Mini-batch k-means clustering for single-cell RNA-seq")
+    (description "This package implements the mini-batch k-means algorithm for
+large datasets, including support for on-disk data representation.")
+    (license license:expat)))
+
 (define-public r-multtest
   (package
     (name "r-multtest")
-    (version "2.46.0")
+    (version "2.48.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "multtest" version))
        (sha256
         (base32
-         "06vixd81nh3nxrc6km73p7c4bwln1zm39fa9gp7gj272vsxkx53q"))))
+         "1wi15v4llgv11hpb2j9h4a35nrnawnmvbz5d5dvgy8lhqrlq8w9a"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-survival" ,r-survival)
@@ -2881,13 +4912,13 @@ expressed genes in DNA microarray experiments.")
 (define-public r-graph
   (package
     (name "r-graph")
-    (version "1.68.0")
+    (version "1.70.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "graph" version))
               (sha256
                (base32
-                "0wr7j2pasvi3srvg9z3n034ljk8mldcixny6b3kmqbqm8dqy9py4"))))
+                "1i7s198d5kw4gk6nqqsd3vqaknj4493p822f2za8q95gv6x02rxa"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)))
@@ -2979,14 +5010,14 @@ determining dependencies between variables, code improvement suggestions.")
 (define-public r-chippeakanno
   (package
     (name "r-chippeakanno")
-    (version "3.24.2")
+    (version "3.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ChIPpeakAnno" version))
        (sha256
         (base32
-         "0l417aygs89wf1j9fjpfjhahzskbpbgcrm8xpx3qm4s0307vfzkw"))))
+         "1wnmsdrb4wz2qprj5mnd3h0wx32y2mpy3xg7mjbgwlqn9bzpw3gk"))))
     (properties `((upstream-name . "ChIPpeakAnno")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3003,6 +5034,7 @@ determining dependencies between variables, code improvement suggestions.")
        ("r-genomicranges" ,r-genomicranges)
        ("r-ggplot2" ,r-ggplot2)
        ("r-graph" ,r-graph)
+       ("r-interactionset" ,r-interactionset)
        ("r-iranges" ,r-iranges)
        ("r-keggrest" ,r-keggrest)
        ("r-matrixstats" ,r-matrixstats)
@@ -3032,13 +5064,13 @@ enrichedGO (addGeneIDs).")
 (define-public r-matrixgenerics
   (package
    (name "r-matrixgenerics")
-   (version "1.2.1")
+   (version "1.4.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "MatrixGenerics" version))
             (sha256
              (base32
-              "163f0z33cv6038gcjdxn1hadcg9b09qgvm6zc5zn97y4rc8grkrb"))))
+              "1xq3a9ls125wfnhn13rdbsxzq3f6klsspx7h0znd6l67f5j5k25s"))))
    (properties
     `((upstream-name . "MatrixGenerics")))
    (build-system r-build-system)
@@ -3059,12 +5091,12 @@ incompatibilities.")
 (define-public r-marray
   (package
     (name "r-marray")
-    (version "1.68.0")
+    (version "1.70.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "marray" version))
               (sha256
-               (base32 "1kkgv166gzvlj8p58vzam3hcaz8mypi3hhpdsjhaszwg6nav4ray"))))
+               (base32 "0wpmrhqpyv27h1hn31hzz21r74r7yqx79ljv8i8gn6ix8lf5ca56"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-limma" ,r-limma)))
@@ -3078,12 +5110,12 @@ normalization and quality checking.")
 (define-public r-cghbase
   (package
    (name "r-cghbase")
-   (version "1.50.0")
+   (version "1.52.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "CGHbase" version))
             (sha256
-             (base32 "10zhjmls3f63cj0bnywjb97zhrj7x3xsq6yjhvf5cclxc4kcrcx4"))))
+             (base32 "1p87k4vw981k97d9bckmprrfg55jwd91658rgxzjj8hnschf28a4"))))
    (properties `((upstream-name . "CGHbase")))
    (build-system r-build-system)
    (propagated-inputs
@@ -3098,12 +5130,12 @@ the @code{arrayCGH} packages.")
 (define-public r-cghcall
   (package
    (name "r-cghcall")
-   (version "2.52.0")
+   (version "2.54.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "CGHcall" version))
             (sha256
-             (base32 "1a6k87xfm79wnsc30k5aziakv51h4dd9zqw81q8bd72hc3fpz8ba"))))
+             (base32 "1zik04y2q0anzy85l0b4ryzkxpfx2fnmpwp5s7akyk1jfl2r8gw7"))))
    (properties `((upstream-name . "CGHcall")))
    (build-system r-build-system)
    (propagated-inputs
@@ -3121,12 +5153,12 @@ the @code{arrayCGH} packages.")
 (define-public r-qdnaseq
   (package
     (name "r-qdnaseq")
-    (version "1.26.0")
+    (version "1.28.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "QDNAseq" version))
               (sha256
-               (base32 "1njka1ldaj12id3m2z8ghlrm2lg0n5pxsxyv5gpjnsiabnnaw6ph"))))
+               (base32 "1p4544xlarkbgs9kybrrawq3v7qr6ix62nrc6l7dcksh2ka69yzf"))))
     (properties `((upstream-name . "QDNAseq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3154,14 +5186,14 @@ respectively.")
 (define-public r-bayseq
   (package
     (name "r-bayseq")
-    (version "2.24.0")
+    (version "2.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "baySeq" version))
        (sha256
         (base32
-         "1496inlw0x4mfy3g2v7j9ips96sf7576ydnfn6hvn2m6rz2ls215"))))
+         "0hyc0sl2nf18bz0jxbzim0v41zwh2rnnr7l3p6zkk9wnw5gn7bbc"))))
     (properties `((upstream-name . "baySeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3180,14 +5212,14 @@ more complex hypotheses) via empirical Bayesian methods.")
 (define-public r-chipcomp
   (package
     (name "r-chipcomp")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ChIPComp" version))
        (sha256
         (base32
-         "0dbypfgys74snmyf982183ilzg6vamfw1d5y0lp5p8zxbffh2xl7"))))
+         "1kfxjh1mynrgqsy2q6byf03cbymqc8w7l7672iyd0wj5qzlif4h5"))))
     (properties `((upstream-name . "ChIPComp")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3214,14 +5246,14 @@ datasets.")
 (define-public r-riboprofiling
   (package
     (name "r-riboprofiling")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RiboProfiling" version))
        (sha256
         (base32
-         "112071w7aw7cwckipq0dll1lssl7pwafma4v9jj9sx12rjcj57xg"))))
+         "1jmd8yrv7p7hn4gdibg3svmhqxjyrnfp7cgsqg8zv862lgd75zsl"))))
     (properties `((upstream-name . "RiboProfiling")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3255,14 +5287,14 @@ assessment, principal component analysis on codon coverage.")
 (define-public r-riboseqr
   (package
     (name "r-riboseqr")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "riboSeqR" version))
        (sha256
         (base32
-         "07i64gch14rsbjlfv17s689wzlqbi7hcqhcw21pp6cw8bvhvd5xr"))))
+         "1m5w2j35wr0lzwir4s58z757vrcsj5mglsqrkvs241k0hlmn06qa"))))
     (properties `((upstream-name . "riboSeqR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3283,14 +5315,14 @@ parsing of genetic sequencing data from ribosome profiling experiments.")
 (define-public r-interactionset
   (package
     (name "r-interactionset")
-    (version "1.18.1")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "InteractionSet" version))
        (sha256
         (base32
-         "0dx6yw6rxgkcidnnyjzv57vzd112nf9n2bj6dkv7r3a2d2wj6xh4"))))
+         "034xidjmn67n1471fnpdmz7gjm6p05cj8sp9nssc3gxdzn54a6xb"))))
     (properties
      `((upstream-name . "InteractionSet")))
     (build-system r-build-system)
@@ -3317,14 +5349,14 @@ experiments.")
 (define-public r-genomicinteractions
   (package
     (name "r-genomicinteractions")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GenomicInteractions" version))
        (sha256
         (base32
-         "0ad0a5cadchx1rkqj4cc8k0y1zf34jgp1406hvik5zabr7xijkbd"))))
+         "0zjl7rp5fk14kqsx0bkbpq6hqahbkiyvwa9aggp4kfb8hnmz9qal"))))
     (properties
      `((upstream-name . "GenomicInteractions")))
     (build-system r-build-system)
@@ -3358,14 +5390,14 @@ information and producing various plots and statistics.")
 (define-public r-ctc
   (package
     (name "r-ctc")
-    (version "1.64.0")
+    (version "1.66.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ctc" version))
        (sha256
         (base32
-         "1nwlphbfba3w8ixck02k5c84qm4flnp9fd68li0jn5a08qi9gmyp"))))
+         "1v8aysvy6a3r1iafc3xvk885c128kb3pb9zpcdhdjcn0by96k8hh"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-amap" ,r-amap)))
     (home-page "https://bioconductor.org/packages/ctc/")
@@ -3378,14 +5410,14 @@ trees and clusters to other programs.")
 (define-public r-goseq
   (package
     (name "r-goseq")
-    (version "1.42.0")
+    (version "1.44.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "goseq" version))
        (sha256
         (base32
-         "18fs3m4kl3zahn42j20rjvxy83irscgqx0dvid7va4majvsib509"))))
+         "07qrxssx4rb8r958r1smx8xfpzdxpp55hci3201hcmz3mxz77i0s"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -3404,14 +5436,14 @@ defined categories which are over/under represented in RNA-seq data.")
 (define-public r-glimma
   (package
     (name "r-glimma")
-    (version "2.0.0")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Glimma" version))
        (sha256
         (base32
-         "0gy30v30lw27frhmw39pzacqzrv2vwj5rsp6gb3yifllrahdiffv"))))
+         "0dsk8qmwimzmd1x4k4jwg9q11jm1ahn8cw0gzd6s2gmigfls4hsa"))))
     (properties `((upstream-name . "Glimma")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3437,14 +5469,14 @@ information.")
 (define-public r-rots
   (package
     (name "r-rots")
-    (version "1.18.0")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ROTS" version))
        (sha256
         (base32
-         "0qk0gfhgr14g13zlfyf5101b5s8cma7j3r8a92q93h0axy8ka23n"))))
+         "18wyi73l95df182vg3m014sxwdbpggr61vsbazhyw4vyx2fnzmpl"))))
     (properties `((upstream-name . "ROTS")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3461,14 +5493,14 @@ in omics data.")
 (define-public r-plgem
   (package
     (name "r-plgem")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "plgem" version))
        (sha256
         (base32
-         "039gqwsm1v6q8v8b248nm8g9gnsk379mfx65rbgdmh3chsd8pm8a"))))
+         "1rz5jk5bgpk7gjknx79jyslahjg46q2f4bx6dgd0vwmarc29a45z"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -3486,14 +5518,14 @@ genes or proteins in these datasets.")
 (define-public r-inspect
   (package
     (name "r-inspect")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "INSPEcT" version))
        (sha256
         (base32
-         "1jymvi5mf7vhs58zfh290pacfswgvkw09rmbirmr24kxcgl30483"))))
+         "0jh5db9dv5pb6b50sg22x8q55m3h0h0nkmb9mivvvp22dhyrd82z"))))
     (properties `((upstream-name . "INSPEcT")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3533,14 +5565,14 @@ modeling the rates that determines changes in mature mRNA levels.")
 (define-public r-dnabarcodes
   (package
     (name "r-dnabarcodes")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DNABarcodes" version))
        (sha256
         (base32
-         "0zzf6xgg6k1gdig8zvpawck2bgmamsc0k43j4pl4xsz9an6dmzbg"))))
+         "1wiqmzjcb7flp7ldcgbx91asxxrmm1rg9pcfljniab9xcsldhksp"))))
     (properties `((upstream-name . "DNABarcodes")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3562,14 +5594,14 @@ demultiplexed, i.e. assigned to their original reference barcode.")
 (define-public r-ruvseq
   (package
     (name "r-ruvseq")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RUVSeq" version))
        (sha256
         (base32
-         "1anrybyrzpajr5434svyfbaypjai6x0ifsmqvjgimmxq3xqhv0jh"))))
+         "1fy0k1p0m209lzjpd5jhfnifa22lrn63qq3a3kn5g0xhbbmijzac"))))
     (properties `((upstream-name . "RUVSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3590,14 +5622,14 @@ samples.")
 (define-public r-biocneighbors
   (package
     (name "r-biocneighbors")
-    (version "1.8.2")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocNeighbors" version))
        (sha256
         (base32
-         "19gyl917lf5ydy5hgj0hnc388rw5sbj83awav9js2yr2zmbgn4d7"))))
+         "0cjidi18wjip9xzx83890wjk40vvjq06prf1ag4m2kac47w01r7v"))))
     (properties `((upstream-name . "BiocNeighbors")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3619,17 +5651,142 @@ to search for all neighbors within a given distance.  Parallelization is
 achieved for all methods using the BiocParallel framework.")
     (license license:gpl3)))
 
+(define-public r-scaledmatrix
+  (package
+    (name "r-scaledmatrix")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ScaledMatrix" version))
+       (sha256
+        (base32
+         "1j96fvw1waqxbv5c8myfmhsidq370z03yz13yqmrs4nn1rpn1a06"))))
+    (properties `((upstream-name . "ScaledMatrix")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-delayedarray" ,r-delayedarray)
+       ("r-matrix" ,r-matrix)
+       ("r-s4vectors" ,r-s4vectors)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/LTLA/ScaledMatrix")
+    (synopsis "Create a DelayedMatrix of scaled and centered values")
+    (description
+     "This package provides delayed computation of a matrix of scaled and
+centered values.  The result is equivalent to using the @code{scale} function
+but avoids explicit realization of a dense matrix during block processing.
+This permits greater efficiency in common operations, most notably matrix
+multiplication.")
+    (license license:gpl3)))
+
+(define-public r-treeio
+  (package
+    (name "r-treeio")
+    (version "1.16.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "treeio" version))
+       (sha256
+        (base32
+         "0ypl4h80m08sf7r4zfvqgvpsz46x15wvcl1idq5pd813bp1w2sws"))))
+    (properties `((upstream-name . "treeio")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ape" ,r-ape)
+       ("r-dplyr" ,r-dplyr)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rlang" ,r-rlang)
+       ("r-tibble" ,r-tibble)
+       ("r-tidytree" ,r-tidytree)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/YuLab-SMU/treeio")
+    (synopsis "Base classes and functions for Phylogenetic tree input and output")
+    (description
+     "This is an R package to make it easier to import and store phylogenetic
+trees with associated data; and to link external data from different sources
+to phylogeny.  It also supports exporting phylogenetic trees with
+heterogeneous associated data to a single tree file and can be served as a
+platform for merging tree with associated data and converting file formats.")
+    (license license:artistic2.0)))
+
+(define-public r-ggtree
+  (package
+    (name "r-ggtree")
+    (version "3.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ggtree" version))
+       (sha256
+        (base32
+         "0i665b5jxgsv3ncxmczy7n0h911br44dw9f7m4jwv3pjmr5mm6vk"))))
+    (properties `((upstream-name . "ggtree")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ape" ,r-ape)
+       ("r-aplot" ,r-aplot)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-magrittr" ,r-magrittr)
+       ("r-purrr" ,r-purrr)
+       ("r-rlang" ,r-rlang)
+       ("r-rvcheck" ,r-rvcheck)
+       ("r-scales" ,r-scales)
+       ("r-tidyr" ,r-tidyr)
+       ("r-tidytree" ,r-tidytree)
+       ("r-treeio" ,r-treeio)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://yulab-smu.top/treedata-book/")
+    (synopsis "R package for visualization of trees and annotation data")
+    (description
+     "This package extends the ggplot2 plotting system which implements a
+grammar of graphics.  ggtree is designed for visualization and annotation of
+phylogenetic trees and other tree-like structures with their annotation
+data.")
+    (license license:artistic2.0)))
+
+(define-public r-metapod
+  (package
+    (name "r-metapod")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "metapod" version))
+       (sha256
+        (base32
+         "1hbcwr6d8gyrf4azh0gi588xkrg6gz7gsb5hbvzqkhplbsp6shlv"))))
+    (properties `((upstream-name . "metapod")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/metapod")
+    (synopsis "Meta-analyses on p-values of differential analyses")
+    (description
+     "This package implements a variety of methods for combining p-values in
+differential analyses of genome-scale datasets.  Functions can combine
+p-values across different tests in the same analysis (e.g., genomic windows in
+ChIP-seq, exons in RNA-seq) or for corresponding tests across separate
+analyses (e.g., replicated comparisons, effect of different treatment
+conditions).  Support is provided for handling log-transformed input p-values,
+missing values and weighting where appropriate.")
+    (license license:gpl3)))
+
 (define-public r-biocsingular
   (package
     (name "r-biocsingular")
-    (version "1.6.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocSingular" version))
        (sha256
         (base32
-         "1hczix1h14d19hzcsngqkqqnqkprs41phzlcird8haxnw9bs03ni"))))
+         "1l0xgc3z5ci5sid198nsgg0k5i40rh877jybzmy0ify7rzv8carp"))))
     (properties `((upstream-name . "BiocSingular")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3641,7 +5798,8 @@ achieved for all methods using the BiocParallel framework.")
        ("r-matrix" ,r-matrix)
        ("r-rcpp" ,r-rcpp)
        ("r-rsvd" ,r-rsvd)
-       ("r-s4vectors" ,r-s4vectors)))
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scaledmatrix" ,r-scaledmatrix)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/LTLA/BiocSingular")
@@ -3700,14 +5858,14 @@ maps.")
 (define-public r-savr
   (package
     (name "r-savr")
-    (version "1.28.0")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "savR" version))
        (sha256
         (base32
-         "1vha9b7gndwjzvrzr1hdhv3wc6a1s2n9grxwfd78yb2lkysf4hic"))))
+         "1ynp334hm76zf05j4f6vha6r16s5f2ncxx9yviq4rxidk9r723jq"))))
     (properties `((upstream-name . "savR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3726,14 +5884,14 @@ Viewer (SAV) files, access data, and generate QC plots.")
 (define-public r-chipexoqual
   (package
     (name "r-chipexoqual")
-    (version "1.14.0")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ChIPexoQual" version))
        (sha256
         (base32
-         "15r5jgkfwwfqpw4v4q2ddmglm3bfw002nnbnzn1s0v2b1w3bgiag"))))
+         "0fbrf5s6pz115djm7xw95k1d0p7svi40aacbb3d52wmx5azwj424"))))
     (properties `((upstream-name . "ChIPexoQual")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3766,13 +5924,13 @@ sequencing data.")
 (define-public r-copynumber
   (package
     (name "r-copynumber")
-    (version "1.30.0")
+    (version "1.32.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "copynumber" version))
               (sha256
                (base32
-                "00fyfy3kpz33v1hqisd5m5xdazwjmjrfj8ssbf6p9m3am2ar23gm"))))
+                "03pvjzjrcsbjfw3855s3whfzin45vaipy7cahnj6fywdysvh8hps"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-s4vectors" ,r-s4vectors)
@@ -3789,14 +5947,14 @@ penalized least squares regression method.")
 (define-public r-dnacopy
   (package
     (name "r-dnacopy")
-    (version "1.64.0")
+    (version "1.66.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DNAcopy" version))
        (sha256
         (base32
-         "0km5af4iw8a0m6by933lgdi5246jafyfxk6fsqdiwg07v9wxw5hc"))))
+         "0mgq814f6c2271d2lxg763bsnv3ma4ari5xa4x1rbksv8yvcjc4d"))))
     (properties `((upstream-name . "DNAcopy")))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
@@ -3889,14 +6047,14 @@ and regression inferences from RNA-sequencing data.")
 (define-public r-ebseq
   (package
     (name "r-ebseq")
-    (version "1.30.0")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "EBSeq" version))
        (sha256
         (base32
-         "1x2489xaqg85v7n3yhqs0nh9ha6dn4m167dkc6akzig4xivwjjny"))))
+         "0h5v3vrb90zim80bdnr3aw58g3h7zjqa4l9i0jwx5j19ywf54fdz"))))
     (properties `((upstream-name . "EBSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3913,13 +6071,13 @@ gene and isoform level using RNA-seq data")
 (define-public r-karyoploter
   (package
     (name "r-karyoploter")
-    (version "1.16.0")
+    (version "1.18.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "karyoploteR" version))
               (sha256
                (base32
-                "1agw49mckm3g33igqdp9lr8a4ky8nhivaxrs7d00dvzk0diqwdb2"))))
+                "11sgxz2xz685pgm8mf0hzm6aryx4fj5g3dlffjzpqxh3awfqa19p"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -3951,14 +6109,14 @@ coordinates.")
 (define-public r-lpsymphony
   (package
     (name "r-lpsymphony")
-    (version "1.18.0")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "lpsymphony" version))
        (sha256
         (base32
-         "0f9qjfv7rp1y3mwscnjz3pph7m40zgz55xcdhyii6k1iw2vyaxx9"))))
+         "0aw4b3p5z8ys7zlwy8s3bsqk03xwx42311yxr7q14w3f7sn3shzn"))))
     (build-system r-build-system)
     (inputs
      `(("zlib" ,zlib)))
@@ -3981,14 +6139,14 @@ to install interface to SYMPHONY.")
 (define-public r-ihw
   (package
     (name "r-ihw")
-    (version "1.18.0")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "IHW" version))
        (sha256
         (base32
-         "04szg3bj5cjixxcp8j3inmj0fzk2mg8gp2w2b33x0im8ik24qiw0"))))
+         "0b393a8ayzbnrgkk562w1dj7avacpb3wc7yq7awiki24wi5g2lfw"))))
     (properties `((upstream-name . "IHW")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4013,14 +6171,14 @@ independent of the p-value under the null hypothesis.")
 (define-public r-icobra
   (package
     (name "r-icobra")
-    (version "1.18.1")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "iCOBRA" version))
        (sha256
         (base32
-         "183asczy9v2v1vrzxb7n7pa2yfzym3l24r3737k0jg6hnp2bpw50"))))
+         "190rkx3sivj68in36hhin5v535yd6fvlvm7l90w1bl38zpb7p6jn"))))
     (properties `((upstream-name . "iCOBRA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4049,14 +6207,14 @@ interactive exploration of results.")
 (define-public r-mast
   (package
     (name "r-mast")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MAST" version))
        (sha256
         (base32
-         "11qr7n9i4masqz0yzikddchyn223m8dy6zv461dly07fd43qi9mn"))))
+         "1gkpagam5rap36viyr3n4psa658x9vckrxap1h67jasiiyrcfz2d"))))
     (properties `((upstream-name . "MAST")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4084,14 +6242,14 @@ single cell assay data.")
 (define-public r-monocle
   (package
     (name "r-monocle")
-    (version "2.18.0")
+    (version "2.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "monocle" version))
        (sha256
         (base32
-         "1k3hwi9aspjy75arigg7i1w7ygf112y12cndibf2bhpz2phzwslx"))))
+         "05j1vc51f39xalggdq27y7218gkr3zq7fh7jhzsb4jj7fpn837ry"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -4203,14 +6361,14 @@ qPCR data, but could be used with other types as well.")
 (define-public r-noiseq
   (package
     (name "r-noiseq")
-    (version "2.34.0")
+    (version "2.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "NOISeq" version))
        (sha256
         (base32
-         "08qlavakclgzk345bliam4cfjhsy39n4s6m1biqpq94n9qp00x8f"))))
+         "18d51dv2ygsm7kkwal341f1wrwrazyns0045j00vld367kic8jiz"))))
     (properties `((upstream-name . "NOISeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4230,14 +6388,14 @@ assumptions.")
 (define-public r-scdd
   (package
     (name "r-scdd")
-    (version "1.14.0")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "scDD" version))
        (sha256
         (base32
-         "07l07fq5633ccq5d3l35dm34pwvaqfa3b3qwpn5v5xn99f5hfz0g"))))
+         "1dw9m3m99apmbs32461c6lnmy81n5hxbhz3p8jk419gajkh4v1ji"))))
     (properties `((upstream-name . "scDD")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4268,14 +6426,14 @@ distributions.")
 (define-public r-scone
   (package
     (name "r-scone")
-    (version "1.14.0")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "scone" version))
        (sha256
         (base32
-         "1lnyxcrw3kn5gi3n59dwdhkqps58cjxfknsjsj53qz5rv8iiqz73"))))
+         "1wlky6nkdpz8fya81l6zaxlxc30wyp2gkyh94y5995jwddll38z5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-aroma-light" ,r-aroma-light)
@@ -4290,12 +6448,14 @@ distributions.")
        ("r-gplots" ,r-gplots)
        ("r-hexbin" ,r-hexbin)
        ("r-limma" ,r-limma)
+       ("r-matrixgenerics" ,r-matrixgenerics)
        ("r-matrixstats" ,r-matrixstats)
        ("r-mixtools" ,r-mixtools)
        ("r-rarpack" ,r-rarpack)
        ("r-rcolorbrewer" ,r-rcolorbrewer)
        ("r-rhdf5" ,r-rhdf5)
        ("r-ruvseq" ,r-ruvseq)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
        ("r-summarizedexperiment" ,r-summarizedexperiment)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -4310,14 +6470,14 @@ high-throughput analyses.")
 (define-public r-geoquery
   (package
     (name "r-geoquery")
-    (version "2.58.0")
+    (version "2.60.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GEOquery" version))
        (sha256
         (base32
-         "1jzhgnd404wkz978vbqzwbgixr7yk98c7s9q1fzlyax4f8l0cpi4"))))
+         "0jhkdbcd03d5n8vn3xkad6f21xjkawyxc9rdwcj8vwc8alx730am"))))
     (properties `((upstream-name . "GEOquery")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4343,14 +6503,14 @@ the bridge between GEO and BioConductor.")
 (define-public r-illuminaio
   (package
     (name "r-illuminaio")
-    (version "0.32.0")
+    (version "0.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "illuminaio" version))
        (sha256
         (base32
-         "1yqm2fqw5ka7qywbal3p7axlwm1r0wibsr33n5xjma1dl9pi8fay"))))
+         "1sy0i3nbzsw4ymdxaiwpyx1vcg9yp3i8xfjcymqwhv95j3kyglv9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64" ,r-base64)))
@@ -4364,14 +6524,14 @@ files, including IDAT.")
 (define-public r-siggenes
   (package
     (name "r-siggenes")
-    (version "1.64.0")
+    (version "1.66.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "siggenes" version))
        (sha256
         (base32
-         "08wi2i6pqx06v13533y3mpli5fb637h0xfwcwy67ya9j2ygypv7w"))))
+         "0lva0f255fcpy625frvij4n14q7nw4jcx8n2hlkxid4mgkfqwlhf"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -4390,14 +6550,14 @@ Bayes Analyses of Microarrays} (EBAM).")
 (define-public r-bumphunter
   (package
     (name "r-bumphunter")
-    (version "1.32.0")
+    (version "1.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bumphunter" version))
        (sha256
         (base32
-         "0hfl820kfxydv5kpgyly7sibv2sp6dqsmc78qm33n81w4z4j0mkk"))))
+         "0wi38vwfi8qr10x4xifhylxx7vfc6fqvqs649iq7lf0y7islwq2v"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -4424,14 +6584,14 @@ studies.")
 (define-public r-minfi
   (package
     (name "r-minfi")
-    (version "1.36.0")
+    (version "1.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "minfi" version))
        (sha256
         (base32
-         "1x3ksp6syl54hds7wgm4p9yj4mznhhhhk20ijn3i2jc3k8xqcqfi"))))
+         "189lzppvrz6bw2kpppawgsfjyh2ahyy8bi9z8srpas67qf2r8jmj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-beanplot" ,r-beanplot)
@@ -4475,14 +6635,14 @@ methylation arrays.")
 (define-public r-methylumi
   (package
     (name "r-methylumi")
-    (version "2.36.0")
+    (version "2.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "methylumi" version))
        (sha256
         (base32
-         "00w5affxzirf6ffiznk33papwwvwsk2zgy6xvsx7iaf5kvnak2nh"))))
+         "1941rc524ssx8gwhmwk40mgfrhddfs6hgldvs7bi22r29gm4y7qj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotate" ,r-annotate)
@@ -4521,14 +6681,14 @@ and Infinium HD arrays are also included.")
 (define-public r-lumi
   (package
     (name "r-lumi")
-    (version "2.42.0")
+    (version "2.44.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "lumi" version))
        (sha256
         (base32
-         "19asap8vhm3g8hyvpr8l7mw071dsa1d95wx46lh8m6achffngqv3"))))
+         "0qjdxjdzfnnxcm07bf51v38388s5qf1i03l1sdb9jf3gxdh8yh02"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-affy" ,r-affy)
@@ -4560,14 +6720,14 @@ especially Illumina Infinium methylation microarrays.")
 (define-public r-linnorm
   (package
     (name "r-linnorm")
-    (version "2.14.0")
+    (version "2.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Linnorm" version))
        (sha256
         (base32
-         "1is1kp5av01kqqph16xl7w1dqbyd0q85pgqfv9gqkk8m53635cz3"))))
+         "035hrniycqadmkwg8rmzw8szv0amhy31390izy91rfrld31v2yy7"))))
     (properties `((upstream-name . "Linnorm")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4621,14 +6781,14 @@ evaluation of DEG analysis methods.")
 (define-public r-ioniser
   (package
     (name "r-ioniser")
-    (version "2.14.0")
+    (version "2.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "IONiseR" version))
        (sha256
         (base32
-         "0cfa64d3qv881sa9d665rfki91jaz2spg0zfrb24m37948qzk1lx"))))
+         "0fknlwdfd49v09zspg0337b0zzc8hqza3563yrw51viw3g35d6q3"))))
     (properties `((upstream-name . "IONiseR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4715,6 +6875,52 @@ Fisher, Stouffer, Tippett, and Wilkinson; a number of data-sets to replicate
 published results; and a routine for graphical display.")
     (license license:gpl2)))
 
+(define-public r-tradeseq
+  (package
+   (name "r-tradeseq")
+   (version "1.6.0")
+   (source (origin
+            (method url-fetch)
+            (uri (bioconductor-uri "tradeSeq" version))
+            (sha256
+             (base32
+              "0fgmb309pvqf3chdhqgbd4lzhahcj5g71sica33nzn98qhipldx7"))))
+   (build-system r-build-system)
+   (propagated-inputs
+    `(("r-biobase" ,r-biobase)
+      ("r-biocparallel" ,r-biocparallel)
+      ("r-edger" ,r-edger)
+      ("r-ggplot2" ,r-ggplot2)
+      ("r-igraph" ,r-igraph)
+      ("r-magrittr" ,r-magrittr)
+      ("r-matrix" ,r-matrix)
+      ("r-matrixstats" ,r-matrixstats)
+      ("r-mgcv" ,r-mgcv)
+      ("r-monocle" ,r-monocle)
+      ("r-pbapply" ,r-pbapply)
+      ("r-princurve" ,r-princurve)
+      ("r-rcolorbrewer" ,r-rcolorbrewer)
+      ("r-s4vectors" ,r-s4vectors)
+      ("r-singlecellexperiment" ,r-singlecellexperiment)
+      ("r-slingshot" ,r-slingshot)
+      ("r-summarizedexperiment" ,r-summarizedexperiment)
+      ("r-tibble" ,r-tibble)
+      ("r-viridis" ,r-viridis)))
+   (native-inputs
+    `(("r-knitr" ,r-knitr)))
+   (home-page "https://statomics.github.io/tradeSeq/index.html")
+   (synopsis "Trajectory-based differential expression analysis")
+   (description
+    "This package provides a flexible method for fitting regression models that
+can be used to find genes that are differentially expressed along one or
+multiple lineages in a trajectory.  Based on the fitted models, it uses a
+variety of tests suited to answer different questions of interest, e.g.  the
+discovery of genes for which expression is associated with pseudotime, or which
+are differentially expressed (in a specific region) along the trajectory.  It
+fits a negative binomial generalized additive model (GAM) for each gene, and
+performs inference on the parameters of the GAM.")
+   (license license:expat)))
+
 (define-public r-triform
   (package
     (name "r-triform")
@@ -4742,14 +6948,14 @@ peak definition in combination with known profile characteristics.")
 (define-public r-varianttools
   (package
     (name "r-varianttools")
-    (version "1.32.0")
+    (version "1.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "VariantTools" version))
        (sha256
         (base32
-         "1im4g9p419mikkh4v585yf5f23d13chy67znk4g2mii2i1cd1c89"))))
+         "1gpzrln2clfrja8rzxhsis6bi1xqglh3h2lhvqlnrx4lqxhbkv9c"))))
     (properties `((upstream-name . "VariantTools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4782,14 +6988,14 @@ gmapR.")
 (define-public r-heatplus
   (package
     (name "r-heatplus")
-    (version "2.36.0")
+    (version "3.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Heatplus" version))
        (sha256
         (base32
-         "0vp8y0242k6q07yjk4sg2w7mlk5pgzhjgqkxa79c5ypkyp095a8n"))))
+         "0xwg3sxmihg3p6v3nxgrqy0nrqxi6razg3b3rjh2gcb2vv8gcqng"))))
     (properties `((upstream-name . "Heatplus")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4807,14 +7013,14 @@ information about samples and features can be added to the plot.")
 (define-public r-gosemsim
   (package
     (name "r-gosemsim")
-    (version "2.16.1")
+    (version "2.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GOSemSim" version))
        (sha256
         (base32
-         "1hk1626172scja2gr6axy98czblz0zljiqgqaknsv2xj6frhxcgs"))))
+         "1fzmaxjzyvq6xj5ny1sjijdwi4krzjgyaz52fczpwrxijq5pnyn1"))))
     (properties `((upstream-name . "GOSemSim")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4836,14 +7042,14 @@ sets of GO terms, gene products and gene clusters.")
 (define-public r-anota
   (package
     (name "r-anota")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "anota" version))
        (sha256
         (base32
-         "02s061q6dfw1czppqiklb0fz6q0mjyqgxg6926b2dpqpz8hv690x"))))
+         "039bmcv5l44gszb6xapbihp3mfqdaaa8mfc05y702p78i7x93g5y"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-multtest" ,r-multtest)
@@ -4867,14 +7073,14 @@ the data set is suitable for such analysis.")
 (define-public r-sigpathway
   (package
     (name "r-sigpathway")
-    (version "1.58.0")
+    (version "1.60.0")
     (source
       (origin
         (method url-fetch)
         (uri (bioconductor-uri "sigPathway" version))
         (sha256
           (base32
-            "1fkw0ss471pllqxyjyif5lr35cr8sqpx31x0ccjp85lm3blws72l"))))
+            "1xz5nbw5dzyah8az7mpwj8m27fsvpi2jjhfg3n27dsv8rvdncqi8"))))
     (properties `((upstream-name . "sigPathway")))
     (build-system r-build-system)
     (home-page "https://www.pnas.org/cgi/doi/10.1073/pnas.0506577102")
@@ -4889,14 +7095,14 @@ phenotype of interest.")
 (define-public r-fgsea
   (package
     (name "r-fgsea")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "fgsea" version))
        (sha256
         (base32
-         "0jmkkayabx3m0lyyc2mxd4vdvv7gv7fbk1r884gplnf2zgsx068n"))))
+         "1mhdgy46nxgv7v54bk9bqfy0vgjzl1law7zy718swdd762xn6g9d"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -4921,14 +7127,14 @@ to multiple hypothesis correction.")
 (define-public r-dose
   (package
     (name "r-dose")
-    (version "3.16.0")
+    (version "3.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DOSE" version))
        (sha256
         (base32
-         "149hpf690jls5r5g84sh2hqs10qbqi94syhxfv8n2f800fk7lgy4"))))
+         "1x9cg6qlvbcdb965jh01w07ibc4lj30ikq1v312rdih3sn6zsdck"))))
     (properties `((upstream-name . "DOSE")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4956,20 +7162,21 @@ data.")
 (define-public r-enrichplot
   (package
     (name "r-enrichplot")
-    (version "1.10.2")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "enrichplot" version))
        (sha256
         (base32
-         "0lm5yapd567jxcnz9m4a623aymf3q00svjrxp3rf0r9j77dgyisv"))))
+         "0nvjwwzpmhsfkxqrn8v1a1wcrvr3xl1wn5dy89vsrdydyv31gdc6"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)
        ("r-dose" ,r-dose)
        ("r-ggplot2" ,r-ggplot2)
        ("r-ggraph" ,r-ggraph)
+       ("r-ggtree" ,r-ggtree)
        ("r-gosemsim" ,r-gosemsim)
        ("r-igraph" ,r-igraph)
        ("r-magrittr" ,r-magrittr)
@@ -4992,14 +7199,14 @@ All the visualization methods are developed based on ggplot2 graphics.")
 (define-public r-clusterprofiler
   (package
     (name "r-clusterprofiler")
-    (version "3.18.1")
+    (version "4.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "clusterProfiler" version))
        (sha256
         (base32
-         "04v1xsxfxxy8rdjfswv4crpzkx9592r2sh3cjh1kb54sd4lyb6si"))))
+         "1lmrb6ddpx1p3kdrwszhxq6nndmbiqipzrclk64mnp63y7g50q56"))))
     (properties
      `((upstream-name . "clusterProfiler")))
     (build-system r-build-system)
@@ -5026,17 +7233,63 @@ All the visualization methods are developed based on ggplot2 graphics.")
 profiles (GO and KEGG) of gene and gene clusters.")
     (license license:artistic2.0)))
 
+(define-public r-clusterexperiment
+  (package
+    (name "r-clusterexperiment")
+    (version "2.12.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "clusterExperiment" version))
+              (sha256
+               (base32
+                "1fhmayciwn1m124b4dcs3gzbghgk9f7a7qmjnvvxc958cywcwkx5"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-ape" ,r-ape)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocsingular" ,r-biocsingular)
+       ("r-cluster" ,r-cluster)
+       ("r-delayedarray" ,r-delayedarray)
+       ("r-edger" ,r-edger)
+       ("r-hdf5array" ,r-hdf5array)
+       ("r-howmany" ,r-howmany)
+       ("r-kernlab" ,r-kernlab)
+       ("r-limma" ,r-limma)
+       ("r-locfdr" ,r-locfdr)
+       ("r-matrix" ,r-matrix)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-mbkmeans" ,r-mbkmeans)
+       ("r-nmf" ,r-nmf)
+       ("r-phylobase" ,r-phylobase)
+       ("r-pracma" ,r-pracma)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-rcpp" ,r-rcpp)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scales" ,r-scales)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
+       ("r-stringr" ,r-stringr)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-zinbwave" ,r-zinbwave)))
+    (home-page "https://bioconductor.org/packages/clusterExperiment/")
+    (synopsis "Compare clusterings for single-cell sequencing")
+    (description "This package provides functionality for running and comparing
+many different clusterings of single-cell sequencing data or other large mRNA
+expression data sets.")
+    (license license:artistic2.0)))
+
 (define-public r-mlinterfaces
   (package
     (name "r-mlinterfaces")
-    (version "1.70.0")
+    (version "1.72.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MLInterfaces" version))
        (sha256
         (base32
-         "1j920h1657rc5agd1vrkzk126npfhw7pzr7p7gwg4i0h0wv25q3r"))))
+         "0ipzv7wdvfqhdyjiak956qq201igsdxm6dr6rh3dj6cssgsrnrpb"))))
     (properties `((upstream-name . "MLInterfaces")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5050,6 +7303,7 @@ profiles (GO and KEGG) of gene and gene clusters.")
        ("r-genefilter" ,r-genefilter)
        ("r-ggvis" ,r-ggvis)
        ("r-hwriter" ,r-hwriter)
+       ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-mlbench" ,r-mlbench)
        ("r-pls" ,r-pls)
@@ -5070,14 +7324,14 @@ data in R and Bioconductor containers.")
 (define-public r-annaffy
   (package
     (name "r-annaffy")
-    (version "1.62.0")
+    (version "1.63.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "annaffy" version))
        (sha256
         (base32
-         "1szlr33lq98pd3kx6n9l07lhr93swbk6vjpvb2n9f7716k39mi4i"))))
+         "071qr68dn8k3mvwgpllbk2a4g6f6yyv2087q5rmpb22lkfvi4hwv"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -5085,11 +7339,11 @@ data in R and Bioconductor containers.")
          (add-after 'unpack 'remove-reference-to-non-free-data
            (lambda _
              (substitute* "DESCRIPTION"
-               ((", KEGG.db") ""))
-             #t)))))
+               ((", KEGG.db") "")))))))
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
        ("r-biobase" ,r-biobase)
+       ("r-biocmanager" ,r-biocmanager)
        ("r-dbi" ,r-dbi)
        ("r-go-db" ,r-go-db)))
     (home-page "https://bioconductor.org/packages/annaffy/")
@@ -5106,14 +7360,14 @@ It allows searching of biological metadata using various criteria.")
 (define-public r-a4core
   (package
     (name "r-a4core")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4Core" version))
        (sha256
         (base32
-         "13mzhn92kqpbn58zmh96f6frkm85sv9137mldfzaljf6snk0spg2"))))
+         "00fi753nsayv0xspavw8r9ni1sim8ng33hp3d3kj2b8ihygd1s10"))))
     (properties `((upstream-name . "a4Core")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5131,14 +7385,14 @@ arrays.")
 (define-public r-a4classif
   (package
     (name "r-a4classif")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4Classif" version))
        (sha256
         (base32
-         "03fln0x1am5fqhj4fpkx1yq58paqha086bhhr8az8j0vsq1r7wcz"))))
+         "1lz85bys5dp5d1ir9c9c4wy85wkk62s14niyzzxaqrxpsji2p2iw"))))
     (properties `((upstream-name . "a4Classif")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5161,14 +7415,14 @@ Affymetrix arrays.")
 (define-public r-a4preproc
   (package
     (name "r-a4preproc")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4Preproc" version))
        (sha256
         (base32
-         "1j8jhal83x1xpmsaw8iwv2r32i1ghzm6n0ipjk06yqa9f6zb7f7i"))))
+         "1jibm2f5glzsrvl64hxc5sf59d4w6ry0f663p619hfr44mi1mpri"))))
     (properties `((upstream-name . "a4Preproc")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5186,14 +7440,14 @@ is used for preprocessing the arrays.")
 (define-public r-a4reporting
   (package
     (name "r-a4reporting")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4Reporting" version))
        (sha256
         (base32
-         "1jx4ym3hyix8gwr8d2r38w1wj7siv6ynzhwanczcjf1naws3dqpy"))))
+         "09jjfby5znmg2fdkhpbinx2v21zrfa44qq7cylcn9ipffqx3pk86"))))
     (properties `((upstream-name . "a4Reporting")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5210,14 +7464,14 @@ provides reporting features.")
 (define-public r-a4base
   (package
     (name "r-a4base")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4Base" version))
        (sha256
         (base32
-         "0bqagjmg3yjmdzxv4j7685jjhgb261pq60b5qkfffr1lfnz27lsp"))))
+         "101w4i0w8n7qhki22qr8l8wk8w6zalzmcywqm2g4238qv7xbnr8p"))))
     (properties `((upstream-name . "a4Base")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5241,14 +7495,14 @@ Affymetrix arrays.")
 (define-public r-a4
   (package
     (name "r-a4")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "a4" version))
        (sha256
         (base32
-         "12q09dhxjl7yrd5m2y7a03kv5614dp144ajmskp5q9x2gvz30f79"))))
+         "0bwn185admy5k99fkd2dhhvy7x1f75r0mqn5k24dbbg0paw6nnr8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-a4base" ,r-a4base)
@@ -5266,14 +7520,14 @@ Affymetrix arrays.")
 (define-public r-abseqr
   (package
     (name "r-abseqr")
-    (version "1.8.0")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "abseqR" version))
        (sha256
         (base32
-         "0lh7kcsp3yb3s8s8j6w9k1by8i16q7r2a49z8y1xjmkcb2klsi3f"))))
+         "1xvk84gd1lfq1icrfwwd6y79zywrisfnc3knprigzzax31aks32c"))))
     (properties `((upstream-name . "abseqR")))
     (build-system r-build-system)
     (inputs
@@ -5314,14 +7568,14 @@ further downstream analysis on its output.")
 (define-public r-bacon
   (package
     (name "r-bacon")
-    (version "1.18.0")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bacon" version))
        (sha256
         (base32
-         "0cv4zhs075mz8c5gdwhr45v14fb1lyi3rlwjfqyz15dmmnzlxw47"))))
+         "1yp0675n1g8rxdjdd7w8al5c9jq96h0kfm8218mc50z0p2fasgbj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocparallel" ,r-biocparallel)
@@ -5341,14 +7595,14 @@ fitting a three-component normal mixture on z-scores.")
 (define-public r-rgadem
   (package
     (name "r-rgadem")
-    (version "2.38.0")
+    (version "2.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "rGADEM" version))
        (sha256
         (base32
-         "0x13glgkcnjg4qsn0v0qgzy6bgmghqpvgwfww2ha641p0c5i9qzw"))))
+         "05drbhjqn5kik6k4h03vr3d2b6pv5rm65lsnkyx4caxxcdii4jzm"))))
     (properties `((upstream-name . "rGADEM")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5399,12 +7653,12 @@ distributions, modules and filter motifs.")
 (define-public r-motifdb
   (package
    (name "r-motifdb")
-   (version "1.32.0")
+   (version "1.34.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "MotifDb" version))
             (sha256
-             (base32 "0gfk1dgw7gd2y4cnmfdzpzjqkvvikcwx20h0fp7aiq8f0zfwlav5"))))
+             (base32 "04cmgg5mw1cqbg95zyfc2imykmdxyff16w26rq97xghcxwiq2b3z"))))
    (properties `((upstream-name . "MotifDb")))
    (build-system r-build-system)
    (propagated-inputs
@@ -5426,12 +7680,12 @@ frequency matrices from nine public sources, for multiple organisms.")
 (define-public r-motifbreakr
   (package
    (name "r-motifbreakr")
-   (version "2.4.0")
+   (version "2.6.0")
    (source (origin
             (method url-fetch)
             (uri (bioconductor-uri "motifbreakR" version))
             (sha256
-             (base32 "0nni6i7h51kz0ch8ls9c9jzd7fjmc9wsavp11hx6w6bmhnh3k4n7"))))
+             (base32 "0i18qriznad4lr6ynzmz01k5yavs5m3h7hd0adbyg8lppbzm6hh4"))))
    (properties `((upstream-name . "motifbreakR")))
    (build-system r-build-system)
    (propagated-inputs
@@ -5477,14 +7731,14 @@ Bioconductor.")
 (define-public r-motifstack
   (package
     (name "r-motifstack")
-    (version "1.34.0")
+    (version "1.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "motifStack" version))
        (sha256
         (base32
-         "1psqpdbgbad31bd8hg5bl62qi5s9rl75nzm85igfpxar3zwwxjlb"))))
+         "0yn348kmw7v46iym913ncx4yh5nxzmba8bdys52s12ldgjja53gp"))))
     (properties `((upstream-name . "motifStack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5508,14 +7762,14 @@ type and symbol colors.")
 (define-public r-genomicscores
   (package
     (name "r-genomicscores")
-    (version "2.2.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GenomicScores" version))
        (sha256
         (base32
-         "1492xirsgag2dsr6ys9wm3a65sq826p9hcdg3b4dm1wbxgdfx6jr"))))
+         "1b8982fj0r7igj749wljsdfn3c985w8n3d5gbhr5rw73llfb8x6w"))))
     (properties `((upstream-name . "GenomicScores")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5545,14 +7799,14 @@ position-specific scores within R and Bioconductor.")
 (define-public r-atacseqqc
   (package
     (name "r-atacseqqc")
-    (version "1.14.4")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ATACseqQC" version))
        (sha256
         (base32
-         "04sn0zl4m60i5jvqz5rmhc4qwcgrhk6rhznrygmm93k9v363mbn9"))))
+         "168g3xkhjzrfjpa1ynifdyfhsxx3rpyrbybsarlzr9kslw1cdkxl"))))
     (properties `((upstream-name . "ATACseqQC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5592,14 +7846,14 @@ footprints.")
 (define-public r-gofuncr
   (package
     (name "r-gofuncr")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GOfuncR" version))
        (sha256
         (base32
-         "1ah4v2jj508wjsmrncw58wjq2cyris7bnzfw6kr7jp9n4dvn33mq"))))
+         "0lp2gmjlsk1yqxim5pi26i27iijw11lrcxmji7ynlag359yfnynd"))))
     (properties `((upstream-name . "GOfuncR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5641,14 +7895,14 @@ annotations and ontologies.")
 (define-public r-abaenrichment
   (package
     (name "r-abaenrichment")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ABAEnrichment" version))
        (sha256
         (base32
-         "0i0214ap9f6lnyawdgcdsds6g3g9qqji3wbn6ln6rs698gjs9w9c"))))
+         "15v5n6d3mnj9d86swkh9agfvrsd065dldaywm1adwmkhhk525wmd"))))
     (properties `((upstream-name . "ABAEnrichment")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5698,14 +7952,14 @@ different identifieres using the Biocore Data Team data-packages (e.g.
 (define-public r-annotationtools
   (package
     (name "r-annotationtools")
-    (version "1.64.0")
+    (version "1.66.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "annotationTools" version))
        (sha256
         (base32
-         "1q3c30hqxjgar3gm8d7h4rw3m7cgc11cgv9q0fwv5abj075cj224"))))
+         "18dd8saqx17fplvv5sbfz4p9fy7ksy3n9348rd3qlczihcrh9i3w"))))
     (properties
      `((upstream-name . "annotationTools")))
     (build-system r-build-system)
@@ -5723,14 +7977,14 @@ text files).")
 (define-public r-allelicimbalance
   (package
     (name "r-allelicimbalance")
-    (version "1.28.0")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AllelicImbalance" version))
        (sha256
         (base32
-         "1hk08kwxjlg2jb59bwv9fbc446pyf6knkscfj757nl6yjf11akbl"))))
+         "1mn6975npncmfjlpjs3s2pgsrm32xgvnyl2vh1922l6vra97dkrc"))))
     (properties
      `((upstream-name . "AllelicImbalance")))
     (build-system r-build-system)
@@ -5766,14 +8020,14 @@ investigation using RNA-seq data.")
 (define-public r-aucell
   (package
     (name "r-aucell")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AUCell" version))
        (sha256
         (base32
-         "0ibsf3nid27hipr03z7phh0yzwfj8bqza6n6g7wfghpls4l12ipx"))))
+         "0qdac3qalcki20r90k40cc8d0lfywzn9pffg9d719yvs7nrsfdjr"))))
     (properties `((upstream-name . "AUCell")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5805,14 +8059,14 @@ needed.")
 (define-public r-ebimage
   (package
     (name "r-ebimage")
-    (version "4.32.0")
+    (version "4.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "EBImage" version))
        (sha256
         (base32
-         "0qi8bbix5bjahs73ljhfvidlbj8hz5m5j0sb9cjxlngnnldbh4ww"))))
+         "1z3cxxg593d66nczz5hh2hdj1d87wc0lxrzc5sn6bp43n351q8h3"))))
     (properties `((upstream-name . "EBImage")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5844,14 +8098,14 @@ visualization with image data.")
 (define-public r-yamss
   (package
     (name "r-yamss")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "yamss" version))
        (sha256
         (base32
-         "0cxzn7j9apjcabbvvii16kn4whwd9khcyz867w5ag3zdxwvg7l7w"))))
+         "1al615x778h17jqiyhiyf6djaq9iygs1hlbrna6y4xc0f2kvgxld"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
@@ -5878,14 +8132,14 @@ analysis.")
 (define-public r-gtrellis
   (package
     (name "r-gtrellis")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gtrellis" version))
        (sha256
         (base32
-         "14mpavkxlp9d1kccwi4b9hi7x8md5j4s1g17ivqsj38lxqjvg5gw"))))
+         "0l5271cpzjlm4m0v6xcdg2vxlbhn53x1fd59ynb9jwll93av5h1f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-circlize" ,r-circlize)
@@ -5907,14 +8161,14 @@ genomic categories and to add self-defined graphics in the plot.")
 (define-public r-somaticsignatures
   (package
     (name "r-somaticsignatures")
-    (version "2.26.0")
+    (version "2.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "SomaticSignatures" version))
        (sha256
         (base32
-         "1pwf9ws0klcij27w22p0nh924yp5h2jsidp54ppp7mnx08iv0801"))))
+         "0jr11c9hz7m49xc8pi6xrr5fhbv68vafvqpzhr0pmm51vvr1vfs9"))))
     (properties
      `((upstream-name . "SomaticSignatures")))
     (build-system r-build-system)
@@ -5946,14 +8200,14 @@ decomposition algorithms.")
 (define-public r-yapsa
   (package
     (name "r-yapsa")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "YAPSA" version))
        (sha256
         (base32
-         "1vwccrp01p8i42axbaz1bqq173la18ldrzmrjawr5nkjjkvddbpb"))))
+         "1xfkgjlm0rxz82qcaqzx95cwirxifd9dsswjg3zcqmz03v7a0gz2"))))
     (properties `((upstream-name . "YAPSA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5995,14 +8249,14 @@ provided.")
 (define-public r-gcrma
   (package
     (name "r-gcrma")
-    (version "2.62.0")
+    (version "2.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gcrma" version))
        (sha256
         (base32
-         "1v1x13iwcv6c9x7r1iz2598rwlyzic67jbqcajg24ib6lcfn9f00"))))
+         "1z4abw9s2hs3csnx25nli7fpvb3rh3l0swzl0wfqp087fcs78pxi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-affy" ,r-affy)
@@ -6081,14 +8335,14 @@ chips with the MAQC reference datasets.")
 (define-public r-quantro
   (package
     (name "r-quantro")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "quantro" version))
        (sha256
         (base32
-         "1mq4hda73idkq0lkfrhcmiz4kkalfn47dh3i75br5fi33mdgc0k2"))))
+         "1fkma2ic448h2lrlza8ipg65gpfsz4fhlxcnjpmzhhmzp2xi2p4a"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6114,14 +8368,14 @@ groups.")
 (define-public r-yarn
   (package
     (name "r-yarn")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "yarn" version))
        (sha256
         (base32
-         "0p8wz5jn601vxbbxkm73ps3fx0j1y56nr2qf6y8k80vgrk7bv5gp"))))
+         "1x07l255x52z6cgdc2j8285shqszhr034xm5686rp6d35vah55ji"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6151,14 +8405,14 @@ large RNA-seq experiments.")
 (define-public r-roar
   (package
     (name "r-roar")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "roar" version))
        (sha256
         (base32
-         "0spidrcjnrcli0whkf6h8pa1i9dg9arjbm7b1skxbs6dn2k4yyqw"))))
+         "0vp0n90rvjm8rzwkbrxa3fasb9val56bz2srz72xwsl3jzb5yk6w"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
@@ -6219,14 +8473,14 @@ genes.")
 (define-public r-massspecwavelet
   (package
     (name "r-massspecwavelet")
-    (version "1.56.0")
+    (version "1.58.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MassSpecWavelet" version))
        (sha256
         (base32
-         "1vvxbxc538raqdsy0x9ln41vjhp2aw1nrh4k35y3s9mhb1jlzzv3"))))
+         "1cs32sig1yvqn9xs0cvhfpmkh2lbllx7aab80sz58x03wnx8v60z"))))
     (properties
      `((upstream-name . "MassSpecWavelet")))
     (build-system r-build-system)
@@ -6243,14 +8497,14 @@ based on @dfn{Continuous Wavelet Transform} (CWT).")
 (define-public r-xcms
   (package
     (name "r-xcms")
-    (version "3.12.0")
+    (version "3.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "xcms" version))
        (sha256
         (base32
-         "17kyybj093mj0g2sbfmjp19mmkww4w025n6zc0hbznqb94vkc8fv"))))
+         "1fs72lkgz1jik1smi6bb4f8jh6rrlpxdh3a5hydrnnndfxkz5kwx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6283,14 +8537,14 @@ data for high-throughput, untargeted analyte profiling.")
 (define-public r-wrench
   (package
     (name "r-wrench")
-    (version "1.8.0")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Wrench" version))
        (sha256
         (base32
-         "01z7rd9fn6cpab3dxgwfpfjlq6vsqb8jhbzvhcqn9v2vqc2pridx"))))
+         "0yssmqayaryrc0asjjqxdipqdfg309llrzldx38jrfgdsza6bvs0"))))
     (properties `((upstream-name . "Wrench")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6309,14 +8563,14 @@ that arising from 16s metagenomic surveys.")
 (define-public r-wiggleplotr
   (package
     (name "r-wiggleplotr")
-    (version "1.14.0")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "wiggleplotr" version))
        (sha256
         (base32
-         "1k4wlh5ayb1w4dr6dydqfgm3415qhsfmshmi6zjyyhhkd2626vad"))))
+         "13f3g6fcc29k0g21mhnypm3nc6qqjw867vamvfkdzynspsfb32ga"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -6343,14 +8597,14 @@ visualization of exonic read coverage.")
 (define-public r-widgettools
   (package
     (name "r-widgettools")
-    (version "1.68.0")
+    (version "1.70.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "widgetTools" version))
        (sha256
         (base32
-         "172f0pmsspd9lss557cmxzjfsbansimjyhwdiahg8pqrayhwvf2w"))))
+         "186xgpgyfyi4angxhz6558lfpzvvszzlpyfr8xnbccs3gshk3db2"))))
     (properties `((upstream-name . "widgetTools")))
     (build-system r-build-system)
     (home-page "https://bioconductor.org/packages/widgetTools/")
@@ -6364,14 +8618,14 @@ widgets in R.")
 (define-public r-webbioc
   (package
     (name "r-webbioc")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "webbioc" version))
        (sha256
         (base32
-         "1nnmr4ddi07x7sy89fgdn7iwz5k4l8n5ca3xjnlbpwxycza793vj"))))
+         "1mpdw477j78s2nvlf2lzm6mdjcpamyyazjn060h9q3apawn6zajx"))))
     (build-system r-build-system)
     (inputs
      `(("netpbm" ,netpbm)
@@ -6394,17 +8648,50 @@ deployed as a centralized bioinformatics resource for use by many users.
 Currently only Affymetrix oligonucleotide analysis is supported.")
     (license license:gpl2+)))
 
+(define-public r-zinbwave
+  (package
+    (name "r-zinbwave")
+    (version "1.14.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "zinbwave" version))
+       (sha256
+        (base32
+         "0xgjbk35wl1vjqyq4y5c7hna8hkgmf56xjaxcph9bs2q7mbdnqwf"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocparallel" ,r-biocparallel)
+       ("r-edger" ,r-edger)
+       ("r-genefilter" ,r-genefilter)
+       ("r-matrix" ,r-matrix)
+       ("r-singlecellexperiment" ,r-singlecellexperiment)
+       ("r-softimpute" ,r-softimpute)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://bioconductor.org/packages/zinbwave")
+    (synopsis "Zero-inflated negative binomial model for RNA-seq data")
+    (description "This package implements a general and flexible zero-inflated
+negative binomial model that can be used to provide a low-dimensional
+representations of single-cell RNA-seq data.  The model accounts for zero
+inflation (dropouts), over-dispersion, and the count nature of the data.
+The model also accounts for the difference in library sizes and optionally
+for batch effects and/or other covariates, avoiding the need for pre-normalize
+the data.")
+    (license license:artistic2.0)))
+
 (define-public r-zfpkm
   (package
     (name "r-zfpkm")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "zFPKM" version))
        (sha256
         (base32
-         "1sa7m7mzzr92c9ickial5701414rab233lq1il1sm9yfdkf8s9fm"))))
+         "1k7xaxr2gn26y8bps5l32g2axfhdn07nbk4q3qcx32d5jm75qkx2"))))
     (properties `((upstream-name . "zFPKM")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6426,14 +8713,14 @@ This algorithm is based on the publication by Hart et al., 2013 (Pubmed ID
 (define-public r-rbowtie2
   (package
     (name "r-rbowtie2")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rbowtie2" version))
        (sha256
         (base32
-         "1pcdcqn82ray73bajjnx5zgs98m56acviq3adbzga0cfqf6wiqx5"))))
+         "0r5yqjal48xlcv5cidi7p3zwygvsllmv2zzkwkc9kfq083l2i4ih"))))
     (properties `((upstream-name . "Rbowtie2")))
     (build-system r-build-system)
     (inputs
@@ -6451,14 +8738,14 @@ rapid adapter trimming, identification, and read merging.")
 (define-public r-progeny
   (package
     (name "r-progeny")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "progeny" version))
        (sha256
         (base32
-         "00lhzz4plmx5128khs298n6zv9204mhqv548lxxdhaw18b16vwm7"))))
+         "10vpjvl4wps857xiy8rpzr82jzdfbc5rgwh3ir3my26lfws4hfz8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6481,14 +8768,14 @@ expression\".")
 (define-public r-arrmnormalization
   (package
     (name "r-arrmnormalization")
-    (version "1.30.0")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ARRmNormalization" version))
        (sha256
         (base32
-         "1ximvi0jbwmymx6iy70qfyr9j26x5arlarra9fzs5hq05jif6q95"))))
+         "0ni3vblcadhwxaq1pf1n9jn66cp3bqch68ww4c8zh19zagil2y7r"))))
     (properties
      `((upstream-name . "ARRmNormalization")))
     (build-system r-build-system)
@@ -6504,14 +8791,14 @@ Infinium HumanMethylation 450k assay.")
 (define-public r-biocfilecache
   (package
     (name "r-biocfilecache")
-    (version "1.14.0")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocFileCache" version))
        (sha256
         (base32
-         "0r032a033636bxap0vvb02jvjqiynzj9npqd8603qnwmhvvfi5z1"))))
+         "0ymg4hmabk233qgassld62achjylm12rnidxbakfkx4dvvlbhxxv"))))
     (properties `((upstream-name . "BiocFileCache")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6519,6 +8806,7 @@ Infinium HumanMethylation 450k assay.")
        ("r-dbi" ,r-dbi)
        ("r-dbplyr" ,r-dbplyr)
        ("r-dplyr" ,r-dplyr)
+       ("r-filelock" ,r-filelock)
        ("r-httr" ,r-httr)
        ("r-rappdirs" ,r-rappdirs)
        ("r-rsqlite" ,r-rsqlite)))
@@ -6536,14 +8824,14 @@ and data files used across sessions.")
 (define-public r-iclusterplus
   (package
     (name "r-iclusterplus")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "iClusterPlus" version))
        (sha256
         (base32
-         "02ji84dsbn4wir8sim4qy8h57524mnrsq51wxc7n8ybp5x7n9k9q"))))
+         "1haj25c4cmmjjvh181b41a9pvkh92f7k2w4ljn17iqg31vm45za1"))))
     (properties `((upstream-name . "iClusterPlus")))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
@@ -6566,14 +8854,14 @@ Gaussian distributions.")
 (define-public r-rbowtie
   (package
     (name "r-rbowtie")
-    (version "1.30.0")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rbowtie" version))
        (sha256
         (base32
-         "0rgxqc3sbq7phnrn9a6z361725h4zi2mi985i43n7fi3csif7507"))))
+         "0mfikbrs28q7r3lnsq0jma5x6nkrnm3q46242jh35w9c969jk5yy"))))
     (properties `((upstream-name . "Rbowtie")))
     (build-system r-build-system)
     (inputs
@@ -6591,14 +8879,14 @@ alignment tool.")
 (define-public r-sgseq
   (package
     (name "r-sgseq")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "SGSeq" version))
        (sha256
         (base32
-         "1nfhy5kgyz56b6pyxcq8kflqwnhl9nlffszwpqb5fdh5ibz8xbjx"))))
+         "0i1yaw8h8gibakvaf1xd6nnjx2bsb2s9c0q74rbq9lm7haihivp6"))))
     (properties `((upstream-name . "SGSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6634,14 +8922,14 @@ interpretation.")
 (define-public r-rhisat2
   (package
     (name "r-rhisat2")
-    (version "1.6.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhisat2" version))
        (sha256
         (base32
-         "0f9x2qcazml0zjcgyy0kdphnww4d1m62rn0ijcqlhy1bng6ihwwb"))))
+         "1hqahh5h22mj2crqp6r9xnm111xmfgk39c100rcaziqrpdy5npk8"))))
     (properties `((upstream-name . "Rhisat2")))
     (build-system r-build-system)
     (arguments
@@ -6674,14 +8962,14 @@ index.")
 (define-public r-quasr
   (package
     (name "r-quasr")
-    (version "1.30.0")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "QuasR" version))
        (sha256
         (base32
-         "032m01q34nnmvbhcb2g3pz2fqmgcw5464m74m1m0h7x9bl04a5k8"))))
+         "1635ff11ahzjrh3cdcxrq5bgd100n444k7mc0maz0jx21vj8qqb1"))))
     (properties `((upstream-name . "QuasR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6693,13 +8981,11 @@ index.")
        ("r-biostrings" ,r-biostrings)
        ("r-bsgenome" ,r-bsgenome)
        ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
        ("r-genomicfeatures" ,r-genomicfeatures)
        ("r-genomicfiles" ,r-genomicfiles)
        ("r-genomicranges" ,r-genomicranges)
        ("r-iranges" ,r-iranges)
        ("r-rbowtie" ,r-rbowtie)
-       ("r-rhisat2" ,r-rhisat2)
        ("r-rhtslib" ,r-rhtslib)
        ("r-rsamtools" ,r-rsamtools)
        ("r-rtracklayer" ,r-rtracklayer)
@@ -6719,14 +9005,14 @@ quantification of genomic regions of interest.")
 (define-public r-rqc
   (package
     (name "r-rqc")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rqc" version))
        (sha256
         (base32
-         "083c3ql0gndb6y7m9d3rpbkimyw8cj8jyv77mwwjhq49lzwsg6n9"))))
+         "02hwj2vd003x0zf273ndnwh7kxy6wc3sz14d3kryp2w2aqjj826f"))))
     (properties `((upstream-name . "Rqc")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6762,14 +9048,14 @@ graphics.")
 (define-public r-birewire
   (package
     (name "r-birewire")
-    (version "3.22.0")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiRewire" version))
        (sha256
         (base32
-         "1h9zjjd5krsjpbxlmsbzwx7kbishn0z6mpm8zmrcpmbfrprp38qw"))))
+         "0p6mr67mkw54490sv4dvkyh8l0xkpjfbqy532vi8l41i40qg3gry"))))
     (properties `((upstream-name . "BiRewire")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6820,14 +9106,14 @@ Markov-Chain-Monte-Carlo is applied to sample the activity states.")
 (define-public r-multidataset
   (package
     (name "r-multidataset")
-    (version "1.18.2")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MultiDataSet" version))
        (sha256
         (base32
-         "1wzhxgprriicw6lx1h91z4r9d5yaxar859scp83bm8pr9aznqk2z"))))
+         "1hyk40xgmy50rqxwdvc64d3pgz5vsg8vmlj5cp5m0n5m0adxcdfj"))))
     (properties `((upstream-name . "MultiDataSet")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6857,14 +9143,14 @@ packages.")
 (define-public r-ropls
   (package
     (name "r-ropls")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ropls" version))
        (sha256
         (base32
-         "1h76s89hsafrkshpkx7vjinfni9lzfpnbfyg3fhkkrwpp1fnwyj5"))))
+         "1j99kdywyljqzdcns5ysh590w4w8iiwzpddpfk5c8d4whax7vk5b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6895,14 +9181,14 @@ coefficients).")
 (define-public r-biosigner
   (package
     (name "r-biosigner")
-    (version "1.18.2")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "biosigner" version))
        (sha256
         (base32
-         "0i18j4fk91x5017yk1l35c58k5aby22yh81zkp59irphpv9akvjn"))))
+         "159fbkymn92li7dinsm56nsacjp8wnhsljv7airgs9m82p8wd5sl"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -6928,14 +9214,14 @@ datasets.")
 (define-public r-annotatr
   (package
     (name "r-annotatr")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "annotatr" version))
        (sha256
         (base32
-         "0dq67snpqxl9mifljm6zlnkdb0ghjwday0fvcn3i7zmrfszgzyf9"))))
+         "0pcf4jrq05bmfxph41hmdx1x147k1ay5fl2h488y1s4h8qm3c67p"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -6969,14 +9255,14 @@ annotations.")
 (define-public r-rsubread
   (package
     (name "r-rsubread")
-    (version "2.4.3")
+    (version "2.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rsubread" version))
        (sha256
         (base32
-         "0c4akc89p5467n5rzq9bi7h0h15rbpqpvh7fw42qcj7g2vc41wba"))))
+         "007pbvxkhh930zdkgjaihannjbpbfnbizp3ffc2vyxygw0r4vz68"))))
     (properties `((upstream-name . "Rsubread")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -6995,14 +9281,14 @@ and to both short and long sequence reads.")
 (define-public r-flowutils
   (package
     (name "r-flowutils")
-    (version "1.54.0")
+    (version "1.56.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowUtils" version))
        (sha256
         (base32
-         "1q4g666nd51j24hcp2wxla1bdi77kbfd4i0pxgp7rs2jf7200k09"))))
+         "1sdwgyvrsz0pp60zdfrcgb7bs8s87j7257p8ck813ydizc324x9w"))))
     (properties `((upstream-name . "flowUtils")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7021,14 +9307,14 @@ and to both short and long sequence reads.")
 (define-public r-consensusclusterplus
   (package
     (name "r-consensusclusterplus")
-    (version "1.54.0")
+    (version "1.56.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ConsensusClusterPlus" version))
        (sha256
         (base32
-         "06h85l1mg2kpjprylzz44nhxp64k211plhch5qhg39wp0fk34lfp"))))
+         "163nr50nyvwrsajmm0cgxp70pqk61mgw0k7ams694hcb42162j8b"))))
     (properties
      `((upstream-name . "ConsensusClusterPlus")))
     (build-system r-build-system)
@@ -7046,30 +9332,18 @@ cluster count and membership by stability evidence in unsupervised analysis.")
 (define-public r-cytolib
   (package
     (name "r-cytolib")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "cytolib" version))
        (sha256
         (base32
-         "0y8mxrg3jh9bahsf9rblgyja37m1x1ncxfnrli91xjyg0582kh7r"))))
+         "0wl7zqwv0i38dfzqfsz40n3mcbxi38ffn1rbd5pm9s7hq16zr4nv"))))
     (properties `((upstream-name . "cytolib")))
     (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars.in"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\(RHDF5_LIBS\\)" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
     (native-inputs
-     `(("r-knitr" ,r-knitr)
-       ("pkg-config" ,pkg-config)))
+     `(("r-knitr" ,r-knitr)))
     (propagated-inputs
      `(("r-bh" ,r-bh)
        ("r-rcpp" ,r-rcpp)
@@ -7087,14 +9361,14 @@ interact with gated cytometry data.")
 (define-public r-flowcore
   (package
     (name "r-flowcore")
-    (version "2.2.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowCore" version))
        (sha256
         (base32
-         "001ickrl2asdl0zwpdjqkl1w7137nzxbryamxihgya394jw73xr8"))))
+         "13xpbkxi53rxmhvpdiy6bydmhicmxd2gi96d9c1qx4lkss2f14nc"))))
     (properties `((upstream-name . "flowCore")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7119,14 +9393,14 @@ with flow cytometry data.")
 (define-public r-flowmeans
   (package
     (name "r-flowmeans")
-    (version "1.50.0")
+    (version "1.52.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowMeans" version))
        (sha256
         (base32
-         "02y5b3iqjlqjlxrqq0l24dr68sjaniz26jqf14cnnwz1xg5hz734"))))
+         "1awskkq48qhv4v9glxgfqi0kgwqd62fbj641k4vvxfcwsf2c7bfg"))))
     (properties `((upstream-name . "flowMeans")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7145,27 +9419,16 @@ change point detection.")
 (define-public r-ncdfflow
   (package
     (name "r-ncdfflow")
-    (version "2.36.0")
+    (version "2.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ncdfFlow" version))
        (sha256
         (base32
-         "1knqc3ic2vpck7n7m7adxjz3ac70ra89d5gvlgp9r2q3kgaciwac"))))
+         "1lm88qnfv6rnnr7wmgbvwyj272imjjjn7h3agxqqzsbmn8vyrnf0"))))
     (properties `((upstream-name . "ncdfFlow")))
     (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\(RHDF5_LIBS\\)" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
     (propagated-inputs
      `(("r-bh" ,r-bh)
        ("r-biobase" ,r-biobase)
@@ -7187,14 +9450,14 @@ manipulation of flow cytometry data.")
 (define-public r-ggcyto
   (package
     (name "r-ggcyto")
-    (version "1.18.0")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ggcyto" version))
        (sha256
         (base32
-         "0myjvhm9jjb9cih5nlka3f9zg5ncy8gy3krpdpa0618jdglvgr1m"))))
+         "0jd6m84m4znnpix4bcgdby7mnflsn206f5x2vw9n8rxnwzx77wpg"))))
     (properties `((upstream-name . "ggcyto")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7224,14 +9487,14 @@ statistics to the plot.")
 (define-public r-flowviz
   (package
     (name "r-flowviz")
-    (version "1.54.0")
+    (version "1.56.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowViz" version))
        (sha256
         (base32
-         "1s6jrn2a7hv984xvm6gyn8k3hnma8qidrw9kgj9z5128hv330z7k"))))
+         "17x04xwyw2pp5zkhgvrmxkb8cbrv9wql6xhjsfpq0n6yd9dxqc1v"))))
     (properties `((upstream-name . "flowViz")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7255,14 +9518,14 @@ statistics to the plot.")
 (define-public r-flowclust
   (package
     (name "r-flowclust")
-    (version "3.28.0")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowClust" version))
        (sha256
         (base32
-         "1ml3y5wq68jbyr7l5j4zs79bj5bbwzmn5gx41yi88hq78iwkscrq"))))
+         "03xsmprrkxwkaksjlaxwp54mqfb3zlg6dbqhp87w78fwscisv76b"))))
     (properties `((upstream-name . "flowClust")))
     (build-system r-build-system)
     (arguments
@@ -7295,14 +9558,14 @@ model with Box-Cox transformation.")
 (define-public r-rprotobuflib
   (package
     (name "r-rprotobuflib")
-    (version "2.2.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RProtoBufLib" version))
        (sha256
         (base32
-         "09n4ny3ymfkja2br4rrr2n9dzw3hs7qijhcq4mj0avr86i27llqz"))))
+         "1hyds97ay4mn7nl830yh9v8mlasgsljsx5wsrhz2zsmbbyx6wbnb"))))
     (properties `((upstream-name . "RProtoBufLib")))
     (build-system r-build-system)
     (arguments
@@ -7311,8 +9574,7 @@ model with Box-Cox transformation.")
          (add-after 'unpack 'unpack-bundled-sources
            (lambda _
              (with-directory-excursion "src"
-               (invoke "tar" "xf" "protobuf-3.10.0.tar.gz"))
-             #t)))))
+               (invoke "tar" "xf" "protobuf-3.13.0.tar.gz")))))))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/RProtoBufLib/")
@@ -7325,27 +9587,16 @@ for other R packages to compile and link against.")
 (define-public r-flowworkspace
   (package
     (name "r-flowworkspace")
-    (version "4.2.0")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowWorkspace" version))
        (sha256
         (base32
-         "19svh32jq1dpq3ayhpd5r8bw0iax8d9kdvpvc23gx2pf16g1j5ag"))))
+         "1a9qb2dcvwgb3z0vdbbzn1rzy77d3da72kirs272344hdx9b2cx9"))))
     (properties `((upstream-name . "flowWorkspace")))
     (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\{h5lib\\}" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
     (propagated-inputs
      `(("r-aws-s3" ,r-aws-s3)
        ("r-aws-signature" ,r-aws-signature)
@@ -7354,6 +9605,7 @@ for other R packages to compile and link against.")
        ("r-biocgenerics" ,r-biocgenerics)
        ("r-cytolib" ,r-cytolib)
        ("r-data-table" ,r-data-table)
+       ("r-delayedarray" ,r-delayedarray)
        ("r-digest" ,r-digest)
        ("r-dplyr" ,r-dplyr)
        ("r-flowcore" ,r-flowcore)
@@ -7370,6 +9622,7 @@ for other R packages to compile and link against.")
        ("r-rgraphviz" ,r-rgraphviz)
        ("r-rhdf5lib" ,r-rhdf5lib)
        ("r-rprotobuflib" ,r-rprotobuflib)
+       ("r-s4vectors" ,r-s4vectors)
        ("r-scales" ,r-scales)
        ("r-xml" ,r-xml)))
     (native-inputs
@@ -7388,14 +9641,14 @@ matches the flowJo analysis.")
 (define-public r-flowstats
   (package
     (name "r-flowstats")
-    (version "4.2.0")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "flowStats" version))
        (sha256
         (base32
-         "1i6nrwc55k4bn4qprgs6npy7wf8537m429yncqsygsv47z21ix6x"))))
+         "1yr5m7qmhmm52c70z3d0zy4zgf0hja7r2ig9yljv5w86bzm962x6"))))
     (properties `((upstream-name . "flowStats")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7424,14 +9677,14 @@ package.")
 (define-public r-opencyto
   (package
     (name "r-opencyto")
-    (version "2.2.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "openCyto" version))
        (sha256
         (base32
-         "02dymy5fa0wjd4pql3jdv1d65mak7ra4il96va7c0km8s87rn40v"))))
+         "1par1d5pk1rjg15q7i5z5wqma7xg6fycb826a823wk8wr52a885x"))))
     (properties `((upstream-name . "openCyto")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7468,27 +9721,16 @@ sequential way to mimic the manual gating strategy.")
 (define-public r-cytoml
   (package
     (name "r-cytoml")
-    (version "2.2.2")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "CytoML" version))
        (sha256
         (base32
-         "0ckjb7bkz0cy46scrv4vl9w37g54c0yihvzmbkzilip1ikpvhxd1"))))
+         "0ixy7mmnipk8wy61wz6qy7jfbc5zhs6p5iqaii8hdprjnb841ri7"))))
     (properties `((upstream-name . "CytoML")))
     (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars.in"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\{h5lib\\}" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
     (inputs
      `(("libxml2" ,libxml2)
        ("zlib" ,zlib)))
@@ -7532,25 +9774,38 @@ standard to exchange gated cytometry data with other software platforms.")
 (define-public r-flowsom
   (package
     (name "r-flowsom")
-    (version "1.22.0")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "FlowSOM" version))
        (sha256
         (base32
-         "0gydp6q6zqkadw356k9br646zfynz8gk9ckbx9d297x503j5sgwf"))))
+         "18h7p7g3w9imyd1c93jllgp4kd74z96cs85wcqfhmd26nx18hl82"))))
     (properties `((upstream-name . "FlowSOM")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-colorramps" ,r-colorramps)
        ("r-consensusclusterplus" ,r-consensusclusterplus)
        ("r-cytoml" ,r-cytoml)
+       ("r-dplyr" ,r-dplyr)
        ("r-flowcore" ,r-flowcore)
        ("r-flowworkspace" ,r-flowworkspace)
+       ("r-ggforce" ,r-ggforce)
+       ("r-ggnewscale" ,r-ggnewscale)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggpointdensity" ,r-ggpointdensity)
+       ("r-ggpubr" ,r-ggpubr)
+       ("r-ggrepel" ,r-ggrepel)
        ("r-igraph" ,r-igraph)
+       ("r-magrittr" ,r-magrittr)
+       ("r-pheatmap" ,r-pheatmap)
        ("r-rcolorbrewer" ,r-rcolorbrewer)
-       ("r-tsne" ,r-tsne)
+       ("r-rlang" ,r-rlang)
+       ("r-rtsne" ,r-rtsne)
+       ("r-scattermore" ,r-scattermore)
+       ("r-tidyr" ,r-tidyr)
        ("r-xml" ,r-xml)))
     (home-page "https://bioconductor.org/packages/FlowSOM/")
     (synopsis "Visualize and interpret cytometry data")
@@ -7562,14 +9817,14 @@ self-organizing map clustering and minimal spanning trees.")
 (define-public r-mixomics
   (package
     (name "r-mixomics")
-    (version "6.14.1")
+    (version "6.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "mixOmics" version))
        (sha256
         (base32
-         "07d1z33bc3bym1jwp1qqfhs18w4v9axk0ycnmldmj6piswvp44wk"))))
+         "1hri5rrqf8vq3c6pivfamv60yz9mf9rrdpdd5bw2h24lghm2x8rw"))))
     (properties `((upstream-name . "mixOmics")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7608,14 +9863,14 @@ delete entire rows with missing data.")
 (define-public r-depecher
   (package                              ;Source/Weave error
     (name "r-depecher")
-    (version "1.6.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DepecheR" version))
        (sha256
         (base32
-         "0c7yv3a7k22nhhw3601n8jdl61cjmlny9b3nfrzsp78mkxi0h469"))))
+         "04vxc43p3kpsx0vksk2nwmy9p56h35z2mc8j9p2wm29zaz1y8j3p"))))
     (properties `((upstream-name . "DepecheR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7654,24 +9909,29 @@ data, to only emphasize the data that actually matters.")
 (define-public r-rcistarget
   (package
     (name "r-rcistarget")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RcisTarget" version))
        (sha256
         (base32
-         "0a711jzxl1kggpk3ln68xzc5y30my4nbs1mxx8951pyi3jvzjfyf"))))
+         "1yh0l11vnslgr6zsbpgc8mc4aa32zy34f5yrz98hkcdl53iw5y7f"))))
     (properties `((upstream-name . "RcisTarget")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-aucell" ,r-aucell)
+     `(("r-arrow" ,r-arrow)
+       ("r-aucell" ,r-aucell)
        ("r-biocgenerics" ,r-biocgenerics)
        ("r-data-table" ,r-data-table)
+       ("r-dplyr" ,r-dplyr)
        ("r-feather" ,r-feather)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
        ("r-gseabase" ,r-gseabase)
        ("r-r-utils" ,r-r-utils)
-       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-tibble" ,r-tibble)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://aertslab.org/#scenic")
@@ -7691,14 +9951,14 @@ genes in the gene-set that are ranked above the leading edge).")
 (define-public r-cicero
   (package
     (name "r-cicero")
-    (version "1.8.1")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "cicero" version))
        (sha256
         (base32
-         "12y857p4p0m7k72bimli8wjn9cd0gxjwcs3n7ri9pn9l9d42krqr"))))
+         "0kw16zf9004d1zlwsswhbcb7p77nabpd1fjagznff3zyan9fpdxf"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -7758,14 +10018,14 @@ accessibility data.")
 (define-public r-circrnaprofiler
   (package
     (name "r-circrnaprofiler")
-    (version "1.4.2")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "circRNAprofiler" version))
        (sha256
         (base32
-         "0r1hfm3pc7c71irzmxmdwc27ns9hkymz4vhb4pqbli4xn37q7cg8"))))
+         "1hif40vfg2lkbyf6abbkxbdm3b1biw6gxnh6ca2sydvi3y5l2ys2"))))
     (properties
      `((upstream-name . "circRNAprofiler")))
     (build-system r-build-system)
@@ -7855,17 +10115,19 @@ cisTopics and explore the nature and regulatory proteins driving them.")
 (define-public r-genie3
   (package
     (name "r-genie3")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GENIE3" version))
        (sha256
         (base32
-         "1z7qkv0cgdx2plhc7xdz6s7vwdjhzcdadi35wg3fl6xpids5njf5"))))
+         "1v54dzcz654wfm3npbp8gb55v49im0fm547cz3hvsidq4zhi3l1b"))))
     (properties `((upstream-name . "GENIE3")))
     (build-system r-build-system)
-    (propagated-inputs `(("r-reshape2" ,r-reshape2)))
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-reshape2" ,r-reshape2)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/GENIE3")
@@ -7878,14 +10140,14 @@ regulatory networks from expression data.")
 (define-public r-roc
   (package
     (name "r-roc")
-    (version "1.66.0")
+    (version "1.68.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ROC" version))
        (sha256
         (base32
-         "02b9n42z3kjrfxpdf3glqvimd79nhnycq00mb09fzhkpp5zl43c9"))))
+         "0ff5rcpyybgjzsfbhaslim0m02n3bksv1r9v7bq0gg0iyzll0rjc"))))
     (properties `((upstream-name . "ROC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7926,14 +10188,14 @@ data.")
 (define-public r-watermelon
   (package
     (name "r-watermelon")
-    (version "1.34.0")
+    (version "1.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "wateRmelon" version))
        (sha256
         (base32
-         "1sc2nxg9bafpvlwqhky2p5b6fkimkk9v3xcab9kvwnj6szrb6p3f"))))
+         "1qar8z0nf33bqr488swig0bfq8lnvcdjcxvw3q3b0hkkvybn27zw"))))
     (properties `((upstream-name . "wateRmelon")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7963,14 +10225,14 @@ metrics, with methods for objects produced by the @code{methylumi} and
 (define-public r-gdsfmt
   (package
     (name "r-gdsfmt")
-    (version "1.26.1")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gdsfmt" version))
        (sha256
         (base32
-         "0f5vn8h5fzzazcv92sgrf85hc4xkkizk2wwml9mzjd8ya2fkwg8n"))
+         "119qdivd7vaaqkjb0nrwidi6g26hh8znhif3g4prqn7x5pl2clvy"))
        (modules '((guix build utils)))
        ;; Remove bundled sources of zlib, lz4, and xz.  Don't attempt to build
        ;; them and link with system libraries instead.
@@ -8022,14 +10284,14 @@ with multiple R processes supported by the package @code{parallel}.")
 (define-public r-bigmelon
   (package
     (name "r-bigmelon")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bigmelon" version))
        (sha256
         (base32
-         "0hj5njwx7n681vigkq4560f9dm7mdjgvcwbgp5nbdn1fb2z24bk7"))))
+         "061f0hc4m4nvdr6298pg3inpx1z2bpsm9nlxqs3v7n58q15xyzri"))))
     (properties `((upstream-name . "bigmelon")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8050,14 +10312,14 @@ with multiple R processes supported by the package @code{parallel}.")
 (define-public r-seqbias
   (package
     (name "r-seqbias")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "seqbias" version))
        (sha256
         (base32
-         "1m634sidmk6c603k2gflyiddkns9vr6ij591nmab523xk5r2f4b2"))))
+         "06w43plv4x1pafybq633n7adqp9yj3bvaaamq7vylmkfbcx3nl8k"))))
     (properties `((upstream-name . "seqbias")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8114,14 +10376,14 @@ injected in that sequence).")
 (define-public r-reqon
   (package
     (name "r-reqon")
-    (version "1.36.0")
+    (version "1.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ReQON" version))
        (sha256
         (base32
-         "1yz0r0rrk4n6dnqbdq41lvs5z8l6vkx729m0a7f29svw4dbc6mdq"))))
+         "1z13avbxwvvhh03arjfnaipznynifsi8k2hzw4kappz24f7lwmza"))))
     (properties `((upstream-name . "ReQON")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8139,14 +10401,14 @@ format.")
 (define-public r-wavcluster
   (package
     (name "r-wavcluster")
-    (version "2.24.0")
+    (version "2.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "wavClusteR" version))
        (sha256
         (base32
-         "18cg0jbr3rjyx31wwyag1n5gams55pbd2rvb99i3g80q9hvswawi"))))
+         "1sydzrqydfv1ik2h08xkxlx6xrv866bf0if6v5wch9l3krh0sych"))))
     (properties `((upstream-name . "wavClusteR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8186,14 +10448,14 @@ procedures that induce nucleotide substitutions (e.g. BisSeq).")
 (define-public r-timeseriesexperiment
   (package
     (name "r-timeseriesexperiment")
-    (version "1.8.0")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "TimeSeriesExperiment" version))
        (sha256
         (base32
-         "1jx0rk660mfzk7rfhamnp0disx3bv456cqi9hyaz2wcbcdrlvcjn"))))
+         "10xgihjssnc6i03819p9gnzwfc7znanic514ar3yxzl3fhxy3yyy"))))
     (properties
      `((upstream-name . "TimeSeriesExperiment")))
     (build-system r-build-system)
@@ -8227,14 +10489,14 @@ provides methods for retrieving enriched pathways.")
 (define-public r-variantfiltering
   (package
     (name "r-variantfiltering")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "VariantFiltering" version))
        (sha256
         (base32
-         "0zy53knvyk8wy3hmnsxc0w9qkhvx6xhviskvx7rwmrsi7pz531l5"))))
+         "0abhrk53csd9jz9sv4q1qr74jax9mbj2icbz1iilf1123nvnjypd"))))
     (properties
      `((upstream-name . "VariantFiltering")))
     (build-system r-build-system)
@@ -8333,14 +10595,14 @@ arrays based on fast wavelet-based functional models.")
 (define-public r-variancepartition
   (package
     (name "r-variancepartition")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "variancePartition" version))
        (sha256
         (base32
-         "0fisaqd5v8xy9rz9l1zs62k1n2h4k1irzgwj46ci947l52x1qhah"))))
+         "1pqy2g9pg8pswmkrs2fzlkwwliw2r7f33h05bci5bz41b8ribpzj"))))
     (properties
      `((upstream-name . "variancePartition")))
     (build-system r-build-system)
@@ -8377,14 +10639,14 @@ measures.")
 (define-public r-htqpcr
   (package
     (name "r-htqpcr")
-    (version "1.44.0")
+    (version "1.46.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "HTqPCR" version))
        (sha256
         (base32
-         "1fzjx6psr41naq9ycpnv3lxlgkiyrpn7r2wl1i4gz45f3lax0yji"))))
+         "1y3ik5a9w66jby6682jfm8mn2883s8yfv4xw8a8v1f6q2d1j938l"))))
     (properties `((upstream-name . "HTqPCR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8411,14 +10673,14 @@ features (e.g.  genes, microRNAs).")
 (define-public r-unifiedwmwqpcr
   (package
     (name "r-unifiedwmwqpcr")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "unifiedWMWqPCR" version))
        (sha256
         (base32
-         "1ad5a7gy43l8x1rf5lgqiy2bv6fgah7cbnp4lrqwshphlnr30ndv"))))
+         "1clcz610sl3s0mjf84j21xgrmjhkxcc4h292ljwq5yzbkk68g896"))))
     (properties
      `((upstream-name . "unifiedWMWqPCR")))
     (build-system r-build-system)
@@ -8436,14 +10698,14 @@ data.")
 (define-public r-universalmotif
   (package
     (name "r-universalmotif")
-    (version "1.8.5")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "universalmotif" version))
        (sha256
         (base32
-         "07862bs771xldmdnq0zr8926dr299ach8nrgci14p5bbrc88l3ly"))))
+         "1hwp7802r4pr7yafzir9afqaim9l0vznglm35b0gxaca8k7a3jvy"))))
     (properties
      `((upstream-name . "universalmotif")))
     (build-system r-build-system)
@@ -8458,12 +10720,10 @@ data.")
      `(("r-biocgenerics" ,r-biocgenerics)
        ("r-biostrings" ,r-biostrings)
        ("r-ggplot2" ,r-ggplot2)
-       ("r-ggseqlogo" ,r-ggseqlogo)
        ("r-iranges" ,r-iranges)
        ("r-mass" ,r-mass)
        ("r-rcpp" ,r-rcpp)
        ("r-rcppthread" ,r-rcppthread)
-       ("r-rdpack" ,r-rdpack)
        ("r-rlang" ,r-rlang)
        ("r-s4vectors" ,r-s4vectors)
        ("r-yaml" ,r-yaml)))
@@ -8552,14 +10812,14 @@ cellular organization in health and disease.")
 (define-public r-bgmix
   (package
     (name "r-bgmix")
-    (version "1.50.0")
+    (version "1.52.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BGmix" version))
        (sha256
         (base32
-         "0r9gjqajarg5mivxhqdzn8m8hmfarmzbplp3zqyyznccri03pv50"))))
+         "1gp40ddspblpszzm4k4r7ysgx883iwdfqc5ds23p2q1ml9idwgvv"))))
     (properties `((upstream-name . "BGmix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8574,14 +10834,14 @@ gene expression.")
 (define-public r-bgx
   (package
     (name "r-bgx")
-    (version "1.56.0")
+    (version "1.58.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bgx" version))
        (sha256
         (base32
-         "0gm4wv9drqvg9r4f0id1ivrfgv0nvh0hb6hp63b3jd14092777im"))))
+         "18n6j2ihv85rhai5sf5k3mwf9nkc2nl2sinx3rrs6sbl529g4mw4"))))
     (properties `((upstream-name . "bgx")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8599,14 +10859,14 @@ Affymetrix GeneChips.")
 (define-public r-bhc
   (package
     (name "r-bhc")
-    (version "1.42.0")
+    (version "1.44.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BHC" version))
        (sha256
         (base32
-         "1n2rkbj8j10f38d40wvi6mwjxnrlfx71a48ab07bp2s0hwhxd7yn"))))
+         "0aaawm7h3ppyyhd7hi14rpynagnxx4730f5vxizj5bpzwbclp6h9"))))
     (properties `((upstream-name . "BHC")))
     (build-system r-build-system)
     (home-page "https://bioconductor.org/packages/BHC/")
@@ -8625,14 +10885,14 @@ algorithm which is more efficient for larger data sets.")
 (define-public r-bicare
   (package
     (name "r-bicare")
-    (version "1.48.0")
+    (version "1.50.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BicARE" version))
        (sha256
         (base32
-         "1np3967rjx54hbjsynvya75lcsqa6zic6frw5fjwqybwv2pzzw2k"))))
+         "0j3gs4xcdgaca2c62jf2h86skbbxm1c9g2khs5bsa8fmkskr6vl9"))))
     (properties `((upstream-name . "BicARE")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8649,14 +10909,14 @@ results.")
 (define-public r-bifet
   (package
     (name "r-bifet")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiFET" version))
        (sha256
         (base32
-         "191m1xhsj4l64rrh67hqiz1rdkfhw0gfd5aymf3x0xm710l3rh4a"))))
+         "1fwy7ws0bn67557s0kcw8pbln2jg834n6kfbs8297ps07nxr0lpj"))))
     (properties `((upstream-name . "BiFET")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8679,19 +10939,18 @@ the read count and GC content bias.")
 (define-public r-rsbml
   (package
     (name "r-rsbml")
-    (version "2.48.0")
+    (version "2.50.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "rsbml" version))
        (sha256
         (base32
-         "0vrjfhwcpc699sq78pkm022fam3ahar8h3lx3fr879dd21k02g61"))))
+         "017xwra6ms7kx6sg3ksw1vr9zn23imc2qjgpmjikx7mgbak125xh"))))
     (properties `((upstream-name . "rsbml")))
     (build-system r-build-system)
     (inputs
-     `(("libsbml" ,libsbml)
-       ("zlib" ,zlib)))
+     `(("libsbml" ,libsbml)))
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
        ("r-graph" ,r-graph)))
@@ -8707,14 +10966,14 @@ validating output, provides an S4 SBML DOM, converts SBML to R graph objects.")
 (define-public r-hypergraph
   (package
     (name "r-hypergraph")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "hypergraph" version))
        (sha256
         (base32
-         "1p5mzr2aiqqc1j2inh45abjvqhid9jqv6wiym1xxnz16mpaa7q97"))))
+         "01knpd964m2g9vwd7c72qnc8g2p2pzhvk7lin4mhvcmb3pvsdlh7"))))
     (properties `((upstream-name . "hypergraph")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8729,14 +10988,14 @@ manipulating hypergraphs.")
 (define-public r-hyperdraw
   (package
     (name "r-hyperdraw")
-    (version "1.42.0")
+    (version "1.44.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "hyperdraw" version))
        (sha256
         (base32
-         "0z3a3lpz7s0fw023fxldkgxvl2dl1wn8agnyj09sky11ainxdayz"))))
+         "1qkxixkgvvfha0ii8rwwcbrbjmbbxsy8afv5ymcq01k3hbykx44r"))))
     (properties `((upstream-name . "hyperdraw")))
     (build-system r-build-system)
     (inputs `(("graphviz" ,graphviz)))
@@ -8753,14 +11012,14 @@ manipulating hypergraphs.")
 (define-public r-biggr
   (package
     (name "r-biggr")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiGGR" version))
        (sha256
         (base32
-         "1hlsnss6071ck4ky1akxp1dnv3vmd8f85drdziqmm4nc2dfrr14y"))))
+         "1y9659pxm65w51zvrz36girb3qvfc64zijjkxmg6xn4pbc8vv1wf"))))
     (properties `((upstream-name . "BiGGR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8817,14 +11076,14 @@ a file-backed matrix with factor properties.")
 (define-public r-bigpint
   (package
     (name "r-bigpint")
-    (version "1.6.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bigPint" version))
        (sha256
         (base32
-         "1axgapy4iyx059777m9faczwwj03h3i5dyrs0rlc84axzhzd2kis"))))
+         "0yrg9x1a92zmz7j5hk77cph1jg82mkpr7k7qi9fdr6z5nqq6fgz6"))))
     (properties `((upstream-name . "bigPint")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8860,14 +11119,14 @@ visualizing RNA-sequencing datasets and differentially expressed genes.")
 (define-public r-chemminer
   (package
     (name "r-chemminer")
-    (version "3.42.2")
+    (version "3.44.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ChemmineR" version))
        (sha256
         (base32
-         "10d8h6w24h4s7l02zzv6q46w3yiqsjizip7mf11cvkmd6p7qxfl9"))))
+         "1z59npqk7hnqzhjdnry6lfqlyxfzwqprp7bmbdzs4rp22pzcv1v8"))))
     (properties `((upstream-name . "ChemmineR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8901,14 +11160,14 @@ structures.")
 (define-public r-bioassayr
   (package
     (name "r-bioassayr")
-    (version "1.28.3")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bioassayR" version))
        (sha256
         (base32
-         "03pdb76j7c28b1h1flb40ahq7i9iha22kblq6mkl3x4xmrdgaw5y"))))
+         "1mlv80w8a7l8cii3dfqvanvh0qdqvcg8c1iiq4xlyvkjxfs64ka1"))))
     (properties `((upstream-name . "bioassayR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8936,14 +11195,14 @@ available bioactivity data.")
 (define-public r-biobroom
   (package
     (name "r-biobroom")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "biobroom" version))
        (sha256
         (base32
-         "07wzamwl07p20s932aym2jkf6c1zz7d9h7kyby5ka4pw4abynlrv"))))
+         "1ybyhmrcvj6k1laxw9bc8jbn533frkzh9k8kl1ibd5pi368rfqzn"))))
     (properties `((upstream-name . "biobroom")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8968,14 +11227,14 @@ visualize bioinformatics analyses.")
 (define-public r-graphite
   (package
     (name "r-graphite")
-    (version "1.36.0")
+    (version "1.38.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "graphite" version))
        (sha256
         (base32
-         "1ihza8m397qfvr79fhghs2knmw862hwz2akysy39r8hndv6lc7wk"))))
+         "11bgz6951nfygxp3fm0190gf2bb5zplis1bc0am4757liw4qybhf"))))
     (properties `((upstream-name . "graphite")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8984,6 +11243,8 @@ visualize bioinformatics analyses.")
        ("r-graph" ,r-graph)
        ("r-httr" ,r-httr)
        ("r-rappdirs" ,r-rappdirs)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/graphite/")
     (synopsis "Networks from pathway databases")
     (description
@@ -8995,14 +11256,14 @@ symbols).")
 (define-public r-reactomepa
   (package
     (name "r-reactomepa")
-    (version "1.34.0")
+    (version "1.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ReactomePA" version))
        (sha256
         (base32
-         "04b2ng9jp2bsfbg3wnbg6m6a5c3szcmbypk1lx34i63228g8z98m"))))
+         "1293z89ai766c559axgr7mz5x4564gyl9xqzf6s8s0aj1xb35gqf"))))
     (properties `((upstream-name . "ReactomePA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9027,14 +11288,14 @@ enrichment analysis and several functions for visualization.")
 (define-public r-ebarrays
   (package
     (name "r-ebarrays")
-    (version "2.54.0")
+    (version "2.56.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "EBarrays" version))
        (sha256
         (base32
-         "1r2dl19my1hqkq01fqk48pk3agb98vgrplj56kb4srhz2xm0w9pd"))))
+         "1k1kl0m7wzaqpv7i20pfav2a6jf93bhri4w7qdikmvkf011n9422"))))
     (properties `((upstream-name . "EBarrays")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9073,35 +11334,16 @@ monograph.")
 (define-public r-bioccheck
   (package
     (name "r-bioccheck")
-    (version "1.26.0")
+    (version "1.28.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "BiocCheck" version))
               (sha256
                (base32
-                "1hyncn9zqj432da95k86rm5b28nbwrvzm52jbhisifkxj1j43cib"))))
+                "1h0l5w33c9jpc20pynq634qmx8jbfa802d7jslmf4haljmrxm4a1"))))
     (properties
      `((upstream-name . "BiocCheck")))
     (build-system r-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; This package can be used by calling BiocCheck(<package>) from
-         ;; within R, or by running R CMD BiocCheck <package>.  This phase
-         ;; makes sure the latter works.  For this to work, the BiocCheck
-         ;; script must be somewhere on the PATH (not the R bin directory).
-         (add-after 'install 'install-bioccheck-subcommand
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dest-dir (string-append out "/bin"))
-                    (script-dir
-                     (string-append out "/site-library/BiocCheck/script/")))
-               (mkdir-p dest-dir)
-               (symlink (string-append script-dir "/checkBadDeps.R")
-                        (string-append dest-dir "/checkBadDeps.R"))
-               (symlink (string-append script-dir "/BiocCheck")
-                        (string-append dest-dir "/BiocCheck")))
-             #t)))))
     (propagated-inputs
      `(("r-codetools" ,r-codetools)
        ("r-graph" ,r-graph)
@@ -9122,14 +11364,14 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
 (define-public r-biocgraph
   (package
     (name "r-biocgraph")
-    (version "1.52.0")
+    (version "1.54.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "biocGraph" version))
        (sha256
         (base32
-         "02y7vizc6jv8y9r8chsda4yysim0ch45i3rasqvv7m85zqsskf75"))))
+         "12bmj9kdlylp02cfwviak7y323ndccl2694rvi4cdg4vsx7v3ya3"))))
     (properties `((upstream-name . "biocGraph")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9147,13 +11389,13 @@ different graph related packages produced by Bioconductor.")
 (define-public r-biocstyle
   (package
     (name "r-biocstyle")
-    (version "2.18.1")
+    (version "2.20.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "BiocStyle" version))
               (sha256
                (base32
-                "0rsxyna4dd99x42vc82mlkxx774vb9375llpakg53max1hhwkrqp"))))
+                "062zhy33a2c70ibqghnjxcys0wbqc998aza8nnygk4zmpd4iyy1z"))))
     (properties
      `((upstream-name . "BiocStyle")))
     (build-system r-build-system)
@@ -9175,13 +11417,13 @@ functionality.")
 (define-public r-biocviews
   (package
     (name "r-biocviews")
-    (version "1.58.1")
+    (version "1.60.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biocViews" version))
               (sha256
                (base32
-                "1by2639z7n62z84dr8rj9jz12gsd1k8q42zsnxacxbwfwp6h0cl4"))))
+                "0pc5ll59vm8a9s1nrdc7p9wk11a52rrz669fsrrqd8qapa8p6wfd"))))
     (properties
      `((upstream-name . "biocViews")))
     (build-system r-build-system)
@@ -9203,14 +11445,14 @@ also known as views, in a controlled vocabulary.")
 (define-public r-experimenthub
   (package
     (name "r-experimenthub")
-    (version "1.16.1")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ExperimentHub" version))
        (sha256
         (base32
-         "1iyf052hh2dhlwzwwrj571cwr3hd9wp2j915sqg77x6jn40wjr1g"))))
+         "1mzmw3100lf33yhz27nbxncrjk5bprlackrjcwf8xdhcaidg40p4"))))
     (properties `((upstream-name . "ExperimentHub")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9237,14 +11479,14 @@ access.")
 (define-public r-grohmm
   (package
     (name "r-grohmm")
-    (version "1.24.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "groHMM" version))
        (sha256
         (base32
-         "08pap9wsaxl4jjlc1py0rc019gmi6daa0f9cr3ih1d97wybncanx"))))
+         "1h63vg1iskw79ijg5h1b9097ams8pp3kvnlawlfci6xfli07xpkj"))))
     (properties `((upstream-name . "groHMM")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9264,14 +11506,14 @@ access.")
 (define-public r-multiassayexperiment
   (package
     (name "r-multiassayexperiment")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MultiAssayExperiment" version))
        (sha256
         (base32
-         "1nx3gikl8vr54862h6wl0q30arnpynla085219lhh61ziswdffrs"))))
+         "0l0arf3q1f6zy6pdgsy3h5n523sg1hlilv7lj7snr5814idgdj51"))))
     (properties
      `((upstream-name . "MultiAssayExperiment")))
     (build-system r-build-system)
@@ -9299,14 +11541,14 @@ rownames.")
 (define-public r-bioconcotk
   (package
     (name "r-bioconcotk")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocOncoTK" version))
        (sha256
         (base32
-         "1jwp0gww2xyx8qfv5h4y0v3g66mmlyrd1v64xn91si4fsymk4108"))))
+         "0y396lx2mh9izb07lz83j35wydfj808ihc74jlgras03a3g335p2"))))
     (properties `((upstream-name . "BiocOncoTK")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9344,14 +11586,14 @@ tools for genome-scale analysis of cancer studies.")
 (define-public r-biocor
   (package
     (name "r-biocor")
-    (version "1.14.0")
+    (version "1.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BioCor" version))
        (sha256
         (base32
-         "12slrdn98h43j3y7klk3chrwa2ycwm4krhz3l3kfzbxr834mhy19"))))
+         "135rga7mwpzy8ypvriqpbmlh9l5yf61s9s1sa9615qfab14jh06b"))))
     (properties `((upstream-name . "BioCor")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9373,14 +11615,14 @@ gene selection, testing relationships, and so on.")
 (define-public r-biocpkgtools
   (package
     (name "r-biocpkgtools")
-    (version "1.8.2")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocPkgTools" version))
        (sha256
         (base32
-         "18m816mh1ic0znp38wax8xppai77lkym3w84x4x30x2mf0vriqfw"))))
+         "18a9mbzfmkipnv1cc9h3rhn9jxdp7nzywp0bz7hvmsaffv4p4skc"))))
     (properties `((upstream-name . "BiocPkgTools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9397,7 +11639,6 @@ gene selection, testing relationships, and so on.")
        ("r-igraph" ,r-igraph)
        ("r-jsonlite" ,r-jsonlite)
        ("r-magrittr" ,r-magrittr)
-       ("r-rappdirs" ,r-rappdirs)
        ("r-rbgl" ,r-rbgl)
        ("r-readr" ,r-readr)
        ("r-rex" ,r-rex)
@@ -9423,14 +11664,14 @@ analytics on packages.")
 (define-public r-biocset
   (package
     (name "r-biocset")
-    (version "1.4.0")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocSet" version))
        (sha256
         (base32
-         "16pjg09i0j5qk9s9qzm6fq5q0bgwb4wgqvp6scs06ajgrr07qjqg"))))
+         "18zr0r4b4rblfmsiilipqdfxn9fgymx75hlxzx1wk3bm71ryk078"))))
     (properties `((upstream-name . "BiocSet")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9461,14 +11702,14 @@ accessing web references for elements/sets are also available in BiocSet.")
 (define-public r-biocworkflowtools
   (package
     (name "r-biocworkflowtools")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocWorkflowTools" version))
        (sha256
         (base32
-         "0lvckdy20bhgyhqbccp0rdfi2p6vvip694r27qwpyi5092nfmqh6"))))
+         "1a32bwgnxaw0gv2gij2p4rm0a6l06jjhidvfz2v4k900pz1w79av"))))
     (properties
      `((upstream-name . "BiocWorkflowTools")))
     (build-system r-build-system)
@@ -9494,14 +11735,14 @@ Rmarkdown and LaTeX documents when authoring a Bioconductor Workflow.")
 (define-public r-biodist
   (package
     (name "r-biodist")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "bioDist" version))
        (sha256
         (base32
-         "10p4iajpyqgqb35743jm1a33lwbsmax2g4vz9fbbhn2cpiq3chap"))))
+         "1y1x9q9aa76gbhsyfn638rxp5icjvq30fv3a4205xh7g5jwlf6yw"))))
     (properties `((upstream-name . "bioDist")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9517,14 +11758,14 @@ distance measures.")
 (define-public r-pcatools
   (package
     (name "r-pcatools")
-    (version "2.2.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "PCAtools" version))
        (sha256
         (base32
-         "1fz9h99yyn49b5rcnkg2kjdfmczfwnc44fpwbia0izj6gx192phb"))))
+         "11idi9fwvyhkakbm63qxcdhkany8gbskis04z0p5a39lppq8ks31"))))
     (properties `((upstream-name . "PCAtools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9563,14 +11804,14 @@ dimensional mass cytometry data.")
 (define-public r-rgreat
   (package
     (name "r-rgreat")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "rGREAT" version))
        (sha256
         (base32
-         "0p2b8cqxibxxmsh687y7yvlvr2a5ipiz53jb4wsr8ddypynb1asj"))))
+         "0ads9c9i8b39wvjih057zlyivj8zpsqjxf6r97yflz4sbi1jmcji"))))
     (properties `((upstream-name . "rGREAT")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9591,14 +11832,14 @@ user's input and automatically retrieving results from GREAT web server.")
 (define-public r-m3c
   (package
     (name "r-m3c")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "M3C" version))
        (sha256
         (base32
-         "05ygi4fd85hh17mlww5wcww8d5z5zvkn2r46s4n6g18mcbv8snv5"))))
+         "17gj4haa4ywc6bmppm342jzppl3inqa94235yspikij6c098vrmc"))))
     (properties `((upstream-name . "M3C")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9624,14 +11865,14 @@ hypothesis @code{K=1}.")
 (define-public r-icens
   (package
     (name "r-icens")
-    (version "1.62.0")
+    (version "1.64.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Icens" version))
        (sha256
         (base32
-         "1w94mvh8pai77h4fcaiyacmzs58n4kbiq6bm4z0hk24j1ywph3dr"))))
+         "1rzgwxx4w2bqsaz0xmkhi4w9zsxgms80xf59zg1xp1camyhaihlz"))))
     (properties `((upstream-name . "Icens")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9754,14 +11995,14 @@ generated.")
 (define-public r-preprocesscore
   (package
     (name "r-preprocesscore")
-    (version "1.52.1")
+    (version "1.54.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "preprocessCore" version))
        (sha256
         (base32
-         "1hz7rlpscaczvvcalky2f5bmr70aii455549m7f6wk10aklp3nll"))))
+         "17a00blz4kvhmsk92bp5alj9kdpy7h1id7nk4vqxakhkb2jabr20"))))
     (properties
      `((upstream-name . "preprocessCore")))
     (build-system r-build-system)
@@ -9775,13 +12016,13 @@ routines.")
 (define-public r-s4vectors
   (package
     (name "r-s4vectors")
-    (version "0.28.1")
+    (version "0.30.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "S4Vectors" version))
               (sha256
                (base32
-                "0fhf4lsfxrim7glazh6ng46ykzaly5ggwpg170vcz4cc24prv0rh"))))
+                "0v5vxmg0a27ivgymmzfl595rcb1m3dz27r2wzbk1j97rlpwy1p4q"))))
     (properties
      `((upstream-name . "S4Vectors")))
     (build-system r-build-system)
@@ -9842,14 +12083,14 @@ data manipulation and visualization.")
 (define-public r-rgraphviz
   (package
     (name "r-rgraphviz")
-    (version "2.34.0")
+    (version "2.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rgraphviz" version))
        (sha256
         (base32
-         "1k0nrskak2v5xv7za226r3wypja3zxxmmc0cxz2imjhlgnkbha77"))))
+         "0d0xq1vgr4b165cn4wg7zmfjyc1d9ir4amgs196j4cgrhpmrnl8s"))))
     (properties `((upstream-name . "Rgraphviz")))
     (build-system r-build-system)
     (arguments
@@ -9880,13 +12121,13 @@ objects from the @code{graph} package.")
 (define-public r-fithic
   (package
     (name "r-fithic")
-    (version "1.16.0")
+    (version "1.18.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "FitHiC" version))
               (sha256
                (base32
-                "1sdfkqc6s7m9whkzr0mllzzfjzhj2g54ncjwxj8q0azjgszrfwd2"))))
+                "1p8a6lis5yswaj647bjw89harlarnsxmvjzz63fn1l6gxrwhh8bx"))))
     (properties `((upstream-name . "FitHiC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9906,13 +12147,13 @@ assays such as Hi-C.")
 (define-public r-hitc
   (package
     (name "r-hitc")
-    (version "1.34.0")
+    (version "1.36.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "HiTC" version))
               (sha256
                (base32
-                "1xbh36qgmzl8b6xq0hnl41li2x18yma50fq0v4dglh2ddn7as9iy"))))
+                "0s3kfqs3zlmq61hxdmxpmi9gfs9w3byckw7xzp1hrhdbsl46yvgq"))))
     (properties `((upstream-name . "HiTC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9935,27 +12176,16 @@ provided.")
 (define-public r-hdf5array
   (package
     (name "r-hdf5array")
-    (version "1.18.1")
+    (version "1.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "HDF5Array" version))
        (sha256
         (base32
-         "14v2adhwi0yac834g23kvfid740raclhmribzd28k10gsjk9cj7g"))))
+         "1718hplz5qlbwxwb87509bl7lir9kilvn1s7p2haz551pg48zvrc"))))
     (properties `((upstream-name . "HDF5Array")))
     (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\(RHDF5LIB_LIBS\\)" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
     (inputs
      `(("zlib" ,zlib)))
     (propagated-inputs
@@ -9964,6 +12194,7 @@ provided.")
        ("r-iranges" ,r-iranges)
        ("r-matrix" ,r-matrix)
        ("r-rhdf5" ,r-rhdf5)
+       ("r-rhdf5filters" ,r-rhdf5filters)
        ("r-rhdf5lib" ,r-rhdf5lib)
        ("r-s4vectors" ,r-s4vectors)))
     (home-page "https://bioconductor.org/packages/HDF5Array")
@@ -9976,22 +12207,21 @@ block processing.")
 (define-public r-rhdf5lib
   (package
     (name "r-rhdf5lib")
-    (version "1.12.1")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhdf5lib" version))
        (sha256
         (base32
-         "14fnq4gijxp2l7985pksfk52i6klvy81r3892lnna73c6hh1dj28"))
+         "1ypqmd4nz4hxlb2qsay7f5784dqdjhc3b19pckzkhb65bfycdn87"))
        (modules '((guix build utils)))
        (snippet
         '(begin
            ;; Delete bundled binaries
            (delete-file-recursively "src/wininclude/")
-           (delete-file-recursively "src/winlib-4.9.3/")
            (delete-file-recursively "src/winlib-8.3.0/")
-           (delete-file "src/hdf5small_cxx_hl_1.10.6.tar.gz")
+           (delete-file "src/hdf5small_cxx_hl_1.10.7.tar.gz")
            #t))))
     (properties `((upstream-name . "Rhdf5lib")))
     (build-system r-build-system)
@@ -10003,7 +12233,9 @@ block processing.")
              (for-each delete-file '("configure" "configure.ac"))
              ;; Do not make other packages link with the proprietary libsz.
              (substitute* "R/zzz.R"
-               ((" \"%s/libsz.a\"") ""))
+               ((" \"%s/libsz.a\"") "")
+               (("patharch, .getDynamicLinks")
+                ".getDynamicLinks"))
              (with-directory-excursion "src"
                (invoke "tar" "xvf" (assoc-ref inputs "hdf5-source"))
                (rename-file (string-append "hdf5-" ,(package-version hdf5-1.10))
@@ -10042,12 +12274,10 @@ block processing.")
                                  (assoc-ref inputs "hdf5") "/lib/libhdf5_hl_cpp.a\n"))
                  ;; szip is non-free software
                  (("cp \"\\$\\{SZIP_LIB\\}.*") "")
-                 (("PKG_LIBS =.*") "PKG_LIBS = -lz -lhdf5\n")))
-             #t)))))
-    (inputs
-     `(("zlib" ,zlib)))
+                 (("PKG_LIBS =.*") "PKG_LIBS = -lz -lhdf5\n"))))))))
     (propagated-inputs
-     `(("hdf5" ,hdf5-1.10)))
+     `(("hdf5" ,hdf5-1.10)
+       ("zlib" ,zlib)))
     (native-inputs
      `(("hdf5-source" ,(package-source hdf5-1.10))
        ("r-knitr" ,r-knitr)))
@@ -10060,19 +12290,20 @@ packages.")
 (define-public r-beachmat
   (package
     (name "r-beachmat")
-    (version "2.6.4")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "beachmat" version))
        (sha256
         (base32
-         "0vbqdkc52j2v1ghygmhy2cbgqm4l99vmv8930wkzkq1pm73pmjji"))))
+         "16p6shab4y8sy1adn4qr05ysvwmvs9idliccixafvx9icv5sla86"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
        ("r-delayedarray" ,r-delayedarray)
-       ("r-matrix" ,r-matrix)))
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/beachmat")
@@ -10088,13 +12319,13 @@ matrices.")
 (define-public r-cner
   (package
     (name "r-cner")
-    (version "1.26.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "CNEr" version))
        (sha256
-        (base32 "0qy4pm23vyy23zwsjkf0mpf2c0p54nq26w9lq7j0ld4bx9l3jc6c"))))
+        (base32 "13w0gsfm7k29dp5nb0c9sb2ix506ph6dixsjis6xxcz6acq7lg2k"))))
     (properties `((upstream-name . "CNEr")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -10136,14 +12367,14 @@ advanced visualization of sets of conserved noncoding elements.")
 (define-public r-tfbstools
   (package
     (name "r-tfbstools")
-    (version "1.28.0")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "TFBSTools" version))
        (sha256
         (base32
-         "0p42hnwhipmcvrsqk3s8qfiian1fvh6izfd9m961bsx99r2clnha"))))
+         "1avgjv2nyr28cla0z9dvh3v0hr1f561sz2as1k53a42irbjk0var"))))
     (properties `((upstream-name . "TFBSTools")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10182,14 +12413,14 @@ provides a wrapper of de novo motif discovery software.")
 (define-public r-motifmatchr
   (package
     (name "r-motifmatchr")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "motifmatchr" version))
        (sha256
         (base32
-         "0zrpn0hqdg0hm80ydkfpiqncwyb8y0xp6mlin7g955p8zcpcm67z"))))
+         "1vif3dp4lv4jz1pxsq0ig791ir8q65jmrlqmkyfxpfxfj5alqnbm"))))
     (properties `((upstream-name . "motifmatchr")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10216,13 +12447,13 @@ This package wraps C++ code from the MOODS motif calling library.")
 (define-public r-chromvar
   (package
     (name "r-chromvar")
-    (version "1.12.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "chromVAR" version))
        (sha256
-        (base32 "0dn04ijgq8fncn2bkvnd0lnabjg2s4mpb91b3kwvv3nkgjgfx819"))))
+        (base32 "1birmwvcvl2hb5ygbsb3wvbdfayqqs53j1bks46cbkq7ybigfyar"))))
     (properties `((upstream-name . "chromVAR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10263,19 +12494,21 @@ sequence (@code{DNAse-seq}) experiments.")
 (define-public r-singlecellexperiment
   (package
     (name "r-singlecellexperiment")
-    (version "1.12.0")
+    (version "1.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "SingleCellExperiment" version))
        (sha256
         (base32
-         "0wpgb2rhxxlclpmwl08iyfy204f7gpj8ijd0qdy4j41c58bl4qm2"))))
+         "1bwdhx0ss0s8f4xdgwd7x48apn849x4dyb5hbyglcz31r5vh1qgz"))))
     (properties
      `((upstream-name . "SingleCellExperiment")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-delayedarray" ,r-delayedarray)
+       ("r-genomicranges" ,r-genomicranges)
        ("r-s4vectors" ,r-s4vectors)
        ("r-summarizedexperiment" ,r-summarizedexperiment)))
     (native-inputs
@@ -10292,14 +12525,14 @@ libraries.")
 (define-public r-scuttle
   (package
     (name "r-scuttle")
-    (version "1.0.4")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "scuttle" version))
        (sha256
         (base32
-         "0vfhxyv81y525qgk0s3bxy1yypj16h1bl7sc1a1jdqx11fxxv2l8"))))
+         "1vxmgm52n5z2m1a7d4c5ajp5d35rdq7j3hln9qn7188zk9ijjsz5"))))
     (properties `((upstream-name . "scuttle")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10327,16 +12560,17 @@ of other packages.")
 (define-public r-scater
   (package
     (name "r-scater")
-    (version "1.18.6")
+    (version "1.20.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "scater" version))
               (sha256
                (base32
-                "0k1ls5gqv1zsn1w2kszhmbhwfccfjw8khk36s5zbf90rbbkw5609"))))
+                "0rppbd0mfyi41wb56i499mk3nj2ljhgnv3bv0k2p31bngvmb03j5"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
+     `(("r-beachmat" ,r-beachmat)
+       ("r-biocgenerics" ,r-biocgenerics)
        ("r-biocneighbors" ,r-biocneighbors)
        ("r-biocparallel" ,r-biocparallel)
        ("r-biocsingular" ,r-biocsingular)
@@ -10346,7 +12580,9 @@ of other packages.")
        ("r-ggplot2" ,r-ggplot2)
        ("r-gridextra" ,r-gridextra)
        ("r-matrix" ,r-matrix)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
        ("r-rlang" ,r-rlang)
+       ("r-rtsne" ,r-rtsne)
        ("r-s4vectors" ,r-s4vectors)
        ("r-scuttle" ,r-scuttle)
        ("r-singlecellexperiment" ,r-singlecellexperiment)
@@ -10364,20 +12600,19 @@ quality control.")
 (define-public r-scran
   (package
     (name "r-scran")
-    (version "1.18.7")
+    (version "1.20.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "scran" version))
        (sha256
         (base32
-         "0hsr58b7xj2cqdkyjdpzyifg5wrl1lbylq2h91zbjh5861qjv2n4"))))
+         "0ilzp6ngw9pq88gk79iic2zxfh5jaic6lnq3xfwc9a269bjylff0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-beachmat" ,r-beachmat)
        ("r-bh" ,r-bh)
        ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocneighbors" ,r-biocneighbors)
        ("r-biocparallel" ,r-biocparallel)
        ("r-biocsingular" ,r-biocsingular)
        ("r-bluster" ,r-bluster)
@@ -10388,6 +12623,7 @@ quality control.")
        ("r-igraph" ,r-igraph)
        ("r-limma" ,r-limma)
        ("r-matrix" ,r-matrix)
+       ("r-metapod" ,r-metapod)
        ("r-rcpp" ,r-rcpp)
        ("r-s4vectors" ,r-s4vectors)
        ("r-scuttle" ,r-scuttle)
@@ -10407,14 +12643,14 @@ variable and significantly correlated genes.")
 (define-public r-sparsematrixstats
   (package
     (name "r-sparsematrixstats")
-    (version "1.2.1")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "sparseMatrixStats" version))
        (sha256
         (base32
-         "01gnmy9zqd0ygm40vqkmqmiwfqmdawj4m81dysmmcdm7z80rn9ii"))))
+         "0ilspddfkqpnf2lng9jjs2ahv6vlc6sap69fzkcw314rha59kncr"))))
     (properties
      `((upstream-name . "sparseMatrixStats")))
     (build-system r-build-system)
@@ -10435,21 +12671,19 @@ data in the column sparse format.")
 (define-public r-delayedmatrixstats
   (package
     (name "r-delayedmatrixstats")
-    (version "1.12.3")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DelayedMatrixStats" version))
        (sha256
         (base32
-         "1hb8jv5dy3svf7xan6rym7amwdqm5mvl9qx5xhmj1vkb81bizn7h"))))
+         "02r68rzmc54m353fpw5ampyv26i5622bc7iihfqlpy6p3033lpqk"))))
     (properties
      `((upstream-name . "DelayedMatrixStats")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-biocparallel" ,r-biocparallel)
-       ("r-delayedarray" ,r-delayedarray)
-       ("r-hdf5array" ,r-hdf5array)
+     `(("r-delayedarray" ,r-delayedarray)
        ("r-iranges" ,r-iranges)
        ("r-matrix" ,r-matrix)
        ("r-matrixgenerics" ,r-matrixgenerics)
@@ -10473,18 +12707,19 @@ memory usage and processing time is minimized.")
 (define-public r-mscoreutils
   (package
     (name "r-mscoreutils")
-    (version "1.2.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "MsCoreUtils" version))
        (sha256
         (base32
-         "0fa3bcf2cmzf5y8wjs7pnzs26qwgqnrrl4hj4sa4fp9kv8z80630"))))
+         "13g8a726vsyjs6m1kd42vf8avdnmhykxhl6z3j2njzkp2jg17pd8"))))
     (properties `((upstream-name . "MsCoreUtils")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-mass" ,r-mass)
+     `(("r-clue" ,r-clue)
+       ("r-mass" ,r-mass)
        ("r-rcpp" ,r-rcpp)
        ("r-s4vectors" ,r-s4vectors)))
     (native-inputs
@@ -10504,21 +12739,19 @@ within the R for Mass Spectrometry packages.")
 (define-public r-biocio
   (package
     (name "r-biocio")
-    (version "1.0.1")
+    (version "1.2.0")
     (source
       (origin
         (method url-fetch)
         (uri (bioconductor-uri "BiocIO" version))
         (sha256
           (base32
-            "06gg5ra3r7q4b6mz14c2s9d453cnh1lxh517ffl9f8dr8vwv5s18"))))
+            "0skwnpxl6fkqihidpqrfzzh7b05x11j6jwkiinmhggmv0ggjb5ph"))))
     (properties `((upstream-name . "BiocIO")))
     (build-system r-build-system)
     (propagated-inputs
-      `(("r-biocgenerics" ,r-biocgenerics)
-        ("r-genomicranges" ,r-genomicranges)
-        ("r-rcurl" ,r-rcurl)
-        ("r-s4vectors" ,r-s4vectors)))
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-s4vectors" ,r-s4vectors)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/BiocIO")
@@ -10540,14 +12773,14 @@ as well as local access.  Developers can register a file extension, e.g.,
 (define-public r-msmseda
   (package
     (name "r-msmseda")
-    (version "1.28.0")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "msmsEDA" version))
        (sha256
         (base32
-         "1llmy8msxmrqik3s3439wffma1662vwvvcaz8q0a4g5ridkmdbrx"))))
+         "0555a3riyp781mlffmnf93igfq8vl8wjk51pa9qb48qkdn6y8pfc"))))
     (properties `((upstream-name . "msmsEDA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10566,14 +12799,14 @@ experiments, and visualize de influence of the involved factors.")
 (define-public r-msmstests
   (package
     (name "r-msmstests")
-    (version "1.28.0")
+    (version "1.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "msmsTests" version))
        (sha256
         (base32
-         "1zsnmzj1qvjdwz7mwg9wrsk5iskpqs0f6jccqn8mxy9dgkskmp0j"))))
+         "11vhy1l6za73dpdj85q4ksaghgd8vb2h8v9iirmsn2vpajqrvgjh"))))
     (properties `((upstream-name . "msmsTests")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10598,14 +12831,14 @@ relevant, and the minimum expression of the most abundant condition.")
 (define-public r-catalyst
   (package
     (name "r-catalyst")
-    (version "1.14.1")
+    (version "1.16.0")
     (source
       (origin
         (method url-fetch)
         (uri (bioconductor-uri "CATALYST" version))
         (sha256
           (base32
-            "04b5kcvkfiw4ina11x3qf5kwrb7056zihm7xp1919bqm8k7nl3mn"))))
+            "1lzi3wylx94k3gmfw5lsqh3cvg485ik3n5xd51jllczgavwvki16"))))
     (properties `((upstream-name . "CATALYST")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10656,14 +12889,14 @@ standards, ii) single-cell deconvolution, and iii) bead-based compensation.")
 (define-public r-erma
   (package
     (name "r-erma")
-    (version "1.6.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "erma" version))
        (sha256
         (base32
-         "1k2j1xhv0vwn45xmh8ds0gz812px5hnpgzvp37ngsdn4j5ai1l0k"))))
+         "02a9702sasgighwb0f9ii8n30ngfx1hjnppaay1f5zsigr8vqalz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -10696,14 +12929,14 @@ by Ernst and Kellis.")
 (define-public r-ggbio
   (package
     (name "r-ggbio")
-    (version "1.38.0")
+    (version "1.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ggbio" version))
        (sha256
         (base32
-         "0vabil4jzrlv01aibqjhdkvrv2bf2kkpsidrkjj06isqr5fz54lw"))))
+         "0k3dxacrwgyrkvm7ggc2s1s1pbfs6c0a7ngykkj7jnc73czvnilx"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -10864,14 +13097,14 @@ family of feature/genome hypotheses.")
 (define-public r-gviz
   (package
     (name "r-gviz")
-    (version "1.34.1")
+    (version "1.36.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Gviz" version))
        (sha256
         (base32
-         "0bmlfz9ri1gkwyl605a2hqi5b8jdpvynrxwghwmrsd657ip6c7n1"))))
+         "19vjf4sdz5sxbcdilsqx7m57fq5a8xnxjf354zx2l5mgjrkzkk3h"))))
     (properties `((upstream-name . "Gviz")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10913,17 +13146,18 @@ with your data.")
 (define-public r-gwascat
   (package
     (name "r-gwascat")
-    (version "2.22.0")
+    (version "2.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gwascat" version))
        (sha256
         (base32
-         "1aqi1ny93virnzsxkh9ccx3mws70bgv0r8nwgla09vffb7f16nna"))))
+         "0109cxsviq1sk5hfwkjzd0y1kpm934287asjjd0j8jhh4b0ah2b2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-annotationhub" ,r-annotationhub)
        ("r-biocfilecache" ,r-biocfilecache)
        ("r-biostrings" ,r-biostrings)
        ("r-genomeinfodb" ,r-genomeinfodb)
@@ -10946,18 +13180,19 @@ EMBL-EBI GWAS catalog.")
 (define-public r-kegggraph
   (package
     (name "r-kegggraph")
-    (version "1.50.0")
+    (version "1.52.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "KEGGgraph" version))
        (sha256
-        (base32 "1h293hn02ysm923bh9gxk87xv663xiqchqcvpaxpla9c3yrgkx2v"))))
+        (base32 "0zxdph5hzr3kzj2g1mjqpiviwa189a5sq4bw7wiry6r79fdnklqs"))))
     (properties `((upstream-name . "KEGGgraph")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-graph" ,r-graph)
        ("r-rcurl" ,r-rcurl)
+       ("r-rgraphviz" ,r-rgraphviz)
        ("r-xml" ,r-xml)))
     (home-page "https://bioconductor.org/packages/KEGGgraph")
     (synopsis "Graph approach to Kegg Pathway database in R and Bioconductor")
@@ -10972,14 +13207,14 @@ functionalities including parsing, graph operation, visualization and etc.")
 (define-public r-ldblock
   (package
     (name "r-ldblock")
-    (version "1.20.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ldblock" version))
        (sha256
         (base32
-         "09i3ikv0axks9g842z1pjsc8x0fba51zyyc218h0bylbi1n9cdkm"))))
+         "075jncvfbn3lydg0jvfhnv5025mnw79saa0k557vpcwdvs9y4p0c"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
@@ -11069,16 +13304,42 @@ network models for a given data set, where these models are used to identify
 statistical dependencies in messy, complex data.")
     (license license:gpl2+)))
 
+;; This is a CRAN package, but it depends on r-rsamtools, which is a
+;; Bioconductor package.
+(define-public r-spp
+  (package
+    (name "r-spp")
+    (version "1.16.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "spp" version))
+              (sha256
+               (base32
+                "08zxxgyp0h6733b08jmml7k4rhfd3mi5dda3jrzid0s184y0z29w"))))
+    (build-system r-build-system)
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-bh" ,r-bh)
+       ("r-catools" ,r-catools)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rsamtools" ,r-rsamtools)))
+    (home-page "https://cran.r-project.org/web/packages/spp/")
+    (synopsis "ChIP-Seq processing pipeline")
+    (description "This package provides tools for analysis of ChIP-seq and
+other functional sequencing data.")
+    (license license:gpl2)))
+
 (define-public r-pathview
   (package
     (name "r-pathview")
-    (version "1.30.1")
+    (version "1.32.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "pathview" version))
        (sha256
-        (base32 "11fisiksw1y64ii9q8p2znyp9w8mlqzgiaacmycw59rngkjlmbs4"))))
+        (base32 "1fank0qavv9ikmzxvms8mky2wbzny02rfqkvsqzma26r3vl4r1g1"))))
     (properties `((upstream-name . "pathview")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11106,14 +13367,14 @@ large-scale and fully automated analysis.")
 (define-public r-snpstats
   (package
     (name "r-snpstats")
-    (version "1.40.0")
+    (version "1.42.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "snpStats" version))
        (sha256
         (base32
-         "1298a71swwav53yf9kfqkdpach3818plqcbw0lgb6sibs8y8ff24"))))
+         "11vvih5y9kvyjfp2navkfpp4xiyfgwlv4r0x3p52hkj92pc2pg3g"))))
     (properties `((upstream-name . "snpStats")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -11133,14 +13394,14 @@ the earlier snpMatrix package, allowing for uncertainty in genotypes.")
 (define-public r-chromstar
   (package
     (name "r-chromstar")
-    (version "1.16.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "chromstaR" version))
        (sha256
         (base32
-         "0vgpb7g2cncdn82hia2yzzachyns2zbd7906662g990qjnp2xlm1"))))
+         "09cqzylci4x4i7wn4ckcqhdlljbzfrp08wdvkkc5vrdldnj9pq5h"))))
     (properties `((upstream-name . "chromstaR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11171,14 +13432,14 @@ analyses.")
 (define-public r-guitar
   (package
     (name "r-guitar")
-    (version "2.6.0")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Guitar" version))
        (sha256
         (base32
-         "0lvfrpgrvmrz4f4qmsii70hw10h72zh1g1alv2sf6a6ixhndm0mz"))))
+         "1q4m6c5181dw12lvdp324jlk78c9jgcsg6b9hk87zjadp6j0gfr6"))))
     (properties `((upstream-name . "Guitar")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11203,13 +13464,13 @@ starting site, start codon, stop codon and transcription ending site.")
 (define-public r-sushi
   (package
     (name "r-sushi")
-    (version "1.28.0")
+    (version "1.30.0")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Sushi" version))
               (sha256
                (base32
-                "0ksj4f9z14mjsv6ssg5dwhpldw4r7wpdsln2if5g486mm1c56r8p"))))
+                "1m5l0nflhcynb3gz7b8qzvknb0s6xhds8z1yl3mbv8ic9qn2knv4"))))
     (properties `((upstream-name . "Sushi")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index fc2fc867ac..64fc6173db 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -122,6 +122,7 @@
   #:use-module (gnu packages popt)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-compression)
   #:use-module (gnu packages python-science)
@@ -310,6 +311,37 @@ instance, it implements several methods to assess contig-wise read coverage.")
 BAM files.")
     (license license:expat)))
 
+(define-public bamutils
+  (package
+    (name "bamutils")
+    (version "1.0.13")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://genome.sph.umich.edu/w/images/7/70/"
+                "BamUtilLibStatGen." version ".tgz"))
+              (sha256
+               (base32
+                "0asr1kmjbr3cyf4hkg865y8c2s30v87xvws4q6c8pyfi6wfd1h8n"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; There are no tests.
+       #:make-flags `("USER_WARNINGS=-std=gnu++98"
+                      ,(string-append "INSTALLDIR="
+                                      (assoc-ref %outputs "out") "/bin"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://genome.sph.umich.edu/wiki/BamUtil")
+    (synopsis "Programs for working on SAM/BAM files")
+    (description "This package provides several programs that perform
+operations on SAM/BAM files.  All of these programs are built into a
+single executable called @code{bam}.")
+    (license license:gpl3+)))
+
 (define-public bcftools
   (package
     (name "bcftools")
@@ -830,6 +862,30 @@ input/output delimiter.  When the new functionality is not used, bioawk is
 intended to behave exactly the same as the original BWK awk.")
     (license license:x11)))
 
+(define-public python-htsget
+  (package
+   (name "python-htsget")
+   (version "0.2.5")
+   (source (origin
+            (method url-fetch)
+            (uri (pypi-uri "htsget" version))
+            (sha256
+             (base32
+              "0ic07q85vhw9djf23k57b21my7i5xp400m8gfqgr5gcryqvdr0yk"))))
+   (build-system python-build-system)
+   (native-inputs
+    `(("python-setuptools-scm" ,python-setuptools-scm)))
+   (propagated-inputs
+    `(("python-humanize" ,python-humanize)
+      ("python-requests" ,python-requests)
+      ("python-six" ,python-six)))
+   (home-page "https://pypi.org/project/htsget/")
+   (synopsis "Python API and command line interface for the GA4GH htsget API")
+   (description "This package is a client implementation of the GA4GH htsget
+protocol.  It provides a simple and reliable way to retrieve genomic data from
+servers supporting the protocol.")
+   (license license:asl2.0)))
+
 (define-public python-pybedtools
   (package
     (name "python-pybedtools")
@@ -1942,6 +1998,45 @@ multiple sequence alignments.")
 (define-public python2-bx-python
   (package-with-python2 python-bx-python))
 
+(define-public python-pyega3
+  (package
+    (name "python-pyega3")
+    (version "3.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pyega3" version))
+              (sha256
+               (base32
+                "1k736in8g27rarx65ym9xk50x53zjg75h37bb8ljynxv04rypx2q"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ; The tests require network access.
+    (native-inputs
+     `(("python-psutil" ,python-psutil)
+       ("python-htsget" ,python-htsget)))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)
+       ("python-tqdm" ,python-tqdm)
+       ("python-urllib3" ,python-urllib3)
+       ("python-responses" ,python-responses)))
+    (home-page "https://github.com/EGA-archive/ega-download-client")
+    (synopsis "Python client for EGA")
+    (description "This package is a python-based tool for viewing and
+downloading files from authorized EGA datasets.  It uses the EGA data API and
+has several key features:
+@itemize
+@item Files are transferred over secure https connections and received
+  unencrypted, so no need for decryption after download.
+@item Downloads resume from where they left off in the event that the
+  connection is interrupted.
+@item Supports file segmenting and parallelized download of segments,
+  improving overall performance.
+@item After download completes, file integrity is verified using checksums.
+@item Implements the GA4GH-compliant htsget protocol for download of genomic
+  ranges for data files with accompanying index files.
+@end itemize\n")
+    (license license:asl2.0)))
+
 (define-public python-pysam
   (package
     (name "python-pysam")
@@ -6065,6 +6160,46 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
       ;; 2. MD5 implementation - RSA Data Security, RFC 1321
       (license (list license:gpl2+ license:public-domain)))))
 
+(define-public mosaicatcher
+  (package
+    (name "mosaicatcher")
+    (version "0.3.1")
+    (source (origin
+              ;; There are no release tarballs nor tags.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/friendsofstrandseq/mosaicatcher")
+                    (commit (string-append version "-dev"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1n2s5wvvj2y0vfgjkg1q11xahpbagxz7h2vf5q7qyy25s12kbzbd"))
+              (patches (search-patches "mosaicatcher-unbundle-htslib.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #false ; there are no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "src")))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((target (assoc-ref outputs "out"))
+                    (bin (string-append target "/bin"))
+                    (share (string-append target "/share/mosaicatcher")))
+               (install-file "mosaic" bin)
+               (mkdir-p share)
+               (copy-recursively "../R" share)))))))
+    (inputs
+     `(("boost" ,boost)
+       ("htslib" ,htslib)))
+    (home-page "https://github.com/friendsofstrandseq/mosaicatcher")
+    (synopsis "Count and classify Strand-seq reads")
+    (description
+     "Mosaicatcher counts Strand-seq reads and classifies strand states of
+each chromosome in each cell using a Hidden Markov Model.")
+    (license license:expat)))
+
 (define-public ngs-sdk
   (package
     (name "ngs-sdk")
@@ -7790,409 +7925,54 @@ including VCF header and contents in RDF and JSON.")
     (home-page "https://github.com/vcflib/bio-vcf")
     (license license:expat)))
 
-(define-public r-genomicalignments
-  (package
-    (name "r-genomicalignments")
-    (version "1.26.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "GenomicAlignments" version))
-              (sha256
-               (base32
-                "1q95px6s6snsax4ax955zzpdlrwp5liwf70wqq0lrk9mp6lq0hbr"))))
-    (properties
-     `((upstream-name . "GenomicAlignments")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocparallel" ,r-biocparallel)
-       ("r-biostrings" ,r-biostrings)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-summarizedexperiment" ,r-summarizedexperiment)))
-    (home-page "https://bioconductor.org/packages/GenomicAlignments")
-    (synopsis "Representation and manipulation of short genomic alignments")
-    (description
-     "This package provides efficient containers for storing and manipulating
-short genomic alignments (typically obtained by aligning short reads to a
-reference genome).  This includes read counting, computing the coverage,
-junction detection, and working with the nucleotide content of the
-alignments.")
-    (license license:artistic2.0)))
-
-(define-public r-rtracklayer
-  (package
-    (name "r-rtracklayer")
-    (version "1.50.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "rtracklayer" version))
-              (sha256
-               (base32
-                "12zimhpdzjyzd81wrzz5hdbzvlgzcs22x1nnaf2jq4cba3ch5px8"))))
-    (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-system-zlib
-           (lambda _
-             (substitute* "DESCRIPTION"
-               ((" zlibbioc,") ""))
-             (substitute* "NAMESPACE"
-               (("import\\(zlibbioc\\)") ""))
-             #t)))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("zlib" ,zlib)))
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-rcurl" ,r-rcurl)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-xml" ,r-xml)
-       ("r-xvector" ,r-xvector)
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (home-page "https://bioconductor.org/packages/rtracklayer")
-    (synopsis "R interface to genome browsers and their annotation tracks")
-    (description
-     "rtracklayer is an extensible framework for interacting with multiple
-genome browsers (currently UCSC built-in) and manipulating annotation tracks
-in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit
-built-in).  The user may export/import tracks to/from the supported browsers,
-as well as query and modify the browser state, such as the current viewport.")
-    (license license:artistic2.0)))
-
-(define-public r-genomicfeatures
-  (package
-    (name "r-genomicfeatures")
-    (version "1.42.3")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "GenomicFeatures" version))
-              (sha256
-               (base32
-                "168cf261vmcqffbzassavkjyz9a2af0l6zbv9cagkx6b1qrk3siz"))))
-    (properties
-     `((upstream-name . "GenomicFeatures")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biomart" ,r-biomart)
-       ("r-biostrings" ,r-biostrings)
-       ("r-dbi" ,r-dbi)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-rcurl" ,r-rcurl)
-       ("r-rsqlite" ,r-rsqlite)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-xvector" ,r-xvector)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/GenomicFeatures")
-    (synopsis "Tools for working with transcript centric annotations")
-    (description
-     "This package provides a set of tools and methods for making and
-manipulating transcript centric annotations.  With these tools the user can
-easily download the genomic locations of the transcripts, exons and cds of a
-given organism, from either the UCSC Genome Browser or a BioMart
-database (more sources will be supported in the future).  This information is
-then stored in a local database that keeps track of the relationship between
-transcripts, exons, cds and genes.  Flexible methods are provided for
-extracting the desired features in a convenient format.")
-    (license license:artistic2.0)))
-
-(define-public r-go-db
-  (package
-    (name "r-go-db")
-    (version "3.7.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/GO.db_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0i3wcf5h3n0dawzc1hy0kv74f06j80c47n4p3g3fmrcxlhi3jpa5"))))
-    (properties
-     `((upstream-name . "GO.db")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)))
-    (home-page "https://bioconductor.org/packages/GO.db")
-    (synopsis "Annotation maps describing the entire Gene Ontology")
-    (description
-     "The purpose of this GO.db annotation package is to provide detailed
-information about the latest version of the Gene Ontologies.")
-    (license license:artistic2.0)))
-
-(define-public r-topgo
-  (package
-    (name "r-topgo")
-    (version "2.42.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "topGO" version))
-              (sha256
-               (base32
-                "0vr3l9gvd3dhy446k3fkj6rm7z1abxi56rbnrs64297yzxaz1ngl"))))
-    (properties
-     `((upstream-name . "topGO")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-dbi" ,r-dbi)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-go-db" ,r-go-db)
-       ("r-graph" ,r-graph)
-       ("r-lattice" ,r-lattice)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-sparsem" ,r-sparsem)))
-    (home-page "https://bioconductor.org/packages/topGO")
-    (synopsis "Enrichment analysis for gene ontology")
-    (description
-     "The topGO package provides tools for testing @dfn{gene ontology} (GO)
-terms while accounting for the topology of the GO graph.  Different test
-statistics and different methods for eliminating local similarities and
-dependencies between GO terms can be implemented and applied.")
-    ;; Any version of the LGPL applies.
-    (license license:lgpl2.1+)))
-
-(define-public r-bsgenome
-  (package
-    (name "r-bsgenome")
-    (version "1.58.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "BSgenome" version))
-              (sha256
-               (base32
-                "1gbvmxr6r57smgvhqgwspbcnwyk4hsfkxkpzzcs6470q03zfb4wq"))))
-    (properties
-     `((upstream-name . "BSgenome")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-xvector" ,r-xvector)))
-    (home-page "https://bioconductor.org/packages/BSgenome")
-    (synopsis "Infrastructure for Biostrings-based genome data packages")
-    (description
-     "This package provides infrastructure shared by all Biostrings-based
-genome data packages and support for efficient SNP representation.")
-    (license license:artistic2.0)))
-
-(define-public r-impute
-  (package
-    (name "r-impute")
-    (version "1.64.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "impute" version))
-              (sha256
-               (base32
-                "1pnjasw9i19nmxwjzrd9jbln31yc5jilfvwk414ya5zbqfsazvxa"))))
-    (native-inputs
-     `(("gfortran" ,gfortran)))
-    (build-system r-build-system)
-    (home-page "https://bioconductor.org/packages/impute")
-    (synopsis "Imputation for microarray data")
-    (description
-     "This package provides a function to impute missing gene expression
-microarray data, using nearest neighbor averaging.")
-    (license license:gpl2+)))
-
-(define-public r-seqpattern
-  (package
-    (name "r-seqpattern")
-    (version "1.22.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "seqPattern" version))
-              (sha256
-               (base32
-                "0j68n6fwycxjpl2va5fw7ajb123n758s2pq997d76dysxghmrlzq"))))
-    (properties
-     `((upstream-name . "seqPattern")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biostrings" ,r-biostrings)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-kernsmooth" ,r-kernsmooth)
-       ("r-plotrix" ,r-plotrix)))
-    (home-page "https://bioconductor.org/packages/seqPattern")
-    (synopsis "Visualising oligonucleotide patterns and motif occurrences")
-    (description
-     "This package provides tools to visualize oligonucleotide patterns and
-sequence motif occurrences across a large set of sequences centred at a common
-reference point and sorted by a user defined feature.")
-    (license license:gpl3+)))
-
-(define-public r-genomation
-  (package
-    (name "r-genomation")
-    (version "1.22.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "genomation" version))
-              (sha256
-               (base32
-                "1ana06irlpdgnmk8mb329nws9sm8n6max4qargf1xdcdf3rnk45g"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biostrings" ,r-biostrings)
-       ("r-bsgenome" ,r-bsgenome)
-       ("r-data-table" ,r-data-table)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-gridbase" ,r-gridbase)
-       ("r-impute" ,r-impute)
-       ("r-iranges" ,r-iranges)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-plotrix" ,r-plotrix)
-       ("r-plyr" ,r-plyr)
-       ("r-rcpp" ,r-rcpp)
-       ("r-readr" ,r-readr)
-       ("r-reshape2" ,r-reshape2)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-runit" ,r-runit)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-seqpattern" ,r-seqpattern)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
-    (synopsis "Summary, annotation and visualization of genomic data")
-    (description
-     "This package provides a package for summary and annotation of genomic
-intervals.  Users can visualize and quantify genomic intervals over
-pre-defined functional regions, such as promoters, exons, introns, etc.  The
-genomic intervals represent regions with a defined chromosome position, which
-may be associated with a score, such as aligned reads from HT-seq experiments,
-TF binding sites, methylation scores, etc.  The package can use any tabular
-genomic feature data as long as it has minimal information on the locations of
-genomic intervals.  In addition, it can use BAM or BigWig files as input.")
-    (license license:artistic2.0)))
-
-(define-public r-genomationdata
-  (package
-    (name "r-genomationdata")
-    (version "1.22.0")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://bioconductor.org/packages/"
-                                  "release/data/experiment/src/contrib/"
-                                  "genomationData_" version ".tar.gz"))
-              (sha256
-               (base32
-                "0igjsvfnws3498j65ifniw0kbxfqpfr59rcjddqvq4zsj453fx1g"))))
-    (build-system r-build-system)
-    ;; As this package provides little more than large data files, it doesn't
-    ;; make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
-    (synopsis "Experimental data for use with the genomation package")
-    (description
-     "This package contains experimental genetic data for use with the
-genomation package.  Included are Chip Seq, Methylation and Cage data,
-downloaded from Encode.")
-    (license license:gpl3+)))
-
-(define-public r-seqlogo
-  (package
-    (name "r-seqlogo")
-    (version "1.56.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "seqLogo" version))
-       (sha256
-        (base32
-         "02rpzjjfg5chlwwfbvv72cm78cg2vfmdwzars0cin9hz1hd7rnq1"))))
-    (properties `((upstream-name . "seqLogo")))
-    (build-system r-build-system)
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/seqLogo")
-    (synopsis "Sequence logos for DNA sequence alignments")
-    (description
-     "seqLogo takes the position weight matrix of a DNA sequence motif and
-plots the corresponding sequence logo as introduced by Schneider and
-Stephens (1990).")
-    (license license:lgpl2.0+)))
-
-(define-public r-motifrg
-  (package
-    (name "r-motifrg")
-    (version "1.31.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "motifRG" version))
-       (sha256
-        (base32
-         "1ml6zyzlk8yjbnfhga2qnw8nl43rankvka0kc1yljxr2b66aqbhn"))))
-    (properties `((upstream-name . "motifRG")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biostrings" ,r-biostrings)
-       ("r-bsgenome" ,r-bsgenome)
-       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
-       ("r-iranges" ,r-iranges)
-       ("r-seqlogo" ,r-seqlogo)
-       ("r-xvector" ,r-xvector)))
-    (home-page "https://bioconductor.org/packages/motifRG")
-    (synopsis "Discover motifs in high throughput sequencing data")
-    (description
-     "This package provides tools for discriminative motif discovery in high
-throughput genetic sequencing data sets using regression methods.")
-    (license license:artistic2.0)))
-
-(define-public r-zlibbioc
-  (package
-    (name "r-zlibbioc")
-    (version "1.36.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "zlibbioc" version))
-              (sha256
-               (base32
-                "0m36ddss0znvm19dhnxcclxjhgjplw8ajk8v419h20ab8an6khxg"))))
-    (properties
-     `((upstream-name . "zlibbioc")))
-    (build-system r-build-system)
-    (home-page "https://bioconductor.org/packages/zlibbioc")
-    (synopsis "Provider for zlib-1.2.5 to R packages")
-    (description "This package uses the source code of zlib-1.2.5 to create
-libraries for systems that do not have these available via other means.")
-    (license license:artistic2.0)))
+(define-public r-phantompeakqualtools
+  (let ((commit "8d2b2d18c686d894ef5908b37da7adf72a07ef42")
+        (revision "1"))
+    (package
+      (name "r-phantompeakqualtools")
+      (version (git-version "1.2.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kundajelab/phantompeakqualtools")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "00anrvcwsp02d98qhj1xpj85644h2pp4kfzq6dgbmwmdr6jvy7p4"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f ; There are no tests.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((script (string-append (assoc-ref outputs "out")
+                                            "/share/scripts")))
+                 (install-file "run_spp.R" script)))))))
+      (inputs
+       `(("r" ,r-minimal)))
+      (propagated-inputs
+       `(("r-catools" ,r-catools)
+         ("r-snow" ,r-snow)
+         ("r-snowfall" ,r-snowfall)
+         ("r-bitops" ,r-bitops)
+         ("r-rsamtools" ,r-rsamtools)
+         ("r-spp" ,r-spp)
+         ("gawk" ,gawk)
+         ("samtools" ,samtools)
+         ("boost" ,boost)
+         ("gzip" ,gzip)))
+      (home-page "https://github.com/kundajelab/phantompeakqualtools")
+      (synopsis "Informative enrichment for ChIP-seq data")
+      (description "This package computes informative enrichment and quality
+measures for ChIP-seq/DNase-seq/FAIRE-seq/MNase-seq data.  It can also be
+used to obtain robust estimates of the predominant fragment length or
+characteristic tag shift values in these assays.")
+      (license license:bsd-3))))
 
 (define-public r-r4rna
   (package
@@ -8217,116 +7997,6 @@ libraries for systems that do not have these available via other means.")
 secondary structure and comparative analysis in R.")
     (license license:gpl3+)))
 
-(define-public r-rhtslib
-  (package
-    (name "r-rhtslib")
-    (version "1.22.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "Rhtslib" version))
-       (sha256
-        (base32
-         "18wag2jnpda6078xjkpfdvar1gkb2myhw83gg03l39sabh35qya4"))))
-    (properties `((upstream-name . "Rhtslib")))
-    (build-system r-build-system)
-    ;; Without this a temporary directory ends up in the Rhtslib.so binary,
-    ;; which makes R abort the build.
-    (arguments '(#:configure-flags '("--no-staged-install")))
-    (propagated-inputs
-     `(("curl" ,curl)
-       ("zlib" ,zlib) ; packages using rhtslib need to link with zlib
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/nhayden/Rhtslib")
-    (synopsis "High-throughput sequencing library as an R package")
-    (description
-     "This package provides the HTSlib C library for high-throughput
-nucleotide sequence analysis.  The package is primarily useful to developers
-of other R packages who wish to make use of HTSlib.")
-    (license license:lgpl2.0+)))
-
-(define-public r-bamsignals
-  (package
-    (name "r-bamsignals")
-    (version "1.22.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "bamsignals" version))
-       (sha256
-        (base32
-         "0p3r9z9z5sfkd0b951cgr751k4z0yviyn1jfw9d4fcnyld7g1jxv"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-rcpp" ,r-rcpp)
-       ("r-rhtslib" ,r-rhtslib)
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/bamsignals")
-    (synopsis "Extract read count signals from bam files")
-    (description
-     "This package efficiently obtains count vectors from indexed bam
-files.  It counts the number of nucleotide sequence reads in given genomic
-ranges and it computes reads profiles and coverage profiles.  It also handles
-paired-end data.")
-    (license license:gpl2+)))
-
-(define-public r-rcas
-  (package
-    (name "r-rcas")
-    (version "1.16.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "RCAS" version))
-              (sha256
-               (base32
-                "0vdxml618vqvf8xyh0zxs307p9zby0cj9dqyiiz625ilyq1hkw2m"))))
-    (properties `((upstream-name . "RCAS")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-bsgenome" ,r-bsgenome)
-       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
-       ("r-cowplot" ,r-cowplot)
-       ("r-data-table" ,r-data-table)
-       ("r-dt" ,r-dt)
-       ("r-genomation" ,r-genomation)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicfeatures" ,r-genomicfeatures)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-ggseqlogo" ,r-ggseqlogo)
-       ("r-gprofiler2" ,r-gprofiler2)
-       ("r-iranges" ,r-iranges)
-       ("r-pbapply" ,r-pbapply)
-       ("r-pheatmap" ,r-pheatmap)
-       ("r-plotly" ,r-plotly)
-       ("r-plotrix" ,r-plotrix)
-       ("r-proxy" ,r-proxy)
-       ("r-ranger" ,r-ranger)
-       ("r-rsqlite" ,r-rsqlite)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-rmarkdown" ,r-rmarkdown)
-       ("r-s4vectors" ,r-s4vectors)
-       ("pandoc" ,pandoc)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (synopsis "RNA-centric annotation system")
-    (description
-     "RCAS aims to be a standalone RNA-centric annotation system that provides
-intuitive reports and publication-ready graphics.  This package provides the R
-library implementing most of the pipeline's features.")
-    (home-page "https://github.com/BIMSBbioinfo/RCAS")
-    (license license:artistic2.0)))
-
 (define-public rcas-web
   (package
     (name "rcas-web")
@@ -8378,64 +8048,19 @@ library implementing most of the pipeline's features.")
 @dfn{RNA-centric annotation system} (RCAS).")
     (license license:agpl3+)))
 
-(define-public r-mutationalpatterns
-  (package
-    (name "r-mutationalpatterns")
-    (version "3.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "MutationalPatterns" version))
-       (sha256
-        (base32
-         "1988kjjgq8af0hj7chhpxi88717wwmzs9qgrwapjh0hm2hjwhn35"))))
-    (build-system r-build-system)
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-bsgenome" ,r-bsgenome)
-       ;; These two packages are suggested packages
-       ("r-bsgenome-hsapiens-1000g" ,r-bsgenome-hsapiens-1000genomes-hs37d5)
-       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
-       ("r-cowplot" ,r-cowplot)
-       ("r-dplyr" ,r-dplyr)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-ggalluvial" ,r-ggalluvial)
-       ("r-ggdendro" ,r-ggdendro)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-iranges" ,r-iranges)
-       ("r-magrittr" ,r-magrittr)
-       ("r-nmf" ,r-nmf)
-       ("r-pracma" ,r-pracma)
-       ("r-purrr" ,r-purrr)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-stringr" ,r-stringr)
-       ("r-tibble" ,r-tibble)
-       ("r-tidyr" ,r-tidyr)
-       ("r-variantannotation" ,r-variantannotation)))
-    (home-page "https://bioconductor.org/packages/MutationalPatterns/")
-    (synopsis "Extract and visualize mutational patterns in genomic data")
-    (description "This package provides an extensive toolset for the
-characterization and visualization of a wide range of mutational patterns
-in SNV base substitution data.")
-    (license license:expat)))
-
 (define-public r-chipkernels
   (let ((commit "c9cfcacb626b1221094fb3490ea7bac0fd625372")
         (revision "1"))
     (package
       (name "r-chipkernels")
-      (version (string-append "1.1-" revision "." (string-take commit 9)))
+      (version (git-version "1.1" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/ManuSetty/ChIPKernels")
                (commit commit)))
-         (file-name (string-append name "-" version))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "14bj5qhjm1hsm9ay561nfbqi9wxsa7y487df2idsaaf6z10nw4v0"))))
@@ -8490,121 +8115,6 @@ bound and non bound genomic regions to accurately identify transcription
 factors bound at the specific regions.")
     (license license:gpl2+)))
 
-(define-public r-tximport
-  (package
-    (name "r-tximport")
-    (version "1.18.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "tximport" version))
-              (sha256
-               (base32
-                "1nxnlvl4iv2392xa72j0lzy2xnb3vrvyhfrdj9l54znwkrryyq34"))))
-    (build-system r-build-system)
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/tximport")
-    (synopsis "Import and summarize transcript-level estimates for gene-level analysis")
-    (description
-     "This package provides tools to import transcript-level abundance,
-estimated counts and transcript lengths, and to summarize them into matrices
-for use with downstream gene-level analysis packages.  Average transcript
-length, weighted by sample-specific transcript abundance estimates, is
-provided as a matrix which can be used as an offset for different expression
-of gene-level counts.")
-    (license license:gpl2+)))
-
-(define-public r-rhdf5filters
-  (package
-    (name "r-rhdf5filters")
-    (version "1.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "rhdf5filters" version))
-       (sha256
-        (base32
-         "1bjlgc76vx0z81s8vci9ln1d2s3b157qnm32xs36mnyjk31ivasz"))))
-    (properties `((upstream-name . "rhdf5filters")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-rhdf5lib" ,r-rhdf5lib)))
-    (inputs
-     `(("zlib" ,zlib)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/grimbough/rhdf5filters")
-    (synopsis "HDF5 compression filters")
-    (description
-     "This package provides a collection of compression filters for use with
-HDF5 datasets.")
-    (license license:bsd-2)))
-
-(define-public r-rhdf5
-  (package
-    (name "r-rhdf5")
-    (version "2.34.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "rhdf5" version))
-              (sha256
-               (base32
-                "0almr1vscrgj5g4dyrags131wia2pmdbdidlpskbgm44ha6hpmqi"))))
-    (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-linking
-           (lambda _
-             (substitute* "src/Makevars"
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\(RHDF5_LIBS\\)" match)
-                (string-append match "/libhdf5.a")))
-             #t)))))
-    (propagated-inputs
-     `(("r-rhdf5filters" ,r-rhdf5filters)
-       ("r-rhdf5lib" ,r-rhdf5lib)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/rhdf5")
-    (synopsis "HDF5 interface to R")
-    (description
-     "This R/Bioconductor package provides an interface between HDF5 and R.
-HDF5's main features are the ability to store and access very large and/or
-complex datasets and a wide variety of metadata on mass storage (disk) through
-a completely portable file format.  The rhdf5 package is thus suited for the
-exchange of large and/or complex datasets between R and other software
-package, and for letting R applications work on datasets that are larger than
-the available RAM.")
-    (license license:artistic2.0)))
-
-(define-public r-annotationfilter
-  (package
-    (name "r-annotationfilter")
-    (version "1.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "AnnotationFilter" version))
-              (sha256
-               (base32
-                "0npk0laa2rc93rsh6yikj886zf2fl53a050j07fj9w67j0q0h3s9"))))
-    (properties
-     `((upstream-name . "AnnotationFilter")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-genomicranges" ,r-genomicranges)
-       ("r-lazyeval" ,r-lazyeval)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/Bioconductor/AnnotationFilter")
-    (synopsis "Facilities for filtering Bioconductor annotation resources")
-    (description
-     "This package provides classes and other infrastructure to implement
-filters for manipulating Bioconductor annotation resources.  The filters are
-used by @code{ensembldb}, @code{Organism.dplyr}, and other packages.")
-    (license license:artistic2.0)))
-
 (define-public emboss
   (package
     (name "emboss")
@@ -8675,13 +8185,13 @@ tools for sequence analysis into a seamless whole.")
       (name "bits")
       ;; The version is 2.13.0 even though no release archives have been
       ;; published as yet.
-      (version (string-append "2.13.0-" revision "." (string-take commit 9)))
+      (version (git-version "2.13.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/arq5x/bits")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "17n2kffk4kmhivd8c98g2vr6y1s23vbg4sxlxs689wni66797hbs"))))
@@ -8721,7 +8231,7 @@ intervals (e.g. genes, sequence alignments).")
         (commit   "0466d364b71117d01e4471b74c514436cc281233"))
     (package
       (name "piranha")
-      (version (string-append "1.2.1-" revision "." (string-take commit 9)))
+      (version (git-version "1.2.1" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -8810,10 +8320,11 @@ group or two ChIP groups run under different conditions.")
     (license license:gpl3+)))
 
 (define-public filevercmp
-  (let ((commit "1a9b779b93d0b244040274794d402106907b71b7"))
+  (let ((commit "1a9b779b93d0b244040274794d402106907b71b7")
+        (revision "1"))
     (package
       (name "filevercmp")
-      (version (string-append "0-1." (string-take commit 7)))
+      (version (git-version "0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -8927,176 +8438,6 @@ analysis, variant tools is project based and provides a whole set of tools to
 manipulate and analyze genetic variants.")
     (license license:gpl3+)))
 
-(define-public r-chipseq
-  (package
-    (name "r-chipseq")
-    (version "1.40.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "chipseq" version))
-       (sha256
-        (base32
-         "12pzq24aarvgxfmhcad0l5g951xqdvvi7bspgbsvlvmfkqd74j2v"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-lattice" ,r-lattice)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-shortread" ,r-shortread)))
-    (home-page "https://bioconductor.org/packages/chipseq")
-    (synopsis "Package for analyzing ChIPseq data")
-    (description
-     "This package provides tools for processing short read data from ChIPseq
-experiments.")
-    (license license:artistic2.0)))
-
-(define-public r-copyhelper
-  (package
-    (name "r-copyhelper")
-    (version "1.6.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://bioconductor.org/packages/release/"
-                           "data/experiment/src/contrib/CopyhelpeR_"
-                           version ".tar.gz"))
-       (sha256
-        (base32
-         "0x7cyynjmxls9as2gg0iyp9x5fpalxmdjq914ss7i84i9zyk5bhq"))))
-    (properties `((upstream-name . "CopyhelpeR")))
-    (build-system r-build-system)
-    (home-page "https://bioconductor.org/packages/CopyhelpeR/")
-    (synopsis "Helper files for CopywriteR")
-    (description
-     "This package contains the helper files that are required to run the
-Bioconductor package CopywriteR.  It contains pre-assembled 1kb bin GC-content
-and mappability files for the reference genomes hg18, hg19, hg38, mm9 and
-mm10.  In addition, it contains a blacklist filter to remove regions that
-display copy number variation.  Files are stored as GRanges objects from the
-GenomicRanges Bioconductor package.")
-    (license license:gpl2)))
-
-(define-public r-copywriter
-  (package
-    (name "r-copywriter")
-    (version "2.22.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "CopywriteR" version))
-       (sha256
-        (base32
-         "060p6l6l8i6b15hyyz5v5kkxih3h4wcciixii51m9mn82z23xr2f"))))
-    (properties `((upstream-name . "CopywriteR")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocparallel" ,r-biocparallel)
-       ("r-chipseq" ,r-chipseq)
-       ("r-copyhelper" ,r-copyhelper)
-       ("r-data-table" ,r-data-table)
-       ("r-dnacopy" ,r-dnacopy)
-       ("r-futile-logger" ,r-futile-logger)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-gtools" ,r-gtools)
-       ("r-iranges" ,r-iranges)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-s4vectors" ,r-s4vectors)))
-    (home-page "https://github.com/PeeperLab/CopywriteR")
-    (synopsis "Copy number information from targeted sequencing")
-    (description
-     "CopywriteR extracts DNA copy number information from targeted sequencing
-by utilizing off-target reads.  It allows for extracting uniformly distributed
-copy number information, can be used without reference, and can be applied to
-sequencing data obtained from various techniques including chromatin
-immunoprecipitation and target enrichment on small gene panels.  Thereby,
-CopywriteR constitutes a widely applicable alternative to available copy
-number detection tools.")
-    (license license:gpl2)))
-
-(define-public r-methylkit
-  (package
-    (name "r-methylkit")
-    (version "1.16.1")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "methylKit" version))
-              (sha256
-               (base32
-                "1c9b11gfh3cc37iwym9rgsba3mh2xkp78a1gvnjqhzlkiz667mn3"))))
-    (properties `((upstream-name . "methylKit")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-data-table" ,r-data-table)
-       ("r-emdbook" ,r-emdbook)
-       ("r-fastseg" ,r-fastseg)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-gtools" ,r-gtools)
-       ("r-iranges" ,r-iranges)
-       ("r-kernsmooth" ,r-kernsmooth)
-       ("r-limma" ,r-limma)
-       ("r-mclust" ,r-mclust)
-       ("r-mgcv" ,r-mgcv)
-       ("r-qvalue" ,r-qvalue)
-       ("r-r-utils" ,r-r-utils)
-       ("r-rcpp" ,r-rcpp)
-       ("r-rhtslib" ,r-rhtslib)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr))) ; for vignettes
-    (home-page "https://github.com/al2na/methylKit")
-    (synopsis
-     "DNA methylation analysis from high-throughput bisulfite sequencing results")
-    (description
-     "MethylKit is an R package for DNA methylation analysis and annotation
-from high-throughput bisulfite sequencing.  The package is designed to deal
-with sequencing data from @dfn{Reduced representation bisulfite
-sequencing} (RRBS) and its variants, but also target-capture methods and whole
-genome bisulfite sequencing.  It also has functions to analyze base-pair
-resolution 5hmC data from experimental protocols such as oxBS-Seq and
-TAB-Seq.")
-    (license license:artistic2.0)))
-
-(define-public r-sva
-  (package
-    (name "r-sva")
-    (version "3.38.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "sva" version))
-       (sha256
-        (base32
-         "1hpzzg3qrgkd8kwg1m5gq94cikjgk9j4l1wk58fxl49s6fmd13zy"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-edger" ,r-edger)
-       ("r-genefilter" ,r-genefilter)
-       ("r-mgcv" ,r-mgcv)
-       ("r-biocparallel" ,r-biocparallel)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-limma" ,r-limma)))
-    (home-page "https://bioconductor.org/packages/sva")
-    (synopsis "Surrogate variable analysis")
-    (description
-     "This package contains functions for removing batch effects and other
-unwanted variation in high-throughput experiment.  It also contains functions
-for identifying and building surrogate variables for high-dimensional data
-sets.  Surrogate variables are covariates constructed directly from
-high-dimensional data like gene expression/RNA sequencing/methylation/brain
-imaging data that can be used in subsequent analyses to adjust for unknown,
-unmodeled, or latent sources of noise.")
-    (license license:artistic2.0)))
-
 (define-public r-raremetals2
   (package
     (name "r-raremetals2")
@@ -9129,807 +8470,6 @@ for analyzing gene-level association tests in meta-analyses for binary
 trait.")
     (license license:gpl3)))
 
-(define-public r-protgenerics
-  (package
-    (name "r-protgenerics")
-    (version "1.22.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "ProtGenerics" version))
-       (sha256
-        (base32
-         "0yihxphgkshvfv1sn67wc4zvr2zlzws2j7ki3zabm6vyfkfdkfiz"))))
-    (properties `((upstream-name . "ProtGenerics")))
-    (build-system r-build-system)
-    (home-page "https://github.com/lgatto/ProtGenerics")
-    (synopsis "S4 generic functions for proteomics infrastructure")
-    (description
-     "This package provides S4 generic functions needed by Bioconductor
-proteomics packages.")
-    (license license:artistic2.0)))
-
-(define-public r-mzr
-  (package
-    (name "r-mzr")
-    (version "2.24.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "mzR" version))
-       (sha256
-        (base32
-         "0ik0yrjhvk8r5pm990chn2aadp0gqzzkkm0027682ky34xp142sg"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (delete-file-recursively "src/boost")
-           #t))))
-    (properties `((upstream-name . "mzR")))
-    (build-system r-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-system-boost
-           (lambda _
-             (substitute* "src/Makevars"
-               (("\\./boost/libs.*") "")
-               ;; This is to avoid having a plain directory on the list of
-               ;; libraries to link.
-               (("\\(RHDF5_LIBS\\)" match)
-                (string-append match "/libhdf5.a"))
-               (("PKG_LIBS=") "PKG_LIBS=$(BOOST_LIBS) ")
-               (("\\ARCH_OBJS=" line)
-                (string-append line
-                               "\nBOOST_LIBS=-lboost_system -lboost_regex \
--lboost_iostreams -lboost_thread -lboost_filesystem -lboost_chrono\n")))
-             #t)))))
-    (inputs
-     `(;; Our default boost package won't work here, unfortunately, even with
-       ;; mzR version 2.24.1.
-       ("boost" ,boost-for-mysql) ; use this instead of the bundled boost sources
-       ("zlib" ,zlib)))
-    (propagated-inputs
-     `(("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-ncdf4" ,r-ncdf4)
-       ("r-protgenerics" ,r-protgenerics)
-       ("r-rcpp" ,r-rcpp)
-       ("r-rhdf5lib" ,r-rhdf5lib)
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/sneumann/mzR/")
-    (synopsis "Parser for mass spectrometry data files")
-    (description
-     "The mzR package provides a unified API to the common file formats and
-parsers available for mass spectrometry data.  It comes with a wrapper for the
-ISB random access parser for mass spectrometry mzXML, mzData and mzML files.
-The package contains the original code written by the ISB, and a subset of the
-proteowizard library for mzML and mzIdentML.  The netCDF reading code has
-previously been used in XCMS.")
-    (license license:artistic2.0)))
-
-(define-public r-affyio
-  (package
-    (name "r-affyio")
-    (version "1.60.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "affyio" version))
-       (sha256
-        (base32
-         "14xnzrxrvgxgixjhq5a9fdgcmrxam2j74hwidkc9if92ffv6s83h"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-zlibbioc" ,r-zlibbioc)))
-    (inputs
-     `(("zlib" ,zlib)))
-    (home-page "https://github.com/bmbolstad/affyio")
-    (synopsis "Tools for parsing Affymetrix data files")
-    (description
-     "This package provides routines for parsing Affymetrix data files based
-upon file format information.  The primary focus is on accessing the CEL and
-CDF file formats.")
-    (license license:lgpl2.0+)))
-
-(define-public r-affy
-  (package
-    (name "r-affy")
-    (version "1.68.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "affy" version))
-       (sha256
-        (base32
-         "0ywz548cbzk2k1njnxhlk5ydzvz2dk78ka8kx53gwrmdc4sc2b06"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-affyio" ,r-affyio)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocmanager" ,r-biocmanager)
-       ("r-preprocesscore" ,r-preprocesscore)
-       ("r-zlibbioc" ,r-zlibbioc)))
-    (inputs
-     `(("zlib" ,zlib)))
-    (home-page "https://bioconductor.org/packages/affy")
-    (synopsis "Methods for affymetrix oligonucleotide arrays")
-    (description
-     "This package contains functions for exploratory oligonucleotide array
-analysis.")
-    (license license:lgpl2.0+)))
-
-(define-public r-vsn
-  (package
-    (name "r-vsn")
-    (version "3.58.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "vsn" version))
-       (sha256
-        (base32
-         "0dfrfflidpnphwyqzmmfiz9blfqv6qa09xlwgfabhpfsf3ml2rlb"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-affy" ,r-affy)
-       ("r-biobase" ,r-biobase)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-lattice" ,r-lattice)
-       ("r-limma" ,r-limma)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr))) ; for vignettes
-    (home-page "https://bioconductor.org/packages/release/bioc/html/vsn.html")
-    (synopsis "Variance stabilization and calibration for microarray data")
-    (description
-     "The package implements a method for normalising microarray intensities,
-and works for single- and multiple-color arrays.  It can also be used for data
-from other technologies, as long as they have similar format.  The method uses
-a robust variant of the maximum-likelihood estimator for an
-additive-multiplicative error model and affine calibration.  The model
-incorporates data calibration step (a.k.a.  normalization), a model for the
-dependence of the variance on the mean intensity and a variance stabilizing
-data transformation.  Differences between transformed intensities are
-analogous to \"normalized log-ratios\".  However, in contrast to the latter,
-their variance is independent of the mean, and they are usually more sensitive
-and specific in detecting differential transcription.")
-    (license license:artistic2.0)))
-
-(define-public r-mzid
-  (package
-    (name "r-mzid")
-    (version "1.28.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "mzID" version))
-       (sha256
-        (base32
-         "0s7d6cz1li7v3ni6n6hrdspl93yiyr283kmbbd3hhkfgzgx6kpq2"))))
-    (properties `((upstream-name . "mzID")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-doparallel" ,r-doparallel)
-       ("r-foreach" ,r-foreach)
-       ("r-iterators" ,r-iterators)
-       ("r-plyr" ,r-plyr)
-       ("r-protgenerics" ,r-protgenerics)
-       ("r-xml" ,r-xml)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/mzID")
-    (synopsis "Parser for mzIdentML files")
-    (description
-     "This package provides a parser for mzIdentML files implemented using the
-XML package.  The parser tries to be general and able to handle all types of
-mzIdentML files with the drawback of having less pretty output than a vendor
-specific parser.")
-    (license license:gpl2+)))
-
-(define-public r-pcamethods
-  (package
-    (name "r-pcamethods")
-    (version "1.82.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "pcaMethods" version))
-       (sha256
-        (base32
-         "04xb4vjky6hq58l30i1iq9rv5gzjdxnidjxpnzg7pvg67vz8pgf0"))))
-    (properties `((upstream-name . "pcaMethods")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-mass" ,r-mass)
-       ("r-rcpp" ,r-rcpp)))
-    (home-page "https://github.com/hredestig/pcamethods")
-    (synopsis "Collection of PCA methods")
-    (description
-     "This package provides Bayesian PCA, Probabilistic PCA, Nipals PCA,
-Inverse Non-Linear PCA and the conventional SVD PCA.  A cluster based method
-for missing value estimation is included for comparison.  BPCA, PPCA and
-NipalsPCA may be used to perform PCA on incomplete data as well as for
-accurate missing value estimation.  A set of methods for printing and plotting
-the results is also provided.  All PCA methods make use of the same data
-structure (pcaRes) to provide a common interface to the PCA results.")
-    (license license:gpl3+)))
-
-(define-public r-msnbase
-  (package
-    (name "r-msnbase")
-    (version "2.16.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "MSnbase" version))
-       (sha256
-        (base32
-         "0hxzs9zzljywqxr7q388hshpy1pdryhl0zkwffqbxpf5pcf92d3h"))))
-    (properties `((upstream-name . "MSnbase")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-affy" ,r-affy)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocparallel" ,r-biocparallel)
-       ("r-digest" ,r-digest)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-impute" ,r-impute)
-       ("r-iranges" ,r-iranges)
-       ("r-lattice" ,r-lattice)
-       ("r-maldiquant" ,r-maldiquant)
-       ("r-mass" ,r-mass)
-       ("r-mzid" ,r-mzid)
-       ("r-mzr" ,r-mzr)
-       ("r-pcamethods" ,r-pcamethods)
-       ("r-plyr" ,r-plyr)
-       ("r-preprocesscore" ,r-preprocesscore)
-       ("r-protgenerics" ,r-protgenerics)
-       ("r-rcpp" ,r-rcpp)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-scales" ,r-scales)
-       ("r-vsn" ,r-vsn)
-       ("r-xml" ,r-xml)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/lgatto/MSnbase")
-    (synopsis "Base functions and classes for MS-based proteomics")
-    (description
-     "This package provides basic plotting, data manipulation and processing
-of mass spectrometry based proteomics data.")
-    (license license:artistic2.0)))
-
-(define-public r-msnid
-  (package
-    (name "r-msnid")
-    (version "1.24.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "MSnID" version))
-       (sha256
-        (base32
-         "05bncy7lw2a3h8xgnavjiz56pc6mk8q7l6qdd81197nawxs3j02d"))))
-    (properties `((upstream-name . "MSnID")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-annotationhub" ,r-annotationhub)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocstyle" ,r-biocstyle)
-       ("r-biostrings" ,r-biostrings)
-       ("r-data-table" ,r-data-table)
-       ("r-doparallel" ,r-doparallel)
-       ("r-dplyr" ,r-dplyr)
-       ("r-foreach" ,r-foreach)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-iterators" ,r-iterators)
-       ("r-msnbase" ,r-msnbase)
-       ("r-msmstests" ,r-msmstests)
-       ("r-mzid" ,r-mzid)
-       ("r-mzr" ,r-mzr)
-       ("r-protgenerics" ,r-protgenerics)
-       ("r-purrr" ,r-purrr)
-       ("r-r-cache" ,r-r-cache)
-       ("r-rcpp" ,r-rcpp)
-       ("r-reshape2" ,r-reshape2)
-       ("r-rlang" ,r-rlang)
-       ("r-runit" ,r-runit)
-       ("r-stringr" ,r-stringr)
-       ("r-tibble" ,r-tibble)
-       ("r-xtable" ,r-xtable)))
-    (home-page "https://bioconductor.org/packages/MSnID")
-    (synopsis "Utilities for LC-MSn proteomics identifications")
-    (description
-     "This package extracts @dfn{tandem mass spectrometry} (MS/MS) ID data
-from mzIdentML (leveraging the mzID package) or text files.  After collating
-the search results from multiple datasets it assesses their identification
-quality and optimize filtering criteria to achieve the maximum number of
-identifications while not exceeding a specified false discovery rate.  It also
-contains a number of utilities to explore the MS/MS results and assess missed
-and irregular enzymatic cleavages, mass measurement accuracy, etc.")
-    (license license:artistic2.0)))
-
-(define-public r-aroma-light
-  (package
-    (name "r-aroma-light")
-    (version "3.20.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "aroma.light" version))
-       (sha256
-        (base32
-         "0pi37rlfqh24p9wd7l1xb3f7c7938xdscgcc5agp8c9qhajq25a0"))))
-    (properties `((upstream-name . "aroma.light")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-matrixstats" ,r-matrixstats)
-       ("r-r-methodss3" ,r-r-methodss3)
-       ("r-r-oo" ,r-r-oo)
-       ("r-r-utils" ,r-r-utils)))
-    (home-page "https://github.com/HenrikBengtsson/aroma.light")
-    (synopsis "Methods for normalization and visualization of microarray data")
-    (description
-     "This package provides methods for microarray analysis that take basic
-data types such as matrices and lists of vectors.  These methods can be used
-standalone, be utilized in other packages, or be wrapped up in higher-level
-classes.")
-    (license license:gpl2+)))
-
-(define-public r-deseq
-  (package
-    (name "r-deseq")
-    (version "1.39.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "DESeq" version))
-       (sha256
-        (base32
-         "047hph5aqmjnz1aqprziw0smdn5lf96hmwpnvqrxv1j2yfvcf3h1"))))
-    (properties `((upstream-name . "DESeq")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-genefilter" ,r-genefilter)
-       ("r-geneplotter" ,r-geneplotter)
-       ("r-lattice" ,r-lattice)
-       ("r-locfit" ,r-locfit)
-       ("r-mass" ,r-mass)
-       ("r-rcolorbrewer" ,r-rcolorbrewer)))
-    (home-page "https://www-huber.embl.de/users/anders/DESeq/")
-    (synopsis "Differential gene expression analysis")
-    (description
-     "This package provides tools for estimating variance-mean dependence in
-count data from high-throughput genetic sequencing assays and for testing for
-differential expression based on a model using the negative binomial
-distribution.")
-    (license license:gpl3+)))
-
-(define-public r-edaseq
-  (package
-    (name "r-edaseq")
-    (version "2.24.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "EDASeq" version))
-       (sha256
-        (base32
-         "0fznj7lsgkss1svv4rq8g87s1gmnbd7hccim41dv1c2w2nl0n2ip"))))
-    (properties `((upstream-name . "EDASeq")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-aroma-light" ,r-aroma-light)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocmanager" ,r-biocmanager)
-       ("r-biomart" ,r-biomart)
-       ("r-biostrings" ,r-biostrings)
-       ("r-genomicfeatures" ,r-genomicfeatures)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-shortread" ,r-shortread)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/drisso/EDASeq")
-    (synopsis "Exploratory data analysis and normalization for RNA-Seq")
-    (description
-     "This package provides support for numerical and graphical summaries of
-RNA-Seq genomic read data.  Provided within-lane normalization procedures to
-adjust for GC-content effect (or other gene-level effects) on read counts:
-loess robust local regression, global-scaling, and full-quantile
-normalization.  Between-lane normalization procedures to adjust for
-distributional differences between lanes (e.g., sequencing depth):
-global-scaling and full-quantile normalization.")
-    (license license:artistic2.0)))
-
-(define-public r-interactivedisplaybase
-  (package
-    (name "r-interactivedisplaybase")
-    (version "1.28.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "interactiveDisplayBase" version))
-       (sha256
-        (base32
-         "08id2hkx4ssxj34dildx00a4j3z0nv171b7b0wl6xjks7wk6lv01"))))
-    (properties
-     `((upstream-name . "interactiveDisplayBase")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-dt" ,r-dt)
-       ("r-shiny" ,r-shiny)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/interactiveDisplayBase")
-    (synopsis "Base package for web displays of Bioconductor objects")
-    (description
-     "This package contains the basic methods needed to generate interactive
-Shiny-based display methods for Bioconductor objects.")
-    (license license:artistic2.0)))
-
-(define-public r-annotationhub
-  (package
-    (name "r-annotationhub")
-    (version "2.22.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "AnnotationHub" version))
-       (sha256
-        (base32
-         "08d7m0n4jkpajsj0bvi5xd4vi1zqczl6lnrh8kqi2fbjkrvwdqp5"))))
-    (properties `((upstream-name . "AnnotationHub")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-biocfilecache" ,r-biocfilecache)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocmanager" ,r-biocmanager)
-       ("r-biocversion" ,r-biocversion)
-       ("r-curl" ,r-curl)
-       ("r-dplyr" ,r-dplyr)
-       ("r-httr" ,r-httr)
-       ("r-interactivedisplaybase" ,r-interactivedisplaybase)
-       ("r-rappdirs" ,r-rappdirs)
-       ("r-rsqlite" ,r-rsqlite)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-yaml" ,r-yaml)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/AnnotationHub")
-    (synopsis "Client to access AnnotationHub resources")
-    (description
-     "This package provides a client for the Bioconductor AnnotationHub web
-resource.  The AnnotationHub web resource provides a central location where
-genomic files (e.g. VCF, bed, wig) and other resources from standard
-locations (e.g. UCSC, Ensembl) can be discovered.  The resource includes
-metadata about each resource, e.g., a textual description, tags, and date of
-modification.  The client creates and manages a local cache of files retrieved
-by the user, helping with quick and reproducible access.")
-    (license license:artistic2.0)))
-
-(define-public r-fastseg
-  (package
-    (name "r-fastseg")
-    (version "1.36.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "fastseg" version))
-       (sha256
-        (base32
-         "1ln6w93ag4wanp0nrm0pqngbfc88w95zq2kcj583hbxy885dkg4f"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-s4vectors" ,r-s4vectors)))
-    (home-page "https://www.bioinf.jku.at/software/fastseg/index.html")
-    (synopsis "Fast segmentation algorithm for genetic sequencing data")
-    (description
-     "Fastseg implements a very fast and efficient segmentation algorithm.
-It can segment data from DNA microarrays and data from next generation
-sequencing for example to detect copy number segments.  Further it can segment
-data from RNA microarrays like tiling arrays to identify transcripts.  Most
-generally, it can segment data given as a matrix or as a vector.  Various data
-formats can be used as input to fastseg like expression set objects for
-microarrays or GRanges for sequencing data.")
-    (license license:lgpl2.0+)))
-
-(define-public r-keggrest
-  (package
-    (name "r-keggrest")
-    (version "1.30.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "KEGGREST" version))
-       (sha256
-        (base32
-         "0k9z85xf9la2y98xqmdmjb8mci9fh2fdybkl77x1yl26hyalip0s"))))
-    (properties `((upstream-name . "KEGGREST")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biostrings" ,r-biostrings)
-       ("r-httr" ,r-httr)
-       ("r-png" ,r-png)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://bioconductor.org/packages/KEGGREST")
-    (synopsis "Client-side REST access to KEGG")
-    (description
-     "This package provides a package that provides a client interface to the
-@dfn{Kyoto Encyclopedia of Genes and Genomes} (KEGG) REST server.")
-    (license license:artistic2.0)))
-
-(define-public r-gage
-  (package
-    (name "r-gage")
-    (version "2.40.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "gage" version))
-       (sha256
-        (base32
-         "1bs0hx8sqiyl08dqn2zx31kbv5aci4xvrs71pplx2yxal3jf5178"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-go-db" ,r-go-db)
-       ("r-graph" ,r-graph)
-       ("r-keggrest" ,r-keggrest)))
-    (home-page (string-append "https://bmcbioinformatics.biomedcentral.com/"
-                              "articles/10.1186/1471-2105-10-161"))
-    (synopsis "Generally applicable gene-set enrichment for pathway analysis")
-    (description
-     "GAGE is a published method for gene set (enrichment or GSEA) or pathway
-analysis.  GAGE is generally applicable independent of microarray or RNA-Seq
-data attributes including sample sizes, experimental designs, assay platforms,
-and other types of heterogeneity.  The gage package provides functions for
-basic GAGE analysis, result processing and presentation.  In addition, it
-provides demo microarray data and commonly used gene set data based on KEGG
-pathways and GO terms.  These functions and data are also useful for gene set
-analysis using other methods.")
-    (license license:gpl2+)))
-
-(define-public r-genomicfiles
-  (package
-    (name "r-genomicfiles")
-    (version "1.26.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "GenomicFiles" version))
-       (sha256
-        (base32
-         "0awnf0m1pz7cw9wvh9cfxz9k7xm6wnvjm7xbxf139lrhd4nlyqjz"))))
-    (properties `((upstream-name . "GenomicFiles")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocparallel" ,r-biocparallel)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-matrixgenerics" ,r-matrixgenerics)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-summarizedexperiment" ,r-summarizedexperiment)
-       ("r-variantannotation" ,r-variantannotation)))
-    (home-page "https://bioconductor.org/packages/GenomicFiles")
-    (synopsis "Distributed computing by file or by range")
-    (description
-     "This package provides infrastructure for parallel computations
-distributed by file or by range.  User defined mapper and reducer functions
-provide added flexibility for data combination and manipulation.")
-    (license license:artistic2.0)))
-
-(define-public r-complexheatmap
-  (package
-    (name "r-complexheatmap")
-    (version "2.6.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "ComplexHeatmap" version))
-       (sha256
-        (base32
-         "1nx1xxpq8zrvi990v9fmvx3msl85pdz5dp1gp6m78q6i4s2alg5x"))))
-    (properties
-     `((upstream-name . "ComplexHeatmap")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-cairo" ,r-cairo)
-       ("r-circlize" ,r-circlize)
-       ("r-clue" ,r-clue)
-       ("r-colorspace" ,r-colorspace)
-       ("r-digest" ,r-digest)
-       ("r-getoptlong" ,r-getoptlong)
-       ("r-globaloptions" ,r-globaloptions)
-       ("r-iranges" ,r-iranges)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-png" ,r-png)
-       ("r-rcolorbrewer" ,r-rcolorbrewer)
-       ("r-s4vectors" ,r-s4vectors)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page
-     "https://github.com/jokergoo/ComplexHeatmap")
-    (synopsis "Making Complex Heatmaps")
-    (description
-     "Complex heatmaps are efficient to visualize associations between
-different sources of data sets and reveal potential structures.  This package
-provides a highly flexible way to arrange multiple heatmaps and supports
-self-defined annotation graphics.")
-    (license license:gpl2+)))
-
-(define-public r-dirichletmultinomial
-  (package
-    (name "r-dirichletmultinomial")
-    (version "1.32.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "DirichletMultinomial" version))
-       (sha256
-        (base32
-         "098zql6ryd1b0gkq4cjybblyh0x8xidxxfygqq5a5x9asl8y4vsk"))))
-    (properties
-     `((upstream-name . "DirichletMultinomial")))
-    (build-system r-build-system)
-    (inputs
-     `(("gsl" ,gsl)))
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-iranges" ,r-iranges)
-       ("r-s4vectors" ,r-s4vectors)))
-    (home-page "https://bioconductor.org/packages/DirichletMultinomial")
-    (synopsis "Dirichlet-Multinomial mixture models for microbiome data")
-    (description
-     "Dirichlet-multinomial mixture models can be used to describe variability
-in microbial metagenomic data.  This package is an interface to code
-originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
-1-15.")
-    (license license:lgpl3)))
-
-(define-public r-ensembldb
-  (package
-    (name "r-ensembldb")
-    (version "2.14.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "ensembldb" version))
-       (sha256
-        (base32
-         "1hxwfh19qafpdhzprvw4nr8ks3gz7f0y8gyfhk8yqmmvvnvgqv40"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-annotationfilter" ,r-annotationfilter)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-curl" ,r-curl)
-       ("r-dbi" ,r-dbi)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicfeatures" ,r-genomicfeatures)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-protgenerics" ,r-protgenerics)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rsqlite" ,r-rsqlite)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))
-    (home-page "https://github.com/jotsetung/ensembldb")
-    (synopsis "Utilities to create and use Ensembl-based annotation databases")
-    (description
-     "The package provides functions to create and use transcript-centric
-annotation databases/packages.  The annotation for the databases are directly
-fetched from Ensembl using their Perl API.  The functionality and data is
-similar to that of the TxDb packages from the @code{GenomicFeatures} package,
-but, in addition to retrieve all gene/transcript models and annotations from
-the database, the @code{ensembldb} package also provides a filter framework
-allowing to retrieve annotations for specific entries like genes encoded on a
-chromosome region or transcript models of lincRNA genes.")
-    ;; No version specified
-    (license license:lgpl3+)))
-
-(define-public r-organismdbi
-  (package
-    (name "r-organismdbi")
-    (version "1.32.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "OrganismDbi" version))
-       (sha256
-        (base32
-         "1mklnzs0d0ygcdibwfnk5xqr8ln6wpa00qcaw9c68m342kql0jqw"))))
-    (properties `((upstream-name . "OrganismDbi")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biocmanager" ,r-biocmanager)
-       ("r-dbi" ,r-dbi)
-       ("r-genomicfeatures" ,r-genomicfeatures)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-graph" ,r-graph)
-       ("r-iranges" ,r-iranges)
-       ("r-rbgl" ,r-rbgl)
-       ("r-s4vectors" ,r-s4vectors)))
-    (home-page "https://bioconductor.org/packages/OrganismDbi")
-    (synopsis "Software to enable the smooth interfacing of database packages")
-    (description "The package enables a simple unified interface to several
-annotation packages each of which has its own schema by taking advantage of
-the fact that each of these packages implements a select methods.")
-    (license license:artistic2.0)))
-
-(define-public r-biovizbase
-  (package
-    (name "r-biovizbase")
-    (version "1.38.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "biovizBase" version))
-       (sha256
-        (base32
-         "10jflvadfcgxq2jnfxkpn417xd8ibh3zllz9rsqnq5w3wgfr4fhq"))))
-    (properties `((upstream-name . "biovizBase")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-annotationfilter" ,r-annotationfilter)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-dichromat" ,r-dichromat)
-       ("r-ensembldb" ,r-ensembldb)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicfeatures" ,r-genomicfeatures)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-hmisc" ,r-hmisc)
-       ("r-iranges" ,r-iranges)
-       ("r-rcolorbrewer" ,r-rcolorbrewer)
-       ("r-rlang" ,r-rlang)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-scales" ,r-scales)
-       ("r-summarizedexperiment" ,r-summarizedexperiment)
-       ("r-variantannotation" ,r-variantannotation)))
-    (home-page "https://bioconductor.org/packages/biovizBase")
-    (synopsis "Basic graphic utilities for visualization of genomic data")
-    (description
-     "The biovizBase package is designed to provide a set of utilities, color
-schemes and conventions for genomic data.  It serves as the base for various
-high-level packages for biological data visualization.  This saves development
-effort and encourages consistency.")
-    (license license:artistic2.0)))
-
 (define-public r-dropbead
   (let ((commit "d746c6f3b32110428ea56d6a0001ce52a251c247")
         (revision "2"))
@@ -10549,13 +9089,13 @@ browser.")
         (revision "1"))
     (package
       (name "f-seq")
-      (version (string-append "1.1-" revision "." (string-take commit 7)))
+      (version (git-version "1.1" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/aboyle/F-seq")
                       (commit commit)))
-                (file-name (string-append name "-" version))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1nk33k0yajg2id4g59bc4szr58r2q6pdq42vgcw054m8ip9wv26h"))
@@ -10613,7 +9153,7 @@ Browser.")
        (uri (git-reference
              (url "https://github.com/FelixKrueger/Bismark")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "0xchm3rgilj6vfjnyzfzzymfd7djr64sbrmrvs3njbwi66jqbzw9"))))
@@ -11753,7 +10293,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
 (define-public pigx-rnaseq
   (package
     (name "pigx-rnaseq")
-    (version "0.0.10")
+    (version "0.0.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
@@ -11761,7 +10301,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
                                   "/pigx_rnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "0z3hr120wk2vrlmlpz1vp3n9wy3rq4y2mnzh2vf08qgqn2xfdwcw"))))
+                "0z9zid2c8q16lfzlnjd63nparknhv31qgv4h79algmvhkakm2pgk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-tests? #f             ; not supported
@@ -11771,19 +10311,17 @@ once.  This package provides tools to perform Drop-seq analyses.")
          (add-after 'unpack 'disable-resource-intensive-test
            (lambda _
              (substitute* "Makefile.in"
-               (("(^  tests/test_trim_galore/test.sh).*" _ m) m)
                (("^  tests/test_multiqc/test.sh") "")
-               (("^  test.sh") ""))
-             #t)))))
+               (("^  test.sh") "")))))))
     (inputs
      `(("coreutils" ,coreutils)
        ("sed" ,sed)
        ("gzip" ,gzip)
        ("snakemake" ,snakemake)
-       ("fastqc" ,fastqc)
        ("multiqc" ,multiqc)
        ("star" ,star-for-pigx)
-       ("trim-galore" ,trim-galore)
+       ("hisat2" ,hisat2)
+       ("fastp" ,fastp)
        ("htseq" ,htseq)
        ("samtools" ,samtools)
        ("r-minimal" ,r-minimal)
@@ -12032,6 +10570,54 @@ and interactive quality reports.  The pipeline is designed to work with UMI
 based methods.")
     (license license:gpl3+)))
 
+(define-public pigx-sars-cov2-ww
+  (package
+    (name "pigx-sars-cov2-ww")
+    (version "0.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/BIMSBbioinfo/pigx_sarscov2_ww/"
+                                  "releases/download/v" version
+                                  "/pigx_sars-cov2-ww-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1h1rfl3dyf7pid74xxgiyr4x1l5yj000wcz5crm1bdbaz8p7b7ic"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bash-minimal" ,bash-minimal)
+       ("bwa" ,bwa)
+       ("ensembl-vep" ,ensembl-vep)
+       ("fastqc" ,fastqc)
+       ("kraken2" ,kraken2)
+       ("krona-tools" ,krona-tools)
+       ("lofreq" ,lofreq)
+       ("multiqc" ,multiqc)
+       ("prinseq" ,prinseq)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-wrapper" ,python-wrapper)
+       ("r-base64url" ,r-base64url)
+       ("r-dplyr" ,r-dplyr)
+       ("r-dt" ,r-dt)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-magrittr" ,r-magrittr)
+       ("r-minimal" ,r-minimal)
+       ("r-plotly" ,r-plotly)
+       ("r-qpcr" ,r-qpcr)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("r-stringr" ,r-stringr)
+       ("r-tidyr" ,r-tidyr)
+       ("samtools" ,samtools)
+       ("snakemake" ,snakemake)))
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
+    (synopsis "Analysis pipeline for wastewater sequencing")
+    (description "PiGx SARS-CoV-2 is a pipeline for analysing data from
+sequenced wastewater samples and identifying given variants-of-concern of
+SARS-CoV-2.  The pipeline can be used for continuous sampling.  The output
+report will provide an intuitive visual overview about the development of
+variant abundance over time and location.")
+    (license license:gpl3+)))
+
 (define-public pigx
   (package
     (name "pigx")
@@ -12190,7 +10776,7 @@ version does count multisplits.")
 (define-public minimap2
   (package
     (name "minimap2")
-    (version "2.17")
+    (version "2.18")
     (source
      (origin
        (method url-fetch)
@@ -12199,11 +10785,13 @@ version does count multisplits.")
                            "minimap2-" version ".tar.bz2"))
        (sha256
         (base32
-         "0hi7i9pzxhvjj44khzzzj1lrn5gb5837arr4wgln7k1k5n4ci2mn"))
-       (patches (search-patches "minimap2-aarch64-support.patch"))))
+         "1d7fvdqcqd6wns875rkyd7f34ii15gc9l1sivd2wbbpcb0fi0mbs"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are none
+       #:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (srfi srfi-26))
        #:make-flags
        (list (string-append "CC=" ,(cc-for-target))
              (let ((system ,(or (%current-target-system)
@@ -12226,10 +10814,30 @@ version does count multisplits.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin"))
+                    (lib (string-append out "/lib"))
+                    (inc (string-append out "/include"))
                     (man (string-append out "/share/man/man1")))
                (install-file "minimap2" bin)
-               (mkdir-p man)
-               (install-file "minimap2.1" man))
+               (install-file "libminimap2.a" lib)
+               (install-file "minimap2.1" man)
+               (map (cut install-file <> inc)
+                    (find-files "." "\\.h$"))
+               ;; Not this file.
+               (delete-file (string-append inc "/emmintrin.h"))
+               (mkdir-p (string-append lib "/pkgconfig"))
+               (with-output-to-file (string-append lib "/pkgconfig/minimap2.pc")
+                (lambda _
+                  (format #t "prefix=~a~@
+                          exec_prefix=${prefix}~@
+                          libdir=${exec_prefix}/lib~@
+                          includedir=${prefix}/include~@
+                          ~@
+                          Name: libminimap2~@
+                          Version: ~a~@
+                          Description: A versatile pairwise aligner for genomic and spliced nucleotide sequence~@
+                          Libs: -L${libdir} -lminimap2~@
+                          Cflags: -I${includedir}~%"
+                          out ,version))))
              #t)))))
     (inputs
      `(("zlib" ,zlib)))
@@ -12346,6 +10954,96 @@ contigs alone.")
     (license (list license:gpl2+        ; bundled ogdf
                    license:gpl3+))))
 
+(define-public libmaus2
+  (package
+    (name "libmaus2")
+    (version "2.0.786")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/german.tischler/libmaus2")
+                    (commit (string-append version "-release-20210531143054"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rxakmwjcx2yq5sjh3v849f7dfw4xzc2fyzf6s28s3p95z84w564"))))
+    (build-system gnu-build-system)
+    ;; The test suite attempts to execute ../test-driver, which does not exist.
+    (arguments '(#:tests? #false))
+    (propagated-inputs
+     `(("zlib" ,zlib)))
+    (native-inputs
+     `(("gcc" ,gcc-10)                   ;Code has C++17 requirements
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gitlab.com/german.tischler/libmaus2")
+    (synopsis "Collection of data structures and algorithms useful for bioinformatics")
+    (description "libmaus2 is a collection of data structures and
+algorithms.  It contains:
+
+@itemize
+@item I/O classes (single byte and UTF-8);
+@item @code{bitio} classes (input, output and various forms of bit level
+  manipulation);
+@item text indexing classes (suffix and LCP array, fulltext and minute (FM),
+  etc.);
+@item BAM sequence alignment files input/output (simple and collating);
+and many lower level support classes.
+@end itemize\n")
+    ;; The code is explicitly available under the terms of either GPLv2 or
+    ;; GPLv3 according to the AUTHORS file, though most files have a GPLv3+
+    ;; license header.
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public biobambam2
+  (package
+    (name "biobambam2")
+    (version "2.0.182")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/german.tischler/biobambam2")
+                    (commit (string-append version "-release-20210412001032"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0b7w7a2a7hpkgrdn0n7hy4pilzrj82zqrh7q4bg1l0cd6bqr60m5"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; The test suite attempts to execute ../test-driver, which does not exist.
+     `(#:tests? #false
+       #:configure-flags
+       (list (string-append "--with-libmaus2="
+                            (assoc-ref %build-inputs "libmaus2")))))
+    (inputs
+     `(("libmaus2" ,libmaus2)
+       ("xerces-c" ,xerces-c)))
+    (native-inputs
+     `(("gcc" ,gcc-10)                  ;Code has C++17 requirements
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gitlab.com/german.tischler/biobambam2")
+    (synopsis "Tools for processing BAM files")
+    (description "This package contains some tools for processing BAM files
+including:
+
+@itemize
+@item bamsormadup: parallel sorting and duplicate marking
+@item bamcollate2: reads BAM and writes BAM reordered such that alignment or
+  collated by query name
+@item bammarkduplicates: reads BAM and writes BAM with duplicate alignments
+  marked using the BAM flags field
+@item bammaskflags: reads BAM and writes BAM while masking (removing) bits
+  from the flags column
+@item bamrecompress: reads BAM and writes BAM with a defined compression
+  setting.  This tool is capable of multi-threading.
+@item bamsort: reads BAM and writes BAM resorted by coordinates or query name
+@item bamtofastq: reads BAM and writes FastQ; output can be collated or
+  uncollated by query name.
+@end itemize
+")
+    ;; The COPYING file states that the code is distributed under version 3 of
+    ;; the GPL, but the license headers include the "or later" clause.
+    (license license:gpl3+)))
+
 (define-public r-circus
   (package
     (name "r-circus")
@@ -12501,17 +11199,80 @@ spliced (back-spliced) sequencing reads, indicative of circular RNA (circRNA)
 in RNA-seq data.")
       (license license:gpl3))))
 
+(define-public fit-sne
+  (package
+    (name "fit-sne")
+    (version "1.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KlugerLab/FIt-SNE")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1imq4577awc226wvygf94kpz156qdfw8xl0w0f7ss4w10lhmpmf5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #false ; there are none
+       #:phases
+       ;; There is no build system.
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "g++" "-std=c++11" "-O3"
+                     "src/sptree.cpp"
+                     "src/tsne.cpp"
+                     "src/nbodyfft.cpp"
+                     "-o" "bin/fast_tsne"
+                     "-pthread" "-lfftw3" "-lm"
+                     "-Wno-address-of-packed-member")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (share (string-append out "/share/fit-sne")))
+               (for-each (lambda (file) (install-file file bin))
+                         (find-files "bin"))
+
+               (substitute* "fast_tsne.R"
+                 (("^FAST_TSNE_SCRIPT_DIR.*")
+                  (string-append "FAST_TSNE_SCRIPT_DIR = \"" out "\"\n")))
+               (install-file "fast_tsne.R" share)))))))
+    (inputs
+     `(("fftw" ,fftw)))
+    (home-page "https://github.com/KlugerLab/FIt-SNE")
+    (synopsis "Fast Fourier Transform-accelerated interpolation-based t-SNE")
+    (description "@dfn{t-Stochastic Neighborhood Embedding} (t-SNE) is a
+method for dimensionality reduction and visualization of high dimensional
+datasets.  A popular implementation of t-SNE uses the Barnes-Hut algorithm to
+approximate the gradient at each iteration of gradient descent.  This
+implementation differs in these ways:
+
+@itemize
+@item Instead of approximating the N-body simulation using Barnes-Hut, we
+  interpolate onto an equispaced grid and use FFT to perform the convolution.
+@item Instead of computing nearest neighbors using vantage-point trees, we
+  approximate nearest neighbors using the Annoy library.  The neighbor lookups
+  are multithreaded to take advantage of machines with multiple cores.
+@end itemize
+")
+    ;; See LICENSE.txt for details on what license applies to what files.
+    (license (list license:bsd-4 license:expat license:asl2.0))))
+
 (define-public python-scanpy
   (package
     (name "python-scanpy")
-    (version "1.4.6")
+    (version "1.7.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scanpy" version))
        (sha256
         (base32
-         "0s2b6cvaigx4wzw3850qb93sjwwxbzh22kpbp498zklc5rjpbz4l"))))
+         "0c66adnfizsyk0h8bv2yhmay876z0klpxwpn4z6m71wly7yplpmd"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -12522,12 +11283,28 @@ in RNA-seq data.")
              (delete-file-recursively "scanpy/tests/notebooks")
              (delete-file "scanpy/tests/test_clustering.py")
              (delete-file "scanpy/tests/test_datasets.py")
+             (delete-file "scanpy/tests/test_highly_variable_genes.py")
 
              ;; TODO: I can't get the plotting tests to work, even with Xvfb.
              (delete-file "scanpy/tests/test_plotting.py")
              (delete-file "scanpy/tests/test_preprocessing.py")
              (delete-file "scanpy/tests/test_read_10x.py")
 
+             ;; The following tests need anndata.tests, which aren't included
+             ;; in the final python-anndata package.
+             (delete-file "scanpy/tests/test_combat.py")
+             (delete-file "scanpy/tests/test_embedding_plots.py")
+             (delete-file "scanpy/tests/test_normalization.py")
+             (delete-file "scanpy/tests/test_pca.py")
+             (delete-file "scanpy/tests/external/test_scrublet.py")
+
+             ;; The following tests requires 'scanorama', which isn't
+             ;; packaged yet.
+             (delete-file "scanpy/tests/external/test_scanorama_integrate.py")
+
+             (setenv "PYTHONPATH"
+                     (string-append (getcwd) ":"
+                                    (getenv "PYTHONPATH")))
              (invoke "pytest"))))))
     (propagated-inputs
      `(("python-anndata" ,python-anndata)
@@ -12548,11 +11325,14 @@ in RNA-seq data.")
        ("python-seaborn" ,python-seaborn)
        ("python-statsmodels" ,python-statsmodels)
        ("python-tables" ,python-tables)
+       ("python-pytoml" ,python-pytoml)
        ("python-tqdm" ,python-tqdm)
        ("python-umap-learn" ,python-umap-learn)))
     (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-setuptools-scm" ,python-setuptools-scm)))
+     `(("python-leidenalg" ,python-leidenalg)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-sinfo" ,python-sinfo)))
     (home-page "https://github.com/theislab/scanpy")
     (synopsis "Single-Cell Analysis in Python.")
     (description "Scanpy is a scalable toolkit for analyzing single-cell gene
@@ -12874,15 +11654,39 @@ fasta subsequences.")
 (define-public python-cooler
   (package
     (name "python-cooler")
-    (version "0.8.7")
+    (version "0.8.11")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cooler" version))
        (sha256
         (base32
-         "01g6gqix9ba27sappz6nfyiwabzrlf8i5fn8kwcz8ra356cq9crp"))))
+         "1i96fmpsimj4wrx51rxn8lw2gqxf5a2pvrj5rwdd6ivnm3pmhyrn"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             (substitute* "tests/test_create.py"
+              (("def test_roundtrip")
+                 (string-append "@pytest.mark.skip(reason=\"requires network "
+                                "access to genome.ucsc.edu\")\n"
+                                "def test_roundtrip")))
+             (substitute* "tests/test_util.py"
+              (("def test_fetch_chromsizes")
+                 (string-append "@pytest.mark.skip(reason=\"requires network "
+                                "access to genome.ucsc.edu\")\n"
+                                "def test_fetch_chromsizes")))
+             ;; This test depends on ipytree, which contains a lot of minified
+             ;; JavaScript.
+             (substitute* "tests/test_fileops.py"
+               (("def test_print_trees")
+                "def _test_print_trees"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "python" "-m" "pytest" "-v")))))))
     (propagated-inputs
      `(("python-asciitree" ,python-asciitree)
        ("python-biopython" ,python-biopython)
@@ -12898,11 +11702,17 @@ fasta subsequences.")
        ("python-pysam" ,python-pysam)
        ("python-pyyaml" ,python-pyyaml)
        ("python-scipy" ,python-scipy)
-       ("python-simplejson" ,python-simplejson)))
+       ("python-simplejson" ,python-simplejson)
+       ("python-six" ,python-six)
+       ("python-sparse" ,python-sparse)))
     (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)))
-    (home-page "https://github.com/mirnylab/cooler")
+     `(("python-codecov" ,python-codecov)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-flake8" ,python-pytest-flake8)))
+    ;; Almost all the projects of the Mirnylab are moved under Open2C umbrella
+    (home-page "https://github.com/open2c/cooler")
     (synopsis "Sparse binary format for genomic interaction matrices")
     (description
      "Cooler is a support library for a sparse, compressed, binary persistent
@@ -14701,7 +13511,7 @@ manipulations on VCF files.")
 (define-public freebayes
   (package
     (name "freebayes")
-    (version "1.3.3")
+    (version "1.3.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -14709,8 +13519,7 @@ manipulations on VCF files.")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "0myz3giad7jqp6ricdfnig9ymlcps2h67mlivadvx97ngagm85z8"))
-              (patches (search-patches "freebayes-devendor-deps.patch"))
+               (base32 "1l0z88gq57kva677a6xri5g9k2d9h9lk5yk1q2xmq64wqhv7dvc3"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -14722,8 +13531,7 @@ manipulations on VCF files.")
        ("htslib" ,htslib)
        ("smithwaterman" ,smithwaterman)
        ("tabixpp" ,tabixpp)
-       ("vcflib" ,vcflib)
-       ("zlib" ,zlib)))
+       ("vcflib" ,vcflib)))
     (native-inputs
      `(("bash-tap" ,bash-tap)
        ("bc" ,bc)
@@ -14756,13 +13564,13 @@ manipulations on VCF files.")
                   (string-append bash-tap "/bin/bash-tap-bootstrap"))
                  (("source.*bash-tap-bootstrap")
                   (string-append "source " bash-tap "/bin/bash-tap-bootstrap")))
-               (substitute* "meson.build"
-                  ;; Some inputs aren't actually needed.
-                 ((".*bamtools/src.*") "")
-                 ((".*multichoose.*") ""))
                (substitute* '("src/BedReader.cpp"
                               "src/BedReader.h")
                  (("../intervaltree/IntervalTree.h") "IntervalTree.h"))
+               (substitute* "meson.build"
+                 ;; Our pkg-config file is vcflib.pc
+                 (("libvcflib") "vcflib")
+                 (("vcflib_inc,") ""))
                #t)))
          (add-after 'unpack 'unpack-submodule-sources
            (lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 4e82da869e..739870dc77 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -431,6 +431,7 @@ a multi-paradigm automated test framework for C++ and Objective-C.")
               (uri (git-reference
                     (url "git://git.liw.fi/cmdtest/")
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1yhcwsqcpckkq5kw3h07k0xg6infyiyzq9ni3nqphrzxis7hxjf1"))))
@@ -697,8 +698,8 @@ generation.")
     (license license:bsd-3)))
 
 (define-public googletest-1.8
-  (package/inherit
-   googletest
+  (package
+    (inherit googletest)
    (version "1.8.1")
    (source (origin
              (method git-fetch)
@@ -1144,8 +1145,8 @@ contacting the real http server.")
 ;; python-bleach 3.1.0 requires this ancient version of pytest-runner.
 ;; Remove once no longer needed.
 (define-public python-pytest-runner-2
-  (package/inherit
-   python-pytest-runner
+  (package
+    (inherit python-pytest-runner)
    (version "2.12.2")
    (source (origin
              (method url-fetch)
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index f06767f305..6a98867cc8 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -163,6 +163,7 @@
     "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
     "third_party/googletest" ;BSD-3
     "third_party/harfbuzz-ng" ;Expat
+    "third_party/highway" ;ASL2.0
     "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
     "third_party/iccjpeg" ;IJG
     "third_party/inspector_protocol" ;BSD-3
@@ -179,6 +180,7 @@
     "third_party/libaom/source/libaom/third_party/fastfeat" ;BSD-3
     "third_party/libaom/source/libaom/third_party/vector" ;Expat
     "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
+    "third_party/libjxl" ;ASL2.0
     "third_party/libgav1" ;ASL2.0
     "third_party/libgifcodec" ;MPL1.1/GPL2+/LGPL2.1+, BSD-3, BSD-2
     "third_party/libjingle_xmpp" ;BSD-3
@@ -239,7 +241,6 @@
     "third_party/rnnoise" ;BSD-3
     "third_party/ruy" ;ASL2.0
     "third_party/s2cellid" ;ASL2.0
-    "third_party/schema_org" ;CC-BY-SA3.0
     "third_party/securemessage" ;ASL2.0
     "third_party/shell-encryption" ;ASL2.0
     "third_party/skia" ;BSD-3
@@ -274,6 +275,7 @@
     "third_party/wayland-protocols" ;Expat
     "third_party/web-animations-js" ;ASL2.0
     "third_party/webdriver" ;ASL2.0
+    "third_party/webgpu-cts" ;BSD-3
     "third_party/webrtc" ;BSD-3
     "third_party/webrtc/common_audio/third_party/ooura" ;Non-copyleft
     "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
@@ -320,14 +322,14 @@
                   (string-append "ungoogled-chromium-" category "-" name))))
     (sha256 (base32 hash))))
 
-(define %chromium-version "90.0.4430.212")
+(define %chromium-version "91.0.4472.77")
 (define %debian-revision "debian/90.0.4430.85-1")
-(define %ungoogled-revision "90.0.4430.85-1-11-g3184907")
+;; Note: use 'git describe --long' even for exact tags to placate the
+;; custom version format for ungoogled-chromium.
+(define %ungoogled-revision "91.0.4472.77-1-0-g6802c88")
 
 (define %debian-patches
-  (list (debian-patch "fixes/missing-includes.patch"
-                      "1f0drxp1cy76g71rkkzxxbwixn03yn9b0q22vb0mb6h2qk6cw92q")
-        (debian-patch "fixes/nomerge.patch"
+  (list (debian-patch "fixes/nomerge.patch"
                       "0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3")
         (debian-patch "system/nspr.patch"
                       "1gdirn1k1i841l8zp8xgr95kl16b5nx827am9rcxj8sfkm8hgkn3")
@@ -344,7 +346,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "18xfwgkw3xarxcgnzvyv70h4icyqh3k8lfx6fvhp7fsr6x20sai0"))))
+      "1jfmmkw1y4rcjfgsm7b4v2lrgd3sks5qpajvq0djflbhkpsqxfk0"))))
 
 (define %guix-patches
   (list (local-file
@@ -399,6 +401,11 @@
 
           (format #t "Replacing GN files...~%")
           (force-output)
+          ;; XXX: Chromium no longer relies on overriding ICU's UCHAR_TYPE,
+          ;; but the unbundling code was not updated.  Remove for M92.
+          (substitute* "build/linux/unbundle/icu.gn"
+            (("\"UCHAR_TYPE=uint16_t\",")
+             ""))
           (substitute* "tools/generate_shim_headers/generate_shim_headers.py"
             ;; The "is_official_build" configure option enables certain
             ;; release optimizations like those used in the commercial
@@ -481,7 +488,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "17nmhrkl81qqvzbh861k2mmifncx4wg1mv1fmn52f8gzn461vqdb"))
+                "0c8vj3gq3nmb7ssiwj6875g0a8hcprss1a4gqw9h7llqywza9ma5"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -630,6 +637,12 @@
                (("include \"third_party/lcms/include/lcms2\\.h\"")
                 "include \"lcms2.h\""))
 
+             ;; Add missing include statement.
+             (substitute* "third_party/pdfium/core/fxcodec/png/png_decoder.cpp"
+               (("#include \"core/fxcodec/fx_codec.h\"" all)
+                (string-append all
+                               "\n#include \"core/fxcodec/fx_codec_def.h\"")))
+
              (substitute*
                  "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
                (("include \"third_party/curl")
@@ -852,7 +865,7 @@
        ("glib" ,glib)
        ("gtk+" ,gtk+)
        ("harfbuzz" ,harfbuzz)
-       ("icu4c" ,icu4c-68)
+       ("icu4c" ,icu4c-69)
        ("lcms" ,lcms)
        ("libevent" ,libevent)
        ("libffi" ,libffi)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 62f197c2f9..e3918fb724 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -73,8 +73,8 @@
                 (file-name (string-append name "-" version "-checkout")))))))
 
 (define-public cuirass
-  (let ((commit "31fd4d4fe107d86f5e202510e177726a1f49e828")
-        (revision "17"))
+  (let ((commit "21202760c0d15c99b69ef235ff129ab9cb478186")
+        (revision "25"))
     (package
       (name "cuirass")
       (version (git-version "1.0.0" revision commit))
@@ -87,7 +87,7 @@
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "08phqr0sfi6hkzrqhqsh9ri9434sd41qg1b5vijbadgsj1ql33rw"))))
+           "1bzzycz7jmmrph730p8d3q2h76ab6i8j72wblm3w0szf8vimcqfk"))))
       (build-system gnu-build-system)
       (arguments
        `(#:modules ((guix build utils)
@@ -141,7 +141,7 @@
                       (guix   (assoc-ref inputs "guix"))
                       (deps   (list avahi gcrypt json zmq squee git bytes
                                     fibers zlib matd tls mail guix))
-                      (guile  (assoc-ref %build-inputs "guile"))
+                      (guile  (assoc-ref inputs "guile"))
                       (effective
                        (read-line
                         (open-pipe* OPEN_READ
diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 01996591c7..e643cc58f9 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021 Dion Mendel <guix@dm9.info>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls))
 
@@ -186,7 +188,7 @@ independently or together to provide resilient infrastructures.")
 (define-public libraft
   (package
     (name "libraft")
-    (version "0.9.11")
+    (version "0.10.1")
     (home-page "https://github.com/canonical/raft")
     (source (origin
               (method git-fetch)
@@ -195,7 +197,7 @@ independently or together to provide resilient infrastructures.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "00rsq4z9nykmf7r5rlpv1y6bvckcmg3zv57vh1h681y5pij6cch1"))))
+                "18idj53vnl5fx1ja1zlp8kiwmdxgwjxsi88rdql0pbh0484b92a3"))))
     (arguments '(#:configure-flags '("--enable-uv")
                  #:phases
                  (modify-phases %standard-phases
@@ -220,3 +222,42 @@ that, a pluggable interface defines the I/O implementation for networking
 (send/receive RPC messages) and disk persistence (store log entries and
 snapshots).")
     (license license:asl2.0)))
+
+(define-public libdqlite
+  (package
+    (name "libdqlite")
+    (version "1.7.0")
+    (home-page "https://github.com/canonical/dqlite")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "15cg8yl3n7lcg0qyg0byciz8v6y200ghmzzkwpdzggy3m6c168wl"))))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           (lambda _
+             (substitute* "Makefile.am"
+               ;; Test client/query sometimes fails.
+               ;; The actual tested asserts succeed, but there appears to be a
+               ;; race condition when tearing down the test server.
+               ((".*test_client.c.*") "")))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libraft" ,libraft)
+       ("libuv" ,libuv)))
+    (propagated-inputs
+     `(("sqlite" ,sqlite)))  ; dqlite.h includes sqlite3.h
+    (build-system gnu-build-system)
+    (synopsis "Distributed SQLite")
+    (description "dqlite is a C library that implements an embeddable and replicated
+SQL database engine with high-availability and automatic failover.")
+    (license license:lgpl3)))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 64816a30c0..cc91bcfaa4 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -864,7 +864,15 @@ time for compression ratio.")
                                   "squashfs" version ".tar.gz"))
               (sha256
                (base32
-                "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))))
+                "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Fix build with -fno-common (default in GCC 10).
+                  ;; Remove for squashfs-tools > 4.4.
+                  (substitute* "squashfs-tools/mksquashfs.h"
+                    (("struct cache \\*bwriter_buffer" all)
+                     (string-append "extern " all)))))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -1008,7 +1016,7 @@ tarballs.")
 (define-public libjcat
   (package
     (name "libjcat")
-    (version "0.1.7")
+    (version "0.1.8")
     (source
      (origin
        (method git-fetch)
@@ -1018,7 +1026,7 @@ tarballs.")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "110c8h3p7m4ibrfvgja592z7j5h88qqanllxsvmxkjz3b129i02r"))))
+        (base32 "18qkyg19r7fxzv93kar5n808n3582ygjmqwa7rnyg5y4b6hnwihl"))))
     (build-system meson-build-system)
     (native-inputs
      `(("gobject-introspection" ,gobject-introspection)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 8709cd21fa..2e7e9041c6 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -33,7 +33,6 @@
 ;;; Copyright © 2020 Magali Lemes <magalilemes00@gmail.com>
 ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2020 Aniket Patil <aniket112.patil@gmail.com>
-;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -351,6 +350,54 @@ easier.")
 for authoring journal articles and conference submissions.")
     (license license:gpl3)))
 
+(define-public r-benchmarkmedata
+  (package
+    (name "r-benchmarkmedata")
+    (version "1.0.4")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "benchmarkmeData" version))
+              (sha256
+               (base32
+                "1n4vjkagqlm6kw2hilf4gjfcdjad0bcg652j9nl2ygbq3kdnh1vf"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-tibble" ,r-tibble)))
+    (home-page "https://github.com/csgillespie/benchmarkme-data")
+    (synopsis "Data set for the @code{benchmarkme} package")
+    (description "This package contains the data set for the crowd-sourced
+benchmarks from running the @code{benchmarkme} package.")
+    (license license:gpl2+)))
+
+(define-public r-benchmarkme
+  (package
+    (name "r-benchmarkme")
+    (version "1.0.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "benchmarkme" version))
+              (sha256
+               (base32
+                "0ymgsxzrvnpyvs0cff09d3lrkl12qyqx5bwammsc4vgl5ng9p69p"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (propagated-inputs
+     `(("r-benchmarkmedata" ,r-benchmarkmedata)
+       ("r-doparallel" ,r-doparallel)
+       ("r-dplyr" ,r-dplyr)
+       ("r-foreach" ,r-foreach)
+       ("r-httr" ,r-httr)
+       ("r-matrix" ,r-matrix)
+       ("r-tibble" ,r-tibble)))
+    (home-page "https://csgillespie.github.io/benchmarkme/")
+    (synopsis "Crowd-sourced system benchmarks")
+    (description "This package provides functionality to benchmark your CPU
+and compare against other CPUs.  Also provides functions for obtaining system
+specifications, such as RAM, CPU type, and R version.")
+    (license license:gpl2+)))
+
 (define-public r-bezier
   (package
     (name "r-bezier")
@@ -671,6 +718,28 @@ provides methods for automatically determining breaks and labels for axes and
 legends.")
     (license license:expat)))
 
+(define-public r-pacman
+  (package
+    (name "r-pacman")
+    (version "0.5.1")
+    (source (origin
+             (method url-fetch)
+             (uri (cran-uri "pacman" version))
+             (sha256
+              (base32
+               "0z7gngd6h83cpjhq1vg75wvzhdjbgjh7gj5d4zvvi9gd2lmagjcy"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-remotes" ,r-remotes)))
+    (home-page "https://github.com/trinker/pacman")
+    (synopsis "Package Management Tool")
+    (description "This package provides tools to more conveniently perform
+tasks associated with add-on packages.  @code{pacman} conveniently wraps
+library and package related functions and names them in an intuitive and
+consistent fashion.  It seeks to combine functionality from lower level
+functions which can speed up workflow.")
+    (license license:gpl2)))
+
 (define-public r-pheatmap
   (package
     (name "r-pheatmap")
@@ -1130,6 +1199,29 @@ without affecting the current R process at all.  This package does exactly
 that.")
     (license license:expat)))
 
+(define-public r-depmixs4
+  (package
+    (name "r-depmixs4")
+    (version "1.5-0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "depmixS4" version))
+              (sha256
+               (base32
+                "1pacvhw5m4fsk3ysbal50fdqbvlaz8ywyqp6bn1wh42wipqbb2i8"))))
+    (propagated-inputs
+     `(("r-nnet" ,r-nnet)
+       ("r-nlme" ,r-nlme)
+       ("r-mass" ,r-mass)
+       ("r-rsolnp" ,r-rsolnp)))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/depmixS4/")
+    (synopsis "Dependent Mixture Models")
+    (description "This package fits latent (hidden) Markov models on mixed
+categorical and continuous (time series) data, otherwise known as dependent
+mixture models.")
+    (license license:gpl2+)))
+
 (define-public r-readxl
   (package
     (name "r-readxl")
@@ -1157,6 +1249,36 @@ the embedded @code{RapidXML} C++ library.")
     ;; 'rapidxml' which is Boost.
     (license (list license:gpl3 license:bsd-2 license:boost1.0))))
 
+(define-public r-model4you
+  (package
+    (name "r-model4you")
+    (version "0.9-7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "model4you" version))
+              (sha256
+               (base32
+                "0pni9v3nradvy8sp2m07903vc7z610xrh426lf19dxss12kgrfi8"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-formula" ,r-formula)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-partykit" ,r-partykit)
+       ("r-sandwich" ,r-sandwich)
+       ("r-survival" ,r-survival)))
+    (home-page "https://cran.r-project.org/web/packages/model4you/")
+    (synopsis "Stratified and personalised models based on trees and forests")
+    (description
+     "This package provides procedures for model-based trees for subgroup
+analyses in clinical trials and model-based forests for the estimation and
+prediction of personalised treatment effects.  Currently partitioning of linear
+models, @code{lm()}, generalised linear models, @code{glm()}, and
+Weibull models, @code{survreg()}, are supported.  Advanced plotting functionality is
+supported for the trees and a test for parameter heterogeneity is provided for
+the personalised models.")
+    (license license:gpl2+)))
+
 (define-public r-modelr
   (package
     (name "r-modelr")
@@ -1204,6 +1326,28 @@ and make inference with discrete time and discrete space hidden Markov
 models.")
     (license license:gpl2+)))
 
+(define-public r-hiddenmarkov
+  (package
+   (name "r-hiddenmarkov")
+   (version "1.8-13")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "HiddenMarkov" version))
+            (sha256
+             (base32
+              "05dm3nl0ffsz2ziw3bz5bivyxk7r5bxs8xhky3hz660qaqzd51ki"))))
+   (build-system r-build-system)
+   (native-inputs
+    `(("gfortran" ,gfortran)))
+   (home-page "https://cran.r-project.org/web/packages/HiddenMarkov/")
+   (synopsis "Hidden markov models for R")
+   (description "This package contains functions for the analysis of Discrete
+Time Hidden Markov Models, Markov Modulated GLMs and the Markov Modulated
+Poisson Process.  It includes functions for simulation, parameter estimation,
+and the Viterbi algorithm.  The algorithms are based of those of Walter
+Zucchini.")
+   (license license:gpl2+)))
+
 (define-public r-httpuv
   (package
     (name "r-httpuv")
@@ -1307,6 +1451,29 @@ documents that can be converted to HTML files (e.g., R Markdown) under a given
 directory.")
     (license license:expat)))
 
+(define-public r-howmany
+  (package
+    (name "r-howmany")
+    (version "0.3-1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "howmany" version))
+              (sha256
+               (base32
+                "045ck8qahfg2swbgyf7dpl32ryq1m4sbalhr7m5qdgpm62vz8h7f"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/howmany/")
+    (synopsis "Lower bound for the number of correct rejections")
+    (description "When testing multiple hypotheses simultaneously, this package
+provides functionality to calculate a lower bound for the number of correct
+rejections (as a function of the number of rejected hypotheses), which holds
+simultaneously -with high probability- for all possible number of rejections.
+As a special case, a lower bound for the total number of false null hypotheses
+can be inferred.  Dependent test statistics can be handled for multiple tests
+of associations.  For independent test statistics, it is sufficient to provide
+a list of p-values.")
+    (license license:gpl2+)))
+
 (define-public r-htmltools
   (package
     (name "r-htmltools")
@@ -2894,6 +3061,26 @@ attaching it.  This is a key part of the @code{devtools} package as it allows
 you to rapidly iterate while developing a package.")
     (license license:gpl3)))
 
+(define-public r-pvclust
+  (package
+   (name "r-pvclust")
+   (version "2.2-0")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "pvclust" version))
+            (sha256
+             (base32
+              "0082icm54k2yq60k06qpr92a626k39j2jr0046lva4ylmhxqb4kq"))))
+   (build-system r-build-system)
+   (home-page "https://github.com/shimo-lab/pvclust")
+   (synopsis
+    "Hierarchical clustering with P-values via multiscale bootstrap resampling")
+   (description "This package provides an implementation of multiscale bootstrap
+resampling for assessing the uncertainty in hierarchical cluster analysis.  It
+provides an AU (approximately unbiased) P-value as well as a BP (bootstrap probability)
+value for each cluster in a dendrogram.")
+   (license license:gpl2+)))
+
 (define-public r-rcpp
   (package
     (name "r-rcpp")
@@ -2939,6 +3126,27 @@ and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
 safely be interrupted from R.")
     (license license:expat)))
 
+(define-public r-rcppnumerical
+  (package
+    (name "r-rcppnumerical")
+    (version "0.4-0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "RcppNumerical" version))
+              (sha256
+               (base32
+                "1a92fql6mijhnr1kxkcxwivf95pk9lhgmhzkshs51h0ybfv5krik"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)))
+    (home-page "https://github.com/yixuan/RcppNumerical")
+    (synopsis"Numerical computing libraries integration with @code{Rcpp}")
+    (description "This package provides a collection of libraries for numerical
+computing (numerical integration, optimization, etc.) and their integration
+with @code{Rcpp}.")
+    (license license:gpl2+)))
+
 (define-public r-bindr
   (package
     (name "r-bindr")
@@ -3288,6 +3496,25 @@ statistical functions and other utilities to ease their usage.")
 quantities.")
     (license license:expat)))
 
+(define-public r-princurve
+  (package
+   (name "r-princurve")
+   (version "2.1.6")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "princurve" version))
+            (sha256
+             (base32
+              "0wzk329bxljkzz57y220lsfckpsn45w348m6dcxh29zbj0ik65h2"))))
+   (build-system r-build-system)
+   (propagated-inputs
+    `(("r-rcpp" ,r-rcpp)))
+   (home-page "https://github.com/rcannood/princurve")
+   (synopsis "Fit a principal curve in arbitrary dimension")
+   (description "This package provides procedures for fitting a principal
+curve to a data matrix in arbitrary dimensions.")
+   (license license:gpl2)))
+
 (define-public r-reshape
   (package
     (name "r-reshape")
@@ -3584,14 +3811,14 @@ which should be seen for details.")
 (define-public r-extremes
   (package
     (name "r-extremes")
-    (version "2.1")
+    (version "2.1-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "extRemes" version))
        (sha256
         (base32
-         "1b69r3mzl6hp3g3rqxyc77m8r40jyq7c2d87q85af7xqkn6hnxid"))))
+         "00ps7yggp89sx1j0w6c8dk0la3k95rwjv1iz7rdfqy7i46xjf6as"))))
     (properties `((upstream-name . "extRemes")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3653,13 +3880,13 @@ by Li, Brown, Huang, and Bickel")
 (define-public r-inline
   (package
     (name "r-inline")
-    (version "0.3.18")
+    (version "0.3.19")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "inline" version))
               (sha256
                (base32
-                "0fpcfwbhfg1lhkqc0gdqv2sq64r3ljld7piy34vv0nimq30xi2fc"))))
+                "1mcr9hgq6kkq03n7pkcccxa7vg8jma0q7lfxc5vvkc6snydk1s8f"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/inline")
     (synopsis "Functions to inline C, C++, Fortran function calls from R")
@@ -3843,14 +4070,14 @@ functions from LINPACK.")
 (define-public r-fitdistrplus
   (package
     (name "r-fitdistrplus")
-    (version "1.1-3")
+    (version "1.1-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fitdistrplus" version))
        (sha256
         (base32
-         "1pjnqx0j26dai2fa4ip56wspmfsrcm9dpmxkg15y9623w5b58vbp"))))
+         "1p9rvvh05zqb9vzhcyzdh7i8lbmb53nj8nyn0gqcmp7wafg9cd1f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -5058,6 +5285,44 @@ Friendly and is now the main support package for a new book, \"Discrete Data
 Analysis with R\" by Michael Friendly and David Meyer (2015).")
     (license license:gpl2)))
 
+(define-public r-vcfr
+  (package
+   (name "r-vcfr")
+   (version "1.12.0")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "vcfR" version))
+            (sha256
+             (base32
+              "0lhxb3ac4fafwik9q3cds46svzf0hyca8k54chw3dpk50c0zz1yx"))))
+   (build-system r-build-system)
+   (native-inputs
+    `(("r-knitr" ,r-knitr)))
+   (inputs
+    `(("zlib" ,zlib)))
+   (propagated-inputs
+    `(("r-ape" ,r-ape)
+      ("r-dplyr" ,r-dplyr)
+      ("r-magrittr" ,r-magrittr)
+      ("r-memuse" ,r-memuse)
+      ("r-pinfsc50" ,r-pinfsc50)
+      ("r-rcpp" ,r-rcpp)
+      ("r-stringr" ,r-stringr)
+      ("r-tibble" ,r-tibble)
+      ("r-vegan" ,r-vegan)
+      ("r-viridislite" ,r-viridislite)))
+   (home-page "https://github.com/knausb/vcfR")
+   (synopsis "Manipulate and visualize VCF data")
+   (description "This package facilitates easy manipulation of variant call
+format (VCF) data.  Functions are provided to rapidly read from and write to
+VCF files.  Once VCF data is read into R, a parser function extracts matrices
+of data.  This information can then be used for quality control or other
+purposes.  Additional functions provide visualization of genomic data.  Once
+processing is complete data may be written to a VCF file.  It also may be
+converted into other popular R objects.  This package provides a link between
+VCF data and familiar R software.")
+   (license license:gpl3)))
+
 (define-public r-ica
   (package
     (name "r-ica")
@@ -5535,6 +5800,25 @@ columns of data using the full range of colours provided by modern
 terminals.")
     (license license:gpl3)))
 
+(define-public r-pinfsc50
+  (package
+   (name "r-pinfsc50")
+   (version "1.2.0")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "pinfsc50" version))
+            (sha256
+             (base32
+              "1547xyxmfb7zi8h9bsm6k67dcw4hpp129xzvmgwfw7r6p4af47zd"))))
+   (build-system r-build-system)
+   (home-page "https://cran.r-project.org/web/packages/pinfsc50/")
+   (synopsis "Genomic data for the plant pathogen Phytophthora infestans")
+   (description "This package contains genomic data for the plant pathogen
+Phytophthora infestans.  It includes a variant file, a sequence file and an
+annotation file.  This package is intended to be used as example data for
+packages that work with genomic data.")
+   (license license:gpl2+)))
+
 (define-public r-uuid
   (package
     (name "r-uuid")
@@ -5557,14 +5841,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.31")
+    (version "0.32")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "04a3ncaxix30n9m73slpsn1idxv7j1f7fy3nhxpvkk514x9rgg0p"))))
+         "17y20kb5xgmz77n4rrkqmcm0cnjwfi4mn84h6zabij76b8cjiykh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -6280,6 +6564,30 @@ fixed values.  Other functions include a custom @code{geom}, and helper
 functions to enforce symmetric scales or add tags to facetted plots.")
     (license license:gpl3)))
 
+(define-public r-heatmap3
+  (package
+    (name "r-heatmap3")
+    (version "1.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "heatmap3" version))
+       (sha256
+        (base32
+         "0sfvizmmwfk1bjhn6zfx5a4qqfgj1ldg8x90b65crqibgfa36k2r"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-fastcluster" ,r-fastcluster)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://cran.r-project.org/web/packages/heatmap3/")
+    (synopsis "Improved heatmap package")
+    (description
+     "This package provides an improved heatmap package.  It is completely
+compatible with the original R function @code{heatmap}, and provides more
+powerful and convenient features.")
+    (license license:gpl2+)))
+
 (define-public r-heatmaply
   (package
     (name "r-heatmaply")
@@ -6561,14 +6869,14 @@ and within plot factors interact.")
 (define-public r-signal
   (package
     (name "r-signal")
-    (version "0.7-6")
+    (version "0.7-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "signal" version))
        (sha256
         (base32
-         "1vsxramz5qd9q9s3vlqzmfdpmwl2rhlb2n904zw6f0fg0xxjfq3b"))))
+         "0qaf39vfmhn3d0bdjqd805ayfkaj48dkmf5dqd47bpk7dp21b837"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-mass" ,r-mass)))
     (native-inputs `(("gfortran" ,gfortran)))
@@ -6948,14 +7256,14 @@ misclassification probabilities of different models.")
 (define-public r-zip
   (package
     (name "r-zip")
-    (version "2.1.1")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "zip" version))
        (sha256
         (base32
-         "0b3wmbx5v0i1scylgk4nli2ljg4p12wx7a1sqljklv9969wl3p8i"))))
+         "1n5ryjdj3i16b4mdp29wapgaklz3yzas5k8ffx7q6fa0jry9i5cz"))))
     (build-system r-build-system)
     (home-page "https://github.com/gaborcsardi/zip")
     (synopsis "Cross-platform Zip compression")
@@ -7882,14 +8190,14 @@ steps and provides ggplot2-based elegant data visualization.")
 (define-public r-fansi
   (package
     (name "r-fansi")
-    (version "0.4.2")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fansi" version))
        (sha256
         (base32
-         "0i7wmaflkjzdbggqv31wnsj3m9imvc6db429vyjk64xrz1ng1vd2"))))
+         "0kx5kjhr8dvqz1mq1zkijkgp29jv8b0irm1xplx1d74n2v1zh6wx"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr))) ; for vignettes
@@ -8064,14 +8372,14 @@ implemented in bibutils.")
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "2.1.1")
+    (version "2.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "11psw5yiamq0g7jc6fqn2wis565i60qgda4a5d09qi8fyzd6mnfb"))))
+         "0s51c5fw1ka75b8cxk5bh27h6wcy5169yl93sjlxji2k27n9fj3i"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8316,14 +8624,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.14.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "1zkifkj2qg9vdv26z4qvi81qv9l1cqyrq3ihdpacpax80plkgdln"))))
+         "0af15kqz4kiyi5p4qi748hvdw462vdwigzyykh1k7vj6gacn2xqf"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -8913,13 +9221,13 @@ based on index arrays and simple triplet representations, respectively.")
 (define-public r-manipulatewidget
   (package
     (name "r-manipulatewidget")
-    (version "0.10.1")
+    (version "0.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "manipulateWidget" version))
        (sha256
-        (base32 "1vi71sjh7z1a880wffk8qqw7iysvk42q78giqxmm2sqz2a912qlx"))))
+        (base32 "0iysgl6ab8fvg1xxdx6hr3swqwbkfqzjkk4x5sbvmawbl2a395gj"))))
     (properties
      `((upstream-name . "manipulateWidget")))
     (build-system r-build-system)
@@ -8931,7 +9239,10 @@ based on index arrays and simple triplet representations, respectively.")
        ("r-knitr" ,r-knitr)
        ("r-miniui" ,r-miniui)
        ("r-shiny" ,r-shiny)
+       ("r-shinyjs" ,r-shinyjs)
        ("r-webshot" ,r-webshot)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/rte-antares-rpackage/manipulateWidget/")
     (synopsis "Add even more interactivity to interactive charts")
     (description
@@ -10261,14 +10572,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "07iw3faprf98mncymbjbmfm2yi294yiwdg30xlql5sfx12qbf6r0"))))
+         "02sh1q6f2ik56w348pfkg4a8jvdn3a31r7d8mzg7zq3sv7lmvqwl"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -10497,14 +10808,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "0msr24ymnazpaz8s9qs5v3xn1i9984p98lr9x4qq9cxgx34rm9h0"))))
+         "1qr51mag5wf44h4sygkn5arsirpqdanf039cg6fxmyw83k51fi2v"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10581,14 +10892,14 @@ results using @code{ggplot2}.")
 (define-public r-effectsize
   (package
     (name "r-effectsize")
-    (version "0.4.4-1")
+    (version "0.4.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "effectsize" version))
        (sha256
         (base32
-         "02rwf3lxnzgc8yh0wridsc6lqr9s6v0cqzbk4biwnr494rvs46zb"))))
+         "0rp0r75p8q467lmrsr1gl9wjpib9jz7ksx5rm6c7q2lfg9b9zrjf"))))
     (properties `((upstream-name . "effectsize")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10608,13 +10919,13 @@ conversion of indices such as Cohen's d, r, odds, etc.")
 (define-public r-sjplot
   (package
     (name "r-sjplot")
-    (version "2.8.7")
+    (version "2.8.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjPlot" version))
        (sha256
-        (base32 "1g4qabg654kwdm09ihp4h3mg64a1d7a7gsn6w56rwsidqqaxilq0"))))
+        (base32 "050aarycgzy1n8ad67pj09s8k7s7xk6dicg0kjg0ivlkyyq0shqz"))))
     (properties `((upstream-name . "sjPlot")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11187,14 +11498,14 @@ the interfaces between R and C++.")
 (define-public r-mvabund
   (package
     (name "r-mvabund")
-    (version "4.1.9")
+    (version "4.1.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mvabund" version))
        (sha256
         (base32
-         "19kyg0agjk7gxipa5kmklz4cqh97xrdbibmmy1g99r1gp3s9ml30"))))
+         "107pwv2bwird1a98chcnbld2wqj9prkf4pkncyrrp304zpdkkby1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -11301,21 +11612,21 @@ al. (2016)).")
 (define-public r-weights
   (package
     (name "r-weights")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "weights" version))
        (sha256
         (base32
-         "1ka2kvzg464vn80qziqy4mrciy9wwd3jfasgq0d33wbiblhmxkj5"))))
+         "1sq8ls5idspddn8m2c8n2107lgx53kbach8vgjrhqx1mc6xfvrvw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-gdata" ,r-gdata)
        ("r-hmisc" ,r-hmisc)
+       ("r-lme4" ,r-lme4)
        ("r-mice" ,r-mice)))
-    (home-page
-     "https://cran.r-project.org/web/packages/weights/")
+    (home-page "https://cran.r-project.org/web/packages/weights/")
     (synopsis "Weighting and weighted statistics")
     (description "This package Provides a variety of functions for producing
 simple weighted statistics, such as weighted Pearson's correlations, partial
@@ -11531,13 +11842,13 @@ isosurfaces.")
 (define-public r-ks
   (package
     (name "r-ks")
-    (version "1.12.0")
+    (version "1.13.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ks" version))
        (sha256
-        (base32 "1sff6rlpq64lqyvwgral9zbcan30wpgmfb26hw9y6wzypd9gxbz6"))))
+        (base32 "0zi7yixz3hvqvb5fxipkxprk5p4irr61csd3k6scsxqyhrb5ffls"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-fnn" ,r-fnn)
@@ -11548,7 +11859,8 @@ isosurfaces.")
        ("r-mgcv" ,r-mgcv)
        ("r-multicool" ,r-multicool)
        ("r-mvtnorm" ,r-mvtnorm)
-       ("r-plot3d" ,r-plot3d)))
+       ("r-plot3d" ,r-plot3d)
+       ("r-pracma" ,r-pracma)))
     (home-page "https://www.mvstat.net/tduong/")
     (synopsis "Kernel smoothing")
     (description
@@ -11997,13 +12309,13 @@ maps.")
 (define-public r-tidytree
   (package
     (name "r-tidytree")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidytree" version))
        (sha256
-        (base32 "05b53dap0f784kl6s1wgck6m7brwmy6ifqp7v5l06s1spfspagl6"))))
+        (base32 "0bqsb0zplkqkx2mp8kpanadkds4kwwvdrc07lp0qzwqqzaxq5xa3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
@@ -12385,6 +12697,89 @@ Helene Touzet and Jean-Stephane Varre, 2007, Algorithms Mol Biol:2, 15.
 Touzet and Varre (2007).")
     (license license:gpl2)))
 
+(define-public r-rncl
+  (package
+    (name "r-rncl")
+    (version "0.8.4")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "rncl" version))
+              (sha256
+               (base32
+                "0ss9jqrvv7bhvl5j74cjrp8r866d9dlavrbbfscwz3mhkgfx06bb"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-progress" ,r-progress)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/fmichonneau/rncl")
+    (synopsis "Interface to the Nexus class library")
+    (description "This package provides an interface to the Nexus class
+library which allows parsing of NEXUS, Newick and other phylogenetic tree
+ file formats.  It provides elements of the file that can be used to build
+ phylogenetic objects such as @code{ape}'s @code{phylo} or @code{phylobase}'s
+@code{phylo4(d)}.  This functionality is demonstrated with
+@code{read_newick_phylo()} and @code{read_nexus_phylo()}.")
+    (license license:bsd-2)))
+
+(define-public r-phylobase
+  (package
+    (name "r-phylobase")
+    (version "0.8.10")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "phylobase" version))
+              (sha256
+               (base32
+                "0jzr1gdvmi4l640hwwzh9bxqmpja69bn3ygnaqx37awvyh7khi2s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-ape" ,r-ape)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rncl" ,r-rncl)
+       ("r-rnexml" ,r-rnexml)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/fmichonneau/phylobase")
+    (synopsis "Base package for phylogenetic structures and comparative data")
+    (description "This package provides a base @code{S4} class for comparative
+methods, incorporating one or more trees and trait data.")
+    (license license:gpl2+)))
+
+(define-public r-rnexml
+  (package
+    (name "r-rnexml")
+    (version "2.4.5")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "RNeXML" version))
+              (sha256
+               (base32
+                "1wsl4xq9w5bp3wk69dw57bg0qcw1vs6ajwya4p0w1r00ck5pwrib"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ape" ,r-ape)
+       ("r-dplyr" ,r-dplyr)
+       ("r-httr" ,r-httr)
+       ("r-lazyeval" ,r-lazyeval)
+       ("r-plyr" ,r-plyr)
+       ("r-reshape2" ,r-reshape2)
+       ("r-stringi" ,r-stringi)
+       ("r-stringr" ,r-stringr)
+       ("r-tidyr" ,r-tidyr)
+       ("r-uuid" ,r-uuid)
+       ("r-xml" ,r-xml)
+       ("r-xml2" ,r-xml2)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://docs.ropensci.org/RNeXML/")
+    (synopsis "Semantically rich I/O for the NeXML Format")
+    (description "This package provides access to phyloinformatic data in
+NeXML format.  The package should add new functionality to R such as the
+possibility to manipulate NeXML objects in more various and refined way
+and compatibility with @code{ape} objects.")
+    (license license:bsd-3)))
+
 (define-public r-rnifti
   (package
     (name "r-rnifti")
@@ -13504,6 +13899,23 @@ Kaplan-Meier (KM) or Nearest Neighbor Estimation (NNE) method of Heagerty,
 Lumley & Pepe (Biometrics, Vol 56 No 2, 2000, PP 337-344)")
     (license license:gpl2+)))
 
+(define-public r-locfdr
+  (package
+    (name "r-locfdr")
+    (version "1.1-8")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "locfdr" version))
+              (sha256
+               (base32
+                "1falkbp2xz07am8jlhwlvyqvxnli4nwl188kd0g58vdfjcjy3mj2"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/locfdr/")
+    (synopsis "Computes local false discovery rates")
+    (description "This package can be used to compute local false
+discovery rates.")
+    (license license:gpl2)))
+
 (define-public r-longitudinal
   (package
     (name "r-longitudinal")
@@ -15493,14 +15905,26 @@ datum transformations.")
 (define-public r-spdep
   (package
     (name "r-spdep")
-    (version "1.1-7")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "spdep" version))
-       (sha256
-        (base32
-         "0sg417d95paww625663lgmk6jwhs88djqzc96gbs1hxazlf77qb1"))))
+    (version "1.1-8")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "spdep" version))
+              (sha256
+               (base32
+                "1k82vx58kpn0fwgcpxq2jc3qfffl8wzbgr4cdkxihrfk28kkqh7l"))
+              (snippet
+               '(for-each delete-file '("inst/doc/nb_igraph.html"
+                                        "inst/doc/nb_igraph.R"
+                                        "inst/doc/nb_igraph.Rmd"
+                                        "inst/doc/sids.html"
+                                        "inst/doc/sids.R"
+                                        "inst/doc/nb.html"
+                                        "inst/doc/nb.R"
+                                        "inst/doc/CO69.html"
+                                        "inst/doc/CO69.R"
+                                        "inst/doc/nb_sf.html"
+                                        "inst/doc/nb_sf.R"
+                                        "inst/doc/nb_sf.Rmd")))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-boot" ,r-boot)
@@ -17249,6 +17673,116 @@ making it possible to download files over HTTPS across platforms.  The
 external dependencies.  This package has is implemented purely in R.")
     (license license:gpl2)))
 
+(define-public r-aplot
+  (package
+    (name "r-aplot")
+    (version "0.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "aplot" version))
+       (sha256
+        (base32
+         "08kqrm9r57l8zgij897wpp428l4i50qfhp7y78r3pk5pjz37bsan"))))
+    (properties `((upstream-name . "aplot")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-magrittr" ,r-magrittr)
+       ("r-patchwork" ,r-patchwork)))
+    (home-page "https://github.com/YuLab-SMU/aplot")
+    (synopsis "Decorate a ggplot with associated information")
+    (description
+     "Users may want to align plots with associated information that requires
+axes to be exactly matched in subplots, e.g. hierarchical clustering with a
+heatmap.  This package provides utilities to align associated subplots to a
+main plot at different sides (left, right, top and bottom) with axes exactly
+matched.")
+    (license license:artistic2.0)))
+
+(define-public r-ggnewscale
+  (package
+    (name "r-ggnewscale")
+    (version "0.4.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggnewscale" version))
+       (sha256
+        (base32
+         "1hjysfagd2lqy8yivqq9q7l6hbvyq8kasw3zqh5fk9xn18ikc702"))))
+    (properties `((upstream-name . "ggnewscale")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)))
+    (home-page "https://cran.r-project.org/package=ggnewscale")
+    (synopsis "Multiple fill and color scales in ggplot2")
+    (description
+     "This package lets you use multiple fill and color scales in ggplot2.")
+    (license license:gpl3)))
+
+(define-public r-ggpointdensity
+  (package
+    (name "r-ggpointdensity")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggpointdensity" version))
+       (sha256
+        (base32
+         "0c9a14j3b0hvamqylhzldw2hjdxmfbllwahjkf3gg2rw337ld9iy"))))
+    (properties
+     `((upstream-name . "ggpointdensity")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)))
+    (home-page "https://github.com/LKremer/ggpointdensity")
+    (synopsis "Cross between a 2D density plot and a scatter plot")
+    (description
+     "This package provides a cross between a 2D density plot and a scatter
+plot, implemented as a ggplot2 @code{geom}.  Points in the scatter plot are
+colored by the number of neighboring points.  This is useful to visualize the
+2D-distribution of points in case of overplotting.")
+    (license license:gpl3)))
+
+(define-public r-arrow
+  (package
+    (name "r-arrow")
+    (version "4.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "arrow" version))
+       (sha256
+        (base32
+         "19kzfjxp90ybi1px3r93mfx59nqmnagxr4g73y7iby5blwl1bblc"))))
+    (properties `((upstream-name . "arrow")))
+    (build-system r-build-system)
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-assertthat" ,r-assertthat)
+       ("r-bit64" ,r-bit64)
+       ("r-cpp11" ,r-cpp11)
+       ("r-purrr" ,r-purrr)
+       ("r-r6" ,r-r6)
+       ("r-rlang" ,r-rlang)
+       ("r-tidyselect" ,r-tidyselect)
+       ("r-vctrs" ,r-vctrs)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/apache/arrow/")
+    (synopsis "R integration to Apache Arrow")
+    (description
+     "Apache Arrow is a cross-language development platform for in-memory
+data.  It specifies a standardized language-independent columnar memory format
+for flat and hierarchical data, organized for efficient analytic operations on
+modern hardware.  This package provides an R interface to the Arrow C++
+library.")
+    (license license:asl2.0)))
+
 (define-public r-rex
   (package
     (name "r-rex")
@@ -17709,14 +18243,14 @@ been used in the call to @code{aov}.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "1qnjbhilv4jfmwqxfi9xc5ysrh8gr84a2a5imjfci7d1n3zcnryn"))))
+         "184mzby1giismhx4brvrdfl5n5kialyvv8ik18blhchvpy145cwf"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs
@@ -17765,14 +18299,14 @@ annotated biological functions.")
 (define-public r-plot3d
   (package
     (name "r-plot3d")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "plot3D" version))
        (sha256
         (base32
-         "1jfzndnlci9a975qbcv66jiy2l46hs3f2049654x4jp3i4kyrr5r"))))
+         "1h59zlsyzbjylaziwavppl9bjmnba4iiq34772y3dys6fqclajnh"))))
     (properties `((upstream-name . "plot3D")))
     (build-system r-build-system)
     (propagated-inputs `(("r-misc3d" ,r-misc3d)))
@@ -18103,14 +18637,14 @@ computed using the L1 (Manhattan, taxicab) metric.")
 (define-public r-leiden
   (package
     (name "r-leiden")
-    (version "0.3.7")
+    (version "0.3.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "leiden" version))
        (sha256
         (base32
-         "14iqn5iqcya6bqbjvjivpd7q9gwc323sj29y7ssrbhb3sz9982bp"))))
+         "0sv0j4sgpz8z65vhbpmaglg878jhq52srzf5rpw4vbsbys2807w1"))))
     (properties `((upstream-name . "leiden")))
     (build-system r-build-system)
     (propagated-inputs
@@ -18491,14 +19025,14 @@ in pipelines.")
 (define-public r-parameters
   (package
     (name "r-parameters")
-    (version "0.13.0")
+    (version "0.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parameters" version))
        (sha256
         (base32
-         "17dlwx9hrl6z2il14nxji0snwsf4sfbp3mv33jbpcw13sani1q81"))))
+         "03x2h8izbpz9cq25i0a6dh99m26a9isgpv4kxsfkx97qzlh9cd67"))))
     (properties `((upstream-name . "parameters")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19645,6 +20179,31 @@ introduced in Panneton et al. (2006), ``Improved Long-Period Generators Based
 on Linear Recurrences Modulo 2'', ACM Transactions on Mathematical Software.")
     (license license:bsd-3)))
 
+(define-public r-rnmf
+  (package
+   (name "r-rnmf")
+   (version "0.5.0")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "rNMF" version))
+            (sha256
+             (base32
+              "1nz6h0j5ywdh48m0swmhp34hbkycd7n13rclrxaw85qi9wc42597"))))
+   (build-system r-build-system)
+   (propagated-inputs
+    `(("r-knitr" ,r-knitr)
+      ("r-nnls" ,r-nnls)))
+   (home-page "https://cran.r-project.org/web/packages/rNMF/")
+   (synopsis "Robust nonnegative matrix factorization")
+   (description
+    "This package provides an implementation of robust nonnegative matrix
+factorization (rNMF).  The rNMF algorithm decomposes a nonnegative high
+dimension data matrix into the product of two low rank nonnegative matrices,
+while detecting and trimming outliers.  The main function is @code{rnmf()}.
+The package also includes a visualization tool, @code{see()}, that arranges
+and prints vectorized images.")
+   (license license:gpl2+)))
+
 (define-public r-randtoolbox
   (package
     (name "r-randtoolbox")
@@ -20353,6 +20912,23 @@ modeling often used in @dfn{analytical customer relationship
 management} (aCRM).")
     (license license:gpl2+)))
 
+(define-public r-tree
+  (package
+   (name "r-tree")
+   (version "1.0-40")
+   (source (origin
+            (method url-fetch)
+            (uri (cran-uri "tree" version))
+            (sha256
+             (base32
+              "1rr6ws62j9h36f3nl713f8h3ndkh95mv46l055jvgmby5lw1dazz"))))
+   (build-system r-build-system)
+   (home-page "https://cran.r-project.org/web/packages/tree/")
+   (synopsis "Classification and regression trees")
+   (description "This package provides procedures to work with classification
+and regression trees.")
+   (license license:gpl2+)))
+
 (define-public r-treeclust
   (package
     (name "r-treeclust")
@@ -20563,14 +21139,14 @@ allowed.")
 (define-public r-gdina
   (package
     (name "r-gdina")
-    (version "2.8.0")
+    (version "2.8.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "GDINA" version))
        (sha256
         (base32
-         "0chxnhp37xfd78gafkgwqrmc0jf3pvpdyrkc438kl0l53fb7dld7"))))
+         "08cdjp4mqn81j3wa770v7n8zkslys9jqqb3d3c09dkfmgdk6hga4"))))
     (properties `((upstream-name . "GDINA")))
     (build-system r-build-system)
     (propagated-inputs
@@ -21026,14 +21602,14 @@ API; see the package vignette for details.")
 (define-public r-actuar
   (package
     (name "r-actuar")
-    (version "3.1-2")
+    (version "3.1-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "actuar" version))
        (sha256
         (base32
-         "0gaqm8bkjly2b1jkr1nqnxlp5vqvfpj0a4jd70jv4f9ndlif676y"))))
+         "0m9b4787a866cddf1skjz6634237dvg1i5qyqss4sgvcrbmx3hw0"))))
     (properties `((upstream-name . "actuar")))
     (build-system r-build-system)
     (propagated-inputs `(("r-expint" ,r-expint)))
@@ -21360,14 +21936,14 @@ cluster stability.")
 (define-public r-biclust
   (package
     (name "r-biclust")
-    (version "2.0.2")
+    (version "2.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "biclust" version))
        (sha256
         (base32
-         "1pk7mvwlg4hkc4cn4w6wr2c192qx03d1xfwlzclk5bw1nmcg483b"))))
+         "0lgyc2f04dhr65cwga78pradxsdzgjrpp8vphchqn60ab1z95dlp"))))
     (properties `((upstream-name . "biclust")))
     (build-system r-build-system)
     (propagated-inputs
@@ -21922,14 +22498,14 @@ both exclusive and shared locking.")
 (define-public r-archivist
   (package
     (name "r-archivist")
-    (version "2.3.5")
+    (version "2.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "archivist" version))
        (sha256
         (base32
-         "0sk16bcafgswrvwh39ysbgm6jvsg20yil4pdsg3wsp81nnsrb43k"))))
+         "0q1qysack30xzxdbvvi56rk7r85hsj4ghls9r70ki7bl3rqwr4c9"))))
     (properties `((upstream-name . "archivist")))
     (build-system r-build-system)
     (propagated-inputs
@@ -22094,14 +22670,14 @@ Raftery, Appl.Statistics, 1989); it includes inference and basic methods.")
 (define-public r-forecast
   (package
     (name "r-forecast")
-    (version "8.14")
+    (version "8.15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "forecast" version))
        (sha256
         (base32
-         "12bfw029xb1dndcjyn2r7a51i7hnkkbdilp69k97sz2v8b7v1y3s"))))
+         "0x4ij55sb45qnwba3bybs50vsvv82q3j8p47xmbv959h13nsnfn7"))))
     (properties `((upstream-name . "forecast")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23076,14 +23652,14 @@ and reproducible way.")
 (define-public r-rsconnect
   (package
     (name "r-rsconnect")
-    (version "0.8.17")
+    (version "0.8.18")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rsconnect" version))
        (sha256
         (base32
-         "0cd2bpc22jam1qxn6yg7yr7xdhsm0jgnm5bm2f3vg5b3c96plxk4"))))
+         "01bj16iggj5fggfa7n312458p8xg30zx2vzfkd8jqcchnbrphfvl"))))
     (properties `((upstream-name . "rsconnect")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24880,6 +25456,26 @@ theory; see @url{Strumbel and Kononenko (2014),
 doi.org/10.1007/s10115-013-0679-x} for details.")
     (license license:gpl2+)))
 
+(define-public r-memuse
+  (package
+    (name "r-memuse")
+    (version "4.1-0")
+    (source (origin
+             (method url-fetch)
+             (uri (cran-uri "memuse" version))
+             (sha256
+              (base32
+               "1bbjp8y0ji71956fbaxiil7ynq2nkmmgz7i9xps83m3bbp5d3mjq"))))
+    (properties `((upstream-name . "memuse")))
+    (build-system r-build-system)
+    (home-page "https://github.com/shinra-dev/memuse")
+    (synopsis "Memory Estimation Utilities")
+    (description
+      "This package provides procedures to answer the following questions:
+How much ram do you need to store a 100,000 by 100,000 matrix? How much ram is
+your current R session using? How much ram do you even have?")
+    (license license:bsd-2)))
+
 (define-public r-metrics
   (package
     (name "r-metrics")
@@ -25286,17 +25882,41 @@ maximums, many t, F and G-square tests, many regressions (normal, logistic,
 Poisson), are some of the many fast functions.")
     (license license:gpl2+)))
 
+(define-public r-rffc
+  (package
+   (name "r-rffc")
+   (version "1.0")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append
+                  "https://download.r-forge.r-project.org/src/contrib/"
+                  "rfFC_" version ".tar.gz"))
+            (sha256
+             (base32
+              "05x9wgzsmx4vb12lmcspymgmpb2xw8bwryb8ysg7vzg2nkh0ma3g"))))
+   (build-system r-build-system)
+   (propagated-inputs
+    `(("r-randomforest",r-randomforest)))
+   (home-page "https://r-forge.r-project.org/projects/rffc/")
+   (synopsis "Random Forest Feature Contributions")
+   (description "This package provides functions for extracting feature
+contributions from a random forest model from package @code{randomForest}.
+Feature contributions provide detailed information about the relationship
+between data variables and the predicted value returned by random forest
+model.")
+   (license license:gpl2)))
+
 (define-public r-clusterr
   (package
     (name "r-clusterr")
-    (version "1.2.4")
+    (version "1.2.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ClusterR" version))
        (sha256
         (base32
-         "01vgr1mpm7l1lyhril5hm1l72aicqc4iwb0b15ypijb6hwkv7g47"))))
+         "1fsb9pzs1paw1cbyr5a56lfh8h2d50232p6isk0xg5sl110ql7kx"))))
     (properties `((upstream-name . "ClusterR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -25412,6 +26032,35 @@ so that natural sort function arranges a character vector by their numbers,
 not digit characters.")
    (license license:bsd-3)))
 
+(define-public r-visdat
+  (package
+    (name "r-visdat")
+    (version "0.5.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "visdat" version))
+              (sha256
+               (base32
+                "1ikqp29nncbw1xlwyb9dqqgcdk9q0bs3wxhnhnjpb11vcjv7cz2j"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-glue" ,r-glue)
+       ("r-magrittr" ,r-magrittr)
+       ("r-purrr" ,r-purrr)
+       ("r-readr" ,r-readr)
+       ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "https://visdat.njtierney.com/")
+    (synopsis "Preliminary Visualisation of Data")
+    (description "This package provides procedures to create preliminary exploratory
+data visualisations of an entire dataset to identify problems or unexpected features
+using @code{ggplot2}.")
+    (license license:expat)))
+
 (define-public r-muhaz
   (package
     (name "r-muhaz")
@@ -26336,14 +26985,14 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.")
 (define-public r-parsnip
   (package
     (name "r-parsnip")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parsnip" version))
        (sha256
         (base32
-         "0c12lyfxqsdprqlcmgy421py38z28h88d68pxb1c4fw14v1c2d06"))))
+         "0qhdh2xdswqy94f4gkdxi1iqm0k794p9y8sdh6mgbd1a86c8ngfs"))))
     (properties `((upstream-name . "parsnip")))
     (build-system r-build-system)
     (propagated-inputs
@@ -26351,6 +27000,7 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.")
        ("r-generics" ,r-generics)
        ("r-globals" ,r-globals)
        ("r-glue" ,r-glue)
+       ("r-lifecycle" ,r-lifecycle)
        ("r-magrittr" ,r-magrittr)
        ("r-prettyunits" ,r-prettyunits)
        ("r-purrr" ,r-purrr)
@@ -26795,13 +27445,13 @@ other R users.")
 (define-public r-seurat
   (package
     (name "r-seurat")
-    (version "4.0.1")
+    (version "4.0.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "Seurat" version))
               (sha256
                (base32
-                "17cmp9mimvykb8ny796dn1zwmvg0pwwjw1zcixyamc5q1lwnxi3p"))))
+                "1b1wyj4dxjn0hfg09l8z282grdgwgah0czs7pn2ian455x0dphng"))))
     (properties `((upstream-name . "Seurat")))
     (build-system r-build-system)
     (propagated-inputs
@@ -26923,14 +27573,14 @@ rate speciation and extinction.")
 (define-public r-calculus
   (package
     (name "r-calculus")
-    (version "0.3.0")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "calculus" version))
        (sha256
         (base32
-         "1wa5ap89cfcp0ancj9ivx5s2y0wqr2vmp9y115g7f6g772jwhscj"))))
+         "0m9cjc3bqv88vrrj51kd7c7xnczka5w9q0ln4l4nk514gvlr79bn"))))
     (properties `((upstream-name . "calculus")))
     (build-system r-build-system)
     (propagated-inputs
@@ -27837,14 +28487,14 @@ in same length matches).")
 (define-public r-textshape
   (package
     (name "r-textshape")
-    (version "1.7.1")
+    (version "1.7.3")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "textshape" version))
         (sha256
           (base32
-            "02111kj3kka84mpx7s19bjna9cas8diw5fxz51v5ggz0ldswa5pa"))))
+            "0k9injxykgj2qprc7dygd7gafvcbh3r9x84qzaa1al21pk0dz7ds"))))
     (properties `((upstream-name . "textshape")))
     (build-system r-build-system)
     (propagated-inputs
@@ -28629,35 +29279,6 @@ indicator, a quantitative variable or a survival time.")
     ;; Any version of the LGPL
     (license license:lgpl3+)))
 
-(define-public r-samr
-  (package
-    (name "r-samr")
-    (version "3.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "samr" version))
-       (sha256
-        (base32
-         "01km0f7qgm73x19vbvsxl083hs1dq4dj8qm5h64cxbf20b08my15"))))
-    (properties `((upstream-name . "samr")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-gsa" ,r-gsa)
-       ("r-impute" ,r-impute)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-openxlsx" ,r-openxlsx)
-       ("r-shiny" ,r-shiny)
-       ("r-shinyfiles" ,r-shinyfiles)))
-    (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "https://statweb.stanford.edu/~tibs/SAM/")
-    (synopsis "Significance analysis of Microarrays")
-    (description
-     "This is a package for significance analysis of Microarrays for
-differential expression analysis, RNAseq data and related problems.")
-    ;; Any version of the LGPL
-    (license license:lgpl3+)))
-
 (define-public r-randomforestsrc
   (package
     (name "r-randomforestsrc")
@@ -28683,3 +29304,72 @@ quantile regression and solutions for class imbalanced data.  It provides a
 fast interface using subsampling and confidence regions for variable
 importance.")
     (license license:gpl3+)))
+
+(define-public r-contfrac
+  (package
+    (name "r-contfrac")
+    (version "1.1-12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "contfrac" version))
+        (sha256
+          (base32
+            "0sq5c7ny235yrkv2xc4insgxby6rvzc1qsj8h301cd2if3lwbgwm"))))
+    (properties `((upstream-name . "contfrac")))
+    (build-system r-build-system)
+    (home-page
+      "https://github.com/RobinHankin/contfrac")
+    (synopsis "Continued Fractions")
+    (description
+      "Various utilities for evaluating continued fractions.")
+    (license license:gpl2)))
+
+(define-public r-elliptic
+  (package
+    (name "r-elliptic")
+    (version "1.4-0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "elliptic" version))
+        (sha256
+          (base32
+            "1dhba0yfxjd5rlqsxp5a7s2hclfkla9wigsr39dlma67l6qjjmxn"))))
+    (properties `((upstream-name . "elliptic")))
+    (build-system r-build-system)
+    (inputs `(("pari-gp" ,pari-gp)))
+    (propagated-inputs `(("r-mass" ,r-mass)))
+    (home-page
+      "https://github.com/RobinHankin/elliptic")
+    (synopsis
+      "Weierstrass and Jacobi Elliptic Functions")
+    (description
+      "A suite of elliptic and related functions including Weierstrass and
+Jacobi forms.  Also includes various tools for manipulating and visualizing
+complex functions.")
+    (license license:gpl2)))
+
+(define-public r-hypergeo
+  (package
+    (name "r-hypergeo")
+    (version "1.2-13")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "hypergeo" version))
+        (sha256
+          (base32
+            "13jdiy216znwhr91iqnh03mvkmyscw439syb3h4i67dd78sphnvd"))))
+    (properties `((upstream-name . "hypergeo")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-contfrac" ,r-contfrac)
+        ("r-desolve" ,r-desolve)
+        ("r-elliptic" ,r-elliptic)))
+    (home-page
+      "https://cran.r-project.org/web/packages/hypergeo/")
+    (synopsis "The Gauss Hypergeometric Function")
+    (description
+      "The Gaussian hypergeometric function for complex numbers.")
+    (license license:gpl2)))
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index e5719f97e4..bc47bf1287 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages llvm)
@@ -269,6 +271,38 @@ the term library to handle the ANSI nonsense and hence it works on Windows,
 Mac, and Unix.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-avif-parse-0.13
+  (package
+    (name "rust-avif-parse")
+    (version "0.13.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "avif-parse" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vylrjq77mpl6flmd85j5f2qimh6vjn03syvq8agb62x56khm0xj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitreader" ,rust-bitreader-0.3)
+        ("rust-byteorder" ,rust-byteorder-1)
+        ("rust-fallible-collections" ,rust-fallible-collections-0.4)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-static-assertions" ,rust-static-assertions-1))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.8)
+        ("rust-walkdir" ,rust-walkdir-2))))
+    (home-page "https://github.com/kornelski/avif-parse")
+    (synopsis "Parser for AVIF image files")
+    (description "This AVIF parser allows extracting the AV1 payload and alpha
+channel metadata out of AVIF image files.  The parser is a fork of Mozilla's
+MP4 parser used in Firefox, so it's designed to be robust and safely handle
+untrusted data.")
+    (license license:mpl2.0)))
+
 (define-public rust-avif-serialize-0.6
   (package
     (name "rust-avif-serialize")
@@ -1915,75 +1949,6 @@ interactive applications.")
         ("rust-glob" ,rust-glob-0.2)
         ("rust-term" ,rust-term-0.4))))))
 
-(define-public rust-rav1e-0.4
-  (package
-    (name "rust-rav1e")
-    (version "0.4.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "rav1e" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "02cpgzycfgnflnv8sck6ajasa7abfgdzn6b4jv01sf6r21yfipbq"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-aom-sys" ,rust-aom-sys-0.2)
-        ("rust-arbitrary" ,rust-arbitrary-0.4)
-        ("rust-arg-enum-proc-macro" ,rust-arg-enum-proc-macro-0.3)
-        ("rust-arrayvec" ,rust-arrayvec-0.5)
-        ("rust-assert-cmd" ,rust-assert-cmd-1)
-        ("rust-av-metrics" ,rust-av-metrics-0.6)
-        ("rust-backtrace" ,rust-backtrace-0.3)
-        ("rust-bitstream-io" ,rust-bitstream-io-1)
-        ("rust-byteorder" ,rust-byteorder-1)
-        ("rust-cc" ,rust-cc-1)
-        ("rust-cfg-if" ,rust-cfg-if-1)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-console" ,rust-console-0.14)
-        ("rust-criterion" ,rust-criterion-0.3)
-        ("rust-crossbeam" ,rust-crossbeam-0.8)
-        ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
-        ("rust-fern" ,rust-fern-0.6)
-        ("rust-image" ,rust-image-0.23)
-        ("rust-interpolate-name" ,rust-interpolate-name-0.2)
-        ("rust-itertools" ,rust-itertools-0.10)
-        ("rust-ivf" ,rust-ivf-0.1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-libfuzzer-sys" ,rust-libfuzzer-sys-0.3)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-nasm-rs" ,rust-nasm-rs-0.2)
-        ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.3)
-        ("rust-num-derive" ,rust-num-derive-0.3)
-        ("rust-num-traits" ,rust-num-traits-0.2)
-        ("rust-paste" ,rust-paste-1)
-        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
-        ("rust-rand" ,rust-rand-0.8)
-        ("rust-rand-chacha" ,rust-rand-chacha-0.3)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-rust-hawktracer" ,rust-rust-hawktracer-0.7)
-        ("rust-rustc-version" ,rust-rustc-version-0.3)
-        ("rust-scan-fmt" ,rust-scan-fmt-0.2)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-signal-hook" ,rust-signal-hook-0.3)
-        ("rust-simd-helpers" ,rust-simd-helpers-0.1)
-        ("rust-thiserror" ,rust-thiserror-1)
-        ("rust-toml" ,rust-toml-0.5)
-        ("rust-v-frame" ,rust-v-frame-0.2)
-        ("rust-vergen" ,rust-vergen-3)
-        ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
-        ("rust-y4m" ,rust-y4m-0.7))))
-    (home-page "https://github.com/xiph/rav1e")
-    (synopsis "Fast and safe AV1 encoder")
-    (description
-     "@code{rav1e} is an AV1 video encoder.  It is designed to eventually
-cover all use cases, though in its current form it is most suitable for cases
-where libaom (the reference encoder) is too slow.")
-    (license license:bsd-2)))
-
 (define-public rust-ravif-0.6
   (package
     (name "rust-ravif")
@@ -1997,20 +1962,22 @@ where libaom (the reference encoder) is too slow.")
         (base32 "1gyc7w1fz3qdk95cdpkj185dm6lskxfp329xm69waxc565fcz9rx"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-avif-serialize" ,rust-avif-serialize-0.6)
         ("rust-imgref" ,rust-imgref-1)
         ("rust-loop9" ,rust-loop9-0.1)
         ("rust-num-cpus" ,rust-num-cpus-1)
-        ("rust-rav1e" ,rust-rav1e-0.4)
+        ("rav1e" ,rav1e)
         ("rust-rayon" ,rust-rayon-1)
-        ("rust-rgb" ,rust-rgb-0.8))))
+        ("rust-rgb" ,rust-rgb-0.8))
+       #:cargo-development-inputs
+       (("rust-avif-parse" ,rust-avif-parse-0.13))))
+    (native-inputs
+     `(("nasm" ,nasm)))                 ;for building rav1e
     (home-page "https://lib.rs/ravif")
     (synopsis "Library for encoding images in AVIF format")
-    (description
-     "This package is a rav1e-based pure Rust library for encoding images in
-AVIF format.")
+    (description "This package is a rav1e-based pure Rust library for encoding
+images in AVIF format.")
     (license license:bsd-3)))
 
 (define-public rust-raw-window-handle-0.3
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c488a769f6..76c1b2f954 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16,6 +16,8 @@
 ;;; Copyright © 2021 aecepoglu <aecepoglu@fastmail.fm>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -56,6 +58,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages rust)
   #:use-module (gnu packages rust-apps)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
@@ -64,7 +67,8 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (srfi srfi-1))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -1487,14 +1491,14 @@ using AES-NI for high performance.")
 (define-public rust-aho-corasick-0.7
   (package
     (name "rust-aho-corasick")
-    (version "0.7.15")
+    (version "0.7.18")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "aho-corasick" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1rb8gzhljl8r87dpf2n5pnqnkl694casgns4ma0sqzd4zazzw13l"))))
+        (base32 "0vv50b3nvkhyy7x7ip19qnsq11bqlnffkmj2yx2xlyk5wzawydqy"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -1930,23 +1934,23 @@ on every platform.")
          "153awzwywmb61xg857b80l63b1x6hifx2pha7lxf6fck9qxwraq8"))))
     (arguments '())))
 
-(define-public rust-arbitrary-0.4
+(define-public rust-arbitrary-1
   (package
     (name "rust-arbitrary")
-    (version "0.4.7")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "arbitrary" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0sa55cynafwzvlhyhfpm3vmi2fydj3ipdj5yfbaif7l56cixfmfv"))))
+        (base32 "14a6r7q9b1kf1m7810p8bcl51q11mrwc5z7fjkz0lx6kdvyk0x13"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-derive-arbitrary" ,rust-derive-arbitrary-0.4))))
-    (home-page "https://github.com/nagisa/rust_arbitrary")
+       (("rust-derive-arbitrary" ,rust-derive-arbitrary-1))))
+    (home-page "https://github.com/rust-fuzz/arbitrary")
     (synopsis "Trait for generating structured data from unstructured data")
     (description
      "The @code{Arbitrary} crate lets you construct arbitrary instance of
@@ -1959,6 +1963,22 @@ values.  This allows you to combine structure-aware test case generation with
 coverage-guided, mutation-based fuzzers.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-arbitrary-0.4
+  (package/inherit rust-arbitrary-1
+    (name "rust-arbitrary")
+    (version "0.4.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "arbitrary" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0sa55cynafwzvlhyhfpm3vmi2fydj3ipdj5yfbaif7l56cixfmfv"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-derive-arbitrary" ,rust-derive-arbitrary-0.4))))))
+
 (define-public rust-arbitrary-0.2
   (package
     (inherit rust-arbitrary-0.4)
@@ -2118,6 +2138,31 @@ coverage-guided, mutation-based fuzzers.")
 that runs on Argon2.")
     (license license:expat)))
 
+(define-public rust-array-ops-0.1
+  (package
+    (name "rust-array-ops")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "array-ops" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jn7l9gppp6kr9kgsy22sw5p9cn1jazmqxy296gjwiwz5d11i4fc"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.4))))
+    (home-page "https://github.com/bodil/array-ops")
+    (synopsis "Automatic method implementations for array data types")
+    (description "This package provides a number of traits with default
+implementations for most of the standard library's methods on array like data
+structures.")
+    (license license:mpl2.0)))
+
 (define-public rust-arrayref-0.3
   (package
     (name "rust-arrayref")
@@ -2195,6 +2240,120 @@ ArrayVec and ArrayString.")
         ("rust-matches" ,rust-matches-0.1)
         ("rust-serde-test" ,rust-serde-test-1))))))
 
+(define-public rust-askama-escape-0.10
+  (package
+    (name "rust-askama-escape")
+    (version "0.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "askama_escape" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ys6wcrkpzygk6r93zd0rhinhy89rraarl0m4afwi023m70hihch"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page "https://github.com/djc/askama")
+    (synopsis
+     "Optimized HTML escaping code, extracted from Askama")
+    (description
+     "This package provides a optimized HTML escaping code, extracted from
+Askama.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-askama-shared-0.11
+  (package
+    (name "rust-askama-shared")
+    (version "0.11.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "askama_shared" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1g3ksf5is0qwx9rd5lxn5gbvxfcpby5gl9cahg26wl1w1xzbg0i5"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-askama-escape" ,rust-askama-escape-0.10)
+        ("rust-humansize" ,rust-humansize-1)
+        ("rust-nom" ,rust-nom-6)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-percent-encoding"
+         ,rust-percent-encoding-2)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-quote" ,rust-quote-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-serde-yaml" ,rust-serde-yaml-0.8)
+        ("rust-syn" ,rust-syn-1)
+        ("rust-toml" ,rust-toml-0.5))))
+    (home-page "https://github.com/djc/askama")
+    (synopsis "Shared code for Askama")
+    (description "This package provides a shared code for Askama.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-askama-derive-0.10
+  (package
+    (name "rust-askama-derive")
+    (version "0.10.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "askama_derive" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08jmqb4lq5cvfjjcq7kjk5q4589zlsvc3ld35yfjyf4hqb22aafa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-askama-shared" ,rust-askama-shared-0.11)
+        ("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("rust-syn" ,rust-syn-1))))
+    (home-page "https://github.com/djc/askama")
+    (synopsis "Procedural macro package for Askama")
+    (description
+     "This package provide procedural macro package for Askama.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-askama-0.10
+  (package
+    (name "rust-askama")
+    (version "0.10.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "askama" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0d1iwywdgw3nba2iphayw8sfm3s8m9izwnhfar707qa7ds5p766j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-askama-derive" ,rust-askama-derive-0.10)
+        ("rust-askama-escape" ,rust-askama-escape-0.10)
+        ("rust-askama-shared" ,rust-askama-shared-0.11)
+        ("rust-mime" ,rust-mime-0.3)
+        ("rust-mime-guess" ,rust-mime-guess-2))))
+    (home-page "https://github.com/djc/askama")
+    (synopsis
+     "Type-safe, compiled Jinja-like templates for Rust")
+    (description
+     "This package provides a type-safe, compiled Jinja-like templates for Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-as-slice-0.1
   (package
     (name "rust-as-slice")
@@ -2316,7 +2475,7 @@ standard library.")
 (define-public rust-assert-cmd-1
   (package
     (name "rust-assert-cmd")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
       (origin
         (method url-fetch)
@@ -2325,7 +2484,7 @@ standard library.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "15h3wfxn1q7sfcrin4z35x9hgf539f2dhkwz2mq4zswlrmc5nizj"))))
+          "127mhhjbclg63rfhmy0jc382w5x7y6aig0b9rhnyfkbymk0zwmwg"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -3703,6 +3862,25 @@ trace (backtrace) at runtime in a Rust program.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-base32-0.4
+  (package
+    (name "rust-base32")
+    (version "0.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "base32" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ykwx8jhksqxghfgyw2pzikzjf4n9wqm1x2ww5wqyn68ssf6dki3"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/andreasots/base32")
+    (synopsis "Base32 encoder/decoder for Rust")
+    (description "This library lets you encode and decode in either
+RFC4648 Base32 or in Crockford Base32.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-base58-0.1
   (package
     (name "rust-base58")
@@ -4417,7 +4595,8 @@ bindings to C and C++ libraries.")
         ("rust-shlex" ,rust-shlex-0.1))))))
 
 (define-public rust-bindgen-0.49
-  (package/inherit rust-bindgen-0.50
+  (package
+    (inherit rust-bindgen-0.50)
     (name "rust-bindgen")
     (version "0.49.4")
     (source
@@ -4687,6 +4866,57 @@ behave like a set of bitflags.")
     (build-system cargo-build-system)
     (arguments `(#:skip-build? #t))))
 
+(define-public rust-bitmaps-2
+  (package
+    (name "rust-bitmaps")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bitmaps" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18k4mcwxl96yvii5kcljkpb8pg5j4jj1zbsdn26nsx4r83846403"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-typenum" ,rust-typenum-1))
+       #:cargo-development-inputs
+       (("rust-proptest", rust-proptest-0.9)
+        ("rust-proptest-derive", rust-proptest-derive-0.1))))
+    (home-page "https://github.com/bodil/bitmaps")
+    (synopsis "Fixed size compact boolean array in Rust")
+    (description "This crate provides a convenient and efficient way of
+declaring and working with fixed size bitmaps in Rust.")
+    (license license:mpl2.0)))
+
+(define-public rust-bitreader-0.3
+  (package
+    (name "rust-bitreader")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bitreader" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06wlzf8ra7k8ya0m71dq0kxbaalaan48dymairn9q8s4gld1hy4i"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-1))))
+    (home-page "https://github.com/irauta/bitreader")
+    (synopsis "Individual bits reader from a slice of bytes")
+    (description "BitReader helps reading individual bits from a slice of
+bytes.  You can read an arbitrary numbers of bits from the byte slice, for
+example 13 bits at once.  The reader internally keeps track of position within
+the buffer.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-bitstream-io-1
   (package
     (name "rust-bitstream-io")
@@ -5950,7 +6180,8 @@ little-endian.")
        (("rust-serde" ,rust-serde-1))))))
 
 (define-public rust-bytes-0.4
-  (package/inherit rust-bytes-0.5
+  (package
+    (inherit rust-bytes-0.5)
     (name "rust-bytes")
     (version "0.4.12")
     (source
@@ -6048,6 +6279,29 @@ little-endian.")
 exposed as Reader/Writer streams.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-bytesize-1
+  (package
+    (name "rust-bytesize")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bytesize" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nl2j2bi9nk3q564jhyb77947wdv5ch54r14gjv4c59s563qd8c1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/hyunsik/bytesize/")
+    (synopsis "Human-readable byte count representation library for Rust")
+    (description "ByteSize is an utility for human-readable byte count
+representation, with support for both SI and binary units.")
+    (license license:asl2.0)))
+
 (define-public rust-bzip2-0.3
   (package
     (inherit rust-bzip2-0.4)
@@ -6499,6 +6753,96 @@ remote procedure call protocol")
 capabilities")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cargo-0.53
+  (package
+    (name "rust-cargo")
+    (version "0.53.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cargo" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12ns9v4dd8vnvsaqgd897h2zc19w00i5ii3slda653zbhfzm6zna"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; The test suite is disabled as the internal 'cargo-test-macro' and
+       ;; 'cargo-test-support' crates are not included in the release.
+       #:tests? #f
+       #:rust ,rust-1.52        ;transitively inherited from rust-sized-chunks
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-atty" ,rust-atty-0.2)
+        ("rust-bytesize" ,rust-bytesize-1)
+        ("rust-cargo-platform" ,rust-cargo-platform-0.1)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-core-foundation" ,rust-core-foundation-0.9)
+        ("rust-crates-io" ,rust-crates-io-0.33)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
+        ("rust-crypto-hash" ,rust-crypto-hash-0.3)
+        ("rust-curl" ,rust-curl-0.4)
+        ("rust-curl-sys" ,rust-curl-sys-0.4)
+        ("rust-env-logger" ,rust-env-logger-0.8)
+        ("rust-filetime" ,rust-filetime-0.2)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-fwdansi" ,rust-fwdansi-1)
+        ("rust-git2" ,rust-git2-0.13)
+        ("rust-git2-curl" ,rust-git2-curl-0.14)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-hex" ,rust-hex-0.4)
+        ("rust-home" ,rust-home-0.5)
+        ("rust-humantime" ,rust-humantime-2)
+        ("rust-ignore" ,rust-ignore-0.4)
+        ("rust-im-rc" ,rust-im-rc-15)
+        ("rust-jobserver" ,rust-jobserver-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-lazycell" ,rust-lazycell-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-libgit2-sys" ,rust-libgit2-sys-0.12)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-miow" ,rust-miow-0.3)
+        ("rust-num-cpus" ,rust-num-cpus-1)
+        ("rust-opener" ,rust-opener-0.4)
+        ("rust-openssl" ,rust-openssl-0.10)
+        ("rust-percent-encoding" ,rust-percent-encoding-2)
+        ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-rustc-workspace-hack" ,rust-rustc-workspace-hack-1)
+        ("rust-rustfix" ,rust-rustfix-0.5)
+        ("rust-same-file" ,rust-same-file-1)
+        ("rust-semver" ,rust-semver-0.10)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-ignored" ,rust-serde-ignored-0.1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-shell-escape" ,rust-shell-escape-0.1)
+        ("rust-strip-ansi-escapes" ,rust-strip-ansi-escapes-0.1)
+        ("rust-tar" ,rust-tar-0.4)
+        ("rust-tar" ,rust-tar-0.4)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-termcolor" ,rust-termcolor-1)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-unicode-xid" ,rust-unicode-xid-0.2)
+        ("rust-url" ,rust-url-2)
+        ("rust-walkdir" ,rust-walkdir-2)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("libssh2" ,libssh2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://crates.io")
+    (synopsis "Package manager for Rust")
+    (description "Cargo, a package manager for Rust.  This package provides
+the library crate of Cargo.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-cargo-metadata-0.9
   (package
     (name "rust-cargo-metadata")
@@ -6557,6 +6901,29 @@ metadata}.")
        (;("rust-docopt" ,rust-docopt-0.8)
         ("rust-clap" ,rust-clap-2))))))
 
+(define-public rust-cargo-platform-0.1
+  (package
+    (name "rust-cargo-platform")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cargo-platform" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mzi60pf0z83qkzqp7jwd61xnqz2b5ydsj7rnnikbgyicd5989h2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/rust-lang/cargo")
+    (synopsis "Target platform abstraction for Cargo")
+    (description "This package provides abstractions for the target platforms
+supported by Cargo.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-cargon-0.0
   (package
     (name "rust-cargon")
@@ -7087,19 +7454,90 @@ traits.")
         ("rust-libc" ,rust-libc-0.2)
         ("rust-libloading" ,rust-libloading-0.3))))))
 
+(define-public rust-clap-derive-3
+  (package
+    (name "rust-clap-derive")
+    (version "3.0.0-beta.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "clap_derive" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18cn82jhcha7m0nkpi1a03jx8k7aaq5kxfcxnsqpaa8ih5dp23rp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-heck" ,rust-heck-0.3)
+        ("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://clap.rs/")
+    (synopsis
+     "Parse command line argument by defining a struct, derive crate")
+    (description
+     "This package provides a parse command line argument by defining a struct,
+derive crate.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-clap-3
+  (package
+    (name "rust-clap")
+    (version "3.0.0-beta.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "clap" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hm1kivw6190rxbfqhdr4hqwlrijvwh90i3d9dyyw0d5k0chdlab"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-atty" ,rust-atty-0.2)
+        ("rust-bitflags" ,rust-bitflags-1)
+        ("rust-clap-derive" ,rust-clap-derive-3)
+        ("rust-indexmap" ,rust-indexmap-1)
+        ("rust-os-str-bytes" ,rust-os-str-bytes-2)
+        ("rust-strsim" ,rust-strsim-0.10)
+        ("rust-termcolor" ,rust-termcolor-1)
+        ("rust-terminal-size" ,rust-terminal-size-0.1)
+        ("rust-textwrap" ,rust-textwrap-0.12)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-vec-map" ,rust-vec-map-0.8)
+        ("rust-yaml-rust" ,rust-yaml-rust-0.4))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-version-sync" ,rust-version-sync-0.8))))
+    (home-page "https://clap.rs/")
+    (synopsis "Command Line Argument Parser")
+    (description
+     "This package provides a simple to use, efficient, and full-featured
+Command Line Argument Parser.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-clap-2
   (package
+    (inherit rust-clap-3)
     (name "rust-clap")
     (version "2.33.3")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "clap" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "00i065a58987k1sbzqmlz721rw521zcg08jmsh40gi3khp3qmr9p"))))
-    (build-system cargo-build-system)
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "clap" version))
+       (file-name (string-append name "-" version ".crate"))
+       (sha256
+        (base32
+         "00i065a58987k1sbzqmlz721rw521zcg08jmsh40gi3khp3qmr9p"))))
     (arguments
      `(#:cargo-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.11)
@@ -7116,11 +7554,6 @@ traits.")
        (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-regex" ,rust-regex-1)
         ("rust-version-sync" ,rust-version-sync-0.8))))
-    (home-page "https://clap.rs/")
-    (synopsis "Command Line Argument Parser")
-    (description
-     "This package provides a simple to use, efficient, and full-featured
-Command Line Argument Parser.")
     (license license:expat)))
 
 (define-public rust-clicolors-control-1
@@ -7661,7 +8094,8 @@ colors.")
     (license license:mpl2.0)))
 
 (define-public rust-colored-1.9.1
-  (package/inherit rust-colored-1
+  (package
+    (inherit rust-colored-1)
     (name "rust-colored")
     (version "1.9.1")
     (source
@@ -7756,6 +8190,57 @@ combinator.")
 and 1.0.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-commoncrypto-sys-0.2
+  (package
+    (name "rust-commoncrypto-sys")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "commoncrypto-sys" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1ql381ziqh594a7z6m9bvs583lkrhbynk02pmbgp7aj7czs39v8z"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build? #t                ;requires the Mac OS library
+        #:cargo-inputs
+        (("rust-clippy" ,rust-clippy-0.0)
+         ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/malept/rust-commoncrypto")
+    (synopsis "FFI bindings to Mac OS X's CommonCrypto library")
+    (description "This package is a component of the @code{commoncrypto}
+library which provides Rust FFI bindings and idiomatic wrappers for Mac OS X's
+CommonCrypto library.")
+    (license license:expat)))
+
+(define-public rust-commoncrypto-0.2
+  (package
+    (name "rust-commoncrypto")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "commoncrypto" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "01whnqcziclsj1gwavvqhrw2r5cmwh00j2fbc56iwnm2ddcahmnh"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build? #t
+        #:cargo-inputs
+        (("rust-clippy" ,rust-clippy-0.0)
+         ("rust-commoncrypto-sys" ,rust-commoncrypto-sys-0.2))))
+    (home-page "https://github.com/malept/rust-commoncrypto")
+    (synopsis "Idiomatic Rust wrappers for Mac OS X's CommonCrypto library")
+    (description "The @{commoncrypto} library provides Rust FFI bindings and
+idiomatic wrappers for Mac OS X's CommonCrypto library.")
+    (license license:expat)))
+
 (define-public rust-common-path-1
   (package
     (name "rust-common-path")
@@ -8797,6 +9282,29 @@ intrinsics.")
        (("rust-clap" ,rust-clap-2)
         ("rust-diff" ,rust-diff-0.1))))))
 
+(define-public rust-cpufeatures-0.1
+  (package
+    (name "rust-cpufeatures")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cpufeatures" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1j0i97325c2grndsfgnm3lqk0xbyvdl2dbgn8i5dd9yhnmycc07d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/RustCrypto/utils")
+    (synopsis "Alternative to the @code{is_x86_feature_detected!} macro")
+    (description
+     "Cpufeatures is a lightweight and efficient no-std compatible alternative
+to the @code{is_x86_feature_detected!} macro.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-cpuid-bool-0.1
   (package
     (name "rust-cpuid-bool")
@@ -8851,6 +9359,39 @@ to @code{is_x86_feature_detected}.")
      "Library for retrieving and interacting with the crates.io index.")
     (license license:asl2.0)))
 
+(define-public rust-crates-io-0.33
+  (package
+    (name "rust-crates-io")
+    (version "0.33.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "crates-io" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "147mggf85fz77vsrzsvsxxwid4f4fg30zwfyirx7sl1k7y33hw91"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-curl" ,rust-curl-0.4)
+        ("rust-percent-encoding" ,rust-percent-encoding-2)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-url" ,rust-url-2))))
+    (native-inputs
+     `(("curl" ,curl)
+       ("openssl" ,openssl)
+       ("pkg-config" ,pkg-config)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/rust-lang/cargo")
+    (synopsis "Helpers for interacting with @url{crates.io}")
+    (description "This package provides helpers for interacting with
+@url{crates.io}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-crc-1
   (package
     (name "rust-crc")
@@ -9813,6 +10354,34 @@ Code (MAC) algorithms.")
 algorithms.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-crypto-hash-0.3
+  (package
+    (name "rust-crypto-hash")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "crypto-hash" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jnxgpk0j29hzcv42viq5dckyfjnxdjsar55366j95zx80i1cxwa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-commoncrypto" ,rust-commoncrypto-0.2)
+        ("rust-hex" ,rust-hex-0.3)
+        ("rust-openssl" ,rust-openssl-0.10)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (inputs
+     `(("openssl" ,openssl)))
+    (home-page "https://github.com/malept/crypto-hash")
+    (synopsis "Wrapper for OS-level cryptographic hash functions")
+    (description "This package provides a wrapper for OS-level cryptographic
+hash functions.")
+    (license license:expat)))
+
 (define-public rust-cryptovec-0.4
   (package
     (name "rust-cryptovec")
@@ -11055,17 +11624,17 @@ algorithm which serves to quantify the difference between two colors.")
 Rust.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-derive-arbitrary-0.4
+(define-public rust-derive-arbitrary-1
   (package
     (name "rust-derive-arbitrary")
-    (version "0.4.7")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "derive_arbitrary" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1rp0z4k0j5ip0bx6dssg97l4q6bakhf6lm5h1lpr3p3kwjsi585i"))))
+        (base32 "0nig0iydva7a9h9i9qyi6an9w5qjafmn3qlzvdqqiw0x2kp824jz"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -11080,6 +11649,18 @@ Rust.")
 Instead, enable the @code{derive} feature of the @code{arbitrary} crate.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-derive-arbitrary-0.4
+  (package/inherit rust-derive-arbitrary-1
+    (name "rust-derive-arbitrary")
+    (version "0.4.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "derive_arbitrary" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1rp0z4k0j5ip0bx6dssg97l4q6bakhf6lm5h1lpr3p3kwjsi585i"))))))
+
 (define-public rust-derive-builder-0.9
   (package
     (name "rust-derive-builder")
@@ -11576,7 +12157,8 @@ Diesel.")
     (license license:expat)))
 
 (define-public rust-difference-1
-  (package/inherit rust-difference-2
+  (package
+    (inherit rust-difference-2)
     (name "rust-difference")
     (version "1.0.0")
     (source
@@ -11657,7 +12239,7 @@ diff.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-blobby" ,rust-blobby-0.1)
-        ("rust-generic-array" ,rust-generic-array-0.13))))))
+        ("rust-generic-array" ,rust-generic-array-0.12))))))
 
 (define-public rust-digest-0.7
   (package
@@ -12124,7 +12706,8 @@ from macros.")
     (license (list license:expat license:unlicense))))
 
 (define-public rust-docopt-0.8
-  (package/inherit rust-docopt-1
+  (package
+    (inherit rust-docopt-1)
     (name "rust-docopt")
     (version "0.8.3")
     (source
@@ -13304,6 +13887,30 @@ variables.")
      "Environment variables utility functions.")
     (license license:asl2.0)))
 
+(define-public rust-envy-0.4
+  (package
+    (name "rust-envy")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "envy" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rar459p7pl19v6pbx98q3hi2hxfl8q1ndxxw5d4zd9cgway0irz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))))
+    (home-page "https://github.com/softprops/envy")
+    (synopsis "Deserialize environment variables into Rust structs")
+    (description
+     "This package provides access to typesafe config structs
+deserialized from environment variables.")
+     (license license:expat)))
+
 (define-public rust-erased-serde-0.3
   (package
     (name "rust-erased-serde")
@@ -13700,6 +14307,34 @@ traits but without the boilerplate.")
      "Crate for mimicking simd crate on stable Rust.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-fallible-collections-0.4
+  (package
+    (name "rust-fallible-collections")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "fallible_collections" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sk6ckixvf0pax47qgs8lfd2zi2gmyg1xgk1k7z2qgalhaaidnaa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-hashbrown" ,rust-hashbrown-0.9))))
+    (home-page "https://github.com/vcombey/fallible_collections")
+    (synopsis "Fallible collections implementation in Rust")
+    (description "This library extends the Rust standard collections to return
+a result when an allocation error occurs, ala
+@url{https://github.com/rust-lang/rfcs/blob/master/text/2116-alloc-me-maybe.md,RFC
+2116}.  The API currently proposes a fallible interface for @code{Vec},
+@code{Box}, @code{Arc}, @code{Btree} and @code{Rc}, as well as a
+@code{TryClone} trait wich is implemented for primitive Rust traits and a
+fallible format macro.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-failure-0.1
   (package
     (name "rust-failure")
@@ -14015,7 +14650,7 @@ sparse files.")
 (define-public rust-filetime-0.2
   (package
     (name "rust-filetime")
-    (version "0.2.8")
+    (version "0.2.14")
     (source
       (origin
         (method url-fetch)
@@ -14023,14 +14658,14 @@ sparse files.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0zfc90802dbw11bx6kmm8zw6r88k7glm4q6l8riqw35an3dd9xhz"))))
+          "1s71cb7hzkk4ahc5j53w8933gnxv2giyj7v0za5hbbk37ahwyd0x"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if-0.1)
+       (("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+        ("rust-redox-syscall" ,rust-redox-syscall-0.2)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-tempfile" ,rust-tempfile-3))))
@@ -15823,6 +16458,32 @@ futures-rs library.")
     (description "This package provides a fuzzy matching library in Rust.")
     (license license:expat)))
 
+(define-public rust-fwdansi-1
+  (package
+    (name "rust-fwdansi")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "fwdansi" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "027jz2x5fbi6rskic8sd6xx0mn03a7dnhwkpyz8hamg8gxwgbh88"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-memchr" ,rust-memchr-2)
+        ("rust-termcolor" ,rust-termcolor-1))
+       #:cargo-development-inputs
+       (("rust-proptest" ,rust-proptest-0.9))))
+    (home-page "https://github.com/kennytm/fwdansi")
+    (synopsis "ANSI escape codes to termcolor terminal library")
+    (description "This library can be used to forward a byte string with ANSI
+escape codes to a termcolor terminal.")
+    (license license:expat)))
+
 (define-public rust-fxhash-0.2
   (package
     (name "rust-fxhash")
@@ -16552,14 +17213,16 @@ dirty state into your program.")
 (define-public rust-git2-0.13
   (package
     (name "rust-git2")
-    (version "0.13.15")
+    (version "0.13.20")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "git2" version))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0na3vsa44nn1sr6pzscn93w69wbmdih277mm2p3f6kcavb4ngwj4"))))
+        (base32
+         "1fkc2gzcnl4ci3rja9mc5jl2ygl3fkc1fgym3rcwby216ac1x0yr"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -16571,7 +17234,7 @@ dirty state into your program.")
         ("rust-openssl-sys" ,rust-openssl-sys-0.9)
         ("rust-url" ,rust-url-2))
        #:cargo-development-inputs
-       (("rust-paste" ,rust-paste-0.1)
+       (("rust-paste" ,rust-paste-1)
         ("rust-structopt" ,rust-structopt-0.3)
         ("rust-time" ,rust-time-0.1))))
     (native-inputs
@@ -16650,6 +17313,33 @@ reading and writing git repositories.")
         ("rust-thread-id" ,rust-thread-id-3)
         ("rust-time" ,rust-time-0.1))))))
 
+(define-public rust-git2-curl-0.14
+  (package
+    (name "rust-git2-curl")
+    (version "0.14.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "git2-curl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0l1sckmpvhd498c9ji04gkpfkfrpx7c8rabihczsnjx91v5kjdc8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t                 ;need rust-civet and others
+       #:cargo-inputs
+       (("rust-curl" ,rust-curl-0.4)
+        ("rust-git2" ,rust-git2-0.13)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-url" ,rust-url-2))))
+    (home-page "https://github.com/rust-lang/git2-rs")
+    (synopsis "Libgit2 HTTP transport backend powered by @code{libcurl}")
+    (description "Backend for an HTTP transport in @code{libgit2}, powered by
+libcurl, which is intended to be used with the @code{git2} crate.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gjson-0.7
   (package
     (name "rust-gjson")
@@ -17332,6 +18022,30 @@ of gzip files based on the gzip header implementation in the @code{flate2} crate
 IEEE 754-2008 binary16 type.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-home-0.5
+  (package
+    (name "rust-home")
+    (version "0.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "home" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0m3nfcksrj784liji1c5j47dymxw2l7hqy5fj90piadnwvrawmi4"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/brson/home")
+    (synopsis "Shared definitions of home directories")
+    (description "This packages provides the definition of @code{home_dir}
+used by @command{cargo} and @command{rustup}, as well as functions to find the
+correct value of @samp{CARGO_HOME} and @samp{RUSTUP_HOME}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-bat-0.17
   (package
     (name "rust-bat")
@@ -18313,7 +19027,8 @@ Hash-based Message Authentication Code algorithm} for SHA1.")
         ("rust-typed-arena" ,rust-typed-arena-1))))))
 
 (define-public rust-html5ever-0.23
-  (package/inherit rust-html5ever-0.24
+  (package
+    (inherit rust-html5ever-0.24)
     (name "rust-html5ever")
     (version "0.23.0")
     (source
@@ -18388,7 +19103,8 @@ requests and responses.")
     (license (list license:asl2.0 license:expat))))
 
 (define-public rust-http-0.1
-  (package/inherit rust-http-0.2
+  (package
+    (inherit rust-http-0.2)
     (name "rust-http")
     (version "0.1.17")
     (source
@@ -18455,7 +19171,8 @@ HTTP request or response body.")
         ("rust-http" ,rust-http-0.2))))))
 
 (define-public rust-http-body-0.1
-  (package/inherit rust-http-body-0.3
+  (package
+    (inherit rust-http-body-0.3)
     (name "rust-http-body")
     (version "0.1.0")
     (source
@@ -19125,6 +19842,74 @@ with hyper.")
        #:cargo-development-inputs
        (("rust-tokio" ,rust-tokio-0.1))))))
 
+(define-public rust-hyphenation-commons-0.8
+  (package
+    (name "rust-hyphenation-commons")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "hyphenation_commons" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "089jv1pr718aq0yjfcv6x0zljw9f73jm15khdsydzfln3ci7n4hj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build?
+       #t
+       #:cargo-inputs
+       (("rust-fst" ,rust-fst-0.4)
+        ("rust-serde" ,rust-serde-1))))
+    (home-page
+     "https://github.com/tapeinosyne/hyphenation")
+    (synopsis
+     "Proemial code for the @code{hyphenation} library")
+    (description
+     "This package provides a proemial code for the @code{hyphenation} library.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-hyphenation-0.8
+  (package
+    (name "rust-hyphenation")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "hyphenation" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "117h952d2zlpyqmy0kb49wb42rd3l5m5kl3ldfhgygv6lin09b2w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build?
+       #t
+       #:cargo-inputs
+       (("rust-bincode" ,rust-bincode-1)
+        ("rust-bincode" ,rust-bincode-1)
+        ("rust-fst" ,rust-fst-0.4)
+        ("rust-fst" ,rust-fst-0.4)
+        ("rust-hyphenation-commons"
+         ,rust-hyphenation-commons-0.8)
+        ("rust-hyphenation-commons"
+         ,rust-hyphenation-commons-0.8)
+        ("rust-pocket-resources"
+         ,rust-pocket-resources-0.3)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-unicode-normalization"
+         ,rust-unicode-normalization-0.1))))
+    (home-page
+     "https://github.com/tapeinosyne/hyphenation")
+    (synopsis
+     "Knuth-Liang hyphenation for a variety of languages")
+    (description
+     "This package provides a Knuth-Liang hyphenation for a variety of languages.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-ident-case-1
   (package
     (name "rust-ident-case")
@@ -20580,7 +21365,7 @@ the jni-bindgen code generator for binding to JVM APIs from Rust.")
 (define-public rust-jobserver-0.1
   (package
     (name "rust-jobserver")
-    (version "0.1.19")
+    (version "0.1.22")
     (source
      (origin
        (method url-fetch)
@@ -20589,7 +21374,7 @@ the jni-bindgen code generator for binding to JVM APIs from Rust.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1q2w80v8p2pbfm8ayhjs6zi11a1hp4535z4ck8kg872z8ldnrc37"))))
+         "1zg7p4khibisbvd8b1lqvvni6lr00g49d4bq2zj6m76bs7jmlbwp"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -21390,17 +22175,16 @@ algorithm and related formats (ZLIB, GZIP).")
 (define-public rust-libgit2-sys-0.12
   (package
     (name "rust-libgit2-sys")
-    (version "0.12.17+1.1.0")
+    (version "0.12.21+1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "libgit2-sys" version))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0hc89v7kp2b3rbc64cxq024shd85m8vqcs14i3gjclblr9jxzszl"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin (delete-file-recursively "libgit2") #t))))
+        (base32
+         "09b85x3gpvq0d7v1mhg4f3w1b3skzlpbikrx9j2rwarbsyn1n9w6"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -21466,32 +22250,6 @@ library.")
         (snippet
          '(begin (delete-file-recursively "libgit2") #t))))))
 
-(define-public rust-libgit2-sys-0.7
-  (package
-    (inherit rust-libgit2-sys-0.8)
-    (name "rust-libgit2-sys")
-    (version "0.7.11")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "libgit2-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1wcvg2qqra2aviasvqcscl8gb2rnjnd6h998wy5dlmf2bnriqi28"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin (delete-file-recursively "libgit2") #t))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-curl-sys" ,rust-curl-sys-0.4)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-libssh2-sys" ,rust-libssh2-sys-0.2)
-        ("rust-libz-sys" ,rust-libz-sys-1)
-        ("rust-openssl-sys" ,rust-openssl-sys-0.9)
-        ("rust-cc" ,rust-cc-1)
-        ("rust-pkg-config" ,rust-pkg-config-0.3))))))
-
 (define-public rust-libloading-0.6
   (package
     (name "rust-libloading")
@@ -22411,7 +23169,8 @@ explosion.")
         ("rust-serde-json" ,rust-serde-json-1))))))
 
 (define-public rust-loom-0.2
-  (package/inherit rust-loom-0.3
+  (package
+    (inherit rust-loom-0.3)
     (name "rust-loom")
     (version "0.2.13")
     (source
@@ -22433,7 +23192,8 @@ explosion.")
         ("rust-serde-json" ,rust-serde-json-1))))))
 
 (define-public rust-loom-0.1
-  (package/inherit rust-loom-0.3
+  (package
+    (inherit rust-loom-0.3)
     (name "rust-loom")
     (version "0.1.1")
     (source
@@ -23140,7 +23900,7 @@ unstable -Z self-profile flag.")
 (define-public rust-memchr-2
   (package
     (name "rust-memchr")
-    (version "2.3.4")
+    (version "2.4.0")
     (source
       (origin
         (method url-fetch)
@@ -23149,7 +23909,7 @@ unstable -Z self-profile flag.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "098m9clfs495illlw00hv2gg67mhm7jflld3msyclvi5m9xc9q8f"))))
+          "1p478fqf4nia2ma0kv4npb8x1hli0zz6k16517ikb51jkryx8sxi"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -23381,6 +24141,47 @@ for Rust structs.")
        (sha256
         (base32 "13ir50j549gdz94pds1i7ljnk14d66q5x91s11hncm1pih7jif8c"))))))
 
+(define-public rust-merge-derive-0.1
+  (package
+    (name "rust-merge-derive")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "merge_derive" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "01wxhi7mqmp34l540wcfb24hb13vcbps4wlynas66bnsfra0g790"))))
+    (build-system cargo-build-system)
+    (home-page "https://sr.ht/~ireas/merge-rs")
+    (synopsis "Derive macro for the merge crate")
+    (description "This crate provides a derive macro for the
+@code{merge::Merge} crate.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-merge-0.1
+  (package
+    (name "rust-merge")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "merge" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sck0vhi9lk8a6mgky0rgn842fj7yspywidwbd963nmimf9yzfqh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-merge-derive" ,rust-merge-derive-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2))))
+    (home-page "https://sr.ht/~ireas/merge-rs")
+    (synopsis "Rust trait for objects that can be merged")
+    (description "This package provides a merge trait that can be used
+to merge two objects of the same type into one.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-merlin-2
   (package
     (name "rust-merlin")
@@ -23536,6 +24337,61 @@ based on Rustls and Ring.")
        (("rust-sema" ,rust-sema-0.1)
         ("rust-winit" ,rust-winit-0.19)))))) ; 0.17?
 
+(define-public rust-twox-hash-1
+  (package
+    (name "rust-twox-hash")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "twox-hash" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ndb4pil758kn0av83jjgq8kkfkwc5lhi5ii7fk5yw96h1wapy04"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-digest" ,rust-digest-0.8)
+        ("rust-digest" ,rust-digest-0.9)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-static-assertions" ,rust-static-assertions-1))
+       #:cargo-development-inputs
+       (("rust-serde-json" ,rust-serde-json-1))))
+    (home-page "https://github.com/shepmaster/twox-hash")
+    (synopsis "Rust implementation of the XXHash and XXH3 algorithms")
+    (description "This package provides a Rust implementation of the XXHash
+and XXH3 algorithms.")
+    (license license:expat)))
+
+(define-public rust-metrohash-1
+  (package
+    (name "rust-metrohash")
+    (version "1.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "metrohash" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0v2hn33ypx79naimfcz58pz46qhj2prawvx1p9abrb72375m799v"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-fnv" ,rust-fnv-1)
+        ("rust-twox-hash" ,rust-twox-hash-1))))
+    (home-page
+     "https://github.com/arthurprs/metrohash-rs")
+    (synopsis "Rust implementation of the MetroHash hash algorithm")
+    (description "This library is a Rust implementation of MetroHash, a high
+quality, high performance hash algorithm.")
+    (license license:expat)))
+
 (define-public rust-meval-0.2
   (package
     (name "rust-meval")
@@ -25098,6 +25954,96 @@ selectors.  You can use the jQuery-like syntax to query and manipulate an HTML
 document quickly.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-nitrokey-0.9
+  (package
+    (name "rust-nitrokey")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nitrokey" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0c8mj52ckvy1311vwxs6jpw16b2bihp5cc811isb96j9slcjvsyx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy_static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-nitrokey-sys" ,rust-nitrokey-sys-3)
+        ("rust-rand_core" ,rust-rand-core-0.5))))
+    (home-page "https://git.sr.ht/~ireas/nitrokey-rs")
+    (synopsis "Rust bindings to libnitrokey")
+    (description
+     "This package provides bindings to libnitrokey for communication
+with Nitrokey devices.")
+    (license license:expat)))
+
+(define-public rust-nitrokey-sys-3
+  (package
+    (name "rust-nitrokey-sys")
+    (version "3.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nitrokey-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08c3lnb8iqx000jd5rzvrdvv4ihjyw3x3s8q11dw56is0nmjyvws"))))
+    (build-system cargo-build-system)
+    (home-page "https://git.sr.ht/~ireas/nitrokey-sys-rs")
+    (synopsis "Low-level Rust bindings for libnitrokey")
+    (description
+     "This package provides low-level bindings to libnitrokey for
+communication with Nitrokey devices.")
+    (license license:lgpl3)))
+
+(define-public rust-nitrokey-test-0.5
+  (package
+    (name "rust-nitrokey-test")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nitrokey-test" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "197j9r2s4ydzbqfydza6v31mgcsgd29jpidz4psqawjdm49f8lg6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1)
+        ("quote" ,rust-quote-1)
+        ("syn" ,rust-syn-1))))
+    (home-page "https://github.com/d-e-s-o/nitrokey-test")
+    (synopsis "Supporting test infrastructure for the nitrokey crate")
+    (description
+     "This package provides supporting test infrastructure for the
+nitrokey crate and others using it.")
+    (license license:gpl3+)))
+
+(define-public rust-nitrokey-test-state-0.1
+  (package
+    (name "rust-nitrokey-test-state")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nitrokey-test-state" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "00w817kl8q3sna924pzl72ybqljny14rdv1ixlj288fmsqp776x5"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/d-e-s-o/nitrokey-test")
+    (synopsis "State required and used by the nitrokey-test crate")
+    (description "This package provides state required and used by the
+nitrokey-test crate.")
+    (license license:gpl3+)))
+
 (define-public rust-nix-0.20
   (package
     (name "rust-nix")
@@ -26871,6 +27817,29 @@ contents.")
 the system.")
     (license license:expat)))
 
+(define-public rust-opener-0.4
+  (package
+    (name "rust-opener")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "opener" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bpknqvhqkalhmq8n2m97apc0r3y194ppybl1qxay34xr83p848k"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/Seeker14491/opener")
+    (synopsis "Open a file or link using the system default program")
+    (description "This crate provides the ability to open a file or link with
+the default program configured on the system.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-openssl-0.10
   (package
     (name "rust-openssl")
@@ -27098,10 +28067,10 @@ system for OpenSSL.")
 PartialOrd types, like floats.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-ordered-float-1
+(define-public rust-ordered-float-2
   (package
     (name "rust-ordered-float")
-    (version "1.0.2")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
@@ -27110,10 +28079,12 @@ PartialOrd types, like floats.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0625x96987kspdxbikry5mb7hsf5pdc5bbanxd8wjwqlx0ar71hq"))))
+         "0632g8bacvras6nig1bb1ihgc560476jkrb3is6n542ll86q8vvn"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:skip-build?
+       #t
+       #:cargo-inputs
        (("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-serde" ,rust-serde-1))
        #:cargo-development-inputs
@@ -27124,6 +28095,21 @@ PartialOrd types, like floats.")
      "This package provides wrappers for total ordering on floats in Rust.")
     (license license:expat)))
 
+(define-public rust-ordered-float-1
+  (package
+    (inherit rust-ordered-float-2)
+    (name "rust-ordered-float")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ordered-float" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0625x96987kspdxbikry5mb7hsf5pdc5bbanxd8wjwqlx0ar71hq"))))))
+
 (define-public rust-ordermap-0.3
   (package
     (name "rust-ordermap")
@@ -27184,6 +28170,30 @@ under its new name.")
      "A cross-platform library for opening OS pipes.")
     (license license:expat)))
 
+(define-public rust-os-str-bytes-2
+  (package
+    (name "rust-os-str-bytes")
+    (version "2.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "os_str_bytes" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11agh8n3x2l4sr3sxvx6byc1j3ryb1g6flb1ywn0qhq7xv1y3cmg"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page
+     "https://github.com/dylni/os_str_bytes")
+    (synopsis
+     "Traits for converting between byte sequences and platform-native strings")
+    (description
+     "This package provides a traits for converting between byte sequences and
+platform-native strings.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-output-vt100-0.1
   (package
     (name "rust-output-vt100")
@@ -30194,6 +31204,29 @@ macro use case.")
 @code{proc_macro_derive} pretend to be @code{proc_macro}.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-progressing-3
+  (package
+    (name "rust-progressing")
+    (version "3.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "progressing" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06sb1cxpkc8lx56s76c95cfljs0513nsnn35wd6w79sblwcxpdwp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("log" ,rust-log-0.4))))
+    (home-page "https://github.com/dominicparga/progressing")
+    (synopsis "Counting progress-bar for Rust")
+    (description
+     "This package provides a set of text-based, counting
+progress-bars for Rust.")
+    (license license:asl2.0)))
+
 (define-public rust-progrs-0.1
   (package
     (name "rust-progrs")
@@ -30535,7 +31568,8 @@ compliant email address validation.")
         ("rust-getopts" ,rust-getopts-0.2))))))
 
 (define-public rust-pulldown-cmark-0.0.8
-  (package/inherit rust-pulldown-cmark-0.4
+  (package
+    (inherit rust-pulldown-cmark-0.4)
     (name "rust-pulldown-cmark")
     (version "0.0.8")
     (source
@@ -32531,24 +33565,47 @@ functionality.")
         (base32
          "0av43xxjlinfqklb67rpj217cmaxfjsf8151gs0hbs4hnr5664ck"))))))
 
+(define-public rust-refpool-0.4
+  (package
+    (name "rust-refpool")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "refpool" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0n6b1qpq0fcyzm3nrmiw0z9x4nawy9dklqfr3mb8rp571yw8d7in"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3))))
+    (home-page "https://github.com/bodil/refpool")
+    (synopsis "Efficient memory pool with reference counting")
+    (description "@code{refpool} is a re-implementation of Rust's
+@code{std::boxed::Box} and @code{std::rc::Rc} which uses a pool of reusable
+memory to speed up reallocation.")
+    (license license:mpl2.0)))
+
 (define-public rust-regex-1
   (package
     (name "rust-regex")
-    (version "1.4.3")
+    (version "1.5.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "regex" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "12llbg82js69mdl50lav4yn1iqlx71ckb18dww467q99w4wi49fr"))))
+        (base32 "0qf479kjbmb582h4d1d6gfl75h0j8aq2nrdi5wg6zdcy6llqcynh"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-aho-corasick" ,rust-aho-corasick-0.7)
         ("rust-memchr" ,rust-memchr-2)
-        ("rust-regex-syntax" ,rust-regex-syntax-0.6)
-        ("rust-thread-local" ,rust-thread-local-1))
+        ("rust-regex-syntax" ,rust-regex-syntax-0.6))
        #:cargo-development-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
@@ -32654,14 +33711,14 @@ uses finite automata and guarantees linear time matching on all inputs.")
 (define-public rust-regex-syntax-0.6
   (package
     (name "rust-regex-syntax")
-    (version "0.6.22")
+    (version "0.6.25")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "regex-syntax" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "10b56ylil35jkb4nwqxm8hbyx3zq7fws0wpydjln165s8xql3sxm"))))
+        (base32 "16y87hz1bxmmz6kk360cxwfm3jnbsxb3x4zw9x1gzz7khic2i5zl"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/rust-lang/regex")
     (synopsis "Regular expression parser")
@@ -32830,14 +33887,14 @@ uses finite automata and guarantees linear time matching on all inputs.")
 (define-public rust-reqwest-0.11
   (package
     (name "rust-reqwest")
-    (version "0.11.2")
+    (version "0.11.3")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "reqwest" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1m12j00if0gj0alhad4r7w0air4j0gqlpiwiqpsxna4l51zha4mz"))))
+        (base32 "097i9z42jq2sn3va3r6pksz3gzffbnr3c4aapk6fhy9rqpxg55i2"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -32881,7 +33938,16 @@ uses finite automata and guarantees linear time matching on all inputs.")
         ("rust-wasm-bindgen-futures" ,rust-wasm-bindgen-futures-0.4)
         ("rust-web-sys" ,rust-web-sys-0.3)
         ("rust-webpki-roots" ,rust-webpki-roots-0.21)
-        ("rust-winreg" ,rust-winreg-0.7))))
+        ("rust-winreg" ,rust-winreg-0.7))
+       #:cargo-development-inputs
+       (("rust-brotli" ,rust-brotli-3)
+        ("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-env-logger" ,rust-env-logger-0.8)
+        ("rust-hyper" ,rust-hyper-0.14)
+        ("rust-libflate" ,rust-libflate-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-tokio" ,rust-tokio-1)
+        ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3))))
     (home-page "https://github.com/seanmonstar/reqwest")
     (synopsis "High level HTTP client library")
     (description "This package provides a high level HTTP client library.")
@@ -33151,7 +34217,8 @@ functionality as retain but gives mutable borrow to the predicate.")
         ("rust-cc" ,rust-cc-1))))))
 
 (define-public rust-ring-0.13
-  (package/inherit rust-ring-0.16
+  (package
+    (inherit rust-ring-0.16)
     (name "rust-ring")
     (version "0.13.5")
     (source
@@ -34916,10 +35983,10 @@ rustc compiler.")
      "This package provides a tool to manipulate rustdoc comments.")
     (license license:asl2.0)))
 
-(define-public rust-rustfix-0.4
+(define-public rust-rustfix-0.5
   (package
     (name "rust-rustfix")
-    (version "0.4.6")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
@@ -34928,12 +35995,12 @@ rustc compiler.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "01zn0ysnass3mmrhxk90584y713vjfq1x97mi4saac99g9vsql3i"))))
+         "0kkhfab60747zpmn8jwfdwl9a2s4rqiq7yjjfs7yppfwp9s0pigj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-failure" ,rust-failure-0.1)
+       (("rust-anyhow" ,rust-anyhow-1)
         ("rust-log" ,rust-log-0.4)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-json" ,rust-serde-json-1))
@@ -34950,6 +36017,25 @@ rustc compiler.")
      "Automatically apply the suggestions made by rustc.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustfix-0.4
+  (package/inherit rust-rustfix-0.5
+    (name "rust-rustfix")
+    (version "0.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustfix" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "01zn0ysnass3mmrhxk90584y713vjfq1x97mi4saac99g9vsql3i"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments rust-rustfix-0.5)
+       ((#:cargo-inputs cargo-inputs)
+        `(("rust-failure" ,rust-failure-0.1)
+          ,@(alist-delete "rust-anyhow" cargo-inputs)))))))
+
 (define-public rust-rustls-0.19
   (package
     (name "rust-rustls")
@@ -35112,7 +36198,8 @@ rustc compiler.")
         ("rust-webpki" ,rust-webpki-0.18))))))
 
 (define-public rust-rustls-0.12
-  (package/inherit rust-rustls-0.16
+  (package
+    (inherit rust-rustls-0.16)
     (name "rust-rustls")
     (version "0.12.0")
     (source
@@ -36159,7 +37246,8 @@ Pwrite traits from the scroll crate.")
         ("rust-untrusted" ,rust-untrusted-0.6))))))
 
 (define-public rust-sct-0.3
-  (package/inherit rust-sct-0.6
+  (package
+    (inherit rust-sct-0.6)
     (name "rust-sct")
     (version "0.3.0")
     (source
@@ -36661,6 +37749,33 @@ also have to make sure that the wrapper is dropped from within the original
 thread.  If any of these constraints is violated, a panic occurs.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-seq-macro-0.2
+  (package
+    (name "rust-seq-macro")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "seq-macro" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "168y8k344gssy1q0q6napy8cswgl4hyh2kcim9pk3b9wxbx4g7ss"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-rustversion" ,rust-rustversion-1)
+        ("rust-trybuild" ,rust-trybuild-1))))
+    (home-page
+     "https://github.com/dtolnay/seq-macro")
+    (synopsis
+     "Macro to repeat sequentially indexed copies of a fragment of code")
+    (description
+     "This package provides a macro to repeat sequentially indexed copies of a
+fragment of code.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-sequoia-openpgp-0.9
   (package
     (name "rust-sequoia-openpgp")
@@ -37182,17 +38297,44 @@ TOML/JSON/MessagePack strings and serializable values.")
         ("rust-serde-codegen-internals" ,rust-serde-codegen-internals-0.14)
         ("rust-syn" ,rust-syn-0.11))))))
 
+(define-public rust-serde-ignored-0.1
+  (package
+    (name "rust-serde-ignored")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "serde_ignored" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0bzz3546g3p01hgwh6jh0gyqdwc28xcp3pir4al2wbsgs4wpsb0w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1))
+       #:cargo-development-inputs
+       (("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1))))
+    (home-page "https://github.com/dtolnay/serde-ignored")
+    (synopsis "Find ignored keys when deserializing data")
+    (description "Find out about keys that are ignored when deserializing
+data.  This crate provides a wrapper that works with any existing Serde
+@code{Deserializer} and invokes a callback on every ignored field.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-serde-json-1
   (package
     (name "rust-serde-json")
-    (version "1.0.61")
+    (version "1.0.64")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "serde_json" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0nijvxvgcncvd1wbn73zx7q14bdxah0gf2789qd8kdjpa1cv5kjg"))))
+        (base32 "0y9gk3yikncrc0zajmwc0pidr7zfwafawb4gidf6mqyskzf9g7kr"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -38017,7 +39159,7 @@ code is translated from C to Rust using c2rust.")
 (define-public rust-sha2-0.9
   (package
     (name "rust-sha2")
-    (version "0.9.3")
+    (version "0.9.5")
     (source
       (origin
         (method url-fetch)
@@ -38026,17 +39168,16 @@ code is translated from C to Rust using c2rust.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1phjvjcvc33xa3xdpxw3a324ksbnrg9qhjnig13z9dwsn8a7m0ps"))))
+          "04lzf4swq6cijvxnc6facr3g72h5v7a5z8lz3xrkf8gxa9bswqmk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-block-buffer" ,rust-block-buffer-0.9)
         ("rust-cfg-if" ,rust-cfg-if-1)
-        ("rust-cpuid-bool" ,rust-cpuid-bool-0.1)
+        ("rust-cpufeatures" ,rust-cpufeatures-0.1)
         ("rust-digest" ,rust-digest-0.9)
-        ("rust-libc" ,rust-libc-0.2)
         ("rust-opaque-debug" ,rust-opaque-debug-0.3)
-        ("rust-sha2-asm" ,rust-sha2-asm-0.5))
+        ("rust-sha2-asm" ,rust-sha2-asm-0.6))
        #:cargo-development-inputs
        (("rust-digest" ,rust-digest-0.9)
         ("rust-hex-literal" ,rust-hex-literal-0.2))))
@@ -38115,27 +39256,40 @@ function family including SHA-224, SHA-256, SHA-384, and SHA-512.")
         ("rust-generic-array" ,rust-generic-array-0.8)
         ("rust-sha2-asm" ,rust-sha2-asm-0.3))))))
 
-(define-public rust-sha2-asm-0.5
+(define-public rust-sha2-asm-0.6
   (package
     (name "rust-sha2-asm")
-    (version "0.5.4")
+    (version "0.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "sha2-asm" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0y4n8r4362y2fa6p2j0dgny4zfi194gdf01l6j850n9vf8ha3kwj"))))
+        (base32 "08rp21zv96n8cnwcix177xkdw43zx8dqgfjfwd0gly9hvrl7lfaw"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-cc" ,rust-cc-1)))) ;; build dependency
+       (("rust-cc" ,rust-cc-1))))       ;build dependency
     (home-page "https://github.com/RustCrypto/asm-hashes")
     (synopsis "Assembly implementation of SHA-2")
     (description "This package provides an assembly implementations of hash
 functions core functionality.")
     (license license:expat)))
 
+(define-public rust-sha2-asm-0.5
+  (package
+    (inherit rust-sha2-asm-0.6)
+    (name "rust-sha2-asm")
+    (version "0.5.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "sha2-asm" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0y4n8r4362y2fa6p2j0dgny4zfi194gdf01l6j850n9vf8ha3kwj"))))))
+
 (define-public rust-sha2-asm-0.3
   (package
     (inherit rust-sha2-asm-0.5)
@@ -38734,6 +39888,34 @@ variants in pure Rust.")
     (description "This package allows for easier formatting of sizes.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-sized-chunks-0.6
+  (package
+    (name "rust-sized-chunks")
+    (version "0.6.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "sized-chunks" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07ix5fsdnpf2xsb0k5rbiwlmsicm2237fcx7blirp9p7pljr5mhn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:rust ,rust-1.52                ;requires the "if in const fn" feature
+       #:cargo-inputs
+       (("rust-arbitrary" ,rust-arbitrary-1)
+        ("rust-array-ops" ,rust-array-ops-0.1)
+        ("rust-bitmaps" ,rust-bitmaps-2)
+        ("rust-refpool" ,rust-refpool-0.4)
+        ("rust-typenum" ,rust-typenum-1))))
+    (home-page "https://github.com/bodil/sized-chunks")
+    (synopsis "Efficient sized chunk datatypes")
+    (description "This package provides various fixed length array data types,
+designed for @code{immutable.rs}.")
+    (license license:mpl2.0)))
+
 (define-public rust-skeptic-0.9
   (package
     (name "rust-skeptic")
@@ -40291,18 +41473,19 @@ and write it somewhere that does not easily support them, such as a log
 file.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-strsim-0.9
+(define-public rust-strsim-0.10
   (package
     (name "rust-strsim")
-    (version "0.9.3")
+    (version "0.10.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "strsim" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0k497pv882qn3q977ckznm13vxx927g8s1swvcv68j3c1pccwik4"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "strsim" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08s69r4rcrahwnickvi0kq49z524ci50capybln83mg6b473qivk"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/dguo/strsim-rs")
     (synopsis "Rust implementations of string similarity metrics")
@@ -40311,6 +41494,20 @@ metrics.  It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
 and Jaro-Winkler.")
     (license license:expat)))
 
+(define-public rust-strsim-0.9
+  (package
+    (inherit rust-strsim-0.10)
+    (name "rust-strsim")
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "strsim" version))
+       (file-name (string-append name "-" version ".crate"))
+       (sha256
+        (base32
+         "0k497pv882qn3q977ckznm13vxx927g8s1swvcv68j3c1pccwik4"))))))
+
 (define-public rust-strsim-0.8
   (package
     (inherit rust-strsim-0.9)
@@ -40358,16 +41555,16 @@ and Jaro-Winkler.")
 (define-public rust-structopt-0.3
   (package
     (name "rust-structopt")
-    (version "0.3.12")
+    (version "0.3.21")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "structopt" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "178m7wxnjyy9a8a961z74nazjsg79rfv3gv9g3bykfrrjmqs5yn8"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "structopt" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "136j0lvjmpv5syi751vxg8vb30gfyv4k81x8d18kxrj6xvbsqxsj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -40378,7 +41575,8 @@ and Jaro-Winkler.")
     (home-page "https://github.com/TeXitoi/structopt")
     (synopsis "Parse command line argument by defining a struct")
     (description
-     "Parse command line argument by defining a struct.")
+     "This package parses command lines arguments by defining a Rust
+struct.")
     (license (list license:asl2.0 license:expat))))
 
 (define-public rust-structopt-0.2
@@ -40407,31 +41605,31 @@ and Jaro-Winkler.")
 
 (define-public rust-structopt-derive-0.4
   (package
-    (name "rust-structopt-derive")
-    (version "0.4.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "structopt-derive" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0c04bbzc5bmr2ns6qy35yz55nn3xvlq4dpwxdynnljb9ikhvi21z"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-heck" ,rust-heck-0.3)
-        ("rust-proc-macro-error" ,rust-proc-macro-error-0.4)
-        ("rust-proc-macro2" ,rust-proc-macro2-1)
-        ("rust-syn" ,rust-syn-1)
-        ("rust-quote" ,rust-quote-1))))
-    (home-page "https://github.com/TeXitoi/structopt")
-    (synopsis "Parse command line argument by defining a struct, derive crate")
-    (description
-     "Parse command line argument by defining a struct, derive crate.")
-    (license (list license:asl2.0 license:expat))))
+   (name "rust-structopt-derive")
+   (version "0.4.14")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (crate-uri "structopt-derive" version))
+     (file-name
+      (string-append name "-" version ".tar.gz"))
+     (sha256
+      (base32
+       "143gjwvz3s86hwp070km83y25n8kqp5f01kb1dr19f4ilkywvaav"))))
+   (build-system cargo-build-system)
+   (arguments
+    `(#:skip-build? #t
+      #:cargo-inputs
+      (("rust-heck" ,rust-heck-0.3)
+       ("rust-proc-macro-error" ,rust-proc-macro-error-1)
+       ("rust-proc-macro2" ,rust-proc-macro2-1)
+       ("rust-syn" ,rust-syn-1)
+       ("rust-quote" ,rust-quote-1))))
+   (home-page "https://github.com/TeXitoi/structopt")
+   (synopsis "Parse command line argument by defining a struct, derive crate")
+   (description
+    "This package provides the derive Rust crate for the structopt crate.")
+   (license license:asl2.0)))
 
 (define-public rust-structopt-derive-0.2
   (package
@@ -41959,7 +43157,8 @@ template language.")
         ("rust-winapi" ,rust-winapi-0.2))))))
 
 (define-public rust-term-0.2
-  (package/inherit rust-term-0.4
+  (package
+    (inherit rust-term-0.4)
     (name "rust-term")
     (version "0.2.14")
     (source
@@ -42322,19 +43521,49 @@ for TLS).")
 unstable language features.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-textwrap-0.12
+  (package
+    (name "rust-textwrap")
+    (version "0.12.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "textwrap" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12978qmkl5gcp94lxndpvp9qxq8mxp7hm9xbrw3422dgikchhc10"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-hyphenation" ,rust-hyphenation-0.8)
+        ("rust-terminal-size" ,rust-terminal-size-0.1)
+        ("rust-unicode-width" ,rust-unicode-width-0.1))))
+    (home-page
+     "https://github.com/mgeisler/textwrap")
+    (synopsis "Library for word wrapping, indenting, and dedenting strings")
+    (description
+     "Textwrap is a small library for word wrapping, indenting, and dedenting
+strings.  You can use it to format strings (such as help and error messages)
+for display in commandline applications.  It is designed to be efficient and
+handle Unicode characters correctly.")
+    (license license:expat)))
+
 (define-public rust-textwrap-0.11
   (package
+    (inherit rust-textwrap-0.12)
     (name "rust-textwrap")
     (version "0.11.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "textwrap" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))))
-    (build-system cargo-build-system)
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "textwrap" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))))
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -42345,15 +43574,7 @@ unstable language features.")
        (;("rust-lipsum" ,rust-lipsum-0.6)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
-        ("rust-version-sync" ,rust-version-sync-0.6))))
-    (home-page "https://github.com/mgeisler/textwrap")
-    (synopsis "Library for word wrapping, indenting, and dedenting strings")
-    (description
-     "Textwrap is a small library for word wrapping, indenting, and dedenting
-strings.  You can use it to format strings (such as help and error messages)
-for display in commandline applications.  It is designed to be efficient and
-handle Unicode characters correctly.")
-    (license license:expat)))
+        ("rust-version-sync" ,rust-version-sync-0.6))))))
 
 (define-public rust-thin-slice-0.1
   (package
@@ -47061,7 +48282,8 @@ untrusted inputs in Rust.")
     (license license:isc)))
 
 (define-public rust-untrusted-0.6
-  (package/inherit rust-untrusted-0.7
+  (package
+    (inherit rust-untrusted-0.7)
     (name "rust-untrusted")
     (version "0.6.2")
     (source
@@ -47075,7 +48297,7 @@ untrusted inputs in Rust.")
 (define-public rust-url-2
   (package
     (name "rust-url")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
@@ -47084,7 +48306,7 @@ untrusted inputs in Rust.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "12qzdzgcvmc5l1fk4psldiipx80423mikb6g4a9qwb322d0rdkcw"))))
+         "132pzpvfvpw33gjlzqd55n5iag9qddzffq8qbp1myfykna1w61x5"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -47475,14 +48697,14 @@ first byte.")
 (define-public rust-v-frame-0.2
   (package
     (name "rust-v-frame")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "v_frame" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0xqf7dynsc6fm94jz3hknwi2n4ch1j7wrs0dd333r1ldniw49rf3"))))
+        (base32 "0ia1j0j1v5zp9bp91imbnbxnv937x3xfpc06nyj96yjfk8zbmxhp"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -47494,10 +48716,9 @@ first byte.")
         ("rust-serde" ,rust-serde-1)
         ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2))))
     (home-page "https://github.com/xiph/rav1e")
-    (synopsis "@code{Video Frame} data structures, part of rav1e")
-    (description
-     "This package provides @code{Video Frame} data structures, as a part of
-rav1e.")
+    (synopsis "Video Frame data structures, part of rav1e")
+    (description "This package provides @code{Video Frame} data structures, as
+a part of rav1e.")
     (license license:bsd-2)))
 
 (define-public rust-value-bag-1
@@ -48682,7 +49903,8 @@ Verification.")
        (("rust-base64" ,rust-base64-0.9))))))
 
 (define-public rust-webpki-0.18
-  (package/inherit rust-webpki-0.21
+  (package
+    (inherit rust-webpki-0.21)
     (name "rust-webpki")
     (version "0.18.1")
     (source
@@ -48768,7 +49990,8 @@ with webpki.")
         (base32 "1d4ss607rgi9pj01zzqa13c1p3m35z314yh6lmjaj4kzvwv5gkci"))))))
 
 (define-public rust-webpki-roots-0.17
-  (package/inherit rust-webpki-roots-0.18
+  (package
+    (inherit rust-webpki-roots-0.18)
     (name "rust-webpki-roots")
     (version "0.17.0")
     (source
@@ -48819,7 +50042,8 @@ with webpki.")
         ("rust-webpki" ,rust-webpki-0.18))))))
 
 (define-public rust-webpki-roots-0.14
-  (package/inherit rust-webpki-roots-0.18
+  (package
+    (inherit rust-webpki-roots-0.18)
     (name "rust-webpki-roots")
     (version "0.14.0")
     (source
@@ -50269,6 +51493,52 @@ configuration file and/or environment variables.")
     (description "This package provides a Rust XML XPath library.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-im-rc-15
+  (package
+    (name "rust-im-rc")
+    (version "15.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "im-rc" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0gsgcs1nn38r40973l6zr1v4d85f4s9qyl32n5f20jphf5z9ba1w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:rust ,rust-1.52                ;for rust-sized-chunks
+       #:cargo-inputs
+       (("rust-arbitrary" ,rust-arbitrary-0.4)
+        ("rust-bitmaps" ,rust-bitmaps-2)
+        ("rust-proptest" ,rust-proptest-0.9)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.4)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-refpool" ,rust-refpool-0.4)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-sized-chunks" ,rust-sized-chunks-0.6)
+        ("rust-typenum" ,rust-typenum-1)
+        ("rust-version-check" ,rust-version-check-0.9))
+       #:cargo-development-inputs
+       (("rust-metrohash" ,rust-metrohash-1)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
+        ("rust-proptest" ,rust-proptest-0.9)
+        ("rust-proptest-derive" ,rust-proptest-derive-0.1)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-version-check" ,rust-version-check-0.9))))
+    (home-page "https://docs.rs/crate/im")
+    (synopsis "Fast immutable collection datatypes for Rust")
+    (description "@code{im-rc} provides immutable collection datatypes for
+Rust that are very fast but not thread-safe.  A thread-safe (and slower)
+variant of this library is available separately as @code{im}.")
+    (license license:mpl2.0)))
+
 (define-public rust-inflections-1
   (package
     (name "rust-inflections")
@@ -50290,6 +51560,26 @@ configuration file and/or environment variables.")
       "High performance inflection transformation library for changing properties of words like the case.")
     (license license:expat)))
 
+(define-public rust-rustc-workspace-hack-1
+  (package
+    (name "rust-rustc-workspace-hack")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-workspace-hack" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1yx8l58n2vb2ldpi3z1jn4dmi5hnxvikbhpd5lilpdvkl7xd4wgw"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rustc-workspace-hack")
+    (synopsis "Hack for the compiler's own build system")
+    (description "Hack for the compiler's own build system.  It is used by
+@code{cargo}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public skim
   (package
     (name "skim")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index b5672cbe50..8848954ab8 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -944,14 +944,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
 (define-public botan
   (package
     (name "botan")
-    (version "2.17.3")
+    (version "2.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://botan.randombit.net/releases/"
                                   "Botan-" version ".tar.xz"))
               (sha256
                (base32
-                "121vn1aryk36cpks70kk4c4cfic5g0qs82bf92xap9258ijkn4kr"))))
+                "0adf53drhk1hlpfih0175c9081bqpclw6p2afn51cmx849ib9izq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -976,7 +976,9 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
          (add-before 'check 'library-path-for-tests
            (lambda _ (setenv "LD_LIBRARY_PATH" (getcwd))))
          (replace 'check
-           (lambda _ (invoke "./botan-test"))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+                 (invoke "./botan-test")))))))
     (native-inputs
      `(("python" ,python-wrapper)
        ("python-docutils" ,python-docutils)))
@@ -1297,7 +1299,7 @@ Trusted comments are signed, thus verified, before being displayed.")
 (define-public libolm
   (package
     (name "libolm")
-    (version "3.2.2")
+    (version "3.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1305,7 +1307,7 @@ Trusted comments are signed, thus verified, before being displayed.")
                     (commit version)))
               (sha256
                (base32
-                "0qji25wiwmkxyfpraxj96c54hyayqmjkvwh0gsy5gb5pz5bp4mcy"))
+                "0bixly6jqpwfx3p37c1qp1j685yg6m429r1nazwh43w4n527bs3y"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm
index 1b3da5389c..4c4633fe0b 100644
--- a/gnu/packages/cryptsetup.scm
+++ b/gnu/packages/cryptsetup.scm
@@ -35,7 +35,7 @@
 (define-public cryptsetup
   (package
    (name "cryptsetup")
-   (version "2.3.5")
+   (version "2.3.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/linux/utils/cryptsetup/v"
@@ -43,7 +43,7 @@
                                 "/cryptsetup-" version ".tar.xz"))
             (sha256
              (base32
-              "1hbhzlv4vbib1da20vnrqaikhxi7ljnchbzrv8v2a4sd8ipr9nff"))))
+              "0pv34l6230ba1i5p0z6zmvfqvv3as0cwn731h2qw4xm53sibg5mj"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
@@ -63,14 +63,22 @@
       ("lvm2" ,lvm2)                    ; device-mapper
       ("popt" ,popt)
       ("util-linux" ,util-linux "lib"))) ;libuuid
-   (synopsis "Hard disk encryption tool")
+   (synopsis "Set up transparent encryption of block devices using dm-crypt")
    (description
-    "LUKS (Linux Unified Key Setup)/Cryptsetup provides a standard on-disk
-encryption format, which does not only facilitate compatibility among
-distributions, but which also provides secure management of multiple user
-passwords.  In contrast to existing solutions, LUKS stores all setup necessary
-setup information in the partition header, enabling the users to transport
-or migrate their data seamlessly.")
+    "Cryptsetup is a utility used to conveniently set up disk encryption based
+on the @code{dm-crypt} Linux kernel module.  It is most often used to manage
+LUKS volumes but also supports plain dm-crypt volumes and loop-AES, TrueCrypt
+(including VeraCrypt extension), and BitLocker formats.
+
+@acronym{LUKS, Linux Unified Key Setup} is the standard for hard disk encryption
+with the kernel Linux.  It provides a standard on-disk-format compatible amongst
+distributions as well as secure management of multiple user passwords.  LUKS
+stores all necessary setup information in the partition header to facilitate
+data transport and migration.
+
+The package also includes the @command{veritysetup} and @command{integritysetup}
+utilities to conveniently configure the @code{dm-verity} and @code{dm-integrity}
+block integrity kernel modules.")
    (license license:gpl2)
    (home-page "https://gitlab.com/cryptsetup/cryptsetup")))
 
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index de926500ea..1075fe9448 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -53,6 +53,7 @@
 (define-public curl
   (package
    (name "curl")
+   (replacement curl-7.77.0)
    (version "7.76.1")
    (source (origin
              (method url-fetch)
@@ -145,6 +146,20 @@ tunneling, and so on.")
 (define-public curl-minimal
   (deprecated-package "curl-minimal" curl))
 
+(define-public curl-7.77.0
+  (package
+    (inherit curl)
+    (version "7.77.0")
+    (source
+     (origin
+       (inherit (package-source curl))
+       (uri (string-append "https://curl.haxx.se/download/curl-"
+                           version ".tar.xz"))
+       (patches (search-patches "curl-7.76-use-ssl-cert-env.patch"))
+       (sha256
+        (base32
+         "0jsrc97vbghvljic997r9nypc9qqddcil2lzvv032br8ahn5hr0g"))))))
+
 (define-public kurly
   (package
     (name "kurly")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index bc508aadf4..3d99ef08e6 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -51,6 +51,7 @@
 ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
 ;;; Copyright © 2021 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
+;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2135,14 +2136,14 @@ similar to BerkeleyDB, LevelDB, etc.")
 (define-public redis
   (package
     (name "redis")
-    (version "6.0.11")
+    (version "6.2.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.redis.io/releases/redis-"
                                   version".tar.gz"))
               (sha256
                (base32
-                "0prwqap452m581nyc3cz642d1z3x9nd81896hlqdm3z8238z49y9"))
+                "0vp1d9mlfsppry3nsj9f7bmh9wjgsy3jggp24sac1hhgl43c8cms"))
               (modules '((guix build utils)))
               (snippet
                ;; Delete bundled jemalloc, as the package will use the libc one
@@ -2150,8 +2151,8 @@ similar to BerkeleyDB, LevelDB, etc.")
                        #t))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("procps" ,procps) ; for tests
-       ("tcl" ,tcl)))     ; for tests
+     `(("procps" ,procps)               ; for tests
+       ("tcl" ,tcl)))                   ; for tests
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -2168,9 +2169,10 @@ similar to BerkeleyDB, LevelDB, etc.")
            (lambda _
              ;; Disable failing tests
              (substitute* "tests/test_helper.tcl"
-               (("    integration/replication[^-]") "")
-               (("    integration/replication-4") "")
-               (("    integration/replication-psync") ""))
+               (("integration/failover") "")
+               (("integration/replication-4") "")
+               (("integration/replication-psync") "")
+               (("integration/replication[^-]") ""))
              #t)))
        #:make-flags `("CC=gcc"
                       "MALLOC=libc"
@@ -2383,7 +2385,7 @@ database.")
 (define-public lmdb
   (package
     (name "lmdb")
-    (version "0.9.28")
+    (version "0.9.29")
     (source
      (origin
        (method git-fetch)
@@ -2392,7 +2394,7 @@ database.")
              (commit (string-append "LMDB_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "012a8bs49cswsnzw7k4piis5b6dn4by85w7a7mai9i04xcjyy9as"))))
+        (base32 "0airps4cd0d91nbgy7hgvifa801snxwxzwxyr6pdv61plsi7h8l3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 30995bf986..2b1f7f0ad1 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -175,11 +175,10 @@ work, such as sentence length and other readability measures.")
          (delete 'build)
          (delete 'check)
          (replace 'install
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              (let ((bindir (string-append
                             (assoc-ref %outputs "out") "/bin"))
-                   (wish (string-append
-                          (assoc-ref %build-inputs "tk")
+                   (wish (string-append (assoc-ref inputs "tk")
                           "/bin/wish8.6"))
                    (sharedir (string-append
                               (assoc-ref %outputs "out")
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index b74b9d1b1a..35e4783b2a 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -72,7 +72,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "174")
+    (version "177")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -81,7 +81,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "16nvcvvps2gxr0b9wbfilrn4397cqkcm716zvhlx5hsbq6w6cx08"))))
+                "02np9dq7jnq48lcmz4k1hvwc6xiqgjhrwr1vsbsfw8rxnp9vs0a5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 006cb8e301..c31afee627 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -552,14 +552,14 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
 (define-public gparted
   (package
     (name "gparted")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/gparted/gparted/gparted-"
                            version "/gparted-" version ".tar.gz"))
        (sha256
-        (base32 "06f72hqx5jf2irzsmi7lgpxxj38ncixh0acb4307wyjd4mfp343c"))))
+        (base32 "0amx3hb4rc504nl9i73rgyz0hzhq5x8nkg7lwbk4bsnrblj81hcd"))))
     (build-system glib-or-gtk-build-system)
     (arguments
       ;; Tests require access to paths outside the build container, such
@@ -1144,15 +1144,18 @@ of choice for all light thinking Unix addicts!")
 (define-public hddtemp
   (package
     (name "hddtemp")
-    (version "0.3-beta15")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://savannah/hddtemp/hddtemp-"
-                                  version
-                                  ".tar.bz2"))
-              (sha256
-               (base32
-                "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"))))
+    ;; <https://savannah.nongnu.org/projects/hddtemp/> advertises the project as
+    ;; ‘orphaned/unmaintained’.  Use a maintained fork/continuation.
+    (version "0.4.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/vitlav/hddtemp")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04kylb2ka0jimi238zpfq1yii2caidpmj3ck51rvxz03y5lpq8fw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append
@@ -1161,19 +1164,20 @@ of choice for all light thinking Unix addicts!")
                                 "/share/hddtemp/hddtemp.db"))
        #:phases
        (modify-phases %standard-phases
+         (add-before 'bootstrap 'delete-autogen.sh
+           (lambda _
+             ;; The default 'bootstrap phase works better.
+             (delete-file "autogen.sh")))
          (add-after 'install 'install-db
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((target (string-append (assoc-ref outputs "out")
-                                          "/share/hddtemp/hddtemp.db")))
-               (mkdir-p (dirname target))
-               (copy-file (assoc-ref inputs "db") target)))))))
-    (inputs
-     `(("db" ,(origin
-                (method url-fetch)
-                (uri "mirror://savannah/hddtemp/hddtemp.db")
-                (sha256
-                 (base32 "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"))))))
-    (home-page "https://savannah.nongnu.org/projects/hddtemp/")
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (install-file "data/hddtemp.db"
+                             (string-append out "/share/hddtemp"))))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)))
+    (home-page "https://github.com/vitlav/hddtemp")
     (synopsis "Report the temperature of hard drives from S.M.A.R.T. information")
     (description "@command{hddtemp} is a small utility that gives you the
 temperature of your hard drive by reading S.M.A.R.T. information (for drives
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 94480c5313..d53c06380a 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -48,13 +48,13 @@
 (define-public python-django
   (package
     (name "python-django")
-    (version "3.2.2")
+    (version "3.2.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "0gffaabnnpzj0sl3jl7mllvi3gc0jvab6xw2bckvyljwsrd1j78a"))))
+                "15pjwyvrx4n8gi8n51b14wp54bg4jqapr25p52597zn6ikdxijb6"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -130,13 +130,13 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
 (define-public python-django-2.2
   (package
     (inherit python-django)
-    (version "2.2.22")
+    (version "2.2.24")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "0q30zjcmnvwp1v1syn739wapahs2dx784n0yjyypq0cr3kdi88nv"))))
+                "1dvx3x85lggm91x7mpvaf9nmpxyz7r97pbpnmr2k1qfy0c7gyf9k"))))
     (native-inputs
      `(;; XXX: In 2.2 and 3.0, selenium is required for the test suite.
        ("python-selenium" ,python-selenium)
@@ -932,7 +932,7 @@ name is purely coincidental.")
 (define-public python-django-statici18n
   (package
     (name "python-django-statici18n")
-    (version "1.9.0")
+    (version "2.1.0")
     (home-page "https://github.com/zyegfryed/django-statici18n")
     (source (origin
               (method git-fetch)
@@ -942,7 +942,7 @@ name is purely coincidental.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1p3myp2im6c87yc05alh91jyahqws5lcw3zzdsj4dh8lx9s9cgpf"))))
+                "0x0xvfqd40is2ks43d65awgqkx3wk10lvdim15scvbjhkh301b6v"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -1089,14 +1089,13 @@ forms using your favorite CSS framework, without writing template code.")
 (define-public python-django-compressor
   (package
     (name "python-django-compressor")
-    (version "2.4")
+    (version "2.4.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "django_compressor" version))
         (sha256
-         (base32
-          "0kx7bclfa0sxlsz6ka70zr9ra00lks0hmv1kc99wbanx6xhirvfj"))))
+         (base32 "1q0m0hfg7sqmj5km924g4dgy3nx51aszzsprlp6gsin10mv0fn1k"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 86185373c4..a0388a1419 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -625,6 +625,7 @@ to result in system-wide compromise.")
     (inputs
      `(("expat" ,expat)
        ("libevent" ,libevent)
+       ("nghttp2" ,nghttp2 "lib")
        ("protobuf" ,protobuf)
        ("python-wrapper" ,python-wrapper)
        ("openssl" ,openssl)))
@@ -632,6 +633,8 @@ to result in system-wide compromise.")
      `(#:configure-flags
        (list "--disable-static" ; save space and non-determinism in libunbound.a
              (string-append
+              "--with-libnghttp2=" (assoc-ref %build-inputs "nghttp2"))
+             (string-append
               "--with-ssl=" (assoc-ref %build-inputs "openssl"))
              (string-append
               "--with-libevent=" (assoc-ref %build-inputs "libevent"))
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 52051c2689..6fbe0f2b5d 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -727,6 +728,43 @@ languages and keyboard layouts, and typing statistics are used to dynamically
 adjust the level of difficulty.")
     (license license:gpl2)))
 
+(define-public kanatest
+  ;; Latest release tarball is 0.4.8, which is really old and does not build
+  ;; commit on sourceforge are not tagged, we take the latest
+  (let ((commit "860e790a35f547cc96669f805d371a5ba3d8daff")
+        (revision "0"))
+    (package
+      (name "kanatest")
+      (version (git-version "0.4.10" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.code.sf.net/p/kanatest/code")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0dz63m9p4ggzw0yb309qmgnl664qb5q268vaa3i9v0i8qsl66d78"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("gettext" ,gettext-minimal)   ; for msgfmt
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("libxml2" ,libxml2)
+         ("gtk+" ,gtk+)))
+      (home-page "https://kanatest.sourceforge.io/")
+      (synopsis "Hiragana and Katakana simple flashcard tool")
+      (description "Kanatest is a Japanese kana (Hiragana and Katakana) simple
+flashcard tool.
+
+During test the Kanatest displays randomly selected kana char (respecting mode
+and lesson) and waits for user answer expected as romaji equivalent.  This
+process continues until all questions will be answered or all questions will
+be answered correctly (depends on options).  At the end of test a short info
+about drilling time and correctness ratio is displayed.  The results are
+stored and user can review his performance in any time.")
+      (license license:gpl2+))))
+
 (define-public anki
   (package
     (name "anki")
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8822d26734..a2e4455c8e 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -98,6 +98,7 @@
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Eugene Klimov <lipklim@mailbox.org>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2021 David Dashyan <mail@davie.li>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -186,6 +187,7 @@
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pdf)
+  #:use-module (gnu packages racket)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages rust-apps)
   #:use-module (gnu packages scheme)
@@ -221,7 +223,7 @@
 (define-public emacs-geiser
   (package
     (name "emacs-geiser")
-    (version "0.13")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -230,9 +232,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bwjcfmcyv6z0i5ivqirgcibxdkrlf5vyxcbj7k8dk7flwg1fpd9"))
-       (patches
-        (search-patches "emacs-geiser-autoload-activate-implementation.patch"))))
+        (base32 "18gx7ak2ldpmqbimnq221dn2qg7qwm5n1mj6ajymwkgvqwcrsl2r"))))
     (build-system emacs-build-system)
     (arguments
      '(#:phases
@@ -271,7 +271,7 @@ e.g. emacs-geiser-guile for Guile.")
 (define-public emacs-geiser-guile
   (package
     (name "emacs-geiser-guile")
-    (version "0.13")
+    (version "0.17")
     (source
      (origin
        (method git-fetch)
@@ -280,9 +280,7 @@ e.g. emacs-geiser-guile for Guile.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0w264pjwlxna31260ll6gd0n77jlynhzf3h2dws5wr7jflns5mbc"))
-       (patches (search-patches
-                 "emacs-geiser-guile-auto-activate.patch"))))
+        (base32 "0iw23nlgqppf6f00ly50m8lq85n9mv244pw3whxv0hynfjxr2ic0"))))
     (build-system emacs-build-system)
     (arguments
      '(#:include (cons "^src/" %default-include)
@@ -361,6 +359,49 @@ using geiser.")
 a generic Scheme interaction mode for the GNU Emacs editor.")
     (license license:expat)))
 
+(define-public emacs-geiser-racket
+  (package
+    (name "emacs-geiser-racket")
+    (version "0.16")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/emacs-geiser/racket")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1aqsvmk1hi7kc3j4h8xlza7c6rwm71v98fv5wpw8kmyj9vsp49wx"))))
+    (build-system emacs-build-system)
+    (arguments
+     '(#:include (cons "^src/" %default-include)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'make-autoloads 'patch-autoloads
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* (string-append
+                           (elpa-directory (assoc-ref outputs "out"))
+                           "/geiser-racket-autoloads.el")
+               ;; Activating implementations fails when Geiser is not yet
+               ;; loaded, so let's defer that until it is.
+               (("\\(geiser-activate-implementation .*\\)" all)
+                (string-append
+                 "(eval-after-load 'geiser-impl '" all ")"))
+	       (("\\(geiser-implementation-extension .*\\)" all)
+                (string-append
+                 "(eval-after-load 'geiser-impl '" all ")")))
+             #t)))))
+    (inputs
+     `(("racket" ,racket)))
+    (propagated-inputs
+     `(("geiser" ,emacs-geiser)))
+    (home-page "https://nongnu.org/geiser/")
+    (synopsis "Racket support for Geiser")
+    (description
+     "This package adds support for the Racket implementation to Geiser,
+a generic Scheme interaction mode for the GNU Emacs editor.")
+    (license license:bsd-3)))
+
 (define-public emacs-vc-hgcmd
   (package
     (name "emacs-vc-hgcmd")
@@ -384,6 +425,32 @@ repositories through the
 server}.  The main advantage compared to @code{vc-hg} is speed.")
     (license license:gpl3+)))
 
+(define-public emacs-hgignore-mode
+  ;; From 2021-03-14.
+  ;; No releases available.
+  (let ((commit "2c5aa4c238848f5b4f2955afcfb5f21ea513653b")
+        (revision "0"))
+    (package
+      (name "emacs-hgignore-mode")
+      ;; `Version:' header says 0.1.20150329
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/omajid/hgignore-mode")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0jn9rzhrmmv4lf7rdapdjclk6623d1mir2lq3c46428skhzjlph7"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/omajid/hgignore-mode")
+      (synopsis "Major mode for editing @file{hgignore} files")
+      (description "This package provides a basic major mode for
+editing @file{.hgignore} files used by the Mercurial version control
+system.")
+      (license license:gpl3+))))
+
 (define-public emacs-hyperbole
   (package
     (name "emacs-hyperbole")
@@ -439,6 +506,32 @@ outlines, manage all your contacts, your windows and frames, and search across
 buffers, directory trees, or the web.")
     (license license:gpl3+)))
 
+(define-public emacs-hg-histedit
+  ;; From 2021-03-02.
+  ;; No releases available.
+  (let ((commit "a05149483b9c5f7848ece0ba6028c900595a6a25")
+        (revision "0"))
+    (package
+      (name "emacs-hg-histedit")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/jojojames/hg-histedit")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "04zps0d4s99f5a8ahrpyf8b6qw0c1y7rd1bsaq9nc6m4qblsvwc8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-with-editor" ,emacs-with-editor)))
+      (home-page "https://github.com/jojojames/hg-histedit")
+      (synopsis "Emacs interface to @command{hg histedit}")
+      (description "This package provides an Emacs interface to
+@command{hg histedit} for editing the commit history.")
+      (license license:gpl3+))))
+
 (define-public emacs-paredit
   (package
     (name "emacs-paredit")
@@ -507,7 +600,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
 (define-public emacs-with-editor
   (package
     (name "emacs-with-editor")
-    (version "3.0.2")
+    (version "3.0.4")
     (source
      (origin
        (method git-fetch)
@@ -516,7 +609,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hw6i5r3adkm4988badi94825lywkrh3sddiff4z04kj1nj15d0k"))))
+        (base32 "1bmvkrfnjzrf0ch2mh75cv784mzs64i4f44l91xysapjqv46lfqn"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -613,118 +706,109 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
       (license license:gpl3+))))
 
 (define-public emacs-magit
-  ;; There hasn't been an official release since 2018-11-16.
-  (let ((commit "7f486d47fe7042edba8d9a855a4c2c301a30bc6b")
-        (revision "6"))
-    (package
-      (name "emacs-magit")
-      (version (git-version "2.90.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/magit/magit")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "05kyc5y5wa1p3h8j7mbgvfc4zcj998zi26lnnmksj9wnvahzxfms"))))
-      (build-system emacs-build-system)
-      (arguments
-       `(#:emacs ,emacs-no-x            ;module support is required
-         #:tests? #t
-         #:test-command '("make" "test")
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'build-info-manual
-             (lambda _
-               (invoke "make" "info")
-               ;; Copy info files to the lisp directory, which acts as
-               ;; the root of the project for the emacs-build-system.
-               (for-each (lambda (f)
-                           (install-file f "lisp"))
-                         (find-files "Documentation" "\\.info$"))
-               (chdir "lisp")
-               #t))
-           (add-after 'build-info-manual 'set-magit-version
-             (lambda _
-               (make-file-writable "magit.el")
-               (emacs-substitute-variables "magit.el"
-                 ("magit-version" ,version))
-               #t))
-           (add-after 'set-magit-version 'patch-exec-paths
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((perl (assoc-ref inputs "perl")))
-                 (make-file-writable "magit-sequence.el")
-                 (emacs-substitute-variables "magit-sequence.el"
-                   ("magit-perl-executable" (string-append perl "/bin/perl")))
-                 #t)))
-           (add-before 'check 'configure-git
-             (lambda _
-               ;; Otherwise some tests fail with error "unable to auto-detect
-               ;; email address".
-               (setenv "HOME" (getcwd))
-               (invoke "git" "config" "--global" "user.name" "toto")
-               (invoke "git" "config" "--global" "user.email"
-                       "toto@toto.com")))
-           (add-after 'configure-git 'disable-tramp-test
-             (lambda _
-               ;; There is an issue causing TRAMP to fail in the build
-               ;; environment.  Setting the tramp-remote-shell parameter of
-               ;; the sudo-method to the file name of the shell didn't help.
-               (chdir "..")
-               (substitute* "t/magit-tests.el"
-                 (("^\\(ert-deftest magit-toplevel:tramp.*" all)
-                  (string-append all "  (skip-unless nil)")))
-               #t))
-           (add-before 'install 'enter-lisp-directory
-             (lambda _
-               (chdir "lisp")
-               #t)))))
-      (native-inputs
-       `(("texinfo" ,texinfo)))
-      (inputs
-       `(("git" ,git)
-         ("perl" ,perl)))
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-libgit" ,emacs-libgit)
-         ("emacs-transient" ,emacs-transient)
-         ("emacs-with-editor" ,emacs-with-editor)))
-      (home-page "https://magit.vc/")
-      (synopsis "Emacs interface for the Git version control system")
-      (description
-       "With Magit, you can inspect and modify your Git repositories
+  (package
+    (name "emacs-magit")
+    (version "3.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magit/magit")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0dbp3gx43ipxv8zg9m0hfhksz85rnkikaq35rx705qqz6xq6xq9m"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:emacs ,emacs-no-x             ;module support is required
+       #:tests? #t
+       #:test-command '("make" "test")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'build-info-manual
+           (lambda _
+             (invoke "make" "info")
+             ;; Copy info files to the lisp directory, which acts as
+             ;; the root of the project for the emacs-build-system.
+             (for-each (lambda (f)
+                         (install-file f "lisp"))
+                       (find-files "Documentation" "\\.info$"))
+             (chdir "lisp")))
+         (add-after 'build-info-manual 'set-magit-version
+           (lambda _
+             (make-file-writable "magit.el")
+             (emacs-substitute-variables "magit.el"
+               ("magit-version" ,version))))
+         (add-after 'set-magit-version 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((perl (assoc-ref inputs "perl")))
+               (make-file-writable "magit-sequence.el")
+               (emacs-substitute-variables "magit-sequence.el"
+                 ("magit-perl-executable" (string-append perl "/bin/perl"))))))
+         (add-before 'check 'configure-git
+           (lambda _
+             ;; Otherwise some tests fail with error "unable to auto-detect
+             ;; email address".
+             (setenv "HOME" (getcwd))
+             (invoke "git" "config" "--global" "user.name" "toto")
+             (invoke "git" "config" "--global" "user.email"
+                     "toto@toto.com")))
+         (add-after 'configure-git 'disable-tramp-test
+           (lambda _
+             ;; There is an issue causing TRAMP to fail in the build
+             ;; environment.  Setting the tramp-remote-shell parameter of
+             ;; the sudo-method to the file name of the shell didn't help.
+             (chdir "..")
+             (substitute* "t/magit-tests.el"
+               (("^\\(ert-deftest magit-toplevel:tramp.*" all)
+                (string-append all "  (skip-unless nil)")))))
+         (add-before 'install 'enter-lisp-directory
+           (lambda _
+             (chdir "lisp"))))))
+    (native-inputs
+     `(("texinfo" ,texinfo)))
+    (inputs
+     `(("git" ,git)
+       ("perl" ,perl)))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-libgit" ,emacs-libgit)
+       ("emacs-transient" ,emacs-transient)
+       ("emacs-with-editor" ,emacs-with-editor)))
+    (home-page "https://magit.vc/")
+    (synopsis "Emacs interface for the Git version control system")
+    (description
+     "With Magit, you can inspect and modify your Git repositories
 with Emacs.  You can review and commit the changes you have made to
 the tracked files, for example, and you can browse the history of past
 changes.  There is support for cherry picking, reverting, merging,
 rebasing, and other common Git operations.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-magit-svn
-  (let ((commit "9e33ceee32f665db59909e1c00a667ccdd04178f"))
-    (package
-      (name "emacs-magit-svn")
-      (version (git-version "2.2.1" "2" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/magit/magit-svn")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1mlqz8dh6jy5rv72lgkxv253dgh73fmbaidskicypapvbl3lr6xy"))))
-      (build-system emacs-build-system)
-      (propagated-inputs `(("dash" ,emacs-dash)
-                           ("with-editor" ,emacs-with-editor)
-                           ("magit" ,emacs-magit)
-                           ("transient" ,emacs-transient)))
-      (home-page "https://github.com/magit/magit-svn")
-      (synopsis "Git-SVN extension to Magit")
-      (description
-       "This package is an extension to Magit, the Git Emacs mode, providing
+  (package
+    (name "emacs-magit-svn")
+    (version "2.2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/magit/magit-svn")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1v1y4fir1plz4kj0cvkcd29wibli4dw7vp4fmbxq4df76d8iy8yd"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("dash" ,emacs-dash)
+                         ("with-editor" ,emacs-with-editor)
+                         ("magit" ,emacs-magit)
+                         ("transient" ,emacs-transient)))
+    (home-page "https://github.com/magit/magit-svn")
+    (synopsis "Git-SVN extension to Magit")
+    (description
+     "This package is an extension to Magit, the Git Emacs mode, providing
 support for Git-SVN.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-magit-popup
   (package
@@ -760,29 +844,27 @@ process, passing on the arguments as command line arguments.")
     (license license:gpl3+)))
 
 (define-public emacs-magit-annex
-  (let ((commit "ef5dce6267e9118a5eca82a22bcad0b67826c23a")
-        (revision "1"))
-    (package
-      (name "emacs-magit-annex")
-      (version (git-version "1.7.1" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/magit/magit-annex")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0vzkydgl889cq173zjl89g2vrddb9abc4a8gljiz3b4a7n5b1nrd"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("magit" ,emacs-magit)
-         ("transient" ,emacs-transient)))
-      (home-page "https://github.com/magit/magit-annex/")
-      (synopsis "Git-annex support for Magit")
-      (description
-       "Magit-annex adds a few git-annex operations to the Magit interface.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-magit-annex")
+    (version "1.8.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/magit/magit-annex")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ak4chfn95p2vj3y0wiyimj609a4jfzrfpsc1kn0is1jv3dlkl6c"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("magit" ,emacs-magit)
+       ("transient" ,emacs-transient)))
+    (home-page "https://github.com/magit/magit-annex/")
+    (synopsis "Git-annex support for Magit")
+    (description
+     "Magit-annex adds a few git-annex operations to the Magit interface.")
+    (license license:gpl3+)))
 
 (define-public emacs-minions
   (package
@@ -819,7 +901,7 @@ Alternatively the menu can be bound globally, for example:
 (define-public emacs-moody
   (package
     (name "emacs-moody")
-    (version "0.5.4")
+    (version "0.5.5")
     (source
      (origin
        (method git-fetch)
@@ -828,7 +910,7 @@ Alternatively the menu can be bound globally, for example:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0n8p864yj5m3n7f9qiq9hy24dwfvv0a0wchx2818rppff6vfq3hf"))))
+        (base32 "0b4kg4dxy4ywwin96vz6x3rpvgr718y5rgrdarmwym9wv1qz0a0c"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/moody")
     (synopsis "Tabs and ribbons for Emacs mode-line")
@@ -884,6 +966,27 @@ theme and apply them to the rest of Linux with Pywal.  Pywal only applies your
 theme to the current session.")
       (license license:gpl3+))))
 
+(define-public emacs-vscode-dark-plus
+  (package
+    (name "emacs-vscode-dark-plus")
+    (version "2.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ianyepan/vscode-dark-plus-emacs-theme")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1vcaqvhdgr91pr7kqskbscs8awm8jp6dkh79h6w36i9ipmc4l4hl"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/ianyepan/vscode-dark-plus-emacs-theme")
+    (synopsis "Emacs port of the default VS Code Dark+ theme")
+    (description
+     "This theme aims to be as identical as possible to the default Dark+
+color scheme used by Visual Studio Code.")
+    (license license:gpl3+)))
+
 (define-public emacs-theme-sorcery
   (let ((revision "0")
         (commit "5a1c4445b9e6e09589a299a9962a6973272a0c2f"))
@@ -1038,7 +1141,7 @@ organizing remote Go repository clones.")
 (define-public emacs-ghub
   (package
     (name "emacs-ghub")
-    (version "3.4.1")
+    (version "3.5.3")
     (source
      (origin
        (method git-fetch)
@@ -1047,7 +1150,7 @@ organizing remote Go repository clones.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07iy4203ppvzkh67sb0v968hnypnvy4dpfy0qpqrp8zmc455dxq5"))))
+        (base32 "1sn7rzfkm75vj3whhisrjk1s34lz6hc08hmf4nnznbdvyimnd013"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -1419,6 +1522,52 @@ different tools.  It highlights errors and warnings inline in the buffer, and
 provides an optional IDE-like error list.")
       (license license:gpl3+))))                     ;+GFDLv1.3+ for the manual
 
+(define-public emacs-flymake-quickdef
+  ;; This particular commit includes bug fixes on top of 1.0.0 release.
+  (let ((version "1.0.0")
+        (revision "0")
+        (commit "150c5839768a3d32f988f9dc08052978a68f2ad7"))
+    (package
+      (name "emacs-flymake-quickdef")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/karlotness/flymake-quickdef")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "19gfd539l97j8xbrq1fw83b54mxbcamlz9m896088d3p01zf8b0g"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/karlotness/flymake-quickdef")
+      (synopsis "Quickly define a new Flymake backend")
+      (description
+       "This package mainly defines a macro which helps remove some of the
+boilerplate code from defining new Flymake backend functions.")
+      (license license:gpl3+))))
+
+(define-public emacs-flymake-kondor
+  (package
+    (name "emacs-flymake-kondor")
+    (version "0.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/turbo-cafe/flymake-kondor")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0h8dqk35r10pxx2w4swb3kij4y2vi17j9wfk978x8lf0wd3h3hsy"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-flymake-quickdef" ,emacs-flymake-quickdef)))
+    (home-page "https://github.com/turbo-cafe/flymake-kondor")
+    (synopsis "Linter with clj-kondo")
+    (description "This package adds Clojure syntax checker clj-kondo.")
+    (license license:gpl3+)))
+
 (define-public emacs-flymake-shellcheck
   ;; No tag, version grabbed from source .el file.
   (let ((commit "ac534e9ef15c82ac86ae65fe5004d29dbc8c92c7")
@@ -2047,7 +2196,7 @@ letter to each link using avy.")
 (define-public emacs-auto-sudoedit
   (package
     (name "emacs-auto-sudoedit")
-    (version "1.0.0")
+    (version "1.1.0")
     (source
      (origin
        (method git-fetch)
@@ -2056,7 +2205,7 @@ letter to each link using avy.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "10p0hc95j382km8655pqld9wxg10j1f36czzppkdd6a55cxarv9f"))))
+        (base32 "1rhdvrj2rjbvl7vkb0wcp6krqxcaigl7jk9z8yvhx6s4cm2qli6q"))))
     (propagated-inputs
      `(("emacs-f" ,emacs-f)))
     (build-system emacs-build-system)
@@ -2556,7 +2705,7 @@ Lock key.")
 (define-public emacs-chronometrist
   (package
     (name "emacs-chronometrist")
-    (version "0.6.5")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -2565,7 +2714,7 @@ Lock key.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1k7r5rc6vzrnhp9j5bkv45yzqz7zbqrkiry4fzc8w6f36pcw862f"))))
+        (base32 "0s483ca4f8192gr9ix9jxjfcmxp30b7qk2jiaqzprkrn9kcgw544"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -2591,6 +2740,7 @@ Lock key.")
     (propagated-inputs
      `(("emacs-anaphora" ,emacs-anaphora)
        ("emacs-dash" ,emacs-dash)
+       ("emacs-literate-elisp" ,emacs-literate-elisp)
        ("emacs-s" ,emacs-s)
        ("emacs-ts" ,emacs-ts)))
     (home-page "https://github.com/contrapunctus-1/chronometrist")
@@ -3020,6 +3170,46 @@ filters, new key bindings and faces.  It can be enabled by
 DjVuLibre, see @url{http://djvu.sourceforge.net/}.")
     (license license:gpl3+)))
 
+(define-public emacs-djvu3
+  ;; Commit from 2021-06-03.
+  (let ((commit "37b675be1d4d436cdd0c3b5d3f13e88b59a7bf18")
+        (revision "0"))
+    (package
+      (name "emacs-djvu3")
+      ;; `Version:' header says 1.0
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dalanicolai/djvu3")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0p0izjrgbayx5ybk1n6db5hbrjv9d4kpn57w4iyxdm3h96sp9cmr"))))
+      (propagated-inputs
+       `(("emacs-djvu" ,emacs-djvu)
+         ("emacs-tablist" ,emacs-tablist)))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/dalanicolai/djvu3")
+      (synopsis "Extend djvu.el to display annotations and more")
+      (description "This package extends @code{emacs-djvu} with annotation
+rendering features and a fast occur search feature using @code{svg.el}.
+
+Other features include:
+
+@itemize
+@item clickable links
+@item marker extension to @code{svg.el} for providing arrowheads (or other
+types of markers)
+@item a quite fancy keyboard annotation function
+@item an @code{imenu} index function to enable imenu navigation
+@item document restore function to open the document at the last location of
+the previous session
+@end itemize")
+      (license license:gpl3+))))
+
 (define-public emacs-pabbrev
   (package
     (name "emacs-pabbrev")
@@ -3260,7 +3450,7 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
 (define-public emacs-d-mode
   (package
     (name "emacs-d-mode")
-    (version "2.0.10")
+    (version "2.0.11")
     (source
      (origin
        (method git-fetch)
@@ -3269,15 +3459,14 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0915kb9jcaixgindhj85fmykkhvj31ckp1yg6746fznwdgfrlifv"))))
+        (base32 "0vkl470vvmxap8ca773a0jvjvalmvdbbax3qvgjdclp54ml75al4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-undercover" ,emacs-undercover)))
     (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
     (synopsis "Emacs major mode for editing D code")
     (description "This package provides an Emacs major mode for highlighting
-code written in the D programming language.  This mode is currently known to
-work with Emacs 24 and 25.")
+code written in the D programming language.")
     (license license:gpl2+)))
 
 (define-public emacs-extempore-mode
@@ -3421,7 +3610,7 @@ kmonad's configuration files (@file{.kbd}).")
 (define-public emacs-keycast
   (package
     (name "emacs-keycast")
-    (version "1.0.4")
+    (version "1.1.0")
     (source
      (origin
        (method git-fetch)
@@ -3430,7 +3619,7 @@ kmonad's configuration files (@file{.kbd}).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1g9arjdhdpvsw47ny9gi5k758ya37yza4mr0rhbf02yvrqyfsrgr"))))
+        (base32 "0093v1c5nl2bh1lvccqq6fzpgjald3yypp87dsim982aywl2vlv1"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/keycast")
     (synopsis "Show current command and its key in the mode line")
@@ -3462,7 +3651,7 @@ a command.")
 (define-public emacs-olivetti
   (package
     (name "emacs-olivetti")
-    (version "1.11.3")
+    (version "1.11.4")
     (source
      (origin
        (method git-fetch)
@@ -3471,7 +3660,7 @@ a command.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zcph7l0hxisbvsyzb1dw3paq5a5sjp5lrq5nq9zggvgc6zvx7sh"))))
+        (base32 "1pw1zc0pdwwi9dv8fypfxgn6xbfvm88qzhss880lspialff1wcxn"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rnkn/olivetti")
     (synopsis "Emacs minor mode for a nice writing environment")
@@ -3892,36 +4081,34 @@ of files under Git version control from within Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-minitest
-  (let ((commit "1aadb7865c1dc69c201cecee275751ecec33a182")
-        (revision "1"))
-    (package
-      (name "emacs-minitest")
-      (version (git-version "0.8.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/arthurnn/minitest-emacs")
-                      (commit commit)))
-                (file-name (git-file-name name commit))
-                (sha256
-                 (base32
-                  "1l18zqpdzbnqj2qawq8hj7z7pl8hr8z9d8ihy8jaiqma915hmhj1"))))
-      (build-system emacs-build-system)
-      (arguments
-       '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include)
-         #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude)))
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-f" ,emacs-f)))
-      (home-page "https://github.com/arthurnn/minitest-emacs")
-      (synopsis "Emacs minitest mode")
-      (description
-       "The minitest mode provides commands to run the tests for the current
+  (package
+    (name "emacs-minitest")
+    (version "0.9.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/arthurnn/minitest-emacs")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0d8kg68yy5x1y3ivj43vzcakb3gii6bh8jm40g4sah5f53bbrs16"))))
+    (build-system emacs-build-system)
+    (arguments
+     '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include)
+       #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude)))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-f" ,emacs-f)))
+    (home-page "https://github.com/arthurnn/minitest-emacs")
+    (synopsis "Emacs minitest mode")
+    (description
+     "The minitest mode provides commands to run the tests for the current
 file or line, as well as rerunning the previous tests, or all the tests for a
 project.
 
 This package also includes relevant snippets for yasnippet.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public emacs-gdscript-mode
   (package
@@ -4323,7 +4510,7 @@ Emacs shell script.")
 (define-public emacs-undercover
   (package
     (name "emacs-undercover")
-    (version "0.8.0")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -4332,7 +4519,7 @@ Emacs shell script.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19d3373fy635vbfwr1yhxirwqn68qzny9byv74smxws4ly04mr02"))))
+        (base32 "0qmvyy3xg5qi7ws8zcs934d6afsappr1a6pgfp796xpa9vdr4y6j"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -4460,6 +4647,27 @@ in Lisp modes.")
       (description "This package provides dynamic evaluation in Emacs.")
       (license license:gpl3+))))
 
+(define-public emacs-literate-elisp
+  (package
+    (name "emacs-literate-elisp")
+    (version "0.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jingtaozf/literate-elisp")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0i9468rh61l4xq918fgwk6li93lpm6zbn0lkpxr7pbvkgrl5xsr6"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/jingtaozf/literate-elisp/tags")
+    (synopsis "Load Emacs Lisp code blocks from Org files")
+    (description
+     "Literate-Elisp is an Emacs lisp library to provide an easy way to use
+literal programming in Emacs lisp.  It extends the Emacs load mechanism so
+Emacs can load Org files as Lisp source files directly.")
+    (license license:gpl3+)))
+
 (define-public emacs-literate-calc-mode
   (let ((commit "a50e897a816cb5580ad6ec867eeaae212e0e4798")
         (revision "1"))
@@ -4592,6 +4800,36 @@ strike through completed TODO headings, changes Org blocks, changes Org check
 boxes, and more.")
       (license license:gpl3+))))
 
+(define-public emacs-org-inline-pdf
+  (package
+    (name "emacs-org-inline-pdf")
+    (version "0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/shg/org-inline-pdf.el")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qc92xvgxmnwjixk8bxwbc1l1jj0qk9dg73jyaip6lk4g0wjk6xf"))))
+    (build-system emacs-build-system)
+    (inputs
+     `(("pdf2svg" ,pdf2svg)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((pdf2svg (assoc-ref inputs "pdf2svg")))
+               (substitute* "org-inline-pdf.el"
+                 (("\"pdf2svg\"") (string-append "\"" pdf2svg "/bin/pdf2svg\"")))))))))
+    (home-page "https://github.com/shg/org-inline-pdf.el")
+    (synopsis "Inline PDF previewing for Org")
+    (description "This package provides a minor mode that enables
+inline PDF preview in Org buffers by using pdf2svg.")
+    (license license:gpl3+)))
+
 (define-public emacs-org-rich-yank
   (package
     (name "emacs-org-rich-yank")
@@ -4643,7 +4881,7 @@ displays the priority part of a heading as your preferred string value.")
 (define-public emacs-org-fragtog
   (package
     (name "emacs-org-fragtog")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method git-fetch)
@@ -4652,7 +4890,7 @@ displays the priority part of a heading as your preferred string value.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1szkx3n9gk6799rxv0jb3096pn2ssz82536x9a98xqwbimy4kvn6"))))
+        (base32 "0cw8903nw0mrn9kppwlypsb6h9m54zrb6y969yj0gnkza6gqy36c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-org" ,emacs-org)))
@@ -4760,7 +4998,7 @@ mode-line.")
 (define-public emacs-robe
   (package
     (name "emacs-robe")
-    (version "0.8.2")
+    (version "0.8.3")
     (source
      (origin
        (method git-fetch)
@@ -4769,7 +5007,7 @@ mode-line.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0qw18wi54yg971n4wnjqkd8lqj5lbs9ra8bvmngif2bzhqlfdsbn"))))
+        (base32 "1xbj7wi389n6pxfvxrakvhylkdlqg8ll9ad2zmxggcchygwah6nl"))))
     (build-system emacs-build-system)
     (arguments
      '(#:include (cons "^lib\\/" %default-include)))
@@ -4810,40 +5048,37 @@ completing keywords and smart indentation.")
       (license license:gpl3+))))
 
 (define-public emacs-roguel-ike
-  ;; Tagged branch is outdated.
-  (let ((revision "0")
-        (commit "706dcb0687e8016d7d776f9d9e5ace9fdbbca43c"))
-    (package
-      (name "emacs-roguel-ike")
-      (version (git-version "0.1.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/stevenremot/roguel-ike")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0rgv4y9aa5cc2ddz3y5z8d22xmr8kf5c60h0r3g8h91jmcw3rb4z"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-popup" ,emacs-popup)))
-      (arguments
-       `(#:include (cons* "^roguel-ike/" "^roguel-ike-lib/" %default-include)
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'check 'set-test-environment
-             (lambda _
-               (setenv "HOME" "/tmp")
-               #t)))))
-      (home-page "https://github.com/stevenremot/roguel-ike.git")
-      (synopsis "Coffee-break roguelike for Emacs")
-      (description
-       "Roguel-ike is an attempt to develop a coffee-break roguelike for
+  (package
+    (name "emacs-roguel-ike")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stevenremot/roguel-ike")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0rgv4y9aa5cc2ddz3y5z8d22xmr8kf5c60h0r3g8h91jmcw3rb4z"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-popup" ,emacs-popup)))
+    (arguments
+     `(#:include (cons* "^roguel-ike/" "^roguel-ike-lib/" %default-include)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-test-environment
+           (lambda _
+             (setenv "HOME" "/tmp")
+             #t)))))
+    (home-page "https://github.com/stevenremot/roguel-ike.git")
+    (synopsis "Coffee-break roguelike for Emacs")
+    (description
+     "Roguel-ike is an attempt to develop a coffee-break roguelike for
 Emacs.  The complete game would allow the player to create various characters
 and to make them fulfill challenges like arena fight and short dungeon
 explorations.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-rspec
   (let ((commit "66ea7cc9699d6edc6115daa024818adbd85efc20")
@@ -5787,22 +6022,23 @@ described on the homepage.")
 (define-public emacs-company-irony
   (package
     (name "emacs-company-irony")
-    (version "1.1.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/Sarcasm/company-irony")
-                    (commit (string-append "v" version))))
-              (sha256 (base32
-                       "1qgyam2vyjw90kpxns5cd6bq3qiqjhzpwrlvmi18vyb69qcgqd8a"))
-              (file-name (git-file-name name version))))
+    (version "1.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Sarcasm/company-irony")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1d3jw0d4zymznri86a5iixyxnw16jzkkrbhrh657ys73189c1c73"))
+       (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (inputs
-     `(("emacs-irony-mode" ,emacs-irony-mode)
-       ("emacs-company" ,emacs-company)))
-    (synopsis "C++ completion backend for Company using irony-mode")
-    (description "This backend for company-mode allows for C++ code completion
-with irony-mode using clang-tooling.")
+     `(("emacs-company" ,emacs-company)
+       ("emacs-irony-mode" ,emacs-irony-mode)))
+    (synopsis "C++ completion backend for Company using Irony mode")
+    (description "This backend for Company allows for C++ code completion
+with Irony mode using Clang tooling.")
     (home-page "https://github.com/Sarcasm/company-irony")
     (license license:gpl3+)))
 
@@ -6557,7 +6793,7 @@ and popup menus.")
 (define-public emacs-python-black
   (package
     (name "emacs-python-black")
-    (version "1.0.0")
+    (version "1.1.0")
     (source
      (origin
        (method git-fetch)
@@ -6567,7 +6803,7 @@ and popup menus.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0fjnd85nlkck156dj6cahk8chhgkbgl2kwywqzi8bl4yj700m4dk"))))
+         "1cmzc0fa3jj7ajxbqhbsc8jx47k6g223sfd42c4lrqdnmh95760m"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -6680,31 +6916,28 @@ the locations of docstrings, arguments, and functions.")
     (license license:gpl3+)))
 
 (define-public emacs-puppet-mode
-  (let ((commit "b3ed5057166a4f49dfa9be638523a348b55a2fd2")
-        (revision "1"))
-    (package
-      (name "emacs-puppet-mode")
-      ;; The last release, 0.3 was several years ago, and there have been many
-      ;; commits since
-      (version (git-version "0.3" revision commit))
-      (source
-       (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://raw.githubusercontent.com/voxpupuli/puppet-mode/"
-               commit "/puppet-mode.el"))
-         (sha256
-          (base32
-           "1indycxawsl0p2aqqg754f6735q3cmah9vd886rpn0ncc3ipi1xm"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/voxpupuli/puppet-mode")
-      (synopsis "Emacs major mode for the Puppet configuration language")
-      (description
-       "This package provides support for the Puppet configuration language,
+  (package
+    (name "emacs-puppet-mode")
+    (version "0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/voxpupuli/puppet-mode")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0c5q8qmbligzjsn05di4wh6ggpd3944j4yqb78vzd441b8ssq70i"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/voxpupuli/puppet-mode")
+    (synopsis "Emacs major mode for the Puppet configuration language")
+    (description
+     "This package provides support for the Puppet configuration language,
 including syntax highlighting, indentation of expressions and statements,
 linting of manifests and integration with Puppet Debugger.")
-      ;; Also incorporates work covered by the Apache License, Version 2.0
-      (license license:gpl3+))))
+    ;; Also incorporates work covered by the Apache License, Version 2.0
+    (license license:gpl3+)))
 
 (define-public emacs-purescript-mode
   ;; Retrieved on 2021-05-18.
@@ -6741,7 +6974,7 @@ linting of manifests and integration with Puppet Debugger.")
 (define-public emacs-god-mode
   (package
     (name "emacs-god-mode")
-    (version "2.17.0")
+    (version "2.17.3")
     (source
      (origin
        (method git-fetch)
@@ -6751,7 +6984,7 @@ linting of manifests and integration with Puppet Debugger.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1d2nrj35fzhnycchi0b7m5mbk5fyq7bgpbkkvc5xzqafclrsnapi"))))
+         "1wsc04l5j5a9y5439qx85pcchxjnjgcgwbffw3l30q9zlblvc58b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/chrisdone/god-mode")
     (synopsis "Minor mode for entering commands without modifier keys")
@@ -7072,6 +7305,43 @@ It also prettifies Org plain list bullets by:
 Features degrade gracefully when viewed from terminal.")
     (license license:gpl3+)))
 
+(define-public emacs-org-pandoc-import
+  (package
+    (name "emacs-org-pandoc-import")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tecosaur/org-pandoc-import/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "00z9bpm975mlyqlxbyib3j547br6kvcam04b70qkmq22vh8yf341"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:include
+       (cons* "^filters\\/" "^preprocessors" %default-include)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((pandoc (assoc-ref inputs "pandoc")))
+               (substitute* "org-pandoc-import.el"
+                 (("\"pandoc\"") (string-append "\"" pandoc "/bin/pandoc\"")))))))))
+    (inputs
+     `(("pandoc" ,pandoc)))
+    (home-page "https://github.com/tecosaur/org-pandoc-import/")
+    (synopsis "Read and edit non-Org file types in Org")
+    (description
+     "This package uses Pandoc to convert selected file types to Org.  It can
+convert supported non-Org files to an Org file with Pandoc.
+
+It can also intercept requests for non-Org files it knows it can convert,
+convert the file to a temporary Org file, and open this file instead.  On
+save, it exports back to the original non-Org file.")
+    (license license:gpl3+)))
+
 (define-public emacs-org-pomodoro
   ;; Last release version was from 2016.
   (let ((commit "aa07c11318f91219336197e62c47bc7a3d090479")
@@ -7159,7 +7429,7 @@ overview of tasks in a subtree.")
 (define-public emacs-org-trello
   (package
     (name "emacs-org-trello")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
      (origin
        (method git-fetch)
@@ -7169,7 +7439,7 @@ overview of tasks in a subtree.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "02gx3kv4mkij69ln8x8wf9n28x17pbb4kv85v78d3lxph7ykqimc"))))
+         "18y5zdjc7zh4jlwz6k1nl13i721rknqm0vp4mxfnmq0sc5a0qva0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7549,7 +7819,7 @@ single theme but a set of guidelines with numerous implementations.")
 (define-public emacs-solaire-mode
   (package
     (name "emacs-solaire-mode")
-    (version "1.0.9")
+    (version "2.0.0")
     (source
      (origin
        (method git-fetch)
@@ -7558,7 +7828,7 @@ single theme but a set of guidelines with numerous implementations.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "011m4r7s6i9lgjymh7jgq5jwwrpz4vmpvp3c8d4ix96v5hi04kzg"))))
+        (base32 "0aigavrqfi2dy4q5vrfs48n5k7839gqnafq7mp14cmcbrzcwadrd"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/hlissner/emacs-solaire-mode")
     (synopsis "Change background of file-visiting buffers in Emacs")
@@ -7693,7 +7963,7 @@ style, or as multiple word prefixes.")
 (define-public emacs-consult
   (package
     (name "emacs-consult")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method git-fetch)
@@ -7701,7 +7971,7 @@ style, or as multiple word prefixes.")
              (url "https://github.com/minad/consult")
              (commit version)))
        (sha256
-        (base32 "1kzwybp87srckd1238drdcn9h7jyyqz9pzcwvw3ld8bgyyrwsxkj"))
+        (base32 "1460818fb6y086vgn1mzmrwhpa5jswlwi4v71zr86cg6y7yg4248"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -7717,7 +7987,7 @@ list of candidates.")
 (define-public emacs-marginalia
   (package
     (name "emacs-marginalia")
-    (version "0.5")
+    (version "0.6")
     (source
      (origin
        (method git-fetch)
@@ -7726,7 +7996,7 @@ list of candidates.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07vfidgq9am07zz2ydhdifmp4jmgs9jn5l1nfqiyp16sd1br6czj"))))
+        (base32 "1lisns2vghmqlg8wiv6jy15cfgnc8j83khz0vfnmrjwgcmjw3bbz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/minad/marginalia")
     (synopsis "Marginalia in the minibuffer completions")
@@ -7830,7 +8100,7 @@ between symbols.")
 (define-public emacs-hl-todo
   (package
     (name "emacs-hl-todo")
-    (version "3.1.2")
+    (version "3.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -7839,7 +8109,7 @@ between symbols.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1i5mdmkbrxqx75grwl01pywbgl8pasr00mq6fidspp0aligsbg6w"))))
+                "0bdwdp8d0g7n0kv6l4h7alya3z6fsfi618dzw5x8f2az3r87yg8y"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/hl-todo")
     (synopsis "Emacs mode to highlight TODO and similar keywords")
@@ -7853,7 +8123,7 @@ regexp that matches all known keywords.")
 (define-public emacs-perspective
   (package
     (name "emacs-perspective")
-    (version "2.14")
+    (version "2.15")
     (source
      (origin
        (method git-fetch)
@@ -7862,7 +8132,7 @@ regexp that matches all known keywords.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04r5h5zs5r6s22p5ynhpr860r2r552z9pyf4kbabfg1gz9jag7yp"))))
+        (base32 "0l9i7ky25d9ii04w2brgxc8dk2rky50naba8lbfqi7hcc34z8pp6"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -7904,6 +8174,35 @@ perspective only its buffers are available by default.")
 can be saved to and restored from a file.")
     (license license:gpl2+)))
 
+(define-public emacs-eyebrowse
+  ;; XXX: Upstream has no tagged release.  Version is extracted from keyword
+  ;; in main file.
+  (let ((commit "88c7b59aa7c5c93bc23812217213adfa238f977b")
+        (revision "0"))
+    (package
+      (name "emacs-eyebrowse")
+      (version (git-version "0.7.8" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://depp.brause.cc/eyebrowse.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "09s07mvg5bz3dm9sxgn40c7z6d6ry1sdjzsxwgmy825f3xm66avs"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)))
+    (home-page "https://depp.brause.cc/eyebrowse/")
+    (synopsis "Simple-minded way to manage window configs in Emacs")
+    (description
+     "Eyebrowse is a global minor mode for Emacs that allows you to manage
+your window configurations in a simple manner, just like tiling window
+managers like i3wm with their workspaces do.  It displays their current state
+in the modeline by default.")
+    (license license:gpl3+))))
+
 (define-public emacs-test-simple
   (package
     (name "emacs-test-simple")
@@ -8461,50 +8760,48 @@ possible, and falls back to moving the left or top border otherwise.")
       (license license:gpl3+))))
 
 (define-public emacs-window-purpose
-  (let ((commit "f6421966761ad911fe8861aba2b110c5dd60d1ea")
-        (revision "1"))
-    (package
-      (name "emacs-window-purpose")
-      (version (git-version "1.7" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/bmag/emacs-purpose.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1p0y5gnrw7q65py2wjdf1hrdpiw5c2zbgvfbfmb13257jq5mga38"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-let-alist" ,emacs-let-alist)
-         ("emacs-imenu-list" ,emacs-imenu-list)))
-      (arguments
-       '(#:include
-         '("^[^/]+.el$"
-           "^[^/]+.el.in$"
-           "^dir$"
-           "^[^/]+.info$"
-           "^[^/]+.texi$"
-           "^[^/]+.texinfo$"
-           "^doc/dir$"
-           "^doc/[^/]+.info$"
-           "^doc/[^/]+.texi$"
-           "^doc/[^/]+.texinfo$"
-           "^layouts$")
-         #:exclude
-         '("^.dir-locals.el$"
-           "^test.el$"
-           "^tests.el$"
-           "^[^/]+-test.el$"
-           "^[^/]+-tests.el$")))
-      (home-page "https://github.com/bmag/emacs-purpose")
-      (synopsis "Purpose-based window management for Emacs")
-      (description "Purpose is a package that introduces the concept of a
+  (package
+    (name "emacs-window-purpose")
+    (version "1.8")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bmag/emacs-purpose.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1bq0s56wj6ibyh625zfnisy8yniz72dpg4mcgq55azsbnd4fblqq"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-let-alist" ,emacs-let-alist)
+       ("emacs-imenu-list" ,emacs-imenu-list)))
+    (arguments
+     '(#:include
+       '("^[^/]+.el$"
+         "^[^/]+.el.in$"
+         "^dir$"
+         "^[^/]+.info$"
+         "^[^/]+.texi$"
+         "^[^/]+.texinfo$"
+         "^doc/dir$"
+         "^doc/[^/]+.info$"
+         "^doc/[^/]+.texi$"
+         "^doc/[^/]+.texinfo$"
+         "^layouts$")
+       #:exclude
+       '("^.dir-locals.el$"
+         "^test.el$"
+         "^tests.el$"
+         "^[^/]+-test.el$"
+         "^[^/]+-tests.el$")))
+    (home-page "https://github.com/bmag/emacs-purpose")
+    (synopsis "Purpose-based window management for Emacs")
+    (description "Purpose is a package that introduces the concept of a
 \"purpose\" for windows and buffers, and then helps you maintain a robust
 window layout easily.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-iedit
   ;; Last release version was in 2016.
@@ -8707,6 +9004,60 @@ refactoring for the @uref{http://clojure.org, Clojure programming language}.
 It is recommended to use @code{clojure-mode} with Paredit or Smartparens.")
     (license license:gpl3+)))
 
+(define-public emacs-clojure-snippets
+  ;; Use latest commit (2018) since latest tagged release is too old and is
+  ;; missing important changes.
+  (let ((version "1.0.1")
+        (revision "0")
+        (commit "6068dca90467a0f4ebc2cd39338a173d6f5ddc04"))
+    (package
+      (name "emacs-clojure-snippets")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mpenet/clojure-snippets")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0vvadcydpsz4b17dlm1jd4fbddzfqibh3mlzv3k4gvp67vv10cqy"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:include (cons* "^.*\\/" %default-include)))
+      (propagated-inputs
+       `(("emacs-yasnippet" ,emacs-yasnippet)))
+      (home-page "https://github.com/mpenet/clojure-snippets")
+      (synopsis "Yasnippets for Clojure")
+      (description
+       "This package provides Yasnippets snippets for Clojure.")
+      (license license:gpl3+))))
+
+(define-public emacs-anakondo
+  ;; This particular commit introduces bug fixes above latest release.
+  (let ((version "0.2.1")
+        (revision "0")
+        (commit "c48518560815c49d8d78fb9069906d17e883385e"))
+    (package
+      (name "emacs-anakondo")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/didibus/anakondo")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1fzsqd150gpmrj8kz3zy9cd78x9vank7ra720mljhyf04z0h1mj6"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/didibus/anakondo")
+      (synopsis "clj-kondo based Clojure[Script] editing facilities")
+      (description
+       "This package makes use of clj-kondo's analysis data to provide code
+editing facilities related to Clojure, ClojureScript and cljc source.")
+      (license license:expat))))
+
 (define-public emacs-epl
   (package
     (name "emacs-epl")
@@ -8731,31 +9082,28 @@ The purpose of this library is to wrap all the quirks and hassle of
     (license license:gpl3+)))
 
 (define-public emacs-counsel-jq
-  (let ((release "1.0.0")
-        (revision "0")
-        (commit "aaf33fc2447096cd0d03b77395fe2a95c9fe1481"))
-    (package
-      (name "emacs-counsel-jq")
-      (version (git-version release revision commit))
-      (home-page "https://github.com/200ok-ch/counsel-jq")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url home-page)
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "10rz0qm8a4bl0m86kx19zq8lri047p4sxqyny08bgm9pbam0wvwn"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-swiper" ,emacs-swiper)
-         ("jq" ,jq)))
-      (synopsis "Live preview @code{jq} queries using counsel")
-      (description
-       "This Emacs package provides the ability to live preview @code{jq}
+  (package
+    (name "emacs-counsel-jq")
+    (version "1.1")
+    (home-page "https://github.com/200ok-ch/counsel-jq")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit "aaf33fc2447096cd0d03b77395fe2a95c9fe1481")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10rz0qm8a4bl0m86kx19zq8lri047p4sxqyny08bgm9pbam0wvwn"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-swiper" ,emacs-swiper)
+       ("jq" ,jq)))
+    (synopsis "Live preview @code{jq} queries using counsel")
+    (description
+     "This Emacs package provides the ability to live preview @code{jq}
 queries using counsel.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-counsel-notmuch
   ;; Upstream provides no release.  Extract version for main file.
@@ -9236,7 +9584,7 @@ indentation and filling of comments and C preprocessor fontification.")
 (define-public emacs-tide
   (package
     (name "emacs-tide")
-    (version "4.0.2")
+    (version "4.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9245,7 +9593,7 @@ indentation and filling of comments and C preprocessor fontification.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1n2dihpl53a48jis3l4rry581wpr5lxjd433drlkaa4lqgx8cw67"))))
+                "1fj2fghiycnzds2zxfxgj1d9mdzsvs9rvl9bwy2f1vwawqk1m48w"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -9344,7 +9692,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
 (define-public emacs-projectile
   (package
     (name "emacs-projectile")
-    (version "2.3.0")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
@@ -9352,7 +9700,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
               (file-name (string-append "projectile-" version ".el"))
               (sha256
                (base32
-                "1a2drmvx80076d52w46rgynwndj78l3ljr71pdzp9g9hh71mr27y"))))
+                "1vawbngfdcp6isqf74kwvk438wh6da2liqqxgzilw1qbhqg7z7aw"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -9513,7 +9861,7 @@ with Elfeed.")
 (define-public emacs-elfeed-score
   (package
     (name "emacs-elfeed-score")
-    (version "0.7.7")
+    (version "0.7.9")
     (source
      (origin
        (method git-fetch)
@@ -9523,7 +9871,7 @@ with Elfeed.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "07xid0a31ghknbfwj8dxzbqkg4sfayjhlqvp17p2bzlf1mj0zjyd"))))
+         "17hf6b5db4d0cm1996z4sl00y4c8gl3rga97xxp2bmwbhdr7kaxw"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-elfeed" ,emacs-elfeed)))
@@ -9602,7 +9950,7 @@ maximizes flexibility (at the expense of conciseness).")
 (define-public emacs-find-file-in-project
   (package
     (name "emacs-find-file-in-project")
-    (version "6.0.0")
+    (version "6.0.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9611,7 +9959,7 @@ maximizes flexibility (at the expense of conciseness).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1iagywiihwv96y9p811xlx4cmbsj8h76niymprv1vm4fj6cmihr6"))))
+                "1qkfijqr839y605ssyalr2v9n6b86hr64mxikc96lx6nzdyjyyl0"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -9802,7 +10150,7 @@ completion, interactive development and more.")
 (define-public emacs-rainbow-delimiters
   (package
     (name "emacs-rainbow-delimiters")
-    (version "2.1.4")
+    (version "2.1.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9811,7 +10159,7 @@ completion, interactive development and more.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1zr2669savnmkc68hiqsq9wccm6bs1j6jbmlac1xqh6nq7xgq36g"))))
+                "179mzsd8nvlr0ym9zf9fgdngsgxj3kdgbjblynliirsyk05ssrwc"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/rainbow-delimiters")
     (arguments
@@ -9896,7 +10244,7 @@ keybindings in Emacs, and does not come with any predefined bindings.")
 (define-public emacs-visual-fill-column
   (package
     (name "emacs-visual-fill-column")
-    (version "2.2")
+    (version "2.4")
     (source
      (origin
        (method git-fetch)
@@ -9905,7 +10253,7 @@ keybindings in Emacs, and does not come with any predefined bindings.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1wjb4zm9mx07v0qx2fxmclg4pg0ssgnf8lp89wc56kmc0s40jhii"))))
+        (base32 "1wfww6bqdphv871in80fc84ml8gkl04il6w51z2ycx99km8b723l"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joostkremers/visual-fill-column")
     (synopsis "Fill-column for visual-line-mode")
@@ -9980,7 +10328,7 @@ a file, or a complete directory.")
 (define-public emacs-ido-completing-read+
   (package
     (name "emacs-ido-completing-read+")
-    (version "4.13")
+    (version "4.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com"
@@ -9989,7 +10337,7 @@ a file, or a complete directory.")
               (file-name (string-append "ido-completing-read+-" version ".el"))
               (sha256
                (base32
-                "0g2ixvw2sxpvrgz78745zi6iql4501pqi85zi6j31dnc1hx1i0r6"))))
+                "1wn94nkfv6qyyj6clvms7m7ncqf09bgszv67may530y75kylivav"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)))
@@ -10051,16 +10399,16 @@ behavior very similar to that of Python mode.")
 (define-public emacs-gitlab-ci-mode
   (package
     (name "emacs-gitlab-ci-mode")
-    (version "20190425.11.10")
+    (version "20190824.12.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://gitlab.com/joewreschnig/gitlab-ci-mode.git")
+                    (url "https://gitlab.com/joewreschnig/gitlab-ci-mode")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jkp9mnbiccqnha9zs646znqyqvy5jjb81kah7ghbkzdqqk2avm0"))))
+                "16fb4r3vq8xkzl911v7gaky95w1agfxjlpaxpjmidwx48rbcar59"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-yaml-mode" ,emacs-yaml-mode)))
@@ -10123,7 +10471,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
 (define-public emacs-templatel
   (package
     (name "emacs-templatel")
-    (version "0.1.4")
+    (version "0.1.6")
     (source
      (origin
        (method git-fetch)
@@ -10132,7 +10480,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1k33h503038l2bcr8gs020z2cjxfs94lamkdgv52cvd9i20d0kqq"))))
+        (base32 "03n7amd2mfr4jmc4s1ar5ckm86knr7qarxxlkdhbnw3svy5kbc57"))))
     (build-system emacs-build-system)
     (home-page "https://clarete.li/templatel")
     (synopsis "Jinja inspired template language for Emacs Lisp")
@@ -10167,7 +10515,7 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.7.0")
+    (version "3.7.1")
     (source
      (origin
        (method git-fetch)
@@ -10176,7 +10524,7 @@ ack, ag, helm and pt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0lxq13bsbh7xawgsq08kjm7s28x9yl8mid3538flv5kcc1rv2b9y"))))
+        (base32 "0b8sfpvy02ijk9xi9b44762b718jqfq063wcg75dk3q452d27s1h"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -10244,7 +10592,7 @@ for search-based navigation of buffers.")
 (define-public emacs-helm-ag
   (package
     (name "emacs-helm-ag")
-    (version "0.62")
+    (version "0.64")
     (source
      (origin
        (method git-fetch)
@@ -10253,7 +10601,7 @@ for search-based navigation of buffers.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xgbpp8xqdiyvfs64x0q909g77ml28z3irw2lnasvpsg0dfdm2zy"))))
+        (base32 "0ml9yp3qaiwn7iixyxvsj3fxn7gw913qxisr47df57q4ka912law"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -10397,7 +10745,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method git-fetch)
@@ -10406,7 +10754,7 @@ target will call @code{compile} on it.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wigprg45n6q6jmkw2a9s7mr4h500l2ky9244rrdvkjsgj6af8q8"))))
+        (base32 "0psd8zrhs5w1cfmksd5sjgy9xzfs9i9zp55g97rp7zp6y5als0lx"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ;don't exclude 'cider-test.el'
@@ -10965,6 +11313,33 @@ end of a line and increment or decrement it.")
 a popup window for previewing candidates.")
       (license license:gpl3+))))
 
+(define-public emacs-evil-paredit
+  (let ((commit "e058fbdcf9dbf7ad6cc77f0172d7517ef233d55f"))
+    (package
+      (name "emacs-evil-paredit")
+      (version "0.0.2")                 ; says 0.0.2 in evil-paredit.el
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/roman/evil-paredit")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0b08y4spapl4g2292j3l4cr84gjlvm3rpma3gqld4yb1sxd7v78p"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-evil" ,emacs-evil)
+         ("emacs-paredit" ,emacs-paredit)))
+      (home-page "https://github.com/roman/evil-paredit")
+      (synopsis "Evil extension to integrate nicely with Paredit")
+      (description
+       "This package helps you to not screw up your Paredit setup when using
+Evil mode.  Whenever you try to use a modifier command like @kbd{d}, @kbd{c},
+@kbd{y} to modify the Paredit buffer, it will stop you to do so in the case
+you break the parity of parenthesis.")
+      (license license:expat))))
+
 (define-public emacs-evil-args
   (let ((commit "758ad5ae54ad34202064fec192c88151c08cb387")
         (revision "1"))
@@ -11189,7 +11564,7 @@ pasting into and from @code{tmux} paste buffers.")
 (define-public emacs-evil-nerd-commenter
   (package
     (name "emacs-evil-nerd-commenter")
-    (version "3.5.3")
+    (version "3.5.4")
     (source
      (origin
        (method git-fetch)
@@ -11199,7 +11574,7 @@ pasting into and from @code{tmux} paste buffers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1y5pn3rkqj8dxp5c7dsci621vnv6hsia74w2c1hybkkrjbka851q"))))
+         "1vyl8lidhjph7k86n8q09mwqpasaxsmwb8vi5i2gcd6klds9hg0d"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-evil" ,emacs-evil)))
     (home-page "https://github.com/redguardtoo/evil-nerd-commenter")
@@ -11330,7 +11705,7 @@ later translated into the host format, e.g., LaTeX or HTML.")
 (define-public emacs-writegood-mode
   (package
     (name "emacs-writegood-mode")
-    (version "2.0.2")
+    (version "2.0.4")
     (home-page "https://github.com/bnbeckwith/writegood-mode")
     (source (origin
               (method git-fetch)
@@ -11339,7 +11714,7 @@ later translated into the host format, e.g., LaTeX or HTML.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b"))
+                "1nwngnddlkcvix7qx39fadab7hqzg8snb0k63kwpr8v57lyrm48z"))
               (file-name (string-append name "-checkout"))))
     (build-system emacs-build-system)
     (synopsis "Polish up poor writing on the fly")
@@ -12155,7 +12530,7 @@ above over the network.")
 (define-public emacs-helm-org-rifle
   (package
     (name "emacs-helm-org-rifle")
-    (version "1.7.0")
+    (version "1.7.1")
     (source
      (origin
        (method git-fetch)
@@ -12165,7 +12540,7 @@ above over the network.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "058zvh7cdall7dl3xay9ibcjvs13fbqp8fli3lz980pinmsds3r2"))))
+         "0pm6va26kadjvbai4qsnjc2bk379w2nk6h3b5f0c2yv3q5na0p49"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -12573,14 +12948,14 @@ performance-oriented and tidy.")
 (define-public emacs-leaf
   (package
     (name "emacs-leaf")
-    (version "4.4.4")
+    (version "4.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "leaf-" version ".tar"))
        (sha256
-        (base32 "1npg06zmy21kg2qsqgfm03l7vjib697i96awypcdb0hw5mvmc1a1"))))
+        (base32 "0h0ksmgrhn29ci6z8y54dbbzcqlvfs1ra0kmf226gz0dqzk45vb3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/conao3/leaf.el")
     (synopsis "Simplify your init.el configuration, extended use-package")
@@ -12801,7 +13176,7 @@ reached with the right hand.")
 (define-public emacs-csharp-mode
   (package
     (name "emacs-csharp-mode")
-    (version "0.10.0")
+    (version "0.11.0")
     (source
      (origin
        (method git-fetch)
@@ -12810,7 +13185,7 @@ reached with the right hand.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vwkbla2gkfa9dzxfvrvr7hd2z16769iwbycl7k6l701dnwli1fw"))))
+        (base32 "0aq6ln92jr3hcrd1592n4s5cb079fly7qaj2hm510p9zckyfx230"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/josteink/csharp-mode")
     (synopsis "Major mode for C# code")
@@ -12904,13 +13279,13 @@ containing words from the Rime project.")
 (define-public emacs-pyim
   (package
     (name "emacs-pyim")
-    (version "3.7.6")
+    (version "3.7.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/pyim-" version ".tar"))
        (sha256
-        (base32 "1crimmvyppjmds9shfvxy9j5zi3mk133bv5av0fgicm7ddkivksr"))))
+        (base32 "00ff1izdwcy53dcwpdn18wwndnw2jsw4bhg8gkqaa60xm468xzkl"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -12928,14 +13303,14 @@ shuangpin, wubi and cangjie.")
 (define-public emacs-posframe
   (package
     (name "emacs-posframe")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "posframe-" version ".tar"))
        (sha256
-        (base32 "19a1dkjyw9m74aamyqrsvzrdwshngqpmjzdngx6v5nifvcilrlnk"))))
+        (base32 "0c3lnrydsysv8j25brgc0cckf1hz54yhkginncmw81y1ia43rqmx"))))
     (build-system emacs-build-system)
     ;; emacs-minimal does not include the function font-info.
     (arguments
@@ -13177,7 +13552,7 @@ other operations.")
 (define-public emacs-exwm-x
   (package
     (name "emacs-exwm-x")
-    (version "1.9.0")
+    (version "2.0.2")
     (synopsis "Derivative window manager based on EXWM")
     (source
      (origin
@@ -13188,7 +13563,7 @@ other operations.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4"))))
+         "0h248mma7kky30jr9bbhmp95wchl2cx5p6kh0gxmzpbc247dn2cc"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-counsel" ,emacs-counsel)
@@ -13360,7 +13735,7 @@ addition of surrounding pairs, such as parentheses and quotes, in evil mode.")
 (define-public emacs-evil-commentary
   (package
     (name "emacs-evil-commentary")
-    (version "2.1.1")
+    (version "2.2.0")
     (source
      (origin
        (method git-fetch)
@@ -13369,7 +13744,7 @@ addition of surrounding pairs, such as parentheses and quotes, in evil mode.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4"))))
+        (base32 "1l8zi9wlg1f7ffm8gh92qwk3q7h6cdl8b8zkd9hcda53mq6klpjr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -13691,7 +14066,7 @@ JSON objects.")
 (define-public emacs-jsonnet-mode
   (package
     (name "emacs-jsonnet-mode")
-    (version "0.1.2")
+    (version "0.1.3")
     (source
      (origin
        (method git-fetch)
@@ -13701,7 +14076,7 @@ JSON objects.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0vi7415n90d1z2ww1hld0gdp6v7z4rd6f70h476dp2x4hydk293i"))))
+         "14nxfa91yg2243v4d5kvynp2645x3811ispmhmpgil3x9qbl9jg9"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -13868,27 +14243,27 @@ additions:
       (license license:gpl3+))))
 
 (define-public emacs-dired-sidebar
-  (let ((commit "da77919081d9a4e73c2df63542353319381e4f89")
-        (revision "2"))
-    (package
-      (name "emacs-dired-sidebar")
-      (home-page "https://github.com/jojojames/dired-sidebar")
-      (version (git-version "0.1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "05h56wdl2xvc8davnx83ypg20fl7wlks97cafa4r2yf141xjc05h"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-dired-subtree" ,emacs-dired-hacks)))
-      (synopsis "Sidebar for Emacs using Dired")
-      (description
-       "This package provides a sidebar for Emacs similar to @code{NeoTree}
+  (package
+    (name "emacs-dired-sidebar")
+    (home-page "https://github.com/jojojames/dired-sidebar")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "090dqaqyjmkzrz4szjpk1iip0bdvb0frp4l79393f8ki8w7c16c1"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dired-subtree" ,emacs-dired-hacks)))
+    (synopsis "Sidebar for Emacs using Dired")
+    (description
+     "This package provides a sidebar for Emacs similar to @code{NeoTree}
 or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-which-key
   (package
@@ -14460,7 +14835,7 @@ included by default, and more can be readily added.")
 (define-public emacs-pubmed
   (package
     (name "emacs-pubmed")
-    (version "0.2.1")
+    (version "0.5")
     (source
      (origin
        (method git-fetch)
@@ -14470,7 +14845,7 @@ included by default, and more can be readily added.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "15bwjxc7g43m5pi8z17anaqqkvi209r7kk1chmf175477gvrv7c0"))))
+         "17d2v7q6sfafk8j1ish053xsmihi4f1hbk53fkkmhwan6sw9c4sc"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)
@@ -14969,7 +15344,7 @@ Features:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "2.3.10")
+    (version "2.3.11")
     (source
      (origin
        (method git-fetch)
@@ -14978,7 +15353,7 @@ Features:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "14nrc46290q54y7wv25251f2kqc0z8i9byl09xkgjijqldl9vdxa"))))
+        (base32 "1990g1b6v0i7jaiv35bdssdn601rjifzg4fy9s3sxk0drqm1xiss"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -15228,7 +15603,7 @@ Lisp.")
 (define-public emacs-esxml
   (package
     (name "emacs-esxml")
-    (version "0.3.5")
+    (version "0.3.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -15237,28 +15612,13 @@ Lisp.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "16jn404vfmsvm12wrf8iczqlgdf2iycbxrvalvzxnm2gr5dfzp7z"))))
+                "1xzxmgsg0j72sf1vjh9gjswz3c29js0kqhm7r3jrqrh3a5agdnml"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-sources
-           (lambda _
-             ;; See: https://github.com/tali713/esxml/pull/28.
-             (substitute* "css-lite.el"
-               ((";;; main interface")
-                (string-append ";;; main interface\n"
-                               "(require 'cl-lib)"))
-               (("mapcan")
-                "cl-mapcan")
-               (("',\\(cl-mapcan #'process-css-rule rules\\)")
-                "(cl-mapcan #'process-css-rule ',rules)"))
-             (substitute* "esxml-form.el"
-               ((",esxml-form-field-defn")
-                "#'esxml-form-field-defn"))
-             ;; See: https://github.com/tali713/esxml/issues/25
-             (delete-file "esxpath.el")
-             #t)))))
+     `(#:emacs ,emacs                   ;need libxml
+       ;; XXX: Only the two following files are meant to be packaged.
+       ;; Byte-compiling the others Elisp files leads to build errors anyway.
+       #:include (list "esxml.el" "esxml-query.el")))
     (propagated-inputs
      `(("emacs-kv" ,emacs-kv)))
     (home-page "https://github.com/tali713/esxml/")
@@ -15938,7 +16298,7 @@ official @command{sqlite3} executable to access SQL database.")
 (define-public emacs-closql
   (package
     (name "emacs-closql")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
      (origin
        (method git-fetch)
@@ -15948,7 +16308,7 @@ official @command{sqlite3} executable to access SQL database.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "06j0sc6dx8f34wc8i7dzkp8jwvwnrpnl8i93vpc1qw0ih0jwa2zh"))))
+         "01l4w3wc7rm7mca8pbkyz0yrks4z8i00ppy5c4bmrnn6akf7h9ih"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-emacsql" ,emacs-emacsql)))
@@ -15965,7 +16325,7 @@ add any additional instance slots.")
 (define-public emacs-epkg
   (package
     (name "emacs-epkg")
-    (version "3.2.2")
+    (version "3.3.0")
     (source
      (origin
        (method git-fetch)
@@ -15975,7 +16335,7 @@ add any additional instance slots.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1pxz611qb3m33r6343h0xhwqvvhjl131zyc2klplzgb23rkm8lk0"))))
+         "03zsysj78w43q902wi9dhck64q9va247avr6fhdw8ynf2lvb78d3"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-closql" ,emacs-closql)
@@ -16372,7 +16732,7 @@ according to a parsing expression grammar.")
 (define-public emacs-eldev
   (package
     (name "emacs-eldev")
-    (version "0.8.1")
+    (version "0.9.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -16381,7 +16741,7 @@ according to a parsing expression grammar.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "19s45hdhcg5l608awfxvmhd61xzp7dd5pvviv89xzzksx74l1188"))))
+                "1jfj4f5w20qd12k6ygv0jazn2x9pxjrmqmlmibppc4ybrhhgmg0s"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -16432,7 +16792,7 @@ parallel to Gradle — its configuration is a program on its own.")
 (define-public emacs-with-simulated-input
   (package
     (name "emacs-with-simulated-input")
-    (version "2.4")
+    (version "3.0")
     (source
      (origin
        (method git-fetch)
@@ -16442,7 +16802,7 @@ parallel to Gradle — its configuration is a program on its own.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "12d3mhvzj74qwc4rdcb236jbqnf5lam8pk78j92kwbwjk1jaz2cf"))))
+         "0n8h84whsh0aph8xhn9plprix9f6bysgvarz2anz7kwns19js6s4"))))
     (build-system emacs-build-system)
     (arguments
      ;; The test suite fails with error: "Spies can only be created in
@@ -16560,7 +16920,7 @@ files to be expanded upon opening them.")
 (define-public emacs-ebib
   (package
     (name "emacs-ebib")
-    (version "2.29")
+    (version "2.32.1")
     (source
      (origin
        (method git-fetch)
@@ -16569,10 +16929,11 @@ files to be expanded upon opening them.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1d0xnhdcsz2ysq145k2l0f2r4vb0pkai1v6wl6sfba7xi5fc323i"))))
+        (base32 "1xgpdw0sxl2c9dn6x6fk0rqpqlqxsjlj0vyag611blj600br7dqr"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-parsebib" ,emacs-parsebib)))
+     `(("emacs-biblio" ,emacs-biblio)
+       ("emacs-parsebib" ,emacs-parsebib)))
     (home-page "https://joostkremers.github.io/ebib/")
     (synopsis "BibTeX database manager for Emacs")
     (description
@@ -16663,39 +17024,38 @@ arXiv, Google Scholar, Library of Congress, etc.
       (license license:gpl3+))))
 
 (define-public emacs-ewmctrl
-  (let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf"))
-    (package
-      (name "emacs-ewmctrl")
-      (version (git-version "0.0.1" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/flexibeast/ewmctrl")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"))))
-      (build-system emacs-build-system)
-      (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-ewmctrl
-             ;; This build phase makes sure ‘ewmctrl’ looks
-             ;; for ‘wmctrl’ in the right place.
-             (lambda _
-               (let ((file "ewmctrl.el"))
-                 (chmod file #o644)
-                 (emacs-substitute-sexps file
-                   ("(defcustom ewmctrl-wmctrl-path" (which "wmctrl")))))))))
-      (inputs
-       `(("wmctrl" ,wmctrl)))
-      (home-page "https://github.com/flexibeast/ewmctrl")
-      (synopsis "Emacs interface to @code{wmctrl}")
-      (description "@code{ewmctrl} provides an Emacs interface to
+  (package
+    (name "emacs-ewmctrl")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/flexibeast/ewmctrl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"))))
+    (build-system emacs-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ewmctrl
+           ;; This build phase makes sure ‘ewmctrl’ looks
+           ;; for ‘wmctrl’ in the right place.
+           (lambda _
+             (let ((file "ewmctrl.el"))
+               (chmod file #o644)
+               (emacs-substitute-sexps file
+                 ("(defcustom ewmctrl-wmctrl-path" (which "wmctrl")))))))))
+    (inputs
+     `(("wmctrl" ,wmctrl)))
+    (home-page "https://github.com/flexibeast/ewmctrl")
+    (synopsis "Emacs interface to @code{wmctrl}")
+    (description "@code{ewmctrl} provides an Emacs interface to
 @code{wmctrl} command-line window-management program.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-erc-image
   (let ((commit "82fb3871f02e24b1e880770b9a3d187aab43d0f0")
@@ -16777,32 +17137,29 @@ and @code{erc-send-modify-hook} to download and show images.")
     (license license:gpl3+)))
 
 (define-public emacs-parsec
-  ;; Last release is too old (2016).
-  (let ((revision "0")
-        (commit "2cbbbc2254aa7bcaa4fb5e07c8c1bf2f381dba26"))
-    (package
-      (name "emacs-parsec")
-      (version (git-version "0.1.3" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/cute-jumper/parsec.el")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1g1s8s45g3kkbi3h7w0pmadmzdswb64mkdvdpg2lihg341kx37gm"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/cute-jumper/parsec.el")
-      (synopsis "Parser combinator library for Emacs Lisp")
-      (description
-       "Parsec is a parser combinator library for Emacs Lisp, similar to
+  (package
+    (name "emacs-parsec")
+    (version "0.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cute-jumper/parsec.el")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1g1s8s45g3kkbi3h7w0pmadmzdswb64mkdvdpg2lihg341kx37gm"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/cute-jumper/parsec.el")
+    (synopsis "Parser combinator library for Emacs Lisp")
+    (description
+     "Parsec is a parser combinator library for Emacs Lisp, similar to
 Haskell's Parsec library.  It contains most of the parser combinators in
 Text.Parsec.Combinator, and more combinators can be added if necessary!  Most
 of the parser combinators have the same behavior as their Haskell
 counterparts.  Parsec also comes with a simple error handling mechanism so
 that it can display an error message showing how the parser fails.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-move-text
   (package
@@ -16980,7 +17337,7 @@ navigate and display hierarchy structures.")
 (define-public emacs-datetime
   (package
     (name "emacs-datetime")
-    (version "0.6.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
@@ -16989,8 +17346,7 @@ navigate and display hierarchy structures.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0a3q667pybpmsjkbgf6287jwgpnx8brp5314wb8zbczw6ncygnbi"))))
+        (base32 "0g6qgp6zvrbiaq6yfzqs3bmnry43xspp3ra3hm17x80b6izdsn90"))))
     (build-system emacs-build-system)
     (arguments
      `(#:include (cons "^[^/]*\\.extmap$" %default-include)))
@@ -17870,7 +18226,7 @@ powerful Org contents.")
 (define-public emacs-org-re-reveal
   (package
     (name "emacs-org-re-reveal")
-    (version "3.7.0")
+    (version "3.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -17879,7 +18235,7 @@ powerful Org contents.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1vzn0l8ig4rzh5h8j7kxn8kslqrij97qqv98fbnlwmrw4z87v8dr"))))
+                "1w6zvgfcyjqlxy4s13h7w66vv0fcid57s6vigzgnzi666w86fdyh"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-htmlize" ,emacs-htmlize)
@@ -18662,7 +19018,7 @@ decrease the number at point.")
 (define-public emacs-highlight-defined
   (package
     (name "emacs-highlight-defined")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
      (origin
        (method git-fetch)
@@ -18671,7 +19027,7 @@ decrease the number at point.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08czwa165rnd5z0dwwdddn7zi5w63sdk31l47bj0598kbly01n7r"))))
+        (base32 "0a9nn1jnbgv93kz1iz5iay34d0p7lkpd8ic619ysk8qcksc0yn2i"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/highlight-defined")
     (synopsis "Syntax highlighting of known Elisp symbols")
@@ -19410,8 +19766,8 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-magit
-  (let ((commit "253c644807013fe92429acdef418748794b8f254")
-        (revision "4"))
+  (let ((commit "98c076fbeb6d2d7d71e02dc204ba3ad5d577abda")
+        (revision "5"))
     (package
       (name "emacs-evil-magit")
       (version (git-version "0.4.2" revision commit))
@@ -19424,7 +19780,7 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "08mh7phxsdb9w4dfs0pmr4l4fdzzr2rm88z2s8karfi5j5ik2ag5"))))
+           "0b4iplxh3rmy8jadhf05pgksv1798d68d1jrhfry93jca8x9crxs"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -20009,36 +20365,31 @@ image, rotate it, save modified images, and more.")
       (license license:gpl3+))))
 
 (define-public emacs-package-lint
-  ;; The commit below includes a fix for a missing file, "stdlib-changes",
-  ;; preventing build.
-  (let ((commit "14c216f4889e71eec2a9da64e36ab8990337e82d")
-        (version "0.13")
-        (revision "0"))
-    (package
-      (name "emacs-package-lint")
-      (version (git-version version revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/purcell/package-lint")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1zifiqmpj9j14fnrm3jxapady25m1nlm514nfry0jfrhhikvj6i8"))))
-      (arguments
-       '(#:include (cons "^data/" %default-include)))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/purcell/package-lint")
-      (synopsis "Linting library for elisp package authors")
-      (description
-       "This provides a list of issues with the Emacs package metadata of a file,
+  (package
+    (name "emacs-package-lint")
+    (version "0.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/package-lint")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1cn713g90zyjfq225yvg14c1qshslpi4466m3w102l5g57p8xv44"))))
+    (arguments
+     '(#:include (cons "^data/" %default-include)))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/purcell/package-lint")
+    (synopsis "Linting library for elisp package authors")
+    (description
+     "This provides a list of issues with the Emacs package metadata of a file,
 e.g. the package dependencies it requires.  See function
 @code{package-lint-buffer}.  Checks will currently be enabled only if a
 \"Package-Requires:\" or \"Package-Version:\" header is present in the
 file.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-picpocket
   (let ((version "41")
@@ -20248,7 +20599,7 @@ text in neighboring sections.")
 (define-public emacs-pandoc-mode
   (package
     (name "emacs-pandoc-mode")
-    (version "2.30.1")
+    (version "2.31")
     (source
      (origin
        (method git-fetch)
@@ -20258,7 +20609,7 @@ text in neighboring sections.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1k31pkvd9m798i6phcr0y3wd34fgq6ii41hx3lszmikvxb1yvm2y"))))
+         "1c3gay9fkikg7h46djw1nf86fzckmv7w1zbz5fbar20klcr12pbm"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -20983,7 +21334,7 @@ files are easily readable and they work nicely with version control systems.")
 (define-public emacs-all-the-icons
   (package
     (name "emacs-all-the-icons")
-    (version "4.0.1")
+    (version "5.0.0")
     (source
      (origin
        (method git-fetch)
@@ -20992,7 +21343,7 @@ files are easily readable and they work nicely with version control systems.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0yh7gnv9xfqn8q4rzaa6wpyn9575vyfxy7d3afly2mqsb367fgm5"))))
+        (base32 "0lwgvgnqf7vihglm0c5bwsxbl4x7f641289cji5s7jwy2dbsqk7g"))))
     (build-system emacs-build-system)
     (arguments
      `(#:include '("\\.el$" "^data/" "^fonts/")
@@ -22250,7 +22601,7 @@ recursively.  The results are cached for speed.")
 (define-public emacs-orgit
   (package
     (name "emacs-orgit")
-    (version "1.6.3")
+    (version "1.7.0")
     (home-page "https://github.com/magit/orgit")
     (source (origin
               (method git-fetch)
@@ -22260,7 +22611,7 @@ recursively.  The results are cached for speed.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "08amzcvw483dpfq5r34ysn84wzd538qk0jblc94vgcaidspx6481"))))
+                "1xd58yqqsb79lgxkhxs4s50jq8f3639k6fhlza9hsy53apfczkal"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -22276,7 +22627,7 @@ Later you can insert it into an Org buffer using the command
 (define-public emacs-amx
   (package
     (name "emacs-amx")
-    (version "3.3")
+    (version "3.4")
     (source
      (origin
        (method git-fetch)
@@ -22285,7 +22636,7 @@ Later you can insert it into an Org buffer using the command
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ikjzs119g57cwh2v3jmy63lggqc0ib99q5gsl93slkk4y2ihavw"))))
+        (base32 "0h1cxqqf0hixh25j679r57bq9dv0b20icf268wbnsim5xp88ngf8"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)))
@@ -22398,7 +22749,7 @@ constant expressions.")
 (define-public emacs-dockerfile-mode
   (package
     (name "emacs-dockerfile-mode")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
        (method git-fetch)
@@ -22408,7 +22759,7 @@ constant expressions.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1br73dsls42fn4rwagljkpa3l4wwj6f7jxfn3gmgl6c54z81av3v"))))
+         "1ypkihd9si769r6k0lfrv8jq8mjv4gyhiwyi820sayfppvma5rj0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)))
@@ -22886,7 +23237,7 @@ as Emacs Lisp.")
 (define-public emacs-transient
   (package
     (name "emacs-transient")
-    (version "0.3.2")
+    (version "0.3.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -22895,7 +23246,7 @@ as Emacs Lisp.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1766hdqzg95k62nqhadfv502mpnjlx1l59ppqmc6r0las82dc6a8"))))
+                "16z0j69sk7k51sd1vri3y2v0xjj0w7wpf5mmwnsxp8y6d3m0yjbv"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #f                      ;no test suite
@@ -22906,12 +23257,10 @@ as Emacs Lisp.")
              (invoke "make" "info")
              ;; Move the info file to lisp so that it gets installed by the
              ;; emacs-build-system.
-             (rename-file "docs/transient.info" "lisp/transient.info")
-             #t))
+             (rename-file "docs/transient.info" "lisp/transient.info")))
          (add-after 'build-info-manual 'enter-lisp-directory
            (lambda _
-             (chdir "lisp")
-             #t)))))
+             (chdir "lisp"))))))
     (native-inputs
      `(("texinfo" ,texinfo)))
     (propagated-inputs
@@ -22926,51 +23275,49 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
     (license license:gpl3+)))
 
 (define-public emacs-forge
-  (let ((commit "05ef02913004826165c383bd6d2ff6574542b76c"))
-    (package
-      (name "emacs-forge")
-      (version (git-version "0.1.0" "5" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/magit/forge")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1vv7xlawj2zmwqk69qlsqflhh0lbyqm5xf4x8l4v2069g0k8mmx1"))))
-      (build-system emacs-build-system)
-      (native-inputs
-       `(("texinfo" ,texinfo)))
-      (propagated-inputs
-       `(("emacs-closql" ,emacs-closql)
-         ("emacs-dash" ,emacs-dash)
-         ("emacs-emacsql-sqlite" ,emacs-emacsql)
-         ("emacs-ghub" ,emacs-ghub)
-         ("emacs-let-alist" ,emacs-let-alist)
-         ("emacs-magit" ,emacs-magit)
-         ("emacs-markdown-mode" ,emacs-markdown-mode)
-         ("emacs-transient" ,emacs-transient)))
-      (arguments
-       `(#:tests? #f ;no tests
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'build-info-manual
-             (lambda _
-               (invoke "make" "info")
-               ;; Move the info file to lisp so that it gets installed by the
-               ;; emacs-build-system.
-               (rename-file "docs/forge.info" "lisp/forge.info")))
-           (add-after 'build-info-manual 'chdir-lisp
-             (lambda _
-               (chdir "lisp")
-               #t)))))
-      (home-page "https://github.com/magit/forge/")
-      (synopsis "Access Git forges from Magit")
-      (description "Work with Git forges, such as Github and Gitlab, from the
+  (package
+     (name "emacs-forge")
+     (version "0.2.0")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/magit/forge")
+              (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "139pndj9l9aifnvv2ak5zwf5gzwhp3m6dfpw1avf4vkh1zywzwa0"))))
+     (build-system emacs-build-system)
+     (native-inputs
+      `(("texinfo" ,texinfo)))
+     (propagated-inputs
+      `(("emacs-closql" ,emacs-closql)
+        ("emacs-dash" ,emacs-dash)
+        ("emacs-emacsql-sqlite" ,emacs-emacsql)
+        ("emacs-ghub" ,emacs-ghub)
+        ("emacs-let-alist" ,emacs-let-alist)
+        ("emacs-magit" ,emacs-magit)
+        ("emacs-markdown-mode" ,emacs-markdown-mode)
+        ("emacs-transient" ,emacs-transient)))
+     (arguments
+      `(#:tests? #f                     ;no tests
+        #:phases
+        (modify-phases %standard-phases
+          (add-after 'unpack 'build-info-manual
+            (lambda _
+              (invoke "make" "info")
+              ;; Move the info file to lisp so that it gets installed by the
+              ;; emacs-build-system.
+              (rename-file "docs/forge.info" "lisp/forge.info")))
+          (add-after 'build-info-manual 'chdir-lisp
+            (lambda _
+              (chdir "lisp"))))))
+     (home-page "https://github.com/magit/forge/")
+     (synopsis "Access Git forges from Magit")
+     (description "Work with Git forges, such as Github and Gitlab, from the
 comfort of Magit and the rest of Emacs.")
-      (license license:gpl3+))))
+     (license license:gpl3+)))
 
 (define-public emacs-matcha
   (let ((commit "c7df5cf5cdac9ae369e241342389ccda0205eab9"))
@@ -23498,7 +23845,7 @@ url-encoded parameters, as well as web sockets.")
 (define-public emacs-markdown-preview-mode
   (package
     (name "emacs-markdown-preview-mode")
-    (version "0.9.2")
+    (version "0.9.4")
     (source
      (origin
        (method git-fetch)
@@ -23508,7 +23855,7 @@ url-encoded parameters, as well as web sockets.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"))))
+         "0a0qskhy6jil583hq3mgbzdsi3m1schzyzrd46yfxdsvqiczg170"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-markdown-mode" ,emacs-markdown-mode)
@@ -23903,7 +24250,7 @@ all of your projects, then override or add variables on a per-project basis.")
 (define-public emacs-calibredb
   (package
     (name "emacs-calibredb")
-    (version "2.8.0")
+    (version "2.10.0")
     (source
      (origin
        (method git-fetch)
@@ -23912,7 +24259,7 @@ all of your projects, then override or add variables on a per-project basis.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19gc05k2p1l8wlkrqij9cw6d61hzknd6a9n64kzlpi87cpbav3lv"))))
+        (base32 "0s26a2fy1xldd0q57avds7zn0h7lkis2hjh9zmm1qhwn8409hys9"))))
     (build-system emacs-build-system)
     (arguments
      '(#:phases
@@ -23925,8 +24272,7 @@ all of your projects, then override or add variables on a per-project basis.")
                  ("calibredb-program"
                   (string-append calibre "/bin/calibredb"))
                  ("calibredb-fetch-metadata-program"
-                  (string-append calibre "/bin/fetch-ebook-metadata"))))
-             #t)))))
+                  (string-append calibre "/bin/fetch-ebook-metadata")))))))))
     (inputs
      `(("calibre" ,calibre)))
     (propagated-inputs
@@ -24039,14 +24385,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.5.0.4")
+    (version "2.5.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "0yk4ckk45gkjp24nfywz49j8pazq33m6pga3lirb5h6zc8an5z24"))))
+        (base32 "1dclxffynfacvwi2scpda35sxjb42603yyf2p0477qa9b0i4xha0"))))
     (build-system emacs-build-system)
     (arguments
      `(#:emacs ,emacs                   ;need D-Bus
@@ -24225,7 +24571,7 @@ and article extracts for Wikipedia.")
 (define-public emacs-webfeeder
   (package
   (name "emacs-webfeeder")
-  (version "1.1.1")
+  (version "1.1.2")
   (source
     (origin
       (method url-fetch)
@@ -24235,7 +24581,7 @@ and article extracts for Wikipedia.")
              ".tar"))
       (sha256
         (base32
-          "09caj12hfdfhlbcsmjyhw728w1f7yq13hdslh793yvfqv83ipvc4"))))
+          "1l128q424qsq9jv2wk8cv4zli71rk34q5kgwa9axdz0d27p9l6v4"))))
   (build-system emacs-build-system)
   (home-page "https://gitlab.com/Ambrevar/emacs-webfeeder")
   (synopsis "Build RSS and Atom webfeeds from HTML files")
@@ -24739,7 +25085,7 @@ files to numerous other formats via Pandoc.")
 (define-public emacs-wc-mode
   (package
     (name "emacs-wc-mode")
-    (version "1.4")
+    (version "1.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -24748,7 +25094,7 @@ files to numerous other formats via Pandoc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "01icd63mb2hg1bgbmkq3jm8kc3ic8whfy2awcgx53zqkmyz87qxc"))))
+                "1wzgb4z2qyyv223x5fc7ff2fn5xpz4s7lr1q1y33q8878a7w9d45"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/bnbeckwith/wc-mode")
     (synopsis "Running word count with goals (minor mode)")
@@ -24795,14 +25141,14 @@ federated microblogging social network.")
 (define-public emacs-ebdb
   (package
     (name "emacs-ebdb")
-    (version "0.6.22")
+    (version "0.6.23")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "ebdb-" version ".tar"))
        (sha256
-        (base32 "0dljl21n6508c7ash7l6zgxhpn2wdfzga0va63d4k9nwnqmkvsgz"))))
+        (base32 "0j3jvy9s606qjqcmcjzgck3dp8bhpgly2g00wnswzcgk4makdzld"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/girzel/ebdb")
     (synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -25146,7 +25492,7 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-themes
   (package
     (name "emacs-modus-themes")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method git-fetch)
@@ -25155,7 +25501,7 @@ Emacs that integrate with major modes like Org-mode.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0dw33kvs6k1a933d64fnrckzhs12d8m03a31cwblm39vmirgmf6y"))))
+        (base32 "1lw3spg7r7ga8sl2pnr1snviqgbvhxayl1mm7dny720a8mgv49f0"))))
     (build-system emacs-build-system)
     (home-page "https://protesilaos.com/modus-themes/")
     (synopsis "Accessible themes (WCAG AAA)")
@@ -25617,7 +25963,7 @@ Telegram messaging platform.")
 (define-public emacs-doom-modeline
   (package
     (name "emacs-doom-modeline")
-    (version "3.0.0")
+    (version "3.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -25625,7 +25971,7 @@ Telegram messaging platform.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "08m75rl5i812pa87zcsjvb4mm3jjhpwzgx9mf2m7sxj807airz5d"))
+                "1dkgh87sv25mdlzdfihp6gp0asvwplx9yrn7nfsqzsfc3kpajkck"))
               (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (arguments
@@ -25664,27 +26010,25 @@ replicate some of the features of the Doom modeline package.")
     (license license:gpl2+)))
 
 (define-public emacs-simple-modeline
-  (let ((commit "38973dec2912e2136d8fde5f2667063863fee15a")
-        (revision "1"))
-    (package
-      (name "emacs-simple-modeline")
-      (version (git-version"1.2" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/gexplorer/simple-modeline")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0y70hc3x8rxr8b5x8d0a23gpcadzrn43wmrsvqqxmmkqqp45n7gj"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/gexplorer/simple-modeline")
-      (synopsis "Simple mode-line configuration for Emacs")
-      (description
-       "This package provides a simple mode-line configuration for Emacs.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-simple-modeline")
+    (version "1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gexplorer/simple-modeline")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1rnzrx7gcaw056cqvnb1wai4hala0r0gpk3a4kyyghyp9hmrxbb5"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/gexplorer/simple-modeline")
+    (synopsis "Simple mode-line configuration for Emacs")
+    (description
+     "This package provides a simple mode-line configuration for Emacs.")
+    (license license:gpl3+)))
 
 (define-public emacs-frames-only-mode
   (package
@@ -26625,7 +26969,7 @@ launching other commands/applications from within Emacs, similar to the
 (define-public emacs-no-littering
   (package
     (name "emacs-no-littering")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method git-fetch)
@@ -26634,7 +26978,7 @@ launching other commands/applications from within Emacs, similar to the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00chkzpjcdll907vpzfzmf9p3jprisnr8i0h1x5gixidwbfc2whi"))))
+        (base32 "1kbbbx1agzcxc5n1b6cavdx3wjxz6mgi9rafja8mk8cyaaiz0rkd"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacscollective/no-littering")
     (synopsis "Help keep @file{~/.emacs.d/} clean")
@@ -26938,7 +27282,7 @@ All entries in a specified TODO state will be carried over to the next day.")
 (define-public emacs-org-static-blog
   (package
     (name "emacs-org-static-blog")
-    (version "1.4.0")
+    (version "1.5.0")
     (source
      (origin
        (method git-fetch)
@@ -26947,7 +27291,7 @@ All entries in a specified TODO state will be carried over to the next day.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00yhgxg87mfaflrkh0i905hr873yd03a7znw5hkrps43zxha9kb9"))))
+        (base32 "1p9v40mm8p25b9xgfahwqqx4c36aqnl9yyjjdhkp6x5xkhkdf7by"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/bastibe/org-static-blog")
     (synopsis
@@ -27118,7 +27462,7 @@ personal wiki.")
 (define-public emacs-org-roam-bibtex
   (package
     (name "emacs-org-roam-bibtex")
-    (version "0.4.0")
+    (version "0.6.0-pre.2")
     (source
      (origin
        (method git-fetch)
@@ -27127,7 +27471,7 @@ personal wiki.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "13pll793khyfncpwm2dg24w747sqp7kgf7m3fqw2xzhv9cx2g7nq"))))
+        (base32 "0cjj7lx73qg4yw84r3b8fqhp5r74bzi57nvnvbvbck4i33ywqwx5"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm-bibtex" ,emacs-helm-bibtex)
@@ -27156,11 +27500,14 @@ opening Org Ref's @code{cite:} links.")
                (base32
                 "0z2frp5mn3lp2xskwanw2rncrwa50x3aphy87vfxmhx4fqlqrzy8"))))
     (inputs
-     `(("emacs-cort" ,emacs-cort))) ;tests suite
+     `(("emacs-cort" ,emacs-cort)
+       ("emacs-with-simulated-input" ,emacs-with-simulated-input)))
     (propagated-inputs
      `(("emacs-mustache" ,emacs-mustache)))
     (arguments
-     `(#:tests? #t
+     ;; FIXME: Tests fail with "Wrong type argument: sequencep, :equal".  It
+     ;; seems to be an issue with Cort library.
+     `(#:tests? #f
        #:test-command '("emacs" "--batch" "--quick"
                         "--directory=." "--load=org-generate-tests.el"
                         "--funcall=cort-test-run")))
@@ -27308,13 +27655,14 @@ Features:
 (define-public emacs-shell-command+
   (package
     (name "emacs-shell-command+")
-    (version "2.1.0")
+    (version "2.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://elpa.gnu.org/packages/"
-                                  "shell-command+-" version ".tar"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.sr.ht/~zge/bang")
+                    (commit version)))
               (sha256
-               (base32 "1jyrnv89989bi03m5h8dj0cllsw3rvyxkiyfrh9v6gpxjwfy8lmq"))))
+               (base32 "1micvz6smhjma7qbka8h3w0crb3sgrxf9lz2548iqfgww50gb0lj"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/shell-command+.html")
     (synopsis "Extended Emacs @code{shell-command}")
@@ -27897,7 +28245,7 @@ rules about where space should be left to separate words and parentheses.")
 (define-public emacs-webpaste
   (package
     (name "emacs-webpaste")
-    (version "3.2.0")
+    (version "3.2.1")
     (source
      (origin
        (method git-fetch)
@@ -27907,7 +28255,7 @@ rules about where space should be left to separate words and parentheses.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08545ihkzflw80rwklnxiswrpdrl8kr74xzxm5wsgrf36fkj9rn2"))))
+         "1d481pdnh7cnbyka7wn59czlci63zwfqms8n515svg92qm573ckd"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -27997,7 +28345,7 @@ and preferred services can easily be configured.")
 (define-public emacs-vertico
   (package
     (name "emacs-vertico")
-    (version "0.10")
+    (version "0.11")
     (source
      (origin
        (method git-fetch)
@@ -28006,7 +28354,7 @@ and preferred services can easily be configured.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0am7d29gni7irbwsv3zc9cpk12f6pyys06zlpj506wj2d21v36la"))))
+        (base32 "0vx23csk1nsrcazifwjxchqdmp3qbg2mwbvkqxn134g89qi8pqkw"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -28069,7 +28417,7 @@ shorter than usual, using mostly unprefixed keys.")
 (define-public emacs-cwl-mode
   (package
     (name "emacs-cwl-mode")
-    (version "0.2.5")
+    (version "0.2.6")
     (source
      (origin
        (method git-fetch)
@@ -28079,7 +28427,7 @@ shorter than usual, using mostly unprefixed keys.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0x9rvyhgy7ijq2r9pin94jz7nisrw6z91jch7d27lkhrmyb1rwk3"))))
+         "0507acyr9h4646scx316niq27vir6hl2gsgz7wdbiw0cb2drfkd1"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-yaml-mode" ,emacs-yaml-mode)))
@@ -28108,3 +28456,27 @@ shorter than usual, using mostly unprefixed keys.")
    (description "@code{emacs-multitran} is a zero-dependency Emacs interface
 to the https://multitran.com online dictionary.")
    (license license:gpl3+)))
+
+(define-public emacs-kibit-helper
+  (package
+    (name "emacs-kibit-helper")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/brunchboy/kibit-helper")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ky167xh1hrmqsldybzjhyqjizgjzs1grn5mf8sm2j9qwcvjw2zv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-s" ,emacs-s)))
+    (home-page "http://www.github.com/brunchboy/kibit-helper")
+    (synopsis "Use the Kibit Leiningen plugin from Emacs")
+    (description
+     "Kibit Helper provides functions to work with the Kibit Leiningen plugin
+for detecting and improve non-idiomatic Clojure source code.")
+    (license license:gpl3+)))
+
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index dfc1681001..060a253968 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -59,7 +59,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages linux)     ; alsa-lib
+  #:use-module (gnu packages linux)     ; alsa-lib, gpm
   #:use-module (gnu packages mail)      ; for mailutils
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
@@ -248,6 +248,7 @@
        ("mailutils" ,mailutils)
 
        ;; TODO: Add the optional dependencies.
+       ("gpm" ,gpm)
        ("libx11" ,libx11)
        ("gtk+" ,gtk+)
        ("cairo" ,cairo)
@@ -311,7 +312,8 @@ languages.")
 (define-public emacs-next
   (let ((commit "2ea34662c20f71d35dd52a5ed996542c7386b9cb")
         (revision "0"))
-    (package/inherit emacs
+    (package
+      (inherit emacs)
       (name "emacs-next")
       (version (git-version "28.0.50" revision commit))
       (source
@@ -332,7 +334,8 @@ languages.")
 (define-public emacs-next-pgtk
   (let ((commit "ae18c8ec4f0ef37c8c9cda473770ff47e41291e2")
         (revision "1"))
-    (package/inherit emacs-next
+    (package
+      (inherit emacs-next)
       (name "emacs-next-pgtk")
       (version (git-version "28.0.50" revision commit))
       (source
@@ -456,7 +459,8 @@ editor (with wide ints)" )
 (define-public guile-emacs
   (let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b")
         (revision "0"))
-    (package/inherit emacs
+    (package
+      (inherit emacs)
       (name "guile-emacs")
       (version (git-version "0.0.0" revision commit))
       (source (origin
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 2dec3b7b8a..9b22b56369 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2020 Christopher Howard <christopher@librehacker.com>
 ;;; Copyright © 2021 Felipe Balbi <balbi@kernel.org>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1314,7 +1315,7 @@ as RetroArch.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.9.2")
+    (version "1.9.4")
     (source
      (origin
        (method git-fetch)
@@ -1323,7 +1324,7 @@ as RetroArch.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zrry2zwknzsrrz8r6rl1iy9hmiv4dwjmf61aidx3xwxby3g82qg"))
+        (base32 "1wky28y52nsjmannks3y1hbjgw0dvqh85gxrllr98f9y7kvk1cvf"))
        (patches
         (search-patches "retroarch-LIBRETRO_DIRECTORY.patch"))))
     (build-system gnu-build-system)
@@ -1630,7 +1631,7 @@ This is a part of the TiLP project.")
 (define-public mame
   (package
     (name "mame")
-    (version "0.231")
+    (version "0.232")
     (source
      (origin
        (method git-fetch)
@@ -1639,7 +1640,7 @@ This is a part of the TiLP project.")
              (commit (apply string-append "mame" (string-split version #\.)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0rgch8fg8ra48wa4gl5ah70q6191sxs28x39iyalb6ballmz8v1w"))
+        (base32 "1v6qka8k4smah08rp62kgjmc84hwsg1iqhms0369rhdh722bgpn7"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -2123,200 +2124,211 @@ framework based on QEMU.")
       (license license:gpl2+))))
 
 (define-public ppsspp
-  (package
-    (name "ppsspp")
-    (version "1.11.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/hrydgard/ppsspp")
-             (commit (string-append "v" version))))
-       (sha256
-        (base32 "1dpxnwvl6jq7z67lbjws4lqc1bxc31xi6ddlmg5n3aig008yi2fp"))
-       (file-name (git-file-name name version))
-       (patches
-        (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
-       (modules '((guix build utils)))
-       (snippet
-        `(begin
-           ;; The following is quite a heavy-handed way of unbundling PPSSPP.
-           ;; There are still a number of external sources, that we don't
-           ;; remove here.  Some may be packaged, others are not.
-           ;; First, we patch existing sources to include the right headers.
-           (substitute* (append (find-files "Common" ".*\\.(h|cpp)")
-                                (find-files "Core" ".*\\.(h|cpp)")
-                                (find-files "GPU" ".*\\.(h|cpp)")
-                                (find-files "SDL" ".*\\.(h|cpp)")
-                                (find-files "UI" ".*\\.(h|cpp)"))
-             ;; These headers are all hard-coded in the original source.
-             (("ext/cityhash/") "")
-             (("ext/glslang/glslang/") "glslang/")
-             (("ext/glslang/") "glslang/")
-             (("ext/miniupnp/") "")
-             (("ext/SPIRV-Cross/") "spirv_cross/")
-             (("ext/vulkan/") "vulkan/")
-             (("ext/xxhash.h") "xxhash.h")
-             ;; These definitions do not actually exist in the Vulkan headers,
-             ;; but PPSSPP defines them in ext/vulkan.
-             (("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
-             (("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
-           ;; Next, we patch CMakeLists.
-           (substitute* "CMakeLists.txt"
-             ;; Drop unnecessary includes and targets.
-             (("include_directories\\(ext/glslang\\)") "")
-             (("include_directories\\(ext/xxhash\\)") "")
-             (("include_directories\\(ext/cityhash\\)") "")
-             (("set_target_properties\\(cityhash .*\\)") "")
-             ;; Fix linking to GLEW.
-             (("TARGET Ext::GLEW") "true")
-             (("target_link_libraries\\(native Ext::GLEW\\)")
-              "find_package(GLEW)\ntarget_link_libraries(native GLEW::GLEW)")
-             (("Ext::Snappy") "snappy")
-             ;; Don't search for cityhash/xxhash, we already have them.
-             (("add_library\\((city|xx)hash STATIC") "if()\nendif(")
-             (("ext/xxhash\\.[ch]") "")
-             (("ext/cityhash/.*\\.(cpp|h)") "")
-             (("if\\(USE_MINIUPNPC\\)" all)
-              (string-append all "
+  ;; Use a recent commit as fixes for ffmpeg 4.4 haven't been released as of
+  ;; 1.11.3.
+  (let ((commit "69fa20744958aef8da9ca052ba7675fdc1636e46")
+        (revision "1"))
+    (package
+      (name "ppsspp")
+      (version (git-version "1.11.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/hrydgard/ppsspp")
+               (commit commit)))
+         (sha256
+          (base32 "0r8w4hllhn6zsfxlajxw3sn3f8vsri45srr4mdwsffzcb4hvl0cr"))
+         (file-name (git-file-name name version))
+         (patches
+          (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
+         (modules '((guix build utils)))
+         (snippet
+          `(begin
+             ;; The following is quite a heavy-handed way of unbundling PPSSPP.
+             ;; There are still a number of external sources, that we don't
+             ;; remove here.  Some may be packaged, others are not.
+             ;; First, we patch existing sources to include the right headers.
+             (substitute* (append (find-files "Common" ".*\\.(h|cpp)")
+                                  (find-files "Core" ".*\\.(h|cpp)")
+                                  (find-files "GPU" ".*\\.(h|cpp)")
+                                  (find-files "SDL" ".*\\.(h|cpp)")
+                                  (find-files "UI" ".*\\.(h|cpp)"))
+               ;; These headers are all hard-coded in the original source.
+               (("ext/cityhash/") "")
+               (("ext/glslang/glslang/") "glslang/")
+               (("ext/glslang/") "glslang/")
+               (("ext/miniupnp/") "")
+               (("ext/SPIRV-Cross/") "spirv_cross/")
+               (("ext/vulkan/") "vulkan/")
+               (("ext/xxhash.h") "xxhash.h")
+               ;; These definitions do not actually exist in the Vulkan headers,
+               ;; but PPSSPP defines them in ext/vulkan.
+               (("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
+               (("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
+             ;; Next, we patch CMakeLists.
+             (substitute* "CMakeLists.txt"
+               ;; Drop unnecessary includes and targets.
+               (("include_directories\\(ext/glslang\\)") "")
+               (("include_directories\\(ext/xxhash\\)") "")
+               (("include_directories\\(ext/cityhash\\)") "")
+               (("include_directories\\(ext/zstd.*") "")
+               (("libzstd_static") "zstd")
+               (("set_target_properties\\(cityhash .*\\)") "")
+               ;; Fix linking to GLEW.
+               (("TARGET Ext::GLEW") "true")
+               (("target_link_libraries\\(native Ext::GLEW\\)")
+                "find_package(GLEW)\ntarget_link_libraries(native GLEW::GLEW)")
+               (("Ext::Snappy") "snappy")
+               ;; Don't search for cityhash/xxhash, we already have them.
+               (("add_library\\((city|xx)hash STATIC") "if()\nendif(")
+               (("ext/xxhash\\.[ch]") "")
+               (("ext/cityhash/.*\\.(cpp|h)") "")
+               (("if\\(USE_MINIUPNPC\\)" all)
+                (string-append all "
 find_package(miniupnpc)
 target_link_libraries(${CoreLibName} miniupnpc ${LDLIBS})
 elseif(FALSE)"))
-             ;; Link all of spirv-cross.
-             (("spirv-cross-glsl" all)
-              (string-append all
-                             " spirv-cross-core spirv-cross-cpp"
-                             " spirv-cross-reflect spirv-cross-util")))
-           (substitute* "ext/CMakeLists.txt"
-             (("add_subdirectory\\(glew\\)") "")
-             (("add_subdirectory\\(glslang( [A-Z_]*)*\\)") "")
-             (("add_subdirectory\\(snappy\\)") "")
-             (("add_subdirectory\\(SPIRV-Cross-build\\)") ""))
-           ;; Finally, we can delete the bundled sources.
-           (for-each delete-file-recursively
-                     '("MoltenVK"
-                       "ext/cmake"
-                       "ext/glew"
-                       "ext/glslang" "ext/glslang-build"
-                       "ext/miniupnp" "ext/miniupnp-build"
-                       "ext/native"
-                       "ext/snappy"
-                       "ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
-                       "ext/vulkan"
-                       "ext/xxhash.c"
-                       "ext/xxhash.h"
-                       "ext/zlib"))
-           ;; Since we are not including git as an input, PPSSPP is confused
-           ;; about its version.  Let's fix that here.
-           (substitute* "git-version.cmake"
-             (("unknown") ,version))))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("python" ,python)))
-    (inputs
-     `(("cityhash" ,cityhash)
-       ("ffmpeg" ,ffmpeg)
-       ("glew" ,glew)
-       ("glslang" ,glslang)
-       ("libpng" ,libpng)
-       ("libzip" ,libzip)
-       ("mesa" ,mesa)
-       ("miniupnpc" ,miniupnpc)
-       ("sdl2" ,sdl2)
-       ("snappy" ,snappy)
-       ("spirv-cross" ,spirv-cross)
-       ("vulkan-headers" ,vulkan-headers)
-       ("vulkan-loader" ,vulkan-loader)
-       ("xxhash" ,xxhash)
-       ("zlib" ,zlib)
-       ;; TODO: unbundle armips.
-       ("armips-source" ,(package-source armips))
-       ("lang"
-        ,(let ((commit "6bd5b4bc983917ea8402f73c726b46e36f3de0b4"))
-           (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/hrydgard/ppsspp-lang")
-                   (commit commit)))
-             (sha256
-              (base32 "08npr3a4xskf85gnlxidl4ksc3rhc7m5rgnj7vsbjvhvw5ap02qx"))
-             (file-name (git-file-name "ppsspp-lang" commit)))))
-       ("tests"
-        ,(let ((commit "1047400eaec6bcbdb2a64d326375ef6a6617c4ac"))
-           (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/hrydgard/pspautotests")
-                   (commit commit)))
-             (sha256
-              (base32 "0nxv1lskcr8zbg6nrfai21mxsw0n5vaqhbsa41c3cxfyx5c4w2pg"))
-             (file-name (git-file-name "pspautotests" commit)))))))
-    (arguments
-     `(#:out-of-source? #f
-       #:configure-flags (list "-DUSE_DISCORD=OFF"
-                               "-DUSE_SYSTEM_FFMPEG=ON"
-                               "-DUSE_SYSTEM_LIBZIP=ON"
-                               ;; for testing
-                               "-DUNITTEST=ON" "-DHEADLESS=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-external-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; TODO: unbundle armips.
-             (copy-recursively (assoc-ref inputs "armips-source")
-                               "ext/armips")
-             ;; Some tests are externalised, so we add them here.
-             (copy-recursively (assoc-ref inputs "tests")
-                               "pspautotests")
-             ;; i18n is externalised, so we add it here.
-             (copy-recursively (assoc-ref inputs "lang")
-                               "assets/lang")
-             #t))
-         (add-after 'unpack 'fix-unittest-build
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("unittest/TestVertexJit.cpp" all)
-                (string-append all " unittest/TestShaderGenerators.cpp")))
-             (substitute* "unittest/TestVertexJit.cpp"
-               (("#include \"unittest/UnitTest.h\"" all)
-                (string-append all "\n#include <cmath>")))
-             #t))
-         (replace 'check
-           (lambda _
-             (for-each
-              (lambda (t) (invoke "./unitTest" t))
-              '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
-                "SinCos" #|"VFPUSinCos" SIGSEGV|# "MathUtil" "Parsers" "Jit"
-                "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ"
-                #|"ShaderGenerators"|#))
-             (invoke "python3" "test.py" "-g")
-             #t))
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin/ppsspp (string-append out "/bin/ppsspp"))
-                    (share (string-append out "/share/ppsspp")))
-               (copy-recursively "icons/hicolor"
-                                 (string-append out "/share/icons/hicolor"))
-               (install-file "PPSSPPSDL" share)
-               (copy-recursively "assets" (string-append share "/assets"))
+               ;; Link all of spirv-cross.
+               (("spirv-cross-glsl" all)
+                (string-append all
+                               " spirv-cross-core spirv-cross-cpp"
+                               " spirv-cross-reflect spirv-cross-util")))
+             (substitute* "ext/CMakeLists.txt"
+               (("add_subdirectory\\(glew.*") "")
+               (("add_subdirectory\\(glslang.*") "")
+               (("add_subdirectory\\(snappy.*") "")
+               (("add_subdirectory\\(SPIRV-Cross-build.*") "")
+               (("add_subdirectory\\(zstd.*") ""))
+             ;; Finally, we can delete the bundled sources.
+             (for-each delete-file-recursively
+                       '("MoltenVK"
+                         "ext/cmake"
+                         "ext/glew"
+                         "ext/glslang" "ext/glslang-build"
+                         "ext/miniupnp" "ext/miniupnp-build"
+                         "ext/native"
+                         "ext/snappy"
+                         "ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
+                         "ext/vulkan"
+                         "ext/xxhash.c"
+                         "ext/xxhash.h"
+                         "ext/zlib"
+                         "ext/zstd"))
+             ;; Since we are not including git as an input, PPSSPP is confused
+             ;; about its version.  Let's fix that here.
+             (substitute* "git-version.cmake"
+               (("unknown") ,version))))))
+      (build-system cmake-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("python" ,python)))
+      (inputs
+       `(("cityhash" ,cityhash)
+         ;; ppsspp doesn't yet build with ffmpeg 4.4 (see:
+         ("ffmpeg" ,ffmpeg)
+         ("glew" ,glew)
+         ("glslang" ,glslang)
+         ("libpng" ,libpng)
+         ("libzip" ,libzip)
+         ("mesa" ,mesa)
+         ("miniupnpc" ,miniupnpc)
+         ("sdl2" ,sdl2)
+         ("snappy" ,snappy)
+         ("spirv-cross" ,spirv-cross)
+         ("vulkan-headers" ,vulkan-headers)
+         ("vulkan-loader" ,vulkan-loader)
+         ("xxhash" ,xxhash)
+         ("zlib" ,zlib)
+         ("zstd" ,zstd "lib")
+;         ("zstd" ,zstd "static")
+         ;; TODO: unbundle armips.
+         ("armips-source" ,(package-source armips))
+         ("lang"
+          ,(let ((commit "6bd5b4bc983917ea8402f73c726b46e36f3de0b4"))
+             (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/hrydgard/ppsspp-lang")
+                     (commit commit)))
+               (sha256
+                (base32 "08npr3a4xskf85gnlxidl4ksc3rhc7m5rgnj7vsbjvhvw5ap02qx"))
+               (file-name (git-file-name "ppsspp-lang" commit)))))
+         ("tests"
+          ,(let ((commit "1047400eaec6bcbdb2a64d326375ef6a6617c4ac"))
+             (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/hrydgard/pspautotests")
+                     (commit commit)))
+               (sha256
+                (base32 "0nxv1lskcr8zbg6nrfai21mxsw0n5vaqhbsa41c3cxfyx5c4w2pg"))
+               (file-name (git-file-name "pspautotests" commit)))))))
+      (arguments
+       `(#:out-of-source? #f
+         #:configure-flags (list "-DUSE_DISCORD=OFF"
+                                 "-DUSE_SYSTEM_FFMPEG=ON"
+                                 "-DUSE_SYSTEM_LIBZIP=ON"
+                                 ;; for testing
+                                 "-DUNITTEST=ON" "-DHEADLESS=ON")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'add-external-sources
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; TODO: unbundle armips.
+               (copy-recursively (assoc-ref inputs "armips-source")
+                                 "ext/armips")
+               ;; Some tests are externalised, so we add them here.
+               (copy-recursively (assoc-ref inputs "tests")
+                                 "pspautotests")
+               ;; i18n is externalised, so we add it here.
+               (copy-recursively (assoc-ref inputs "lang")
+                                 "assets/lang")
+               #t))
+           (add-after 'unpack 'fix-unittest-build
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 (("unittest/TestVertexJit.cpp" all)
+                  (string-append all " unittest/TestShaderGenerators.cpp")))
+               (substitute* "unittest/TestVertexJit.cpp"
+                 (("#include \"unittest/UnitTest.h\"" all)
+                  (string-append all "\n#include <cmath>")))
+               #t))
+           (replace 'check
+             (lambda _
+               (for-each
+                (lambda (t) (invoke "./unitTest" t))
+                '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
+                  "SinCos" #|"VFPUSinCos" SIGSEGV|# "MathUtil" "Parsers" "Jit"
+                  "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ"
+                  #|"ShaderGenerators"|#))
+               (invoke "python3" "test.py" "-g")
+               #t))
+           (replace 'install
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin/ppsspp (string-append out "/bin/ppsspp"))
+                      (share (string-append out "/share/ppsspp")))
+                 (copy-recursively "icons/hicolor"
+                                   (string-append out "/share/icons/hicolor"))
+                 (install-file "PPSSPPSDL" share)
+                 (copy-recursively "assets" (string-append share "/assets"))
 
-               (make-desktop-entry-file
-                (string-append out "/share/applications/ppsspp.desktop")
-                #:name "PPSSPP"
-                #:exec (string-append share "/PPSSPPSDL")
-                #:icon "ppsspp")
-               (mkdir-p (string-append out "/bin"))
-               (with-output-to-file bin/ppsspp
-                 (lambda ()
-                   (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
-                           (which "sh") share)))
-               (chmod bin/ppsspp #o755)
-               #t))))))
-    (home-page "https://www.ppsspp.org/")
-    (synopsis "PSP emulator")
-    (description
-     "PPSSPP is a ``high-level'' emulator simulating the PSP operating
+                 (make-desktop-entry-file
+                  (string-append out "/share/applications/ppsspp.desktop")
+                  #:name "PPSSPP"
+                  #:exec (string-append share "/PPSSPPSDL")
+                  #:icon "ppsspp")
+                 (mkdir-p (string-append out "/bin"))
+                 (with-output-to-file bin/ppsspp
+                   (lambda ()
+                     (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
+                             (which "sh") share)))
+                 (chmod bin/ppsspp #o755)
+                 #t))))))
+      (home-page "https://www.ppsspp.org/")
+      (synopsis "PSP emulator")
+      (description
+       "PPSSPP is a ``high-level'' emulator simulating the PSP operating
 system.")
-    (license license:gpl2+)))
+      (license license:gpl2+))))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 180122e8fc..338510d813 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2745,14 +2745,14 @@ GUI.")
 (define-public poke
   (package
     (name "poke")
-    (version "1.2")
+    (version "1.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/poke/poke-" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "0qnz7lc681nxa16rw9n9q4spy9fas6m2adrpb49imh34bgdgh77n"))))
+                "06qgry1pal2vampmbmc1lzlhf1qnjkd8py781r5h020v981n6y5s"))))
     (build-system gnu-build-system)
     ;; The GUI, which we elide, requires tcl and tk.
     (native-inputs `(("bison" ,bison)
diff --git a/gnu/packages/entr.scm b/gnu/packages/entr.scm
index 49e1060b5f..5ca40690dd 100644
--- a/gnu/packages/entr.scm
+++ b/gnu/packages/entr.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,14 +34,14 @@
 (define-public entr
   (package
     (name "entr")
-    (version "4.6")
+    (version "4.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://entrproject.org/code/entr-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0vcflgagna2gdlpjsd6748c73j2829xlhm276mi838zl1n121phn"))))
+                "18h58k69f0qmqkknbcnhm5dz7mv5gr2blcq88qr62vz4zg9a8mp2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index ad721017b5..4d6dc89fd9 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -477,7 +478,7 @@ from the bcachefs-tools package.  It is meant to be used in initrds.")
 (define-public exfatprogs
   (package
     (name "exfatprogs")
-    (version "1.1.1")
+    (version "1.1.2")
     (source
      (origin
        (method git-fetch)
@@ -486,7 +487,7 @@ from the bcachefs-tools package.  It is meant to be used in initrds.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zl3w5w2mzyggizc4dsiln0pa013f8sf5dxmm5wflplpfm6k4brk"))))
+        (base32 "19pbybgbfnvjb3n944ihrn1r8ch4dm8dr0d44d6w7p63dcp372xy"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1526,3 +1527,35 @@ your put them.  TMSU maintains its own database and you simply gain an
 additional view, which you can mount where you like, based upon the tags you
 set up.")
     (license license:gpl3+)))
+
+(define-public udftools
+  (package
+    (name "udftools")
+    (version "2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pali/udftools")
+                    (commit version)))
+              (sha256
+               (base32
+                "1nl2s61znyzaap23zhbdg3znj6l6akr313fchn5wwvjzj8k70is9"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--docdir=" (assoc-ref %outputs "out")
+                            "/share/doc/" ,name "-" ,version))))
+    (native-inputs
+     `(("automake" ,automake)
+       ("autoconf" ,autoconf)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/pali/udftools")
+    (synopsis "Tools to manage UDF file systems and DVD/CD-R(W) drives")
+    (description "@code{udftools} is a set of programs for reading
+and modifying @acronym{UDF, Universal Disk Format} file systems.
+@acronym{UDF, Universal Disk Format} is a file system mostly used for DVDs
+and other optical media.  It supports read-only media (DVD/CD-R)
+and rewritable media that wears out (DVD/CD-RW).")
+    (license license:gpl2+)))
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index d0f20b20fd..fbdc47e506 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,7 +43,7 @@
 (define-public fltk
   (package
     (name "fltk")
-    (version "1.3.5")
+    (version "1.3.6")
     (source
      (origin
       (method url-fetch)
@@ -50,8 +51,7 @@
                           (first (string-split version #\-))
                           "/fltk-" version "-source.tar.gz"))
       (sha256
-       (base32
-        "00jp24z1818k9n6nn6lx7qflqf2k13g4kxr0p8v1d37kanhb4ac7"))))
+       (base32 "1arp1niiz3qxm8iacpmilwpc5rinsm6hsk4a6fsxfywvkvppbb4s"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 32c4187337..973393acc4 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -119,30 +119,6 @@ well as other mediums.")
 in print.  With attention to detail for high resolution rendering.")
     (license license:silofl1.1)))
 
-(define-public font-ubuntu
-  (package
-    (name "font-ubuntu")
-    (version "0.83")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://salsa.debian.org/fonts-team/fonts-ubuntu")
-                    (commit (string-append "upstream/" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1d2xrjpxy70f3nsgqiggwv6pj06qglf5vj2847pqx60w3ygi903g"))))
-    (build-system font-build-system)
-    (home-page "http://font.ubuntu.com/")
-    (synopsis "The Ubuntu Font Family")
-    (description "The Ubuntu Font Family is a unique, custom designed font
-that has a very distinctive look and feel.  This package provides the
-TrueType (TTF) files.")
-    (license
-     (license:non-copyleft
-      "http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt"
-      "Ubuntu Font License v1.0"))))
-
 (define-public font-dejavu
   (package
     (name "font-dejavu")
@@ -1387,7 +1363,7 @@ programming.  Iosevka is completely generated from its source code.")
 (define-public font-sarasa-gothic
   (package
     (name "font-sarasa-gothic")
-    (version "0.12.7")
+    (version "0.31.2")
     (source
      (origin
        (method url-fetch)
@@ -1395,7 +1371,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/sarasa-gothic-ttc-" version ".7z"))
        (sha256
-        (base32 "09v65k00g8m953s6riz9xjzb2jgr6v5pdhcllalzzl7c1cn2xl3k"))))
+        (base32 "0p67qyhm266s6q17islqvwch807fy5slgp2symrl0z665vp6hycj"))))
     (build-system font-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 809a807467..380a09d7f6 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -432,7 +432,7 @@ a hardware description and verification language. ")
 (define-public nvc
   (package
     (name "nvc")
-    (version "1.5.0")
+    (version "1.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -441,11 +441,10 @@ a hardware description and verification language. ")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0dd1xany6qhh2qsfw8ba0ky7y86h19yr4hlk0r5i2bvwsg4355v9"))))
+                "0m1zhcqhgz5fajz98ky5zdv8g8gvk9caghqfpbv8q3mzdzahcsx5"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:parallel-build? #f ; https://github.com/nickg/nvc/issues/409
-       #:configure-flags
+     `(#:configure-flags
        '("--enable-vhpi")
        #:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index eb10b509c9..acd527fcee 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public freeipmi
   (package
     (name "freeipmi")
-    (version "1.6.7")
+    (version "1.6.8")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1gyyx99q02p3v2nqm3h53mkjd33l0hrapwg4alg6qr9k74qik1dv"))))
+               "0w8af1i57szmxl9vfifwwyal7xh8aixz2l9487wvy6yckqk6m92a"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 4ee96125fd..880eaee9f6 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -220,14 +220,14 @@ output.
 (define-public filezilla
   (package
     (name "filezilla")
-    (version "3.53.1")
+    (version "3.54.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/client/"
                            "FileZilla_" version "_src.tar.bz2"))
        (sha256
-        (base32 "0ygpqfzj5ms1pd46fpfya1y1jl4w2kmaa7plf8n6fm7cxbr78s35"))))
+        (base32 "0smayigsk8hjplk7pm6dd80r1dnhr4f6xzp3n1p1ss5v2ff1jfkh"))))
     (build-system gnu-build-system)
     (arguments
       ;; Don't let filezilla phone home to check for updates.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index c5e4a18987..559a502cae 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1487,7 +1487,7 @@ painted with a mouse.")
 (define-public ois
   (package
     (name "ois")
-    (version "1.5")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
@@ -1496,7 +1496,7 @@ painted with a mouse.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0g8krgq5bdx2rw7ig0xva4kqv4x815672i7z6lljp3n8847wmypa"))))
+        (base32 "0nkh0zrsbyv47c0i0vhdna3jsnvs69pb1svg75avxw6z7kwskgla"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no test suite
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 1f337a4c84..19c1f35808 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -61,6 +61,7 @@
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 David Pflug <david@pflug.io>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1836,19 +1837,17 @@ Chess).  It is similar to standard chess but this variant is far more complicate
 (define-public ltris
   (package
     (name "ltris")
-    (version "1.2.1")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/lgames/ltris/"
                            "ltris-" version ".tar.gz"))
        (sha256
-        (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q"))))
+        (base32 "1a2m17jwkyar8gj07bn5jk01j2ps4vvc48z955jjjsh67q2svi0f"))))
     (build-system gnu-build-system)
     (arguments
-     '(;; The code in LTris uses traditional GNU semantics for inline functions
-       #:configure-flags '("CFLAGS=-fgnu89-inline")
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
          (add-after 'set-paths 'set-sdl-paths
            (lambda* (#:key inputs #:allow-other-keys)
@@ -4305,35 +4304,15 @@ world}, @uref{http://evolonline.org, Evol Online} and
 (define openttd-engine
   (package
     (name "openttd-engine")
-    (version "1.10.3")
+    (version "1.11.2")
     (source
      (origin (method url-fetch)
              (uri (string-append "https://cdn.openttd.org/openttd-releases/"
                                  version "/openttd-" version "-source.tar.xz"))
              (sha256
               (base32
-               "0fxmfz1mm95a2x0rnzfff9wb8q57w0cvsdd0z7agdcbyakph25n1"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f              ; no "check" target
-       #:phases
-       (modify-phases %standard-phases
-         ;; The build process fails if the configure script is passed the
-         ;; option "--enable-fast-install".
-         (replace 'configure
-           (lambda* (#:key inputs outputs (configure-flags '())
-                     #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (lzo (assoc-ref inputs "lzo")))
-               (apply invoke "./configure"
-                      (string-append "--prefix=" out)
-                      ;; Provide the "lzo" path.
-                      (string-append "--with-liblzo2="
-                                     lzo "/lib/liblzo2.a")
-                      ;; Put the binary in 'bin' instead of 'games'.
-                      "--binary-dir=bin"
-                      configure-flags)))))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+               "0v9f93lsdcv3ia28y8iihx9nj9zp6fpf5hkdrpl4ypw159d97fhg"))))
+    (build-system cmake-build-system)
     (inputs
      `(("allegro" ,allegro)
        ("fontconfig" ,fontconfig)
@@ -4500,19 +4479,17 @@ Transport Tycoon Deluxe.")
     (name "openttd")
     (arguments
      `(#:configure-flags
-       (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
-                            "/bin/timidity"))
-       ,@(substitute-keyword-arguments (package-arguments openttd-engine)
-           ((#:phases phases)
-            `(modify-phases ,phases
-               (add-after 'install 'install-data
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (for-each
-                    (lambda (input)
-                      (copy-recursively (assoc-ref inputs input)
-                                        (assoc-ref outputs "out")))
-                    (list "opengfx" "openmsx" "opensfx"))
-                   #t)))))))
+       (let* ((out (assoc-ref %outputs "out")))
+         (list (string-append "-DCMAKE_INSTALL_BINDIR=" out "/bin")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (for-each
+              (lambda (input)
+                (copy-recursively (assoc-ref inputs input)
+                                  (assoc-ref outputs "out")))
+              (list "opengfx" "openmsx" "opensfx")))))))
     (inputs
      `(("timidity++" ,timidity++)
        ,@(package-inputs openttd-engine)))
@@ -5138,7 +5115,7 @@ in-window at 640x480 resolution or fullscreen.")
 (define-public warzone2100
   (package
     (name "warzone2100")
-    (version "3.4.1")
+    (version "4.0.1")
     (source
      (origin
        (method url-fetch)
@@ -5146,7 +5123,7 @@ in-window at 640x480 resolution or fullscreen.")
                            version
                            "/warzone2100_src.tar.xz"))
        (sha256
-        (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
+        (base32 "1f8a4kflslsjl8jrryhwg034h1yc9y3y1zmllgww3fqkz3aj4xik"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -5160,6 +5137,7 @@ in-window at 640x480 resolution or fullscreen.")
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
+                           "-DWZ_ENABLE_BACKEND_VULKAN=off"
                            "-DENABLE_DISCORD=off")
        #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
        #:phases
@@ -5205,6 +5183,7 @@ in-window at 640x480 resolution or fullscreen.")
               ("qtscript" ,qtscript)
               ("openssl" ,openssl)
               ("sdl2" ,sdl2)
+              ("sqlite" ,sqlite)
               ("utfcpp" ,utfcpp)))
     (home-page "https://wz2100.net")
     (synopsis "3D Real-time strategy and real-time tactics game")
@@ -6909,7 +6888,7 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
 (define-public tome4
   (package
     (name "tome4")
-    (version "1.7.2")
+    (version "1.7.3")
     (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
     (source
      (origin
@@ -6917,7 +6896,7 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
        (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "1xa0pdn9pggwf7hnqb87ya2qxqhjahkdjwf8cr2y01gixgrkj9lv"))
+        (base32 "1rik17r01glq3944sdb06xjf0xppgqkjk564wrh22slm4mi3fifz"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -7302,7 +7281,8 @@ elements to achieve a simple goal in the most complex way possible.")
      `(#:tests? #f                      ;tests are broken
        #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
                                (string-append "-DPIONEER_DATA_DIR="
-                                              %output "/share/games/pioneer"))))
+                                              %output "/share/games/pioneer"))
+       #:make-flags (list "all" "build-data")))
     (home-page "https://pioneerspacesim.net")
     (synopsis "Game of lonely space adventure")
     (description
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index b0d4719319..e202b41715 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -556,14 +556,14 @@ It also includes runtime support libraries for these languages.")))
 (define-public gcc-9
   (package
    (inherit gcc-8)
-   (version "9.3.0")
+   (version "9.4.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gcc/gcc-"
                                 version "/gcc-" version ".tar.xz"))
             (sha256
              (base32
-              "1la2yy27ziasyf0jvzk58y1i5b5bq2h176qil550bxhifs39gqbi"))
+              "13l3p6g2krilaawbapmn9zmmrh3zdwc36mfr3msxfy038hps6pf9"))
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
                                      "gcc-9-asan-fix-limits-include.patch"
                                      "gcc-5.0-libvtv-runpath.patch"))))))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2cb03a760b..ca573d55ee 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -59,6 +59,7 @@
 ;;; Copyright © 2020, 2021 Andy Tai <atai@atai.org>
 ;;; Copyright © 2020, 2021 Sébastien Lerique <sl@eauchat.org>
 ;;; Copyright © 2021 Trevor Hass <thass@okstate.edu>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1109,7 +1110,7 @@ freedesktop.org desktop notification specification.")
 (define-public mm-common
   (package
     (name "mm-common")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/mm-common/"
@@ -1117,7 +1118,7 @@ freedesktop.org desktop notification specification.")
                                   "mm-common-" version ".tar.xz"))
               (sha256
                (base32
-                "07b4s5ckcz9q5gwx8vchim19mhfgl8wysqwi30pndks3m4zrzad2"))))
+                "1x8yvjy0yg17qyhmqws8xh2k8dvzrhpwqz7j1cfwzalrb1i9c5g8"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -1176,6 +1177,7 @@ Library reference documentation.")
     `(("docbook-xml" ,docbook-xml-4.3)
       ("gettext" ,gettext-minimal)
       ("glib:bin" ,glib "bin")
+      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk-doc" ,gtk-doc/stable)
       ("pkg-config" ,pkg-config)))
    (inputs
@@ -1408,7 +1410,7 @@ and implementation of UPnP A/V profiles.")
 (define-public libmediaart
   (package
     (name "libmediaart")
-    (version "1.9.4")
+    (version "1.9.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1416,8 +1418,8 @@ and implementation of UPnP A/V profiles.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0gc10imyabk57ar54m0qzms0x9dnmkymhkzyk8w1aj3y4lby0yx5"))))
-    (build-system gnu-build-system)
+                "1mlw1qgj8nkd9ll6b6h54r1gfdy3zp8a8xqz7qfyfaj85jjgbph7"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
@@ -6984,7 +6986,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.30.11")
+    (version "0.30.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/shotwell/"
@@ -6992,7 +6994,7 @@ metadata in photo and video files of various formats.")
                                   "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "12d26y40kjlv5x8f5g04wff33vh7mdjb8c41ydqbrwdip0jwy2n2"))))
+                "1h5crjq59lqi8f8mdkadzi8pc3i9i2ik4lsx2nrhzq486fzdfhw6"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -11954,7 +11956,7 @@ integrated profiler via Sysprof, debugging support, and more.")
 (define-public komikku
   (package
     (name "komikku")
-    (version "0.28.1")
+    (version "0.29.0")
     (source
      (origin
        (method git-fetch)
@@ -11964,7 +11966,7 @@ integrated profiler via Sysprof, debugging support, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ifcwp5fw74yypxkq7i0yc3002bsvj3p5c1icspr8s2kyjyllm6i"))))
+         "1sirwgny1s6jv9rb0lildqv4p7nfa15rvw957pwxnvrjasxyf6bq"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index f71e8209fa..f28c034f55 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -256,14 +256,14 @@ to be read using the GNOME Yelp program.")
 (define-public gwenhywfar
   (package
     (name "gwenhywfar")
-    (version "4.99.25rc9")
+    (version "5.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.aquamaniac.de/rdm/attachments/"
-                           "download/223/gwenhywfar-" version ".tar.gz"))
+                           "download/364/gwenhywfar-" version ".tar.gz"))
        (sha256
-        (base32 "14ws780zfyv9qg41z42hlk8sh31w80w3v8n5riaslqhvvxqbfgkq"))))
+        (base32 "1isbj4a7vdgagp3kkvx2pjcjy8lba6kzjr11fmr06aci1694dbsp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -293,14 +293,14 @@ applications and libraries.  It is used by AqBanking.")
 (define-public aqbanking
   (package
     (name "aqbanking")
-    (version "5.99.44beta")
+    (version "6.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.aquamaniac.de/rdm/attachments/"
-                           "download/224/aqbanking-" version ".tar.gz"))
+                           "download/372/aqbanking-" version ".tar.gz"))
        (sha256
-        (base32 "1cgj8g3wy53galp9pk50a85w0kmwfx3dwl93cbvq6sqb9izxmwdb"))))
+        (base32 "1k2mhdnk0jc0inq1hmp74m3y7azxrjm8r07x5k1pp4ic0yi5vs50"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Parallel building fails because aqhbci is required before it's
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 212f684a58..59f8a58634 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -694,8 +694,8 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "78.10.0-guix0-preview1")
-(define %icecat-build-id "20210419000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "78.11.0-guix0-preview1")
+(define %icecat-build-id "20210601000000") ;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'
@@ -717,7 +717,7 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "0h6zl87czbhyhy3597bxqzwy4p1vsaqimkg92lw31gjbv6k434cp"))))
+              "0zjpzkxx3wc2840d7q4b9lnkj1kwk1qps29s9c83jf5y6xclnf9q"))))
 
          (upstream-icecat-base-version "78.7.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
@@ -1302,11 +1302,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20210504000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20210601000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "78.10.1")
+    (version "78.11.0")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1586,7 +1586,7 @@ standards of the IceCat project.")
         ;; in the Thunderbird release tarball.  We don't use the release
         ;; tarball because it duplicates the Icecat sources and only adds the
         ;; "comm" directory, which is provided by this repository.
-        ,(let ((changeset "14a9afcfb6cc0c466e0d0b8222e85de5b2d8078d"))
+        ,(let ((changeset "1717d8d5fbd359aab7a4a0a15f4d15c72a7e6afc"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1595,7 +1595,7 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "18658r4b1f5p8jcz68l31z29ny73lic0br7gc827m72nfc85wqz3")))))
+               "10l042dd7b8rvla0cbiks5kjrz2b28yy7hr8sr169wlx202hxa01")))))
        ("autoconf" ,autoconf-2.13)
        ("cargo" ,rust "cargo")
        ("clang" ,clang)
@@ -1618,25 +1618,40 @@ Thunderbird.  It supports email, news feeds, chat, calendar and contacts.")
     (license license:mpl2.0)))
 
 (define-public icedove/wayland
-  (package/inherit icedove
+  (package
+    (inherit icedove)
     (name "icedove-wayland")
+    (native-inputs '())
+    (inputs
+     `(("bash" ,bash-minimal)
+       ("icedove" ,icedove)))
+    (build-system trivial-build-system)
     (arguments
-     (substitute-keyword-arguments (package-arguments icedove)
-       ((#:phases phases)
-        `(modify-phases ,phases
-          (replace 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib"))
-                    (gtk (assoc-ref inputs "gtk+"))
-                    (gtk-share (string-append gtk "/share"))
-                    (pulseaudio (assoc-ref inputs "pulseaudio"))
-                    (pulseaudio-lib (string-append pulseaudio "/lib")))
-               (wrap-program (car (find-files lib "^icedove$"))
-                 `("MOZ_ENABLE_WAYLAND" = ("1"))
-                 `("XDG_DATA_DIRS" prefix (,gtk-share))
-                 `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib)))
-               #t)))))))))
+      '(#:modules ((guix build utils))
+        #:builder
+        (begin
+          (use-modules (guix build utils))
+          (let* ((bash    (assoc-ref %build-inputs "bash"))
+                 (icedove (assoc-ref %build-inputs "icedove"))
+                 (out     (assoc-ref %outputs "out"))
+                 (exe     (string-append out "/bin/icedove")))
+            (mkdir-p (dirname exe))
+
+            (call-with-output-file exe
+              (lambda (port)
+                (format port "#!~a
+ MOZ_ENABLE_WAYLAND=1 exec ~a $@"
+                        (string-append bash "/bin/bash")
+                        (string-append icedove "/bin/icedove"))))
+            (chmod exe #o555)
+
+            ;; Provide the manual and .desktop file.
+            (copy-recursively (string-append icedove "/share")
+                              (string-append out "/share"))
+            (substitute* (string-append
+                          out "/share/applications/icedove.desktop")
+              ((icedove) out))
+            #t))))))
 
 (define-public firefox-decrypt
   (package
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index cbb7f98d0c..e4164d2c47 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2744,11 +2744,11 @@ The picture values can directly be displayed in Geiser.")
                       guile-picture-language))
 
 (define-public guile-studio
-  (let ((commit "93622e788e727d3275291f999f7e570de6a5bb35")
+  (let ((commit "dd0ad42e51feafebda7cc29afe7c8bc7a182a842")
         (revision "1"))
     (package
       (name "guile-studio")
-      (version (git-version "0.1.0" revision commit))
+      (version (git-version "0.1.1" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -2757,7 +2757,7 @@ The picture values can directly be displayed in Geiser.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0n6y0bcmkx50m8rccz7a6h4yxmwq54pf2bfzpd5ndz2bsiwiq13l"))))
+                  "1cpqilly8dqmai1qsgjxy99zs34sfz95zwxhzx979wryqb69vi0q"))))
       (build-system gnu-build-system)
       (arguments
        `(#:modules
@@ -4569,6 +4569,39 @@ including parsing and code generation.")
      "Guile Shapefile is a Guile library for reading shapefiles.")
     (license license:expat)))
 
+(define-public guile-drmaa
+  (package
+    (name "guile-drmaa")
+    (version "0.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.elephly.net/software/guile-drmaa.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1m2x62n3x5hi5vnsvv2zgqhgpzrfq7r5095fzzjd1aaybi9i9igg"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)
+       ("sed" ,sed)))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (propagated-inputs
+     `(("guile-bytestructures" ,guile-bytestructures)
+       ("nyacc" ,nyacc)))
+    (home-page "https://git.elephly.net/software/guile-drmaa.git")
+    (synopsis "Guile bindings to DRMAA")
+    (description "This project provides Guile bindings to the DRMAA library
+version 1.  DRMAA is a resource management library implemented by HPC cluster
+schedulers.")
+    (license license:gpl3+)))
+
 (define-public guile-libyaml
   (let ((commit "f5d33a6880e96571d3cb079ed7755ffc156cac46")
         (revision "1"))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 68ee7bddf5..0012d919c8 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -275,8 +275,8 @@ without requiring the source code to be rewritten.")
 (define-deprecated guile-2.2/bug-fix guile-2.2)
 
 (define-public guile-2.2.4
-  (package/inherit
-   guile-2.2
+  (package
+    (inherit guile-2.2)
    (version "2.2.4")
    (source (origin
              (inherit (package-source guile-2.2))
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index d5941b6c0f..ecbcca79b1 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -240,7 +240,7 @@ Memtest86+ cannot currently be used on computers booted with UEFI.")
 (define-public memtester
   (package
     (name "memtester")
-    (version "4.5.0")
+    (version "4.5.1")
     (source
      (origin
        (method url-fetch)
@@ -248,7 +248,7 @@ Memtest86+ cannot currently be used on computers booted with UEFI.")
        (uri (string-append "http://pyropus.ca/software/memtester/old-versions/"
                            "memtester-" version ".tar.gz"))
        (sha256
-        (base32 "0dxfwayns3hjjplkxkpkm1409lmjlpi4chcrahcvdbnl0q6jpmcf"))))
+        (base32 "0issrasdihav8jgsqb49cfyj0v564z8k9lyg2jrq9h3n4lwc4pqw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm
index 5698e6362c..1a9958c8d0 100644
--- a/gnu/packages/i2p.scm
+++ b/gnu/packages/i2p.scm
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
+;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,7 +32,7 @@
 (define-public i2pd
   (package
     (name "i2pd")
-    (version "2.36.0")
+    (version "2.38.0")
     (source
      (origin
        (method git-fetch)
@@ -39,40 +41,44 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0gx7y0vrg9lsl7m1r6c8xyyqmaqn900kms4g0941g0gd5zdb0mvz"))))
+        (base32 "1a35grcfw5a9dsj0rnm2i86fjf4px96xbnjj3hkril7hv5jvl37k"))))
     (build-system cmake-build-system)
-    (inputs `(("boost" ,boost)
-              ("miniupnpc" ,miniupnpc)
-              ("openssl" ,openssl)
-              ("zlib" ,zlib)))
-    (arguments '(#:configure-flags
-                 (let ((source (assoc-ref %build-inputs "source")))
-                   (list (string-append "-S" source "/build")
-                         "-DWITH_PCH=OFF"
-                         "-DWITH_STATIC=OFF"
-                         "-DWITH_UPNP=ON"
-                         "-DWITH_LIBRARY=ON"
-                         "-DBUILD_SHARED_LIBS=ON"
-                         "-DWITH_BINARY=ON"))
-                 #:phases
-                 (modify-phases %standard-phases
-                   (replace 'check
-                     (lambda* (#:key
-                               (make-flags '())
-                               (parallel-tests? #t)
-                               #:allow-other-keys)
-                       (let ((source (assoc-ref %build-inputs "source")))
-                         (copy-recursively (string-append source "/tests")
-                                           "./tests")
-                         (with-directory-excursion "tests"
-                           (substitute* "Makefile"
-                             (("../libi2pd/") (string-append source "/libi2pd/")))
-                           (apply invoke "make" "all"
-                                  `(,@(if parallel-tests?
-                                          `("-j" ,(number->string
-                                                    (parallel-job-count)))
-                                          '())
-                                    ,@make-flags)))))))))
+    (inputs
+     `(("boost" ,boost)
+       ("miniupnpc" ,miniupnpc)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (arguments
+     '(#:configure-flags
+       (let ((source (assoc-ref %build-inputs "source")))
+         (list (string-append "-S" source "/build")
+               "-DWITH_PCH=OFF"
+               "-DWITH_STATIC=OFF"
+               "-DWITH_UPNP=ON"
+               "-DWITH_LIBRARY=ON"
+               "-DBUILD_SHARED_LIBS=ON"
+               "-DWITH_BINARY=ON"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key
+                     tests?
+                     (make-flags '())
+                     (parallel-tests? #t)
+                     #:allow-other-keys)
+             (let ((source (assoc-ref %build-inputs "source")))
+               (when tests?
+                 (copy-recursively (string-append source "/tests")
+                                   "./tests")
+                 (with-directory-excursion "tests"
+                   (substitute* "Makefile"
+                     (("../libi2pd/") (string-append source "/libi2pd/")))
+                   (apply invoke "make" "all"
+                          `(,@(if parallel-tests?
+                                `("-j" ,(number->string
+                                          (parallel-job-count)))
+                                '())
+                             ,@make-flags))))))))))
     (home-page "https://i2pd.website/")
     (synopsis "Router for an end-to-end encrypted and anonymous internet")
     (description "i2pd is a client for the anonymous I2P network, upon which
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index 0d5f34aed8..7397f7cab8 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -128,6 +128,22 @@ C/C++ part.")
                (base32
                 "09fng7a80xj8d5r1cgbgq8r47dsw5jsr6si9p2cj2ylhwgg974f7"))))))
 
+(define-public icu4c-69
+  (package
+    (inherit icu4c)
+    (version "69.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4c-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    "-src.tgz"))
+              (sha256
+               (base32
+                "0icps0avkwy5df3wwc5kybxcg63hcgk4phdh9g244g0xrmx7pfjc"))))))
+
 (define-public icu4c-build-root
   (package
     (inherit icu4c)
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index ed21b26812..da2653c546 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Andy Tai <atai@atai.org>
 ;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -298,6 +299,8 @@ many popular formats.")
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_theora=ON"
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON"
                            "-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON"
+                           "-DVTK_WRAP_PYTHON=ON"
+                           "-DVTK_PYTHON_VERSION:STRING=3"
                            )
        #:phases
          (modify-phases %standard-phases
@@ -328,6 +331,7 @@ many popular formats.")
        ("netcdf" ,netcdf)
        ("png" ,libpng)
        ("proj" ,proj.4)
+       ("python", python)
        ;("pugixml" ,pugixml)
        ("sqlite" ,sqlite)
        ("tiff" ,libtiff)
@@ -871,6 +875,7 @@ libraries designed for computer vision research and implementation.")
          ;; variable in the installed CMake files.  This is necessary as other
          ;; packages using insight-toolkit could not be configured otherwise.
          "-DGTEST_ROOT=gtest")
+
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'do-not-tune
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 8deb3933a0..f009a30d53 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -2136,7 +2136,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
 (define-public libavif
   (package
     (name "libavif")
-    (version "0.9.0")
+    (version "0.9.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2145,7 +2145,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1aw41m8ddrckq375w0lv2zd4ybhccsy1hw4f9kipppwxhgvk17gf"))))
+                "1h1gf4cbrff73f8s4avkph2sbr4d3s71kifipskzcmrqjbjc2qsx"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON"
diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm
index 775b91f0f7..c768a367aa 100644
--- a/gnu/packages/installers.scm
+++ b/gnu/packages/installers.scm
@@ -42,7 +42,8 @@
                 (sha256
                  (base32
                   "1sbwx5vzpddharkb7nj4q5z3i5fbg4lan63ng738cw4hmc4v7qdn"))
-                (patches (search-patches "nsis-env-passthru.patch"))))
+                (patches (search-patches "nsis-env-passthru.patch"
+                                         "nsis-source-date-epoch.patch"))))
       (build-system scons-build-system)
       (native-inputs `(("xgcc" ,xgcc)
                        ("xbinutils" ,xbinutils)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 0adc3ed81e..ff14373bf3 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -546,12 +546,21 @@ decentralized calling using P2P-DHT.")
                             ; automatically started by DBus.
        ("adwaita-icon-theme" ,adwaita-icon-theme)))
     (arguments
-     `(#:tests? #f                      ; There is no testsuite.
+     `(#:tests? #f                      ;no test suite
+       #:imported-modules (,@%cmake-build-system-modules
+                           (guix build glib-or-gtk-build-system))
+       #:modules ((guix build cmake-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix gtk:)
+                  (guix build utils))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'change-directory
            (lambda _
-             (chdir "client-gnome"))))))
+             (chdir "client-gnome")))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+           (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (synopsis "Jami client for GNOME")
     (description "This package provides a Jami client for the GNOME desktop.
 Jami is a secure and distributed voice, video and chat communication platform
diff --git a/gnu/packages/julia-jll.scm b/gnu/packages/julia-jll.scm
new file mode 100644
index 0000000000..edf53d18ac
--- /dev/null
+++ b/gnu/packages/julia-jll.scm
@@ -0,0 +1,2667 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages julia-jll)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system julia)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages julia)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages mp3)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
+
+;;; TODO: Remove this autogenerated source package
+;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
+
+(define-public julia-bzip2-jll
+  (package
+    (name "julia-bzip2-jll")
+    (version "1.0.7+0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaBinaryWrappers/Bzip2_jll.jl")
+             (commit (string-append "Bzip2-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "188ngx4axdqr55ahv2xssl3cf699l1sxi41j336m9sw8plf4hhk8"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f                      ; No runtests.jl
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+              (lambda (wrapper)
+                (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                    "generate_wrapper_header(\"Bzip2\", \""
+                    (assoc-ref inputs "bzip2") "\")\n"))))
+              ;; There's a Julia file for each platform, override them all
+              (find-files "src/wrappers/" "\\.jl$"))
+             #t)))))
+    (inputs
+     `(("bzip2" ,bzip2)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Bzip2_jll.jl")
+    (synopsis "Bzip2 binary wrappers")
+    (description "This Julia module provides a wrapper for the @code{Bzip2}
+compression program.")
+    (license license:expat)))
+
+(define-public julia-cairo-jll
+  (package
+    (name "julia-cairo-jll")
+    (version "1.16.0+5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Cairo_jll.jl")
+               (commit (string-append "Cairo-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1766k8f63qb4bgyl4g29qrcddwypqx0c4kdg3lji8bsimw3f1bay"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Cairo\"")
+                    (string-append "\"" (assoc-ref inputs "cairo") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("cairo" ,cairo)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-bzip2-jll" ,julia-bzip2-jll)
+       ("julia-fontconfig-jll" ,julia-fontconfig-jll)
+       ("julia-freetype2-jll" ,julia-freetype2-jll)
+       ("julia-glib-jll" ,julia-glib-jll)
+       ("julia-libpng-jll" ,julia-libpng-jll)
+       ("julia-lzo-jll" ,julia-lzo-jll)
+       ("julia-pixman-jll" ,julia-pixman-jll)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)
+       ("julia-xorg-libxrender-jll" ,julia-xorg-libxrender-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Cairo_jll.jl")
+    (synopsis "Cairo library wrappers")
+    (description "This package provides a wrapper for the cairo library.")
+    (license license:expat)))
+
+(define-public julia-compilersupportlibraries-jll
+  (package
+    (name "julia-compilersupportlibraries-jll")
+    (version "0.4.0+1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+             (commit (string-append "CompilerSupportLibraries-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "03j6xdvps259mhdzpjqf41l65w2l9sahvxg4wrp34hcf69wkrzpy"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:tests? #f                      ; no runtests.jl
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+              (lambda (wrapper)
+                (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                    "generate_wrapper_header(\"CompilerSupportLibraries\", \""
+                    (assoc-ref inputs "gfortran:lib") "\")\n"))))
+              ;; There's a Julia file for each platform, override them all
+              (find-files "src/wrappers/" "\\.jl$"))
+             #t)))))
+    (inputs                             ;required by artifacts
+     `(("gfortran:lib" ,gfortran "lib")))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+    (synopsis "Internal wrappers")
+    (description "This package provides compiler support for libraries.  It is
+an autogenerated source package constructed using @code{BinaryBuilder.jl}. The
+originating @code{build_tarballs.jl} script can be found on the community
+build tree Yggdrasil.")
+    (license license:expat)))
+
+(define-public julia-expat-jll
+  (package
+    (name "julia-expat-jll")
+    (version "2.2.10+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Expat_jll.jl")
+               (commit (string-append "Expat-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0lkhkh0067lns35njpc1bqbx6653r99lrjcbgrihlln9a7k9qj1s"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Expat\", \""
+                      (assoc-ref inputs "expat") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("expat" ,expat)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Expat_jll.jl")
+    (synopsis "Expat library wrappers")
+    (description "This package provides a wrapper for the expat library.")
+    (license license:expat)))
+
+(define-public julia-ffmpeg-jll
+  (package
+    (name "julia-ffmpeg-jll")
+    (version "4.3.1+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/FFMPEG_jll.jl")
+               (commit (string-append "FFMPEG-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1f8pq9nxiiqay9qcsly1wkfpyz9nbxakf78ryi2c7g8p5v80k6d3"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"FFMPEG\"")
+                    (string-append "\"" (assoc-ref inputs "ffmpeg") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-bzip2-jll" ,julia-bzip2-jll)
+       ("julia-freetype2-jll" ,julia-freetype2-jll)
+       ("julia-fribidi-jll" ,julia-fribidi-jll)
+       ("julia-lame-jll" ,julia-lame-jll)
+       ("julia-libass-jll" ,julia-libass-jll)
+       ("julia-libfdk-aac-jll" ,julia-libfdk-aac-jll)
+       ("julia-libvorbis-jll" ,julia-libvorbis-jll)
+       ("julia-openssl-jll" ,julia-openssl-jll)
+       ("julia-opus-jll" ,julia-opus-jll)
+       ("julia-ogg-jll" ,julia-ogg-jll)
+       ("julia-x264-jll" ,julia-x264-jll)
+       ("julia-x265-jll" ,julia-x265-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/FFMPEG_jll.jl")
+    (synopsis "ffmpeg library wrappers")
+    (description "This package provides a wrapper for ffmpeg.")
+    (license license:expat)))
+
+(define-public julia-fontconfig-jll
+  (package
+    (name "julia-fontconfig-jll")
+    (version "2.13.93+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Fontconfig_jll.jl")
+               (commit (string-append "Fontconfig-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1p6mfci77bp31w3xzlwhjccln40g6g2rdpfp38v5xf8sz2aybpw2"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Fontconfig\", \""
+                      (assoc-ref inputs "fontconfig") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("fontconfig" ,fontconfig)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-bzip2-jll" ,julia-bzip2-jll)
+       ("julia-expat-jll" ,julia-expat-jll)
+       ("julia-freetype2-jll" ,julia-freetype2-jll)
+       ("julia-libuuid-jll" ,julia-libuuid-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Fontconfig_jll.jl")
+    (synopsis "Fontconfig library wrappers")
+    (description "This package provides a wrapper for the fontconfig library.")
+    (license license:expat)))
+
+(define-public julia-freetype2-jll
+  (package
+    (name "julia-freetype2-jll")
+    (version "2.10.4+0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaBinaryWrappers/FreeType2_jll.jl")
+             (commit (string-append "FreeType2-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "03lgmb59lipc3bi7z22j4a53bbjmcwkf0xzpwan889p1ix3ry1lr"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f                      ; No runtests.jl
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+              (lambda (wrapper)
+                (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                    "generate_wrapper_header(\"FreeType2\", \""
+                    (assoc-ref inputs "freetype") "\")\n"))))
+              ;; There's a Julia file for each platform, override them all
+              (find-files "src/wrappers/" "\\.jl$"))
+             #t)))))
+    (inputs
+     `(("freetype" ,freetype)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-bzip2-jll" ,julia-bzip2-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/FreeType2_jll.jl")
+    (synopsis "Freetype2 binary wrappers")
+    (description "This Julia module provides a wrapper for the freetype font
+rendering library.")
+    (license license:expat)))
+
+(define-public julia-fribidi-jll
+  (package
+    (name "julia-fribidi-jll")
+    (version "1.0.5+5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/FriBidi_jll.jl")
+               (commit (string-append "FriBidi-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1nmaqhsnm51hyvnbr9riqfp3f636xyxn2ybych598xpkhhjqldwh"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"FriBidi\"")
+                    (string-append "\"" (assoc-ref inputs "fribidi") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("fribidi" ,fribidi)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/FriBidi_jll.jl")
+    (synopsis "Fribidi library wrappers")
+    (description "This package provides a wrapper for the fribidi library.")
+    (license license:expat)))
+
+(define-public julia-gettext-jll
+  (package
+    (name "julia-gettext-jll")
+    (version "0.21.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Gettext_jll.jl")
+               (commit (string-append "Gettext-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ghwkwv970q6j9ggkl0zlyrflhx8rd39y5i2zkc6p26084kyrxmf"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Gettext\", \""
+                      (assoc-ref inputs "gettext") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("gettext" ,gettext-minimal)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)
+       ("julia-libiconv-jll" ,julia-libiconv-jll)
+       ("julia-xml2-jll" ,julia-xml2-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Gettext_jll.jl")
+    (synopsis "Gettext library wrappers")
+    (description "This package provides a wrapper for the gettext library.")
+    (license license:expat)))
+
+(define-public julia-glfw-jll
+  (package
+    (name "julia-glfw-jll")
+    (version "3.3.4+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/GLFW_jll.jl")
+               (commit (string-append "GLFW-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "12r4g8x1pgfrx53wq1a2q0rj4p08q352mmci2px1j4bd0pwi8rc4"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"GLFW\", \""
+                     (assoc-ref inputs "glfw") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("glfw" ,glfw)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-libglvnd-jll" ,julia-libglvnd-jll)
+       ("julia-xorg-libxcursor-jll" ,julia-xorg-libxcursor-jll)
+       ("julia-xorg-libxinerama-jll" ,julia-xorg-libxinerama-jll)
+       ("julia-xorg-libxrandr-jll" ,julia-xorg-libxrandr-jll)
+       ("julia-xorg-libxi-jll" ,julia-xorg-libxi-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/GLFW_jll.jl")
+    (synopsis "Glfw library wrappers")
+    (description "This package provides a wrapper for the glfw library.")
+    (license license:expat)))
+
+(define-public julia-glib-jll
+  (package
+    (name "julia-glib-jll")
+    (version "2.68.1+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Glib_jll.jl")
+               (commit (string-append "Glib-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0l0fm5m4rznljkig7k4cxpi4skm7j4nc6lqx5xr0sb0wfzbr2llv"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Glib\", \""
+                      (assoc-ref inputs "glib") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("glib" ,glib)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-gettext-jll" ,julia-gettext-jll)
+       ("julia-libffi-jll" ,julia-libffi-jll)
+       ("julia-libiconv-jll" ,julia-libiconv-jll)
+       ("julia-libmount-jll" ,julia-libmount-jll)
+       ("julia-pcre-jll" ,julia-pcre-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Glib_jll.jl")
+    (synopsis "Glib library wrappers")
+    (description "This package provides a wrapper for the glib library.")
+    (license license:expat)))
+
+(define-public julia-gumbo-jll
+  (package
+    (name "julia-gumbo-jll")
+    (version "0.10.1+1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaBinaryWrappers/Gumbo_jll.jl")
+             (commit (string-append "Gumbo-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "00a182x5hfpjzyvrxdn8wh4h67q899p5dzqp19a5s22si4g41k76"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gumbo (string-append (assoc-ref inputs "gumbo-parser"))))
+               (for-each
+                (lambda (wrapper)
+                  (substitute* wrapper
+                    (("(const libgumbo = )\"(.*)\"" all const libname)
+                     (string-append const "\"" gumbo "/lib/" libname "\"\n"))
+                    (("(global artifact_dir =).*" all m)
+                     (string-append m " \"" gumbo "\""))))
+                ;; There's a Julia file for each platform, override them all
+                (find-files "src/wrappers/" "\\.jl$"))))))))
+    (inputs
+     `(("gumbo-parser" ,gumbo-parser)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Gumbo_jll.jl")
+    (synopsis "Gumbo HTML parsing library wrappers")
+    (description "This package provides a wrapper for Gumbo HTML parsing library.")
+    (license license:expat)))
+
+(define-public julia-imagemagick-jll
+  (package
+    (name "julia-imagemagick-jll")
+    (version "6.9.10-12+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/ImageMagick_jll.jl")
+               (commit (string-append "ImageMagick-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1a0vnnjl52yqi7jgpr0dmx5ah5nlpylv5hc8aw2l89b9f36ff8jg"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   ;; Make sure we match the current library.
+                   (("libMagickWand-6.Q16.so.6") "libMagickWand-6.Q16.so.7")
+                   (("artifact\"ImageMagick\"")
+                    (string-append "\"" (assoc-ref inputs "imagemagick") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
+       ("julia-libpng-jll" ,julia-libpng-jll)
+       ("julia-libtiff-jll" ,julia-libtiff-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (inputs
+     `(("imagemagick" ,imagemagick)))
+    (home-page "https://github.com/JuliaBinaryWrappers/ImageMagick_jll.jl")
+    (synopsis "Imagemagick library wrappers")
+    (description "This package provides a wrapper for Imagemagick.")
+    (license license:expat)))
+
+(define-public julia-jllwrappers
+  (package
+    (name "julia-jllwrappers")
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaPackaging/JLLWrappers.jl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0v7xhsv9z16d657yp47vgc86ggc01i1wigqh3n0d7i1s84z7xa0h"))))
+    (arguments
+     ;; Wants to download stuff
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'custom-override-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make @generate_wrapper_header take an optional argument that
+             ;; guix packagers can pass to override the default "override"
+             ;; binary path.  This won't be needed when something like
+             ;; https://github.com/JuliaPackaging/JLLWrappers.jl/pull/27
+             ;; will be merged.
+             (substitute* "src/wrapper_generators.jl"
+               (("generate_wrapper_header.*")
+                "generate_wrapper_header(src_name, override_path = nothing)\n")
+               (("pkg_dir = .*" all)
+                (string-append
+                 all "\n" "override = something(override_path,"
+                 "joinpath(dirname(pkg_dir), \"override\"))\n"))
+               (("@static if isdir.*") "@static if isdir($override)\n")
+               (("return joinpath.*") "return $override\n"))
+             #t)))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaPackaging/JLLWrappers.jl")
+    (synopsis "Julia macros used by JLL packages")
+    (description "This package contains Julia macros that enable JLL packages
+to generate themselves.  It is not intended to be used by users, but rather is
+used in autogenerated packages via @code{BinaryBuilder.jl}.")
+    (license license:expat)))
+
+(define-public julia-jpegturbo-jll
+  (package
+    (name "julia-jpegturbo-jll")
+    (version "2.0.1+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/JpegTurbo_jll.jl")
+               (commit (string-append "JpegTurbo-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1xp1x0hrj337bgwwffwpyq7xg031j2a38fim29lixqa0a0y80x6y"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"JpegTurbo\"")
+                    (string-append "\"" (assoc-ref inputs "libjpeg-turbo") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libjpeg-turbo" ,libjpeg-turbo)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/JpegTurbo_jll.jl")
+    (synopsis "Libjpeg-turbo library wrappers")
+    (description "This package provides a wrapper for the libjpeg-turbo library.")
+    (license license:expat)))
+
+(define-public julia-lame-jll
+  (package
+    (name "julia-lame-jll")
+    (version "3.100.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/LAME_jll.jl")
+               (commit (string-append "LAME-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1ck14hwrapcn5wiazf4m2brkqmlpiqpyr0468p467418av837y1c"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"LAME\"")
+                    (string-append "\"" (assoc-ref inputs "lame") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("lame" ,lame)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/LAME_jll.jl")
+    (synopsis "Lame library wrappers")
+    (description "This package provides a wrapper for the lame audio encoder.")
+    (license license:expat)))
+
+(define-public julia-libass-jll
+  (package
+    (name "julia-libass-jll")
+    (version "0.14.0+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/libass_jll.jl")
+               (commit (string-append "libass-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "05nvis5ifmaq1g0c98hcpnl0ky22qgp64d4lb6g6r4yrrn6kqlsc"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"libass\"")
+                    (string-append "\"" (assoc-ref inputs "libass") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libass" ,libass)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-bzip2-jll" ,julia-bzip2-jll)
+       ("julia-freetype2-jll" ,julia-freetype2-jll)
+       ("julia-fribidi-jll" ,julia-fribidi-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/libass_jll.jl")
+    (synopsis "Libass library wrappers")
+    (description "This package provides a wrapper for libass.")
+    (license license:expat)))
+
+(define-public julia-libfdk-aac-jll
+  (package
+    (name "julia-libfdk-aac-jll")
+    (version "0.1.6+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/libfdk_aac_jll.jl")
+               (commit (string-append "libfdk_aac-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0jinb205dn1yfvl0mx7dsah4xj3r8vc3ig8yl72langjc7vrwdn0"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"libfdk_aac\"")
+                    (string-append "\"" (assoc-ref inputs "libfdk") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libfdk" ,libfdk)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/libfdk_aac_jll.jl")
+    (synopsis "FDK library wrappers")
+    (description "This package provides a wrapper for the libfdk audio library.")
+    (license license:expat)))
+
+(define-public julia-libffi-jll
+  (package
+    (name "julia-libffi-jll")
+    (version "3.3.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libffi_jll.jl")
+               (commit (string-append "Libffi-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "008ajchli77airvibdgqw7gvmhk9w63qrv94f88iz1ixxyrycnm0"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("lib64") "lib")
+                   (("artifact\"Libffi\"")
+                    (string-append "\"" (assoc-ref inputs "libffi") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libffi" ,libffi)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libffi_jll.jl")
+    (synopsis "Libffi library wrappers")
+    (description "This package provides a wrapper for the libffi library.")
+    (license license:expat)))
+
+(define-public julia-libgcrypt-jll
+  (package
+    (name "julia-libgcrypt-jll")
+    (version "1.8.7+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libgcrypt_jll.jl")
+               (commit (string-append "Libgcrypt-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "06fsdwrfw3f4cdbg1ssswznvj8ar3w5w4vxxag1hacs14pxlm5gi"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"Libgcrypt\", \""
+                     (assoc-ref inputs "libgcrypt") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libgcrypt" ,libgcrypt)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-libgpg-error-jll" ,julia-libgpg-error-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libgcrypt_jll.jl")
+    (synopsis "libgcrypt library wrappers")
+    (description "This package provides a wrapper for the libgcrypt library.")
+    (license license:expat)))
+
+(define-public julia-libglvnd-jll
+  (package
+    (name "julia-libglvnd-jll")
+    (version "1.3.0+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libglvnd_jll.jl")
+               (commit (string-append "Libglvnd-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1lrppqj836saryqxj9xrqn0cih513qhijkhgqdww5azw8w917d3w"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Libglvnd\"")
+                    (string-append "\"" (assoc-ref inputs "libglvnd") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libglvnd" ,libglvnd)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libx11-jll" ,julia-xorg-libx11-jll)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libglvnd_jll.jl")
+    (synopsis "Libglvnd library wrappers")
+    (description "This package provides a wrapper for the libglvnd library.")
+    (license license:expat)))
+
+(define-public julia-libgpg-error-jll
+  (package
+    (name "julia-libgpg-error-jll")
+    (version "1.42.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libgpg_error_jll.jl")
+               (commit (string-append "Libgpg_error-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0jmsn0mhn6b35b5awbrlpjjszknsplr62li574fkgwfxlfixb8iy"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"Libgpg_error\", \""
+                     (assoc-ref inputs "libgpg-error") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libgpg-error" ,libgpg-error)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libgpg_error_jll.jl")
+    (synopsis "libgpg-error library wrappers")
+    (description "This package provides a wrapper for the libgpg-error library.")
+    (license license:expat)))
+
+(define-public julia-libiconv-jll
+  (package
+    (name "julia-libiconv-jll")
+    (version "1.16.1+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libiconv_jll.jl")
+               (commit (string-append "Libiconv-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "185f2460ypig1klgi8rdb0s2c8l4hxdbmsz9ihj7bdydl964s2hh"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Libiconv\", \""
+                      (assoc-ref inputs "libiconv") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libiconv" ,libiconv)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libiconv_jll.jl")
+    (synopsis "Libiconv library wrappers")
+    (description "This package provides a wrapper for the libiconv library.")
+    (license license:expat)))
+
+(define-public julia-libmount-jll
+  (package
+    (name "julia-libmount-jll")
+    (version "2.35.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libmount_jll.jl")
+               (commit (string-append "Libmount-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "04i4vm5rshz8nfmnxqx8rm3b9jd7b1xdiriac1bpsx3n0qf4pw89"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Libmount\", \""
+                      (assoc-ref inputs "util-linux") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("util-linux" ,util-linux "lib")))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libmount_jll.jl")
+    (synopsis "Libmount library wrappers")
+    (description "This package provides a wrapper for the libmount library
+from util-linux.")
+    (license license:expat)))
+
+(define-public julia-libpng-jll
+  (package
+    (name "julia-libpng-jll")
+    (version "1.6.37+5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/LibPNG_jll.jl")
+               (commit (string-append "libpng-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "10azxv26j8r193dg9i9x7ajm3frhwbhj8zzi40fj59fxm81xz6dx"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"libpng\"")
+                    (string-append "\"" (assoc-ref inputs "libpng") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libpng" ,libpng)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/LibPNG_jll.jl")
+    (synopsis "Libpng library wrappers")
+    (description "This package provides a wrapper for the libpng library.")
+    (license license:expat)))
+
+(define-public julia-libtiff-jll
+  (package
+    (name "julia-libtiff-jll")
+    (version "4.1.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libtiff_jll.jl")
+               (commit (string-append "Libtiff-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "07zzhmwmh2g4645ghv76z40hza2ghlb7sw15b1pii7f9kfcsgf45"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Libtiff\"")
+                    (string-append "\"" (assoc-ref inputs "libtiff") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libtiff" ,libtiff)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)
+       ("julia-zstd-jll" ,julia-zstd-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libtiff_jll.jl")
+    (synopsis "Libtiff library wrappers")
+    (description "This package provides a wrapper for libtiff")
+    (license license:expat)))
+
+(define-public julia-libuuid-jll
+  (package
+    (name "julia-libuuid-jll")
+    (version "2.36.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Libuuid_jll.jl")
+               (commit (string-append "Libuuid-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0iz1qrrpl8sp336m1f884sdgwbdlkp9sm371cwcfq4iriaihbmbs"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Libuuid\", \""
+                      (assoc-ref inputs "util-linux") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("util-linux" ,util-linux "lib")))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Libmount_jll.jl")
+    (synopsis "Libuuid library wrappers")
+    (description "This package provides a wrapper for the libuuid library from util-linux.")
+    (license license:expat)))
+
+(define-public julia-libvorbis-jll
+  (package
+    (name "julia-libvorbis-jll")
+    (version "1.3.6+4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/libvorbis_jll.jl")
+               (commit (string-append "libvorbis-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1zmwhpjy6gr865psjn600g6ickskp4sq34qf1qg8ji6x4v09pzrh"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"libvorbis\"")
+                    (string-append "\"" (assoc-ref inputs "libvorbis") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libvorbis" ,libvorbis)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-ogg-jll" ,julia-ogg-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/libvorbis_jll.jl")
+    (synopsis "Libvorbis library wrappers")
+    (description
+     "This package provides a wrapper for the libvorbis audio library.")
+    (license license:expat)))
+
+(define-public julia-lzo-jll
+  (package
+    (name "julia-lzo-jll")
+    (version "2.10.1+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/LZO_jll.jl")
+               (commit (string-append "LZO-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1gy57znz3b6pk902vgdzlrwrxib0bcfl0zr1prinfbr9vfmiv1h0"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"LZO\", \""
+                     (assoc-ref inputs "lzo") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("lzo" ,lzo)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/LZO_jll.jl")
+    (synopsis "LZO library wrappers")
+    (description "This package provides a wrapper for the lzo library.")
+    (license license:expat)))
+
+(define-public julia-mbedtls-jll
+  (package
+    (name "julia-mbedtls-jll")
+    ;; version 2.25.0+0 is not compatible with current mbedtls 2.23.0,
+    ;; upgrade this when mbedtls is updated in guix
+    (version "2.24.0+1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl")
+             (commit (string-append "MbedTLS-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0kk9dlxdh7yms21npgrdfmjbj8q8ng6kdhrzw3jr2d7rp696kp99"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f                      ; No runtests.jl
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+              (lambda (wrapper)
+                (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                    "generate_wrapper_header(\"MbedTLS\", \""
+                    (assoc-ref inputs "mbedtls-apache") "\")\n"))))
+              ;; There's a Julia file for each platform, override them all
+              (find-files "src/wrappers/" "\\.jl$"))
+             #t)))))
+    (inputs `(("mbedtls-apache" ,mbedtls-apache)))
+    (propagated-inputs `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl")
+    (synopsis "Apache's mbed TLS binary wrappers")
+    (description "This Julia module provides @code{mbed TLS} libraries and
+wrappers.")
+    (license license:expat)))
+
+(define-public julia-ogg-jll
+  (package
+    (name "julia-ogg-jll")
+    (version "1.3.4+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Ogg_jll.jl")
+               (commit (string-append "Ogg-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0p27wgy48gfw8g0hzlvcxrp0346nqnyxa88pydm87ll3sfx9b4ww"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Ogg\"")
+                    (string-append "\"" (assoc-ref inputs "libogg") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libogg" ,libogg)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Ogg_jll.jl")
+    (synopsis "Libogg library wrappers")
+    (description "This package provides a wrapper for the libogg library.")
+    (license license:expat)))
+
+(define-public julia-openspecfun-jll
+  (let ((commit "6c505cce3bdcd9cd2b15b4f9362ec3a42c4da71c"))
+    (package
+      (name "julia-openspecfun-jll")
+      (version "0.5.3+4")                 ;tag not created upstream
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0bl2gcgndsbiwhwy8fl070cjm1fyf9kxj6gkikgirmzgjl29iakn"))))
+      (build-system julia-build-system)
+      (arguments
+       `(#:tests? #f                      ; no runtests.jl
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'override-binary-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               (map
+                (lambda (wrapper)
+                  (substitute* wrapper
+                    (("generate_wrapper_header.*")
+                     (string-append
+                      "generate_wrapper_header(\"OpenSpecFun\", \""
+                      (assoc-ref inputs "openspecfun") "\")\n"))))
+                ;; There's a Julia file for each platform, override them all
+                (find-files "src/wrappers/" "\\.jl$"))
+               #t)))))
+      (inputs
+       `(("openspecfun" ,openspecfun)))
+      (propagated-inputs
+       `(("julia-jllwrappers" ,julia-jllwrappers)
+         ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)))
+      (home-page "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+      (synopsis "Internal wrappers")
+      (description "This package provides a wrapper for OpenSpecFun.  It is an
+autogenerated source package constructed using @code{BinaryBuilder.jl}. The
+originating @code{build_tarballs.jl} script can be found on the community
+build tree Yggdrasil.")
+      (license license:expat))))
+
+(define-public julia-openssl-jll
+  (package
+    (name "julia-openssl-jll")
+    (version "1.1.1+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+               (commit (string-append "OpenSSL-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0qly9pjhah95jdgvckkj615yfbsavvsygpfq9sqz4716q4zv0d5z"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"OpenSSL\"")
+                    (string-append "\"" (assoc-ref inputs "openssl") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("openssl" ,openssl)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+    (synopsis "Openssl library wrappers")
+    (description "This package provides a wrapper for the openssl library.")
+    (license license:expat)))
+
+(define-public julia-opus-jll
+  (package
+    (name "julia-opus-jll")
+    (version "1.3.1+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Opus_jll.jl")
+               (commit (string-append "Opus-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1zm0rnr3pi83bzza1azlrv8l7l0mjpykc3qz4b5p9zcdzf7aw4vn"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Opus\"")
+                    (string-append "\"" (assoc-ref inputs "opus") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("opus" ,opus)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Opus_jll.jl")
+    (synopsis "Opus library wrappers")
+    (description "This package provides a wrapper for the opus audio library.")
+    (license license:expat)))
+
+(define-public julia-pcre-jll
+  (package
+    (name "julia-pcre-jll")
+    (version "8.44.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/PCRE_jll.jl")
+               (commit (string-append "PCRE-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0fcn8m16vy92v9dj437hzlknq9zl6sw6rckmr5gmh07sf0n3wszs"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"PCRE\", \""
+                      (assoc-ref inputs "pcre") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("pcre" ,pcre)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/PCRE_jll.jl")
+    (synopsis "PCRE library wrappers")
+    (description "This package provides a wrapper for the pcre library.")
+    (license license:expat)))
+
+(define-public julia-pixman-jll
+  (package
+    (name "julia-pixman-jll")
+    (version "0.40.1+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Pixman_jll.jl")
+               (commit (string-append "Pixman-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ahawpgsiccmpa7gyxny7hq058igqvpza7ybqa44vl2nynnry2g7"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Pixman\", \""
+                      (assoc-ref inputs "pixman") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("pixman" ,pixman)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Pixman_jll.jl")
+    (synopsis "Pixman library wrappers")
+    (description "This package provides a wrapper for the pixman library.")
+    (license license:expat)))
+
+(define-public julia-qt5base-jll
+  (package
+    (name "julia-qt5base-jll")
+    (version "5.15.2+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Qt5Base_jll.jl")
+               (commit (string-append "Qt5Base-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1hhs316dl2jy56y2j4809vwpfj6ffbjchl1a27x44mmh9bj7vxzy"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"Qt5Base\", \""
+                     (assoc-ref inputs "qtbase") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-libglvnd-jll" ,julia-libglvnd-jll)
+       ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)
+       ("julia-fontconfig-jll" ,julia-fontconfig-jll)
+       ("julia-glib-jll" ,julia-glib-jll)
+       ("julia-openssl-jll" ,julia-openssl-jll)
+       ("julia-xkbcommon-jll" ,julia-xkbcommon-jll)
+       ("julia-xorg-libxcb-jll" ,julia-xorg-libxcb-jll)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)
+       ("julia-xorg-xcb-util-image-jll" ,julia-xorg-xcb-util-image-jll)
+       ("julia-xorg-xcb-util-keysyms-jll" ,julia-xorg-xcb-util-keysyms-jll)
+       ("julia-xorg-xcb-util-renderutil-jll" ,julia-xorg-xcb-util-renderutil-jll)
+       ("julia-xorg-xcb-util-wm-jll" ,julia-xorg-xcb-util-wm-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Qt5Base_jll.jl")
+    (synopsis "Qtbase library wrappers")
+    (description "This package provides a wrapper for the qtbase library.")
+    (license license:expat)))
+
+(define-public julia-wayland-jll
+  (package
+    (name "julia-wayland-jll")
+    (version "1.17.0+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Wayland_jll.jl")
+               (commit (string-append "Wayland-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1w53inz62va3f022pgw3rfw5z5vgiv8z9dg3lfzpjrdb0lcd6ab6"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Wayland\"")
+                    (string-append "\"" (assoc-ref inputs "wayland") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("wayland" ,wayland)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-expat-jll" ,julia-expat-jll)
+       ("julia-libffi-jll" ,julia-libffi-jll)
+       ("julia-xml2-jll" ,julia-xml2-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Wayland_jll.jl")
+    (synopsis "Wayland library wrappers")
+    (description "This package provides a wrapper for the wayland library.")
+    (license license:expat)))
+
+(define-public julia-wayland-protocols-jll
+  (package
+    (name "julia-wayland-protocols-jll")
+    (version "1.18.0+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Wayland_protocols_jll.jl")
+               (commit (string-append "Wayland_protocols-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1dc9d2wzgybqjlg8l7f4ridkv2d66dg3lb3zihnl0k64psibn4x9"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Wayland_protocols\"")
+                    (string-append "\"" (assoc-ref inputs "wayland-protocols") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("wayland-protocols" ,wayland-protocols)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-wayland-jll" ,julia-wayland-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Wayland_protocols_jll.jl")
+    (synopsis "Wayland-protocols library wrappers")
+    (description "This package provides a wrapper for the wayland-protocols library.")
+    (license license:expat)))
+
+(define-public julia-x264-jll
+  (package
+    (name "julia-x264-jll")
+    (version "2020.7.14+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/x264_jll.jl")
+               (commit (string-append "x264-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "131srmmcwhp9f2x4dq3dw4pzv2z0428mdrb923yzzlm7a89nf28p"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((libx264 (assoc-ref inputs "libx264")))
+              (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   ;; Make sure we match the current library.
+                   (("libx264.so.157")
+                    (string-append "libx264.so."
+                                   ,(version-major (package-version libx264))))
+                   (("artifact\"x264\"")
+                    (string-append "\"" libx264 "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$"))))))))
+    (inputs
+     `(("libx264" ,libx264)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/x264_jll.jl")
+    (synopsis "x264 library wrappers")
+    (description "This package provides a wrapper for the x264 video library.")
+    (license license:expat)))
+
+(define-public julia-x265-jll
+  (package
+    (name "julia-x265-jll")
+    (version "3.0.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/x265_jll.jl")
+               (commit (string-append "x265-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "082jgjlc2zm9rzg8p7l9nd4hlg17ziwp2b8rrcpicpb6fxb7sjh4"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"x265\"")
+                    (string-append "\"" (assoc-ref inputs "x265") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("x265" ,x265)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/x265_jll.jl")
+    (synopsis "x265 library wrappers")
+    (description "This package provides a wrapper for the x265 video library.")
+    (license license:expat)))
+
+(define-public julia-xkbcommon-jll
+  (package
+    (name "julia-xkbcommon-jll")
+    (version "0.9.1+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/xkbcommon_jll.jl")
+               (commit (string-append "xkbcommon-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1g2gmd3mj1p369kzvrd02ldgr9s712vs9774v1phb59jxlshc0zc"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"xkbcommon\"")
+                    (string-append "\"" (assoc-ref inputs "libxkbcommon") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxkbcommon" ,libxkbcommon)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxcb-jll" ,julia-xorg-libxcb-jll)
+       ("julia-xorg-xkeyboard-config-jll" ,julia-xorg-xkeyboard-config-jll)
+       ("julia-wayland-jll" ,julia-wayland-jll)
+       ("julia-wayland-protocols-jll" ,julia-wayland-protocols-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/xkbcommon_jll.jl")
+    (synopsis "Libxkbcommon library wrappers")
+    (description "This package provides a wrapper for the libxkbcommon library.")
+    (license license:expat)))
+
+(define-public julia-xml2-jll
+  (package
+    (name "julia-xml2-jll")
+    (version "2.9.12+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/XML2_jll.jl")
+               (commit (string-append "XML2-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1g6wf5r5v2qx6cwv05kd9amcsmv65vkajk43m9r1c35jqs9m8fnm"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"XML2\", \""
+                      (assoc-ref inputs "libxml2") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxml2" ,libxml2)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-libiconv-jll" ,julia-libiconv-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/XML2_jll.jl")
+    (synopsis "XML2 library wrappers")
+    (description "This package provides a wrapper for the libxml2 library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libpthread-stubs-jll
+  (package
+    (name "julia-xorg-libpthread-stubs-jll")
+    (version "0.1.0+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libpthread_stubs_jll.jl")
+               (commit (string-append "Xorg_libpthread_stubs-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "161f4111xsb8xq4zs59jw95s94xfn1yxpii0p0dhn3yqgligggvx"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libpthread_stubs\"")
+                    (string-append "\"" (assoc-ref inputs "libpthread-stubs") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libpthread-stubs" ,libpthread-stubs)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xslt-jll" ,julia-xslt-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libpthread_stubs_jll.jl")
+    (synopsis "Libpthread-stubs library wrappers")
+    (description "This package provides a wrapper for the libpthread-stubs library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libx11-jll
+  (package
+    (name "julia-xorg-libx11-jll")
+    (version "1.6.9+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libX11_jll.jl")
+               (commit (string-append "Xorg_libX11-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1fw2dmmw04jmyss43g66q80w3j7wshmxgjccir1hh4c5d8x2zs39"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libX11\"")
+                    (string-append "\"" (assoc-ref inputs "libx11") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libx11" ,libx11)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxcb-jll" ,julia-xorg-libxcb-jll)
+       ("julia-xorg-xtrans-jll" ,julia-xorg-xtrans-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libX11_jll.jl")
+    (synopsis "LibX11 library wrappers")
+    (description "This package provides a wrapper for the libx11 library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxau-jll
+  (package
+    (name "julia-xorg-libxau-jll")
+    (version "1.0.9+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXau_jll.jl")
+               (commit (string-append "Xorg_libXau-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1bc59hzg4jgdy0lwykp6avxsb87fq9j79c30yxprwjvxq8xm3p8z"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXau\"")
+                    (string-append "\"" (assoc-ref inputs "libxau") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxau" ,libxau)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXau_jll.jl")
+    (synopsis "Libxau library wrappers")
+    (description "This package provides a wrapper for the libxau library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxcb-jll
+  (package
+    (name "julia-xorg-libxcb-jll")
+    (version "1.13.0+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libxcb_jll.jl")
+               (commit (string-append "Xorg_libxcb-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "109m4r4v6ww31rq0klyqd3rf3j1yiycvld82d514d040w5027ssk"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libxcb\"")
+                    (string-append "\"" (assoc-ref inputs "libxcb") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxcb" ,libxcb)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxau-jll" ,julia-xorg-libxau-jll)
+       ("julia-xorg-libpthread-stubs-jll" ,julia-xorg-libpthread-stubs-jll)
+       ("julia-xorg-libxdmcp-jll" ,julia-xorg-libxdmcp-jll)
+       ("julia-xslt-jll" ,julia-xslt-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libxcb_jll.jl")
+    (synopsis "Libxcb library wrappers")
+    (description "This package provides a wrapper for the libxcb library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxcursor-jll
+  (package
+    (name "julia-xorg-libxcursor-jll")
+    (version "1.2.0+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXcursor_jll.jl")
+               (commit (string-append "Xorg_libXcursor-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0hxhpsjw1zk30qphrp90g1wvqfs1hr47qifn1gqgx73ci5nmq0y7"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXcursor\"")
+                    (string-append "\"" (assoc-ref inputs "libxcursor") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxcursor" ,libxcursor)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxfixes-jll" ,julia-xorg-libxfixes-jll)
+       ("julia-xorg-libxrender-jll" ,julia-xorg-libxrender-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXcursor_jll.jl")
+    (synopsis "Libxcursor library wrappers")
+    (description "This package provides a wrapper for the libxcursor library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxdmcp-jll
+  (package
+    (name "julia-xorg-libxdmcp-jll")
+    (version "1.1.3+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXdmcp_jll.jl")
+               (commit (string-append "Xorg_libXdmcp-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1ghw8c7ibkm2hv4h38qyhbxfmyizxszqv6fv8qzlb5031dmshnap"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXdmcp\"")
+                    (string-append "\"" (assoc-ref inputs "libxdmcp") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxdmcp" ,libxdmcp)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXdmcp_jll.jl")
+    (synopsis "Libxdmcp library wrappers")
+    (description "This package provides a wrapper for the libxdmcp library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxext-jll
+  (package
+    (name "julia-xorg-libxext-jll")
+    (version "1.3.4+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXext_jll.jl")
+               (commit (string-append "Xorg_libXext-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1xmx86l54apvqv0xwy0rha7knjl4x5crllqra56nhi0arhw8ywfc"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXext\"")
+                    (string-append "\"" (assoc-ref inputs "libxext") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxext" ,libxext)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libx11-jll" ,julia-xorg-libx11-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXext_jll.jl")
+    (synopsis "LibXext library wrappers")
+    (description "This package provides a wrapper for the libxext library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxfixes-jll
+  (package
+    (name "julia-xorg-libxfixes-jll")
+    (version "5.0.3+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXfixes_jll.jl")
+               (commit (string-append "Xorg_libXfixes-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0sjpclxinbcq3msnaqdfqlpfhnlvl15qn7dam968i4qwrpyv43dv"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXfixes\"")
+                    (string-append "\"" (assoc-ref inputs "libxfixes") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxfixes" ,libxfixes)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libx11-jll" ,julia-xorg-libx11-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXfixes_jll.jl")
+    (synopsis "Libxfixes library wrappers")
+    (description "This package provides a wrapper for the libxfixes library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxi-jll
+  (package
+    (name "julia-xorg-libxi-jll")
+    (version "1.7.10+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXi_jll.jl")
+               (commit (string-append "Xorg_libXi-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1jhrng5sf44880x3pnw1gpb88z21c7nznfyzhs4a5z910ndrynd7"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXi\"")
+                    (string-append "\"" (assoc-ref inputs "libxi") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxi" ,libxi)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)
+       ("julia-xorg-libxfixes-jll" ,julia-xorg-libxfixes-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXi_jll.jl")
+    (synopsis "Libxi library wrappers")
+    (description "This package provides a wrapper for the libxi library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxinerama-jll
+  (package
+    (name "julia-xorg-libxinerama-jll")
+    (version "1.1.4+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXinerama_jll.jl")
+               (commit (string-append "Xorg_libXinerama-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0jybxbqxd4jc9ka3rk3v5yh8ps2fapdibldr7bymllzw1w2i25rn"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXinerama\"")
+                    (string-append "\"" (assoc-ref inputs "libxinerama") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxinerama" ,libxinerama)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXinerama_jll.jl")
+    (synopsis "Libxinerama library wrappers")
+    (description "This package provides a wrapper for the libxinerama library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxkbfile-jll
+  (package
+    (name "julia-xorg-libxkbfile-jll")
+    (version "1.1.0+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libxkbfile_jll.jl")
+               (commit (string-append "Xorg_libxkbfile-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0zrnrixz34h54n0c06ziaxcajvndydzgxxh5jbvqx1xrij5rw5gy"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libxkbfile\"")
+                    (string-append "\"" (assoc-ref inputs "libxkbfile") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxkbfile" ,libxkbfile)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libx11-jll" ,julia-xorg-libx11-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libxkbfile_jll.jl")
+    (synopsis "Libxkbfile library wrappers")
+    (description "This package provides a wrapper for the libxkbfile library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxrandr-jll
+  (package
+    (name "julia-xorg-libxrandr-jll")
+    (version "1.5.2+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXrandr_jll.jl")
+               (commit (string-append "Xorg_libXrandr-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0y4gsw5x643qdamf932agzdlyayzp63pn8j7j0lckd6dzqfdz46g"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXrandr\"")
+                    (string-append "\"" (assoc-ref inputs "libxrandr") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxrandr" ,libxrandr)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxext-jll" ,julia-xorg-libxext-jll)
+       ("julia-xorg-libxrender-jll" ,julia-xorg-libxrender-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXrandr_jll.jl")
+    (synopsis "Libxrandr library wrappers")
+    (description "This package provides a wrapper for the libxrandr library.")
+    (license license:expat)))
+
+(define-public julia-xorg-libxrender-jll
+  (package
+    (name "julia-xorg-libxrender-jll")
+    (version "0.9.10+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_libXrender_jll.jl")
+               (commit (string-append "Xorg_libXrender-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "041kjqpkgcjf72msg4zm4wja623wfsy9gmkqjvsj46lj885qizz7"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_libXrender\"")
+                    (string-append "\"" (assoc-ref inputs "libxrender") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxrender" ,libxrender)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libx11-jll" ,julia-xorg-libx11-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_libXrender_jll.jl")
+    (synopsis "libXrender library wrappers")
+    (description "This package provides a wrapper for the libXrender library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xcb-util-jll
+  (package
+    (name "julia-xorg-xcb-util-jll")
+    (version "0.4.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_jll.jl")
+               (commit (string-append "Xorg_xcb_util-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0jywbxwf9x2naqsh9hh231bqpphh15v7cdhijcspjfggwkyq1npi"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xcb_util\"")
+                    (string-append "\"" (assoc-ref inputs "xcb-util") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xcb-util" ,xcb-util)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxcb-jll" ,julia-xorg-libxcb-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_jll.jl")
+    (synopsis "Xcb-util library wrappers")
+    (description "This package provides a wrapper for the xcb-util library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xcb-util-image-jll
+  (package
+    (name "julia-xorg-xcb-util-image-jll")
+    (version "0.4.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_image_jll.jl")
+               (commit (string-append "Xorg_xcb_util_image-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1f9xx094nylg7dcfxm0qmph4xy492rd3yxa8arijqyi6rs8zrgxz"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xcb_util_image\"")
+                    (string-append "\"" (assoc-ref inputs "xcb-util-image") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xcb-util-image" ,xcb-util-image)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-xcb-util-jll" ,julia-xorg-xcb-util-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_image_jll.jl")
+    (synopsis "Xcb-util-image library wrappers")
+    (description "This package provides a wrapper for the xcb-util-image library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xcb-util-keysyms-jll
+  (package
+    (name "julia-xorg-xcb-util-keysyms-jll")
+    (version "0.4.0+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_keysyms_jll.jl")
+               (commit (string-append "Xorg_xcb_util_keysyms-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "03i3fw9p16rpjnki80w4rhmaiqvjlfsr94bf9yizndqsw1lcq42l"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xcb_util_keysyms\"")
+                    (string-append "\"" (assoc-ref inputs "xcb-util-keysyms") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-xcb-util-jll" ,julia-xorg-xcb-util-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_keysyms_jll.jl")
+    (synopsis "Xcb-util-keysyms library wrappers")
+    (description "This package provides a wrapper for the xcb-util-keysyms library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xcb-util-renderutil-jll
+  (package
+    (name "julia-xorg-xcb-util-renderutil-jll")
+    (version "0.3.9+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_renderutil_jll.jl")
+               (commit (string-append "Xorg_xcb_util_renderutil-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1zxz459sxma7cv32x2y8fnvwdz1f37fq0xhkihdsnkfdl761gn1a"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xcb_util_renderutil\"")
+                    (string-append "\"" (assoc-ref inputs "xcb-util-renderutil") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xcb-util-renderutil" ,xcb-util-renderutil)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-xcb-util-jll" ,julia-xorg-xcb-util-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_renderutil_jll.jl")
+    (synopsis "Xcb-util-renderutil library wrappers")
+    (description "This package provides a wrapper for the xcb-util-renderutil library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xcb-util-wm-jll
+  (package
+    (name "julia-xorg-xcb-util-wm-jll")
+    (version "0.4.1+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_wm_jll.jl")
+               (commit (string-append "Xorg_xcb_util_wm-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0g6jhfb3l04lrx3cm3b8wc0pp5271dpncwin5pg94nljdj4mgj53"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xcb_util_wm\"")
+                    (string-append "\"" (assoc-ref inputs "xcb-util-wm") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xcb-util-wm" ,xcb-util-wm)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-xcb-util-jll" ,julia-xorg-xcb-util-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xcb_util_wm_jll.jl")
+    (synopsis "Xcb-util-wm library wrappers")
+    (description "This package provides a wrapper for the xcb-util-wm library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xkbcomp-jll
+  (package
+    (name "julia-xorg-xkbcomp-jll")
+    (version "1.4.2+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xkbcomp_jll.jl")
+               (commit (string-append "Xorg_xkbcomp-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1rkb9525iq0jjpq8v333b728kfillgixxsim37mqdplad85l36wl"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xkbcomp\"")
+                    (string-append "\"" (assoc-ref inputs "xkbcomp") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xkbcomp" ,xkbcomp)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-libxkbfile-jll" ,julia-xorg-libxkbfile-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xkbcomp_jll.jl")
+    (synopsis "xkbcomp library wrappers")
+    (description "This package provides a wrapper for the xkbcomp library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xkeyboard-config-jll
+  (package
+    (name "julia-xorg-xkeyboard-config-jll")
+    (version "2.27.0+3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xkeyboard_config_jll.jl")
+               (commit (string-append "Xorg_xkeyboard_config-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1lgynzxd0mn64zbf0njqkd1hz1illqnl3p7hi9abwh5vbdf4pwhw"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xkeyboard_config\"")
+                    (string-append "\"" (assoc-ref inputs "xkeyboard-config") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xkeyboard-config" ,xkeyboard-config)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-xorg-xkbcomp-jll" ,julia-xorg-xkbcomp-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xkeyboard_config_jll.jl")
+    (synopsis "Xkeyboard-config library wrappers")
+    (description "This package provides a wrapper for the xkeyboard-config library.")
+    (license license:expat)))
+
+(define-public julia-xorg-xtrans-jll
+  (package
+    (name "julia-xorg-xtrans-jll")
+    (version "1.4.0+2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Xorg_xtrans_jll.jl")
+               (commit (string-append "Xorg_xtrans-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "16rzkgc7l1j57l43v5ffrak164bdff7h1amm0y3mcnwjqmkig9dn"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("artifact\"Xorg_xtrans\"")
+                    (string-append "\"" (assoc-ref inputs "xtrans") "\""))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("xtrans" ,xtrans)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Xorg_xtrans_jll.jl")
+    (synopsis "xtrans library wrappers")
+    (description "This package provides a wrapper for the xtrans library.")
+    (license license:expat)))
+
+(define-public julia-xslt-jll
+  (package
+    (name "julia-xslt-jll")
+    (version "1.1.34+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/XSLT_jll.jl")
+               (commit (string-append "XSLT-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0wjkfnrgpd7c6i4ga5xzsqqmfrxcdkr1kjsxmd9bff8cqvyknnhq"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                  (("generate_wrapper_header.*")
+                   (string-append
+                     "generate_wrapper_header(\"XSLT\", \""
+                     (assoc-ref inputs "libxslt") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("libxslt" ,libxslt)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)
+       ("julia-libgcrypt-jll" ,julia-libgcrypt-jll)
+       ("julia-libgpg-error-jll" ,julia-libgpg-error-jll)
+       ("julia-libiconv-jll" ,julia-libiconv-jll)
+       ("julia-xml2-jll" ,julia-xml2-jll)
+       ("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/JuliaBinaryWrappers/XSLT_jll.jl")
+    (synopsis "Xslt library wrappers")
+    (description "This package provides a wrapper for the libxslt library.")
+    (license license:expat)))
+
+(define-public julia-zlib-jll
+  (package
+    (name "julia-zlib-jll")
+    (version "1.2.12+1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl")
+               (commit (string-append "Zlib-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "05ih0haqapkzr40swvq63cafnqlc4yp6yfa1wvdyq8v3n4kxhfqa"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Zlib\", \""
+                      (assoc-ref inputs "zlib") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl")
+    (synopsis "Zlib library wrappers")
+    (description "This package provides a wrapper for Zlib.")
+    (license license:expat)))
+
+(define-public julia-zstd-jll
+  (package
+    (name "julia-zstd-jll")
+    (version "1.5.0+0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaBinaryWrappers/Zstd_jll.jl")
+               (commit (string-append "Zstd-v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "15g5wsvga4p9bjmx97xqwqdnfzfbwfl6c4a9iaphcncwgcrnw6y6"))))
+    (build-system julia-build-system)
+    (arguments
+     '(#:tests? #f  ; no runtests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'override-binary-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (map
+               (lambda (wrapper)
+                 (substitute* wrapper
+                   (("generate_wrapper_header.*")
+                    (string-append
+                      "generate_wrapper_header(\"Zstd\", \""
+                      (assoc-ref inputs "zstd:lib") "\")\n"))))
+               ;; There's a Julia file for each platform, override them all
+               (find-files "src/wrappers/" "\\.jl$")))))))
+    (inputs
+     `(("zstd:lib" ,zstd "lib")))
+    (propagated-inputs
+     `(("julia-jllwrappers" ,julia-jllwrappers)))
+    (home-page "https://github.com/JuliaBinaryWrappers/Zstd_jll.jl")
+    (synopsis "Zstd library wrappers")
+    (description "This package provides a wrapper for the zstd library.")
+    (license license:expat)))
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 38a82c7de2..816ca9c85b 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -23,13 +23,8 @@
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix build-system julia)
-  #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages tls)
-  #:use-module (gnu packages web))
+  #:use-module (gnu packages julia-jll))
 
 (define-public julia-abstractffts
   (package
@@ -121,6 +116,30 @@ be GPU compatible without throwing away the wrapper.")
 provides functions to run a few automatable checks for Julia packages.")
     (license license:expat)))
 
+(define-public julia-arraylayouts
+  (package
+    (name "julia-arraylayouts")
+    (version "0.7.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaMatrices/ArrayLayouts.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "01725v4jp8h8zwn85splw907r206h1hnp205pchmzjin7h4659xz"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-fillarrays" ,julia-fillarrays)))
+    (home-page "https://github.com/JuliaMatrices/ArrayLayouts.jl")
+    (synopsis "Array layouts and general fast linear algebra")
+    (description "This package implements a trait-based framework for describing
+array layouts such as column major, row major, etc. that can be dispatched to
+appropriate BLAS or optimised Julia linear algebra routines.  This supports a
+much wider class of matrix types than Julia's in-built @code{StridedArray}.")
+    (license license:expat)))
+
 (define-public julia-benchmarktools
   (package
     (name "julia-benchmarktools")
@@ -309,6 +328,31 @@ between colors, simulating color blindness, parsing colors, and generating
 color scales for graphics.")
     (license license:expat)))
 
+(define-public julia-colorschemes
+  (package
+    (name "julia-colorschemes")
+    (version "3.12.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaGraphics/ColorSchemes.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "08k39hbdf3jn0001f7qxa99xvagrnh9764911hs6cmxkvp061sa4"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-colors" ,julia-colors)
+       ("julia-colortypes" ,julia-colortypes)
+       ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
+       ("julia-staticarrays" ,julia-staticarrays)))
+    (home-page "https://github.com/JuliaGraphics/ColorSchemes.jl")
+    (synopsis "Colorschemes, colormaps, gradients, and palettes")
+    (description "This package provides a collection of colorschemes.")
+    (license license:expat)))
+
 (define-public julia-colortypes
   (package
     (name "julia-colortypes")
@@ -379,50 +423,6 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
 way.")
     (license license:expat)))
 
-;;; TODO: Remove this autogenerated source package
-;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
-(define-public julia-compilersupportlibraries-jll
-  (package
-    (name "julia-compilersupportlibraries-jll")
-    (version "0.4.0+1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
-             (commit (string-append "CompilerSupportLibraries-v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "03j6xdvps259mhdzpjqf41l65w2l9sahvxg4wrp34hcf69wkrzpy"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f                      ; no runtests.jl
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-              (lambda (wrapper)
-                (substitute* wrapper
-                  (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"CompilerSupportLibraries\", \""
-                    (assoc-ref inputs "gfortran:lib") "\")\n"))))
-              ;; There's a Julia file for each platform, override them all
-              (find-files "src/wrappers/" "\\.jl$"))
-             #t)))))
-    (inputs                             ;required by artifacts
-     `(("gfortran:lib" ,gfortran "lib")))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
-    (synopsis "Internal wrappers")
-    (description "This package provides compiler support for libraries.  It is
-an autogenerated source package constructed using @code{BinaryBuilder.jl}. The
-originating @code{build_tarballs.jl} script can be found on the community
-build tree Yggdrasil.")
-    (license license:expat)))
-
 (define-public julia-constructionbase
   (package
     (name "julia-constructionbase")
@@ -465,6 +465,29 @@ both the 256 color and 24 bit true color extensions, and the different text
 styles available to terminals.")
     (license license:expat)))
 
+(define-public julia-dataapi
+  (package
+    (name "julia-dataapi")
+    (version "1.6.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/DataAPI.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "14sfvkz169zcbap3gdwpj16qsap783h86fd07flfxk822abam11w"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaData/DataAPI.jl")
+    (synopsis "Data-focused namespace for packages to share functions")
+    (description "This package provides a namespace for data-related generic
+function definitions to solve the optional dependency problem; packages wishing
+to share and/or extend functions can avoid depending directly on each other by
+moving the function definition to DataAPI.jl and each package taking a
+dependency on it.")
+    (license license:expat)))
+
 (define-public julia-datastructures
   (package
     (name "julia-datastructures")
@@ -489,6 +512,82 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
 @code{Accumulators}, @code{LinkedLists}, @code{SortedDicts} and many others.")
     (license license:expat)))
 
+(define-public julia-datavalueinterfaces
+  (package
+    (name "julia-datavalueinterfaces")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/queryverse/DataValueInterfaces.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0g2wj6q7jj956nx6g7dk8x7w1c4l2xcmnr1kq5x8s8fild9kslg8"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/queryverse/DataValueInterfaces.jl")
+    (synopsis "Interface for DataValues.jl")
+    (description "This package allows a few \"forward\" definitions for the
+@code{DataValues.jl} package that other packages can utilize for integration
+without having to take direct dependencies.")
+    (license license:expat)))
+
+(define-public julia-datavalues
+  (package
+    (name "julia-datavalues")
+    (version "0.4.13")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/queryverse/DataValues.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "15j3hrqq6nazn533bfsvg32xznacbzsl303j1qs48av59ppnvhhv"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-known-failing-tests
+           (lambda _
+             ;; See upstream report:
+             ;; https://github.com/queryverse/DataValues.jl/issues/83
+             (substitute* "test/array/test_reduce.jl"
+               ((".*DataValue\\(mapreduce.*") "")
+               ((".*DataValue\\(method\\(f.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("julia-datavalueinterfaces" ,julia-datavalueinterfaces)))
+    (home-page "https://github.com/queryverse/DataValues.jl")
+    (synopsis "Missing values for Julia")
+    (description "This package provides the type @code{DataValue} that is used
+to represent missing data.")
+    (license license:expat)))
+
+(define-public julia-dictionaries
+  (package
+    (name "julia-dictionaries")
+    (version "0.3.8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/andyferris/Dictionaries.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1j88f6qa5hqm64n5q3jy08a02gwp7by401s03n5x7575p58iqqh2"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-indexing" ,julia-indexing)))
+    (home-page "https://github.com/andyferris/Dictionaries.jl")
+    (synopsis "Alternative interface for dictionaries in Julia")
+    (description "This package provides an alternative interface for
+dictionaries in Julia, for improved productivity and performance.")
+    (license license:expat)))
+
 (define-public julia-docstringextensions
   (package
     (name "julia-docstringextensions")
@@ -599,6 +698,51 @@ stressing the robustness of differentiation tools.")
       (description "This package provides various examples.")
       (license license:expat))))
 
+(define-public julia-exprtools
+  (package
+    (name "julia-exprtools")
+    (version "0.1.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/invenia/ExprTools.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1lwxi9fx9farf1jdv42gv43xs3f3i3js2xnvr5gf6d0xfx0g6b6a"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/invenia/ExprTools.jl")
+    (synopsis "Light-weight expression manipulation tools")
+    (description "@code{ExprTools} provides tooling for working with Julia
+expressions during metaprogramming.  This package aims to provide light-weight
+performant tooling without requiring additional package dependencies.")
+    (license license:expat)))
+
+(define-public julia-ffmpeg
+  (package
+    (name "julia-ffmpeg")
+    (version "0.4.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaIO/FFMPEG.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1kwqixwhnnxs59xsw2k44xxnkx5fn4y49g58l5snfbszycxq7lls"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-ffmpeg-jll" ,julia-ffmpeg-jll)
+       ("julia-x264-jll" ,julia-x264-jll)))
+    (home-page "https://github.com/JuliaIO/FFMPEG.jl")
+    (synopsis "Julia Package for ffmpeg")
+    (description "This package is made to be included into packages that just
+need the ffmpeg binaries + executables, and don't want the overhead of
+@code{VideoIO.jl}.")
+    (license license:expat)))
+
 (define-public julia-fillarrays
   (package
     (name "julia-fillarrays")
@@ -684,6 +828,26 @@ scaled by a constant factor.  Consequently, they have a fixed number of
 digits (bits) after the decimal (radix) point.")
     (license license:expat)))
 
+(define-public julia-formatting
+  (package
+    (name "julia-formatting")
+    (version "0.4.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaIO/Formatting.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ma3q9my51rr38bb5712xkc4h3rq0wsfjb4ac6mdh9ywn8rqvrmh"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaIO/Formatting.jl")
+    (synopsis "Julia package to provide Python-like formatting support")
+    (description "This package offers Python-style general formatting and
+c-style numerical formatting.")
+    (license license:expat)))
+
 (define-public julia-forwarddiff
   (package
     (name "julia-forwarddiff")
@@ -716,6 +880,49 @@ functions (or any callable object, really) using forward mode automatic
 differentiation (AD).")
     (license license:expat)))
 
+(define-public julia-fuzzycompletions
+  (package
+    (name "julia-fuzzycompletions")
+    (version "0.4.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JunoLab/FuzzyCompletions.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "07sv88c472n6w4x7diy952igbcfm1s104ysnnvprld83312siw06"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JunoLab/FuzzyCompletions.jl")
+    (synopsis "Fuzzy completion provider for Julia")
+    (description
+     "FuzzyCompletions provides fuzzy completions for a Julia runtime session.")
+    (license license:expat)))
+
+(define-public julia-graphics
+  (package
+    (name "julia-graphics")
+    (version "1.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaGraphics/Graphics.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "10h1s09v7qkvrjr6l678zamb1p248n8jv4rrwkf8g7d2bpfz9amn"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-colors" ,julia-colors)
+       ("julia-nanmath" ,julia-nanmath)))
+    (home-page "https://github.com/JuliaGraphics/Graphics.jl")
+    (synopsis "Base graphics in Julia")
+    (description "@code{Graphics.jl} is an abstraction layer for graphical
+operations in Julia.")
+    (license license:expat)))
+
 (define-public julia-gumbo
   (package
     (name "julia-gumbo")
@@ -739,45 +946,6 @@ differentiation (AD).")
 library for parsing HTML.")
     (license license:expat)))
 
-(define-public julia-gumbo-jll
-  (package
-    (name "julia-gumbo-jll")
-    (version "0.10.1+1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaBinaryWrappers/Gumbo_jll.jl")
-             (commit (string-append "Gumbo-v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "00a182x5hfpjzyvrxdn8wh4h67q899p5dzqp19a5s22si4g41k76"))))
-    (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gumbo (string-append (assoc-ref inputs "gumbo-parser"))))
-               (for-each
-                (lambda (wrapper)
-                  (substitute* wrapper
-                    (("(const libgumbo = )\"(.*)\"" all const libname)
-                     (string-append const "\"" gumbo "/lib/" libname "\"\n"))
-                    (("(global artifact_dir =).*" all m)
-                     (string-append m " \"" gumbo "\""))))
-                ;; There's a Julia file for each platform, override them all
-                (find-files "src/wrappers/" "\\.jl$"))))))))
-    (inputs
-     `(("gumbo-parser" ,gumbo-parser)))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/Gumbo_jll.jl")
-    (synopsis "Gumbo HTML parsing library wrappers")
-    (description "This package provides a wrapper for Gumbo HTML parsing library.")
-    (license license:expat)))
-
 (define-public julia-http
   (package
     (name "julia-http")
@@ -856,47 +1024,52 @@ implementing both a client and a server.")
 conditional ifelse.  It is similar to @code{Core.ifelse} but it is extendable.")
     (license license:expat)))
 
-(define-public julia-imagemagick-jll
+(define-public julia-indexing
   (package
-    (name "julia-imagemagick-jll")
-    (version "6.9.10-12+3")
+    (name "julia-indexing")
+    (version "1.1.1")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/ImageMagick_jll.jl")
-               (commit (string-append "ImageMagick-v" version))))
+               (url "https://github.com/andyferris/Indexing.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "1a0vnnjl52yqi7jgpr0dmx5ah5nlpylv5hc8aw2l89b9f36ff8jg"))))
+         (base32 "1s7bz5aaj9sx753pcaixq83jgbk33adxgybpinjgzb9lzdv1ddgx"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   ;; Make sure we match the current library.
-                   (("libMagickWand-6.Q16.so.6") "libMagickWand-6.Q16.so.7")
-                   (("artifact\"ImageMagick\"")
-                    (string-append "\"" (assoc-ref inputs "imagemagick") "\""))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)
-       ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
-       ("julia-libpng-jll" ,julia-libpng-jll)
-       ("julia-libtiff-jll" ,julia-libtiff-jll)
-       ("julia-zlib-jll" ,julia-zlib-jll)))
-    (inputs
-     `(("imagemagick" ,imagemagick)))
-    (home-page "https://github.com/JuliaBinaryWrappers/ImageMagick_jll.jl")
-    (synopsis "Imagemagick library wrappers")
-    (description "This package provides a wrapper for Imagemagick.")
+    (home-page "https://github.com/andyferris/Indexing.jl")
+    (synopsis "Generalized indexing for Julia")
+    (description "This package defines functions for getting multiple indices
+out of dictionaries, tuples, etc, extending this ability beyond
+@code{AbstractArray}.")
+    (license license:expat)))
+
+(define-public julia-indirectarrays
+  (package
+    (name "julia-indirectarrays")
+    (version "0.5.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaArrays/IndirectArrays.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0l0jq0jnr9z3k431ni82xycq7mqapgxrbrx4yyk6lycvi41ipm4s"))))
+    (build-system julia-build-system)
+    (native-inputs
+     `(("julia-colors" ,julia-colors)
+       ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
+       ("julia-mappedarrays" ,julia-mappedarrays)))
+    (home-page "https://github.com/JuliaArrays/IndirectArrays.jl")
+    (synopsis "Julia implementation of indexed arrays")
+    (description "An @code{IndirectArray} is one that encodes data using a
+combination of an @code{index} and a @code{value} table.  Each element is
+assigned its own index, which is used to retrieve the value from the
+@code{value} table.  Among other uses, @code{IndirectArrays} can represent
+indexed images, sometimes called \"colormap images\" or \"paletted images.\"")
     (license license:expat)))
 
 (define-public julia-inifile
@@ -919,6 +1092,29 @@ conditional ifelse.  It is similar to @code{Core.ifelse} but it is extendable.")
 interfaces with @file{.ini} files.")
     (license license:expat)))
 
+(define-public julia-invertedindices
+  (package
+    (name "julia-invertedindices")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/mbauman/InvertedIndices.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1179z20yxnkyziip7gn26wr1g3k3ssl1ci7pig3khc900f62di46"))))
+    (build-system julia-build-system)
+    (native-inputs
+     `(("julia-offsetarrays" ,julia-offsetarrays)))
+    (home-page "https://github.com/mbauman/InvertedIndices.jl")
+    (synopsis "Index type that allows for inverted selections")
+    (description "This package just exports one type: the @code{InvertedIndex},
+or @code{Not} for short.  It can wrap any supported index type and may be used
+as an index into any @code{AbstractArray} subtype, including OffsetArrays.")
+    (license license:expat)))
+
 (define-public julia-iocapture
   (package
     (name "julia-iocapture")
@@ -966,84 +1162,24 @@ external IRs.  It can be used with Julia metaprogramming tools such as
 Cassette.")
     (license license:expat)))
 
-(define-public julia-jllwrappers
-  (package
-    (name "julia-jllwrappers")
-    (version "1.3.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaPackaging/JLLWrappers.jl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0v7xhsv9z16d657yp47vgc86ggc01i1wigqh3n0d7i1s84z7xa0h"))))
-    (arguments
-     ;; Wants to download stuff
-     '(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'custom-override-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Make @generate_wrapper_header take an optional argument that
-             ;; guix packagers can pass to override the default "override"
-             ;; binary path.  This won't be needed when something like
-             ;; https://github.com/JuliaPackaging/JLLWrappers.jl/pull/27
-             ;; will be merged.
-             (substitute* "src/wrapper_generators.jl"
-               (("generate_wrapper_header.*")
-                "generate_wrapper_header(src_name, override_path = nothing)\n")
-               (("pkg_dir = .*" all)
-                (string-append
-                 all "\n" "override = something(override_path,"
-                 "joinpath(dirname(pkg_dir), \"override\"))\n"))
-               (("@static if isdir.*") "@static if isdir($override)\n")
-               (("return joinpath.*") "return $override\n"))
-             #t)))))
-    (build-system julia-build-system)
-    (home-page "https://github.com/JuliaPackaging/JLLWrappers.jl")
-    (synopsis "Julia macros used by JLL packages")
-    (description "This package contains Julia macros that enable JLL packages
-to generate themselves.  It is not intended to be used by users, but rather is
-used in autogenerated packages via @code{BinaryBuilder.jl}.")
-    (license license:expat)))
-
-(define-public julia-jpegturbo-jll
+(define-public julia-iteratorinterfaceextensions
   (package
-    (name "julia-jpegturbo-jll")
-    (version "2.0.1+2")
+    (name "julia-iteratorinterfaceextensions")
+    (version "1.0.0")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/JpegTurbo_jll.jl")
-               (commit (string-append "JpegTurbo-v" version))))
+               (url "https://github.com/queryverse/IteratorInterfaceExtensions.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "1xp1x0hrj337bgwwffwpyq7xg031j2a38fim29lixqa0a0y80x6y"))))
+         (base32 "1slpay1dhja8f9gy6z7b3psgvgcknn963dvfqqakvg1grk9ppa09"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f  ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("artifact\"JpegTurbo\"")
-                    (string-append "\"" (assoc-ref inputs "libjpeg-turbo") "\""))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     `(("libjpeg-turbo" ,libjpeg-turbo)))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/JpegTurbo_jll.jl")
-    (synopsis "Libjpeg-turbo library wrappers")
-    (description "This package provides a wrapper for the libjpeg-turbo library.")
+    (home-page "https://github.com/queryverse/IteratorInterfaceExtensions.jl")
+    (synopsis "Traits for Julia iterators")
+    (description "IteratorInterfaceExtensions defines a small number of
+extensions to the iterator interface.")
     (license license:expat)))
 
 (define-public julia-json
@@ -1071,103 +1207,90 @@ used in autogenerated packages via @code{BinaryBuilder.jl}.")
 and printing JSON documents.")
     (license license:expat)))
 
-(define-public julia-libpng-jll
+(define-public julia-macrotools
   (package
-    (name "julia-libpng-jll")
-    (version "1.6.37+5")
+    (name "julia-macrotools")
+    (version "0.5.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/FluxML/MacroTools.jl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0k4z2hyasd9cwxf4l61zk3w4ajs44k69wx6z1ghdn8f5p8xy217f"))))
+    (build-system julia-build-system)
+    (home-page "https://fluxml.ai/MacroTools.jl")
+    (synopsis "Tools for working with Julia code and expressions")
+    (description "This library provides tools for working with Julia code and
+expressions.  This includes a template-matching system and code-walking tools
+that let you do deep transformations of code.")
+    (license license:expat)))
+
+(define-public julia-mappedarrays
+  (package
+    (name "julia-mappedarrays")
+    (version "0.4.0")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/LibPNG_jll.jl")
-               (commit (string-append "libpng-v" version))))
+               (url "https://github.com/JuliaArrays/MappedArrays.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "10azxv26j8r193dg9i9x7ajm3frhwbhj8zzi40fj59fxm81xz6dx"))))
+         (base32 "0l5adird8m1cmnsxwhzi5hcr7q9bm1rf7a6018zc7kcn2yxdshy3"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f  ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("artifact\"libpng\"")
-                    (string-append "\"" (assoc-ref inputs "libpng") "\""))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     `(("libpng" ,libpng)))
     (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)
-       ("julia-zlib-jll" ,julia-zlib-jll)))
-    (home-page "https://github.com/JuliaBinaryWrappers/LibPNG_jll.jl")
-    (synopsis "Libpng library wrappers")
-    (description "This package provides a wrapper for the libpng library.")
+     `(("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
+    (native-inputs
+     `(("julia-colortypes" ,julia-colortypes)
+       ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
+       ("julia-offsetarrays" ,julia-offsetarrays)))
+    (home-page "https://github.com/JuliaArrays/MappedArrays.jl")
+    (synopsis "Lazy in-place transformations of arrays")
+    (description "This package implements \"lazy\" in-place elementwise
+transformations of arrays for the Julia programming language.  Explicitly, it
+provides a \"view\" M of an array A so that @code{M[i] = f(A[i])} for a
+specified (but arbitrary) function f, without ever having to compute M
+explicitly (in the sense of allocating storage for M).  The name of the package
+comes from the fact that @code{M == map(f, A)}.")
     (license license:expat)))
 
-(define-public julia-libtiff-jll
+(define-public julia-matrixfactorizations
   (package
-    (name "julia-libtiff-jll")
-    (version "4.1.0+1")
+    (name "julia-matrixfactorizations")
+    (version "0.8.3")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/Libtiff_jll.jl")
-               (commit (string-append "Libtiff-v" version))))
+               (url "https://github.com/JuliaMatrices/MatrixFactorizations.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "07zzhmwmh2g4645ghv76z40hza2ghlb7sw15b1pii7f9kfcsgf45"))))
+         (base32 "14c6w1vhyf4pi4454pdp6ryczsxn9pgjg99fg9bkdj03xg5fsxb8"))))
     (build-system julia-build-system)
     (arguments
-     '(#:tests? #f  ; no runtests
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("artifact\"Libtiff\"")
-                    (string-append "\"" (assoc-ref inputs "libtiff") "\""))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     `(("libtiff" ,libtiff)))
+         (add-after 'unpack 'skip-failing-test
+           (lambda _
+             ;; Tests with math functions are hard.
+             (substitute* "test/test_ul.jl"
+               (("@test @inferred\\(logdet") "@test @test_nowarn(logdet")
+               ;; Also skip the REPL test.
+               (("test String") "test_nowarn String"))
+             #t)))))
     (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)
-       ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
-       ("julia-zlib-jll" ,julia-zlib-jll)
-       ("julia-zstd-jll" ,julia-zstd-jll)))
-    (home-page "https://github.com/JuliaBinaryWrappers/Libtiff_jll.jl")
-    (synopsis "Libtiff library wrappers")
-    (description "This package provides a wrapper for libtiff")
-    (license license:expat)))
-
-(define-public julia-macrotools
-  (package
-    (name "julia-macrotools")
-    (version "0.5.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/FluxML/MacroTools.jl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0k4z2hyasd9cwxf4l61zk3w4ajs44k69wx6z1ghdn8f5p8xy217f"))))
-    (build-system julia-build-system)
-    (home-page "https://fluxml.ai/MacroTools.jl")
-    (synopsis "Tools for working with Julia code and expressions")
-    (description "This library provides tools for working with Julia code and
-expressions.  This includes a template-matching system and code-walking tools
-that let you do deep transformations of code.")
+     `(("julia-arraylayouts" ,julia-arraylayouts)))
+    (home-page "https://github.com/JuliaMatrices/MatrixFactorizations.jl")
+    (synopsis "Julia package to contain non-standard matrix factorizations")
+    (description "A Julia package to contain non-standard matrix factorizations.
+At the moment it implements the QL, RQ, and UL factorizations, a combined
+Cholesky factorization with inverse, and polar decompositions.  In the future it
+may include other factorizations such as the LQ factorization.")
     (license license:expat)))
 
 (define-public julia-mbedtls
@@ -1200,44 +1323,70 @@ that let you do deep transformations of code.")
 TLS} and cryptography C library for Julia.")
     (license license:expat)))
 
-(define-public julia-mbedtls-jll
+(define-public julia-measures
   (package
-    (name "julia-mbedtls-jll")
-    ;; version 2.25.0+0 is not compatible with current mbedtls 2.23.0,
-    ;; upgrade this when mbedtls is updated in guix
-    (version "2.24.0+1")
+    (name "julia-measures")
+    (version "0.3.1")
     (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl")
-             (commit (string-append "MbedTLS-v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0kk9dlxdh7yms21npgrdfmjbj8q8ng6kdhrzw3jr2d7rp696kp99"))))
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaGraphics/Measures.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0j34psrdijnqqn9zv0r2sknr1p9q0mmbjvjhmjra37bb5fh2gk8l"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f                      ; No runtests.jl
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-              (lambda (wrapper)
-                (substitute* wrapper
-                  (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"MbedTLS\", \""
-                    (assoc-ref inputs "mbedtls-apache") "\")\n"))))
-              ;; There's a Julia file for each platform, override them all
-              (find-files "src/wrappers/" "\\.jl$"))
-             #t)))))
-    (inputs `(("mbedtls-apache" ,mbedtls-apache)))
-    (propagated-inputs `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl")
-    (synopsis "Apache's mbed TLS binary wrappers")
-    (description "This Julia module provides @code{mbed TLS} libraries and
-wrappers.")
+    (home-page "https://github.com/JuliaGraphics/Measures.jl")
+    (synopsis "Unified measure and coordinates types")
+    (description "This library generalizes and unifies the notion of measures
+used in Compose, Compose3D, and Escher.  It allows building up and representing
+expressions involving differing types of units that are then evaluated,
+resolving them into absolute units.")
+    (license license:expat)))
+
+(define-public julia-missings
+  (package
+    (name "julia-missings")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/Missings.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "131ma44yvswvj85jdjhm37frzfz46cc60lwj65a9jcmgc77dshsm"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-dataapi" ,julia-dataapi)))
+    (home-page "https://github.com/JuliaData/Missings.jl")
+    (synopsis "Additional missing value support for Julia")
+    (description "This package provides additional functionality for working
+with @code{missing} values in Julia.")
+    (license license:expat)))
+
+(define-public julia-mocking
+  (package
+    (name "julia-mocking")
+    (version "0.7.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/invenia/Mocking.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "10jz716v6i3gpd403rmcrip6cncjl9lqr12cdl321x1994a5g8ck"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-exprtools" ,julia-exprtools)))
+    (home-page "https://github.com/invenia/Mocking.jl")
+    (synopsis "Overload Julia function calls")
+    (description "The purpose of this package is to allow Julia function calls
+to be temporarily overloaded for the purpose of testing.")
     (license license:expat)))
 
 (define-public julia-msgpack
@@ -1280,6 +1429,28 @@ Julia, with type-driven, overloadable packing/unpacking functionality.")
 @code{NaN} instead of throwing a @code{DomainError}.")
     (license license:expat)))
 
+(define-public julia-optimtestproblems
+  (package
+    (name "julia-optimtestproblems")
+    (version "2.0.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaNLSolvers/OptimTestProblems.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "10h47x5ws42pkqjccimaz0yxfvz41w0yazq6inamfk4lg5g2g3d9"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:julia-package-name "OptimTestProblems"))
+    (home-page "https://github.com/JuliaNLSolvers/OptimTestProblems.jl")
+    (synopsis "Collection of optimization test problems")
+    (description "The purpose of this package is to provide test problems for
+JuliaNLSolvers packages.")
+    (license license:expat)))
+
 (define-public julia-orderedcollections
   (package
     (name "julia-orderedcollections")
@@ -1327,52 +1498,6 @@ have arbitrary indices, similar to those found in some other programming
 languages like Fortran.")
     (license license:expat)))
 
-;;; TODO: Remove this autogenerated source package
-;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
-(define-public julia-openspecfun-jll
-(let ((commit "6c505cce3bdcd9cd2b15b4f9362ec3a42c4da71c"))
-  (package
-    (name "julia-openspecfun-jll")
-    (version "0.5.3+4")                 ;tag not created upstream
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
-             (commit commit)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0bl2gcgndsbiwhwy8fl070cjm1fyf9kxj6gkikgirmzgjl29iakn"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f                      ; no runtests.jl
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-              (lambda (wrapper)
-                (substitute* wrapper
-                  (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"OpenSpecFun\", \""
-                    (assoc-ref inputs "openspecfun") "\")\n"))))
-              ;; There's a Julia file for each platform, override them all
-              (find-files "src/wrappers/" "\\.jl$"))
-             #t)))))
-    (inputs
-     `(("openspecfun" ,openspecfun)))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)
-       ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)))
-    (home-page "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
-    (synopsis "Internal wrappers")
-    (description "This package provides a wrapper for OpenSpecFun.  It is an
-autogenerated source package constructed using @code{BinaryBuilder.jl}. The
-originating @code{build_tarballs.jl} script can be found on the community
-build tree Yggdrasil.")
-    (license license:expat))))
-
 (define-public julia-parameters
   (package
     (name "julia-parameters")
@@ -1442,6 +1567,193 @@ algorithms, while ensuring that the most efficient implementation is used in
 actual computation.")
     (license license:expat)))
 
+(define-public julia-plotthemes
+  (package
+    (name "julia-plotthemes")
+    (version "2.0.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaPlots/PlotThemes.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1fd27w9z1vhz0d1bzrs5vcavpb5r5jviyh27d9c4ka37phz4xvmh"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-plotutils" ,julia-plotutils)
+       ("julia-requires" ,julia-requires)))
+    (home-page "https://github.com/JuliaPlots/PlotThemes.jl")
+    (synopsis "Themes for the Julia plotting package Plots.jl")
+    (description
+     "PlotThemes is a package to spice up the plots made with @code{Plots.jl}.")
+    (license license:expat)))
+
+(define-public julia-plotutils
+  (package
+    (name "julia-plotutils")
+    (version "1.0.10")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaPlots/PlotUtils.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1jimdkp590g7s33w7i431nn7mp1phjy9gdjs88zyqsmq5hxldacg"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-colors" ,julia-colors)
+       ("julia-colorschemes" ,julia-colorschemes)
+       ("julia-reexport" ,julia-reexport)))
+    (native-inputs
+     `(("julia-stablerngs" ,julia-stablerngs)))
+    (home-page "https://github.com/JuliaPlots/PlotUtils.jl")
+    (synopsis "Helper algorithms for building plotting components")
+    (description "This package contains generic helper algorithms for building
+plotting components.")
+    (license license:expat)))
+
+(define-public julia-pooledarrays
+  (package
+    (name "julia-pooledarrays")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/PooledArrays.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ihvhzkxdw4qf0i6sbrickhdcwkmlin9zyixxn9xvgzm8nc0iwqy"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-dataapi" ,julia-dataapi)))
+    (home-page "https://github.com/JuliaData/PooledArrays.jl")
+    (synopsis "Pooled representation of arrays in Julia")
+    (description "This package provides a pooled representation of arrays for
+purposes of compression when there are few unique elements.")
+    (license license:expat)))
+
+(define-public julia-prettytables
+  (package
+    (name "julia-prettytables")
+    (version "1.0.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/ronisbr/PrettyTables.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1d1sd87kkwbar3l608h0adzws42cwdrmp1idxx7an6mfqcsdrijw"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-color-tests
+           (lambda _
+             (substitute* "test/text_backend.jl"
+               ((".*colors\\.jl.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("julia-crayons" ,julia-crayons)
+       ("julia-formatting" ,julia-formatting)
+       ("julia-reexport" ,julia-reexport)
+       ("julia-tables" ,julia-tables)))
+    (home-page "https://github.com/ronisbr/PrettyTables.jl")
+    (synopsis "Print data in formatted tables")
+    (description "This package has the purpose to print data in matrices in a
+human-readable format.")
+    (license license:expat)))
+
+(define-public julia-quadmath
+  (package
+    (name "julia-quadmath")
+    (version "0.5.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaMath/Quadmath.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "051biw4b9zni7cmh2f1yzifp1v8wazlfxrdz4p44lyd1wba6379w"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'hardcode-libmath-location
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gcclib (assoc-ref inputs "gcc:lib")))
+               (substitute* "src/Quadmath.jl"
+                 (("libgcc_s.so.1" lib) (string-append gcclib "/lib/" lib))
+                 (("libquadmath.so.0" lib) (string-append gcclib "/lib/" lib)))
+               #t))))))
+    (propagated-inputs
+     `(("julia-requires" ,julia-requires)))
+    (inputs
+     `(("gcc:lib" ,gcc "lib")))
+    (native-inputs
+     `(("julia-specialfunctions" ,julia-specialfunctions)))
+    (home-page "https://github.com/JuliaMath/Quadmath.jl")
+    (synopsis "Float128 and libquadmath for the Julia language")
+    (description "This is a Julia interface to @code{libquadmath}, providing a
+@code{Float128} type corresponding to the IEEE754 binary128 floating point
+format.")
+    (license license:expat)))
+
+(define-public julia-queryoperators
+  (package
+    (name "julia-queryoperators")
+    (version "0.9.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/queryverse/QueryOperators.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "06zm4cbn3x49lbpgshhdfvvmgz066qkc8q0d57igm5p8bcp6js22"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-datastructures" ,julia-datastructures)
+       ("julia-iteratorinterfaceextensions" ,julia-iteratorinterfaceextensions)
+       ("julia-tableshowutils" ,julia-tableshowutils)))
+    (home-page "https://github.com/queryverse/QueryOperators.jl")
+    (synopsis "Query operators for Julia")
+    (description "This package contains the underlying query operators that are
+exposed to users in @code{Query.jl}.")
+    (license license:expat)))
+
+(define-public julia-rangearrays
+  (package
+    (name "julia-rangearrays")
+    (version "0.3.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaArrays/RangeArrays.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1ihzfyfq1xihkjcvn7xmzfbn6igzidb4fkzdcxwfr5qkvi52gnmg"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaArrays/RangeArrays.jl")
+    (synopsis "Array data structures with autogenerated columns")
+    (description "The goal of RangeArrays is to provide efficient and convenient
+array data structures where the columns of the arrays are generated (on the fly)
+by Ranges.")
+    (license license:expat)))
+
 (define-public julia-recipesbase
   (package
     (name "julia-recipesbase")
@@ -1565,6 +1877,34 @@ other power series in @code{h}.")
 a loadable module.")
       (license license:expat))))
 
+(define-public julia-scratch
+  (package
+    (name "julia-scratch")
+    (version "1.0.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaPackaging/Scratch.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "06n0rc7grlg9igkdlrql83q0zpc97bh2hfzj5mw4spfik8ahw2aa"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:tests? #f))    ; Test suite tries to access the Julia package registry.
+    (home-page "https://github.com/JuliaPackaging/Scratch.jl")
+    (synopsis "Scratch spaces for all your persistent mutable data needs")
+    (description "This repository implements the scratch spaces API for
+package-specific mutable containers of data.  These spaces can contain datasets,
+text, binaries, or any other kind of data that would be convenient to store in
+a location specific to your package.  As compared to Artifacts, these containers
+of data are mutable.  Because the scratch space location on disk is not very
+user-friendly, scratch spaces should, in general, not be used for a storing
+files that the user must interact with through a file browser.")
+    (license license:expat)))
+
 (define-public julia-sortingalgorithms
   (package
     (name "julia-sortingalgorithms")
@@ -1621,6 +1961,32 @@ cosine) integrals, eta, zeta, digamma, inverse digamma, trigamma, and
 polygamma functions.")
     (license license:expat)))
 
+(define-public julia-splitapplycombine
+  (package
+    (name "julia-splitapplycombine")
+    (version "1.1.4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/SplitApplyCombine.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1qzaqvk57b0s5krzn8bxkzmr5kz6hi9dm3jbf2sl7z4vznsgbn9x"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-dictionaries" ,julia-dictionaries)
+       ("julia-indexing" ,julia-indexing)))
+    (home-page "https://github.com/JuliaData/SplitApplyCombine.jl")
+    (synopsis "Split-apply-combine strategies for Julia")
+    (description "@code{SplitApplyCombine.jl} provides high-level, generic tools
+for manipulating data - particularly focussing on data in nested containers.  An
+emphasis is placed on ensuring split-apply-combine strategies are easy to apply,
+and work reliably for arbitrary iterables and in an optimized way with the data
+structures included in Julia's standard library.")
+    (license license:expat)))
+
 (define-public julia-stablerngs
   (package
     (name "julia-stablerngs")
@@ -1693,6 +2059,29 @@ statically sized arrays in Julia, using the abstract type
 linear algebra operations.")
     (license license:expat)))
 
+(define-public julia-statsapi
+  (package
+    (name "julia-statsapi")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaStats/StatsAPI.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1k1c3s7i5wzkz4r9fyy4gd7wb97p0qgbc7bmaajm16zqipfmy2bv"))))
+    (build-system julia-build-system)
+    (home-page "https://juliastats.org/")
+    (synopsis "Statistics-focused namespace for packages to share functions")
+    (description "This package provides a namespace for data-related generic
+function definitions to solve the optional dependency problem; packages wishing
+to share and/or extend functions can avoid depending directly on each other by
+moving the function definition to @code{StatsAPI.jl} and each package taking a
+dependency on it.")
+    (license license:expat)))
+
 (define-public julia-suppressor
   (package
     (name "julia-suppressor")
@@ -1713,6 +2102,152 @@ linear algebra operations.")
 warnings (stderr) or both streams at the same time.")
     (license license:expat)))
 
+(define-public julia-tableiointerface
+  (package
+    (name "julia-tableiointerface")
+    (version "0.1.6")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/lungben/TableIOInterface.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0p2fi9jbyfg2j6rysv4if7dx8qw2mssb04i75j1zq607j8707kvn"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/lungben/TableIOInterface.jl")
+    (synopsis "File formats based on file extensions")
+    (description "This package determines tabular file formats based on file
+extensions.  It is intended to be the base both for @code{TableIO.jl} and for
+the @code{Pluto.jl} tabular data import functionality.")
+    (license license:expat)))
+
+(define-public julia-tables
+  (package
+    (name "julia-tables")
+    (version "1.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/Tables.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0yfjl4v1vglsk9wr7gbqgya4kk3a0q0i6zhi9xdgvnqsqzqrsc7c"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-dataapi" ,julia-dataapi)
+       ("julia-datavalueinterfaces" ,julia-datavalueinterfaces)
+       ("julia-iteratorinterfaceextensions" ,julia-iteratorinterfaceextensions)
+       ("julia-tabletraits" ,julia-tabletraits)))
+    (native-inputs
+     `(("julia-datavalues" ,julia-datavalues)
+       ("julia-queryoperators" ,julia-queryoperators)))
+    (home-page "https://github.com/JuliaData/Tables.jl")
+    (synopsis "Interface for tables in Julia")
+    (description "The @code{Tables.jl} package provides simple, yet powerful
+interface functions for working with all kinds tabular data.")
+    (license license:expat)))
+
+(define-public julia-tableshowutils
+  ;; The 0.2.5 release is not fully compatable with newer versions of Julia.
+  (let ((commit "c4e02d8b9bbb31fc81ed6618955e9b1c7cb04460")
+        (revision "1"))
+    (package
+      (name "julia-tableshowutils")
+      (version "0.2.5")
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/queryverse/TableShowUtils.jl")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32 "0gp3hpj3jvzfhkp9r345vfic2j2n2s60729wv38hwn75csp74cg5"))))
+      (build-system julia-build-system)
+      (propagated-inputs
+       `(("julia-datavalues" ,julia-datavalues)
+         ("julia-json" ,julia-json)))
+      (home-page "https://github.com/queryverse/TableShowUtils.jl")
+      (synopsis "Implement show for TableTraits.jl types")
+      (description "This package provides some common helper functions that make
+it easier to implement various @code{Base.show} functions for types that
+participate in the @code{TableTraits.jl} ecosystem.")
+      (license license:expat))))
+
+(define-public julia-tabletraits
+  (package
+    (name "julia-tabletraits")
+    (version "1.0.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/queryverse/TableTraits.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "08ssb2630wm6j8f2qa985mn2vfibfm5kjcn4ayl2qkhfcyp8daw4"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-iteratorinterfaceextensions" ,julia-iteratorinterfaceextensions)))
+    (home-page "https://github.com/queryverse/TableTraits.jl")
+    (synopsis "Traits for Julia tables")
+    (description "TableTraits defines a generic interface for tabular data.")
+    (license license:expat)))
+
+(define-public julia-tensorcore
+  (package
+    (name "julia-tensorcore")
+    (version "0.1.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaMath/TensorCore.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1sy3in4a1rl3l2vk0cm9mzg2nkva7syhr7i35si0kbzhkdwpbqjy"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaMath/TensorCore.jl")
+    (synopsis "Tensor-algebra definitions")
+    (description "This package is intended as a lightweight foundation for
+tensor operations across the Julia ecosystem.  Currently it exports three
+operations: @acronym{hadamard, elementwise multiplication}, @acronym{tensor,
+product preserves all dimensions}, and @acronym{boxdot, contracts neighboring
+dimensions}.")
+    (license license:expat)))
+
+(define-public julia-typedtables
+  (package
+    (name "julia-typedtables")
+    (version "1.2.4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/TypedTables.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "06k5h7ybsh29b6kiy0p62rp9b2q3xi9jk8p9wf0kq907p5kvfnfy"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-adapt" ,julia-adapt)
+       ("julia-splitapplycombine" ,julia-splitapplycombine)
+       ("julia-tables" ,julia-tables)))
+    (home-page "https://github.com/JuliaData/TypedTables.jl")
+    (synopsis "Column-based storage for data analysis in Julia")
+    (description "@code{TypedTables.jl} provides two column-based storage
+containers: @code{Table} and @code{FlexTable}, both of which represent an array
+of @code{NamedTuples}.  This package is designed to be lightweight, easy-to-use
+and fast, and presents a very minimal new interface to learn.")
+    (license license:expat)))
+
 (define-public julia-unpack
   (package
     (name "julia-unpack")
@@ -1789,105 +2324,74 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
 system.")
     (license license:expat)))
 
-(define-public julia-zipfile
+(define-public julia-versionparsing
   (package
-    (name "julia-zipfile")
-    (version "0.9.3")
+    (name "julia-versionparsing")
+    (version "1.2.0")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/fhs/ZipFile.jl")
+               (url "https://github.com/JuliaInterop/VersionParsing.jl")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "15bm3ki5mb9nvqs2byznrryq0bilnjcvsfy3k05hxhk9vapilw7k"))))
+         (base32 "060s72dsnpavgilf7f7315lw2sn4npk8lkndmj6bg7i23hppiwva"))))
     (build-system julia-build-system)
-    (propagated-inputs
-     `(("julia-zlib-jll" ,julia-zlib-jll)))
-    (home-page "https://github.com/fhs/ZipFile.jl")
-    (synopsis "Read/Write ZIP archives in Julia")
-    (description "This module provides support for reading and writing ZIP
-archives in Julia.")
+    (home-page "https://github.com/JuliaInterop/VersionParsing.jl")
+    (synopsis "Flexible VersionNumber parsing in Julia")
+    (description "The @code{VersionParsing} package implements flexible parsing
+of version-number strings into Julia's built-in @code{VersionNumber} type, via
+the @code{vparse(string)} function.  Unlike the @code{VersionNumber(string)}
+constructor, @code{vparse(string)} can handle version-number strings in a much
+wider range of formats than are encompassed by the semver standard.  This is
+useful in order to support @code{VersionNumber} comparisons applied to
+\"foreign\" version numbers from external packages.")
     (license license:expat)))
 
-(define-public julia-zlib-jll
+(define-public julia-weakrefstrings
   (package
-    (name "julia-zlib-jll")
-    (version "1.2.12+1")
+    (name "julia-weakrefstrings")
+    (version "0.6.2")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl")
-               (commit (string-append "Zlib-v" version))))
+               (url "https://github.com/JuliaData/WeakRefStrings.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "05ih0haqapkzr40swvq63cafnqlc4yp6yfa1wvdyq8v3n4kxhfqa"))))
+         (base32 "0129mf1axxycb1ans3idlvw8ch0hmdrl80q98jw63f99zz3ddipr"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f  ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("generate_wrapper_header.*")
-                    (string-append
-                      "generate_wrapper_header(\"Zlib\", \""
-                      (assoc-ref inputs "zlib") "\")\n"))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     `(("zlib" ,zlib)))
     (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/Zlib_jll.jl")
-    (synopsis "Zlib library wrappers")
-    (description "This package provides a wrapper for Zlib.")
+     `(("julia-dataapi" ,julia-dataapi)))
+    (home-page "https://github.com/JuliaData/WeakRefStrings.jl")
+    (synopsis "Efficient string representation and transfer in Julia")
+    (description "This package provides a minimal String type for Julia that
+allows for efficient string representation and transfer")
     (license license:expat)))
 
-(define-public julia-zstd-jll
+(define-public julia-zipfile
   (package
-    (name "julia-zstd-jll")
-    (version "1.5.0+0")
+    (name "julia-zipfile")
+    (version "0.9.3")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/Zstd_jll.jl")
-               (commit (string-append "Zstd-v" version))))
+               (url "https://github.com/fhs/ZipFile.jl")
+               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "15g5wsvga4p9bjmx97xqwqdnfzfbwfl6c4a9iaphcncwgcrnw6y6"))))
+          "15bm3ki5mb9nvqs2byznrryq0bilnjcvsfy3k05hxhk9vapilw7k"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f  ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("generate_wrapper_header.*")
-                    (string-append
-                      "generate_wrapper_header(\"Zstd\", \""
-                      (assoc-ref inputs "zstd:lib") "\")\n"))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     `(("zstd:lib" ,zstd "lib")))
     (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/Zstd_jll.jl")
-    (synopsis "Zstd library wrappers")
-    (description "This package provides a wrapper for the zstd library.")
+     `(("julia-zlib-jll" ,julia-zlib-jll)))
+    (home-page "https://github.com/fhs/ZipFile.jl")
+    (synopsis "Read/Write ZIP archives in Julia")
+    (description "This module provides support for reading and writing ZIP
+archives in Julia.")
     (license license:expat)))
 
 (define-public julia-zygoterules
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 2af02615c0..3b112324bf 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -619,14 +619,14 @@ used in KDE development tools Kompare and KDevelop.")
 (define-public qca
   (package
     (name "qca")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kde/stable/qca/" version
                             "/qca-" version ".tar.xz"))
         (sha256
-         (base32 "0vb0kwm4vpf71vczadg6h1ib09sgca0crll7ksbkmg646w1615s6"))))
+         (base32 "0rvvf97la95lah67jcj0p06n4br0pc2mri0q1hn4x522hndqybjn"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 4218168cd2..e03047c3fd 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -453,14 +453,14 @@ CorelDRAW documents of all versions.")
 (define-public libetonyek
   (package
     (name "libetonyek")
-    (version "0.1.9")
+    (version "0.1.10")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
                           name "-" version ".tar.xz"))
       (sha256 (base32
-               "0jhsbdimiyijdqriy0zzkjjgc4wi6fjimhdg4mdybrlwg7l7f5p6"))))
+               "16hy60ws29pb4pz3z5l4920yn9hnk2vlij0xfs5qi1w4drd46c5l"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-mdds=1.5")))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index cf020a153b..5cdfe97764 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -356,15 +356,15 @@ 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.12-version "5.12.5")
+(define-public linux-libre-5.12-version "5.12.9")
 (define deblob-scripts-5.12
   (linux-libre-deblob-scripts
    linux-libre-5.12-version
    (base32 "1vdsr9y4gckknrbqcjyfakwva3k0vb5zcivzk3k1s9mh7qp9dils")
-   (base32 "1qp25fd4wgjyk7dzdq9yirm1z5w68sd1p3wv8lch8259i51gwjnf")))
+   (base32 "1p1jzrci97sipjdx3h0vmdnw35z2vyvczinxmp65xi1ja7ww0g14")))
 (define-public linux-libre-5.12-pristine-source
   (let ((version linux-libre-5.12-version)
-        (hash (base32 "1x39sdswww4j8zr54wpjzy9dia52kihs11xwljxcnz8pck0vwja0")))
+        (hash (base32 "0vg71h8r90fl01a8khyf1776y76rgqisxafky89cswa2fpsvxyn7")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.12)))
@@ -372,20 +372,20 @@ 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.10-version "5.10.38")
+(define-public linux-libre-5.10-version "5.10.42")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
    linux-libre-5.10-version
    (base32 "1rmnx1px4sizs2lq831yd2g9dyflg0vmykz3cv9443x2a2vwy81f")
-   (base32 "0hh27ccqimagr3aij7ygwikxw66y63sqwd0xlf49bhpjd090r9a7")))
+   (base32 "1zsr02zmpx3968277sy8pfs2mdlgh86ifymwyj0r56wnhzf5q6hk")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "0bzipgnfvd5w70rv1x6g81iwknn2qskw92p2bpyiks7r52qmmwij")))
+        (hash (base32 "1r86v6q7ml7zv001f25w3h667nqqy39439s94vnqsyyn7g3jg84b")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.120")
+(define-public linux-libre-5.4-version "5.4.124")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
    linux-libre-5.4-version
@@ -393,12 +393,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "0q08q6q2l9k04p8a0vvbnhwfp4yiags8s6wc9dnac0fhd4y3gl1q")))
+        (hash (base32 "10kxa1ng9w9xd2d5xh48fbhp1kri650p90nihrcpnb845gd9vwpp")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.190")
+(define-public linux-libre-4.19-version "4.19.193")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
    linux-libre-4.19-version
@@ -406,46 +406,46 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0pf8py0id0r8wzr5050bik1sbhl8gsznnr5bvcmrs4jkhpp2m73g")))
+        (hash (base32 "17ci49ak5iw01kfkn3fcgncg9hm4j188417bxi3bnsq9il5ymhl4")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.232")
+(define-public linux-libre-4.14-version "4.14.235")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
    linux-libre-4.14-version
-   (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
+   (base32 "07afckszdm4pq008i6ij0pxpw2rpgi5q931nxh6dxcczpicvwbc9")
    (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0sa3sz7bznlhijd0iwv37nyrrnw34iq6dq1bqr6cj2wpyrhr7h8x")))
+        (hash (base32 "03k793hj294zf7jncs1h8zh5dh6xagkfvnydd9jadxvq2z8vvl8f")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.268")
+(define-public linux-libre-4.9-version "4.9.271")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
    linux-libre-4.9-version
-   (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
+   (base32 "1w8cb8w1cpcwswc3rxq6vwjafw6yy0igib34rrm93ag5h6inncfv")
    (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0aknrlf5q0dsqib8c9klmf5c60dy7hg2zksb020qvyrp077gcrjv")))
+        (hash (base32 "1480miixphkf0b8w00m753ar7yp1rnl3zyr9wp4inngi2f90553r")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.268")
+(define-public linux-libre-4.4-version "4.4.271")
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
    linux-libre-4.4-version
-   (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
+   (base32 "1lid4k7g947yi3hcjj0lz0fnssawbph3jsy67vrv57l5imrhv3zs")
    (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "1srk08kaxq5jjlqx804cgjffhcsrdkv3idh8ipagl6v2w4kas5v8")))
+        (hash (base32 "0n5h2lv1p542a45pas3pi0vkhgrk096vwrps79a7v3a6c1q2dxx6")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -481,14 +481,18 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 (define-public linux-libre-5.12-source
   (source-with-patches linux-libre-5.12-pristine-source
                        (list %boot-logo-patch
-                             %linux-libre-arm-export-__sync_icache_dcache-patch)))
+                             %linux-libre-arm-export-__sync_icache_dcache-patch
+                             ;; Pinebook Pro patch to fix LCD display
+                             (search-patch
+                              "linux-libre-arm64-generic-pinebook-lcd.patch"))))
 
 (define-public linux-libre-5.10-source
   (source-with-patches linux-libre-5.10-pristine-source
                        (list %boot-logo-patch
                              %linux-libre-arm-export-__sync_icache_dcache-patch
-			     (search-patch
-			      "linux-libre-arm64-generic-pinebook-lcd.patch"))))
+                             ;; Pinebook Pro patch to fix LCD display
+                             (search-patch
+                              "linux-libre-arm64-generic-pinebook-lcd.patch"))))
 
 (define-public linux-libre-5.4-source
   (source-with-patches linux-libre-5.4-pristine-source
@@ -1228,8 +1232,8 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.")
       (license license:gpl2+))))
 
 (define-public rtl8821ce-linux-module
-  (let ((commit "14b536f0c9ad2d0abbdab8afc7ade684900ca9cf")
-        (revision "2"))
+  (let ((commit "897e7c4c15dd5a0a569745dc223d969a26ff5bfc")
+        (revision "3"))
     (package
       (name "rtl8821ce-linux-module")
       (version (git-version "0.0.0" revision commit))
@@ -1242,7 +1246,7 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0z7r7spsgn22gwv9pcmkdjn9ingi8jj7xkxasph8118h46fw8ip2"))))
+           "0935dzz0njxh78wfd17yqah1dxn6b3kaszvzclwwrwwhwcrdp80j"))))
       (build-system linux-module-build-system)
       (arguments
        `(#:make-flags
@@ -6650,14 +6654,14 @@ re-use code and to avoid re-inventing the wheel.")
 (define-public libnftnl
   (package
     (name "libnftnl")
-    (version "1.1.9")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://netfilter.org/libnftnl/"
                            "libnftnl-" version ".tar.bz2"))
        (sha256
-        (base32 "16jbp4fs5dz2yf4c3bl1sb48x9x9wi1chv39zwmfgya1k9pimcp9"))))
+        (base32 "1xblq1cbcxhr6qmjpy98i1qdza148idgz99vbhjc7s4vzvfizc4h"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -6674,7 +6678,7 @@ used by nftables.")
 (define-public nftables
   (package
     (name "nftables")
-    (version "0.9.8")
+    (version "0.9.9")
     (source
      (origin
        (method url-fetch)
@@ -6683,7 +6687,7 @@ used by nftables.")
                   (string-append "https://www.nftables.org/projects/nftables"
                                  "/files/nftables-" version ".tar.bz2")))
        (sha256
-        (base32 "1r4g22grhd4s1918wws9vggb8821sv4kkj8197ygxr6sar301z30"))))
+        (base32 "1d7iwc8xlyfsbgn6qx1sdfcq7jhpl8wpfj39hcd06y8dzp3jvvvn"))))
     (build-system gnu-build-system)
     (arguments `(#:configure-flags
                  '("--disable-man-doc"))) ; FIXME: Needs docbook2x.
@@ -7360,7 +7364,7 @@ compatible with Python's ConfigParser style of .INI files, including RFC
 (define-public xfsprogs
   (package
     (name "xfsprogs")
-    (version "5.11.0")
+    (version "5.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7368,7 +7372,7 @@ compatible with Python's ConfigParser style of .INI files, including RFC
                     "xfsprogs-" version ".tar.gz"))
               (sha256
                (base32
-                "1byj53qdwsii35d0f11nz0dl618mpvwy5aa44pc9zg281g2r27ab"))))
+                "0b5vvwq4rqw7kph23ycd518d31dx3wq7w61znixxpdljx0ig71qn"))))
     (build-system gnu-build-system)
     (outputs (list "out" "python"))
     (arguments
@@ -8099,7 +8103,7 @@ provides user-space tools for creating EROFS file systems.")
 (define-public rasdaemon
   (package
     (name "rasdaemon")
-    (version "0.6.6")
+    (version "0.6.7")
     (source
      (origin
        (method git-fetch)
@@ -8108,14 +8112,17 @@ provides user-space tools for creating EROFS file systems.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "13g39x19lfjf9izdcb0nlyfjrgpliivhv4nw3ndgyzi59l3yqc0v"))))
+        (base32 "12ih96jwmr7imp9zyckf9zjqqm5ra1kv5fj6kbw71y6yl31069dz"))))
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("libtool" ,libtool)))
     (inputs `(("sqlite" ,sqlite)))
     (arguments
-     `(#:configure-flags '("--enable-all"
-                           "--localstatedir=/var")
+     `(#:configure-flags
+       (list "--enable-all"
+             ;; Don't install unused /etc/sysconfig/rasdaemon environment file.
+             "--with-sysconfdefdir=."
+             "--localstatedir=/var")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'munge-autotools
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 8163fbdecf..b61356d46a 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -1360,29 +1360,31 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
   (sbcl-package->ecl-package sbcl-cl-strings))
 
 (define-public sbcl-trivial-features
-  ;; No release since 2014.
-  (let ((commit "870d03de0ed44067963350936856e17ee725153e"))
-    (package
-      (name "sbcl-trivial-features")
-      (version (git-version "0.8" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/trivial-features/trivial-features")
-               (commit commit)))
-         (file-name (git-file-name "trivial-features" version))
-         (sha256
-          (base32 "14pcahr8r2j3idhyy216zyw8jnj1dnrx0qbkkbdqkvwzign1ah4j"))))
-      (build-system asdf-build-system/sbcl)
-      (arguments
-       '(#:asd-files '("trivial-features.asd")
-         #:tests? #f))
-      (home-page "https://cliki.net/trivial-features")
-      (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
-      (description "Trivial-features ensures that @code{*FEATURES*} is
+  (package
+    (name "sbcl-trivial-features")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trivial-features/trivial-features")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "trivial-features" version))
+       (sha256
+        (base32 "0jsqah1znzqilxnw5vannb083ayk0d7phkackqzwwqkyg5hpn6pq"))))
+    (build-system asdf-build-system/sbcl)
+    (arguments
+     '(#:asd-files '("trivial-features.asd")
+       ;; FIXME: Tests disabled because of a circular dependency between
+       ;; trivial-features and cffi.
+       #:tests? #f))
+    ;; (native-inputs
+    ;;  `(("cffi" ,sbcl-cffi)))
+    (home-page "https://cliki.net/trivial-features")
+    (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
+    (description "Trivial-features ensures that @code{*FEATURES*} is
 consistent across multiple Common Lisp implementations.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public cl-trivial-features
   (sbcl-package->cl-source-package sbcl-trivial-features))
@@ -2079,8 +2081,8 @@ than the body of the lambda.")
 
 (define-public sbcl-nibbles
   ;; No tagged release since 2018.
-  (let ((commit "8e6b9b42d9f69000f55e5c45ad974d9e376ffdbd")
-        (revision "1"))
+  (let ((commit "dad25240928d5cf8f7df69c4398244e03570bb35")
+        (revision "2"))
     (package
       (name "sbcl-nibbles")
       (version (git-version "0.14" revision commit))
@@ -2091,7 +2093,7 @@ than the body of the lambda.")
                (url "https://github.com/sharplispers/nibbles/")
                (commit commit)))
          (sha256
-          (base32 "15qlsm82h36pjgvfnbzdg60l21qxbaii4d049jc5y0dn56y93amb"))
+          (base32 "0r6ljlpgjmkf87pmvdwzva8qj15bhznc3ylgcjjqyy4frbx9lygz"))
          (file-name (git-file-name "nibbles" version))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
@@ -14468,10 +14470,10 @@ standard library.")
   (sbcl-package->cl-source-package sbcl-shlex))
 
 (define-public sbcl-cmd
-  (let ((commit "bc5a3bee8f22917126e4c3d05b33f766e562dbd8"))
+  (let ((commit "8ace7fb45f2ecf0eefae28583ee36c941d142179"))
     (package
       (name "sbcl-cmd")
-      (version (git-version "0.0.1" "3" commit))
+      (version (git-version "0.0.1" "4" commit))
       (source
        (origin
          (method git-fetch)
@@ -14480,7 +14482,7 @@ standard library.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1sjlabrknw1kjb2y89vssjhcqh3slgly8wnr3152zgis8lsj2yc7"))))
+          (base32 "1da8sa0fsvsdivnx2s9m6jbb7yszrnkqqcxrn1sszp7k6iwnnkgi"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("alexandria" ,sbcl-alexandria)
@@ -16845,3 +16847,403 @@ building block for higher level libraries.")
 
 (define-public ecl-json-streams
   (sbcl-package->ecl-package sbcl-json-streams))
+
+(define-public sbcl-arnesi
+  (let ((commit "1e7dc4cb2cad8599113c7492c78f4925e839522e")
+        (revision "1"))
+    (package
+      (name "sbcl-arnesi")
+      (version (git-version "2.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AccelerationNet/arnesi")
+               (commit commit)))
+         (file-name (git-file-name "arnesi" version))
+         (sha256
+          (base32 "0jgj2xgd1gq6rf8ia43lkmbrbxnp8rgs053br9azfa25ygk3ikbh"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; FIXME: (Sharlatan-20210523T190315+0100): Tests failed on
+       ;; special-lisp-var-rebount-in/cc
+       ;;
+       ;; ; processing (TEST SPECIAL-LISP-VAR-REBOUND-IN/CC ...)
+       ;; ; wrote .../sbcl/arnesi/t/call-cc-tmp5GEXGEG5.fasl
+       ;; ; compilation finished in 0:00:00.028
+       ;; Unhandled SIMPLE-ERROR in thread
+       ;; #<SB-THREAD:THREAD "main thread" RUNNING {100B768173}>:
+       ;; Sorry, No walker for the special operater DECLARE defined.
+       ;;
+       ;; Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {100B768173}>
+       ;; 0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SIMPLE-ERROR "Sorry,
+       ;; No walker for the special operater ~S defined."
+       ;; {1001FAF9D3}> #<unused argument> :QUIT T)
+       ;;
+       `(#:tests? #f))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("cl-ppcre" ,sbcl-cl-ppcre)
+         ("collectors" ,sbcl-collectors)
+         ("swank" ,sbcl-slime-swank)))
+      (home-page "https://github.com/AccelerationNet/arnesi")
+      (synopsis "Common Lisp utility suite")
+      (description
+       "ARNESI is Common Lisp utilities library similar to ALEXANDRIA, ANAPHORA
+or GOLDEN-UTILS.")
+      (license license:bsd-3))))
+
+(define-public ecl-arnesi
+  (sbcl-package->ecl-package sbcl-arnesi))
+
+(define-public cl-arnesi
+  (sbcl-package->cl-source-package sbcl-arnesi))
+
+(define-public sbcl-gettext
+  (let ((commit "a432020cbad99fc22cbe6bb9aa8a83a35000d7aa")
+        (revision "1"))
+    (package
+      (name "sbcl-gettext")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rotatef/gettext")
+               (commit commit)))
+         (file-name (git-file-name "gettext" version))
+         (sha256
+          (base32 "1pzhamgni6k5hi6bbvlb3dm659pcllrrr3vhhn3rpjn238zxg5ar"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("stefil" ,sbcl-stefil)))
+      (inputs
+       `(("flexi-streams" ,sbcl-flexi-streams)
+         ("split-sequence" ,sbcl-split-sequence)
+         ("yacc" ,sbcl-cl-yacc)))
+      (home-page "https://github.com/rotatef/gettext")
+      (synopsis "Common Lisp implementation of Gettext")
+      (description
+       "This package provides GNU @code{gettext} completely implemented in
+Common Lisp without any C library bindings.")
+      (license license:lgpl3+))))
+
+(define-public ecl-gettext
+  (sbcl-package->ecl-package sbcl-gettext))
+
+(define-public cl-gettext
+  (sbcl-package->cl-source-package sbcl-gettext))
+
+(define-public sbcl-parser-combinators
+  (let ((commit "9c7569a4f6af5e60c0d3a51d9c15c16d1714c845")
+        (revision "1"))
+    (package
+      (name "sbcl-parser-combinators")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Ramarren/cl-parser-combinators")
+               (commit commit)))
+         (file-name (git-file-name "parser-combinators" version))
+         (sha256
+          (base32 "1k49vha5xm2cklayzpqwg73n4v93xwsbs5in6342pkkiimnidhs8"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; FIXME: (Sharlatan-20210523T184237+0100): Tests require `femlisp', which
+       ;; is quite chunky not packaged system yet, enable them when it's packed.
+       `(#:tests? #f
+         #:test-asd-file "parser-combinators-tests.asd"))
+      ;; (native-inputs
+      ;;  `(("hu.dwim.stefil" ,sbcl-hu.dwim.stefil)
+      ;;    ("infix" ,sbcl-femlisp)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cl-containers" ,sbcl-cl-containers)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("iterate" ,sbcl-iterate)))
+      (home-page "https://github.com/Ramarren/cl-parser-combinators")
+      (synopsis "Parser combinators in Common Lisp")
+      (description
+       "PARSER-COMBINATORS is a library implementing monadic parser
+combinators in Common Lisp, similar in concept to Haskell Parsec system.")
+      (license license:bsd-3))))
+
+(define-public ecl-parser-combinators
+  (sbcl-package->ecl-package sbcl-parser-combinators))
+
+(define-public cl-parser-combinators
+  (sbcl-package->cl-source-package sbcl-parser-combinators))
+
+(define-public sbcl-cl-locale
+  (let ((commit "0a36cc0dcf5e0a8c8bf97869cd6199980ca25eec")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-locale")
+      (version (git-version "0.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fukamachi/cl-locale")
+               (commit commit)))
+         (file-name (git-file-name "cl-locale" version))
+         (sha256
+          (base32 "1rhannhpsw1yg1fpflam483a3w9qb1izgyvmnmiddv3dn4qsmn9p"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; FIXME: (Sharlatan-20210523T190658+0100): All tests passed ok but
+       ;; successfully failed in the end:
+       ;;
+       ;; Summary:
+       ;;   All 1 file passed.
+       ;; Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY
+       ;; in thread #<SB-THREAD:THREAD "main thread" RUNNING {100B6C8253}>:
+       ;;   Component CL-LOCALE-ASD::CL-LOCALE-TEST not found, required by
+       ;;   #<SYSTEM "cl-locale">
+       ;;
+       `(#:tests? #f))
+      (native-inputs
+       `(("prove" ,sbcl-prove)
+         ("flexi-streams" ,sbcl-flexi-streams)))
+      (inputs
+       `(("anaphora" ,sbcl-anaphora)
+         ("arnesi" ,sbcl-arnesi)
+         ("cl-annot" ,sbcl-cl-annot)
+         ("cl-syntax" ,sbcl-cl-syntax)))
+      (home-page "https://github.com/fukamachi/cl-locale")
+      (synopsis "Internalization library for Common Lisp")
+      (description
+       "This package provides a Common Lisp translation library similar to
+CL-I18N and CL-L10N.")
+      (license license:llgpl))))
+
+(define-public ecl-cl-locale
+  (sbcl-package->ecl-package sbcl-cl-locale))
+
+(define-public cl-locale
+  (sbcl-package->cl-source-package sbcl-cl-locale))
+
+(define-public sbcl-cl-slice
+  (let ((commit "c531683f287216aebbb0affbe090611fa1b5d697")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-slice")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tpapp/cl-slice")
+               (commit commit)))
+         (file-name (git-file-name "cl-slice" version))
+         (sha256
+          (base32 "1ybznf4y5lda6bn163jcvj281qzhm24dfcwhbgxmm5n6f27gdccl"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("clunit" ,sbcl-clunit)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("anaphora" ,sbcl-anaphora)
+         ("let-plus" ,sbcl-let-plus)))
+      (home-page "https://github.com/tpapp/cl-slice")
+      (synopsis "Array slices for Common Lisp")
+      (description
+       "This package provides a DSL for array slices in Common Lisp.")
+      (license license:expat))))
+
+(define-public ecl-cl-slice
+  (sbcl-package->ecl-package sbcl-cl-slice))
+
+(define-public cl-slice
+  (sbcl-package->cl-source-package sbcl-cl-slice))
+
+(define-public sbcl-djula
+  (let ((commit "5df7af35a21503d468a878fc6029caa527a7d204")
+        (revision "1"))
+    (package
+      (name "sbcl-djula")
+      (version (git-version "0.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mmontone/djula")
+               (commit commit)))
+         (file-name (git-file-name "djula" version))
+         (sha256
+          (base32 "1lk2ypm3sacf60h96a7hv9jwjlxkl4k40yzdalmqdg548vrd1jjm"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("access" ,sbcl-access)
+         ("alexandria" ,sbcl-alexandria)
+         ("anaphora" ,sbcl-anaphora)
+         ("babel" ,sbcl-babel)
+         ("cl-locale" ,sbcl-cl-locale)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("cl-slice" ,sbcl-cl-slice)
+         ("closer-mop" ,sbcl-closer-mop)
+         ("gettext" ,sbcl-gettext)
+         ("iterate" ,sbcl-iterate)
+         ("local-time" ,sbcl-local-time)
+         ("parser-combinators" ,sbcl-parser-combinators)
+         ("split-sequence" ,sbcl-split-sequence)
+         ("trivial-backtrace" ,sbcl-trivial-backtrace)))
+      (home-page "https://mmontone.github.io/djula/")
+      (synopsis "Common Lisp port of the Django templating language")
+      (description
+       "This package provides a Common Lisp templating system based on Python
+Django with a syntax similar to Python Jinja2.")
+      (license license:expat))))
+
+(define-public ecl-djula
+  (sbcl-package->ecl-package sbcl-djula))
+
+(define-public cl-djula
+  (sbcl-package->cl-source-package sbcl-djula))
+
+(define-public sbcl-for
+  (let ((commit "2e4fcfa0f9c1d2f4559c58cef20ccefa50ba180d")
+        (revision "1"))
+    (package
+      (name "sbcl-for")
+      (version (git-version "1.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/for")
+               (commit commit)))
+         (file-name (git-file-name "for" version))
+         (sha256
+          (base32 "1akz9ggh33x2cq3h0f1cd0p632v1mbagv3dzsb0r10bwg9lh3nmv"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("documentation-utils" ,sbcl-documentation-utils)
+         ("form-fiddle" ,sbcl-form-fiddle)
+         ("lambda-fiddle" ,sbcl-lambda-fiddle)))
+      (home-page "https://shinmera.github.io/for/")
+      (synopsis "Extensible iteration macro library")
+      (description
+       "For is a library for an extensible iteration macro.  It allows you to write
+concise looping constructs similar to @code{loop} and @code{iterate}.  Unlike
+loop however it is extensible and sensible, and unlike iterate it does not
+require code-walking and is easier to extend.")
+      (license license:zlib))))
+
+(define-public ecl-for
+  (sbcl-package->ecl-package sbcl-for))
+
+(define-public cl-for
+  (sbcl-package->cl-source-package sbcl-for))
+
+(define-public sbcl-flare
+  (let ((commit "4f9f17a4fc5b368c2a1988b9a20288695b8d8c48")
+        (revision "1"))
+    (package
+      (name "sbcl-flare")
+      (version (git-version "1.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/flare")
+               (commit commit)))
+         (file-name (git-file-name "flare" version))
+         (sha256
+          (base32 "00nm3sjngbflj2gd5q0xs2m136w4kix6krww23nk64pkkyq2fs86"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("3d-vectors" ,sbcl-3d-vectors)
+         ("array-utils" ,sbcl-array-utils)
+         ("documentation-utils" ,sbcl-documentation-utils)
+         ("for" ,sbcl-for)
+         ("lambda-fiddle" ,sbcl-lambda-fiddle)
+         ("trivial-garbage" ,sbcl-trivial-garbage)))
+      (home-page "https://shinmera.github.io/flare/")
+      (synopsis "Easy particle systems with fine grained control")
+      (description
+       "FLARE is a library designed to allow quick and precise particle effect
+creations.  It does not concern itself with displaying and only with the
+management and movement of particles.  As such, it can easily be integrated into
+any existing or future application.")
+      (license license:zlib))))
+
+(define-public ecl-flare
+  (sbcl-package->ecl-package sbcl-flare))
+
+(define-public cl-flare
+  (sbcl-package->cl-source-package sbcl-flare))
+
+(define-public sbcl-simple-inferiors
+  (let ((commit "deac886354e03f8a9502ce96f12a0459ce3be671"))
+    (package
+      (name "sbcl-simple-inferiors")
+      (version (git-version "1.1.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/simple-inferiors")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "08vsvqv3768bwb2y8mwxbw5wyqzzwqr7rd004r6gafdgf9p9mcx3"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("documentation-utils" ,sbcl-documentation-utils)))
+      (home-page "https://shinmera.github.io/simple-inferiors/")
+      (synopsis "Common Lisp library to use inferior processes")
+      (description
+       "This is a library to allow easy handling of external processes, and
+primarily to get their output.  It handles proper copying of the standard and
+error outputs of the process simultaneously, both in a sequential and parallel
+fashion.  It also features a lazy directory switching mechanism, to avoid
+running into parallelism problems when having to change directory.")
+      (license license:zlib))))
+
+(define-public ecl-simple-inferiors
+  (sbcl-package->ecl-package sbcl-simple-inferiors))
+
+(define-public cl-simple-inferiors
+  (sbcl-package->cl-source-package sbcl-simple-inferiors))
+
+(define-public sbcl-legit
+  (let ((commit "48d50a20d8dcbd941d119683463b7c8257ba6458"))
+    (package
+      (name "sbcl-legit")
+      (version (git-version "1.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/legit")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "181aqpj4zkfk1aavj5jw8rym6gw4ma3gd64z2h5fpryabgmwk236"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("simple-inferiors" ,sbcl-simple-inferiors)
+         ("lambda-fiddle" ,sbcl-lambda-fiddle)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("documentation-utils" ,sbcl-documentation-utils)))
+      (home-page "https://shinmera.github.io/legit/")
+      (synopsis "Interface to the git binary")
+      (description
+       "This is an interface to the @code{git} binary to make controlling it
+from within Common Lisp much easier.  It might not ever reach full coverage of
+all features given git's immense size, but features will be added as they are
+needed.  The low-level command API is fully mapped however.")
+      (license license:zlib))))
+
+(define-public ecl-legit
+  (sbcl-package->ecl-package sbcl-legit))
+
+(define-public cl-legit
+  (sbcl-package->cl-source-package sbcl-legit))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 50af7bc396..6dfb7def72 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -400,14 +400,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "2.1.4")
+    (version "2.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "04dxxycqhds9r1ycqx3cbavv7p4r13svl5bfakjjmlpw8qihw9lr"))))
+        (base32 "1id8r2y8hiz34lmvszikdqgrmr778jshim0fibb915assvn0fn4n"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -594,7 +594,9 @@ statistical profiler, a code coverage tool, and many other extensions.")
   ;;     it, as is the case for SBCL, but I know of no attempt to do so."
   (package
     (name "ccl")
-    (version "1.12")
+    ;; XXX When updating this package, check whether we can simply append
+    ;; VERSION to the ccl-bootstrap URL again, instead of per architecture.
+    (version "1.12.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -603,7 +605,7 @@ statistical profiler, a code coverage tool, and many other extensions.")
               (file-name (git-file-name "ccl" version))
               (sha256
                (base32
-                "0kxr24d2fzsmpsilijpwwfl6g89y7fcrwb80kai5nx9pwgxmjbp3"))))
+                "1zz291lvsrr7pps8wfl2kdxsnzjngqi4v3mil14pga4r5zanmsi7"))))
     (build-system gnu-build-system)
     ;; CCL consists of a "lisp kernel" and "heap image", both of which are
     ;; shipped in precompiled form in source tarballs.  The former is a C
@@ -615,20 +617,20 @@ statistical profiler, a code coverage tool, and many other extensions.")
         ,(origin
            (method url-fetch)
            (uri (string-append
-                 "https://github.com/Clozure/ccl/releases/download/v" version "/"
+                 "https://github.com/Clozure/ccl/releases/download/v"
                  (match (%current-system)
-                   ("armhf-linux" "linuxarm")
+                   ("armhf-linux" "1.12/linuxarm")
                    ;; XXX: This source only works on x86, but provide it as a
                    ;; catch-all to prevent errors when querying this package
                    ;; on unsupported platforms.
-                   (_ "linuxx86"))
+                   (_ "1.12.1/linuxx86"))
                  ".tar.gz"))
            (sha256
             (base32
              (match (%current-system)
                ("armhf-linux"
                 "0x4bjx6cxsjvxyagijhlvmc7jkyxifdvz5q5zvz37028va65243c")
-               (_ "15l7cfa4a7jkfwdzsfm4q3n22jnb57imxahpql3h77xin57v1gbz"))))))))
+               (_ "0ll017ajcfsyx8f7zsy4394y8xxvz40iz0gcsmznp0n3mf0xi67c"))))))))
     (native-inputs
      `(("cl-asdf" ,cl-asdf)
        ("m4" ,m4)))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 0a65d4aa57..38da28150b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
@@ -686,23 +686,23 @@ of programming tools as well as libraries with equivalent functionality.")
 (define-public llvm-7
   (package
     (inherit llvm-8)
-    (version "7.0.1")
+    (version "7.1.0")
     (source (origin
               (method url-fetch)
               (uri (llvm-uri "llvm" version))
               (sha256
                (base32
-                "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))))
+                "0r1p5didv4rkgxyvbkyz671xddg6i3dxvbpsi1xxipkla0l9pk0v"))))))
 
 (define-public clang-runtime-7
   (clang-runtime-from-llvm
    llvm-7
-   "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq"
+   "1n48p8gjarihkws0i2bay5w9bdwyxyxxbpwyng7ba58jb30dlyq5"
    '("clang-runtime-9-libsanitizer-mode-field.patch")))
 
 (define-public clang-7
   (clang-from-llvm llvm-7 clang-runtime-7
-                   "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4"
+                   "0vc4i87qwxnw9lci4ayws9spakg0z6w5w670snj9f8g5m9rc8zg9"
                    #:patches '("clang-7.0-libc-search-path.patch")))
 
 (define-public clang-toolchain-7
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index 20efba17b7..b4cdcaac0f 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2019, 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2020 Fakhri Sajadi <f.sajadi@pantherx.org>
 ;;; Copyright © 2020 André Batista <nandre@riseup.net>
+;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -127,7 +128,7 @@ to statistics about the system on which it's run.")
 (define-public lxqt-build-tools
   (package
     (name "lxqt-build-tools")
-    (version "0.7.0")
+    (version "0.9.0")
     (source
      (origin
        (method url-fetch)
@@ -135,7 +136,7 @@ to statistics about the system on which it's run.")
                            "/download/" version
                            "/lxqt-build-tools-" version ".tar.xz"))
        (sha256
-        (base32 "147vdkc25mrlr0fy785yzwhm4gwjxa5xl3n3hljz4c97m531kzl5"))))
+        (base32 "0kayad5l72h8n90zkf3hy8fxy72n4b1mrkjglpa9dj0cdj6qg0lp"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -150,17 +151,20 @@ to statistics about the system on which it's run.")
        ("glib" ,glib)))
     (inputs
      `(("qtbase" ,qtbase)))
+    (propagated-inputs
+     ;; Dependent projects require Perl via the CMake files.
+     `(("perl" ,perl)))
     (synopsis "LXQt Build tools")
     (description
      "Lxqt-build-tools is providing several tools needed to build LXQt
 itself as well as other components maintained by the LXQt project.")
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (license license:lgpl2.1+)))
 
 (define-public libqtxdg
   (package
     (name "libqtxdg")
-    (version "3.5.0")
+    (version "3.7.1")
     (source
      (origin
        (method url-fetch)
@@ -168,7 +172,7 @@ itself as well as other components maintained by the LXQt project.")
              "https://github.com/lxqt/libqtxdg/releases/download/"
              version "/libqtxdg-" version ".tar.xz"))
        (sha256
-        (base32 "0g2mwipgl8737jhgqymjixvk745svh2rlini3qr92lrg60v9paa1"))))
+        (base32 "16wav2b948c837cpbvdr6hs1zifwrpdk3yjvbzzp2l1hndvbwz27"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -198,7 +202,7 @@ in Qt.")
 (define-public liblxqt
   (package
     (name "liblxqt")
-    (version "0.15.1")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
@@ -206,7 +210,7 @@ in Qt.")
              "https://github.com/lxqt/" name "/releases/download/"
              version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0mg62gypjpmpjd3lr7rrvzmkkhli1vf5pri47hg76byz84vng4a9"))))
+        (base32 "0ay3j6zdgffw3mzaq3wdq96la7fnn2dw52ij6987slv31563nknl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -235,7 +239,7 @@ in Qt.")
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Core utility library for all LXQt components")
     (description "liblxqt provides the basic libraries shared by the
 components of the LXQt desktop environment.")
@@ -244,21 +248,21 @@ components of the LXQt desktop environment.")
 (define-public libsysstat
   (package
     (name "libsysstat")
-    (version "0.4.3")
+    (version "0.4.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1s5s7skzy3sh4rlnfy7r0cg3r1scvp35ldd28bhnqjya99m7ip37"))))
+        (base32 "1ljy5ggvqvpm3k6kfy03dn47ygr9lzi8hmqws4dcqfc9sx86b6zi"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no tests
     (inputs
      `(("qtbase" ,qtbase)))
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Library used to query system info and statistics")
     (description "libsysstat is a library to query system information like CPU
 and memory usage or network traffic.")
@@ -270,14 +274,14 @@ and memory usage or network traffic.")
 (define-public lxqt-about
   (package
     (name "lxqt-about")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0p24z1vykyp8dkhwaxxi4hw5150yv9a2ncc55vbwx4c6bmmibmsh"))))
+        (base32 "04riqf2xgbcnq67l5zb0dfnnmc4a2zljx8zfn3jlvxirnd73l0zm"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -304,7 +308,7 @@ and memory usage or network traffic.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Provides information about LXQt and the system")
     (description "lxqt-about is a dialogue window providing information about
 LXQt and the system it's running on.")
@@ -313,14 +317,14 @@ LXQt and the system it's running on.")
 (define-public lxqt-admin
   (package
     (name "lxqt-admin")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1zal37hyzqimwsymmi3w15n1iq78g53754s8abc9ylkzc236xpfc"))))
+        (base32 "07fkn3zmpfxjzzsv1hyv50sx0359n10lxjil35qn266nz165wj43"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -338,7 +342,8 @@ LXQt and the system it's running on.")
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
            (lambda _
-             (substitute* "lxqt-admin-user/CMakeLists.txt"
+             (substitute* '("lxqt-admin-user/CMakeLists.txt"
+                            "lxqt-admin-time/CMakeLists.txt")
                (("DESTINATION \"\\$\\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\\}")
                 "DESTINATION \"share/polkit-1/actions"))
              #t))
@@ -350,7 +355,7 @@ LXQt and the system it's running on.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "LXQt system administration tool")
     (description "lxqt-admin is providing two GUI tools to adjust settings of
 the operating system LXQt is running on.")
@@ -359,19 +364,18 @@ the operating system LXQt is running on.")
 (define-public lxqt-config
   (package
     (name "lxqt-config")
-    (version "0.15.0")
+    (version "0.17.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "18fagd6ynmx74qw0pjkkg2n3v6s18n6lcsbj7lvfd4lkbcfnzqpb"))))
+        (base32 "0nr43d6fyc5zg4b3iwpca2cy58ry8q0rahrk6ixm7wrvmaiwkh93"))))
     (build-system cmake-build-system)
     (inputs
      `(("eudev" ,eudev)
        ("kwindowsystem" ,kwindowsystem)
-       ("libkscreen" ,libkscreen)
        ("liblxqt" ,liblxqt)
        ("libqtxdg" ,libqtxdg)
        ("libxcursor" ,libxcursor)
@@ -387,6 +391,10 @@ the operating system LXQt is running on.")
      `(("pkg-config" ,pkg-config)
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
+    ;; XXX: This is a workaround so libkscreen can find the backends as we
+    ;; dont have a way specify them. We may want to  patch like Nix does.
+    (propagated-inputs
+     `(("libkscreen" ,libkscreen)))
     (arguments
      '(#:tests? #f                      ; no tests
        #:phases
@@ -419,7 +427,7 @@ the operating system LXQt is running on.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Tools to configure LXQt and the underlying operating system")
     (description "lxqt-config is providing several tools involved in the
 configuration of both LXQt and the underlying operating system.")
@@ -428,7 +436,7 @@ configuration of both LXQt and the underlying operating system.")
 (define-public lxqt-globalkeys
   (package
     (name "lxqt-globalkeys")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
@@ -436,7 +444,7 @@ configuration of both LXQt and the underlying operating system.")
                            "releases/download/" version "/"
                            "lxqt-globalkeys-" version ".tar.xz"))
        (sha256
-        (base32 "1wfvpvy32p60j7xibfa30skzxx2187qrsqxm1npabj1y5bva2m6f"))))
+        (base32 "0pnyqiqhaawrnyvw3ljp850d911abaalnl4rgvl2xyzybvlhki4h"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -467,7 +475,7 @@ configuration of both LXQt and the underlying operating system.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Daemon used to register global keyboard shortcuts")
     (description "lxqt-globalkeys is providing tools to set global keyboard
 shortcuts in LXQt sessions, that is shortcuts which apply to the LXQt session
@@ -477,14 +485,14 @@ as a whole and are not limited to distinct applications.")
 (define-public lxqt-notificationd
   (package
     (name "lxqt-notificationd")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "01fva6q2vb0aframxgm0jslvb3z0dcwmhz0yr239bskvdwpn885w"))))
+        (base32 "1dyal7brmfnydfgb6lpxnqww8fj5gzixs7s3wf5nn2ihsz1wm4nk"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -514,7 +522,7 @@ as a whole and are not limited to distinct applications.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "The LXQt notification daemon")
     (description "lxqt-notificationd is LXQt's implementation of a daemon
 according to the Desktop Notifications Specification.")
@@ -523,14 +531,14 @@ according to the Desktop Notifications Specification.")
 (define-public lxqt-openssh-askpass
   (package
     (name "lxqt-openssh-askpass")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1h8nhj4ig8419kfdqjsig16ayf2byrzgrk698aiym544n5ayjwak"))))
+        (base32 "0gdcy8c21sbfrlfz9c3zqw4dvdwf309flkjgqanwwl9i8hr26chr"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -553,7 +561,7 @@ according to the Desktop Notifications Specification.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "GUI to query passwords on behalf of SSH agents")
     (description "lxqt-openssh-askpass is a GUI to query credentials on behalf
 of other programs.")
@@ -562,14 +570,14 @@ of other programs.")
 (define-public lxqt-panel
   (package
     (name "lxqt-panel")
-    (version "0.15.1")
+    (version "0.17.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1b40l9p31nz96q38vwgd1zj142xcwqnjwljsird4nnzs2smjn1c6"))))
+        (base32 "1k2cfs1mhad486kh93vbxma3jpjksp4hzjv1xmp1g5alb5dgnc0q"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -629,7 +637,7 @@ of other programs.")
                       (("/usr/share/X11/xkb/rules/evdev.xml")
                        (string-append xkb "/share/X11/xkb/rules/evdev.xml")))
                   #t))))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "The LXQt desktop panel")
     (description "lxqt-panel represents the taskbar of LXQt.")
     (license license:lgpl2.1+)))
@@ -637,14 +645,14 @@ of other programs.")
 (define-public lxqt-policykit
   (package
     (name "lxqt-policykit")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0kzc9mxl47bz6mifmk4xi9sxh7jl31d55j7cq8vijqg3w1yb5rp2"))))
+        (base32 "119bjhx208g7wxmr8r0ajb3wl6vagq1aks6zz07df4bgjs3nnpli"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -677,7 +685,7 @@ of other programs.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "The LXQt PolicyKit agent")
     (description "lxqt-policykit is the polkit authentication agent of
 LXQt.")
@@ -686,20 +694,21 @@ LXQt.")
 (define-public lxqt-powermanagement
   (package
     (name "lxqt-powermanagement")
-    (version "0.15.0")
+    (version "0.17.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1kal7w6ngs9yrg309p4wacmabpynsrysmbpfkpphg158z548wwl0"))))
+        (base32 "00njx8a8cs0zzpz798qc9j16k7i4y0ydy1xmmcq9yv0wawh4gqck"))))
     (build-system cmake-build-system)
     (inputs
      `(("kidletime" ,kidletime)
        ("kwindowsystem" ,kwindowsystem)
        ("liblxqt" ,liblxqt)
        ("libqtxdg" ,libqtxdg)
+       ("lxqt-globalkeys" ,lxqt-globalkeys)
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
@@ -725,7 +734,7 @@ LXQt.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Power management module for LXQt")
     (description "lxqt-powermanagement is providing tools to monitor power
 management events and optionally trigger actions like e. g. shut down a system
@@ -735,14 +744,14 @@ when laptop batteries are low on power.")
 (define-public lxqt-qtplugin
   (package
     (name "lxqt-qtplugin")
-    (version "0.15.1")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "17kmpm3nn07xyxz21f86y3hqi6s0jvqyhsc703zy0463sc58vvys"))))
+        (base32 "14c6abxfg3vda333wrvb5lk45c45hnb66jclbs3vsmrjxdb13vv5"))))
     (build-system cmake-build-system)
     (inputs
      `(("libdbusmenu-qt" ,libdbusmenu-qt)
@@ -764,7 +773,7 @@ when laptop batteries are low on power.")
                (("DESTINATION \"\\$\\{QT_PLUGINS_DIR\\}")
                 "DESTINATION \"lib/qt5/plugins"))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "LXQt Qt platform integration plugin")
     (description "lxqt-qtplugin is providing a library libqtlxqt to integrate
 Qt with LXQt.")
@@ -773,14 +782,14 @@ Qt with LXQt.")
 (define-public lxqt-runner
   (package
     (name "lxqt-runner")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "02xxpflhh6a8qpnjhl5mrl07ikzl5x21mf0rj8nmm0v28rpkqjk1"))))
+        (base32 "0n53jbvkmp4vgi21a720gsvi407m4ybqk8xrpnm5f48yjr88r9i4"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -813,7 +822,7 @@ Qt with LXQt.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Tool used to launch programs quickly by typing their names")
     (description "lxqt-runner provides a GUI that comes up on the desktop and
 allows for launching applications or shutting down the system.")
@@ -822,20 +831,21 @@ allows for launching applications or shutting down the system.")
 (define-public lxqt-session
   (package
     (name "lxqt-session")
-    (version "0.15.0")
+    (version "0.17.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "17y6l1l2m2hzxlzvr7wbixnldbr7waky97vj6lx72r81l45wqkz4"))))
+        (base32 "0iwwfyngpbhs2dwvbw0cci0bf3qbqcpjjw7h5vm46nimvgp8q1fr"))))
     (build-system cmake-build-system)
     (inputs
      `(("eudev" ,eudev)
        ("kwindowsystem" ,kwindowsystem)
        ("liblxqt" ,liblxqt)
        ("libqtxdg" ,libqtxdg)
+       ("procps" ,procps)
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
@@ -884,7 +894,7 @@ allows for launching applications or shutting down the system.")
                  `("XDG_CONFIG_DIRS" ":" suffix ("/run/current-system/profile/share"
                                                  "/run/current-system/profile/share/pcmanfm-qt")))
                #t))))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Session manager for LXQt")
     (description "lxqt-session provides the standard session manager
 for the LXQt desktop environment.")
@@ -893,14 +903,14 @@ for the LXQt desktop environment.")
 (define-public lxqt-sudo
   (package
     (name "lxqt-sudo")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1v4gzmld3zqi3y9pdy3hb8lq81jwbgi4ia00lbzccg8cm0m8n55w"))))
+        (base32 "02s38m0ywp0gjkjczvrc4r1ignshbajlj084xd61d3rcm7vahhic"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -925,7 +935,7 @@ for the LXQt desktop environment.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "GUI frontend for sudo/su")
     (description "lxqt-sudo is a graphical front-end of commands sudo and su
 respectively.  As such it enables regular users to launch applications with
@@ -935,14 +945,14 @@ permissions of other users including root.")
 (define-public lxqt-themes
   (package
     (name "lxqt-themes")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1dzv60q1dhi666ajh218smkp3ybh5vl2mxyvlbyc9zwvhgx3f0d1"))))
+        (base32 "0kmvcz6rxghxxgb0m264zbvycc1zjma8mr4cpwg5kyrzb47rdw9z"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)))
@@ -959,7 +969,7 @@ permissions of other users including root.")
                (("DESTINATION \"\\$\\{LXQT_SHARE_DIR\\}")
                 "DESTINATION \"share/lxqt"))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Themes, graphics and icons for LXQt")
     (description "This package comprises a number of graphic files and themes
 for LXQt.")
@@ -973,14 +983,14 @@ for LXQt.")
 (define-public libfm-qt
   (package
     (name "libfm-qt")
-    (version "0.15.1")
+    (version "0.17.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "034kc8i571m31fksprih6iiykxj85j98fmm6nrkmlwql45kr6rvs"))))
+        (base32 "1991lm1gnw9s5wwn1yf3vba63bfmrrgsxc70h3nhdl9mh16qygxa"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no tests
@@ -997,7 +1007,7 @@ for LXQt.")
      `(("pkg-config" ,pkg-config)
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Qt binding for libfm")
     (description "libfm-qt is the Qt port of libfm, a library providing
 components to build desktop file managers which belongs to LXDE.")
@@ -1006,14 +1016,14 @@ components to build desktop file managers which belongs to LXDE.")
 (define-public pcmanfm-qt
   (package
     (name "pcmanfm-qt")
-    (version "0.15.1")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1izc60hrc16sv2ig9psr3br9iq8nln6a2ycfspzycgpk8rh0f6jd"))))
+        (base32 "1axs7dnh2z08ygy28iipfbgfck15k2i2pwlf0v8d8axjrmavzb3l"))))
     (build-system cmake-build-system)
     (inputs
      `(("libfm-qt" ,libfm-qt)
@@ -1036,7 +1046,7 @@ components to build desktop file managers which belongs to LXDE.")
                (("@LXQT_SHARE_DIR@")
                 "/run/current-system/profile/share/lxqt" ))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "File manager and desktop icon manager")
     (description "PCManFM-Qt is the Qt port of PCManFM, the file manager of
 LXDE.")
@@ -1048,14 +1058,14 @@ LXDE.")
 (define-public compton-conf
   (package
     (name "compton-conf")
-    (version "0.15.0")
+    (version "0.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1ii1bans7wdafm9rmxvsdqp3ad4cj0pa8kf92plbmbm3nycpf1q9"))))
+        (base32 "0haarzhndjp0wndfhcdy6zl2whpdn3w0qzr3rr137kfqibc58lvx"))))
     (build-system cmake-build-system)
     (inputs
      `(("libconfig" ,libconfig)
@@ -1074,7 +1084,7 @@ LXDE.")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
              #t)))))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "GUI configuration tool for compton X composite manager")
     (description "@code{compton-conf} is a configuration tool for X composite
 manager Compton.")
@@ -1083,14 +1093,14 @@ manager Compton.")
 (define-public lximage-qt
   (package
     (name "lximage-qt")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "02iyymb8ywlzvv69lga5a86b7kh4v78zw6qzq5kcnjp1rpj2rjrk"))))
+        (base32 "0g6hs41xfw2ghhwpj0rqr2ciri0x9v984689yrnmnvah88zlya1f"))))
     (build-system cmake-build-system)
     (inputs
      `(("libexif" ,libexif)
@@ -1104,7 +1114,7 @@ manager Compton.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "The image viewer and screenshot tool for lxqt")
     (description "LXImage-Qt is the Qt port of LXImage, a simple and fast
 image viewer.")
@@ -1113,14 +1123,14 @@ image viewer.")
 (define-public obconf-qt
   (package
     (name "obconf-qt")
-    (version "0.15.0")
+    (version "0.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1vcv2y54hgxcf76cr775632kajmvz3v4x1q3r6p1lzs9s7lmrh6q"))))
+        (base32 "0hlbivdbiw7wjhwrp8qfmq50ks19v0q21m3pyjj0k2na7nv9d3a5"))))
     (build-system cmake-build-system)
     (inputs
      `(("imlib2" ,imlib2)
@@ -1139,7 +1149,7 @@ image viewer.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Openbox configuration tool")
     (description "ObConf-Qt is a Qt port of ObConf, a configuration editor for
 window manager OpenBox.")
@@ -1148,14 +1158,14 @@ window manager OpenBox.")
 (define-public pavucontrol-qt
   (package
     (name "pavucontrol-qt")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "15wknwmb4640r5fm4wiq6xa70qa2djay2806wyvajh11xjmqy566"))))
+        (base32 "0w51dpjayav78lmhw966fz3gvypkmv64xgsd7x5rqs8am39lq9vc"))))
     (build-system cmake-build-system)
     (inputs
      `(("glib" ,glib)
@@ -1169,7 +1179,7 @@ window manager OpenBox.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Pulseaudio mixer in Qt")
     (description "@code{pavucontrol-qt} is the Qt port of volume control
 @code{pavucontrol} of sound server @code{PulseAudio}.")
@@ -1178,14 +1188,14 @@ window manager OpenBox.")
 (define-public qps
   (package
     (name "qps")
-    (version "2.1.0")
+    (version "2.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0yym1bpglz8vha28x7k21fxx1vlsq19m3fyhk2cq3pwq3nqijwp7"))))
+        (base32 "0zg0czrh3dlbnl5smxamhkdbj1g0szm47w1c0fwpaplgc1vv5lfq"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -1199,7 +1209,7 @@ window manager OpenBox.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Qt-based visual process status monitor")
     (description "@code{qps} is a monitor that displays the status of the
 processes currently in existence, much like code{top} or code{ps}.")
@@ -1208,14 +1218,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qtermwidget
   (package
     (name "qtermwidget")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1vn3bbc99py0ak7z9s6p71n9cacpckz57a1p97iwb0p23g4zgjkf"))))
+        (base32 "10lv475qj0x3c3vl4yhjyr6y10qj5pq8n5pal5k24f6pf7xv412f"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1225,7 +1235,7 @@ processes currently in existence, much like code{top} or code{ps}.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "The terminal widget for QTerminal")
     (description "QTermWidget is a terminal emulator widget for Qt 5.")
     (license license:gpl2+)))
@@ -1233,14 +1243,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qterminal
   (package
     (name "qterminal")
-    (version "0.15.0")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0r7xmwjpak47ayj7cj37bwrdlv1mx5nhqpccb5pbn2fh8slp8zsm"))))
+        (base32 "0rfv7a6ncm8fs8aicinh9l29w4636gxzcqz735jmch2r41v9i1d9"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1251,7 +1261,7 @@ processes currently in existence, much like code{top} or code{ps}.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                      ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Lightweight Qt-based terminal emulator")
     (description "QTerminal is a lightweight Qt terminal emulator based on
 QTermWidget.")
@@ -1260,14 +1270,14 @@ QTermWidget.")
 (define-public screengrab
   (package
     (name "screengrab")
-    (version "2.0.1")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/screengrab/releases/download/"
                            version "/screengrab-" version ".tar.xz"))
        (sha256
-        (base32 "14znjw3d3gw02fsmhrjcj86l173m2ypl1x8hhba9ld23icr1gqwf"))))
+        (base32 "0cilzw7rz5m2klzpax7rrs5rr6whfda2svwzsn2jvmrirmh5by7r"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -1277,10 +1287,11 @@ QTermWidget.")
        ("qtx11extras" ,qtx11extras)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("perl" ,perl)
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Crossplatform tool for fast making screenshots")
     (description "ScreenGrab is a program for fast creating screenshots, and
 easily publishing them on internet image hosting services.")
@@ -1290,14 +1301,14 @@ easily publishing them on internet image hosting services.")
 (define-public lxqt-archiver
   (package
     (name "lxqt-archiver")
-    (version "0.2.0")
+    (version "0.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
         (sha256
-          (base32 "1i725zaah0wv18j5fchg6isbh4b601filx549cq2hkzf2sylh9ff"))))
+          (base32 "0fzgq7cyr7hx8qmq84xfgbsdx04mc1r7vzq5mz79j7bp2ysh134z"))))
     (build-system cmake-build-system)
     (inputs
       `(("glib" ,glib)
@@ -1311,7 +1322,7 @@ easily publishing them on internet image hosting services.")
         ("qttools" ,qttools)))
     (arguments
       '(#:tests? #f))
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (synopsis "Simple & lightweight desktop-agnostic Qt file archiver")
     (description
      "This package provides a Qt graphical interface to archiving programs
@@ -1321,7 +1332,7 @@ like @command{tar} and @command{zip}.")
 (define-public lxqt-connman-applet
   ;; since the main developers didn't release any version yet,  their 
   ;; latest commit on `master` branch at the moment used for this version.
-  (let ((commit "8a6cc14371a2f18f963e6a2996446082bb60f17d")
+  (let ((commit "db1618d58fd3439142c4e44b24cba0dbb68b7141")
         (revision "0"))
     (package
       (name "lxqt-connman-applet")
@@ -1333,7 +1344,8 @@ like @command{tar} and @command{zip}.")
             (url (string-append "https://github.com/lxqt/" name))
             (commit commit)))
           (file-name (git-file-name name version))
-          (sha256 (base32 "0br4bxfrl8k7lq84aq4grznlk8xzzjgkmd19bf9mwjr0a87gg72v"))))
+          (sha256
+           (base32 "087641idpg7n8yhh5biis4wv52ayw3rddirwqb34bf5fwj664pw9"))))
       (build-system cmake-build-system)
       (inputs
         `(("kwindowsystem" ,kwindowsystem)
@@ -1357,13 +1369,13 @@ like @command{tar} and @command{zip}.")
                                     "/share/lxqt/translations"))
                     (("\\$\\{LXQT_ETC_XDG_DIR\\}") "etc/xdg"))
                   #t))
-	      (add-after 'unpack 'remove-definitions
-		(lambda _
-		  (substitute* "CMakeLists.txt"
-		    (("include\\(LXQtCompilerSettings NO_POLICY_SCOPE\\)")
-		     "include(LXQtCompilerSettings NO_POLICY_SCOPE)
+              (add-after 'unpack 'remove-definitions
+                (lambda _
+                  (substitute* "CMakeLists.txt"
+                    (("include\\(LXQtCompilerSettings NO_POLICY_SCOPE\\)")
+                     "include(LXQtCompilerSettings NO_POLICY_SCOPE)
 remove_definitions(-DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII)"))
-		  #t)))))
+                  #t)))))
       (home-page "https://github.com/lxqt/lxqt-connman-applet")
       (synopsis "System-tray applet for connman")
       (description "This package provides a Qt-based system-tray applet for
@@ -1376,7 +1388,7 @@ desktop.")
 (define-public lxqt
   (package
     (name "lxqt")
-    (version (package-version lxqt-session))
+    (version "17.0")
     (source #f)
     (build-system trivial-build-system)
     (arguments '(#:builder (begin (mkdir %output) #t)))
@@ -1407,8 +1419,7 @@ desktop.")
        ("lxqt-themes" ,lxqt-themes)
        ("pcmanfm-qt" ,pcmanfm-qt)
        ;; Extra
-       ("compton" ,compton)
-       ("compton-conf" ,compton-conf)
+       ("picom" ,picom)
        ("font-dejavu" ,font-dejavu)
        ("lximage-qt" ,lximage-qt)
        ("obconf-qt" ,obconf-qt)
@@ -1419,5 +1430,5 @@ desktop.")
        ("qterminal" ,qterminal)))
     (synopsis "The Lightweight Qt Desktop Environment")
     (description "LXQt is a lightweight Qt desktop environment.")
-    (home-page "https://lxqt.github.io")
+    (home-page "https://lxqt-project.org")
     (license license:gpl2+)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 7aed1aa5bd..866b0295b1 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -208,10 +208,10 @@
      `(("ncurses" ,ncurses)
        ("readline" ,readline)))
     (home-page "https://abook.sourceforge.io/")
-    (synopsis "Text-based addressbook")
+    (synopsis "Text-based address book")
     (description
-     "Abook is a text-based addressbook program designed to use with Mutt mail
-client.")
+     "Abook is a text-based address book program designed to use with the Mutt
+mail client.")
     (license license:gpl2)))
 
 (define-public anubis
@@ -1332,14 +1332,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.31.4")
+    (version "0.32.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0magnyjjhhv11nwcm2596hdxszrj61y69i0hmwqdc3v6cxjvcqc6"))))
+                "0586d13ssygapjdri4cl25wzywivwsbxpjm6xlgxj6f9ii7clix7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1355,8 +1355,7 @@ invoking @command{notifymuch} from the post-new hook.")
                   (add-after 'unpack 'patch-notmuch-lib.el
                     (lambda _
                       (substitute* "emacs/notmuch-lib.el"
-                        (("/bin/sh") (which "sh")))
-                      #t))
+                        (("/bin/sh") (which "sh")))))
                   (replace 'configure
                     (lambda* (#:key outputs #:allow-other-keys)
                       (setenv "CC" "gcc")
@@ -1373,15 +1372,13 @@ invoking @command{notifymuch} from the post-new hook.")
                     ;; and try removing this for notmuch versions > 0.31.
                     (lambda _
                       (substitute* "test/T356-protected-headers.sh"
-                        (("\\$NOTMUCH_GMIME_X509_CERT_VALIDITY") "0"))
-                      #t))
+                        (("\\$NOTMUCH_GMIME_X509_CERT_VALIDITY") "0"))))
                   (add-before 'check 'prepare-test-environment
                     (lambda _
                       (setenv "TEST_CC" "gcc")
                       ;; Patch various inline shell invocations.
                       (substitute* (find-files "test" "\\.sh$")
-                        (("/bin/sh") (which "sh")))
-                      #t))
+                        (("/bin/sh") (which "sh")))))
                   (add-after 'install 'make-autoloads
                     (assoc-ref emacs:%standard-phases 'make-autoloads)))))
     (native-inputs
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index 695eed67b1..368976bfde 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 EuAndreh <eu@euandre.org>
 ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
@@ -284,7 +284,7 @@ and smu is that smu doesn't support reference style links.")
 (define-public md4c
   (package
     (name "md4c")
-    (version "0.4.7")
+    (version "0.4.8")
     (source
      (origin
        (method git-fetch)
@@ -293,7 +293,7 @@ and smu is that smu doesn't support reference style links.")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0m3202zzjvw4k7jw66z1qi3cbisxzvplq5alkygpifvhzm81gwwx"))))
+        (base32 "12pdh4rfjc3b0cblj5nz3jksr2376lx8ay0vw5dwa1s97q09pczq"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))
     (home-page "https://github.com/mity/md4c/")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d7ba5fca0a..4b33056d1e 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -28,7 +28,7 @@
 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
 ;;; Copyright © 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Eric Brown <brown@fastmail.com>
-;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
@@ -75,6 +75,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system ocaml)
   #:use-module (guix build-system python)
   #:use-module (guix build-system ruby)
   #:use-module (gnu packages algebra)
@@ -86,11 +87,13 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages coq)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages emacs)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
@@ -120,6 +123,7 @@
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages ocaml)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages popt)
@@ -248,6 +252,9 @@ programming languages.")
                (base32
                 "0zlbhg0lb6j60188c2xhcrvviskr079552icjldqhy1jhgmxghmm"))))
     (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DLINK_APPS_SHARED=ON"
+                           "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")))
     (synopsis "Calculate convex hulls and related structures")
     (description
      "@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi
@@ -1234,7 +1241,8 @@ extremely large and complex data collections.")
               "https://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING"))))
 
 (define-public hdf5-1.10
-  (package/inherit hdf5-1.8
+  (package
+    (inherit hdf5-1.8)
     (version "1.10.7")
     (source
      (origin
@@ -1253,7 +1261,8 @@ extremely large and complex data collections.")
        (patches (search-patches "hdf5-config-date.patch"))))))
 
 (define-public hdf5-1.12
-  (package/inherit hdf5-1.8
+  (package
+    (inherit hdf5-1.8)
     (version "1.12.0")
     (source
      (origin
@@ -1751,21 +1760,16 @@ online as well as original implementations of various other algorithms.")
 (define-public ipopt
   (package
     (name "ipopt")
-    (version "3.12.12")
+    (version "3.13.4")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://www.coin-or.org/download/source/Ipopt/Ipopt-"
-                    version".tgz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/coin-or/Ipopt")
+                    (commit (string-append "releases/" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "07yn9rzdswjk8n246qq6ci9ssf2bcplkifcpsfz9j6cdxw9vgbkv"))
-              (modules '((guix build utils)))
-              (snippet
-               ;; Make sure we don't use the bundled software.
-               '(begin
-                  (delete-file-recursively "ThirdParty")
-                  #t))))
+                "08gznhwhqv1x4baksz350ih8q16r5rd0k8vals6078m3h94khr4b"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -1785,7 +1789,8 @@ online as well as original implementations of various other algorithms.")
                                           after "\n")))
                         #t))))))
     (native-inputs
-     `(("gfortran" ,gfortran)))
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
     (inputs
      ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL.
      `(("lapack" ,lapack)))                    ;for both libblas and liblapack
@@ -1795,6 +1800,35 @@ online as well as original implementations of various other algorithms.")
      "The Interior Point Optimizer (IPOPT) is a software package for
 large-scale nonlinear optimization.  It provides C++, C, and Fortran
 interfaces.")
+    (license license:epl2.0)))
+
+(define-public cbc
+  (package
+    (name "cbc")
+    (version "2.10.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.coin-or.org/download/source/"
+                                  "Cbc/Cbc-" version ".tgz"))
+              (sha256
+               (base32
+                "0wk9vr6zc62gw71v7gnra5wxqlcljcgbhm5lasx236v791b986ns"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Make sure we don't use the bundled software.
+               '(delete-file-recursively "ThirdParty"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openblas" ,openblas)))
+    (home-page "https://www.coin-or.org")
+    (synopsis "Branch-and-cut solver")
+    (description
+     "Cbc (Coin-or branch and cut) is a mixed integer linear programming
+solver written in C++.  It can be used as a library or as a standalone
+executable.")
     (license license:epl1.0)))
 
 (define-public clp
@@ -4617,7 +4651,7 @@ set.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/LLNL/hypre")
+             (url "https://github.com/hypre-space/hypre")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4722,7 +4756,8 @@ set.")
                              (copy-recursively (string-append base "-html")
                                                (string-append docdir "/" base)))
                            '("usr-manual" "ref-manual")))))))))
-    (home-page "http://www.llnl.gov/casc/hypre/")
+    (home-page "https://computing.llnl.gov/projects\
+/hypre-scalable-linear-solvers-multigrid-methods")
     (synopsis "Library of solvers and preconditioners for linear equations")
     (description
      "HYPRE is a software library of high performance preconditioners and
@@ -6284,3 +6319,111 @@ interval arithmetic, plotting.")
      "Numdiff compares files line by line and field by field, ignoring small
 numeric differences and differences in numeric formats.")
     (license license:gpl3+)))
+
+(define-public why3
+  (package
+    (name "why3")
+    (version "1.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gforge.inria.fr/frs/download.php/file"
+                                  "/38291/why3-" version ".tar.gz"))
+              (sha256
+               (base32
+                "16zcrc60zz2j3gd3ww93z2z9x2jkxb3kr57y8i5rcgmacy7mw3bv"))))
+    (build-system ocaml-build-system)
+    (native-inputs
+     `(("coq" ,coq)
+       ("ocaml" ,ocaml)
+       ("which" ,which)))
+    (propagated-inputs
+     `(("camlzip" ,camlzip)
+       ("ocaml-graph" ,ocaml-graph)
+       ("ocaml-menhir" ,ocaml-menhir)
+       ("ocaml-num" ,ocaml-num)
+       ("ocaml-zarith" ,ocaml-zarith)))
+    (inputs
+     `(("coq-flocq" ,coq-flocq)
+       ("emacs-minimal" ,emacs-minimal)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-configure
+           (lambda _
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (substitute* "configure"
+               ;; find ocaml-num in the correct directory
+               (("\\$DIR/nums.cma") "$DIR/../nums.cma")
+               (("\\$DIR/num.cmi") "$DIR/../num.cmi"))
+             #t))
+         (add-after 'configure 'fix-makefile
+           (lambda _
+             (substitute* "Makefile"
+               ;; find ocaml-num in the correct directory
+               (("site-lib/num") "site-lib"))
+             #t))
+        (add-after 'install 'install-lib
+          (lambda _
+            (invoke "make" "byte")
+            (invoke "make" "install-lib")
+            #t)))))
+    (home-page "http://why3.lri.fr")
+    (synopsis "Deductive program verification")
+    (description "Why3 provides a language for specification and programming,
+called WhyML, and relies on external theorem provers, both automated and
+interactive, to discharge verification conditions.  Why3 comes with a standard
+library of logical theories (integer and real arithmetic, Boolean operations,
+sets and maps, etc.) and basic programming data structures (arrays, queues,
+hash tables, etc.).  A user can write WhyML programs directly and get
+correct-by-construction OCaml programs through an automated extraction
+mechanism.  WhyML is also used as an intermediate language for the verification
+of C, Java, or Ada programs.")
+    (license license:lgpl2.1)))
+
+(define-public frama-c
+  (package
+    (name "frama-c")
+    (version "22.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://frama-c.com/download/frama-c-"
+                                  version "-Titanium.tar.gz"))
+              (sha256
+               (base32
+                "1mq1fijka95ydrla486yr4w6wdl9l7vmp512s1q00b0p6lmfwmkh"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:tests? #f; no test target in Makefile
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'export-shell
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash")
+                                                   "/bin/sh"))
+             #t)))))
+    (inputs
+     `(("gmp" ,gmp)))
+    (propagated-inputs
+     `(("ocaml-biniou" ,ocaml-biniou)
+       ("ocaml-easy-format" ,ocaml-easy-format)
+       ("ocaml-graph" ,ocaml-graph)
+       ("ocaml-yojson" ,ocaml-yojson)
+       ("ocaml-zarith" ,ocaml-zarith)
+       ("why3" ,why3)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "FRAMAC_SHARE")
+            (files '("share/frama-c"))
+            (separator #f))
+           (search-path-specification
+            (variable "FRAMAC_LIB")
+            (files '("lib/frama-c"))
+            (separator #f))))
+    (home-page "http://frama-c.com")
+    (synopsis "C source code analysis platform")
+    (description "Frama-C is an extensible and collaborative platform dedicated
+to source-code analysis of C software.  The Frama-C analyzers assist you in
+various source-code-related activities, from the navigation through unfamiliar
+projects up to the certification of critical software.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index 7369dcf800..b9dea3b446 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -20,19 +20,20 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages mc)
-  #:use-module (guix packages)
-  #:use-module (guix licenses)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages)
   #:use-module (gnu packages aspell)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages ssh)
-  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages compression))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix licenses)
+  #:use-module (guix packages))
 
 (define-public mc
   (package
@@ -46,13 +47,14 @@
       (sha256
        (base32 "09vc2vf6k12a8k5gdss6hcskwfcbyalrkhn65nidkwlm0p2svpn6"))))
     (build-system gnu-build-system)
-    (native-inputs `(("pkg-config" ,pkg-config)
-                     ("perl" ,perl)))
+    (native-inputs `(("perl" ,perl)
+                     ("pkg-config" ,pkg-config)))
     (inputs `(("aspell" ,aspell)
-              ("ncurses" ,ncurses)
-              ("libssh2" ,libssh2)
-              ("glib" ,glib)
               ("check" ,check)
+              ("glib" ,glib)
+              ("gpm" ,gpm)
+              ("libssh2" ,libssh2)
+              ("ncurses" ,ncurses)
               ("unzip" ,unzip)))
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 750ec2e67a..2defb45ff1 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -99,14 +100,14 @@ extensive examples, including parsers for the Javascript and C99 languages.")
 (define-public nyacc
   (package
     (inherit nyacc-0.99)
-    (version "1.03.6")
+    (version "1.04.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/nyacc/nyacc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1s7kli288l4pizjaarx8m6jg7g0mgfy8rpbs9lpzg8la7wr5rvp4"))
+                "0m3mcdaslvvr2iav8ga146hzsja2hdj4656pszljb4q2q7h25ip5"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 12fab2bc7f..1a132c285e 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -28,6 +28,7 @@
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2020, 2021 Robert Karszniewicz <avoidr@posteo.de>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -123,6 +124,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
@@ -478,7 +480,7 @@ your private keys, no previous conversation is compromised.")
 (define-public libsignal-protocol-c
   (package
   (name "libsignal-protocol-c")
-  (version "2.3.2")
+  (version "2.3.3")
   (source (origin
            (method git-fetch)
            (uri (git-reference
@@ -487,7 +489,7 @@ your private keys, no previous conversation is compromised.")
            (file-name (git-file-name name version))
            (sha256
             (base32
-             "1qj2w4csy6j9jg1jy66n1qwysx7hgjywk4n35hlqcnh1kpa14k3p"))))
+             "0z5p03vk15i6h870azfjgyfgxhv31q2vq6rfhnybrnkxq2wqzwhk"))))
   (arguments
    `(;; Required for proper linking and for tests to run.
      #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
@@ -1144,7 +1146,7 @@ and OpenPGP) and available in 29 languages.")
 (define-public gajim-omemo
   (package
     (name "gajim-omemo")
-    (version "2.7.13")
+    (version "2.7.14")
     (source
      (origin
        (method url-fetch/zipbomb)
@@ -1153,7 +1155,7 @@ and OpenPGP) and available in 29 languages.")
          "https://ftp.gajim.org/plugins_releases/omemo_"
          version ".zip"))
        (sha256
-        (base32 "1msr71rvik05wjpa2inpkadddad2rxaqbqcww5qrdrcz75pm8brn"))))
+        (base32 "0jmyjqfc4vimvq5vdqsvz25dsij6bh92alml8qnn59p5farnf86v"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -2404,13 +2406,13 @@ QMatrixClient project.")
 (define-public hangups
   (package
     (name "hangups")
-    (version "0.4.13")
+    (version "0.4.14")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hangups" version))
        (sha256
-        (base32 "015g635vnrxk5lf9n80rdcmh6chv8kmla1k2j7m1iijijs519ngn"))))
+        (base32 "15qbbafcrdkx73xz9y30qa3d8nj6mgrp2m41749i5nn1qywmikk8"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2967,4 +2969,31 @@ designed for experienced users.")
     (description "This package contains Zulip's official terminal client.")
     (license license:asl2.0)))
 
+(define-public matterbridge
+  (package
+    (name "matterbridge")
+    (version "1.22.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/42wim/matterbridge")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07rgdc4v043fhzsalmlhickqizk6xjlpjkzn6l5v9ryp5gmv580z"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/42wim/matterbridge"
+       #:unpack-path "github.com/42wim/matterbridge"))
+    (synopsis "Bridge together various messaging networks and protocols")
+    (description "Relays messages between different channels from various
+messaging networks and protocols.  So far it supports mattermost, IRC, gitter,
+xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp,
+keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST
+API.  Mattermost is not required.")
+    (home-page "https://github.com/42wim/matterbridge")
+    (license license:asl2.0)))
+
 ;;; messaging.scm ends here
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 22b02a561b..d2aef0eaab 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2021, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -8,6 +8,7 @@
 ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
 ;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -622,3 +623,30 @@ future system load (i.e., capacity planning).")
     ;; license:gpl2 for other plugins
     (license (list license:expat license:gpl2))))
 
+(define-public hostscope
+  (package
+    (name "hostscope")
+    (version "8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.maier-komor.de/hostscope/hostscope-V"
+                    version ".tgz"))
+              (sha256
+               (base32
+                "0jw6yij8va0f292g4xkf9lp9sxkzfgv67ajw49g3vq42q47ld7cv"))))
+    (build-system gnu-build-system)
+    (inputs `(("ncurses" ,ncurses)))
+    (arguments '(#:tests? #f)) ;; No included tests.
+    (home-page "http://www.maier-komor.de/hostscope.html")
+    (properties `((release-monitoring-url . ,home-page)))
+    (synopsis
+     "System monitoring tool for multiple hosts")
+    (description
+     "HostScope displays key system metrics of Linux hosts, such as detailed
+CPU load, speed and temperature, I/O rates of network interfaces, I/O rates of
+disks, and user process summary information.  All metrics are multicast on the
+LAN, if wanted, and clients can switch between multiple hosts on the network.
+Hostscope features a bridge to Influx DB.  So Grafana can be used to visualize
+the recorded data over time.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 02b9dec506..d33bde11ac 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -105,7 +105,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.22.6")
+    (version "0.22.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -114,7 +114,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "0pjdd8qwia1dsfkzyxcasfhxiqwk6lcz333z8w9vcg2wi6j4kq9b"))))
+                "0v980hhrdq9k2323ha6gfd7kzpwhdcgja6aqj9gwzbzzr44fs5wn"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=enabled")))
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index 6e662a80c6..5f79253d6d 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -29,14 +29,14 @@
 (define-public mtools
   (package
     (name "mtools")
-    (version "4.0.27")
+    (version "4.0.29")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mtools/mtools-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1crqi10adwfahj8xyw60lx70hkpcc5g00b5r8277cm2f4kcwi24w"))
+                "1izymrj7cjya3da5qgvlmywqs0kkjdk9940hl15ybbz70d30pdf6"))
               (patches
                (search-patches "mtools-mformat-uninitialized.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index efaa3acfa0..ffba7c144c 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
 ;;; Copyright © 2021 Frank Pursel <frank.pursel@gmail.com>
+;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,9 +69,11 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system waf)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system qt)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
@@ -1339,6 +1342,47 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
                    ;; demo and player directories are under the Expat license
                    license:expat))))
 
+(define-public lingot
+  (package
+    (name "lingot")
+    (version "1.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ibancg/lingot")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04lcjzfhddbyskxr2068z609y6x0s2gjx1wl78w0dkxdi459zrn9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("cunit" ,cunit)
+       ("glib" ,glib "bin")             ; for glib-compile-resources
+       ("intltool" ,intltool)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftw" ,fftw)
+       ("gtk+" ,gtk+)
+       ("jack" ,jack-2)
+       ("json-c" ,json-c)
+       ("pulseaudio" ,pulseaudio)))
+    (home-page "http://lingot.nongnu.org/")
+    (synopsis "Accurate & configurable musical instrument tuner")
+    (description
+     "LINGOT is a musical instrument tuner.  It's accurate, easy to use, and
+highly configurable.  Originally conceived to tune electric guitars, it can now
+be used to tune other instruments.
+
+It looks like an analogue tuner, with a gauge indicating the relative shift to a
+certain note, determined automatically as the closest note to the estimated
+frequency.")
+    (license license:gpl2+)))
+
 (define-public ninjas2
   (package
     (name "ninjas2")
@@ -4704,7 +4748,7 @@ standalone JACK client and an LV2 plugin is also available.")
                        "thirdparty/portmidi"
                        "thirdparty/qt-google-analytics"))
            #t))))
-    (build-system cmake-build-system)
+    (build-system qt-build-system)
     (arguments
      `(#:configure-flags
        `("-DBUILD_TELEMETRY_MODULE=OFF" ;don't phone home
@@ -4735,6 +4779,7 @@ standalone JACK client and an LV2 plugin is also available.")
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
        ("qtquickcontrols2" ,qtquickcontrols2)
        ("qtscript" ,qtscript)
        ("qtsvg" ,qtsvg)
@@ -4761,25 +4806,21 @@ sample library.")
 (define-public muse-sequencer
   (package
     (name "muse-sequencer")
-    (version "3.1.1")
+    (version "4.0.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/muse-sequencer/muse")
-                    (commit (string-append "muse_"
-                                           (string-map (lambda (c)
-                                                         (if (char=? c #\.)
-                                                             #\_ c)) version)))))
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rasp2v1ds2aw296lbf27rzw0l9fjl0cvbvw85d5ycvh6wkm301p"))))
-    (build-system cmake-build-system)
+                "1gamr9ln10l26wwyin1a4grrqy6h05qzcgp28wsp85yczkpsh02c"))))
+    (build-system qt-build-system)
     (arguments
      `(#:tests? #f ; there is no test target
        #:configure-flags
-       (list "-DENABLE_INSTPATCH=OFF"  ; FIXME: not packaged
-             "-DENABLE_VST_NATIVE=OFF"
+       (list "-DENABLE_VST_NATIVE=OFF"
              (string-append "-DCMAKE_EXE_LINKER_FLAGS="
                             "-Wl,-rpath="
                             (assoc-ref %outputs "out") "/lib/muse-"
@@ -4791,7 +4832,7 @@ sample library.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'chdir
-           (lambda _ (chdir "muse3") #t))
+           (lambda _ (chdir "src") #t))
          (add-after 'chdir 'fix-include
            (lambda _
              (substitute* "muse/driver/rtaudio.h"
@@ -4799,26 +4840,30 @@ sample library.")
              #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
-       ("lash" ,lash)
-       ("jack" ,jack-1)
-       ("liblo" ,liblo)
        ("dssi" ,dssi)
+       ("fluidsynth" ,fluidsynth)
+       ("glib" ,glib)
+       ("jack" ,jack-1)
        ("ladspa" ,ladspa)
-       ("lv2" ,lv2)
-       ("lilv" ,lilv)
-       ("sord" ,sord)
-       ("libsndfile" ,libsndfile)
+       ("lash" ,lash)
+       ("libinstpatch" ,libinstpatch)
+       ("liblo" ,liblo)
        ("libsamplerate" ,libsamplerate)
+       ("libsndfile" ,libsndfile)
+       ("lilv" ,lilv)
        ("lrdf" ,lrdf)
-       ("fluidsynth" ,fluidsynth)
+       ("lv2" ,lv2)
        ("pcre" ,pcre)
        ("pulseaudio" ,pulseaudio) ; required by rtaudio
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
        ("rtaudio" ,rtaudio)
-       ("rubberband" ,rubberband)))
+       ("rubberband" ,rubberband)
+       ("sord" ,sord)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
        ("qttools" ,qttools)))
     (home-page "https://muse-sequencer.github.io/")
     (synopsis "MIDI/Audio sequencer")
@@ -4927,14 +4972,14 @@ specification and header.")
 (define-public rosegarden
   (package
     (name "rosegarden")
-    (version "20.12")
+    (version "21.06")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/rosegarden/rosegarden/"
                            version "/rosegarden-" version ".tar.bz2"))
        (sha256
-        (base32 "0nqw2caxmv6mqh485wzvywa024yvi18q87sd4dw9b2l5qnpq8rl8"))))
+        (base32 "0rhbmygzh62hc3mkq60lh9r28wvfkhzzd5kspl1ll0h1ipjgvr6d"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
@@ -5892,7 +5937,7 @@ audio and MIDI plugins that can also run as standalone JACK applications.")
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bxvssqnnd7bph3w1d6xcmxradv4cqq3wyzyv1a1hfm71a0pdahs"))))
+        (base32 "02blg0iqich4vx5z1ahj6avkh83yqszdiq83p9jd5qwm0i4llqjq"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ;no "check" target
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 6b154067b1..bac692fbdd 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2015, 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
@@ -440,7 +440,7 @@ performance across unpredictable networks, such as the Internet.")
 (define-public lksctp-tools
   (package
     (name "lksctp-tools")
-    (version "1.0.18")
+    (version "1.0.19")
     (source
      (origin
        (method git-fetch)
@@ -449,10 +449,8 @@ performance across unpredictable networks, such as the Internet.")
          (url "https://github.com/sctp/lksctp-tools")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
-       (patches
-        (search-patches "lksctp-tools-1.0.18-fix-header-file-name.patch"))
        (sha256
-        (base32 "1x4fwzrlzvfa3vcpja97m8w5g9ir2zrh4zs7zksminrnmdrs0dsr"))))
+        (base32 "1jfq58j365mlgssavyw5wcal42n0xjkr40vmj9b8w265wgs28j20"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -461,11 +459,14 @@ performance across unpredictable networks, such as the Internet.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("linux-headers" ,linux-libre-headers)))
-    (synopsis "Linux SCTP helper library")
-    (description "Lksctp-tools project provides a user space library for SCTP
-(libsctp) including C language header files (netinet/sctp.h) for accessing SCTP
-specific application programming interfaces not provided by the standard
-sockets, and also some helper utilities around SCTP.")
+    (synopsis
+     "@acronym{SCTP, Stream Control Transmission Protocol} helpers for Linux")
+    (description
+     "The lksctp-tools project provides a user-space library for @acronym{SCTP,
+the Stream Control Transmission Protocol} (@file{libsctp}) and C language header
+files (@file{netinet/sctp.h}) for accessing SCTP-specific @acronym{APIs,
+application programming interfaces} not provided by the standard sockets.
+It also includes some SCTP-related helper utilities.")
     (home-page "http://lksctp.sourceforge.net/")
     (license
      (list
@@ -908,6 +909,38 @@ establish a relatively secure environment (su and chroot) for running client
 or server shell scripts with network connections.")
     (license license:gpl2)))
 
+(define-public mbuffer
+  (package
+    (name "mbuffer")
+    (version "20210328")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.maier-komor.de/software/mbuffer/mbuffer-"
+                    version ".tgz"))
+              (sha256
+               (base32
+                "0pfw9xw4ph18yss07fl6w8fbqiwy1w9r1knzw5gsb4c993cbidai"))))
+    (build-system gnu-build-system)
+    (inputs `(("openssl" ,openssl)))
+    (home-page "http://www.maier-komor.de/mbuffer.html")
+    (synopsis
+     "Swiss army knife for data stream buffering (network aware)")
+    (description
+     "mbuffer is a tool for buffering data streams with a large set of features:
+
+@itemize
+@item direct support for TCP based network targets (IPv4 and IPv6)
+@item ability to send to multiple targets in parallel (distribution mode)
+@item support for multiple volumes
+@item I/O rate limitation
+@item high/low watermark based restart criteria
+@item configurable buffer size
+@item on the fly MD5 hash calculation
+@item highly efficient, multi-threaded implementation
+@end itemize")
+    (license license:gpl3+)))
+
 (define-public tcp-wrappers
   (package
     (name "tcp-wrappers")
@@ -1025,20 +1058,7 @@ more.")
                 "0fdclvd7fcwixp0k57ccv7d159v3slasyhvndxfn8n1a9hh0lwjx"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--enable-drafts")
-       #:phases (modify-phases %standard-phases
-                  (add-before 'check 'patch-tests
-                    (lambda _
-                      (substitute* "src/czmq_selftest.c"
-                        ;; Disable the zproc test, which fails on some hardware
-                        ;; (see: https://github.com/zeromq/czmq/issues/2007).
-                        (("\\{ \"zproc\", zproc_test.*")
-                         "")
-                        ;; Also disable the zarmour test, which fails as well
-                        ;; (see: https://github.com/zeromq/czmq/issues/2125).
-                        (("\\{ \"zarmour\", zarmour_test.*")
-                         ""))
-                      #t)))))
+     '(#:configure-flags '("--enable-drafts")))
     (inputs
      `(("zeromq" ,zeromq)))
     (home-page "https://zeromq.org")
@@ -1154,14 +1174,14 @@ containing both Producer and Consumer support.")
 (define-public libndp
   (package
     (name "libndp")
-    (version "1.7")
+    (version "1.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libndp.org/files/"
                                   "libndp-" version ".tar.gz"))
               (sha256
                (base32
-                "1dlinhl39va00v55qygjc9ap77yqf7xvn4rwmvdr49xhzzxhlj1c"))))
+                "0ay0n0d85254zdmv8znmn399gfiqpk6ga0jwdwa7ylpbw9pbdzw8"))))
     (build-system gnu-build-system)
     (home-page "https://libndp.org/")
     (synopsis "Library for Neighbor Discovery Protocol")
@@ -1380,7 +1400,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.5.8")
+    (version "5.5.9")
     (source
      (origin
        (method git-fetch)
@@ -1389,7 +1409,7 @@ and up to 1 Mbit/s downstream.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12lhl2q1pa1qkbv0l1cpy8hn4wh5i99bqc68rlm4f7jyqlj2l82r"))))
+        (base32 "0l9dhyciylh14lqw8j5mrk0y2hl95cnj8pyvvabbgwxpsdn0yvbb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
@@ -1425,14 +1445,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.4.5")
+    (version "3.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "0cyk8nqws9gp8p2ywszbynh8vawivnbhw60dhmy21qd1038sy6ny"))))
+        (base32 "0a26kcj3n1a2kw1f3fc6s1x3rw3f3bj2cq6rp7k0kc4ciwh7i9hj"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1463,6 +1483,7 @@ of the same name.")
      `(("c-ares" ,c-ares)
        ("glib" ,glib)
        ("gnutls" ,gnutls)
+       ("google-brotli" ,google-brotli)
        ("libcap" ,libcap)
        ("libgcrypt" ,libgcrypt)
        ("libnl" ,libnl)
@@ -1472,12 +1493,15 @@ of the same name.")
        ("lz4" ,lz4)
        ("lua" ,lua-5.2)                 ;Lua 5.3 unsupported
        ("krb5" ,mit-krb5)
+       ("nghttp2:lib" ,nghttp2 "lib")
+       ("minizip" ,minizip)
        ("qtbase" ,qtbase)
        ("qtmultimedia" ,qtmultimedia)
        ("qtsvg" ,qtsvg)
        ("sbc" ,sbc)
        ("snappy" ,snappy)
-       ("zlib" ,zlib)))
+       ("zlib" ,zlib)
+       ("zstd:lib" ,zstd "lib")))
     (native-inputs
      `(("bison" ,bison)
        ("doxygen" ,doxygen)
@@ -2347,15 +2371,20 @@ that block port 22.")
 (define-public iperf
   (package
     (name "iperf")
-    (version "3.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://downloads.es.net/pub/iperf"
-                                  "/iperf-" version ".tar.gz"))
-              (sha256
-                (base32
-                 "0f601avdmzpwsa3lbi0ppjhkrdipm5wifhhxy5czf99370k3mdi4"))))
+    (version "3.10.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/esnet/iperf")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0svkrmxki6ckn2a8xysh5x0bw68mqnvl3w64j6d45fxs97dca2vq"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--disable-static")))
     (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
     (description
      "iPerf is a tool to measure achievable bandwidth on IP networks.  It
@@ -2409,7 +2438,7 @@ gone wild and are suddenly taking up your bandwidth.")
 (define-public nzbget
   (package
     (name "nzbget")
-    (version "21.0")
+    (version "21.1")
     (source
      (origin
        (method url-fetch)
@@ -2417,16 +2446,7 @@ gone wild and are suddenly taking up your bandwidth.")
                            "/download/v" version
                            "/nzbget-" version "-src.tar.gz"))
        (sha256
-        (base32
-         "0lwd0pfrs4a5ms193hgz2qiyf7grrc925dw6y0nfc0gkp27db9b5"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
-        '(begin
-           (substitute* "daemon/connect/TlsSocket.cpp"
-             (("gnutls_certificate-verification_status_print")
-              "gnutls_certificate_verification_status_print"))
-           #t))))
+        (base32 "09900x1k0yf4yi2cc0k093advvadyhrkm8rnd8nszhhdp2zc33sf"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2861,16 +2881,65 @@ displays the results in real time.")
              #t)))
        #:configure-flags
        (list
-        ;; Disable bsd-4 licensed plugins.
+        "--disable-ldap"
+        "--disable-mysql"
+        "--disable-systemd"
+
+        ;; Disable BSD-4 licensed plugins.
+        "--disable-blowfish"
         "--disable-des"
-        "--disable-blowfish")))
+
+        ;; Make it usable.  The default configuration is far too minimal to be
+        ;; used with most common VPN set-ups.
+        ;; See <https://wiki.strongswan.org/projects/strongswan/wiki/Autoconf>.
+        "--enable-aesni"
+        "--enable-attr-sql"
+        "--enable-chapoly"
+        "--enable-curl"
+        "--enable-dhcp"
+        "--enable-eap-aka"
+        "--enable-eap-aka-3gpp"
+        "--enable-eap-dynamic"
+        "--enable-eap-identity"
+        "--enable-eap-md5"
+        "--enable-eap-mschapv2"
+        "--enable-eap-peap"
+        "--enable-eap-radius"
+        "--enable-eap-sim"
+        "--enable-eap-sim-file"
+        "--enable-eap-simaka-pseudonym"
+        "--enable-eap-simaka-reauth"
+        "--enable-eap-simaka-sql"
+        "--enable-eap-tls"
+        "--enable-eap-tnc"
+        "--enable-eap-ttls"
+        "--enable-ext-auth"
+        "--enable-farp"
+        "--enable-ha"
+        "--enable-led"
+        "--enable-md4"
+        "--enable-mediation"
+        "--enable-openssl"
+        "--enable-soup"
+        "--enable-sql"
+        "--enable-sqlite"
+        "--enable-xauth-eap"
+        "--enable-xauth-noauth"
+        "--enable-xauth-pam"
+
+        ;; Use libcap by default.
+        "--with-capabilities=libcap")))
     (inputs
      `(("curl" ,curl)
        ("gmp" ,gmp)
+       ("libcap" ,libcap)
        ("libgcrypt" ,libgcrypt)
+       ("libsoup" ,libsoup)
+       ("linux-pam" ,linux-pam)
        ("openssl" ,openssl)))
     (native-inputs
      `(("coreutils" ,coreutils)
+       ("pkg-config" ,pkg-config)
        ("tzdata" ,tzdata-for-tests)))
     (synopsis "IKEv1/v2 keying daemon")
     (description "StrongSwan is an IPsec implementation originally based upon
@@ -2909,7 +2978,7 @@ file for more details.")
 (define-public amule
   (package
     (name "amule")
-    (version "2.3.2")
+    (version "2.3.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2918,9 +2987,7 @@ file for more details.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn"))
-              ;; Patch for adopting crypto++ >= 6.0.
-              (patches (search-patches "amule-crypto-6.patch"))))
+                "1nm4vxgmisn1b6l3drmz0q04x067j2i8lw5rnf0acaapwlp8qwvi"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2956,7 +3023,7 @@ file for more details.")
        ("crypto++" ,crypto++)
        ("libpng" ,libpng)
        ("wxwidgets-gtk2" ,wxwidgets-gtk2)))
-    (home-page "http://amule.org/")
+    (home-page "https://amule.org/")
     (synopsis "Peer-to-peer client for the eD2K and Kademlia networks")
     (description
      "aMule is an eMule-like client for the eD2k and Kademlia peer-to-peer
@@ -3152,14 +3219,14 @@ Features:
 (define-public net-snmp
   (package
     (name "net-snmp")
-    (version "5.9")
+    (version "5.9.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
                                   version "/net-snmp-" version ".tar.gz"))
               (sha256
                (base32
-                "0wb0vyafpspw3mcifkjjmf17r1r80kjvslycscb8nvaxz1k3lc04"))
+                "0gwcyi9qk707jgfsgmdr9w2w3r892fnqaam9v7zxpkg69njd8zzb"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3176,6 +3243,7 @@ Features:
        (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out")
                             "/lib")
+             "--disable-static"
              "--with-logfile=/var/log/snmpd.log"
              (string-append "--with-openssl="
                             (assoc-ref %build-inputs "openssl")))
@@ -3569,7 +3637,7 @@ A very simple IM client working over the DHT.
 (define-public frrouting
   (package
     (name "frrouting")
-    (version "7.5")
+    (version "7.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/FRRouting/frr/releases/"
@@ -3577,7 +3645,7 @@ A very simple IM client working over the DHT.
                                   ".tar.xz"))
               (sha256
                (base32
-                "1a27wvxmc51sr0kchy0hjfpv19imlgrr3s9k48lik9k01g71yrdr"))))
+                "1r7gh5h27ii7d1d0z0x48wx7hs8vvympv3gqvy3cwzg05q5vk9xs"))))
     (build-system gnu-build-system)
     (inputs
      `(("c-ares" ,c-ares)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 272f5bf268..2b4673882b 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2020 divoplade <d@divoplade.fr>
-;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
+;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net>
 ;;; Copyright © 2021 aecepoglu <aecepoglu@fastmail.fm>
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;;
@@ -1341,9 +1341,6 @@ compilers that can directly deal with packages.")
                (base32
                 "0gxjw1bhmjcjzri6x6psqrkbbyq678b69bqfl9i1zswp7cj2lryg"))))
     (build-system dune-build-system)
-    (inputs
-     ;; XXX Should libev be a propagated-input of ocaml-lwt?
-     `(("libev" ,libev)))
     (propagated-inputs
      `(("lwt" ,ocaml-lwt)
        ("ocaml-stdlib-shims" ,ocaml-stdlib-shims)))
@@ -1773,32 +1770,51 @@ module of this library is parameterised by the type of S-expressions.")
 (define-public ocaml-migrate-parsetree
   (package
     (name "ocaml-migrate-parsetree")
-    (version "1.7.3")
+    (version "2.1.0")
     (home-page "https://github.com/ocaml-ppx/ocaml-migrate-parsetree")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url (string-append home-page ".git"))
+             (url home-page)
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0336vz0galjnsazbmkxjwdv1qvdqsx2rgrvp778xgq2fzasz45cx"))))
+         "1cpgdqcs624nd1p271ddakgyibl0ia4f6dzivnz9qdwszsinwr89"))))
     (build-system dune-build-system)
-    (arguments
-     `(#:tests? #f))
+    (arguments `(#:tests? #f))
     (propagated-inputs
      `(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
        ("ocamlbuild" ,ocamlbuild)
        ("ocaml-result" ,ocaml-result)))
-    (properties `((upstream-name . "ocaml-migrate-parsetree")))
+    (properties `((upstream-name . "ocaml-migrate-parsetree")
+                  ;; OCaml 4.07 packages require version 1.*
+                  (ocaml4.07-variant . ,(delay (package-with-ocaml4.07 ocaml-migrate-parsetree-1)))))
     (synopsis "OCaml parsetree converter")
     (description "This library converts between parsetrees of different OCaml
 versions.  For each version, there is a snapshot of the parsetree and conversion
 functions to the next and/or previous version.")
     (license license:lgpl2.1+)))
- 
+
+(define-public ocaml-migrate-parsetree-1
+  (package
+    (inherit ocaml-migrate-parsetree)
+    (name "ocaml-migrate-parsetree-1")
+    (version "1.8.0")
+    (home-page "https://github.com/ocaml-ppx/ocaml-migrate-parsetree")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "16x8sxc4ygxrr1868qpzfqyrvjf3hfxvjzmxmf6ibgglq7ixa2nq"))))
+    (properties '((upstream-name . "ocaml-migrate-parsetree")))))
+
 (define-public ocaml-ppx-tools-versioned
   (package
     (name "ocaml-ppx-tools-versioned")
@@ -1817,7 +1833,7 @@ functions to the next and/or previous version.")
      `(#:test-target "."
        #:package "ppx_tools_versioned"))
     (propagated-inputs
-     `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)))
+     `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree-1)))
     (properties `((upstream-name . "ppx_tools_versioned")))
     (home-page "https://github.com/let-def/ppx_tools_versioned")
     (synopsis "Variant of ppx_tools")
@@ -1980,7 +1996,7 @@ library.")
        #:dune ,ocaml4.07-dune))
     (native-inputs
      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("ocaml-stdio" ,ocaml4.07-stdio)
+       ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("sqlite" ,sqlite)))
@@ -2299,7 +2315,7 @@ for mapping files in memory.  This function is the same as the
 (define-public ocaml-lwt
   (package
     (name "ocaml-lwt")
-    (version "5.1.1")
+    (version "5.4.0")
     (source
       (origin
         (method git-fetch)
@@ -2308,7 +2324,7 @@ for mapping files in memory.  This function is the same as the
                (commit version)))
         (file-name (git-file-name name version))
         (sha256 (base32
-                 "1nl7rdnwfdhwcsm5zpay1nr9y5cbapd9x1qzily7zk9ab4v52m8g"))))
+                 "1ay1zgadnw19r9hl2awfjr22n37l7rzxd9v73pjbahavwm2ay65d"))))
     (build-system dune-build-system)
     (arguments
      `(#:package "lwt"))
@@ -2317,13 +2333,13 @@ for mapping files in memory.  This function is the same as the
        ("ocaml-cppo" ,ocaml-cppo)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("libev" ,libev)
-       ("glib" ,glib)))
+     `(("glib" ,glib)))
     (propagated-inputs
      `(("ocaml-mmap" ,ocaml-mmap)
        ("ocaml-ocplib-endian" ,ocaml-ocplib-endian)
        ("ocaml-result" ,ocaml-result)
-       ("ocaml-seq" ,ocaml-seq)))
+       ("ocaml-seq" ,ocaml-seq)
+       ("libev" ,libev)))
     (home-page "https://github.com/ocsigen/lwt")
     (synopsis "Cooperative threads and I/O in monadic style")
     (description "Lwt provides typed, composable cooperative threads.  These
@@ -2510,10 +2526,10 @@ format.  It can process XML documents without a complete in-memory
 representation of the data.")
     (license license:isc)))
 
-(define-public ocaml4.07-gen
+(define-public ocaml-gen
   (package
-    (name "ocaml4.07-gen")
-    (version "0.5.2")
+    (name "ocaml-gen")
+    (version "0.5.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2522,29 +2538,26 @@ representation of the data.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1h9g508rnj2j8va5nvhamzscp954vrkh0hdf4pn3d10pcfyslfg2"))))
+                "1jzrs0nsdk55annkd2zrk5svi61i3b1nk6qyqdc2y26vnzqvzfg8"))))
     (build-system dune-build-system)
     (arguments
-     `(#:tests? #f; no tests
-       #:package "gen"
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+     `(#:package "gen"
+       #:test-target "."))
     (propagated-inputs
-     `(("ocaml-odoc" ,(package-with-ocaml4.07 ocaml4.07-odoc))))
+     `(("ocaml-odoc" ,ocaml-odoc)))
     (native-inputs
-     `(("ocaml-qtest" ,(package-with-ocaml4.07 ocaml-qtest))
-       ("ocaml-qcheck" ,(package-with-ocaml4.07 ocaml-qcheck))))
+     `(("ocaml-qtest" ,ocaml-qtest)
+       ("ocaml-qcheck" ,ocaml-qcheck)))
     (home-page "https://github.com/c-cube/gen/")
     (synopsis "Iterators for OCaml, both restartable and consumable")
     (description "Gen implements iterators of OCaml, that are both restartable
 and consumable.")
     (license license:bsd-2)))
 
-(define-public ocaml4.07-sedlex
+(define-public ocaml-sedlex
   (package
-    (name "ocaml4.07-sedlex")
-    (version "2.1")
+    (name "ocaml-sedlex")
+    (version "2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2553,36 +2566,37 @@ and consumable.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "05f6qa8x3vhpdz1fcnpqk37fpnyyq13icqsk2gww5idjnh6kng26"))))
+                "0iw3phlaqr27jdf857hmj5v5hdl0vngbb2h37p2ll18sw991fxar"))))
     (build-system dune-build-system)
     (arguments
-     `(#:tests? #f; no tests
+     `(#:tests? #f                      ; no tests
        #:package "sedlex"
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'copy-resources
            (lambda* (#:key inputs #:allow-other-keys)
              (with-directory-excursion "src/generator/data"
+               ;; Newer versions of dune emit an error if files it wants to
+               ;; build already exist. Delete the dune file so dune doesn't
+               ;; complain.
+               (delete-file "dune")
                (for-each
-                 (lambda (file)
-                   (copy-file (assoc-ref inputs file) file))
-                 '("DerivedCoreProperties.txt" "DerivedGeneralCategory.txt"
-                   "PropList.txt")))
+                (lambda (file)
+                  (copy-file (assoc-ref inputs file) file))
+                '("DerivedCoreProperties.txt" "DerivedGeneralCategory.txt"
+                  "PropList.txt")))
              #t))
          (add-before 'build 'chmod
            (lambda _
              (for-each (lambda (file) (chmod file #o644)) (find-files "." ".*"))
-             #t)))
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+             #t)))))
     (native-inputs
-     `(("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))))
+     `(("ocamlbuild" ,ocamlbuild)))
     (propagated-inputs
-     `(("ocaml-gen" ,ocaml4.07-gen)
-       ("ocaml-ppx-tools-versioned"
-        ,(package-with-ocaml4.07 ocaml-ppx-tools-versioned))
-       ("ocaml-uchar" ,(package-with-ocaml4.07 ocaml-uchar))))
+     `(("ocaml-gen" ,ocaml-gen)
+       ("ocaml-ppxlib" ,ocaml-ppxlib)
+       ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)
+       ("ocaml-uchar" ,ocaml-uchar)))
     ;; These three files are needed by src/generator/data/dune, but would be
     ;; downloaded using curl at build time.
     (inputs
@@ -2607,11 +2621,29 @@ and consumable.")
            (sha256
             (base32
              "0gsb1jpj3mnqbjgbavi4l95gl6g4agq58j82km22fdfg63j3w3fk"))))))
+    (properties `((ocaml4.07-variant . ,(delay ocaml4.07-sedlex))))
     (home-page "https://www.cduce.org/download.html#side")
     (synopsis "Lexer generator for Unicode and OCaml")
     (description "Lexer generator for Unicode and OCaml.")
     (license license:expat)))
 
+(define-public ocaml4.07-sedlex
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-sedlex)
+     (name "ocaml-sedlex")
+     (version "2.1")
+     (source (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/ocaml-community/sedlex")
+                     (commit (string-append "v" version))))
+               (file-name (git-file-name name version))
+               (sha256
+                (base32
+                 "05f6qa8x3vhpdz1fcnpqk37fpnyyq13icqsk2gww5idjnh6kng26"))))
+     (properties '()))))
+
 (define-public ocaml-uchar
   (package
     (name "ocaml-uchar")
@@ -2675,6 +2707,51 @@ Functions are also provided to fold over the characters of UTF encoded OCaml
 string values and to directly encode characters in OCaml Buffer.t values.")
     (license license:isc)))
 
+(define-public ocaml-uunf
+  (package
+    (name "ocaml-uunf")
+    (version "13.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri "https://erratique.ch/software/uunf/releases/uunf-13.0.0.tbz")
+       (sha256
+        (base32
+         "1qci04nkp24kdls1z4s8kz5dzgky4nwd5r8345nwdrgwmxhw7ksm"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:build-flags (list "build" "--tests" "true")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'check 'check-data
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-file (assoc-ref inputs "NormalizationTest.txt")
+                        "test/NormalizationTest.txt")
+             #t)))))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)
+       ("opam" ,opam)
+       ("topkg" ,ocaml-topkg)
+       ;; Test data is otherwise downloaded wit curl
+       ("NormalizationTest.txt"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://www.unicode.org/Public/"
+                               version
+                               "/ucd/NormalizationTest.txt"))
+           (sha256
+              (base32 "07g0ya4f6zfzvpp24ccxkb2yq568kh83gls85rjl950nv5fya3nn"))))))
+    (propagated-inputs `(("ocaml-uutf" ,ocaml-uutf)))
+    (home-page "https://erratique.ch/software/uunf")
+    (synopsis "Unicode text normalization for OCaml")
+    (description
+     "Uunf is an OCaml library for normalizing Unicode text.  It supports all
+Unicode normalization forms.  The library is independent from any
+IO mechanism or Unicode text data structure and it can process text
+without a complete in-memory representation.")
+    (license license:isc)))
+
 (define-public ocaml-jsonm
   (package
     (name "ocaml-jsonm")
@@ -3365,7 +3442,7 @@ JSON.")
        #:dune ,ocaml4.07-dune))
     (native-inputs
      `(("ocaml-ounit" ,(package-with-ocaml4.07 ocaml-ounit))
-       ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)))
+       ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))))
     (propagated-inputs
      `(("ocaml-re" ,(package-with-ocaml4.07 ocaml-re))
        ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))
@@ -3459,7 +3536,7 @@ Format module of the OCaml standard library.")
      `(("which" ,which)))
     (propagated-inputs
      `(("ocaml-xmlm" ,(package-with-ocaml4.07 ocaml-xmlm))
-       ("ocaml-sedlex" ,ocaml4.07-sedlex)
+       ("ocaml-sedlex" ,(package-with-ocaml4.07 ocaml-sedlex))
        ("ocaml-easy-format" ,(package-with-ocaml4.07 ocaml-easy-format))
        ("ocaml-base64" ,(package-with-ocaml4.07 ocaml-base64))))
     (home-page "http://piqi.org")
@@ -3760,8 +3837,6 @@ connect an engine to your inputs and rendering functions to get an editor.")
        ("ocaml-lwt-log" ,(package-with-ocaml4.07 ocaml-lwt-log))
        ("ocaml-lwt-react" ,(package-with-ocaml4.07 ocaml-lwt-react))
        ("ocaml-zed" ,ocaml4.07-zed)))
-    (inputs
-     `(("libev" ,libev)))
     (home-page "https://github.com/diml/lambda-term")
     (synopsis "Terminal manipulation library for OCaml")
     (description "Lambda-Term is a cross-platform library for manipulating the
@@ -3809,29 +3884,20 @@ sensitive completion, colors, and more.")
 (define-public ocaml-integers
   (package
     (name "ocaml-integers")
-    (version "0.3.0")
+    (version "0.4.0")
     (home-page "https://github.com/ocamllabs/ocaml-integers")
     (source (origin
-              (method url-fetch)
-              (uri (string-append home-page
-                                  "/releases/download/v0.2.2/integers-"
-                                  version ".tbz"))
-              (file-name (string-append name "-" version ".tbz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "08b1ljw88ny3l0mdq6xmffjk8anfc77igryva5jz1p6f4f746ywk"))))
-    (build-system ocaml-build-system)
+                "0yp3ab0ph7mp5741g7333x4nx8djjvxzpnv3zvsndyzcycspn9dd"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:tests? #f; no tests
-       #:build-flags (list "build")
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
-    (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)))
-    (inputs
-     `(("topkg" ,ocaml-topkg)
-       ("opam" ,opam)))
+     `(#:tests? #f)) ; no tests
     (synopsis "Various signed and unsigned integer types for OCaml")
     (description "The ocaml-integers library provides a number of 8-, 16-, 32-
 and 64-bit signed and unsigned integer types, together with aliases such as
@@ -3841,7 +3907,7 @@ long and size_t whose sizes depend on the host platform.")
 (define-public ocaml-ctypes
   (package
    (name "ocaml-ctypes")
-   (version "0.14.0")
+   (version "0.18.0")
    (home-page "https://github.com/ocamllabs/ocaml-ctypes")
    (source (origin
              (method git-fetch)
@@ -3851,7 +3917,7 @@ long and size_t whose sizes depend on the host platform.")
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "1b2q3h63ngf4x9qp65qwapf2dg9q0mcdah6qjm2q0c7v2p5vysv9"))))
+               "03zrbnl16m67ls0yfhq7a4k4238x6x6b3m456g4dw2yqwc153vks"))))
    (build-system ocaml-build-system)
    (arguments
     `(#:tests? #f; require an old lwt
@@ -3870,10 +3936,12 @@ long and size_t whose sizes depend on the host platform.")
         (delete 'configure))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
+   (propagated-inputs
+    `(("bigarray-compat" ,ocaml-bigarray-compat)
+      ("integers" ,ocaml-integers)))
    (inputs
     `(("libffi" ,libffi)
       ("ounit" ,ocaml-ounit)
-      ("integers" ,ocaml-integers)
       ("lwt" ,ocaml-lwt)
       ("topkg" ,ocaml-topkg)
       ("opam" ,opam)))
@@ -4098,10 +4166,10 @@ syntax checking on dedukti files.")
      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
        ("ocaml-migrate-parsetree"
         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-       ("ocaml-compiler-libs" ,ocaml4.07-compiler-libs)
+       ("ocaml-compiler-libs" ,(package-with-ocaml4.07 ocaml-compiler-libs))
        ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))
-       ("ocaml-stdio" ,ocaml4.07-stdio)
-       ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+       ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
+       ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_inline_test")))
     (synopsis "Syntax extension for writing in-line tests in ocaml code")
     (description "This package contains a syntax extension for writing
@@ -4443,7 +4511,7 @@ Atom.")
      `(("gsl" ,gsl)))
     (propagated-inputs
      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("ocaml-stdio" ,ocaml4.07-stdio)))
+       ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))))
     (home-page "https://mmottl.github.io/gsl-ocaml")
     (synopsis "Bindings to the GNU Scientific Library")
     (description
@@ -4700,58 +4768,64 @@ provided by companion libraries such as
         #:dune ,ocaml4.07-dune))
      (properties '()))))
 
-(define-public ocaml4.07-compiler-libs
+(define-public ocaml-compiler-libs
   (package
-    (name "ocaml4.07-compiler-libs")
-    (version "0.11.0")
+    (name "ocaml-compiler-libs")
+    (version "0.12.3")
     (home-page "https://github.com/janestreet/ocaml-compiler-libs")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url (string-append home-page ".git"))
+             (url home-page)
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03jds7bszh8wwpfwxb3dg0gyr1j1872wxwx1xqhry5ir0i84bg0s"))))
+         "00nrar7h2pyflbdiq6wwwrb4k5jh9iff0jllihzm6ms8d5pspsg5"))))
     (build-system dune-build-system)
-    (arguments
-     `(#:tests? #f ;no tests
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
-    (properties `((upstream-name . "ocaml-compiler-libs")))
+    (arguments `(#:tests? #f)) ;no tests
+    (properties `((upstream-name . "ocaml-compiler-libs")
+                  (ocaml4.07-variant . ,(delay ocaml4.07-compiler-libs))))
     (synopsis "Compiler libraries repackaged")
     (description "This package simply repackages the OCaml compiler libraries
 so they don't expose everything at toplevel.  For instance, @code{Ast_helper}
 is now @code{Ocaml_common.Ast_helper}.")
     (license license:expat)))
 
-(define-public ocaml4.07-stdio
+(define-public ocaml4.07-compiler-libs
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-compiler-libs)
+     (name "ocaml-compiler-libs")
+     (version "0.11.0")
+     (home-page "https://github.com/janestreet/ocaml-compiler-libs")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url home-page)
+              (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "03jds7bszh8wwpfwxb3dg0gyr1j1872wxwx1xqhry5ir0i84bg0s"))))
+     (properties `((upstream-name . "ocaml-compiler-libs"))))))
+
+(define-public ocaml-stdio
   (package
-    (name "ocaml4.07-stdio")
-    (version "0.11.0")
+    (name "ocaml-stdio")
+    (version "0.14.0")
     (home-page "https://github.com/janestreet/stdio")
     (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url (string-append home-page ".git"))
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1facajqhvq34g2wrg368y0ajxd6lrj5b3lyzyj0jhdmraxajjcwn"))))
+     (janestreet-origin "stdio" version
+                        "1hj5hraprqy2i90a690l11yjszvb99j818q3d684ryx6p2lddk0l"))
     (build-system dune-build-system)
     (propagated-inputs
-     `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))))
-    (arguments
-     `(#:tests? #f ;no tests
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-sexplib0" ,ocaml-sexplib0)))
+    (arguments `(#:tests? #f)) ;no tests
+    (properties `((ocaml4.07-variant . ,(delay ocaml4.07-stdio))))
     (synopsis "Standard IO library for OCaml")
     (description
      "Stdio implements simple input/output functionalities for OCaml.  It
@@ -4759,6 +4833,16 @@ re-exports the input/output functions of the OCaml standard libraries using
 a more consistent API.")
     (license license:expat)))
 
+(define-public ocaml4.07-stdio
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-stdio)
+     (version "0.11.0")
+     (source
+      (janestreet-origin "stdio" version
+                         "0pqbp2wy5fgmc38irwvmj9nlcvclb1ix1mp4y7l39bgvvlz303h9"))
+     (properties '()))))
+
 (define-public ocaml-ppx-derivers
   (package
     (name "ocaml-ppx-derivers")
@@ -4786,54 +4870,32 @@ ppx_deriving and ppx_type_conv to inter-operate gracefully when linked
 as part of the same ocaml-migrate-parsetree driver.")
     (license license:bsd-3)))
 
-(define-public ocaml4.07-ppxlib
+(define-public ocaml-ppxlib
   (package
-    (name "ocaml4.07-ppxlib")
-    (version "0.6.0")
+    (name "ocaml-ppxlib")
+    (version "0.22.0")
     (home-page "https://github.com/ocaml-ppx/ppxlib")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url (string-append home-page ".git"))
+             (url home-page)
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0my9x7sxb329h0lzshppdaawiyfbaw6g5f41yiy7bhl071rnlvbv"))))
+         "0kf7lgcwygf6zlx7rwddqpqvasa6v7xiq0bqal8vxlib6lpg074q"))))
     (build-system dune-build-system)
     (propagated-inputs
-     `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("ocaml-compiler-libs" ,ocaml4.07-compiler-libs)
-       ("ocaml-migrate-parsetree"
-        ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-       ("ocaml-ppx-derivers" ,(package-with-ocaml4.07 ocaml-ppx-derivers))
-       ("ocaml-stdio" ,ocaml4.07-stdio)
-       ("ocaml-result" ,(package-with-ocaml4.07 ocaml-result))
-       ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-topfind
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; add the line #directory ".." at the top of each file
-             ;; using #use "topfind";; to be able to find topfind
-             (let* ((findlib-path (assoc-ref inputs "findlib"))
-                    (findlib-libdir
-                     (string-append findlib-path "/lib/ocaml/site-lib")))
-               (substitute* '("test/base/test.ml"
-                              "test/code_path/test.ml"
-                              "test/deriving/test.ml"
-                              "test/driver/attributes/test.ml"
-                              "test/driver/non-compressible-suffix/test.ml"
-                              "test/driver/transformations/test.ml")
-                 (("#use \"topfind\";;" all)
-                  (string-append "#directory \"" findlib-libdir "\"\n"
-                                 all))))
-             #t)))
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-compiler-libs" ,ocaml-compiler-libs)
+       ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+       ("ocaml-stdlib-shims" ,ocaml-stdlib-shims)
+       ("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
+       ("ocaml-stdio" ,ocaml-stdio)
+       ("ocaml-result" ,ocaml-result)
+       ("ocaml-sexplib0" ,ocaml-sexplib0)))
+    (properties `((ocaml4.07-variant . ,(delay ocaml4.07-ppxlib))))
     (synopsis
      "Base library and tools for ppx rewriters")
     (description
@@ -4851,30 +4913,64 @@ OCaml AST in the OCaml syntax;
 @end itemize")
     (license license:expat)))
 
-(define-public ocaml4.07-ppx-compare
+(define-public ocaml4.07-ppxlib
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-ppxlib)
+     (name "ocaml-ppxlib")
+     (version "0.6.0")
+     (home-page "https://github.com/ocaml-ppx/ppxlib")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url home-page)
+              (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0my9x7sxb329h0lzshppdaawiyfbaw6g5f41yiy7bhl071rnlvbv"))))
+     (build-system dune-build-system)
+     (arguments
+      `(#:phases
+        (modify-phases %standard-phases
+          (add-before 'check 'set-topfind
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; add the line #directory ".." at the top of each file
+              ;; using #use "topfind";; to be able to find topfind
+              (let* ((findlib-path (assoc-ref inputs "findlib"))
+                     (findlib-libdir
+                      (string-append findlib-path "/lib/ocaml/site-lib")))
+                (substitute* '("test/base/test.ml"
+                               "test/code_path/test.ml"
+                               "test/deriving/test.ml"
+                               "test/driver/attributes/test.ml"
+                               "test/driver/non-compressible-suffix/test.ml"
+                               "test/driver/transformations/test.ml")
+                  (("#use \"topfind\";;" all)
+                   (string-append "#directory \"" findlib-libdir "\"\n"
+                                  all))))
+              #t)))))
+     (properties '()))))
+
+(define-public ocaml-ppx-compare
   (package
-    (name "ocaml4.07-ppx-compare")
-    (version "0.11.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_compare")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "06bq4m1bsm4jlx4g7wh5m99qky7xm4c2g52kaz6pv25hdn5agi2m"))))
+    (name "ocaml-ppx-compare")
+    (version "0.14.0")
+    (source
+     (janestreet-origin "ppx_compare" version
+                        "0mqxa2s194nif7x4fjn1p5gd9i3bakr8nv27gf8x1g5nmi8q9pmp"))
     (build-system dune-build-system)
-    (propagated-inputs
-      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-migrate-parsetree"
-         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
     (arguments
-     `(#:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
-    (properties `((upstream-name . "ppx_compare")))
+     ;; Tests are currenlty failing
+     ;; (see https://github.com/janestreet/ppx_compare/issues/10)
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("ocaml-base" ,ocaml-base)
+        ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+        ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_compare")
+                  (ocaml4.07-variant . ,(delay ocaml4.07-ppx-compare))))
     (home-page "https://github.com/janestreet/ppx_compare")
     (synopsis "Generation of comparison functions from types")
     (description "Generation of fast comparison functions from type expressions
@@ -4885,6 +4981,24 @@ flexibility by allowing you to override them for a specific type and more safety
 by making sure that you only compare comparable values.")
     (license license:asl2.0)))
 
+(define-public ocaml4.07-ppx-compare
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-ppx-compare)
+     (name "ocaml-ppx-compare")
+     (version "0.11.1")
+     (home-page "https://github.com/janestreet/ppx_compare")
+     (source (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url home-page)
+                     (commit (string-append "v" version))))
+               (file-name (git-file-name name version))
+               (sha256
+                (base32
+                 "06bq4m1bsm4jlx4g7wh5m99qky7xm4c2g52kaz6pv25hdn5agi2m"))))
+     (properties `((upstream-name . "ppx_compare"))))))
+
 (define-public ocaml4.07-fieldslib
   (package
     (name "ocaml4.07-fieldslib")
@@ -4908,7 +5022,7 @@ by making sure that you only compare comparable values.")
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "fieldslib")))
     (home-page "https://github.com/janestreet/fieldslib")
     (synopsis "Syntax extension to record fields")
@@ -4940,7 +5054,7 @@ of a record and create new record values.")
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "variantslib")))
     (home-page "https://github.com/janestreet/variantslib")
     (synopsis "OCaml variants as first class values")
@@ -4966,7 +5080,7 @@ standard library.")
         ("ocaml-fieldslib" ,ocaml4.07-fieldslib)
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (arguments
      `(#:ocaml ,ocaml-4.07
        #:findlib ,ocaml4.07-findlib
@@ -4980,36 +5094,50 @@ and set record fields, iterate and fold over all fields of a record and create
 new record values.")
     (license license:asl2.0)))
 
-(define-public ocaml4.07-ppx-sexp-conv
+(define-public ocaml-ppx-sexp-conv
   (package
-    (name "ocaml4.07-ppx-sexp-conv")
-    (version "0.11.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_sexp_conv")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0pqwnqy1xp309wvdcaax4lg02yk64lq2w03mbgfvf6ps5ry4gis9"))))
+    (name "ocaml-ppx-sexp-conv")
+    (version "0.14.3")
+    (home-page "https://github.com/janestreet/ppx_sexp_conv")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0dbri9d00ydi0dw1cavswnqdmhjaaz80vap29ns2lr6mhhlvyjmj"))))
     (build-system dune-build-system)
     (propagated-inputs
-      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-migrate-parsetree"
-         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
-    (arguments
-     `(#:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
-    (properties `((upstream-name . "ppx_sexp_conv")))
-    (home-page "https://github.com/janestreet/ppx_sexp_conv")
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+       ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_sexp_conv")
+                  (ocaml4.07-variant . ,(delay ocaml4.07-ppx-sexp-conv))))
     (synopsis "Generation of S-expression conversion functions from type definitions")
     (description "This package generates S-expression conversion functions from type
 definitions.")
     (license license:asl2.0)))
 
+(define-public ocaml4.07-ppx-sexp-conv
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-ppx-sexp-conv)
+     (name "ocaml-ppx-sexp-conv")
+     (version "0.11.2")
+     (source (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/janestreet/ppx_sexp_conv")
+                     (commit (string-append "v" version))))
+               (file-name (git-file-name name version))
+               (sha256
+                (base32
+                 "0pqwnqy1xp309wvdcaax4lg02yk64lq2w03mbgfvf6ps5ry4gis9"))))
+     (properties `((upstream-name . "ppx_sexp_conv"))))))
+
 (define-public ocaml4.07-ppx-variants-conv
   (package
     (name "ocaml4.07-ppx-variants-conv")
@@ -5017,30 +5145,30 @@ definitions.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_variants_conv")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/janestreet/ppx_variants_conv")
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
                 "1yc0gsds5m2nv39zga8nnrca2n75rkqy5dz4xj1635ybz20hhbjd"))))
     (build-system dune-build-system)
     (propagated-inputs
-      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-variantslib" ,ocaml4.07-variantslib)
-        ("ocaml-migrate-parsetree"
-         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+     `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
+       ("ocaml-variantslib" ,ocaml4.07-variantslib)
+       ("ocaml-migrate-parsetree"
+        ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
+       ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (arguments
      `(#:ocaml ,ocaml-4.07
        #:findlib ,ocaml4.07-findlib
        #:dune ,ocaml4.07-dune))
     (properties
-      `((upstream-name . "ppx_variants_conv")))
+     `((upstream-name . "ppx_variants_conv")))
     (home-page
-      "https://github.com/janestreet/ppx_variants_conv")
+     "https://github.com/janestreet/ppx_variants_conv")
     (synopsis "Generation of accessor and iteration functions for OCaml variant types")
     (description
-      "This package generates accessors and iteration functions for OCaml
+     "This package generates accessors and iteration functions for OCaml
 variant types.")
     (license license:asl2.0)))
 
@@ -5059,10 +5187,10 @@ variant types.")
     (build-system dune-build-system)
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (arguments
      `(#:ocaml ,ocaml-4.07
        #:findlib ,ocaml4.07-findlib
@@ -5089,10 +5217,10 @@ string conversion.")
     (build-system dune-build-system)
     (inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
+        ("ocaml-ppx-compare" ,(package-with-ocaml4.07 ocaml-ppx-compare))
         ("ocaml-ppx-custom-printf" ,ocaml4.07-ppx-custom-printf)
         ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))))
@@ -5158,11 +5286,11 @@ storage of large amounts of data.")
     (build-system dune-build-system)
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-compare" ,(package-with-ocaml4.07 ocaml-ppx-compare))
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (arguments
      `(#:ocaml ,ocaml-4.07
        #:findlib ,ocaml4.07-findlib
@@ -5197,7 +5325,7 @@ hash functions from type exrpessions and definitions.")
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_enumerate")))
     (home-page "https://github.com/janestreet/ppx_enumerate")
     (synopsis "Generate a list containing all values of a finite type")
@@ -5229,44 +5357,46 @@ many values).")
       `(("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_bench")))
     (home-page "https://github.com/janestreet/ppx_bench")
     (synopsis "Syntax extension for writing in-line benchmarks in ocaml code")
     (description "Syntax extension for writing in-line benchmarks in ocaml code.")
     (license license:asl2.0)))
 
-(define-public ocaml4.07-ppx-here
+(define-public ocaml-ppx-here
   (package
-    (name "ocaml4.07-ppx-here")
-    (version "0.11.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
-                                  (version-major+minor version)
-                                  "/files/ppx_here-v" version ".tar.gz"))
-              (sha256
-               (base32
-                "0wxcak3ay4jpigm3pfdcpr65qw4hxfa8whhkryhcd8gy71x056z5"))))
+    (name "ocaml-ppx-here")
+    (version "0.14.0")
+    (source
+     (janestreet-origin "ppx_here" version
+                        "0b444djy68v6ji0ypwv5l02pkl151qzrgg96lyhl8dxfrzvj1zkj"))
     (build-system dune-build-system)
     (arguments
      ;; broken tests
-     `(#:tests? #f
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
+     `(#:tests? #f))
     (propagated-inputs
-      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-migrate-parsetree"
-         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
-    (properties `((upstream-name . "ppx_here")))
+     `(("ocaml-base" ,ocaml-base)
+        ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+        ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_here")
+                  (ocaml4.07-variant . ,(delay ocaml4.07-ppx-here))))
     (home-page "https://github.com/janestreet/ppx_here")
     (synopsis "Expands [%here] into its location")
     (description
       "Part of the Jane Street's PPX rewriters collection.")
     (license license:asl2.0)))
 
+(define-public ocaml4.07-ppx-here
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-ppx-here)
+     (version "0.11.0")
+     (source
+      (janestreet-origin "ppx_here" version
+                         "0wxcak3ay4jpigm3pfdcpr65qw4hxfa8whhkryhcd8gy71x056z5"))
+     (properties `((upstream-name . "ppx_here"))))))
+
 (define-public ocaml4.07-typerep
   (package
     (name "ocaml4.07-typerep")
@@ -5310,11 +5440,11 @@ many values).")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_sexp_value")))
     (home-page "https://github.com/janestreet/ppx_sexp_value")
     (synopsis "Simplify building s-expressions from ocaml values")
@@ -5341,11 +5471,11 @@ ocaml values.")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_sexp_message")))
     (home-page "https://github.com/janestreet/ppx_sexp_message")
     (synopsis "A ppx rewriter for easy construction of s-expressions")
@@ -5377,7 +5507,7 @@ context such as function arguments.")
     (propagated-inputs
       `(("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_pipebang")))
     (home-page "https://github.com/janestreet/ppx_pipebang")
     (synopsis "Inline reverse application operators `|>` and `|!`")
@@ -5408,7 +5538,7 @@ context such as function arguments.")
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_optional")))
     (home-page "https://github.com/janestreet/ppx_optional")
     (synopsis "Pattern matching on flat options")
@@ -5436,8 +5566,8 @@ else expression.")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-stdio" ,ocaml4.07-stdio)
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_optcomp")))
     (home-page "https://github.com/janestreet/ppx_optcomp")
     (synopsis "Optional compilation for OCaml")
@@ -5446,35 +5576,37 @@ used to handle optional compilations of pieces of code depending of the word
 size, the version of the compiler, ...")
     (license license:asl2.0)))
 
-(define-public ocaml4.07-ppx-let
+(define-public ocaml-ppx-let
   (package
-    (name "ocaml4.07-ppx-let")
-    (version "0.11.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
-                                  (version-major+minor version)
-                                  "/files/ppx_let-v" version ".tar.gz"))
-              (sha256
-               (base32
-                "1wdfw6w4xbg97a35yg6bif9gggxniy9ddnrjfw1a0inkl2yamxkj"))))
+    (name "ocaml-ppx-let")
+    (version "0.14.0")
+    (source
+     (janestreet-origin "ppx_let" version
+                        "1qcrnd86pbr1di5m6z4ps4p15qawwa02jxwz3xfd82hdbjmdwf1s"))
     (build-system dune-build-system)
-    (arguments
-     `(#:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib
-       #:dune ,ocaml4.07-dune))
     (propagated-inputs
-      `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-migrate-parsetree"
-         ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
-    (properties `((upstream-name . "ppx_let")))
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+       ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_let")
+                  (ocaml4.07-variant . ,(delay ocaml4.07-ppx-let))))
     (home-page "https://github.com/janestreet/ppx_let")
     (synopsis "Monadic let-bindings")
     (description "A ppx rewriter for monadic and applicative let bindings,
 match expressions, and if expressions.")
     (license license:asl2.0)))
 
+(define-public ocaml4.07-ppx-let
+  (package-with-ocaml4.07
+   (package
+     (inherit ocaml-ppx-let)
+     (version "0.11.0")
+     (source
+      (janestreet-origin "ppx_let" version
+                         "1wdfw6w4xbg97a35yg6bif9gggxniy9ddnrjfw1a0inkl2yamxkj"))
+
+     (properties `(upstream-name . "ppx_let")))))
+
 (define-public ocaml4.07-ppx-fail
   (package
     (name "ocaml4.07-ppx-fail")
@@ -5494,10 +5626,10 @@ match expressions, and if expressions.")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_fail")))
     (home-page "https://github.com/janestreet/ppx_fail")
     (synopsis "Add location to calls to failwiths")
@@ -5505,6 +5637,28 @@ match expressions, and if expressions.")
 position.")
     (license license:asl2.0)))
 
+(define-public ocaml-ppx-cold
+  (package
+    (name "ocaml-ppx-cold")
+    (version "0.14.0")
+    (home-page "https://github.com/janestreet/ppx_cold")
+    (source
+     (janestreet-origin "ppx_cold" version
+                        "1madfzhpir9amnxmg530n70vll0jrl59vyp71miji73i6b9sy6n2"))
+    (build-system dune-build-system)
+    (arguments `(#:test-target "tests"))
+    (propagated-inputs
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_cold")))
+    (synopsis "Syntax extension for indicating cold path")
+    (description
+     "This package contains an syntax extension to indicate that the code is
+on the cold path and should be kept out of the way to avoid polluting the
+instruction cache on the hot path.  See also
+https://github.com/ocaml/ocaml/issues/8563.")
+    (license license:expat)))
+
 (define-public ocaml4.07-ppx-assert
   (package
     (name "ocaml4.07-ppx-assert")
@@ -5524,12 +5678,12 @@ position.")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-compare" ,(package-with-ocaml4.07 ocaml-ppx-compare))
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_assert")))
     (home-page "https://github.com/janestreet/ppx_assert")
     (synopsis "Assert-like extension nodes that raise useful errors on failure")
@@ -5558,17 +5712,17 @@ useful errors on failure.")
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-ppx-assert" ,ocaml4.07-ppx-assert)
-        ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
+        ("ocaml-ppx-compare" ,(package-with-ocaml4.07 ocaml-ppx-compare))
         ("ocaml-ppx-custom-printf" ,ocaml4.07-ppx-custom-printf)
         ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
         ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
-        ("ocaml-stdio" ,ocaml4.07-stdio)
+        ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))
         ("ocaml-re" ,(package-with-ocaml4.07 ocaml-re))))
     (properties `((upstream-name . "ppx_expect")))
     (home-page "https://github.com/janestreet/ppx_expect")
@@ -5604,7 +5758,7 @@ to denote the expected output.")
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
         ("ocaml-octavius" ,(package-with-ocaml4.07 ocaml-octavius))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_js_style")))
     (home-page "https://github.com/janestreet/ppx_js_style")
     (synopsis "Code style checker for Jane Street Packages")
@@ -5637,7 +5791,7 @@ packages.")
         ("ocaml-typerep" ,ocaml4.07-typerep)
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_typerep_conv")))
     (home-page "https://github.com/janestreet/ppx_typerep_conv")
     (synopsis "Generation of runtime types from type declarations")
@@ -5664,14 +5818,14 @@ from type definitions.")
        #:findlib ,ocaml4.07-findlib
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
-      `(("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
+     `(("ocaml-ppx-compare" ,(package-with-ocaml4.07 ocaml-ppx-compare))
         ("ocaml-ppx-enumerate" ,ocaml4.07-ppx-enumerate)
         ("ocaml-ppx-hash" ,ocaml4.07-ppx-hash)
         ("ocaml-ppx-js-style" ,ocaml4.07-ppx-js-style)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_base")))
     (home-page "https://github.com/janestreet/ppx_base")
     (synopsis "Base set of ppx rewriters")
@@ -5704,10 +5858,10 @@ verification tool.")
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
         ("ocaml-bin-prot" ,ocaml4.07-bin-prot)
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_bin_prot")))
     (home-page "https://github.com/janestreet/ppx_bin_prot")
     (synopsis "Generation of bin_prot readers and writers from types")
@@ -5742,9 +5896,9 @@ functions from type definitions.")
         ("ocaml-ppx-expect" ,ocaml4.07-ppx-expect)
         ("ocaml-ppx-fail" ,ocaml4.07-ppx-fail)
         ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
-        ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
+        ("ocaml-ppx-here" ,(package-with-ocaml4.07 ocaml-ppx-here))
         ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
-        ("ocaml-ppx-let" ,ocaml4.07-ppx-let)
+        ("ocaml-ppx-let" ,(package-with-ocaml4.07 ocaml-ppx-let))
         ("ocaml-ppx-optcomp" ,ocaml4.07-ppx-optcomp)
         ("ocaml-ppx-optional" ,ocaml4.07-ppx-optional)
         ("ocaml-ppx-pipebang" ,ocaml4.07-ppx-pipebang)
@@ -5754,7 +5908,7 @@ functions from type definitions.")
         ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (properties `((upstream-name . "ppx_jane")))
     (home-page "https://github.com/janestreet/ppx_jane")
     (synopsis "Standard Jane Street ppx rewriters")
@@ -5841,7 +5995,7 @@ various Jane Street packages.")
        #:dune ,ocaml4.07-dune))
     (propagated-inputs
       `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-        ("ocaml-stdio" ,ocaml4.07-stdio)))
+        ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))))
     (home-page "https://github.com/janestreet/configurator")
     (synopsis "Helper library for gathering system configuration")
     (description "Configurator is a small library that helps writing OCaml
@@ -5934,10 +6088,10 @@ thousands of times faster than fork.
         ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
         ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib))
         ("ocaml-spawn" ,ocaml4.07-spawn)
-        ("ocaml-stdio" ,ocaml4.07-stdio)
+        ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
         ("ocaml-migrate-parsetree"
          ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
-        ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
+        ("ocaml-ppxlib" ,(package-with-ocaml4.07 ocaml-ppxlib))))
     (home-page "https://github.com/janestreet/core")
     (synopsis "Alternative to OCaml's standard library")
     (description "The Core suite of libraries is an alternative to OCaml's
@@ -5977,11 +6131,11 @@ standard library that was developed by Jane Street.")
         ("ocaml-ppx-hash" ,ocaml4.07-ppx-hash)
         ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
         ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
-        ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
+        ("ocaml-ppx-sexp-conv" ,(package-with-ocaml4.07 ocaml-ppx-sexp-conv))
         ("ocaml-ppx-sexp-message" ,ocaml4.07-ppx-sexp-message)
         ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib))
         ("ocaml-splittable-random" ,ocaml4.07-splittable-random)
-        ("ocaml-stdio" ,ocaml4.07-stdio)
+        ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))
         ("ocaml-typerep" ,ocaml4.07-typerep)
         ("ocaml-variantslib" ,ocaml4.07-variantslib)
         ("ocaml-migrate-parsetree"
@@ -6017,8 +6171,6 @@ the full Core is not available, such as in Javascript.")
     (build-system dune-build-system)
     (arguments
      `(#:package "markup"))
-    (inputs
-     `(("libev" ,libev)))
     (propagated-inputs
      `(("ocaml-bisect-ppx" ,ocaml-bisect-ppx)
        ("ocaml-uchar" ,ocaml-uchar)
@@ -6121,7 +6273,7 @@ combinators.")
          "0900vli5kw7s5kdam0n4cqsfsfqb7mdb3azn3i55595gilg1vyn8"))))
     (build-system dune-build-system)
     (propagated-inputs
-     `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+     `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree-1)
        ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)
        ("ocaml-ounit" ,ocaml-ounit)))
     (arguments
@@ -6267,7 +6419,7 @@ library FFTW.")
      `(("openblas" ,openblas)
        ("lapack" ,lapack)
        ("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
-       ("ocaml-stdio" ,ocaml4.07-stdio)))
+       ("ocaml-stdio" ,(package-with-ocaml4.07 ocaml-stdio))))
     (home-page "https://mmottl.github.io/lacaml/")
     (synopsis
      "OCaml-bindings to BLAS and LAPACK")
@@ -6360,7 +6512,7 @@ variants.")
        ("ocaml-cmdliner" ,ocaml-cmdliner)
        ("ocaml-re" ,ocaml-re)
        ("ocaml-result" ,ocaml-result)
-       ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
+       ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree-1)
        ("ocaml-odoc" ,ocaml-odoc)
        ("ocaml-version" ,ocaml-version)))
     (native-inputs
@@ -6477,3 +6629,62 @@ provides support to program with time varying values: declarative events and
  signals.  React doesn't define any primitive event or signal, it lets the
 client chooses the concrete timeline.")
     (license license:lgpl2.1+)))
+
+(define-public ocaml-bigstringaf
+  (package
+    (name "ocaml-bigstringaf")
+    (version "0.7.0")
+    (home-page "https://github.com/inhabitedtype/bigstringaf")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1q1sqxzdnlrpl95ccrhl7lwy3zswgd9rbn19ildclh0lyi2vazbj"))))
+    (build-system dune-build-system)
+    (arguments
+     '(#:test-target "."))
+    (propagated-inputs
+     `(("ocaml-bigarray-compat" ,ocaml-bigarray-compat)))
+    (native-inputs
+     `(("ocaml-alcotest" ,ocaml-alcotest)
+       ("pkg-config" ,pkg-config)))
+    (synopsis
+     "Bigstring intrinsics and fast blits based on memcpy/memmove")
+    (description
+     "The OCaml compiler has a bunch of intrinsics for Bigstrings, but they're
+not widely-known, sometimes misused, and so programs that use Bigstrings are
+slower than they have to be.  And even if a library got that part right and
+exposed the intrinsics properly, the compiler doesn't have any fast blits
+between Bigstrings and other string-like types.  @code{bigstringaf} provides
+these missing pieces.")
+    (license license:bsd-3)))
+
+(define-public ocaml-syntax-shims
+  (package
+    (name "ocaml-syntax-shims")
+    (version "1.0.0")
+    (home-page "https://github.com/ocaml-ppx/ocaml-syntax-shims")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0l1i8z95qgb0lxlrv3yb5nkp391hqsiyi4r91p12k3xmggqixagf"))))
+    (build-system dune-build-system)
+    (properties
+     `((upstream-name . "ocaml-syntax-shims")))
+    (synopsis
+     "Backport new syntax to older OCaml versions")
+    (description
+     "This packages backports new features of the language to older
+compilers, such as let+.")
+    (license license:expat)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 1cea8ed83d..7229723ab8 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -132,8 +132,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.3.0")
-        (commit "9f2b2c432b834c8057ce2f4119599d36197bc063")
-        (revision 2))
+        (commit "50dfbbf8ef52111067071c788e19fc21d54c40d6")
+        (revision 3))
     (package
       (name "guix")
 
@@ -149,7 +149,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "09w6b4hqcxaj6x1q6m1q8vlp4dyk6anfv8p6mfwmpqis81cspphn"))
+                  "128608qyza3p769h7awp183c2mi9gdx2b1xidvmjilfkphlg1lyi"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -518,40 +518,6 @@ the Nix package manager.")
                (invoke "make" "install-binPROGRAMS")))
            (delete 'wrap-program)))))))
 
-
-(define-public guile2.2-guix
-  (package
-    (inherit guix)
-    (name "guile2.2-guix")
-    (native-inputs
-     `(("guile" ,guile-2.2)
-       ("gnutls" ,guile2.2-gnutls)
-       ("guile-gcrypt" ,guile2.2-gcrypt)
-       ("guile-json" ,guile2.2-json)
-       ("guile-lib" ,guile2.2-lib)
-       ("guile-sqlite3" ,guile2.2-sqlite3)
-       ("guile-ssh" ,guile2.2-ssh)
-       ("guile-git" ,guile2.2-git)
-       ("guile-zlib" ,guile2.2-zlib)
-       ("guile-lzlib" ,guile2.2-lzlib)
-       ,@(fold alist-delete (package-native-inputs guix)
-               '("guile" "gnutls" "guile-gcrypt" "guile-json"
-                 "guile-lib" "guile-sqlite3" "guile-ssh" "guile-git"
-                 "guile-zlib" "guile-lzlib"))))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ,@(alist-delete "guile" (package-inputs guix))))
-    (propagated-inputs
-     `(("gnutls" ,gnutls)
-       ("guile-gcrypt" ,guile2.2-gcrypt)
-       ("guile-json" ,guile2.2-json)
-       ("guile-lib" ,guile2.2-lib)
-       ("guile-sqlite3" ,guile2.2-sqlite3)
-       ("guile-ssh" ,guile2.2-ssh)
-       ("guile-git" ,guile2.2-git)
-       ("guile-zlib" ,guile2.2-zlib)
-       ("guile-lzlib" ,guile2.2-lzlib)))))
-
 (define-public guile3.0-guix
   (deprecated-package "guile3.0-guix" guix))
 
@@ -1061,8 +1027,8 @@ environments.")
     (license (list license:gpl3+ license:agpl3+ license:silofl1.1))))
 
 (define-public guix-build-coordinator
-  (let ((commit "1305724c7ea3c2bb3e557918d5a1b17d572aa110")
-        (revision "27"))
+  (let ((commit "f9af463e81d9fcc712d7c58a491101d8d17457e8")
+        (revision "30"))
     (package
       (name "guix-build-coordinator")
       (version (git-version "0" revision commit))
@@ -1073,7 +1039,7 @@ environments.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "179n33mkhl6f2fv0gyn7sdm3k4hhm1hvca6dgc923d0w7zv4p577"))
+                  "08ysa7a33fsm069gxqnvbf1yzqcsky6gk2pifamkq0wq1dls661r"))
                 (file-name (string-append name "-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 17e2a7f7fe..d523d75a82 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -41,6 +41,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages freeipmi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mpi)
@@ -57,14 +58,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20210422")
+    (version "20210522")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "1s4ynlsh5fr5vxcf5xm45fcfyzp62zclzjq5b7rbwrs4chxnlgmy"))))
+       (base32 "1qdgywilyy2vy8lcl7f5qa7cm0b2ddnwwx9n8xcfbv9wj0z3wrpg"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -135,10 +136,37 @@ execution is also possible.")
     (home-page "https://github.com/leahneukirchen/xe")
     (license license:public-domain)))
 
+(define-public xjobs
+  (package
+    (name "xjobs")
+    (version "20200726")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.maier-komor.de/xjobs/xjobs-"
+                    version ".tgz"))
+              (sha256
+               (base32
+                "0ay6gn43pnm7r1jamwgpycl67bjg5n87ncl27jb01w2x6x70z0i3"))))
+    (build-system gnu-build-system)
+    (arguments `(#:tests? #f)) ;; No tests
+    (native-inputs
+     `(("flex" ,flex)
+       ("which" ,which)))
+    (home-page "http://www.maier-komor.de/xjobs.html")
+    (properties `((release-monitoring-url . ,home-page)))
+    (synopsis
+     "Parallel execution of jobs with several useful options")
+    (description
+     "xjobs reads job descriptions line by line and executes them in
+parallel.  It limits the number of parallel executing jobs and starts new jobs
+when jobs finish.")
+    (license license:gpl2+)))
+
 (define-public slurm
   (package
    (name "slurm")
-   (version "20.11.3")
+   (version "20.11.7")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -146,7 +174,7 @@ execution is also possible.")
                   version ".tar.bz2"))
             (sha256
              (base32
-              "1s70x6yh60sx63dgmp5rlhq8jcz7kxv9pk8gbs9v1jg8zps5h5bk"))
+              "1fdjihg1x7ks5l77yjv14a4mg6r0v8c3zk1dcxkhrhq3n4dc9nbs"))
             (modules '((guix build utils)))
             (snippet
              '(begin
diff --git a/gnu/packages/patches/amule-crypto-6.patch b/gnu/packages/patches/amule-crypto-6.patch
deleted file mode 100644
index 21a86ab0fa..0000000000
--- a/gnu/packages/patches/amule-crypto-6.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From d1d1368c7909ffd8423730afaa811ce7b6a3a8aa Mon Sep 17 00:00:00 2001
-From: Tommy Jerry Mairo <tommy.mairo@gmail.com>
-Date: Sun, 4 Feb 2018 12:42:00 -0800
-Subject: [PATCH 1/2] Bugfix: API mismatch with crypto++ 6.0.0
-
----
- src/ClientCreditsList.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/ClientCreditsList.cpp b/src/ClientCreditsList.cpp
-index 3bea9fe2d..a7ae1e34c 100644
---- a/src/ClientCreditsList.cpp
-+++ b/src/ClientCreditsList.cpp
-@@ -312,7 +312,7 @@ void CClientCreditsList::InitalizeCrypting()
- 		// calculate and store public key
- 		CryptoPP::RSASSA_PKCS1v15_SHA_Verifier pubkey(*static_cast<CryptoPP::RSASSA_PKCS1v15_SHA_Signer *>(m_pSignkey));
- 		CryptoPP::ArraySink asink(m_abyMyPublicKey, 80);
--		pubkey.DEREncode(asink);
-+		pubkey.AccessMaterial().Save(asink);
- 		m_nMyPublicKeyLen = asink.TotalPutLength();
- 		asink.MessageEnd();
- 	} catch (const CryptoPP::Exception& e) {
-
-From 88ba0ac952b78382445f2fff73c6792c0474dc62 Mon Sep 17 00:00:00 2001
-From: Tommy Jerry Mairo <tommy.mairo@gmail.com>
-Date: Wed, 21 Mar 2018 11:56:28 -0700
-Subject: [PATCH 2/2] Update: Change AccessMaterial to GetMaterial
-
----
- src/ClientCreditsList.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/ClientCreditsList.cpp b/src/ClientCreditsList.cpp
-index a7ae1e34c..69e881fd8 100644
---- a/src/ClientCreditsList.cpp
-+++ b/src/ClientCreditsList.cpp
-@@ -312,7 +312,7 @@ void CClientCreditsList::InitalizeCrypting()
- 		// calculate and store public key
- 		CryptoPP::RSASSA_PKCS1v15_SHA_Verifier pubkey(*static_cast<CryptoPP::RSASSA_PKCS1v15_SHA_Signer *>(m_pSignkey));
- 		CryptoPP::ArraySink asink(m_abyMyPublicKey, 80);
--		pubkey.AccessMaterial().Save(asink);
-+		pubkey.GetMaterial().Save(asink);
- 		m_nMyPublicKeyLen = asink.TotalPutLength();
- 		asink.MessageEnd();
- 	} catch (const CryptoPP::Exception& e) {
diff --git a/gnu/packages/patches/emacs-geiser-autoload-activate-implementation.patch b/gnu/packages/patches/emacs-geiser-autoload-activate-implementation.patch
deleted file mode 100644
index 47d513b3a3..0000000000
--- a/gnu/packages/patches/emacs-geiser-autoload-activate-implementation.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 9fd3174cead8bfa17a8413bffa38362853d71a02 Mon Sep 17 00:00:00 2001
-From: jao <jao@gnu.org>
-Date: Mon, 5 Apr 2021 23:06:56 +0100
-Subject: [PATCH] autoload geiser activate implementation
-
----
- elisp/geiser.el | 3 +++
- readme.org      | 4 ++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/elisp/geiser.el b/elisp/geiser.el
-index 887b8da..96c1dd6 100644
---- a/elisp/geiser.el
-+++ b/elisp/geiser.el
-@@ -104,6 +104,9 @@
- ;;;###autoload
- (autoload 'geiser-mode--maybe-activate "geiser-mode")
-
-+;;;###autoload
-+(autoload 'geiser-activate-implementation "geiser-impl")
-+
- ;;;###autoload
- (mapc (lambda (group)
-         (custom-add-load group (symbol-name group))
---
-GitLab
diff --git a/gnu/packages/patches/emacs-geiser-guile-auto-activate.patch b/gnu/packages/patches/emacs-geiser-guile-auto-activate.patch
deleted file mode 100644
index 44837f90df..0000000000
--- a/gnu/packages/patches/emacs-geiser-guile-auto-activate.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 93ef7101fdfcc7eac6f465b4b9788c384a323c14 Mon Sep 17 00:00:00 2001
-From: jao <jao@gnu.org>
-Date: Mon, 5 Apr 2021 20:17:50 +0100
-Subject: [PATCH] fix: auto-activate guile implementation
-
----
- geiser-guile.el | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/geiser-guile.el b/geiser-guile.el
-index 340442b..deeb76f 100644
---- a/geiser-guile.el
-+++ b/geiser-guile.el
-@@ -25,6 +25,7 @@
- (require 'geiser-syntax)
- (require 'geiser-custom)
- (require 'geiser-repl)
-+(require 'geiser-impl)
- (require 'geiser-base)
- (require 'geiser-eval)
- (require 'geiser-edit)
-@@ -474,6 +475,9 @@ it spawn a server thread."
- 
- (geiser-impl--add-to-alist 'regexp "\\.scm$" 'guile t)
- 
-+;;;###autoload
-+(geiser-activate-implementation 'guile)
-+
- ;;;###autoload
- (autoload 'run-guile "geiser-guile" "Start a Geiser Guile REPL." t)
- 
--- 
-GitLab
-
diff --git a/gnu/packages/patches/freebayes-devendor-deps.patch b/gnu/packages/patches/freebayes-devendor-deps.patch
deleted file mode 100644
index 9886de11fb..0000000000
--- a/gnu/packages/patches/freebayes-devendor-deps.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-This patch is original to Guix, ongoing work to upstream bits as possible.
-
-From 9acc56db5e7469f5976be38b52ba4993de98ee38 Mon Sep 17 00:00:00 2001
-From: Efraim Flashner <efraim@flashner.co.il>
-Date: Sun, 17 Jan 2021 13:27:17 +0200
-Subject: [PATCH] devendor-dependants
-
----
- meson.build | 84 +++++++++++++++++++++++++++++++++++++++++------------
- 1 file changed, 66 insertions(+), 18 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index f6bf242..bded4af 100644
---- a/meson.build
-+++ b/meson.build
-@@ -9,8 +9,13 @@ project('freebayes', ['cpp', 'c'],
- 
- zlib_dep = dependency('zlib')
- lzma_dep = dependency('liblzma')
-+simde_dep = dependency('simde')
- bzip2_dep = dependency('bz2lib', required: false)
- htslib_dep = dependency('htslib', required : false)
-+tabixpp_dep = dependency('tabixpp', required : false)
-+fastahack_dep = dependency('fastahack', required : false)
-+smithwaterman_dep = dependency('smithwaterman', required : false)
-+vcflib_dep = dependency('vcflib', required: false)
- thread_dep = dependency('threads')
- 
- if htslib_dep.found()
-@@ -59,6 +64,56 @@ else
- ]
- endif
- 
-+if tabixpp_dep.found()
-+  tabixpp_includes = ''
-+  tabixpp_src = []
-+else
-+  tabixpp_includes = [
-+    'vcflib/tabixpp',
-+    ]
-+  tabixpp_src = [
-+    'vcflib/tabixpp/tabix.cpp',
-+    ]
-+endif
-+
-+if vcflib_dep.found()
-+  vcflib_includes = ''
-+  vcflib_src = []
-+else
-+  vcflib_includes = [
-+    'vcflib/src',
-+    'vcflib/multichoose',
-+    'vcflib/filevercmp',
-+    ]
-+  vcflib_src = [
-+    'vcflib/src/Variant.cpp',
-+    ]
-+endif
-+
-+if fastahack_dep.found()
-+  fastahack_src = []
-+else
-+  fastahack_src = [
-+    'vcflib/fastahack/Fasta.cpp',
-+    'vcflib/src/split.cpp',
-+    ]
-+endif
-+
-+if smithwaterman_dep.found()
-+  smithwaterman_includes = ''
-+  smithwaterman_src = []
-+else
-+  smithwaterman_includes = [
-+    'vcflib/smithwaterman',
-+    ]
-+  smithwaterman_src = [
-+    'vcflib/smithwaterman/SmithWatermanGotoh.cpp',
-+    'vcflib/smithwaterman/disorder.cpp',
-+    'vcflib/smithwaterman/Repeats.cpp',
-+    'vcflib/smithwaterman/LeftAlign.cpp',
-+    'vcflib/smithwaterman/IndelAllele.cpp',
-+    ]
-+endif
- 
- 
- #
-@@ -105,23 +160,18 @@ seqlib_src = [
- ]
- 
- vcflib_src = [
--    'vcflib/tabixpp/tabix.cpp',
--    'vcflib/src/Variant.cpp',
--    'vcflib/smithwaterman/SmithWatermanGotoh.cpp',
--    'vcflib/smithwaterman/disorder.cpp',
--    'vcflib/smithwaterman/Repeats.cpp',
--    'vcflib/smithwaterman/LeftAlign.cpp',
--    'vcflib/smithwaterman/IndelAllele.cpp',
-+    vcflib_src,
-+    tabixpp_src,
-+    smithwaterman_src,
- ]
- 
- bamleftalign_src = [
-     'src/bamleftalign.cpp',
-     'src/IndelAllele.cpp',
-     'contrib/SeqLib/src/BamWriter.cpp',
--    'vcflib/fastahack/Fasta.cpp',
--    'vcflib/smithwaterman/LeftAlign.cpp',
--    'vcflib/smithwaterman/IndelAllele.cpp',
--    'vcflib/src/split.cpp',
-+    fastahack_src,
-+    smithwaterman_src,
-+    vcflib_src,
-     'src/LeftAlign.cpp',
- ]
- 
-@@ -134,11 +184,9 @@ incdir = include_directories(
-     'ttmath',
-     'contrib',
-     'contrib/SeqLib',
--    'vcflib/src',
--    'vcflib/tabixpp',
--    'vcflib/smithwaterman',
--    'vcflib/multichoose',
--    'vcflib/filevercmp')
-+    tabixpp_includes,
-+    smithwaterman_includes,
-+    vcflib_includes)
- 
- c_args = ['-fpermissive','-w']
- cpp_args = ['-fpermissive','-w','-Wc++14-compat']
-@@ -152,7 +200,7 @@ executable('freebayes',
-            include_directories : incdir,
-            cpp_args : cpp_args,
-            c_args :   c_args,
--           dependencies: [zlib_dep, lzma_dep, htslib_dep, thread_dep],
-+           dependencies: [zlib_dep, lzma_dep, simde_dep, htslib_dep, tabixpp_dep, smithwaterman_dep, vcflib_dep, thread_dep],
-            install: true
-           )
- 
-@@ -165,7 +213,7 @@ executable('bamleftalign',
-            include_directories : incdir,
-            cpp_args : cpp_args,
-            c_args :   c_args,
--           dependencies: [zlib_dep, lzma_dep, htslib_dep, thread_dep],
-+           dependencies: [zlib_dep, lzma_dep, simde_dep, htslib_dep, tabixpp_dep, fastahack_dep, smithwaterman_dep, vcflib_dep, thread_dep],
-            install: true
-           )
- 
--- 
-2.30.0
-
diff --git a/gnu/packages/patches/lksctp-tools-1.0.18-fix-header-file-name.patch b/gnu/packages/patches/lksctp-tools-1.0.18-fix-header-file-name.patch
deleted file mode 100644
index 1ebe6c803d..0000000000
--- a/gnu/packages/patches/lksctp-tools-1.0.18-fix-header-file-name.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 378560050a8f93786c590cc99a55461666205b61 Mon Sep 17 00:00:00 2001
-From: Xin Long <lucien.xin@gmail.com>
-Date: Fri, 24 Aug 2018 01:13:32 +0800
-Subject: [PATCH] build: fix netinet/sctp.h not to be installed
-
-After libcnetinet_HEADERS was set to sctp.h.in, netinet/sctp.h can
-no longer be installed into ${includedir}.
-
-Since "AC_CONFIG_HEADERS([src/include/netinet/sctp.h])" is already
-added into configure.ac, there's no need to generate sctp.h by
-automake.
-
-So we simply set libcnetinet_HEADERS back to sctp.h.
-
-Fixes: 9607dd85e70a ("netinet/sctp.h: dynamically build based on system setup")
-Signed-off-by: Xin Long <lucien.xin@gmail.com>
-Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
----
- src/include/netinet/Makefile.am | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/include/netinet/Makefile.am b/src/include/netinet/Makefile.am
-index ca0aac2..965db8c 100644
---- a/src/include/netinet/Makefile.am
-+++ b/src/include/netinet/Makefile.am
-@@ -11,5 +11,4 @@ libcnetinetdir = $(includedir)/netinet
- # API.
- include_HEADERS =
- 
--libcnetinet_HEADERS = sctp.h.in
--BUILT_SOURCES = sctp.h
-+libcnetinet_HEADERS = sctp.h
diff --git a/gnu/packages/patches/minimap2-aarch64-support.patch b/gnu/packages/patches/minimap2-aarch64-support.patch
deleted file mode 100644
index 95db8579d6..0000000000
--- a/gnu/packages/patches/minimap2-aarch64-support.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-This patch should be removed with the next release. There is WIP upstream
-support for proper support of more architectures, including aarch64 and powerpc64le.
-
-diff --git a/Makefile b/Makefile
-index ed341f6..94dbd85 100644
---- a/Makefile
-+++ b/Makefile
-@@ -6,20 +6,18 @@ PROG=		minimap2
- PROG_EXTRA=	sdust minimap2-lite
- LIBS=		-lm -lz -lpthread
- 
--ifeq ($(arm_neon),) # if arm_neon is not defined
--ifeq ($(sse2only),) # if sse2only is not defined
--	OBJS+=ksw2_extz2_sse41.o ksw2_extd2_sse41.o ksw2_exts2_sse41.o ksw2_extz2_sse2.o ksw2_extd2_sse2.o ksw2_exts2_sse2.o ksw2_dispatch.o
--else                # if sse2only is defined
--	OBJS+=ksw2_extz2_sse.o ksw2_extd2_sse.o ksw2_exts2_sse.o
--endif
--else				# if arm_neon is defined
-+ifneq ($(arm_neon),) 		# if arm_neon is defined
- 	OBJS+=ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o
--    INCLUDES+=-Isse2neon
--ifeq ($(aarch64),)	#if aarch64 is not defined
- 	CFLAGS+=-D_FILE_OFFSET_BITS=64 -mfpu=neon -fsigned-char
--else				#if aarch64 is defined
-+	INCLUDES+=-Isse2neon
-+else ifneq ($(aarch64),)	#if aarch64 is defined
-+	OBJS+=ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o
- 	CFLAGS+=-D_FILE_OFFSET_BITS=64 -fsigned-char
--endif
-+	INCLUDES+=-Isse2neon
-+else ifneq ($(sse2only),) 	# if sse2only is defined
-+	OBJS+=ksw2_extz2_sse.o ksw2_extd2_sse.o ksw2_exts2_sse.o
-+else                		# none of the above
-+	OBJS+=ksw2_extz2_sse41.o ksw2_extd2_sse41.o ksw2_exts2_sse41.o ksw2_extz2_sse2.o ksw2_extd2_sse2.o ksw2_exts2_sse2.o ksw2_dispatch.o
- endif
- 
- .PHONY:all extra clean depend
-@@ -46,9 +44,12 @@ sdust:sdust.c kalloc.o kalloc.h kdq.h kvec.h kseq.h ketopt.h sdust.h
- 
- # SSE-specific targets on x86/x86_64
- 
--ifeq ($(arm_neon),)   # if arm_neon is defined, compile this target with the default setting (i.e. no -msse2)
-+ifneq ($(arm_neon),)   # if arm_neon is defined, compile this target with the default setting (i.e. no -msse2)
-+ksw2_ll_sse.o:ksw2_ll_sse.c ksw2.h kalloc.h
-+else ifneq ($(aarch64),)
- ksw2_ll_sse.o:ksw2_ll_sse.c ksw2.h kalloc.h
--		$(CC) -c $(CFLAGS) -msse2 $(CPPFLAGS) $(INCLUDES) $< -o $@
-+else
-+	$(CC) -c $(CFLAGS) -msse2 $(CPPFLAGS) $(INCLUDES) $< -o $@
- endif
- 
- ksw2_extz2_sse41.o:ksw2_extz2_sse.c ksw2.h kalloc.h
diff --git a/gnu/packages/patches/mosaicatcher-unbundle-htslib.patch b/gnu/packages/patches/mosaicatcher-unbundle-htslib.patch
new file mode 100644
index 0000000000..262895ddcf
--- /dev/null
+++ b/gnu/packages/patches/mosaicatcher-unbundle-htslib.patch
@@ -0,0 +1,49 @@
+--- a/src/CMakeLists.txt	2021-05-28 13:07:25.655107983 +0200
++++ b/src/CMakeLists.txt	2021-05-28 13:09:55.764025497 +0200
+@@ -21,24 +21,6 @@
+ 
+ 
+ 
+-### Link HTSlib
+-
+-ExternalProject_Add(htslib
+-    PREFIX ${CMAKE_BINARY_DIR}/htslib
+-    GIT_REPOSITORY "https://github.com/samtools/htslib.git"
+-    GIT_TAG "1.3.1"
+-    UPDATE_COMMAND ""
+-    BUILD_IN_SOURCE 1
+-    CONFIGURE_COMMAND ""
+-    BUILD_COMMAND make
+-    INSTALL_COMMAND make install prefix=${CMAKE_BINARY_DIR}/htslib
+-    LOG_DOWNLOAD 1
+-)
+-link_directories (${CMAKE_BINARY_DIR}/htslib/lib)
+-include_directories (${CMAKE_BINARY_DIR}/htslib/include)
+-
+-
+-
+ ### Set version
+ 
+ # Get the current working branch
+@@ -64,13 +46,6 @@
+ 
+ # 2. Boost version from find_package (Boost_VERSION)
+ 
+-# 3. Get HTSlib version from git
+-execute_process(
+-    COMMAND git describe --always
+-    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/htslib
+-    OUTPUT_VARIABLE HTSLIB_VERSION
+-    OUTPUT_STRIP_TRAILING_WHITESPACE
+-)
+ set(HTSLIB_VERSION "1.3.1 ${HTSLIB_VERSION}")
+ 
+ # 4. write version.hpp file
+@@ -105,7 +80,6 @@
+ add_executable (mosaic main.cpp ${HEADER_FILES})
+ target_link_libraries (mosaic LINK_PUBLIC ${Boost_LIBRARIES})
+ target_link_libraries (mosaic LINK_PUBLIC hts)
+-add_dependencies (mosaic htslib)
+ 
+ 
+ ### Doxygen API documentation
diff --git a/gnu/packages/patches/nsis-source-date-epoch.patch b/gnu/packages/patches/nsis-source-date-epoch.patch
new file mode 100644
index 0000000000..744c2a8011
--- /dev/null
+++ b/gnu/packages/patches/nsis-source-date-epoch.patch
@@ -0,0 +1,23 @@
+Honour SOURCE_DATE_EPOCH for VERSION default
+
+Merged upstream as cd3f1024a37a332f1d4fa96a817ca80dfa2a478c, but not yet in a
+release. GitHub PR: https://github.com/kichik/nsis/pull/13
+
+Python snippet from: https://reproducible-builds.org/docs/source-date-epoch/#python
+
+
+diff --git a/SConstruct b/SConstruct
+index e8252c9..41786f2 100755
+--- a/SConstruct
++++ b/SConstruct
+@@ -95,8 +95,8 @@ default_doctype = 'html'
+ if defenv.WhereIs('hhc', os.environ['PATH']):
+ 	default_doctype = 'chm'
+ 
+-from time import strftime, gmtime
+-cvs_version = strftime('%d-%b-%Y.cvs', gmtime())
++import time
++cvs_version = time.strftime('%d-%b-%Y.cvs', time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))))
+ 
+ opts = Variables()
+ 
diff --git a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
index 760ab97568..155ba35efd 100644
--- a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
+++ b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
@@ -1,28 +1,32 @@
-From 0c57874ebb5982154da127ae338f9190b1581804 Mon Sep 17 00:00:00 2001
+From 942730ce7148cd54a30d4a606ce71a2654c8a2e0 Mon Sep 17 00:00:00 2001
 From: Leo Prikler <leo.prikler@student.tugraz.at>
-Date: Fri, 26 Jun 2020 18:20:04 +0200
-Subject: [PATCH] ppsspp: disable upgrade and gold
+Date: Sat, 5 Jun 2021 22:47:00 -0400
+Subject: [PATCH] ppsspp: Remove upgrade code and gold support.
 
+Original patch from Leo Prikler.
+Rebased on master (commit 69fa20744958aef8da9ca052ba7675fdc1636e46) by
+Maxim Cournoyer.
 ---
  Core/Config.cpp             | 11 ------
  Core/Config.h               |  2 --
  Qt/QtMain.cpp               |  6 ----
  SDL/SDLMain.cpp             |  6 ----
  UI/DevScreens.cpp           |  3 --
- UI/GameSettingsScreen.cpp   |  1 -
+ UI/GameSettingsScreen.cpp   |  2 --
  UI/MainScreen.cpp           | 70 +------------------------------------
  UI/MiscScreens.cpp          | 31 ++--------------
  UWP/PPSSPP_UWPMain.cpp      |  6 ----
  Windows/MainWindowMenu.cpp  |  2 +-
  Windows/main.cpp            |  6 ----
  android/jni/app-android.cpp |  6 ----
- 12 files changed, 5 insertions(+), 145 deletions(-)
+ ios/main.mm                 |  6 ----
+ 13 files changed, 5 insertions(+), 152 deletions(-)
 
 diff --git a/Core/Config.cpp b/Core/Config.cpp
-index 1c53e8e57..2fa74a6b8 100644
+index 74be99d75..b14aa22c7 100644
 --- a/Core/Config.cpp
 +++ b/Core/Config.cpp
-@@ -439,7 +439,6 @@ static ConfigSetting generalSettings[] = {
+@@ -467,7 +467,6 @@ static ConfigSetting generalSettings[] = {
  	ConfigSetting("IgnoreBadMemAccess", &g_Config.bIgnoreBadMemAccess, true, true),
  	ConfigSetting("CurrentDirectory", &g_Config.currentDirectory, ""),
  	ConfigSetting("ShowDebuggerOnLoad", &g_Config.bShowDebuggerOnLoad, false),
@@ -30,7 +34,7 @@ index 1c53e8e57..2fa74a6b8 100644
  	ConfigSetting("Language", &g_Config.sLanguageIni, &DefaultLangRegion),
  	ConfigSetting("ForceLagSync2", &g_Config.bForceLagSync, false, true, true),
  	ConfigSetting("DiscordPresence", &g_Config.bDiscordPresence, true, true, false),  // Or maybe it makes sense to have it per-game? Race conditions abound...
-@@ -1293,16 +1292,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) {
+@@ -1323,16 +1322,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) {
  		upgradeMessage = "";
  	}
  
@@ -40,7 +44,7 @@ index 1c53e8e57..2fa74a6b8 100644
 -	// upgrade number in the ini.
 -	if (iRunCount % 10 == 0 && bCheckForNewVersion) {
 -		std::shared_ptr<http::Download> dl = g_DownloadManager.StartDownloadWithCallback(
--			"http://www.ppsspp.org/version.json", "", &DownloadCompletedCallback);
+-			"http://www.ppsspp.org/version.json", Path(), &DownloadCompletedCallback);
 -		dl->SetHidden(true);
 -	}
 -
@@ -48,10 +52,10 @@ index 1c53e8e57..2fa74a6b8 100644
  	bSaveSettings = true;
  
 diff --git a/Core/Config.h b/Core/Config.h
-index 13bce8a36..70d6c8aaf 100644
+index 79323eefc..d47bec0c7 100644
 --- a/Core/Config.h
 +++ b/Core/Config.h
-@@ -101,7 +101,6 @@ struct Config {
+@@ -103,7 +103,6 @@ struct Config {
  
  	bool bFastMemory;
  	int iCpuCore;
@@ -59,16 +63,16 @@ index 13bce8a36..70d6c8aaf 100644
  	bool bForceLagSync;
  	bool bFuncReplacements;
  	bool bHideSlowWarnings;
-@@ -540,4 +539,3 @@ std::string CreateRandMAC();
+@@ -542,4 +541,3 @@ std::string CreateRandMAC();
  // TODO: Find a better place for this.
  extern http::Downloader g_DownloadManager;
  extern Config g_Config;
 -
 diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp
-index 5be0cefa0..b11cb1c64 100644
+index b642f7442..a880d7c94 100644
 --- a/Qt/QtMain.cpp
 +++ b/Qt/QtMain.cpp
-@@ -218,12 +218,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+@@ -219,12 +219,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
  	case SYSPROP_HAS_FILE_BROWSER:
  	case SYSPROP_HAS_FOLDER_BROWSER:
  		return true;
@@ -78,14 +82,14 @@ index 5be0cefa0..b11cb1c64 100644
 -#else
 -		return false;
 -#endif
+ 	case SYSPROP_CAN_JIT:
+ 		return true;
  	default:
- 		return false;
- 	}
 diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp
-index 98b56fe91..6af0fcb1a 100644
+index f0f74f979..f963f36e9 100644
 --- a/SDL/SDLMain.cpp
 +++ b/SDL/SDLMain.cpp
-@@ -380,12 +380,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+@@ -381,12 +381,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
  	switch (prop) {
  	case SYSPROP_HAS_BACK_BUTTON:
  		return true;
@@ -95,14 +99,14 @@ index 98b56fe91..6af0fcb1a 100644
 -#else
 -		return false;
 -#endif
+ 	case SYSPROP_CAN_JIT:
+ 		return true;
  	default:
- 		return false;
- 	}
 diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp
-index 8daac5bc8..c0c09ce79 100644
+index 29baf2f2e..926692363 100644
 --- a/UI/DevScreens.cpp
 +++ b/UI/DevScreens.cpp
-@@ -605,9 +605,6 @@ void SystemInfoScreen::CreateViews() {
+@@ -635,9 +635,6 @@ void SystemInfoScreen::CreateViews() {
  #ifdef _M_SSE
  	buildConfig->Add(new InfoItem("_M_SSE", StringFromFormat("0x%x", _M_SSE)));
  #endif
@@ -113,35 +117,36 @@ index 8daac5bc8..c0c09ce79 100644
  	ViewGroup *cpuExtensionsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
  	cpuExtensionsScroll->SetTag("DevSystemInfoCPUExt");
 diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp
-index 2f1e157ee..38c586b06 100644
+index 393e33cd9..d07d00d45 100644
 --- a/UI/GameSettingsScreen.cpp
 +++ b/UI/GameSettingsScreen.cpp
-@@ -914,7 +914,6 @@ void GameSettingsScreen::CreateViews() {
+@@ -922,8 +922,6 @@ void GameSettingsScreen::CreateViews() {
  		}
  	}
  #endif
 -	systemSettings->Add(new CheckBox(&g_Config.bCheckForNewVersion, sy->T("VersionCheck", "Check for new versions of PPSSPP")));
- 	const std::string bgPng = GetSysDirectory(DIRECTORY_SYSTEM) + "background.png";
- 	const std::string bgJpg = GetSysDirectory(DIRECTORY_SYSTEM) + "background.jpg";
- 	if (File::Exists(bgPng) || File::Exists(bgJpg)) {
+-
+ 	systemSettings->Add(new Choice(sy->T("Restore Default Settings")))->OnClick.Handle(this, &GameSettingsScreen::OnRestoreDefaultSettings);
+ 	systemSettings->Add(new CheckBox(&g_Config.bEnableStateUndo, sy->T("Savestate slot backups")));
+ 	static const char *autoLoadSaveStateChoices[] = { "Off", "Oldest Save", "Newest Save", "Slot 1", "Slot 2", "Slot 3", "Slot 4", "Slot 5" };
 diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp
-index ca870ab8f..84cde88ac 100644
+index f88509276..51b21b640 100644
 --- a/UI/MainScreen.cpp
 +++ b/UI/MainScreen.cpp
-@@ -1064,11 +1064,7 @@ void MainScreen::CreateViews() {
+@@ -1080,11 +1080,7 @@ void MainScreen::CreateViews() {
  	sprintf(versionString, "%s", PPSSPP_GIT_VERSION);
  	rightColumnItems->SetSpacing(0.0f);
  	AnchorLayout *logos = new AnchorLayout(new AnchorLayoutParams(FILL_PARENT, 60.0f, false));
 -	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
--		logos->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
+-		logos->Add(new ImageView(ImageID("I_ICONGOLD"), "", IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
 -	} else {
--		logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
+-		logos->Add(new ImageView(ImageID("I_ICON"), "", IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
 -	}
-+	logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
- 	logos->Add(new ImageView(ImageID("I_LOGO"), IS_DEFAULT, new AnchorLayoutParams(180, 64, 64, -5.0f, NONE, NONE, false)));
++        logos->Add(new ImageView(ImageID("I_ICON"), "", IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false)));
+ 	logos->Add(new ImageView(ImageID("I_LOGO"), "PPSSPP", IS_DEFAULT, new AnchorLayoutParams(180, 64, 64, -5.0f, NONE, NONE, false)));
  
  #if !defined(MOBILE_DEVICE)
-@@ -1089,11 +1085,6 @@ void MainScreen::CreateViews() {
+@@ -1107,11 +1103,6 @@ void MainScreen::CreateViews() {
  	rightColumnItems->Add(new Choice(mm->T("Game Settings", "Settings")))->OnClick.Handle(this, &MainScreen::OnGameSettings);
  	rightColumnItems->Add(new Choice(mm->T("Credits")))->OnClick.Handle(this, &MainScreen::OnCredits);
  	rightColumnItems->Add(new Choice(mm->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg);
@@ -153,7 +158,7 @@ index ca870ab8f..84cde88ac 100644
  
  #if !PPSSPP_PLATFORM(UWP)
  	// Having an exit button is against UWP guidelines.
-@@ -1118,32 +1109,6 @@ void MainScreen::CreateViews() {
+@@ -1136,32 +1127,6 @@ void MainScreen::CreateViews() {
  	} else if (tabHolder_->GetVisibility() != V_GONE) {
  		root_->SetDefaultFocusView(tabHolder_);
  	}
@@ -186,7 +191,7 @@ index ca870ab8f..84cde88ac 100644
  }
  
  UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
-@@ -1151,30 +1116,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
+@@ -1169,30 +1134,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
  	return UI::EVENT_DONE;
  }
  
@@ -217,7 +222,7 @@ index ca870ab8f..84cde88ac 100644
  void MainScreen::sendMessage(const char *message, const char *value) {
  	// Always call the base class method first to handle the most common messages.
  	UIScreenWithBackground::sendMessage(message, value);
-@@ -1390,15 +1331,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) {
+@@ -1396,15 +1337,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) {
  	return UI::EVENT_DONE;
  }
  
@@ -234,10 +239,10 @@ index ca870ab8f..84cde88ac 100644
  	LaunchBrowser("https://www.ppsspp.org");
  	return UI::EVENT_DONE;
 diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp
-index a7284654b..2413d6c89 100644
+index 901a5fb09..9d067aee6 100644
 --- a/UI/MiscScreens.cpp
 +++ b/UI/MiscScreens.cpp
-@@ -539,11 +539,7 @@ void LogoScreen::render() {
+@@ -661,11 +661,7 @@ void LogoScreen::render() {
  	char temp[256];
  	// Manually formatting UTF-8 is fun.  \xXX doesn't work everywhere.
  	snprintf(temp, sizeof(temp), "%s Henrik Rydg%c%crd", cr->T("created", "Created by"), 0xC3, 0xA5);
@@ -248,9 +253,9 @@ index a7284654b..2413d6c89 100644
 -	}
 +	dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
  	dc.Draw()->DrawImage(ImageID("I_LOGO"), bounds.centerX() + 40, bounds.centerY() - 30, 1.5f, textColor, ALIGN_CENTER);
- 	//dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", xres / 2, yres / 2 - 30, textColor, ALIGN_CENTER);
+ 	//dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", bounds.w / 2, bounds.h / 2 - 30, textColor, ALIGN_CENTER);
  	dc.SetFontScale(1.0f, 1.0f);
-@@ -579,10 +575,6 @@ void CreditsScreen::CreateViews() {
+@@ -701,10 +697,6 @@ void CreditsScreen::CreateViews() {
  	// Really need to redo this whole layout with some linear layouts...
  
  	int rightYOffset = 0;
@@ -261,14 +266,14 @@ index a7284654b..2413d6c89 100644
  	root_->Add(new Button(cr->T("PPSSPP Forums"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 158, false)))->OnClick.Handle(this, &CreditsScreen::OnForums);
  	root_->Add(new Button(cr->T("Discord"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 232, false)))->OnClick.Handle(this, &CreditsScreen::OnDiscord);
  	root_->Add(new Button("www.ppsspp.org", new AnchorLayoutParams(260, 64, 10, NONE, NONE, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnPPSSPPOrg);
-@@ -591,20 +583,7 @@ void CreditsScreen::CreateViews() {
+@@ -713,20 +705,7 @@ void CreditsScreen::CreateViews() {
  #if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS)
  	root_->Add(new Button(cr->T("Share PPSSPP"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, rightYOffset + 158, false)))->OnClick.Handle(this, &CreditsScreen::OnShare);
  #endif
 -	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
--		root_->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-		root_->Add(new ImageView(ImageID("I_ICONGOLD"), "", IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
 -	} else {
--		root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-		root_->Add(new ImageView(ImageID("I_ICON"), "", IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
 -	}
 -}
 -
@@ -279,11 +284,11 @@ index a7284654b..2413d6c89 100644
 -	LaunchBrowser("https://central.ppsspp.org/buygold");
 -#endif
 -	return UI::EVENT_DONE;
-+	root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
++        root_->Add(new ImageView(ImageID("I_ICON"), "", IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
  }
  
  UI::EventReturn CreditsScreen::OnTwitter(UI::EventParams &e) {
-@@ -794,11 +773,7 @@ void CreditsScreen::render() {
+@@ -916,11 +895,7 @@ void CreditsScreen::render() {
  
  	// TODO: This is kinda ugly, done on every frame...
  	char temp[256];
@@ -297,10 +302,10 @@ index a7284654b..2413d6c89 100644
  
  	UIContext &dc = *screenManager()->getUIContext();
 diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp
-index 0ba7fac4b..d1b687c47 100644
+index 29afda806..b7028fc0c 100644
 --- a/UWP/PPSSPP_UWPMain.cpp
 +++ b/UWP/PPSSPP_UWPMain.cpp
-@@ -433,12 +433,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+@@ -426,12 +426,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
  		return false;
  	case SYSPROP_HAS_BACK_BUTTON:
  		return true;
@@ -310,14 +315,14 @@ index 0ba7fac4b..d1b687c47 100644
 -#else
 -		return false;
 -#endif
+ 	case SYSPROP_CAN_JIT:
+ 		return true;
  	default:
- 		return false;
- 	}
 diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp
-index 979a60ecb..a57927544 100644
+index c0d790e06..e8de4f956 100644
 --- a/Windows/MainWindowMenu.cpp
 +++ b/Windows/MainWindowMenu.cpp
-@@ -1393,7 +1393,7 @@ namespace MainWindow {
+@@ -1395,7 +1395,7 @@ namespace MainWindow {
  		{
  			W32Util::CenterWindow(hDlg);
  			HWND versionBox = GetDlgItem(hDlg, IDC_VERSION);
@@ -327,10 +332,10 @@ index 979a60ecb..a57927544 100644
  			SetWindowText(versionBox, ConvertUTF8ToWString(windowText).c_str());
  		}
 diff --git a/Windows/main.cpp b/Windows/main.cpp
-index 4d948cfe5..e609cc1e0 100644
+index ecfe18fa4..3261151d2 100644
 --- a/Windows/main.cpp
 +++ b/Windows/main.cpp
-@@ -301,12 +301,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+@@ -304,12 +304,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
  		return true;
  	case SYSPROP_HAS_BACK_BUTTON:
  		return true;
@@ -340,26 +345,43 @@ index 4d948cfe5..e609cc1e0 100644
 -#else
 -		return false;
 -#endif
+ 	case SYSPROP_CAN_JIT:
+ 		return true;
  	default:
- 		return false;
- 	}
 diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp
-index 10fdf97e5..736b1fa66 100644
+index 2fad16224..8ed6dd9cd 100644
 --- a/android/jni/app-android.cpp
 +++ b/android/jni/app-android.cpp
-@@ -437,12 +437,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+@@ -490,12 +490,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
  	case SYSPROP_HAS_FOLDER_BROWSER:
  		// Uses OPEN_DOCUMENT_TREE to let you select a folder.
- 		return androidVersion >= 21;
+ 		return androidVersion >= 21;  // when ACTION_OPEN_DOCUMENT_TREE was added
 -	case SYSPROP_APP_GOLD:
 -#ifdef GOLD
 -		return true;
 -#else
 -		return false;
 -#endif
- 	default:
- 		return false;
- 	}
+ 	case SYSPROP_CAN_JIT:
+ 		return true;
+ 	case SYSPROP_ANDROID_SCOPED_STORAGE:
+diff --git a/ios/main.mm b/ios/main.mm
+index e53b7c7ab..fe69647ed 100644
+--- a/ios/main.mm
++++ b/ios/main.mm
+@@ -148,12 +148,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 	switch (prop) {
+ 		case SYSPROP_HAS_BACK_BUTTON:
+ 			return false;
+-		case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-			return true;
+-#else
+-			return false;
+-#endif
+ 		case SYSPROP_CAN_JIT:
+ 			return g_jitAvailable;
+ 
 -- 
-2.30.1
+2.31.1
 
diff --git a/gnu/packages/patches/wgetpaste-update-bpaste.patch b/gnu/packages/patches/wgetpaste-update-bpaste.patch
deleted file mode 100644
index f92a0c17ed..0000000000
--- a/gnu/packages/patches/wgetpaste-update-bpaste.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Tue, 01 Sep 2020 04:23:25 +0200
-Subject: [PATCH] Update bpaste URL & regular expressions.
-
-diff -Naur wgetpaste-2.30/wgetpaste wgetpaste-2.30a/wgetpaste
---- wgetpaste-2.30/wgetpaste	2020-07-31 23:56:05.000000000 +0200
-+++ wgetpaste-2.30a/wgetpaste	2020-09-01 04:22:37.499898403 +0200
-@@ -16,7 +16,7 @@
- SERVICES="codepad bpaste dpaste gists snippets"
- # bpaste
- ENGINE_bpaste=pinnwand
--URL_bpaste="https://bpaste.net/"
-+URL_bpaste="https://bpa.st/"
- DEFAULT_EXPIRATION_bpaste="1week"
- DEFAULT_LANGUAGE_bpaste="text"
- # codepad
-@@ -194,8 +194,8 @@
- xml+velocity xml xquery xslt xtend yaml"
- EXPIRATIONS_pinnwand="1day 1week 1month never"
- POST_pinnwand="submit=Paste! % % lexer expiry % code"
--REGEX_LOC_pinnwand="\(/show/[^ ]*\).*$|https://bpaste.net\1"
--REGEX_RAW_pinnwand='s|^\(https\?://[^/]*/\)show\(/[^ ]*/\?\)$|\1raw\2|'
-+REGEX_LOC_pinnwand="\(/[^ ]*\).*$|https://bpa.st\1"
-+REGEX_RAW_pinnwand='s|^\(https\?://[^/]*\)\(/[^ ]*/\?\)$|\1/raw\2|'
- 
- ### errors
- die() {
diff --git a/gnu/packages/pep.scm b/gnu/packages/pep.scm
index 289796a377..aa0d786d87 100644
--- a/gnu/packages/pep.scm
+++ b/gnu/packages/pep.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,18 +20,20 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix git-download)
-  #:use-module (guix hg-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mail) ; for libetpan
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sequoia)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
@@ -40,15 +42,16 @@
 (define-public yml2
   (package
     (name "yml2")
-    (version "2.6.3")
-    (source (origin
-       (method hg-fetch)
-       (uri (hg-reference
-             (url "https://pep.foundation/dev/repos/yml2")
-             (changeset version)))
-       (file-name (string-append name "-" version "-checkout"))
+    (version "2.7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitea.pep.foundation/fdik/yml2")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "10jjjyq1mz18zkzvxd62aba00h69gd9cglisqcvb81j67ml2v1bx"))))
+        (base32 "0fm1x1fv4lwcpbn59s55idzf7x173n59xpz8rlrxalmi6gvsjijr"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-lxml" ,python-lxml)))
@@ -64,9 +67,9 @@ shell provides options to redirect the output into a pipe or a file.")
 (define fdik-libetpan
   ;; pEp Engine requires libetpan with a set of patches that have not been
   ;; upstreamed yet.
-  (let ((commit "210ba2b3b310b8b7a6ee4a4e35e50f7fa379643f") ; 2020-06-03
-        (checksum "00000nij3ray7nssvq0lzb352wmnab8ffzk7dgff2c68mvjbh1l6")
-        (revision "5"))
+  (let ((commit "0b80c39dd1504462ba3a39dc53db7c960c3a63f3") ; 2020-11-27
+        (checksum "0gv3ivaziadybjlf6rfpv1j5z5418243v5cvl4swlxd2njsh7gjk")
+        (revision "6"))
    (package
     (inherit libetpan)
     (name "fdik-libetpan")
@@ -76,7 +79,7 @@ shell provides options to redirect the output into a pipe or a file.")
        (inherit (package-source libetpan))
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fdik/libetpan")
+             (url "https://gitea.pep.foundation/pEp.foundation/libetpan")
              (commit commit)))
        (file-name (string-append name "-" version))
        (sha256 (base32 checksum)))))))
@@ -84,23 +87,24 @@ shell provides options to redirect the output into a pipe or a file.")
 (define-public pep-engine
   (package
     (name "pep-engine")
-    (version "2.0.6")
+    (version "2.1.34")
     (source
      (origin
-       (method hg-fetch)
-       (uri (hg-reference
-             (url "https://pep.foundation/dev/repos/pEpEngine")
-             (changeset "ebb62ba262dd"))) ;; r4721
-       (file-name (string-append name "-" version "-checkout"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitea.pep.foundation/pEp.foundation/pEpEngine")
+             (commit (string-append "Release_" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0ljf79j4ng7l8w6pbdcrfzb4yk51zslypvq0n72ib1d7grqvnagi"))))
+        (base32 "00q96y9j985qfa382acsz02i0zf6ayq2gmg8z70jzl04isg1h3cn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:parallel-build? #f
+       #:make-flags '("NDEBUG=1") ; release build
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
-           ;; pEpEngie does not use autotools and configure,
+           ;; pEpEngine does not use autotools and configure,
            ;; but a local.conf. We need to tweak the values there.
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
@@ -131,7 +135,7 @@ OPENPGP=SEQUOIA
        ("libiconv" ,libiconv)
        ("nettle" ,nettle)
        ("openssl" ,openssl)
-       ("sequoia" ,sequoia4pEp)
+       ("sequoia" ,sequoia)
        ("sqlite3" ,sqlite)
        ("util-linux" ,util-linux "lib"))) ;; uuid.h
     (home-page "https://pep.foundation/")
@@ -145,20 +149,21 @@ privacy).")
 (define-public libpepadapter
   (package
     (name "libpepadapter")
-    (version "2.0.2")
+    (version "2.1.21")
     (source
      (origin
-       (method hg-fetch)
-       (uri (hg-reference
-             (url "https://pep.foundation/dev/repos/libpEpAdapter")
-             (changeset "e8fe371c870a"))) ;; r168
-       (file-name (string-append name "-" version "-checkout"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitea.pep.foundation/pEp.foundation/libpEpAdapter")
+             (commit (string-append "Release_" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1mlpavjbnmslvmr5jxcvpjgb2x40nhmxjb10hza3kn4qzj0k1pjz"))))
+        (base32 "09ljj3x09y99wc47n063hpn62zi8cdvdha82rnaypvirrlga6a5w"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
        #:tests? #f ;; building the tests fails
+       #:make-flags '("NDEBUG=1") ; release build
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
@@ -168,7 +173,7 @@ privacy).")
              (let ((out (assoc-ref outputs "out"))
                    (engine (assoc-ref inputs "pep-engine")))
                (with-output-to-file "local.conf"
-                 (lambda _ ;()
+                 (lambda _
                    (format #t "
 PREFIX=~a
 ENGINE_LIB_PATH=~a/lib
@@ -186,16 +191,16 @@ ENGINE_INC_PATH=~a/include
 (define-public python-pep-adapter
   (package
     (name "python-pep-adapter")
-    (version "2.0.5")
+    (version "2.1.3")
     (source
      (origin
-       (method hg-fetch)
-       (uri (hg-reference
-             (url "https://pep.foundation/dev/repos/pEpPythonAdapter")
-             (changeset "66df0e5b9405"))) ;; r374
-       (file-name (string-append name "-" version "-checkout"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitea.pep.foundation/pEp.foundation/pEpPythonAdapter")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "107i1s8jf8gyhpmqcs64q9csxa3fwc8g7s57iyccqb4czw8gph6d"))))
+        (base32 "0ssz21p1k7xx3snmd4g3ggzq565rlzdmp90l2mph6yfp1y65p39s"))))
     (build-system python-build-system)
     (arguments
      `(;; Adding configure-flags does not work, running `build_ext`
@@ -223,12 +228,24 @@ ENGINE_INC_PATH=~a/include
                 (string-append a "os.getenv('LIBRARY_PATH', '').split(os.pathsep)\n"))
                (("^(\\s+SYS_SHARES = )\\['/usr.*" _ a)
                 (string-append a "['" (assoc-ref %build-inputs "asn1c") "/share']\n")))
+             #t))
+         (add-before 'build 'remove-wheel-requirement
+           ;; we dont't build a wheel
+           (lambda _
+             (substitute* "setup.cfg"
+               ((" wheel *>= [0-9.]*") ""))
+             (substitute* "pyproject.toml"
+               (("\"wheel *>=.*\"") ""))
              #t)))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-forked" ,python-pytest-forked)))
     (inputs
-     `(("asn1c" ,asn1c)
-       ("boost-python" ,boost-with-python3)
+     `(("boost-python" ,boost-with-python3)
        ("libpepadapter" ,libpepadapter)
-       ("pep-engine" ,pep-engine)))
+       ("pep-engine" ,pep-engine)
+       ("python-setuptools-scm" ,python-setuptools-scm/next)
+       ("util-linux" ,util-linux "lib"))) ;; uuid.h
     (home-page "https://pep.foundation/")
     (synopsis "Python adapter for p≡p (pretty Easy Privacy)")
     (description "The p≡p Python adapter is an adaptor interface to the p≡p
@@ -238,35 +255,26 @@ ENGINE_INC_PATH=~a/include
 (define-public java-pep-adapter
   (package
     (name "java-pep-adapter")
-    (version "2.0.5")
+    (version "2.1.23")
     (source
      (origin
-       (method hg-fetch)
-       (uri (hg-reference
-             (url "https://pep.foundation/dev/repos/pEpJNIAdapter")
-             (changeset "534537c9cd50"))) ;; r763
-       (file-name (string-append name "-" version "-checkout"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitea.pep.foundation/pEp.foundation/pEpJNIAdapter")
+             (commit (string-append "Release_" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "107ldpssc80bq8kndn2n000000gphj4lqagaiv3fddlfph4vji48"))))
+        (base32 "1sw3a5ggxcrkghvpp0a6h2lz461x55ldgfw5y4pw7c3gk5wynvjk"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
      `(#:test-target "test"
-       #:make-flags (list "doxy-all")
+       #:make-flags '("NDEBUG=1" "all" "doc") ; release build
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'fix-includes
-           (lambda _
-             (substitute* "src/jniutils.hh"
-               (("#pragma once\n" line)
-                (string-append line
-                               "#include <mutex>\n"
-                               "#include <cassert>\n"
-                               "#include <cstring>\n")))
-             #t))
          (add-before 'configure 'pin-shared-lib-path
            (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "src/foundation/pEp/jniadapter/AbstractEngine.java"
+             (substitute* "src/java/foundation/pEp/jniadapter/AbstractEngine.java"
                (("System.loadLibrary\\(\"pEpJNI\"\\);")
                 (string-append "System.load(\""
                                (assoc-ref outputs "out")
@@ -281,7 +289,7 @@ ENGINE_INC_PATH=~a/include
                    (libadapter (assoc-ref inputs "libpepadapter"))
                    (openjdk  (assoc-ref inputs "openjdk")))
                (with-output-to-file "local.conf"
-                 (lambda _ ;()
+                 (lambda _
                    (format #t "
 PREFIX=~a
 ENGINE_LIB_PATH=~a/lib
@@ -296,16 +304,18 @@ JAVA_HOME=~a
                (substitute* "src/Makefile"  ;; suppress some warnings
                  (("^\\s+OLD_JAVA=") "    xxx_OLD_JAVA="))
                #t)))
+         (add-before 'build 'build-codegen
+           ;; run codegen first to allow parallel build of other parts
+           (lambda _
+             (invoke "make" "-C" "src" "create-dirs" "codegen")))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (libout (string-append out "/lib/"))
                     (javaout (string-append out "/share/java/")))
-               (mkdir-p libout)
-               (mkdir-p javaout)
-               (copy-file "src/libpEpJNI.so"
-                          (string-append libout "/libpEpJNI.so"))
-               (copy-file "src/pEp.jar" (string-append javaout "/pEp.jar"))
+               (install-file "dist/libpEpJNI.a" libout)
+               (install-file "dist/libpEpJNI.so" libout)
+               (install-file "dist/pEp.jar" javaout)
                #t)))
          (add-after 'install 'install-docs
            (lambda* (#:key outputs #:allow-other-keys)
@@ -320,13 +330,14 @@ JAVA_HOME=~a
                #t))))))
     (native-inputs
      `(("doxygen" ,doxygen)
+       ("graphviz" ,graphviz)
        ("openjdk" ,openjdk9 "jdk")
        ("which" ,which)
        ("yml2" ,yml2)))
     (inputs
      `(("libpepadapter" ,libpepadapter)
        ("pep-engine" ,pep-engine)
-       ("util-linux" ,util-linux))) ;; uuid.h
+       ("util-linux" ,util-linux "lib"))) ;; uuid.h
     (home-page "https://pep.foundation/")
     (synopsis "Java adapter for p≡p (pretty Easy Privacy)")
     (description "The p≡p JNI adapter is a Java adapter interface to the p≡p
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 7575d3e515..0d94566925 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
-;;; Copyright © 2016, 2018, 2020 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2018, 2020, 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
@@ -666,6 +666,25 @@ presence, and the first one found is executed.  With an optional parameter,
 all known commands are checked.")
     (license (package-license perl))))
 
+(define-public perl-bsd-resource
+  (package
+   (name "perl-bsd-resource")
+   (version "1.2911")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "https://cpan.metacpan.org/authors/id/J/JH/JHI/BSD-Resource-"
+           version ".tar.gz"))
+     (sha256
+      (base32 "0g8c7825ng2m0yz5sy6838rvfdl8j3vm29524wjgf66ccfhgn74x"))))
+   (build-system perl-build-system)
+   (home-page "https://metacpan.org/release/BSD-Resource")
+   (synopsis "BSD process resource limit and priority functions")
+   (description "This package provides procedures to get and set resource
+limits like @code{getrlimit} and @code{setpriority}.")
+   (license license:artistic2.0)))
+
 (define-public perl-b-hooks-endofscope
   (package
     (name "perl-b-hooks-endofscope")
@@ -1917,6 +1936,32 @@ of the style used by the Git version control system.")
 and writing of @code{.ini}-style configuration files.")
     (license (package-license perl))))
 
+(define-public perl-const-fast
+  (package
+    (name "perl-const-fast")
+    (version "0.014")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/L/LE/LEONT/"
+             "Const-Fast-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nwlldgrx86yn7y6a53cqgvzm2ircsvxg1addahlcy6510x9a1gq"))))
+    (inputs
+     `(("perl-module-build-tiny" ,perl-module-build-tiny)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    ;; Needed for tests.
+    (native-inputs
+     `(("perl-sub-exporter-progressive" ,perl-sub-exporter-progressive)))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Const-Fast")
+    (synopsis "Facility for creating read-only scalars, arrays, and hashes")
+    (description "This package provides prodecures to create read-only
+scalars, arrays, and hashes.")
+    (license (package-license perl))))
+
 (define-public perl-context-preserve
   (package
     (name "perl-context-preserve")
@@ -2481,6 +2526,27 @@ generating unique ids.  These ids are coded with a Base62 system to make them
 short and handy (e.g. to use it as part of a URL).")
     (license (package-license perl))))
 
+(define-public perl-data-uuid
+  (package
+    (name "perl-data-uuid")
+    (version "1.226")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/R/RJ/RJBS/"
+                    "Data-UUID-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0lv4k4ibxwkw7zz9hw97s34za9nvjxb4kbmgmx5sj4fll3zmfg89"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Data-UUID")
+    (synopsis "Universally Unique Identifiers generator")
+    (description "@code{Data::UUID} provides a framework for generating
+Universally Unique Identifiers (UUIDs), also known as Globally Unique
+Identifiers (GUIDs).  A UUID is 128 bits long, and is guaranteed to be
+different from all other UUIDs/GUIDs generated until 3400 CE.")
+    (license (package-license perl))))
+
 (define-public perl-data-dump
   (package
     (name "perl-data-dump")
@@ -4178,6 +4244,27 @@ and alternative installers with the `installler` option.  But it's written in
 only about 40% as many lines of code and with zero non-core dependencies.")
     (license (package-license perl))))
 
+(define-public perl-extutils-manifest
+  (package
+    (name "perl-extutils-manifest")
+    (version "1.73")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://cpan.metacpan.org/authors/id/E/ET/ETHER/"
+                    "ExtUtils-Manifest-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1y5siyw9sbxq6kdmsjfsx0mrbqb6xr8kmniwli7xc6hbmhyhcp6w"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/ExtUtils-Manifest")
+    (synopsis "Utilities to write and check a MANIFEST file")
+    (description "This package contains functions to manipulate a MANIFEST
+file.  The package exports no functions by default.  The following are exported
+on request: mkmanifest, manifind, manicheck, filecheck, fullcheck, skipcheck,
+maniread, maniskip, manicopy, maniadd.")
+    (license (package-license perl))))
+
 (define-public perl-extutils-installpaths
   (package
     (name "perl-extutils-installpaths")
@@ -5780,6 +5867,52 @@ logging mechanism.")
 @code{Log::Any} adapter using @code{Log::Log4perl} for logging.")
     (license (package-license perl))))
 
+(define-public perl-log-message
+  (package
+   (name "perl-log-message")
+   (version "0.08")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append
+                  "mirror://cpan/authors/id/B/BI/BINGOS/Log-Message-"
+                  version ".tar.gz"))
+            (sha256
+             (base32
+              "0ipyk7zbvz31kf3mj5ahwi2cbcfy54s8387hx4cd29mg5bb7ssdx"))))
+   (build-system perl-build-system)
+   (home-page "https://metacpan.org/release/Log-Message")
+   (synopsis "Powerful and flexible message logging mechanism")
+   (description "This package enables you to do generic message logging
+throughout programs and projects.  Every message will be logged with
+stacktraces, timestamps and so on.  You can use built-in handlers
+immediately, or after the fact when you inspect the error stack.  It
+is highly configurable and let's you even provide your own handlers
+for dealing with messages.")
+   (license (package-license perl))))
+
+(define-public perl-log-message-simple
+  (package
+   (name "perl-log-message-simple")
+   (version "0.10")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "mirror://cpan/authors/id/B/BI/BINGOS/Log-Message-Simple-"
+           version ".tar.gz"))
+     (sha256
+      (base32
+       "15nxi935nfrf8dkdrgvcrf2qlai4pbz03yj8sja0n9mcq2jd24ma"))))
+   (build-system perl-build-system)
+   (inputs
+    `(("perl-log-message" ,perl-log-message)))
+   (home-page "https://metacpan.org/release/Log-Message-Simple")
+   (synopsis "Simplified interface to @code{Log::Message}")
+   (description "This package provides a simplified frontend to
+@code{Log::Message}, offering most common use for logging, and easy access to
+the stack (in both raw and pretty-printable form).")
+   (license (package-license perl))))
+
 (define-public perl-log-log4perl
   (package
     (name "perl-log-log4perl")
@@ -8825,6 +8958,27 @@ collector.")
     (description "Set::Infinite is a set theory module for infinite sets.")
     (license (package-license perl))))
 
+(define-public perl-set-intervaltree
+  (package
+   (name "perl-set-intervaltree")
+   (version "0.12")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "mirror://cpan/authors/id/S/SL/SLOYD/Set-IntervalTree-"
+           version ".tar.gz"))
+     (sha256
+      (base32 "0jf3vdmdgxx6a9xrfwnbbs9g37i1i6qhfg5qwln8x5i280701m3g"))))
+   (build-system perl-build-system)
+   (native-inputs
+    `(("perl-extutils-cppguess" ,perl-extutils-cppguess)))
+   (home-page "https://metacpan.org/release/Set-IntervalTree")
+   (synopsis "Perform range-based lookups on sets of ranges")
+   (description "This package provides an efficient mechanism to look up
+ranges in Interval Trees.")
+   (license (package-license perl))))
+
 (define-public perl-set-intspan
   (package
     (name "perl-set-intspan")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 5e5b1c72d2..71e4f5ca5e 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -60,7 +60,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.19")
+    (version "7.4.20")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -68,7 +68,7 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "1ck72j56a4xw2s8hirgblfh74g5nkf4xwllp9mlwn72198n1f5vc"))
+                "0db3nqfbfqfd8fkvrw1k8l6698qcbzv1v5j8rgr0ny0dg6k6r90z"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 36919663e3..405b83efee 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -123,7 +123,8 @@ internal RPC protocols and file formats.")
 
 ;; Tensorflow requires version 3.6 specifically.
 (define-public protobuf-3.6
-  (package/inherit protobuf
+  (package
+    (inherit protobuf)
     (version "3.6.1")
     (source (origin
               (method url-fetch)
@@ -136,8 +137,8 @@ internal RPC protocols and file formats.")
 
 ;; The 3.5 series are the last versions that do not require C++ 11.
 (define-public protobuf-3.5
-  (package/inherit
-   protobuf
+  (package
+    (inherit protobuf)
    (version "3.5.1")
    (source (origin
               (method url-fetch)
@@ -276,7 +277,8 @@ structured data.")
 
 ;; For tensorflow.
 (define-public python-protobuf-3.6
-  (package/inherit python-protobuf
+  (package
+    (inherit python-protobuf)
     (name "python-protobuf")
     (version (package-version protobuf-3.6) )
     (source
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 5f631ed653..9fb21d462f 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2019, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
@@ -1534,3 +1534,40 @@ allows one to create a set of tests using @emph{pairwise combinations} method,
 reducing a number of combinations of variables into a lesser set that covers
 most situations.")
     (license license:expat)))
+
+(define-public python-pytest-mp
+  (package
+    (name "python-pytest-mp")
+    (version "0.0.4p2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ansible/pytest-mp")
+             (commit "49a8ff2ca9ef62d8c86854ab31d6b5d5d6cf3f28")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "01v98b6n3yvkfmxf2v38xk5ijqlk6ika0yljwkhl5bh6qhq23498"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-psutil" ,python-psutil)))
+    (arguments
+     ;; tests require setuptools-markdown, which is deprecated and not in guix
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-useless-requirements
+           (lambda _
+             (substitute* "setup.py"
+               ((" setup_requires=") " #")))))))
+    (home-page "https://github.com/ansible/pytest-mp")
+    (synopsis  "Segregate tests into several processes")
+    (description "pytest-mp is a minimalist approach to distribute and
+segregate pytest tests across processes using python's multiprocessing library
+and is heavily inspired by pytest-concurrent and pytest-xdist.  As a very
+early beta, it doesn't pledge or intend to support the majority of platforms
+or use cases.  Design is based on supporting slow, io-bound testing with often
+tedious system under test configuration that can benefit from running several
+tests at one time.")
+    (license license:expat)))
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 79ee7c8bb2..39f52f1d64 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -11,6 +11,8 @@
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,13 +35,17 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages check)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages image-processing)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages mpi)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages simulation)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages time)
   #:use-module (gnu packages xdisorg)
@@ -47,6 +53,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system python))
 
@@ -439,6 +446,27 @@ doing practical, real world data analysis in Python.")
                        "if 'NULL byte' in msg or 'line contains NUL' in msg:"))
                     #t)))))))
 
+(define-public python-pyflow
+  (package
+    (name "python-pyflow")
+    (version "1.1.20")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/Illumina/pyflow/releases/download/v"
+                    version "/pyflow-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1bvfvviw58cndyn862qnv9nj3d9cd3a0dm4vc4sd9vwq8a6z1riv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ; There is no test suite.
+    (home-page "https://illumina.github.io/pyflow/")
+    (synopsis "Tool to manage tasks in a task dependency graph")
+    (description "This package is a Python module to manage tasks in the
+context of a task dependency graph.  It has some similarities to make.")
+    (license license:bsd-2)))
+
 (define-public python-bottleneck
   (package
     (name "python-bottleneck")
@@ -617,3 +645,61 @@ annotations on an existing boxplots and barplots generated by seaborn.")
 UpSet plots are used to visualize set overlaps; like Venn diagrams but more
 readable.")
     (license license:bsd-3)))
+
+(define-public python-vedo
+  (package
+    (name "python-vedo")
+    (version "2021.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/marcomusy/vedo")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18i3ajh5jzhpc86di15lwh4jv97jhm627ii877sa4yhv6abzjfpn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'mpi-setup
+           ,%openmpi-setup)
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (setenv "HOME" (getcwd))
+             (add-installed-pythonpath inputs outputs)
+             (with-directory-excursion "tests"
+               (for-each (lambda (dir)
+                           (with-directory-excursion dir
+                             (invoke "./run_all.sh")))
+                         '("common" "dolfin")))
+             #t)))))
+    (inputs        ; for the check phase
+     `(("dolfin" ,fenics)
+       ("pkgconfig" ,python-pkgconfig)
+       ("matplotlib" ,python-matplotlib)))
+    (native-inputs ; for python-pkgconfig
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("numpy" ,python-numpy)
+       ("vtk" ,vtk)))
+    (home-page "https://github.com/marcomusy/vedo")
+    (synopsis
+     "Analysis and visualization of 3D objects and point clouds")
+    (description
+     "@code{vedo} is a fast and lightweight python module for
+scientific analysis and visualization.  The package provides a wide
+range of functionalities for working with three-dimensional meshes and
+point clouds.  It can also be used to generate high quality
+two-dimensional renderings such as scatter plots and histograms.
+@code{vedo} is based on @code{vtk} and @code{numpy}, with no other
+dependencies.")
+    ;; vedo is released under the Expat license.  Included fonts are
+    ;; covered by the OFL license and textures by the CC0 license.
+    ;; The earth images are in the public domain.
+    (license (list license:expat
+                   license:silofl1.1
+                   license:cc0
+                   license:public-domain))))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 85c57e9f17..b7fc487bb5 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2020 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016, 2017, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2017, 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net>
@@ -14,7 +14,7 @@
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
@@ -693,7 +693,8 @@ Swartz.")
 
 (define-public python2-html2text
   (let ((base (package-with-python2 python-html2text)))
-    (package/inherit base
+    (package
+      (inherit base)
       ;; This is the last version with support for Python 2.
       (version "2019.8.11")
       (source (origin
@@ -1729,14 +1730,14 @@ web framework, either via the basic or digest authentication schemes.")
 (define-public python-terminado
   (package
     (name "python-terminado")
-    (version "0.9.4")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "terminado" version))
        (sha256
         (base32
-         "1glqyw97rddyzvisz8rihsn3x2nrm5xbyq82nzp3123pqbxvqzcs"))))
+         "1smvra3sc9sg64w49kfn5yhagshq3x55839748ck5dvxvk4hgza6"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-tornado" ,python-tornado-6)
@@ -3886,7 +3887,7 @@ for Flask programs that are using @code{python-alembic}.")
 (define-public python-genshi
   (package
     (name "python-genshi")
-    (version "0.7.3")
+    (version "0.7.5")
     (source
      (origin
        (method git-fetch)
@@ -3895,7 +3896,9 @@ for Flask programs that are using @code{python-alembic}.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04bw7nd4wyn8ixnhik57hny2xpjjpn80k5hp6691inix5gc6rxaf"))))
+        (base32 "04i0caywiwrgw09grz988n15qr9lr31d9n6a529p8v80cy1fv23c"))))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
     (build-system python-build-system)
     (home-page "https://genshi.edgewall.org/")
     (synopsis "Toolkit for generation of output for the web")
@@ -4254,6 +4257,25 @@ name resolutions asynchronously.")
 for URL parsing and changing.")
     (license license:asl2.0)))
 
+(define-public python-google
+  (package
+    (name "python-google")
+    (version "3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "google" version))
+              (sha256
+               (base32
+                "1gncv3l11za0mpxvmpaf5n5j3jzp282rz62yml4ha4z55q930d8l"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ; There are no tests.
+    (home-page "https://breakingcode.wordpress.com/")
+    (synopsis "Python bindings to the Google search engine")
+    (description "This package provides Python bindings for using the
+Google search engine.  Its module is called @code{googlesearch}.")
+    (license license:bsd-3)))
+
 (define-public python-google-api-client
   (package
     (name "python-google-api-client")
@@ -5460,13 +5482,13 @@ according to the standard set by PasteDeploy ")
 (define-public python-hupper
   (package
     (name "python-hupper")
-    (version "1.10.2")
+    (version "1.10.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "hupper" version))
               (sha256
                (base32
-                "0am0p6g5cz6xmcaf04xq8q6dzdd9qz0phj6gcmpsckf2mcyza61q"))))
+                "1nbc648d110jx6ziji980cdmzsd14p8fqrcarsdvr1vm5jvm2vyd"))))
     (build-system python-build-system)
     (arguments '(#:test-target "pytest"))
     (native-inputs
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 29f2d056f1..6451638afa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
-;;; Copyright © 2016, 2018, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016, 2018, 2019, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
@@ -67,7 +67,7 @@
 ;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2019, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2020 Riku Viitanen <riku.viitanen@protonmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com>
@@ -219,6 +219,49 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
 
+(define-public python-argopt
+  (package
+   (name "python-argopt")
+   (version "0.7.0")
+   (source (origin
+            (method url-fetch)
+            (uri (pypi-uri "argopt" version))
+            (sha256
+             (base32
+              "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa"))))
+   (build-system python-build-system)
+   (native-inputs
+    `(("python-coverage" ,python-coverage)
+      ("python-nose" ,python-nose)
+      ("python-setuptools" ,python-setuptools) ; Won't build without this.
+      ("python-setuptools-scm" ,python-setuptools-scm)))
+   (propagated-inputs
+    `(("python-toml" ,python-toml)
+      ("python-flake8" ,python-flake8)))
+   (home-page "https://github.com/casperdcl/argopt")
+   (synopsis "Generate a command-line interface from a docstring")
+   (description "This package provides tools to define a command line interface
+from a docstring rather than the other way around.")
+   (license license:mpl2.0)))
+
+(define-public python-cachetools
+  (package
+    (name "python-cachetools")
+    (version "4.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "cachetools" version))
+              (sha256
+               (base32
+                "1zqc098gk6y614lxwqd9z2gm8lldgvrpid133pnlm4m048gfvdb1"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/tkem/cachetools/")
+    (synopsis "Extensible memoizing collections and decorators")
+    (description "This module provides various memoizing collections and
+decorators, including variants of the Python standard library's
+@code{lru_cache} function decorator.")
+    (license license:expat)))
+
 (define-public python-colorful
   (package
     (name "python-colorful")
@@ -851,9 +894,6 @@ module and then similar looking characters are removed.")
 and function call return values in a human-readable way.")
     (license license:asl2.0)))
 
-(define-public python2-shapely
-  (package-with-python2 python-shapely))
-
 (define-public python-clyent
   (package
     (name "python-clyent")
@@ -2129,6 +2169,25 @@ The event dispatch is implicit, which means you can easily use @code{Eventlet}
 from the Python interpreter, or as a small part of a larger application.")
   (license license:expat)))
 
+(define-public python-sinfo
+  (package
+    (name "python-sinfo")
+    (version "0.3.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "sinfo" version))
+              (sha256
+               (base32
+                "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-stdlib-list" ,python-stdlib-list)))
+    (home-page "https://gitlab.com/joelostblom/session_info")
+    (synopsis "Output module version information loaded in a Python session")
+    (description "This package outputs version information for modules loaded
+in the current session, Python, and the OS.")
+    (license license:bsd-3)))
+
 (define-public python-six
   (package
     (name "python-six")
@@ -4427,7 +4486,7 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
 (define-public python-pydantic
   (package
     (name "python-pydantic")
-    (version "1.6.1")
+    (version "1.8.2")
     (source
      (origin
        (method git-fetch)
@@ -4436,24 +4495,39 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1380s9k77g6q15by9fkxndczjk89q6xpz09jdrqip535xws2z3j8"))))
+        (base32 "06162dss6mvi7wiy2lzxwvzajwxgy8b2fyym7qipaj7zibcqalq2"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         ;; Reported upstream:
-         ;; <https://github.com/samuelcolvin/pydantic/issues/1580>.
-         ;; Disable the faulty test as the fix is unclear.
          (add-before 'check 'disable-test
            (lambda _
+             ;; Reported upstream:
+             ;; <https://github.com/samuelcolvin/pydantic/issues/1580>.
+             ;; Disable the faulty test as the fix is unclear.
              (substitute* "tests/test_validators.py"
                (("test_assert_raises_validation_error")
                 "_test_assert_raises_validation_error"))
-             #t))
+
+             ;; These fail because of <https://bugs.python.org/issue40398>.
+             ;; Remove after Python has been upgraded to >= 3.9.
+             (substitute* "tests/test_generics.py"
+               (("assert replace_types\\(Callable, \\{T: int\\}\\) == Callable")
+                ""))
+             (substitute* "tests/test_schema.py"
+               (("test_unenforced_constraints_schema")
+               "_test_unenforced_constraints_schema"))
+
+             ;; Disable tests for the Hypothesis plugin because it is tricky
+             ;; to configure in the build container.
+             (delete-file "tests/test_hypothesis_plugin.py")))
          (replace 'check
-           (lambda _ (invoke "pytest" "-vv" "tests"))))))
+           (lambda _ (invoke "pytest" "-vv"))))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-mock" ,python-pytest-mock)))
+    (propagated-inputs
+     `(("python-typing-extensions" ,python-typing-extensions)))
     (home-page "https://github.com/samuelcolvin/pydantic")
     (synopsis "Python data validation and settings management")
     (description
@@ -4936,8 +5010,8 @@ capabilities.")
 (define-public python2-numpy
   (let ((numpy (package-with-python2
                 (strip-python2-variant python-numpy))))
-    (package/inherit
-     numpy
+    (package
+      (inherit numpy)
       (version "1.16.5")
       (source (origin
                 (method url-fetch)
@@ -5039,6 +5113,51 @@ objects.")
 (define-public python2-colormath
   (package-with-python2 python-colormath))
 
+(define-public python-sparse
+  (package
+    (name "python-sparse")
+    (version "0.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sparse" version))
+       (sha256
+        (base32
+         "05lmzckv69cvxavhdr36k803bgr5dl04cppglid1l880xswc759c"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "python" "-m" "pytest" "-v")))))))
+    (propagated-inputs
+     `(("python-numba" ,python-numba)
+       ("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)))
+    (native-inputs
+     `(("python-dask" ,python-dask)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-black" ,python-pytest-black)
+       ("python-pytest-cov" ,python-pytest-cov)))
+    (home-page "https://github.com/pydata/sparse/")
+    (synopsis "Library for multi-dimensional sparse arrays")
+    (description
+     "This package implements sparse arrays of arbitrary dimension on top of
+@code{numpy} and @code{scipy.sparse}.  Sparse array is a matrix in which most
+of the elements are zero.  @code{python-sparse} generalizes the
+@code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but
+extends beyond just rows and columns to an arbitrary number of dimensions.
+Additionally, this project maintains compatibility with the
+@code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface
+used in @code{scipy.sparse}.  These differences make this project useful in
+certain situations where @code{scipy.sparse} matrices are not well suited, but
+it should not be considered a full replacement.  It lacks layouts that are not
+easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and
+depends on @code{scipy.sparse} for some computations.")
+    (license license:bsd-3)))
+
 (define-public python-spectra
   (package
     (name "python-spectra")
@@ -5529,8 +5648,11 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
              #t))
          (add-before 'install 'install-jquery-ui
            (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let ((dir (string-append (assoc-ref outputs "out")
-                                       "/lib/python3.7/site-packages/matplotlib/backends/web_backend/")))
+             (let* ((python-version (python-version
+                                      (assoc-ref inputs "python")))
+                    (dir (string-append (assoc-ref outputs "out")
+                                       "/lib/python" python-version "/site-packages"
+                                       "/matplotlib/backends/web_backend/")))
                (mkdir-p dir)
                (invoke "unzip"
                        (assoc-ref inputs "jquery-ui")
@@ -7506,9 +7628,6 @@ profile, launches a cluster and returns a view.  On program exit it shuts the
 cluster down and deletes the throwaway profile.")
     (license license:expat)))
 
-(define-public python2-ipython-cluster-helper
-  (package-with-python2 python-ipython-cluster-helper))
-
 (define-public python-traitlets
   (package
     (name "python-traitlets")
@@ -8042,7 +8161,8 @@ features useful for text console applications.")
 (define-public python2-urwid
   (let ((base (package-with-python2
                (strip-python2-variant python-urwid))))
-    (package/inherit base
+    (package
+      (inherit base)
       (version "2.1.0")
       (source
        (origin
@@ -9477,8 +9597,8 @@ markdown_py is also provided to convert Markdown files to HTML.")
 ;; Markdown 3.2 dropped support for Python 2.
 (define-public python2-markdown
   (let ((base (package-with-python2 (strip-python2-variant python-markdown))))
-    (package/inherit
-     base
+    (package
+      (inherit base)
      (version "3.1.1")
      (source (origin
                (method url-fetch)
@@ -9596,6 +9716,26 @@ output.")
      "Python library that makes exceptions handling and inspection easier.")
     (license license:expat)))
 
+(define-public python-stdlib-list
+  (package
+    (name "python-stdlib-list")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "stdlib-list" version))
+              (sha256
+               (base32
+                "17vdn4q0sdlndc2fr9svapxx6366hnrhkn0fswp1xmr0jxqh7rd1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ; Tests require more dependencies.
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/jackmaney/python-stdlib-list")
+    (synopsis "Python Standard Libraries")
+    (description "This package contains a list of Python Standard Libraries.")
+    (license license:expat)))
+
 (define-public python-straight-plugin
   (package
     (name "python-straight-plugin")
@@ -9646,8 +9786,8 @@ from an XML-based format.")
 ;; Fonttools 4.x dropped support for Python 2, so stick with 3.x here.
 (define-public python2-fonttools
   (let ((base (package-with-python2 (strip-python2-variant python-fonttools))))
-    (package/inherit
-     base
+    (package
+      (inherit base)
      (version "3.44.0")
      (source (origin
                (method url-fetch)
@@ -10269,6 +10409,30 @@ implementations of ASN.1-based codecs and protocols.")
  module to older versions of Python.")
     (license license:psfl)))
 
+(define-public python-asn1tools
+  (package
+    (name "python-asn1tools")
+    (version "0.158.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "asn1tools" version))
+       (sha256
+        (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-bitstruct" ,python-bitstruct)
+       ("python-diskcache" ,python-diskcache)
+       ("python-prompt-toolkit" ,python-prompt-toolkit)
+       ("python-pyparsing" ,python-pyparsing)))
+    (home-page "https://github.com/eerimoq/asn1tools")
+    (synopsis  "ASN.1 parsing, encoding and decoding")
+    (description "This package provides ASN.1 parsing, encoding and decoding
+for Python, including constraints checking.  It supports several
+codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating
+for OER and UPER.")
+    (license license:expat)))
+
 (define-public python2-ipaddr
   (package
     (name "python2-ipaddr")
@@ -10686,14 +10850,13 @@ JSON Reference and JSON Pointer.")
 (define-public python-fastjsonschema
   (package
     (name "python-fastjsonschema")
-    (version "2.15.0")
+    (version "2.15.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "fastjsonschema" version))
         (sha256
-          (base32
-            "0xknp399gpdjf08lrq2yvv66s7nsc51fgbm6vph7vyyg1ckbmv71"))))
+          (base32 "1ln2j60jzyn6p8i8ljygfgrji58hc23452g7nllkcjdk4p93c7v7"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; Fail with a strange backtrace ending in importlib.
@@ -11140,29 +11303,8 @@ convert an @code{.ipynb} notebook file into various static formats including:
     (description
      "The Jupyter HTML notebook is a web-based notebook environment for
 interactive computing.")
-    (properties `((python2-variant . ,(delay python2-notebook))))
     (license license:bsd-3)))
 
-(define-public python2-notebook
-  (let ((base (package-with-python2
-                (strip-python2-variant python-notebook))))
-    (package/inherit base
-      (native-inputs
-       `(("python2-mock" ,python2-mock)
-         ,@(package-native-inputs base)))
-      (arguments
-       (substitute-keyword-arguments (package-arguments base)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'check 'disable-test-case
-              ;; The test requires network access to localhost. Curiously it
-              ;; fails with Python 2 only. Simply make the test-case return
-              ;; immediately.
-              (lambda _
-                (substitute*
-                    "notebook/services/nbconvert/tests/test_nbconvert_api.py"
-                  (("formats = self.nbconvert_api") "return #")))))))))))
-
 (define-public python-widgetsnbextension
   (package
     (name "python-widgetsnbextension")
@@ -12768,14 +12910,13 @@ designed to work across multiple versions of Python.")
 (define-public python-cookiecutter
   (package
     (name "python-cookiecutter")
-    (version "1.7.2")
+    (version "1.7.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cookiecutter" version))
        (sha256
-        (base32
-         "1b2xa5dypk1vf8aq599fd8zw4y0pwvq3hgl7ia8aiv8gg3ab5dpg"))))
+        (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-freezegun" ,python-freezegun)
@@ -15421,6 +15562,11 @@ extracting firmware images")
      '(;; The tests require some extra resources to be downloaded.
        ;; TODO Try packaging these resources.
        #:tests? #f))
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-joblib" ,python-joblib)
+       ("python-regex" ,python-regex)
+       ("python-tqdm" ,python-tqdm)))
     (native-inputs
      `(("unzip" ,unzip)))
     (home-page "http://nltk.org/")
@@ -15442,7 +15588,8 @@ reasoning, wrappers for natural language processing libraries.")
        (method url-fetch)
        (uri (pypi-uri "nltk" version ".zip"))
        (sha256
-        (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y"))))))
+        (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y"))))
+    (propagated-inputs `(("python-six" ,python-six)))))
 
 (define-public python2-nltk
   (package-with-python2 python-nltk))
@@ -16410,6 +16557,30 @@ converting text with ANSI color codes to HTML or LaTeX.")
 (define-public python2-ansi2html
   (package-with-python2 python-ansi2html))
 
+(define-public python-easy-ansi
+  (package
+    (name "python-easy-ansi")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/joeysbytes/easy-ansi")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3"))))
+    (build-system python-build-system)
+    (home-page "https://gitlab.com/joeysbytes/easy-ansi")
+    (synopsis "Terminal framework API")
+    (description
+     "Easy ANSI is a terminal framework API to give you an easy way to use
+colors, cursor control movements, and line/box drawing.  It is not meant as a
+replacement to more full-featured frameworks (such as curses or urwid), but as
+a tool to quickly create nice-looking screens in your terminal window.  You
+can even create animations with the cursor controls.")
+    (license license:expat)))
+
 (define-public python-ddt
   (package
     (name "python-ddt")
@@ -20867,28 +21038,41 @@ N-dimensional arrays for Python.")
 (define-public python-anndata
   (package
     (name "python-anndata")
-    (version "0.7.1")
+    (version "0.7.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "anndata" version))
        (sha256
         (base32
-         "0rnfbpr55j1a1bi2kd4mz444741hrn74kz90h5rnjr59jmpfnh09"))))
+         "1ch8yp0xmag6z0kl01pljm35lbbwax7lrimfhiclpkd4m6xngk53"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f ; The tarball from PyPi doesn't include tests.
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'delete-inconvenient-tests
-           (lambda _
-             ;; This test depends on python-scikit-learn.
-             (delete-file "anndata/tests/test_inplace_subset.py")
-             #t))
          (delete 'check)
-         (add-after 'install 'check
+         (add-before 'build 'relax-dependency-requirements
+           (lambda _
+             ;; We need to upgrade python-pandas to avoid
+             ;; https://github.com/pandas-dev/pandas/issues/35446
+             (substitute* "pyproject.toml"
+               (("pandas>=1.1.1") "pandas>=1.0.5"))))
+         (replace 'build
+           (lambda _
+             ;; ZIP does not support timestamps before 1980.
+             (setenv "SOURCE_DATE_EPOCH" "315532800")
+             (invoke "flit" "build")))
+         (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (add-installed-pythonpath inputs outputs)
-             (invoke "pytest" "-vv"))))))
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (wheel)
+                           (format #true wheel)
+                           (invoke "python" "-m" "pip" "install"
+                                   wheel (string-append "--prefix=" out)))
+                         (find-files "dist" "\\.whl$")))
+             #t)))))
     (propagated-inputs
      `(("python-h5py" ,python-h5py)
        ("python-importlib-metadata" ,python-importlib-metadata)
@@ -20901,6 +21085,8 @@ N-dimensional arrays for Python.")
     (native-inputs
      `(("python-joblib" ,python-joblib)
        ("python-pytest" ,python-pytest)
+       ("python-toml" ,python-toml)
+       ("python-flit" ,python-flit)
        ("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://github.com/theislab/anndata")
     (synopsis "Annotated data for data analysis pipelines")
@@ -24812,6 +24998,41 @@ module patches @code{asyncio} to allow nested use of @code{asyncio.run} and
 @code{loop.run_until_complete}.")
     (license license:bsd-3)))
 
+(define-public python-simpervisor
+  (package
+    (name "python-simpervisor")
+    (version "0.4")
+    (source
+      (origin
+        ;; Tests not included in release.
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/yuvipanda/simpervisor")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f  ; Test suite can't find aiohttp.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "--maxfail" "3" "--verbose"))
+             #t)))))
+    (native-inputs
+     `(("python-aiohttp" ,python-aiohttp)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-asyncio" ,python-pytest-asyncio)))
+    (home-page "https://github.com/yuvipanda/simpervisor")
+    (synopsis "Simple async process supervisor")
+    (description
+     "This package provides a simple async process supervisor in Python.")
+    (license license:bsd-3)))
+
 (define-public python-parallel
   (package
     (name "python-parallel")
@@ -25071,6 +25292,50 @@ query Watchman to discover file changes.")
 environment.")
     (license license:expat)))
 
+(define-public python-logutils
+  (package
+    (name "python-logutils")
+    (version "0.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "logutils" version))
+       (sha256
+        (base32
+         "10lsi5wv5ysnvf9ya4ncbix6mmipnv5067sf2cglc2f2sljql1dw"))))
+    (build-system python-build-system)
+    (home-page "https://bitbucket.org/vinay.sajip/logutils/")
+    (synopsis "Logging utilities")
+    (description "This package provides a set of handlers for the Python
+standard library logging package.  Some of these handlers are out-of-scope
+for the standard library, and so they are packaged here.  Others are updated
+versions which have appeared in recent Python releases, but are usable with
+older versions of Python and so are packaged here.")
+    (license license:bsd-3)))
+
+(define-public python-helper
+  (package
+    (name "python-helper")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "helper" version))
+              (sha256
+               (base32
+                "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)))
+    (propagated-inputs
+     `(("python-logutils" ,python-logutils)
+       ("python-pyyaml" ,python-pyyaml)))
+    (home-page "https://github.com/gmr/helper")
+    (synopsis "Library for writing configurable applications and daemons")
+    (description
+     "This package provides procedures for quickly writing configurable
+applications and daemons.")
+    (license license:bsd-3)))
+
 (define-public python-qtsass
   (package
     (name "python-qtsass")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b2ec486d7a..c8129ce46c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -610,7 +610,7 @@ To function properly, this package should not be installed together with the
 (define-public micropython
   (package
     (name "micropython")
-    (version "1.14")
+    (version "1.15")
     (source
       (origin
         (method url-fetch)
@@ -618,7 +618,7 @@ To function properly, this package should not be installed together with the
                             "releases/download/v" version
                             "/micropython-" version ".tar.xz"))
         (sha256
-         (base32 "0k6ri3rxxnnmvcbi7z7x59r21f4vj9dcf9j64jhj1cgazmb62c4p"))
+         (base32 "04sfrfcljhfps340l4wh5ffwkhw1ydraday8nv92nv7gmnrj1l2j"))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 18af14b2ec..2d606071fe 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -32,8 +32,6 @@
   #:use-module (ice-9 match)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
-  #:use-module ((gnu packages chez)
-                #:select (chez-scheme))
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fontutils)
@@ -173,8 +171,8 @@ DrRacket IDE, are not included.")
 
 
 (define-public racket
-  (package/inherit
-      racket-minimal
+  (package
+    (inherit racket-minimal)
     (name "racket")
     (version (package-version racket-minimal)) ; needed for origin uri to work
     (source
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index feb17f99ab..3776e87ee3 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -94,6 +94,34 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system qt))
 
+(define-public libfec
+  ;; Use commit to get compilation fixes that are not in a release yet.
+  (let ((commit "9750ca0a6d0a786b506e44692776b541f90daa91")
+        (revision "1"))
+    (package
+      (name "libfec")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/quiet/libfec")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0i6jhrdswr1wglyb9h39idpz5v9z13yhidvlbj34vxpyngrkhlvs"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
+         #:test-target "test_all"))
+      (home-page "https://github.com/quiet/libfec")
+      (synopsis "Forward error correction algorithms library")
+      (description
+       "This package provides a set of functions that implement several popular
+@dfn{forward error correction} (FEC) algorithms and several low-level routines
+useful in modems implemented with @dfn{digital signal processing} (DSP).")
+      (license license:lgpl2.1))))
+
 (define-public liquid-dsp
   (package
     (name "liquid-dsp")
@@ -110,8 +138,15 @@
     (native-inputs
      `(("autoconf" ,autoconf)))
     (inputs
-     `(("fftw" ,fftw)
-       ("fftwf" ,fftwf)))
+     `(("fftwf" ,fftwf)
+       ("libfec" ,libfec)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'delete-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libliquid.a")))))))
     (home-page "https://liquidsdr.org")
     (synopsis "Signal processing library for software-defined radios")
     (description
@@ -223,6 +258,110 @@ To install the airspyhf udev rules, you must extend @code{udev-service-type}
 with this package.  E.g.: @code{(udev-rules-service 'airspyhf airspyhf)}")
     (license license:bsd-3)))
 
+(define-public soapysdr
+  (package
+    (name "soapysdr")
+    (version "0.8.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapySDR")
+             (commit (string-append "soapy-sdr-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dy25zxk7wmg7ik82dx7h3bbbynvalbz1dxsl7kgm3374yxhnixv"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("python" ,python)
+       ("swig" ,swig)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "SOAPY_SDR_PLUGIN_PATH")
+            (files (list (string-append "lib/SoapySDR/modules"
+                                        (version-major+minor version)))))))
+    (home-page "https://github.com/pothosware/SoapySDR/wiki")
+    (synopsis "Vendor and platform neutral SDR support library")
+    (description
+     "SoapySDR is a library designed to support several kinds of software
+defined radio hardware devices with a common API.")
+    (license license:boost1.0)))
+
+(define-public soapyairspyhf
+  (package
+    (name "soapyairspyhf")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyAirspyHF")
+             (commit (string-append "soapy-airspyhf-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04krqinglgkjvx7klqik6yn8rb4mlpwzb6zvnmvm7szqci2agggz"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("airspyhf" ,airspyhf)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyAirspyHF/wiki")
+    (synopsis "SoapySDR Airspy HF+ module")
+    (description "This package provides Airspy HF+ devices support to the
+SoapySDR library.")
+    (license license:expat)))
+
+(define-public soapyhackrf
+  (package
+    (name "soapyhackrf")
+    (version "0.3.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyHackRF")
+             (commit (string-append "soapy-hackrf-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1awn89z462500gb3fjb7x61b1znkjri9n1d39bqfip1qk4s11pxc"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("hackrf" ,hackrf)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyHackRF/wiki")
+    (synopsis "SoapySDR HackRF module")
+    (description
+     "This package provides HackRF devices support to the SoapySDR library.")
+    (license license:expat)))
+
+(define-public soapyrtlsdr
+  (package
+    (name "soapyrtlsdr")
+    (version "0.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pothosware/SoapyRTLSDR")
+             (commit (string-append "soapy-rtl-sdr-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dlnryj6k20pk7w7v4v13y099r7ikhvlzbgzgphmi5cxkdv0shrd"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("rtl-sdr" ,rtl-sdr)
+       ("soapysdr" ,soapysdr)))
+    (arguments
+     `(#:tests? #f))  ; No test suite
+    (home-page "https://github.com/pothosware/SoapyRTLSDR/wiki")
+    (synopsis "SoapySDR RTL-SDR module")
+    (description
+     "This package provides RTL-SDR devices support to the SoapySDR library.")
+    (license license:expat)))
+
 (define-public chirp
   (package
     (name "chirp")
@@ -375,6 +514,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
        ("python-click" ,python-click)
        ("python-click-plugins" ,python-click-plugins)
        ("python-lxml" ,python-lxml)
+       ("python-matplotlib" ,python-matplotlib)
        ("python-numpy" ,python-numpy)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
@@ -513,6 +653,7 @@ environment.")
          ("python-numpy" ,python-numpy)
          ("python-pyqt" ,python-pyqt)
          ("rtl-sdr" ,rtl-sdr)
+         ("soapysdr" ,soapysdr)
          ("volk" ,volk)))
       (arguments
        `(#:modules ((guix build cmake-build-system)
@@ -798,66 +939,61 @@ for correctness.")
     (license license:gpl3+)))
 
 (define-public hackrf
-  ;; Using a git commit because there have been many many commits
-  ;; since the relase two years ago, but no sign of a promised
-  ;; release for many months now.
-  (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
-        (revision "0"))
-    (package
-     (name "hackrf")
-     (version (git-version "2018.01.1" revision commit))
-     (source
-      (origin
+  (package
+    (name "hackrf")
+    (version "2021.03.1")
+    (source
+     (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mossmann/hackrf")
-             (commit commit)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
-     (build-system cmake-build-system)
-     (arguments
-      '(#:configure-flags
-        (list "-DUDEV_RULES_GROUP=dialout"
-              (string-append "-DUDEV_RULES_PATH="
-                             (assoc-ref %outputs "out")
-                             "/lib/udev/rules.d"))
-        #:phases
-        (modify-phases %standard-phases
-          (add-before 'configure 'enter-source-directory
-            (lambda _
-              (chdir "host")
-              #t))
-          (add-after 'install 'delete-static-library
-            (lambda* (#:key outputs #:allow-other-keys)
-              (delete-file (string-append (assoc-ref outputs "out")
-                                          "/lib/libhackrf.a"))
-              #t))
-          (add-before 'install-license-files 'leave-source-directory
-            (lambda _
-              (chdir "..")
-              #t)))
-        #:tests? #f)) ; no test suite
-     (native-inputs
-      `(("pkg-config" ,pkg-config)))
-     (inputs
-      `(("fftw" ,fftw)
-        ("fftwf" ,fftwf)
-        ("libusb" ,libusb)))
-     (home-page "https://greatscottgadgets.com/hackrf/")
-     (synopsis "User-space library and utilities for HackRF SDR")
-     (description
-      "Command line utilities and a C library for controlling the HackRF
+        (base32 "12fkgimjy5ia291c1rn4y59pn9r5wdvz5x9z5xc8zr1xr96iyhfs"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DUDEV_RULES_GROUP=dialout"
+             (string-append "-DUDEV_RULES_PATH="
+                            (assoc-ref %outputs "out")
+                            "/lib/udev/rules.d"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'enter-source-directory
+           (lambda _
+             (chdir "host")
+             #t))
+         (add-after 'install 'delete-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libhackrf.a"))
+             #t))
+         (add-before 'install-license-files 'leave-source-directory
+           (lambda _
+             (chdir "..")
+             #t)))
+       #:tests? #f)) ; no test suite
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fftw" ,fftw)
+       ("fftwf" ,fftwf)
+       ("libusb" ,libusb)))
+    (home-page "https://greatscottgadgets.com/hackrf/")
+    (synopsis "User-space library and utilities for HackRF SDR")
+    (description
+     "Command line utilities and a C library for controlling the HackRF
 Software Defined Radio (SDR) over USB.  Installing this package installs the
 userspace hackrf utilities and C library.  To install the hackrf udev rules,
 you must extend 'udev-service-type' with this package.  E.g.:
 @code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
-     (license license:gpl2))))
+    (license license:gpl2)))
 
 (define-public hamlib
   (package
     (name "hamlib")
-    (version "4.1")
+    (version "4.2")
     (source
      (origin
        (method url-fetch)
@@ -865,7 +1001,7 @@ you must extend 'udev-service-type' with this package.  E.g.:
              "https://github.com/Hamlib/Hamlib/releases/download/"
              version "/hamlib-" version ".tar.gz"))
        (sha256
-        (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
+        (base32 "1m8gb20i8ga6ndnnw187ry1h4z8wx27v1hl7c610r6ky60pv4072"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -1162,7 +1298,8 @@ their position, altitude, speed, etc.")
     (inputs
      `(("libusb" ,libusb)
        ("openssl" ,openssl)
-       ("rtl-sdr" ,rtl-sdr)))
+       ("rtl-sdr" ,rtl-sdr)
+       ("soapysdr" ,soapysdr)))
     (synopsis "Decoder for radio transmissions in ISM bands")
     (description
      "This is a generic data receiver, mainly for decoding radio transmissions
@@ -1543,7 +1680,7 @@ receiver.")
 (define-public welle-io
   (package
     (name "welle-io")
-    (version "2.2")
+    (version "2.3")
     (source
      (origin
        (method git-fetch)
@@ -1552,7 +1689,7 @@ receiver.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"))))
+        (base32 "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw"))))
     (build-system qt-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1569,9 +1706,11 @@ receiver.")
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
        ("qtmultimedia" ,qtmultimedia)
-       ("qtquickcontrols2" ,qtquickcontrols2)))
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("soapysdr" ,soapysdr)))
     (arguments
-     `(#:configure-flags '("-DRTLSDR=ON")
+     `(#:configure-flags '("-DRTLSDR=ON"
+                           "-DSOAPYSDR=ON")
        #:tests? #f))
     (home-page "https://www.welle.io/")
     (synopsis "DAB and DAB+ software radio")
@@ -1808,6 +1947,7 @@ voice formats.")
        ("qtwebsockets" ,qtwebsockets)
        ("rtl-sdr" ,rtl-sdr)
        ("serialdv" ,serialdv)
+       ("soapysdr" ,soapysdr)
        ("sgp4" ,sgp4)
        ("zlib" ,zlib)))
     (arguments
@@ -1824,7 +1964,9 @@ voice formats.")
              (string-append "-DSERIALDV_DIR="
                             (assoc-ref %build-inputs "serialdv"))
              (string-append "-DSGP4_DIR="
-                            (assoc-ref %build-inputs "sgp4")))))
+                            (assoc-ref %build-inputs "sgp4"))
+             (string-append "-DSOAPYSDR_DIR="
+                            (assoc-ref %build-inputs "soapysdr")))))
     (home-page "https://github.com/f4exb/sdrangel/wiki")
     (synopsis "Software defined radio")
     (description
@@ -1860,70 +2002,152 @@ software-defined radio receivers.")
     (license license:gpl3+)))
 
 (define-public wfview
-  ;; No tagged release, use commit directly.
-  (let ((commit "274e905d214a7360e8cf2dd0421dbe3712a0ddcc")
+  (package
+    (name "wfview")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/eliggett/wfview")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16a9afm0nkqx4pzwfxisspybimhqdyr3yjpr7ac7wgpp3520ikzi"))))
+    (build-system qt-build-system)
+    (inputs
+     `(("qcustomplot" ,qcustomplot)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtserialport" ,qtserialport)))
+    (arguments
+     `(#:tests? #f  ; No test suite.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "wfview.pro"
+               (("\\.\\./wfview/")
+                "../"))
+             (substitute* '("wfmain.cpp")
+               (("/usr/share")
+                (string-append (assoc-ref outputs "out") "/share")))))
+         (replace 'configure
+           (lambda _
+             (mkdir-p "build")
+             (chdir "build")
+             (invoke "qmake" "../wfview.pro")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (install-file "wfview"
+                             (string-append out "/bin"))
+               (install-file "wfview.png"
+                             (string-append out "/share/pixmaps"))
+               (install-file "wfview.desktop"
+                             (string-append out "/share/applications"))
+               (let ((dir (string-append
+                           out "/share/wfview/stylesheets/qdarkstyle")))
+                 (mkdir-p dir)
+                 (copy-recursively "qdarkstyle" dir))))))))
+    (home-page "https://wfview.org/")
+    (synopsis "Software to control Icom radios")
+    (description
+     "@code{wfview} is a program to control modern Icom radios and view the
+spectrum waterfall.  It supports at least the following models:
+
+@itemize
+@item IC-705
+@item IC-7300
+@item IC-7610
+@item IC-7850
+@item IC-7851
+@item IC-9700
+@end itemize\n")
+    (license (list license:expat
+                   license:gpl3))))
+
+(define-public minimodem
+  (package
+    (name "minimodem")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.whence.com/minimodem/minimodem-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "13ipyh39l7p420j1j9kvwyskv2nqnimls1a3z1klsa1zivds9k7q"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftwf" ,fftwf)
+       ("libsndfile" ,libsndfile)
+       ("pulseaudio" ,pulseaudio)))
+    (home-page "http://www.whence.com/minimodem/")
+    (synopsis "Software audio FSK modem")
+    (description
+     "Minimodem is a command-line program which decodes (or generates) audio
+modem tones at any specified baud rate, using various framing protocols.  It
+acts a general-purpose software FSK modem, and includes support for various
+standard FSK protocols such as Bell103, Bell202, RTTY, TTY/TDD, NOAA SAME, and
+Caller-ID.")
+    (license license:gpl3+)))
+
+(define-public rfcat
+  ;; Use a commit for now because some fixes to make rfcat work with
+  ;; Python 3 instead of Python 2 are not in a release yet.
+  (let ((commit "725bf79af27d47cdec64107317c1c8fe3f7ad7b8")
         (revision "1"))
     (package
-      (name "wfview")
-      (version (git-version "20210511" revision commit))
+      (name "rfcat")
+      (version (git-version "1.9.5" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/eliggett/wfview")
+               (url "https://github.com/atlas0fd00m/rfcat")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1dmxn15xs63wx1y4mh1mlv8qc1xz32vgbyl3rk82gf6knw518svp"))))
-      (build-system qt-build-system)
+          (base32 "0dbc6n4pxsa73wzxny773khc73r1dn3ma5hi7xv76vcykjvzkdi3"))))
+      (build-system python-build-system)
       (inputs
-       `(("qcustomplot" ,qcustomplot)
-         ("qtbase" ,qtbase)
-         ("qtmultimedia" ,qtmultimedia)
-         ("qtserialport" ,qtserialport)))
+       `(("python-future" ,python-future)
+         ("python-ipython" ,python-ipython)
+         ("python-numpy" ,python-numpy)
+         ("python-pyserial" ,python-pyserial)
+         ("python-pyside-2" ,python-pyside-2)
+         ("python-pyusb" ,python-pyusb)))
       (arguments
-       `(#:tests? #f  ; No test suite.
+       `(#:tests? #f  ; Tests want to use a serial port
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'fix-paths
-             (lambda* (#:key outputs #:allow-other-keys)
-               (substitute* "wfview.pro"
-                 (("\\.\\./wfview/")
-                  "../"))
-               (substitute* '("wfmain.cpp")
-                 (("/usr/share")
-                  (string-append (assoc-ref outputs "out") "/share")))))
-           (replace 'configure
+           (add-after 'unpack 'fix-permissions
              (lambda _
-               (mkdir-p "build")
-               (chdir "build")
-               (invoke "qmake" "../wfview.pro")))
-           (replace 'install
+               (make-file-writable "rflib/rflib_version.py")))
+           (add-after 'install 'install-udev-rules
              (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out")))
-                 (install-file "wfview"
-                               (string-append out "/bin"))
-                 (install-file "wfview.png"
-                               (string-append out "/share/pixmaps"))
-                 (install-file "wfview.desktop"
-                               (string-append out "/share/applications"))
-                 (let ((dir (string-append
-                             out "/share/wfview/stylesheets/qdarkstyle")))
-                   (mkdir-p dir)
-                   (copy-recursively "qdarkstyle" dir))))))))
-      (home-page "https://wfview.org/")
-      (synopsis "Software to control Icom radios")
+               (install-file "etc/udev/rules.d/20-rfcat.rules"
+                             (string-append (assoc-ref outputs "out")
+                                            "/lib/udev/rules.d")))))))
+      (home-page "https://github.com/atlas0fd00m/rfcat")
+      (synopsis "Program to control some radio dongles")
       (description
-       "@code{wfview} is a program to control modern Icom radios and view the
-spectrum waterfall.  It supports at least the following models:
+       "@code{rfcat} is a program to control some radio dongles operating in
+ISM bands.
 
+Supported dongles:
 @itemize
-@item IC-705
-@item IC-7300
-@item IC-7610
-@item IC-7850
-@item IC-7851
-@item IC-9700
-@end itemize\n")
-      (license (list license:expat
-                     license:gpl3)))))
+@item YARD Stick One
+@item cc1111emk
+@item chronos watch dongle
+@item imme (limited support)
+@end itemize
+
+To install the rfcat udev rules, you must extend @code{udev-service-type} with
+this package.  E.g.: @code{(udev-rules-service 'rfcat rfcat)}")
+      (license (list license:bsd-3
+                     license:gpl2)))))
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index b4c91675a4..ced8471887 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -23,10 +23,12 @@
 (define-module (gnu packages readline)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix utils)
   #:use-module (ice-9 format))
@@ -139,19 +141,21 @@ comfortable for anyone.")
 (define-public rlwrap
   (package
     (name "rlwrap")
-    (version "0.43")
+    (version "0.45.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/hanslub42/rlwrap/releases/"
-                            "download/v" version "/"
-                            name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0bzb7ylk2770iv59v2d0gypb21y2xn87m299s9rqm6rdi2vx11lf"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hanslub42/rlwrap")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0shf59mkql584a0p449psnbr26bfik5pizg4vsa75g4gbi6mn4r7"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("perl" ,perl)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("perl" ,perl)))
     (inputs
      `(("readline" ,readline)))
     (synopsis "Wrapper to allow the editing of keyboard commands")
@@ -160,6 +164,6 @@ comfortable for anyone.")
 readline library to allow the editing of keyboard input for any command.  You
 should consider rlwrap especially when you need user-defined completion (by way
 of completion word lists) and persistent history, or if you want to program
-'special effects' using the filter mechanism.")
+`special effects' using the filter mechanism.")
     (home-page "https://github.com/hanslub42/rlwrap")
     (license gpl2+)))
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
index 37b15663b9..59460f1324 100644
--- a/gnu/packages/rsync.scm
+++ b/gnu/packages/rsync.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -26,6 +26,7 @@
   #:use-module (gnu packages acl)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages popt)
   #:use-module ((guix licenses) #:prefix license:)
@@ -68,6 +69,44 @@ files in the destination.")
    (license license:gpl3+)
    (home-page "https://rsync.samba.org/")))
 
+(define-public rsync-next
+  (package
+   (name "rsync")
+   (version "3.2.3")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "https://rsync.samba.org/ftp/rsync/src/rsync-"
+                                version ".tar.gz"))
+            (sha256
+             (base32
+              "03p5dha9g9krq61mdbcrjkpz5nglri0009ks2vs9k97f9i83rk5y"))))
+   (build-system gnu-build-system)
+   (arguments
+    `(#:configure-flags
+      ;; The bundled copies are preferred by default.
+      (list "--without-included-zlib"
+            "--without-included-popt"
+            ;; Avoid these dependencies for now.
+            "--disable-lz4"
+            "--disable-openssl"
+            "--disable-zstd")))
+   (native-inputs
+    `(("perl" ,perl)))
+   (inputs
+    `(("acl" ,acl)
+      ("popt" ,popt)
+      ("xxhash" ,xxhash)
+      ("zlib" ,zlib)))
+   (synopsis "Remote (and local) file copying tool")
+   (description
+    "Rsync is a fast and versatile file copying tool.  It can copy locally,
+to/from another host over any remote shell, or to/from a remote rsync daemon.
+Its delta-transfer algorithm reduces the amount of data sent over the network
+by sending only the differences between the source files and the existing
+files in the destination.")
+   (license license:gpl3+)
+   (home-page "https://rsync.samba.org/")))
+
 (define-public librsync
   (package
     (name "librsync")
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index d31f95ca05..a530c750d9 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.ccom>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,13 +36,16 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages rust)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control))
 
@@ -464,11 +468,11 @@ gitignore rules.")
      "This package provides a tool for generating C/C++ bindings to Rust code.")
     (license license:mpl2.0)))
 
-(define-public rust-cbindgen-0.17
+(define-public rust-cbindgen-0.19
   (package
     (inherit rust-cbindgen)
     (name "rust-cbindgen")
-    (version "0.17.0")
+    (version "0.19.0")
     (source
      (origin
        (method url-fetch)
@@ -477,7 +481,7 @@ gitignore rules.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1f40hxj6h7wqmsj8dzxjm3m421hjqpz2m5zxasbn8kgnr6scykvl"))))
+         "1yld9fni9g9mzg4r42zfk79aq9mzm2sfzzjrrx4vir4lp4qqqwiq"))))
     (arguments
      `(#:cargo-inputs
        (("rust-clap" ,rust-clap-2)
@@ -773,7 +777,7 @@ the details of how it was triggered.
 (define-public rust-cargo-c
   (package
     (name "rust-cargo-c")
-    (version "0.5.3")
+    (version "0.8.1+cargo-0.53")
     (source
       (origin
         (method url-fetch)
@@ -782,19 +786,31 @@ the details of how it was triggered.
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0hsag5g4qngm8alfil2dyvl5sagpqi5nb40c7bhwng2z8mv9r41k"))))
+          "0fwdxhdj2963xr6xfqr56i7hikhsdv562vgxq2dj3h2mi3dil1k6"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-cbindgen" ,rust-cbindgen)
+     `(#:rust ,rust-1.52                ;inherited from rust-cargo
+       #:cargo-inputs
+       (("rust-cbindgen" ,rust-cbindgen-0.19)
+        ("rust-cargo" ,rust-cargo-0.53) ;
+        ("rust-anyhow" ,rust-anyhow-1)
         ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
         ("rust-structopt" ,rust-structopt-0.3)
         ("rust-log" ,rust-log-0.4)
         ("rust-toml" ,rust-toml-0.5)
         ("rust-cargo-metadata" ,rust-cargo-metadata-0.9)
+        ("rust-semver" ,rust-semver-0.10)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1)
         ("rust-regex" ,rust-regex-1))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("libssh2" ,libssh2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
     (home-page "https://github.com/lu-zero/cargo-c")
     (synopsis "Build and install C-compatible libraries")
     (description
@@ -802,3 +818,40 @@ the details of how it was triggered.
 library and a dynamic library, and a C header to be used by any C (and
 C-compatible) software.")
     (license license:expat)))
+
+(define-public zoxide
+  (package
+    (name "zoxide")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "zoxide" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1ih01l3xp8plicxhmyxjkq12ncpdb8954jcj3dh3lwvkhvw29nkk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-askama" ,rust-askama-0.10)
+        ("rust-bincode" ,rust-bincode-1)
+        ("rust-clap" ,rust-clap-3)
+        ("rust-dirs-next" ,rust-dirs-next-2)
+        ("rust-dunce" ,rust-dunce-1)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-ordered-float" ,rust-ordered-float-2)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-tempfile" ,rust-tempfile-3))
+       #:cargo-development-inputs
+       (("rust-assert-cmd" ,rust-assert-cmd-1)
+        ("rust-seq-macro" ,rust-seq-macro-0.2))))
+    (home-page "https://github.com/ajeetdsouza/zoxide/")
+    (synopsis "Fast way to navigate your file system")
+    (description
+     "Zoxide is a fast replacement for your @command{cd} command.  It keeps
+track of the directories you use most frequently, and uses a ranking algorithm
+to navigate to the best match.")
+    (license license:expat)))
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index dfa43bb2bf..89783de965 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Raphaël Mélotte <raphael.melotte@mind.be>
+;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (guix download)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
@@ -39,6 +41,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages dns)
@@ -674,3 +677,46 @@ that after installing this package, you might still need to add appropriate
 udev rules to your system configuration to be able to configure the YubiKey as
 an unprivileged user.")
     (license license:bsd-2)))
+
+(define-public nitrocli
+  (package
+    (name "nitrocli")
+    (version "0.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "nitrocli" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1djspfvcqjipg17v8hkph8xrhkdg1xqjhq5jk1sr8vr750yavidy"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ;; 2/164 tests fail, nitrocli-ext tests failing
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-base32" ,rust-base32-0.4)
+        ("rust-directories" ,rust-directories-3)
+        ("rust-envy" ,rust-envy-0.4)
+        ("rust-libc-0.2" ,rust-libc-0.2)
+        ("rust-merge" ,rust-merge-0.1)
+        ("rust-nitrokey" ,rust-nitrokey-0.9)
+        ("rust-progressing" ,rust-progressing-3)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-structopt" ,rust-structopt-0.3)
+        ("rust-termion" ,rust-termion-1)
+        ("rust-toml" ,rust-toml-0.5))
+       #:cargo-development-inputs
+       (("rust-nitrokey-test" ,rust-nitrokey-test-0.5)
+        ("rust-nitrokey-test-state" ,rust-nitrokey-test-state-0.1)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-tempfile" ,rust-tempfile-3))))
+    (inputs
+     `(("hidapi" ,hidapi)
+       ("gnupg" ,gnupg)))
+    (home-page "https://github.com/d-e-s-o/nitrocli")
+    (synopsis "Command line tool for Nitrokey devices")
+    (description
+     "nitrocli is a program that provides a command line interface
+for interaction with Nitrokey Pro, Nitrokey Storage, and Librem Key
+devices.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 90f107e9e7..719a9d2ef4 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -218,77 +218,3 @@
 several crates, providing both a low-level and a high-level API for dealing
 with OpenPGP data.")
     (license license:gpl2+)))
-
-(define-public sequoia4pEp
-  ;; Currently pEp Engine requires sequoia in not-so-current version
-  (package/inherit sequoia
-    (name "sequoia")
-    (version "0.15.0-pEp")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/sequoia-pgp/sequoia.git")
-             (commit "0eb1b6cd846ea8c36b3dfdf01ec88383fc64f2fe")))
-       (sha256
-        (base32 "06dqs9whwp9lfibwp8dqm0aw4nm3s3v4jp2n4fz51zcvsld40nfh"))
-       (file-name (git-file-name name version))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments sequoia)
-       ((#:cargo-inputs _)
-        `(("rust-anyhow" ,rust-anyhow-1)
-          ("rust-base64" ,rust-base64-0.11)
-          ("rust-bzip2" ,rust-bzip2-0.3)
-          ("rust-capnp" ,rust-capnp-0.10)
-          ("rust-capnp-rpc" ,rust-capnp-rpc-0.10)
-          ("rust-chrono" ,rust-chrono-0.4)
-          ("rust-clap" ,rust-clap-2)
-          ("rust-crossterm" ,rust-crossterm-0.13)
-          ("rust-dirs" ,rust-dirs-2)
-          ("rust-flate2" ,rust-flate2-1)
-          ("rust-fs2" ,rust-fs2-0.4)
-          ("rust-futures" ,rust-futures-0.1)
-          ("rust-http" ,rust-http-0.1)
-          ("rust-hyper" ,rust-hyper-0.12)
-          ("rust-hyper-tls" ,rust-hyper-tls-0.3)
-          ("rust-idna" ,rust-idna-0.2)
-          ("rust-itertools" ,rust-itertools-0.8)
-          ("rust-lalrpop" ,rust-lalrpop-0.17)
-          ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
-          ("rust-lazy-static" ,rust-lazy-static-1)
-          ("rust-libc" ,rust-libc-0.2)
-          ("rust-memsec" ,rust-memsec-0.5)
-          ("rust-native-tls" ,rust-native-tls-0.2)
-          ("rust-nettle" ,rust-nettle-7)
-          ("rust-percent-encoding" ,rust-percent-encoding-2)
-          ("rust-prettytable-rs" ,rust-prettytable-rs-0.8)
-          ("rust-proc-macro2" ,rust-proc-macro2-1)
-          ("rust-quickcheck" ,rust-quickcheck-0.9)
-          ("rust-quote" ,rust-quote-1)
-          ("rust-rand" ,rust-rand-0.7)
-          ("rust-regex" ,rust-regex-1)
-          ("rust-rpassword" ,rust-rpassword-4)
-          ("rust-rusqlite" ,rust-rusqlite-0.19)
-          ("rust-sha2" ,rust-sha2-0.8)
-          ("rust-syn" ,rust-syn-1)
-          ("rust-tempfile" ,rust-tempfile-3)
-          ("rust-thiserror" ,rust-thiserror-1)
-          ("rust-tokio" ,rust-tokio-0.1)
-          ("rust-tokio-core" ,rust-tokio-core-0.1)
-          ("rust-tokio-io" ,rust-tokio-io-0.1)
-          ("rust-unicode-normalization" ,rust-unicode-normalization-0.1)
-          ("rust-url" ,rust-url-2)
-          ("rust-zbase32" ,rust-zbase32-0.1)))
-       ((#:cargo-development-inputs _)
-        `(("rust-assert-cli" ,rust-assert-cli-0.6)
-          ("rust-colored" ,rust-colored-1)
-          ("rust-filetime" ,rust-filetime-0.2)))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'unpin-deps
-             (lambda _
-               (substitute* (find-files "." "Cargo.toml")
-                 (("= \"<") "= \"")
-                 (("= \"=") "= \""))
-               #t))))))
-    (properties `((hidden? . #t)))))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 79b0c5ab70..8e4190e533 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -142,7 +142,7 @@ such as compact binary encodings, XML, or JSON.")
 (define-public msgpack
   (package
     (name "msgpack")
-    (version "3.2.1")
+    (version "3.3.0")
     (source
      (origin
        (method url-fetch)
@@ -157,7 +157,7 @@ such as compact binary encodings, XML, or JSON.")
            (close-output-port p)
            #t))
        (sha256
-        (base32 "1ljqmgscdb0f8w8kx2lnswnisyxchcmijbjbmswkv0g187bvqg23"))))
+        (base32 "0yzhq50ijvwrfkr97knhvn54lj3f4hr3zy39yq8wpf6xll94s4bf"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("googletest" ,googletest-1.8)
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index ccee1506bf..5c90d8b010 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -840,14 +840,14 @@ Shell (pdksh).")
 (define-public oil
   (package
     (name "oil")
-    (version "0.8.10")
+    (version "0.8.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.oilshell.org/download/oil-"
                            version ".tar.gz"))
        (sha256
-        (base32 "03ixqspizvgj869b524c33pg9c6h64g04r4pjkxfp1fxvgca70db"))))
+        (base32 "12fhcqgv0sm3i9i4qa7yggjf2qsbjlmi6yblwxb735f86357ps8a"))))
     (build-system gnu-build-system)
     (arguments
      `(#:strip-binaries? #f             ; strip breaks the binary
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index ea1798ac13..26f7ab2c76 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -64,7 +65,8 @@
        ;; XXX: To be removed with the next release of Smalltalk.
        ("autoconf" ,autoconf)
        ("automake" ,automake)
-       ("libtool" ,libtool)))
+       ("libtool" ,libtool)
+       ("zip" ,zip)))
     ;; TODO: These optional dependencies raise the closure size to ~1 GiB
     ;; from the current ~100 MiB, although some of them might be very
     ;; useful for end users:
@@ -81,8 +83,7 @@
        ("libffi" ,libffi)
        ("libltdl" ,libltdl)
        ("libsigsegv" ,libsigsegv)
-       ("lightning" ,lightning)
-       ("zip" ,zip)))
+       ("lightning" ,lightning)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -102,8 +103,12 @@
                        (find-files "doc" "\\.info"))
              #t))
          (add-before 'configure 'fix-libc
-           (lambda _
-             (let ((libc (assoc-ref %build-inputs "libc")))
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((libc (or (assoc-ref inputs "libc")
+                             ;; When cross-compiling, the input
+                             ;; is named "cross-libc" instead of
+                             ;; simply "libc".
+                             (assoc-ref inputs "cross-libc"))))
                (substitute* "libc.la.in"
                  (("@LIBC_SO_NAME@") "libc.so")
                  (("@LIBC_SO_DIR@")  (string-append libc "/lib"))))
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 6a96369032..4f209a7b5e 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2021 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,34 +410,46 @@ integrate Sphinx documents in web templates and to handle searches.")
 (define-public python-sphinx-gallery
   (package
     (name "python-sphinx-gallery")
-    (version "0.1.13")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/sphinx-gallery/sphinx-gallery")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14nbqh9krx2l2y2ylbln6l6w8iak3wac1lngvaf278y1cx7685kg"))))
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sphinx-gallery" version))
+       (sha256
+        (base32 "14zyhr7m92nafhhnzfvnbgkf5m91krd9mjyi24zn59bjq6zyr8hl"))))
     (build-system python-build-system)
     (arguments
-     ;; FIXME: Tests attempt to download <https://docs.python.org/3/objects.inv>,
-     ;; <https://docs.scipy.org/doc/numpy/objects.inv>, and
-     ;; <https://matplotlib.org/objects.inv>.
-     `(#:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'writable-files-for-tests
+           (lambda _
+             (for-each make-file-writable (find-files "."))))
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "python" "-m" "pytest" "--pyargs" "sphinx_gallery" "-k"
+                       (string-append
+                        ;; These tests require online data.
+                        "not test_embed_code_links_get_data"
+                        " and not test_run_sphinx"
+                        ;; AssertionError.
+                        " and not test_embed_links_and_styles"))))))))
     (native-inputs
-     `(("python-pytest-runner" ,python-pytest-runner)))
-    (home-page "https://sphinx-gallery.github.io/")
+     `(("python-joblib" ,python-joblib)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("python-pillow" ,python-pillow)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-sphinx" ,python-sphinx)))
+    (home-page "https://sphinx-gallery.github.io/stable/index.html")
     (synopsis "Generate an examples gallery automatically")
     (description
      "@code{sphinx_gallery} is a Sphinx extension that builds an HTML version
 from any set of Python scripts and puts it into an examples gallery.")
     (license license:bsd-3)))
 
-(define-public python2-sphinx-gallery
-  (package-with-python2 python-sphinx-gallery))
-
 (define-public python-sphinx-me
   (package
     (name "python-sphinx-me")
@@ -606,18 +619,17 @@ and several other projects.")
 (define-public python-breathe
   (package
     (name "python-breathe")
-    (version "4.22.1")
+    (version "4.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "breathe" version))
        (sha256
         (base32
-         "0snk538xv60z4vfhl3f7v5g658za7257hddkg07cknkn33k6cjvf"))))
+         "055h95fkdld7s49878fqjx1nri1drj1czc184vrb7i60mf2yqg9n"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-docutils" ,python-docutils)
-       ("python-six" ,python-six)
        ("python-sphinx" ,python-sphinx)))
     (home-page "https://github.com/michaeljones/breathe")
     (synopsis "ReStructuredText and Sphinx bridge to Doxygen")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 9f27f36b8c..3f0706665b 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -186,7 +186,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
 (define r-with-tests
   (package
     (name "r-with-tests")
-    (version "4.0.4")
+    (version "4.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -194,7 +194,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0bl098xcv8v316kqnf43v6gb4kcsv31ydqfm1f7qr824jzb2fgsj"))))
+                "109732arm6dq6d6v3fl1nyx63lcvv9569j8g6r3s2b18sxcqkrp8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:disallowed-references (,tzdata-for-tests)
@@ -587,14 +587,14 @@ also flexible enough to handle most nonstandard requirements.")
 (define-public r-matrix
   (package
     (name "r-matrix")
-    (version "1.3-3")
+    (version "1.3-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Matrix" version))
        (sha256
         (base32
-         "0fvayd6b8w6yzhil85xw7lib68dvxyzpcznwvwczlyxf8ggchzpp"))))
+         "0fbcbysp3vaivmp1yasmp8mdsldhr826vfs4vyxrjpjl8jfifhmb"))))
     (properties `((upstream-name . "Matrix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -631,13 +631,13 @@ nonlinear mixed-effects models.")
 (define-public r-mgcv
   (package
    (name "r-mgcv")
-   (version "1.8-35")
+   (version "1.8-36")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "mgcv" version))
      (sha256
-      (base32 "1dyphss1bw5rd8apgxsb364rcrkdbc9pcbsa0jy95mg9g5434wvk"))))
+      (base32 "002n4572sxslz9zfqvs5ys59m8q8wkcc5ks2m0yqs4p7l88xzca2"))))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-matrix" ,r-matrix)
@@ -1331,13 +1331,13 @@ adapted for other output formats, such as HTML or LaTeX.")
 (define-public r-formatr
   (package
     (name "r-formatr")
-    (version "1.9")
+    (version "1.11")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "formatR" version))
               (sha256
                (base32
-                "0vbzvb91y5cxjbnwpww0r40r6m1l9w1qa979sv7ghhalzr7bib3i"))))
+                "0353aj975mj0yjc91z76bbfy86y7d5cvlqqyfr93cdng14nnd0dx"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -2099,13 +2099,13 @@ jackknifed confidence intervals are available for most estimates.")
 (define-public r-rversions
   (package
     (name "r-rversions")
-    (version "2.0.2")
+    (version "2.1.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rversions" version))
               (sha256
                (base32
-                "0ghpla5r3d6zh5dn6d6ii5p0a952lcdv004m88fk8r9k76vz88rm"))))
+                "1cbwwbz8lqx2n33xr4q904whvld22s63rpyy1nn93395l7ssrakr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-curl" ,r-curl)
@@ -2644,13 +2644,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.10.4.0.0")
+    (version "0.10.5.0.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "00nc7wfrra645mp7dl4j451m3pk3a0b3lrhgf8ydnw862avr9s6v"))))
+                "059qi872f9h40ns65166qsq1i1jq1mvizm29a0xmqlyn7a5y9ca3"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3410,14 +3410,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
 (define-public r-e1071
   (package
     (name "r-e1071")
-    (version "1.7-6")
+    (version "1.7-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "e1071" version))
        (sha256
         (base32
-         "0blfnv3m5k5xm9bfx1v5awvagqlhqaqpabrvzplf4244c3j259qa"))))
+         "1phqrx787fkiamgx56sjjmzl9nh5wgpffah0mlwd7ijrf446qz3r"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -3658,13 +3658,13 @@ t-probabilities, quantiles, random deviates and densities.")
 (define-public r-matrixstats
   (package
     (name "r-matrixstats")
-    (version "0.58.0")
+    (version "0.59.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "matrixStats" version))
               (sha256
                (base32
-                "0jab3xk56vqqzgz8jbsvxvsvr83sj0gb3cic0906wjyjijwv8rw3"))))
+                "178baqrd7rbin3l10zyrkps5sda0q9mdqil9r12b3n99mlk8fhh7"))))
     (properties `((upstream-name . "matrixStats")))
     (build-system r-build-system)
     (arguments
@@ -4141,14 +4141,14 @@ hierarchical clustering dendrograms.")
 (define-public r-fastcluster
   (package
     (name "r-fastcluster")
-    (version "1.1.25")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fastcluster" version))
        (sha256
         (base32
-         "01a2xnhhvv1swd4g8p4lzyn7ww7kg49jlnzc7kfz60jqjzpisrpk"))))
+         "009amz7i5yndqw2008fgd3p11n4fsb291k2ypg3pip6dw4lr28hz"))))
     (build-system r-build-system)
     (home-page "http://danifold.net/fastcluster.html")
     (synopsis "Fast hierarchical clustering routines")
@@ -4378,13 +4378,13 @@ within a category based on their density using quasirandom noise.")
 (define-public r-beeswarm
   (package
     (name "r-beeswarm")
-    (version "0.3.1")
+    (version "0.4.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "beeswarm" version))
               (sha256
                (base32
-                "1jsggypyww77hkcic03kdb3fp8h938qs142xi0lapzh62bkn2pjj"))))
+                "016mqcbdksialkmap56rprzna9b6cd6896ml9gl2n2h8yjdk7x2i"))))
     (build-system r-build-system)
     (home-page "https://www.cbs.dtu.dk/~eklund/beeswarm/")
     (synopsis "Implementation of bee swarm plots")
@@ -4795,14 +4795,14 @@ data for species delimitation, nearest neighbor based noise detection.")
 (define-public r-deoptimr
   (package
     (name "r-deoptimr")
-    (version "1.0-8")
+    (version "1.0-9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DEoptimR" version))
        (sha256
         (base32
-         "1vz546hyjyhly70z62h5n3mn62b8llhhmim8ffp9y6jnnb0i2sc4"))))
+         "04k5gi0a5hbm6znzvjaipbmkacp694krkqs38dkbxx1gymsallb1"))))
     (properties `((upstream-name . "DEoptimR")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/DEoptimR")
@@ -4818,14 +4818,14 @@ can be efficiently implemented directly in the R language.")
 (define-public r-robustbase
   (package
     (name "r-robustbase")
-    (version "0.93-7")
+    (version "0.93-8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robustbase" version))
        (sha256
         (base32
-         "0mh9d114p3jdrjf8yn4dx5ff41niz5wn411y0ckjcpnazp8d44c9"))))
+         "16fmnk3p32mi70rkx89l1v4pry3gnrpy9jicnlfnk6lg1pwz5j8w"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -6125,3 +6125,118 @@ input, the effect size can be returned as standardized mean difference, Cohen's
 f, Hedges' g, Pearson's r or Fisher's transformation z, odds ratio or log odds,
 or eta squared effect size.")
     (license license:gpl3)))
+
+(define-public r-kknn
+  (package
+    (name "r-kknn")
+    (version "1.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "kknn" version))
+        (sha256
+          (base32
+            "1nzkg3dxaiqp87p56wm895qx5xn86hv5hjr73qvl1yiaxiq0x112"))))
+    (properties `((upstream-name . "kknn")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-igraph" ,r-igraph) ("r-matrix" ,r-matrix)))
+    (home-page "https://github.com/KlausVigo/kknn")
+    (synopsis "Weighted k-Nearest Neighbors")
+    (description
+      "Weighted k-Nearest Neighbors for Classification, Regression and Clustering.")
+    (license license:gpl2+)))
+
+(define-public r-logspline
+  (package
+    (name "r-logspline")
+    (version "2.1.16")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "logspline" version))
+        (sha256
+          (base32
+            "12hkdi77vkic05p2vhap025xdcg1n53ywm239v18713pihdlj63l"))))
+    (properties `((upstream-name . "logspline")))
+    (build-system r-build-system)
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page
+      "https://cran.r-project.org/web/packages/logspline/")
+    (synopsis
+      "Routines for Logspline Density Estimation")
+    (description
+      "Contains routines for logspline density estimation.  The function
+@code{oldlogspline()} uses the same algorithm as the logspline package version
+1.0.x; i.e.  the Kooperberg and Stone (1992) algorithm (with an improved
+interface).  The recommended routine @code{logspline()} uses an algorithm from
+@url{doi:10.1214/aos/1031594728,Stone et al (1997)}.")
+    (license license:asl2.0)))
+
+(define-public r-effects
+  (package
+    (name "r-effects")
+    (version "4.2-0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "effects" version))
+        (sha256
+          (base32
+            "0iks79rd4knrd81x4kvcpgpclr69l0m0v6sfla8k3wzkcnydycv8"))))
+    (properties `((upstream-name . "effects")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-cardata" ,r-cardata)
+        ("r-colorspace" ,r-colorspace)
+        ("r-estimability" ,r-estimability)
+        ("r-insight" ,r-insight)
+        ("r-lattice" ,r-lattice)
+        ("r-lme4" ,r-lme4)
+        ("r-nnet" ,r-nnet)
+        ("r-survey" ,r-survey)))
+    (native-inputs
+      `(("r-knitr" ,r-knitr)
+        ("r-car", r-car)))
+    (home-page "https://www.r-project.org")
+    (synopsis
+      "Effect Displays for Linear, Generalized Linear, and Other Models")
+    (description
+      "Graphical and tabular effect displays, e.g., of interactions, for
+various statistical models with linear predictors.")
+    (license license:gpl2+)))
+
+(define-public r-bayesfactor
+  (package
+    (name "r-bayesfactor")
+    (version "0.9.12-4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "BayesFactor" version))
+        (sha256
+          (base32
+            "1z083v7is21gm0a458jm5ph3xfdm7mh29a6sg2r1njq82f8x3s3g"))))
+    (properties `((upstream-name . "BayesFactor")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-coda" ,r-coda)
+        ("r-gtools" ,r-gtools)
+        ("r-hypergeo" ,r-hypergeo)
+        ("r-matrix" ,r-matrix)
+        ("r-matrixmodels" ,r-matrixmodels)
+        ("r-mvtnorm" ,r-mvtnorm)
+        ("r-pbapply" ,r-pbapply)
+        ("r-rcpp" ,r-rcpp)
+        ("r-rcppeigen" ,r-rcppeigen)
+        ("r-stringr" ,r-stringr)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page
+      "https://richarddmorey.github.io/BayesFactor/")
+    (synopsis
+      "Computation of Bayes Factors for Common Designs")
+    (description
+      "This package provides a suite of functions for computing various Bayes
+factors for simple designs, including contingency tables, one- and two-sample
+designs, one-way designs, general ANOVA designs, and linear regression.")
+    (license license:gpl2)))
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 7e297eb9ae..f4bf01c5df 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -270,15 +270,14 @@ drawing.")
 (define-public surf
   (package
     (name "surf")
-    (version "2.0")
+    (version "2.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.suckless.org/surf/surf-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps"))))
+        (base32 "0mrj0kp01bwrgrn4v298g81h6zyq64ijsg790di68nm21f985rbj"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -297,6 +296,7 @@ drawing.")
              #t)))))
     (inputs
      `(("dmenu" ,dmenu)
+       ("gcr" ,gcr)
        ("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("webkitgtk" ,webkitgtk)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index af7148bf84..9d8184801c 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Adonay Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@@ -324,14 +324,14 @@ GNU ccRTP stack and serves as library for other RTP stacks
 (define-public osip
   (package
    (name "osip")
-   (version "5.2.0")
+   (version "5.2.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz"))
             (patches (search-patches "osip-CVE-2017-7853.patch"))
             (sha256
              (base32
-              "0xdk3cszkzb8nb757gl47slrr13mf6xz43ab4k343fv8llp8pd2g"))))
+              "1wibs2zs035ay7qvl5ai8drv6f0xw7iscb0frmpgax3pisy88dzf"))))
    (build-system gnu-build-system)
 
    (synopsis "Library implementing SIP (RFC-3261)")
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index b63aa3b253..426a15853d 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -524,13 +524,14 @@ OpenBSD team.")
                #t)))
          (add-after 'install 'install-extra-documentation
            ;; Install sample configuration file, Info, and HTML manual.
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
              (let* ((share (string-append (assoc-ref outputs "out") "/share"))
                     (doc (string-append share "/doc/" ,name "-" ,version))
                     (html (string-append share "/html"))
                     (info (string-append share "/info"))
-                    (makeinfo (string-append (assoc-ref %build-inputs "texinfo")
-                                             "/bin/makeinfo")))
+                    (makeinfo (string-append
+                               (assoc-ref (or native-inputs inputs) "texinfo")
+                               "/bin/makeinfo")))
                ;; First fix Texinfo documentation, create appropriate
                ;; directories, then generate Info and HTML files there.
                (substitute* "qe-doc.texi"
@@ -807,14 +808,14 @@ editors.")
 (define-public texmacs
   (package
     (name "texmacs")
-    (version "1.99.20")
+    (version "1.99.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/"
                            "source/TeXmacs-" version "-src.tar.gz"))
        (sha256
-        (base32 "0wny36qsgzpp084h2i85rd3l8fq1q69sglc266prb06ygcb0iyia"))))
+        (base32 "0zmm8212cha22dp1xablj1h4anlnyhjh09n13ckqf6ppb1bkf4gm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index d9e62e8627..2930c61659 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -9,13 +9,14 @@
 ;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017–2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -311,6 +312,7 @@ required structures.")
   (package
    (name "openssl")
    (version "1.1.1j")
+   (replacement openssl-1.1.1k)
    (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -444,6 +446,25 @@ required structures.")
    (license license:openssl)
    (home-page "https://www.openssl.org/")))
 
+;; Replacement package to fix CVE-2021-3449 and CVE-2021-3450.
+(define openssl-1.1.1k
+  (package
+    (inherit openssl)
+    (version "1.1.1k")
+    (source (origin
+              (method url-fetch)
+              (uri (list (string-append "https://www.openssl.org/source/openssl-"
+                                        version ".tar.gz")
+                         (string-append "ftp://ftp.openssl.org/source/"
+                                        "openssl-" version ".tar.gz")
+                         (string-append "ftp://ftp.openssl.org/source/old/"
+                                        (string-trim-right version char-set:letter)
+                                        "/openssl-" version ".tar.gz")))
+              (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
+              (sha256
+               (base32
+                "1rdfzcrxy9y38wqdw5942vmdax9hjhgrprzxm42csal7p5shhal9"))))))
+
 (define-public openssl-1.0
   (package
     (inherit openssl)
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index e9484aa487..5fbbeb53be 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -144,6 +145,27 @@ and security.")
      "This package provides a library to access Tryton server as a client.")
     (license license:lgpl3+)))
 
+(define (tryton-phases module . extra-arguments)
+  "Return the phases for building and testing a Tryton module named MODULE.
+If present, pass EXTRA-ARGUMENTS to runtest as well."
+  `(modify-phases %standard-phases
+     (replace 'check
+       (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+         (let ((runtest
+                (string-append
+                 (assoc-ref inputs "trytond")
+                 "/lib/python"
+                 ,(version-major+minor (package-version python))
+                 "/site-packages/trytond/tests/run-tests.py")))
+           (when tests?
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" runtest "-m" ,module ,@extra-arguments)))))))
+
+(define (tryton-arguments module . extra-arguments)
+  "Like ’tryton-phases’, but directly return all arguments for
+the build system."
+  `(#:phases ,(apply tryton-phases module extra-arguments)))
+
 ;;;
 ;;;  Tryton modules - please sort alphabetically
 ;;;
@@ -159,19 +181,7 @@ and security.")
        (sha256
         (base32 "16ny67vcnxk9ngcxd56cfixm441vs9jxv3apmb16xsi47yk2xd7w"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "account")))))))
+    (arguments (tryton-arguments "account"))
     (native-inputs
      `(("python-genshi" ,python-genshi)
        ("python-lxml" ,python-lxml)
@@ -210,19 +220,7 @@ most of accounting needs.")
        (sha256
         (base32 "0drccambg6855p7ai8654c7f9v85jzwicwpxmagyrr09qz6qzgcz"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "account_invoice")))))))
+    (arguments (tryton-arguments "account_invoice"))
     (native-inputs
      `(("python-genshi" ,python-genshi)
        ("python-lxml" ,python-lxml)
@@ -268,19 +266,7 @@ term.")
        (sha256
         (base32 "02m6ikcc38ac41ddzg5xp5l9jz0k6j7j1g2xa62ki4v093yn4z5v"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "account_invoice_stock")))))))
+    (arguments (tryton-arguments "account_invoice_stock"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -319,19 +305,7 @@ average price of the posted invoice lines that are linked to it.")
        (sha256
         (base32 "10bpbkkmllbh9lm5ajydmc5nvqm9bbdn9rmm03jqgik23s5kyx2z"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "account_product")))))))
+    (arguments (tryton-arguments "account_product"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -372,19 +346,7 @@ and category.")
        (sha256
         (base32 "10rn2rf1ji7d1gxmgca368yvabql1ahklqg7p8sh5bl79vn5qx5x"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "analytic_account")))))))
+    (arguments (tryton-arguments "analytic_account"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -424,19 +386,7 @@ required to analyse accounting using multiple different axes.")
        (sha256
         (base32 "1bwy2rkgfw32cwhq5fh3rpy7bx425h44ap10i9kjx5ak86bfnpz9"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "company")))))))
+    (arguments (tryton-arguments "company"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -472,20 +422,8 @@ company and employee and extend the user model.")
        (sha256
         (base32 "1lkspk5w5pb0gg2h27zb7vwcj993gkm1f84qdxmqlpkc8raqvicj"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               ;; Doctest contains one test that requires internet access.
-               (invoke "python" runtest "-m" "country" "--no-doctest")))))))
+    ;; Doctest contains one test that requires internet access.
+    (arguments (tryton-arguments "country" "--no-doctest"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -518,19 +456,7 @@ company and employee and extend the user model.")
        (sha256
         (base32 "0b5p7ibil7nlsv7f31j69rka4xj5za798262algx7xa88a6h7mmx"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "currency")))))))
+    (arguments (tryton-arguments "currency"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -565,20 +491,8 @@ currency and rate.")
        (sha256
         (base32 "1hapfq7ip99s4qp9xra1m40q4n379p9pmfnz2x4ggd79ss76bghc"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               ;; Doctest 'scenario_party_phone_number.rst' fails.
-               (invoke "python" runtest "-m" "party" "--no-doctest")))))))
+    ;; Doctest 'scenario_party_phone_number.rst' fails.
+    (arguments (tryton-arguments "party" "--no-doctest"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -613,19 +527,7 @@ addresses.")
        (sha256
         (base32 "0x18ngpjyrdwjwg17bz98jph4jv5gcv0qc0p2kxpam4lqsy34ic2"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "product")))))))
+    (arguments (tryton-arguments "product"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -661,19 +563,7 @@ Template and Product.")
        (sha256
         (base32 "0na74zijj46b12gypy9si3las02a96rh5ygl503c7razha61g1b0"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "purchase")))))))
+    (arguments (tryton-arguments "purchase"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -721,21 +611,8 @@ Template and Product.")
        (sha256
         (base32 "1m92snnvgisnv083nml6cz5qgnfdg539rd5bwg3lqrknm7343w16"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               ;; Doctest 'scenario_purchase_request.rst' fails.
-               (invoke "python" runtest
-                       "-m" "purchase_request" "--no-doctest")))))))
+    ;; Doctest 'scenario_purchase_request.rst' fails.
+    (arguments (tryton-arguments "purchase_request" "--no-doctest"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -773,19 +650,7 @@ generated by other process from Tryton.")
        (sha256
         (base32 "0yb8kd3alwqkivrlpx0ni4jxv3x14i37lmwism9yi81xwchyrcjk"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "stock")))))))
+    (arguments (tryton-arguments "stock"))
     (native-inputs
      `(("python-genshi" ,python-genshi)
        ("python-lxml" ,python-lxml)
@@ -827,19 +692,7 @@ inventory to control and update stock levels.")
        (sha256
         (base32 "0w2f62cfzm7j8wnw8igmjslpxc1a8s82dkdizyvim5qhjg6mrsym"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "stock_lot")))))))
+    (arguments (tryton-arguments "stock_lot"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
@@ -874,19 +727,7 @@ inventory to control and update stock levels.")
        (sha256
         (base32 "01cgpxlznldrba79a3xmj4d0csyfc3ccgs66c490j8v8rdnqpbww"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (let ((runtest
-                  (string-append
-                   (assoc-ref %build-inputs "trytond")
-                   "/lib/python"
-                   ,(version-major+minor (package-version python))
-                   "/site-packages/trytond/tests/run-tests.py")))
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" runtest "-m" "stock_supply")))))))
+    (arguments (tryton-arguments "stock_supply"))
     (native-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-genshi" ,python-genshi)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 580f124f71..c596b8bf89 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -175,14 +175,14 @@ as well as the classic centralized workflow.")
 (define-public git
   (package
    (name "git")
-   (version "2.31.1")
+   (version "2.32.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "10367n5sv4nsgaxy486pbp7nscx34vjk8vrb06jm9ffm8ix42qcz"))))
+              "08rnm3ipjqdd2n31dw7mxl3iv9g4nxgc409krmz892a37kd43a38"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -202,7 +202,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "00n7vbfmd3ywgjksgwrszwj0l2niba64qkaq07ra4p8mawy483ax"))))
+            "1hba3wh1fmhrwzw93a0m7q4kb3kwwwi1bx4457c4lkf94l2cpqqr"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc)
       ("docbook-xsl" ,docbook-xsl)
@@ -1701,7 +1701,7 @@ interface.")
 (define-public python-hg-evolve
   (package
     (name "python-hg-evolve")
-    (version "10.0.1")
+    (version "10.3.1")
     (source
       (origin
         (method hg-fetch)
@@ -1711,7 +1711,7 @@ interface.")
         (file-name (string-append name "-" version "-checkout"))
         (sha256
           (base32
-            "1lz407373lfam9n02gq0l0rc2sjvn0m96kbzy93ipia3ika8fa68"))))
+            "0msnp5fp8sz4q2r5xpcmm60h82kwkyg23y212v1xfp7ixkq9f4qa"))))
     (build-system python-build-system)
     (arguments
      ;; Tests need mercurial source code.
@@ -2280,7 +2280,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
 (define-public tig
   (package
     (name "tig")
-    (version "2.5.3")
+    (version "2.5.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2288,7 +2288,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
                     version "/tig-" version ".tar.gz"))
               (sha256
                (base32
-                "1p1575yh4daxjifywxkd0hgyfwciylqcm2qakawvwn6mk620ca75"))))
+                "19va4jn46s0vjv9f337g3ad6hy1f285ynl27i9gkd9l70b9q90n4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4b1d2540e4..c8ec2645f9 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -50,6 +50,7 @@
 ;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
 ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2021 David Wilson <david@daviwil.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -290,7 +291,7 @@ video and audio streams from a DVD.")
 (define-public svt-hevc
   (package
     (name "svt-hevc")
-    (version "1.5.0")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
@@ -300,7 +301,7 @@ video and audio streams from a DVD.")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "038r3x3axil895vh2dq6223623ybrc45vn58vfmfb7cikz68sy23"))))
+        (base32 "0rac70p6rpvdx9v0bdd8nphgr7imdxb7nz0x77n3p7h3180zz9x0"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f)) ; Test script is stand-alone
@@ -1425,14 +1426,14 @@ operate properly.")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "4.3.2")
+    (version "4.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1nyd9jlcy0pqnwzi29a7sg50hq37vb0g3f9l16y3q8yh3m7ydr26"))))
+               "02fr8mvf2agwmyb9q2bmh9p09gpz3xxmpcbbbj8iydz57hc0mc86"))))
     (build-system gnu-build-system)
     (inputs
      `(("dav1d" ,dav1d)
@@ -1616,6 +1617,17 @@ convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
     (license license:gpl2+)))
 
+(define-public ffmpeg-4.3
+  (package/inherit ffmpeg
+    (version "4.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1nyd9jlcy0pqnwzi29a7sg50hq37vb0g3f9l16y3q8yh3m7ydr26"))))))
+
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
@@ -1755,7 +1767,7 @@ videoformats depend on the configuration flags of ffmpeg.")
 (define-public vlc
   (package
     (name "vlc")
-    (version "3.0.12")
+    (version "3.0.14")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1764,7 +1776,7 @@ videoformats depend on the configuration flags of ffmpeg.")
                     "/vlc-" version ".tar.xz"))
               (sha256
                (base32
-                "0ygqihw2c5vvzv8950dlf7rdwz1cpz1668jgyja604ljibrmix7g"))))
+                "19imhm6wd85nm2r4xwa7g500rmya021aj93b1q33gany6ddkxfa9"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
@@ -2140,7 +2152,7 @@ To load this plugin, specify the following option when starting mpv:
 (define-public libvpx
   (package
     (name "libvpx")
-    (version "1.9.0")
+    (version "1.10.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2149,7 +2161,7 @@ To load this plugin, specify the following option when starting mpv:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "16xv6ambc82g14h1y0q1vyy57wp6j9fbp0nk0wd5csnrw407rhry"))
+                "1p4v6j1505n3gnvx3iksciyi818ymxpazj9fmdrchzbl9pfzg4qi"))
               (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -2810,7 +2822,7 @@ capabilities.")
 (define-public vapoursynth
   (package
     (name "vapoursynth")
-    (version "52")
+    (version "53")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2819,19 +2831,31 @@ capabilities.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1krfdzc2x2vxv4nq9kiv1c09hgj525qn120ah91fw2ikq8ldvmx4"))))
+                "0qcsfkpkry0cmvi60khjwvfz4fqhy23nqmn4pb9qrwll26sn9dcr"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (site   (string-append out "/lib/python"
+                                           ,(version-major+minor
+                                             (package-version python))
+                                           "/site-packages")))
+               (wrap-program (string-append out "/bin/vspipe")
+                 `("PYTHONPATH" ":" = (,site)))))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("cython" ,python-cython)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
-       ("python" ,python)
        ("yasm" ,yasm)))
     (inputs
      `(("ffmpeg" ,ffmpeg)
        ("libass" ,libass)
+       ("python" ,python)
        ("tesseract-ocr" ,tesseract-ocr)
        ("zimg" ,zimg)))
     (home-page "http://www.vapoursynth.com/")
@@ -4474,7 +4498,9 @@ create smoother and stable videos.")
        ("unittest++" ,unittest-cpp)))
     (propagated-inputs                  ;all referenced in installed headers
      `(("cppzmq" ,cppzmq)
-       ("ffmpeg" ,ffmpeg)
+       ;; libopenshot doesn't yet build with ffmpeg 4.4 (see:
+       ;; https://github.com/OpenShot/libopenshot/issues/676).
+       ("ffmpeg" ,ffmpeg-4.3)
        ("imagemagick" ,imagemagick)
        ("jsoncpp" ,jsoncpp)
        ("libopenshot-audio" ,libopenshot-audio)
@@ -4527,7 +4553,7 @@ API.  It includes bindings for Python, Ruby, and other languages.")
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)
-       ("font-ubuntu" ,font-ubuntu)
+       ("font-dejavu" ,font-dejavu)
        ("libopenshot" ,libopenshot)
        ("python" ,python)
        ("python-pyqt" ,python-pyqt)
@@ -4548,10 +4574,11 @@ API.  It includes bindings for Python, Ruby, and other languages.")
                       (invoke "python" "src/tests/query_tests.py")))
                   (add-after 'unpack 'patch-font-location
                     (lambda* (#:key inputs #:allow-other-keys)
-                      (let ((font (assoc-ref inputs "font-ubuntu")))
+                      (let ((font (assoc-ref inputs "font-dejavu")))
                         (substitute* "src/classes/app.py"
                           (("info.IMAGES_PATH") (string-append "\"" font "\""))
-                          (("fonts") "share/fonts/truetype")))
+                          (("fonts") "share/fonts/truetype")
+                          (("[A-Za-z_-]+.ttf") "DejaVuSans.ttf")))
                       #t))
                   (add-before 'install 'set-tmp-home
                     (lambda _
@@ -4855,64 +4882,70 @@ result in several formats:
 (define-public rav1e
   (package
     (name "rav1e")
-    (version "0.3.5")
+    (version "0.4.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rav1e" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0c40gq4qid2apmlgzx98f6826jmn2n61prk0rn7sjxaw7yimw854"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rav1e" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "00rjil6qbrwfxhhlq9yvidxm0gp9qdbywhf5zvkj85lykbhyff09"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-aom-sys" ,rust-aom-sys-0.2)
-        ("rust-arbitrary" ,rust-arbitrary-0.2)
+        ("rust-arbitrary" ,rust-arbitrary-0.4)
         ("rust-arg-enum-proc-macro" ,rust-arg-enum-proc-macro-0.3)
         ("rust-arrayvec" ,rust-arrayvec-0.5)
+        ("rust-av-metrics" ,rust-av-metrics-0.6)
         ("rust-backtrace" ,rust-backtrace-0.3)
-        ("rust-bitstream-io" ,rust-bitstream-io-0.8)
+        ("rust-bitstream-io" ,rust-bitstream-io-1)
         ("rust-byteorder" ,rust-byteorder-1)
-        ("rust-cc" ,rust-cc-1)
-        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-clap" ,rust-clap-2)
-        ("rust-console" ,rust-console-0.11)
+        ("rust-console" ,rust-console-0.14)
+        ("rust-crossbeam" ,rust-crossbeam-0.8)
         ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
         ("rust-fern" ,rust-fern-0.6)
         ("rust-image" ,rust-image-0.23)
         ("rust-interpolate-name" ,rust-interpolate-name-0.2)
-        ("rust-itertools" ,rust-itertools-0.9)
+        ("rust-itertools" ,rust-itertools-0.10)
         ("rust-ivf" ,rust-ivf-0.1)
         ("rust-libc" ,rust-libc-0.2)
+        ("rust-libfuzzer-sys" ,rust-libfuzzer-sys-0.3)
         ("rust-log" ,rust-log-0.4)
         ("rust-nasm-rs" ,rust-nasm-rs-0.2)
-        ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.2)
+        ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.3)
         ("rust-num-derive" ,rust-num-derive-0.3)
         ("rust-num-traits" ,rust-num-traits-0.2)
-        ("rust-paste" ,rust-paste-0.1)
-        ("rust-rand" ,rust-rand-0.7)
-        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
+        ("rust-paste" ,rust-paste-1)
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-rand-chacha" ,rust-rand-chacha-0.3)
         ("rust-rayon" ,rust-rayon-1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-rust-hawktracer" ,rust-rust-hawktracer-0.7)
-        ("rust-rustc-version" ,rust-rustc-version-0.2)
+        ("rust-rustc-version" ,rust-rustc-version-0.3)
         ("rust-scan-fmt" ,rust-scan-fmt-0.2)
         ("rust-serde" ,rust-serde-1)
-        ("rust-signal-hook" ,rust-signal-hook-0.1)
+        ("rust-signal-hook" ,rust-signal-hook-0.3)
         ("rust-simd-helpers" ,rust-simd-helpers-0.1)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-toml" ,rust-toml-0.5)
+        ("rust-v-frame" ,rust-v-frame-0.2)
         ("rust-vergen" ,rust-vergen-3)
-        ("rust-y4m" ,rust-y4m-0.5))
+        ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)
+        ("rust-y4m" ,rust-y4m-0.7))
        #:cargo-development-inputs
        (("rust-assert-cmd" ,rust-assert-cmd-1)
+        ("rust-cc" ,rust-cc-1)
         ("rust-criterion" ,rust-criterion-0.3)
         ("rust-interpolate-name" ,rust-interpolate-name-0.2)
         ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
-        ("rust-rand" ,rust-rand-0.7)
-        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
-        ("rust-semver" ,rust-semver-0.9))
+        ("rust-rand" ,rust-rand-0.8)
+        ("rust-rand-chacha" ,rust-rand-chacha-0.3)
+        ("rust-semver" ,rust-semver-0.11))
        #:phases
        (modify-phases %standard-phases
          (replace 'build
@@ -4921,13 +4954,13 @@ result in several formats:
                (invoke "cargo" "cinstall" "--release"
                        (string-append "--prefix=" out))))))))
     (native-inputs
-     `(("cargo-c" ,rust-cargo-c)))
-    (inputs
-     `(("nasm" ,nasm)))
+     `(("cargo-c" ,rust-cargo-c)
+       ("nasm" ,nasm)))
     (home-page "https://github.com/xiph/rav1e/")
-    (synopsis "The fastest and safest AV1 encoder")
-    (description
-     "The fastest and safest AV1 encoder.")
+    (synopsis "Fast and safe AV1 encoder")
+    (description "@code{rav1e} is an AV1 video encoder.  It is designed to
+eventually cover all use cases, though in its current form it is most suitable
+for cases where libaom (the reference encoder) is too slow.")
     (license license:bsd-2)))
 
 (define-public peek
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index ebab790ee0..238c25d486 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -695,7 +695,7 @@ are detected, the user is notified.")))
                      (lambda (prefix)
                        (let ((path (string-append prefix "/share/lua/" lua-version)))
                          (string-append path "/?.lua;" path "/?/?.lua"))))
-                    (lua-inputs (map (cute assoc-ref %build-inputs <>)
+                    (lua-inputs (map (cute assoc-ref inputs <>)
                                      '("lua"
                                        "lua-luv"
                                        "lua-lpeg"
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index f6a198056d..59b660de7c 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2021 Dion Mendel <guix@dm9.info>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1028,6 +1029,35 @@ Through a powerful API and simple tools, it lets Linux users easily create and
 manage system or application containers.")
     (license license:lgpl2.1+)))
 
+(define-public lxcfs
+  (package
+    (name "lxcfs")
+    (version "4.0.8")
+    (home-page "https://github.com/lxc/lxcfs")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "lxcfs-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1f74wy88si2ia035pcvciq5821kc8jcb75w1f8vhbp0cd29rqdpi"))))
+    (arguments
+     '(#:configure-flags '("--localstatedir=/var")))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fuse" ,fuse)))
+    (build-system gnu-build-system)
+    (synopsis "FUSE based filesystem for LXC")
+    (description "LXCFS is a small FUSE filesystem written with the intention
+of making Linux containers feel more like a virtual machine.
+It started as a side-project of LXC but is useable by any runtime.")
+    (license license:lgpl2.1+)))
+
 (define-public libvirt
   (package
     (name "libvirt")
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index 6ff3e38b0a..4ad202b164 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -61,7 +61,7 @@
 (define-public remmina
   (package
     (name "remmina")
-    (version "1.4.16")
+    (version "1.4.18")
     (source
      (origin
        (method git-fetch)
@@ -71,7 +71,7 @@
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+        (base32 "0s4ry2vacn4pw4whfkq6vgg7p5jsj4nyvx1h1cp60ihqg0grx99v"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No target
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index af178f9092..d2cda59540 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -178,14 +178,14 @@ older or slower computers and embedded systems.")
 (define-public links
   (package
     (name "links")
-    (version "2.22")
+    (version "2.23")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://links.twibright.com/download/"
                                   "links-" version ".tar.bz2"))
               (sha256
                (base32
-                "0k88qbmq0mf6zmk2v158c0rxvqbi7ysn58xyf4qqw7kz79mrhr03"))))
+                "0idcwryfbf6ds5x2fx1k21m459qz5mrz3hw4a6ziiz91yl1d4q36"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -231,7 +231,7 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
 (define-public luakit
   (package
     (name "luakit")
-    (version "2.2")
+    (version "2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -240,7 +240,7 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0km5nxn6innzn8pfsvlkxvfj2z5g46fp6dy5bnmaklbn13mqlcrn"))))
+                "1khbn7dpizkznnwkw7rcfhf72dnd1nazk7dwb4rkh9i97b53mf1y"))))
     (inputs
      `(("lua-5.1" ,lua-5.1)
        ("gtk+" ,gtk+)
@@ -254,7 +254,7 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
      `(("pkg-config" ,pkg-config)))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '(#:make-flags
+     `(#:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list
           "CC=gcc"
@@ -271,6 +271,10 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
                       (assoc-ref %build-inputs "lua5.1-filesystem")
                       "/lib/lua/5.1/?.so;;"))
              #t))
+         (add-before 'build 'set-version
+           (lambda _
+             (setenv "VERSION_FROM_GIT" ,(package-version this-package))
+             #t))
          (delete 'configure)
          (delete 'check)
          (add-after 'install 'wrap
@@ -483,7 +487,7 @@ interface.")
 (define-public qutebrowser
   (package
     (name "qutebrowser")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
@@ -491,7 +495,7 @@ interface.")
                            "qutebrowser/releases/download/v" version "/"
                            "qutebrowser-" version ".tar.gz"))
        (sha256
-        (base32 "0vr6xpjy93w4i0x408vvs9xl497sjah51lxdk4awnx2gfg3acz14"))))
+        (base32 "11vjp20gzmdjj09b7wxzn7ar6viih0bk76y618yqsyqqkffylmbq"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-attrs" ,python-attrs))) ; for tests
@@ -718,7 +722,7 @@ key-bindings (Emacs, vi, CUA), and is fully configurable in Common Lisp.")
 (define-public lagrange
   (package
     (name "lagrange")
-    (version "1.3.4")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
@@ -726,7 +730,7 @@ key-bindings (Emacs, vi, CUA), and is fully configurable in Common Lisp.")
         (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
                        "download/v" version "/lagrange-" version ".tar.gz"))
        (sha256
-        (base32 "108b8a9vdmf846v7p30fs9z0b68w3naifixnia0ra54ssxjvy0h6"))))
+        (base32 "0ziidk1qv7gaj2pvbla09vznjgslgqwr9ljfd9hskrv6nc68wafs"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #false))                ;no tests
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5d7da25bf2..98a3ce5983 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -249,14 +249,14 @@
 (define-public httpd
   (package
     (name "httpd")
-    (version "2.4.47")
+    (version "2.4.48")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/httpd/httpd-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1jh31j4740wz463l1j49ir2lhh42x9z4byiq25m12y75r3dhdl13"))))
+               "0v4npxnvih5mlxx6dywwhhfs8xvgcckc0hxzwk3hi0g8nbkjdj0v"))))
     (build-system gnu-build-system)
     (native-inputs `(("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(("apr" ,apr)
@@ -318,7 +318,7 @@ Interface} specification.")
 (define-public monolith
   (package
     (name "monolith")
-    (version "2.4.1")
+    (version "2.5.0")
     (source
      (origin
        (method git-fetch)
@@ -327,7 +327,7 @@ Interface} specification.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1z0bcvk2cvx2cd0hs8addzcb070xvrkcxvg25691xw0ikiynpkwz"))))
+        (base32 "0s6jyhz51d39ccz0ghr7hy1fww84b0pzsyb8s63qgxbndp2c42l0"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -369,14 +369,14 @@ the same, being completely separated from the Internet.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.19.10")
+    (version "1.21.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "121d11693d6dbim3lh64hrqi66z129z30cvcrpbnm631yl7jkl78"))))
+                "0w87zhm5nfx88x9hj6drrvm5f3m02kzbjp39x1lsglrbmi5jl6gy"))))
     (build-system gnu-build-system)
     (inputs `(("libxml2" ,libxml2)
               ("libxslt" ,libxslt)
@@ -467,9 +467,9 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
 
 (define-public nginx-documentation
   ;; This documentation should be relevant for the current nginx package.
-  (let ((version "1.19.10")
-        (revision 2708)
-        (changeset "f8686d85df53"))
+  (let ((version "1.21.0")
+        (revision 2726)
+        (changeset "a7a36efd10af"))
     (package
       (name "nginx-documentation")
       (version (simple-format #f "~A-~A-~A" version revision changeset))
@@ -481,7 +481,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
                (file-name (string-append name "-" version))
                (sha256
                 (base32
-                 "00b0dkpblw3m2cwbbzv3miw47c0m3s0dvh1xy0hihkggy7mqv2r2"))))
+                 "1fl7rkbfdd26c78h85x4w3kas16rpj4pxzjhc071qvx7znwgm2pn"))))
       (build-system gnu-build-system)
       (arguments
        '(#:tests? #f                    ; no test suite
@@ -2009,7 +2009,7 @@ stylesheets, you'll need to use another program that uses this library,
 (define-public sassc
   (package
     (name "sassc")
-    (version "3.6.1")
+    (version "3.6.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2018,7 +2018,7 @@ stylesheets, you'll need to use another program that uses this library,
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1sxm54mkhs9m4vnl7vn11y17mhzamc403hv3966j1c7p2rbzg5pv"))))
+                "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -2037,9 +2037,9 @@ stylesheets, you'll need to use another program that uses this library,
                (("install: libsass-install-\\$\\(BUILD\\) \\\\")
                 "install: \\"))
              #t))
-         ;; This phase fails for some reason.
+         ;; This phase fails because…
          (delete 'bootstrap)
-         ;; There is no configure script.
+         ;; …there is no configure script to be generated.
          (delete 'configure)
          (add-before 'build 'setup-environment
            (lambda _
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index b546e1d5f8..58b3330293 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -39,6 +39,7 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu))
 
 (define-public wget
@@ -77,15 +78,16 @@ in downloaded documents to relative links.")
 (define-public wgetpaste
   (package
     (name "wgetpaste")
-    (version "2.30")
+    (version "2.32")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://wgetpaste.zlin.dk/wgetpaste-"
-                            version ".tar.bz2"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/zlin/wgetpaste")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
-         (base32 "14k5i6j6f34hcf9gdb9cnvfwscn0ys2dgd73ci421wj9zzqkbv73"))
-        (patches (search-patches "wgetpaste-update-bpaste.patch"))))
+         (base32 "13zdqfnbpymwz2f04icw92flj50227n5r0dcms84qxswfxrarnas"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -106,11 +108,9 @@ in downloaded documents to relative links.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin"))
-                    (zsh (string-append out "/share/zsh/site-functions"))
-                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+                    (zsh (string-append out "/share/zsh/site-functions")))
                (install-file "wgetpaste" bin)
                (install-file "_wgetpaste" zsh)
-               (install-file "LICENSE" doc)
                #t)))
          (add-after 'install 'wrap-program
            ;; /bin/wgetpaste prides itself on relying only on the following
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index d339851f51..fe28585dd5 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -46,6 +46,7 @@
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2021 Renzo Poddighe <renzo@poddighe.nl>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -511,6 +512,39 @@ manager supports it, you can use xdotool to switch desktops, move windows
 between desktops, and change the number of desktops.")
     (license license:bsd-3)))
 
+(define-public xdo
+  (package
+    (name "xdo")
+    (version "0.5.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/baskerville/xdo")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1h3jrygcjjbavdbkpx2hscsf0yf97gk487lzjdlvymd7dxdv9hy9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "PREFIX=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (inputs
+     `(("libxcb" ,libxcb)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xcb-util" ,xcb-util)))
+    (home-page "https://github.com/baskerville/xdo")
+    (synopsis "Small X utility to perform elementary actions on windows")
+    (description
+     "Apply the given action to the given windows.  If no window IDs and no
+options are given, the action applies to the focused window.")
+    (license license:bsd-2)))
+
 (define-public xeyes
   (package
     (name "xeyes")
@@ -1206,7 +1240,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "1.7")
+    (version "1.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1214,7 +1248,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "0797gc055dgg2jfqijy9823bd83jwr4wb2z9id992qlcr0xmz1rw"))))
+                "14aj4ss1chxxgaprs9sfriia2ch9wj9rqay0ndkzk1m7jx2qrjgn"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -2800,3 +2834,44 @@ and execute @file{.desktop} files of the Application type.")
      "The @command{hsetroot} command composes wallpapers for X.
 This package is the fork of hsetroot by Hyriand.")
     (license license:gpl2+)))
+
+(define-public jumpapp
+  (package
+    (name "jumpapp")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mkropat/jumpapp")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jrk4mm42sz6ca2gkb6w3dad53d4im4shpgsq8s4vr6xpl3b43ry"))))
+    (build-system gnu-build-system)
+    (arguments `(#:phases
+                 (modify-phases %standard-phases
+                   (delete 'configure)
+                   (delete 'check)
+                   (add-before 'install 'set-prefix-in-makefile
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let ((out (assoc-ref outputs "out")))
+                         (substitute* "Makefile"
+                           (("PREFIX =.*")
+                            (string-append "PREFIX = " out "\n")))
+                         #true))))))
+    (propagated-inputs
+     `(("wmctrl" ,wmctrl)
+       ("xdotool" ,xdotool)
+       ("xprop" ,xprop)))
+    (native-inputs
+     `(("pandoc" ,pandoc)
+       ("perl" ,perl)))
+    (synopsis "Run-or-raise application switcher for any X11 desktop")
+    (description
+     "Bind a key for any given application that will launch the application,
+if it's not already running, or focus the application's window,if it is running.
+Pressing the key again will cycle to the application's next window,
+if there's more than one.")
+    (home-page "https://github.com/mkropat/jumpapp")
+    (license license:expat)))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 8ed0e518a7..fbbcbd6e61 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,21 +45,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:export (libogg
-            libvorbis
-            libtheora
-            speex
-            speexdsp
-            ao
-            flac
-            libkate
-            vorbis-tools
-            opus
-            opusfile
-            opus-tools))
+  #:use-module (guix build-system gnu))
 
-(define libogg
+(define-public libogg
   (package
    (name "libogg")
    (version "1.3.4")
@@ -83,7 +72,7 @@ periodic timestamps for seeking.")
                                "See COPYING in the distribution."))
    (home-page "https://xiph.org/ogg/")))
 
-(define libvorbis
+(define-public libvorbis
   (package
    (name "libvorbis")
    (version "1.3.7")
@@ -110,7 +99,7 @@ polyphonic) audio and music at fixed and variable bitrates from 16 to
                                "See COPYING in the distribution."))
    (home-page "https://xiph.org/vorbis/")))
 
-(define libtheora
+(define-public libtheora
   (package
     (name "libtheora")
     (version "1.1.1")
@@ -136,7 +125,7 @@ compressed video format.")
     (license license:bsd-3)
     (home-page "https://xiph.org/theora/")))
 
-(define speex
+(define-public speex
   (package
     (name "speex")
     (version "1.2.0")
@@ -167,7 +156,7 @@ stereo encoding, and voice activity detection.")
     (license (license:non-copyleft "file://COPYING"
                                 "See COPYING in the distribution."))))
 
-(define speexdsp
+(define-public speexdsp
   (package
     (name "speexdsp")
     (version "1.2.0")
@@ -193,7 +182,7 @@ work from the @code{speex} codec.")
     (license (license:non-copyleft "file://COPYING"
                                    "See COPYING in the distribution."))))
 
-(define ao
+(define-public ao
   (package
     (name "ao")
     ;; We need a few commits on top of 1.2.2 to fix CVE-2017-11548.
@@ -249,7 +238,7 @@ It currently supports:
     (properties '((cpe-name . "libao")))
     (home-page "https://www.xiph.org/ao/")))
 
-(define flac
+(define-public flac
   (package
    (name "flac")
    (version "1.3.3")
@@ -273,7 +262,7 @@ meaning that audio is compressed in FLAC without any loss in quality.")
                                "See COPYING in the distribution.")) ; and LGPL and GPL
    (home-page "https://xiph.org/flac/")))
 
-(define libkate
+(define-public libkate
   (package
    (name "libkate")
    (version "0.4.1")
@@ -309,7 +298,7 @@ Kate stream.")
    (license license:bsd-3)
    (home-page "https://wiki.xiph.org/OggKate")))
 
-(define vorbis-tools
+(define-public vorbis-tools
   (package
    (name "vorbis-tools")
    (version "1.4.2")
@@ -343,7 +332,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
    (license license:gpl2)
    (home-page "https://xiph.org/vorbis/")))
 
-(define opus
+(define-public opus
   (package
     (name "opus")
     (version "1.3.1")
@@ -367,7 +356,7 @@ incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec.")
     (license license:bsd-3)
     (home-page "https://www.opus-codec.org")))
 
-(define opus-tools
+(define-public opus-tools
   (package
     (name "opus-tools")
     (version "0.2")
@@ -403,7 +392,7 @@ decoding .opus files.")
     (license license:bsd-3)
     (home-page "https://www.opus-codec.org")))
 
-(define opusfile
+(define-public opusfile
   (package
     (name "opusfile")
     (version "0.12")
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index fb41a384f5..c01d9f4dce 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
@@ -120,6 +120,7 @@ the entire document.")
 (define-public expat
   (package
     (name "expat")
+    (replacement expat-2.4.1)
     (version "2.3.0")
     (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
               (origin
@@ -144,6 +145,24 @@ stream-oriented parser in which an application registers handlers for
 things the parser might find in the XML document (like start tags).")
     (license license:expat)))
 
+;; Replacement package to fix CVE-2013-0340.
+(define expat-2.4.1
+  (package
+    (inherit expat)
+    (version "2.4.1")
+    (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
+              (origin
+                (method url-fetch)
+                (uri (list (string-append "mirror://sourceforge/expat/expat/"
+                                          version "/expat-" version ".tar.xz")
+                           (string-append
+                            "https://github.com/libexpat/libexpat/releases/download/R_"
+                            (string-map dot->underscore version)
+                            "/expat-" version ".tar.xz")))
+                (sha256
+                 (base32
+                  "0spvyb9d3hijs4ys3x64cfmilsynl8kv6clfahv8d4lvp86js0yg")))))))
+
 (define-public libebml
   (package
     (name "libebml")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 265ce811ff..488c124d33 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
-;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -27,6 +27,7 @@
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
 ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2536,7 +2537,7 @@ including most mice, keyboards, tablets and touchscreens.")
 (define-public xf86-input-libinput
   (package
     (name "xf86-input-libinput")
-    (version "0.30.0")
+    (version "1.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2544,7 +2545,7 @@ including most mice, keyboards, tablets and touchscreens.")
                     name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1h4np66p87jf0c85ig524w8f5rbhl5gx8fww1qg0c55f87yzkizr"))))
+                "0nr4r9x8c7y1l0ipivjch5zps093mxmg2nqmfn2934am26fc9ppx"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2561,7 +2562,8 @@ including most mice, keyboards, tablets and touchscreens.")
      "xf86-input-libinput is an input driver for the Xorg X server based
 on libinput.  It is a thin wrapper around libinput, so while it does
 provide all features that libinput supports it does little beyond.")
-    (license license:x11)))
+    (license (list license:x11          ; only install-sh
+                   license:expat))))    ; everything else
 
 (define-public xf86-input-joystick
   (package
@@ -5498,6 +5500,7 @@ draggable titlebars and borders.")
 (define-public libx11
   (package
     (name "libx11")
+    (replacement libx11/fixed)
     (version "1.7.0")
     (source
       (origin
@@ -5536,6 +5539,18 @@ draggable titlebars and borders.")
     (description "Xorg Core X11 protocol client library.")
     (license license:x11)))
 
+(define-public libx11/fixed
+  (package
+    (inherit libx11)
+    (version "1.7.A")
+    (source
+      (origin
+        (method url-fetch)
+        (uri "mirror://xorg/individual/lib/libX11-1.7.1.tar.bz2")
+        (sha256
+          (base32
+            "0isxad59hvdwggbxqqjjjg3zmih9xiq4d9mdsnqbyb2nmbg46kp6"))))))
+
 ;; packages of height 5 in the propagated-inputs tree
 
 (define-public libxcursor
@@ -6096,7 +6111,7 @@ to answer a question.  Xmessage can also exit after a specified time.")
 (define-public xterm
   (package
     (name "xterm")
-    (version "366")
+    (version "367")
     (source
      (origin
        (method url-fetch)
@@ -6106,7 +6121,7 @@ to answer a question.  Xmessage can also exit after a specified time.")
              (string-append "ftp://ftp.invisible-island.net/xterm/"
                             "xterm-" version ".tgz")))
        (sha256
-        (base32 "0vmzffy3hzgcgwx305h07ars5sxsq6nnl1ir4xqpxs9zjs2ji2w5"))))
+        (base32 "07y51l06n344pjyxdddq6sdvxw25nl10irl4avynkqjnqyqsiw97"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts"
@@ -6666,7 +6681,7 @@ output.")
 (define-public console-setup
   (package
     (name "console-setup")
-    (version "1.201")
+    (version "1.203")
     (source
      (origin
        (method git-fetch)
@@ -6674,7 +6689,7 @@ output.")
              (url "https://salsa.debian.org/installer-team/console-setup.git")
              (commit version)))
        (sha256
-        (base32 "0xkynb8d1813wph3p0sdvbpimx7zqkzh4c3mmqymp3pibcg7af5a"))
+        (base32 "1bavb8h4j1za2h7mxr109imicjmh7fp4099lvzfgavhjr3l3vsab"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index 5b4e24d794..99b137e05e 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -38,16 +38,13 @@
   #:use-module (gnu system shadow)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
-  #:export (<cuirass-remote-server-configuration>
-            cuirass-remote-server-configuration
+  #:export (cuirass-remote-server-configuration
             cuirass-remote-server-configuration?
 
-            <cuirass-configuration>
             cuirass-configuration
             cuirass-configuration?
             cuirass-service-type
 
-            <cuirass-remote-worker-configuration>
             cuirass-remote-worker-configuration
             cuirass-remote-worker-configuration?
             cuirass-remote-worker-service-type))
@@ -272,6 +269,8 @@
                                remote-server)))
          (user           (cuirass-configuration-user config))
          (log            "/var/log/cuirass")
+         (profile        (string-append "/var/guix/profiles/per-user/" user))
+         (roots          (string-append profile "/cuirass"))
          (group          (cuirass-configuration-group config)))
     (with-imported-modules '((guix build utils))
       #~(begin
@@ -279,6 +278,7 @@
 
           (mkdir-p #$cache)
           (mkdir-p #$log)
+          (mkdir-p #$roots)
 
           (when #$remote-cache
             (mkdir-p #$remote-cache))
@@ -287,6 +287,8 @@
                 (gid (group:gid (getgr #$group))))
             (chown #$cache uid gid)
             (chown #$log uid gid)
+            (chown #$roots uid gid)
+            (chown #$profile uid gid)
 
             (when #$remote-cache
               (chown #$remote-cache uid gid)))))))
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index 55211cb08f..aeb2bfdc86 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -861,12 +861,20 @@ cache.size = 100 * MB
                 #:pid-file "/run/dnsmasq.pid"))
       (stop #~(make-kill-destructor))))))
 
+(define (dnsmasq-activation config)
+  #~(begin
+      (use-modules (guix build utils))
+      ;; create directory to store dnsmasq lease file
+      (mkdir-p "/var/lib/misc")))
+
 (define dnsmasq-service-type
   (service-type
    (name 'dnsmasq)
    (extensions
     (list (service-extension shepherd-root-service-type
-                             (compose list dnsmasq-shepherd-service))))
+                             (compose list dnsmasq-shepherd-service))
+          (service-extension activation-service-type
+                             dnsmasq-activation)))
    (default-value (dnsmasq-configuration))
    (description "Run the dnsmasq DNS server.")))
 
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index b78c8ceacc..87b3d754a3 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -1591,7 +1591,8 @@ extra-settings "\n"))))
          (requirement `(user-processes ,@requirement))
          (documentation "Run the hostapd WiFi access point daemon.")
          (start #~(make-forkexec-constructor
-                   (list #$(file-append hostapd "/sbin/hostapd")
+                   (list #$(file-append (hostapd-configuration-package config)
+                                        "/sbin/hostapd")
                          #$(hostapd-configuration-file config))
                    #:log-file "/var/log/hostapd.log"))
          (stop #~(make-kill-destructor)))))
diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm
index 6fbe20a849..2bcbf76727 100644
--- a/gnu/services/vpn.scm
+++ b/gnu/services/vpn.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +49,8 @@
             wireguard-peer-name
             wireguard-peer-endpoint
             wireguard-peer-allowed-ips
+            wireguard-peer-public-key
+            wireguard-peer-keep-alive
 
             wireguard-configuration
             wireguard-configuration?
@@ -526,7 +529,6 @@ is truncated and rewritten every minute.")
      (openvpn-remote-configuration ,openvpn-remote-configuration-fields))
    'openvpn-client-configuration))
 
-
 ;;;
 ;;; Wireguard.
 ;;;
diff --git a/gnu/tests/linux-modules.scm b/gnu/tests/linux-modules.scm
index 30d8eae03b..fc8945b77f 100644
--- a/gnu/tests/linux-modules.scm
+++ b/gnu/tests/linux-modules.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
 ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -112,16 +112,13 @@ are loaded in memory."
   "Run a test of an OS having MODULE-PACKAGES, which are loaded by creating a
 service that extends LINUXL-LOADABLE-MODULE-SERVICE-TYPE. Then verify that
 MODULE-NAMES are loaded in memory."
-  (define module-installing-service-type
-    (service-type
-      (name 'module-installing-service)
-      (extensions (list (service-extension linux-loadable-module-service-type
-                                           (const module-packages))))
-      (default-value #f)))
   (run-loadable-kernel-modules-test-base
     (operating-system
       (inherit (simple-operating-system))
-      (services (cons* (service module-installing-service-type)
+      (services (cons* (simple-service 'installing-module
+                                       linux-loadable-module-service-type
+                                       module-packages)
+                       (service kernel-module-loader-service-type module-names)
                        (operating-system-user-services
                         (simple-operating-system)))))
     module-names))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 61575f497d..518c9c1ff3 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -378,12 +378,14 @@ HTTP-PORT, along with php-fpm."
   (define vm
     (virtual-machine
      (operating-system os)
-     (port-forwardings '((8080 . 5000)))))
+     (port-forwardings '((8080 . 5000)))
+     (memory-size 1024)))
 
   (define test
     (with-imported-modules '((gnu build marionette))
       #~(begin
           (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (ice-9 match)
                        (gnu build marionette)
                        (web uri)
                        (web client)
@@ -412,9 +414,13 @@ HTTP-PORT, along with php-fpm."
             200
             (begin
               (wait-for-tcp-port 5000 marionette)
-              (let-values (((response text)
-                            (http-get "http://localhost:8080")))
-                (response-code response))))
+              (#$retry-on-error
+               (lambda ()
+                 (let-values (((response text)
+                               (http-get "http://localhost:8080")))
+                   (response-code response)))
+               #:times 10
+               #:delay 5)))
 
           (test-end)
           (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm
index c4425e0a12..be6a600c28 100644
--- a/guix/build-system/r.scm
+++ b/guix/build-system/r.scm
@@ -61,7 +61,7 @@ release corresponding to NAME and VERSION."
                          "/src/contrib/"
                          name "_" version ".tar.gz")
           ;; TODO: use %bioconductor-version from (guix import cran)
-          (string-append "https://bioconductor.org/packages/3.12"
+          (string-append "https://bioconductor.org/packages/3.13"
                          type-url-part
                          "/src/contrib/"
                          name "_" version ".tar.gz"))))
diff --git a/guix/ci.scm b/guix/ci.scm
index c70e5bb9e6..0af04ff97d 100644
--- a/guix/ci.scm
+++ b/guix/ci.scm
@@ -100,7 +100,7 @@
   json->evaluation
   (id          evaluation-id)                     ;integer
   (spec        evaluation-spec "specification")   ;string
-  (complete?   evaluation-complete? "in-progress"
+  (complete?   evaluation-complete? "status"
                (match-lambda
                  (0 #t)
                  (_ #f)))                         ;Boolean
@@ -154,14 +154,21 @@ string such as \"x86_64-linux\"), restrict to builds for SYSTEM."
                                     (number->string evaluation)))))
     (json->evaluation evaluation)))
 
-(define* (latest-evaluations url #:optional (limit %query-limit))
-  "Return the latest evaluations performed by the CI server at URL."
-  (map json->evaluation
-       (vector->list
-        (json->scm
-         (http-fetch (string-append url "/api/evaluations?nr="
-                                    (number->string limit)))))))
-
+(define* (latest-evaluations url
+                             #:optional (limit %query-limit)
+                             #:key spec)
+  "Return the latest evaluations performed by the CI server at URL.  If SPEC
+is passed, only consider the evaluations for the given SPEC specification."
+  (let ((spec (if spec
+                  (format #f "&spec=~a" spec)
+                  "")))
+    (map json->evaluation
+         (vector->list
+          (json->scm
+           (http-fetch
+            (string-append url "/api/evaluations?nr="
+                           (number->string limit)
+                           spec)))))))
 
 (define* (evaluations-for-commit url commit #:optional (limit %query-limit))
   "Return the evaluations among the latest LIMIT evaluations that have COMMIT
diff --git a/guix/download.scm b/guix/download.scm
index 72094e7318..b6eb97e6fa 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -35,6 +35,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:export (%mirrors
+            %disarchive-mirrors
             (url-fetch* . url-fetch)
             url-fetch/executable
             url-fetch/tarbomb
diff --git a/guix/git-download.scm b/guix/git-download.scm
index 199effece5..5e624b9ae9 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -33,6 +33,9 @@
                                  repository-discover
                                  repository-head
                                  repository-working-directory)
+  #:autoload   (git submodule)  (repository-submodules
+                                 submodule-lookup
+                                 submodule-path)
   #:autoload   (git commit)     (commit-lookup commit-tree)
   #:autoload   (git reference)  (reference-target)
   #:autoload   (git tree)       (tree-list)
@@ -194,11 +197,17 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
 ;;; 'git-predicate'.
 ;;;
 
-(define (git-file-list directory)
+(define* (git-file-list directory #:optional prefix #:key (recursive? #t))
   "Return the list of files checked in in the Git repository at DIRECTORY.
 The result is similar to that of the 'git ls-files' command, except that it
-also includes directories, not just regular files.  The returned file names
-are relative to DIRECTORY, which is not necessarily the root of the checkout."
+also includes directories, not just regular files.
+
+When RECURSIVE? is true, also list files in submodules, similar to the 'git
+ls-files --recurse-submodules' command.  This is enabled by default.
+
+The returned file names are relative to DIRECTORY, which is not necessarily
+the root of the checkout.  If a PREFIX is provided, it is prepended to each
+file name."
   (let* (;; 'repository-working-directory' always returns a trailing "/",
          ;; so add one here to ease the comparisons below.
          (directory  (string-append (canonicalize-path directory) "/"))
@@ -209,33 +218,65 @@ are relative to DIRECTORY, which is not necessarily the root of the checkout."
          (oid        (reference-target head))
          (commit     (commit-lookup repository oid))
          (tree       (commit-tree commit))
-         (files      (tree-list tree)))
+         (files      (tree-list tree))
+         (submodules (if recursive?
+                         (map (lambda (name)
+                                (submodule-path
+                                 (submodule-lookup repository name)))
+                              (repository-submodules repository))
+                         '()))
+         (relative      (and (not (string=? workdir directory))
+                             (string-drop directory (string-length workdir))))
+         (included?     (lambda (path)
+                          (or (not relative)
+                              (string-prefix? relative path))))
+         (make-relative (lambda (path)
+                          (if relative
+                              (string-drop path (string-length relative))
+                              path)))
+         (add-prefix    (lambda (path)
+                          (if prefix
+                              (string-append prefix "/" path)
+                              path)))
+         (rectify       (compose add-prefix make-relative)))
     (repository-close! repository)
-    (if (string=? workdir directory)
-        files
-        (let ((relative (string-drop directory (string-length workdir))))
-          (filter-map (lambda (file)
-                        (and (string-prefix? relative file)
-                             (string-drop file (string-length relative))))
-                      files)))))
-
-(define (git-predicate directory)
+    (append
+     (if (or relative prefix)
+         (filter-map (lambda (file)
+                       (and (included? file)
+                            (rectify file)))
+                     files)
+         files)
+     (append-map (lambda (submodule)
+                   (if (included? submodule)
+                       (git-file-list
+                        (string-append workdir submodule)
+                        (rectify submodule))
+                       '()))
+                 submodules))))
+
+(define* (git-predicate directory #:key (recursive? #t))
   "Return a predicate that returns true if a file is part of the Git checkout
 living at DIRECTORY.  If DIRECTORY does not lie within a Git checkout, and
 upon Git errors, return #f instead of a predicate.
 
+When RECURSIVE? is true, the predicate also returns true if a file is part of
+any Git submodule under DIRECTORY.  This is enabled by default.
+
 The returned predicate takes two arguments FILE and STAT where FILE is an
 absolute file name and STAT is the result of 'lstat'."
   (libgit2-init!)
   (catch 'git-error
     (lambda ()
-      (let* ((files  (git-file-list directory))
+      (let* ((files  (git-file-list directory #:recursive? recursive?))
              (inodes (fold (lambda (file result)
-                             (let ((stat
-                                    (lstat (string-append directory "/"
-                                                          file))))
-                               (vhash-consv (stat:ino stat) (stat:dev stat)
-                                            result)))
+                             (let* ((file (string-append directory "/" file))
+                                    (stat (false-if-exception (lstat file))))
+                               ;; Ignore FILE if it has been deleted.
+                               (if stat
+                                   (vhash-consv (stat:ino stat) (stat:dev stat)
+                                                result)
+                                   result)))
                            vlist-null
                            files)))
         (lambda (file stat)
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index fece84b341..e7edbf6656 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -243,7 +243,8 @@ network to check in GNU's database."
   ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz".
   ;; The "-gnu[0-9]" pattern is for "icecat-38.4.0-gnu1.tar.bz2".
   ;; Accept underscores as in "PKG_1.2.tar.gz" for some non-GNU packages.
-  (make-regexp "^([^.]+)[-_]([0-9]|[^-])+(-(src|[sS]ource|gnu[0-9]))?\\.(tar\\.|zip$)"))
+  ;; Accept 'v' or 'V' prefix as in 'PKG-v2.3.tgz'.
+  (make-regexp "^([^.]+)[-_][vV]?([0-9]|[^-])+(-(src|[sS]ource|gnu[0-9]))?\\.(tar\\.|tgz|zip$)"))
 
 (define %alpha-tarball-rx
   (make-regexp "^.*-.*[0-9](-|~)?(alpha|beta|rc|RC|cvs|svn|git)-?[0-9\\.]*\\.tar\\."))
@@ -495,9 +496,30 @@ are unavailable."
 
     (define (url->release url)
       (let* ((base (basename url))
-             (url  (if (string=? base url)
-                       (string-append base-url directory "/" url)
-                       url)))
+             (base-url (string-append base-url directory))
+             (url  (cond ((and=> (string->uri url) uri-scheme) ;full URL?
+                          url)
+                         ((string-prefix? "/" url) ;absolute path?
+                          (let ((uri (string->uri base-url)))
+                            (uri->string
+                             (build-uri (uri-scheme uri)
+                                        #:host (uri-host uri)
+                                        #:port (uri-port uri)
+                                        #:path url))))
+
+                         ;; URL is a relative path and BASE-URL may or may not
+                         ;; end in slash.
+                         ((string-suffix? "/" base-url)
+                          (string-append base-url url))
+                         (else
+                          ;; If DIRECTORY is non-empty, assume BASE-URL
+                          ;; denotes a directory; otherwise, assume BASE-URL
+                          ;; denotes a file within a directory, and that URL
+                          ;; is relative to that directory.
+                          (string-append (if (string-null? directory)
+                                             (dirname base-url)
+                                             base-url)
+                                         "/" url)))))
         (and (release-file? package base)
              (let ((version (tarball->version base)))
                (upstream-source
@@ -596,7 +618,7 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)."
 (define %package-name-rx
   ;; Regexp for a package name, e.g., "foo-X.Y".  Since TeXmacs uses
   ;; "TeXmacs-X.Y-src", the `-src' suffix is allowed.
-  (make-regexp "^(.*)[-_](([0-9]|\\.)+)(-src|\\.src|\\.orig)?"))
+  (make-regexp "^(.*)[-_][vV]?(([0-9]|\\.)+)(-src|\\.src|\\.orig)?"))
 
 (define (gnu-package-name->name+version name+version)
   "Return the package name and version number extracted from NAME+VERSION."
diff --git a/guix/hg-download.scm b/guix/hg-download.scm
index c6cee2dbb8..eb7c345489 100644
--- a/guix/hg-download.scm
+++ b/guix/hg-download.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,8 @@
   #:use-module (guix modules)
   #:use-module (guix packages)
   #:autoload   (guix build-system gnu) (standard-packages)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:use-module (ice-9 popen)
   #:use-module (ice-9 rdelim)
@@ -34,7 +37,9 @@
             hg-reference-changeset
             hg-reference-recursive?
             hg-predicate
-            hg-fetch))
+            hg-fetch
+            hg-version
+            hg-file-name))
 
 ;;; Commentary:
 ;;;
@@ -102,6 +107,23 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
                       #:recursive? #t
                       #:guile-for-build guile)))
 
+(define (hg-version version revision changeset)
+  "Return the version string for packages using hg-download."
+  ;; hg-version is almost exclusively executed while modules are being loaded.
+  ;; This makes any errors hide their backtrace. Avoid the mysterious error
+  ;; "Value out of range 0 to N: 7" when the commit ID is too short, which
+  ;; can happen, for example, when the user swapped the revision and commit
+  ;; arguments by mistake.
+  (when (< (string-length changeset) 7)
+    (raise
+     (condition
+      (&message (message "hg-version: changeset ID unexpectedly short")))))
+  (string-append version "-" revision "." (string-take changeset 7)))
+
+(define (hg-file-name name version)
+  "Return the file-name for packages using hg-download."
+  (string-append name "-" version "-checkout"))
+
 (define (hg-file-list directory)
   "Evaluates to a list of files contained in the repository at path
   @var{directory}"
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index dbc858cb84..f649928c5a 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -153,9 +153,9 @@ package definition."
 (define %cran-canonical-url "https://cran.r-project.org/package=")
 (define %bioconductor-url "https://bioconductor.org/packages/")
 
-;; The latest Bioconductor release is 3.12.  Bioconductor packages should be
+;; The latest Bioconductor release is 3.13.  Bioconductor packages should be
 ;; updated together.
-(define %bioconductor-version "3.12")
+(define %bioconductor-version "3.13")
 
 (define* (bioconductor-packages-list-url #:optional type)
   (string-append "https://bioconductor.org/packages/"
diff --git a/guix/import/egg.scm b/guix/import/egg.scm
new file mode 100644
index 0000000000..26f8364732
--- /dev/null
+++ b/guix/import/egg.scm
@@ -0,0 +1,352 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix import egg)
+  #:use-module (ice-9 ftw)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-71)
+  #:use-module (gcrypt hash)
+  #:use-module (guix git)
+  #:use-module (guix i18n)
+  #:use-module (guix base32)
+  #:use-module (guix diagnostics)
+  #:use-module (guix memoization)
+  #:use-module (guix packages)
+  #:use-module (guix upstream)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system chicken)
+  #:use-module (guix store)
+  #:use-module ((guix download) #:select (download-to-store url-fetch))
+  #:use-module (guix import utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:export (egg->guix-package
+            egg-recursive-import
+            %egg-updater
+
+            ;; For tests.
+            guix-package->egg-name))
+
+;;; Commentary:
+;;;
+;;; (guix import egg) provides package importer for CHICKEN eggs.  See the
+;;; official specification format for eggs
+;;; <https://wiki.call-cc.org/man/5/Egg%20specification%20format>.
+;;;
+;;; The following happens under the hood:
+;;;
+;;; * <git://code.call-cc.org/eggs-5-latest> is a Git repository that contains
+;;;   the latest version of all CHICKEN eggs.  We look clone this repository
+;;;   and retrieve the latest version number, and the PACKAGE.egg file, which
+;;;   contains a list of lists containing metadata about the egg.
+;;;
+;;; * All the eggs are stored as tarballs at
+;;;   <https://code.call-cc.org/egg-tarballs/5>, so we grab the tarball for
+;;;   the egg from there.
+;;;
+;;; * The rest of the package fields will be parsed from the PACKAGE.egg file.
+;;;
+;;; Todos:
+;;;
+;;; * Support for CHICKEN 4?
+;;;
+;;; * Some packages will specify a specific version of a depencency in the
+;;;   PACKAGE.egg file, how should we handle this?
+;;;
+;;; Code:
+
+
+;;;
+;;; Egg metadata fetcher and helper functions.
+;;;
+
+(define package-name-prefix "chicken-")
+
+(define %eggs-url
+  (make-parameter "https://code.call-cc.org/egg-tarballs/5"))
+
+(define %eggs-home-page
+  (make-parameter "https://wiki.call-cc.org/egg"))
+
+(define (egg-source-url name version)
+  "Return the URL to the source tarball for version VERSION of the CHICKEN egg
+NAME."
+  (string-append (%eggs-url) "/" name "/" name "-" version ".tar.gz"))
+
+(define (egg-name->guix-name name)
+  "Return the package name for CHICKEN egg NAME."
+  (string-append package-name-prefix name))
+
+(define (eggs-repository)
+  "Update or fetch the latest version of the eggs repository and return the path
+to the repository."
+  (let* ((url "git://code.call-cc.org/eggs-5-latest")
+         (directory commit _ (update-cached-checkout url)))
+    directory))
+
+(define (egg-directory name)
+  "Return the directory containing the source code for the egg NAME."
+  (let ((eggs-directory (eggs-repository)))
+    (string-append eggs-directory "/" name)))
+
+(define (find-latest-version name)
+  "Get the latest version of the egg NAME."
+  (let ((directory (scandir (egg-directory name))))
+    (if directory
+        (last directory)
+        #f)))
+
+(define* (egg-metadata name #:optional file)
+  "Return the package metadata file for the egg NAME, or if FILE is specified,
+return the package metadata in FILE."
+  (call-with-input-file (or file
+                            (string-append (egg-directory name) "/"
+                                           (find-latest-version name)
+                                           "/" name ".egg"))
+    read))
+
+(define (guix-name->egg-name name)
+  "Return the CHICKEN egg name corresponding to the Guix package NAME."
+  (if (string-prefix? package-name-prefix name)
+      (string-drop name (string-length package-name-prefix))
+      name))
+
+(define (guix-package->egg-name package)
+  "Return the CHICKEN egg name of the Guix CHICKEN PACKAGE."
+  (or (assq-ref (package-properties package) 'upstream-name)
+      (guix-name->egg-name (package-name package))))
+
+(define (egg-package? package)
+  "Check if PACKAGE is an CHICKEN egg package."
+  (and (eq? (package-build-system package) chicken-build-system)
+       (string-prefix? package-name-prefix (package-name package))))
+
+(define string->license
+  ;; Doesn't seem to use a specific format.
+  ;; <https://wiki.call-cc.org/eggs-licensing>
+  (match-lambda
+   ("GPL-2" 'license:gpl2)
+   ("GPL-2+" 'license:gpl2+)
+   ("GPL-3" 'license:gpl3)
+   ("GPL-3+" 'license:gpl3+)
+   ("GPL" 'license:gpl?)
+   ("AGPL-3" 'license:agpl3)
+   ("AGPL" 'license:agpl?)
+   ("LGPL-2.0" 'license:lgpl2.0)
+   ("LGPL-2.0+" 'license:lgpl2.0+)
+   ("LGPL-2.1" 'license:lgpl2.1)
+   ("LGPL-2.1+" 'license:lgpl2.1+)
+   ("LGPL-3" 'license:lgpl3)
+   ("LGPL-3" 'license:lgpl3+)
+   ("LGPL" 'license:lgpl?)
+   ("BSD-1-Clause" 'license:bsd-1)
+   ("BSD-2-Clause" 'license:bsd-2)
+   ("BSD-3-Clause" 'license:bsd-3)
+   ("BSD" 'license:bsd?)
+   ("MIT" 'license:expat)
+   ("ISC" 'license:isc)
+   ("Artistic-2" 'license:artistic2.0)
+   ("Apache-2.0" 'license:asl2.0)
+   ("Public Domain" 'license:public-domain)
+   ((x) (string->license x))
+   ((lst ...) `(list ,@(map string->license lst)))
+   (_ #f)))
+
+
+;;;
+;;; Egg importer.
+;;;
+
+(define* (egg->guix-package name #:key (file #f) (source #f))
+  "Import CHICKEN egg NAME from and return a <package> record type for the
+egg, or #f on failure.  FILE is the filepath to the NAME.egg file.  SOURCE is
+the a ``file-like'' object containing the source code corresonding to the egg.
+If SOURCE is not specified, the tarball for the egg will be downloaded.
+
+Specifying the SOURCE argument is mainly useful for developing a CHICKEN egg
+locally.  Note that if FILE and SOURCE are specified, recursive import will
+not work."
+  (define egg-content (if file
+                          (egg-metadata name file)
+                          (egg-metadata name)))
+  (if (not egg-content)
+      (values #f '())                    ; egg doesn't exist
+      (let* ((version* (or (assoc-ref egg-content 'version)
+                           (find-latest-version name)))
+             (version (if (list? version*) (first version*) version*))
+             (source-url (if source #f (egg-source-url name version)))
+             (tarball (if source
+                          #f
+                          (with-store store
+                            (download-to-store store source-url)))))
+
+        (define egg-home-page
+          (string-append (%eggs-home-page) "/" name))
+
+        (define egg-synopsis
+          (match (assoc-ref egg-content 'synopsis)
+            ((synopsis) synopsis)
+            (_ #f)))
+
+        (define egg-licenses
+          (let ((licenses*
+                 (match (assoc-ref egg-content 'license)
+                   ((license)
+                    (map string->license (string-split license #\/)))
+                   (#f
+                    '()))))
+            (match licenses*
+              ((license) license)
+              ((license1 license2 ...) `(list ,@licenses*)))))
+
+        (define (maybe-symbol->string sym)
+          (if (symbol? sym) (symbol->string sym) sym))
+
+        (define (prettify-system-dependency name)
+          ;; System dependencies sometimes have spaces and/or upper case
+          ;; letters in them.
+          ;;
+          ;; There will probably still be some weird edge cases.
+          (string-map (lambda (char)
+                        (case char
+                          ((#\space) #\-)
+                          (else char)))
+                      (maybe-symbol->string name)))
+
+        (define* (egg-parse-dependency name #:key (system? #f))
+          (define extract-name
+            (match-lambda
+              ((name version) name)
+              (name name)))
+
+          (define (prettify-name name)
+            (if system?
+                (prettify-system-dependency name)
+                (maybe-symbol->string name)))
+          
+          (let ((name (prettify-name (extract-name name))))
+            ;; Dependencies are sometimes specified as symbols and sometimes
+            ;; as strings
+            (list (string-append (if system? "" package-name-prefix)
+                                 name)
+                  (list 'unquote
+                        (string->symbol (string-append
+                                         (if system? "" package-name-prefix)
+                                         name))))))
+
+        (define egg-propagated-inputs
+          (let ((dependencies (assoc-ref egg-content 'dependencies)))
+            (if (list? dependencies)
+                (map egg-parse-dependency
+                     dependencies)
+                '())))
+
+        ;; TODO: Or should these be propagated?
+        (define egg-inputs
+          (let ((dependencies (assoc-ref egg-content 'foreign-dependencies)))
+            (if (list? dependencies)
+                (map (lambda (name)
+                       (egg-parse-dependency name #:system? #t))
+                     dependencies)
+                '())))
+
+        (define egg-native-inputs
+          (let* ((test-dependencies (or (assoc-ref egg-content
+                                                   'test-dependencies)
+                                        '()))
+                 (build-dependencies (or (assoc-ref egg-content
+                                                    'build-dependencies)
+                                         '()))
+                 (test+build-dependencies (append test-dependencies
+                                                  build-dependencies)))
+            (match test+build-dependencies
+              ((_ _ ...) (map egg-parse-dependency
+                              test+build-dependencies))
+              (() '()))))
+
+        ;; Copied from (guix import hackage).
+        (define (maybe-inputs input-type inputs)
+          (match inputs
+            (()
+             '())
+            ((inputs ...)
+             (list (list input-type
+                         (list 'quasiquote inputs))))))
+
+        (values
+         `(package
+            (name ,(egg-name->guix-name name))
+            (version ,version)
+            (source
+             ,(if source
+                  source
+                  `(origin
+                     (method url-fetch)
+                     (uri ,source-url)
+                     (sha256
+                      (base32 ,(if tarball
+                                   (bytevector->nix-base32-string
+                                    (file-sha256 tarball))
+                                   "failed to download tar archive"))))))
+            (build-system chicken-build-system)
+            (arguments ,(list 'quasiquote (list #:egg-name name)))
+            ,@(maybe-inputs 'native-inputs egg-native-inputs)
+            ,@(maybe-inputs 'inputs egg-inputs)
+            ,@(maybe-inputs 'propagated-inputs egg-propagated-inputs)
+            (home-page ,egg-home-page)
+            (synopsis ,egg-synopsis)
+            (description #f)
+            (license ,egg-licenses))
+         (filter (lambda (name)
+                   (not (member name '("srfi-4"))))
+                 (map (compose guix-name->egg-name first)
+                      (append egg-propagated-inputs
+                              egg-native-inputs)))))))
+
+(define egg->guix-package/m                   ;memoized variant
+  (memoize egg->guix-package))
+
+(define (egg-recursive-import package-name)
+  (recursive-import package-name
+                    #:repo->guix-package (lambda* (name #:key version repo)
+                                           (egg->guix-package/m name))
+                    #:guix-name egg-name->guix-name))
+
+
+;;;
+;;; Updater.
+;;;
+
+(define (latest-release package)
+  "Return an @code{<upstream-source>} for the latest release of PACKAGE."
+  (let* ((egg-name (guix-package->egg-name package))
+         (version (find-latest-version egg-name))
+         (source-url (egg-source-url egg-name version)))
+    (upstream-source
+     (package (package-name package))
+     (version version)
+     (urls (list source-url)))))
+
+(define %egg-updater
+  (upstream-updater
+   (name 'egg)
+   (description "Updater for CHICKEN egg packages")
+   (pred egg-package?)
+   (latest latest-release)))
+
+;;; egg.scm ends here
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 9f992ffe8e..f94a1e7087 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -163,22 +164,22 @@ version."
   ;; https://www.haskell.org
   ;; /cabal/release/cabal-latest/doc/API/Cabal/Distribution-License.html.
   (match-lambda
-   ("GPL-2" 'gpl2)
-   ("GPL-3" 'gpl3)
+   ("GPL-2" 'license:gpl2)
+   ("GPL-3" 'license:gpl3)
    ("GPL" "'gpl??")
-   ("AGPL-3" 'agpl3)
+   ("AGPL-3" 'license:agpl3)
    ("AGPL" "'agpl??")
-   ("LGPL-2.1" 'lgpl2.1)
-   ("LGPL-3" 'lgpl3)
+   ("LGPL-2.1" 'license:lgpl2.1)
+   ("LGPL-3" 'license:lgpl3)
    ("LGPL" "'lgpl??")
-   ("BSD2" 'bsd-2)
-   ("BSD3" 'bsd-3)
-   ("BSD-3-Clause" 'bsd-3)
-   ("MIT" 'expat)
-   ("ISC" 'isc)
-   ("MPL" 'mpl2.0)
-   ("Apache-2.0" 'asl2.0)
-   ("PublicDomain" 'public-domain)
+   ("BSD2" 'license:bsd-2)
+   ("BSD3" 'license:bsd-3)
+   ("BSD-3-Clause" 'license:bsd-3)
+   ("MIT" 'license:expat)
+   ("ISC" 'license:isc)
+   ("MPL" 'license:mpl2.0)
+   ("Apache-2.0" 'license:asl2.0)
+   ("PublicDomain" 'license:public-domain)
    ((x) (string->license x))
    ((lst ...) `(list ,@(map string->license lst)))
    (_ #f)))
diff --git a/guix/import/opam.scm b/guix/import/opam.scm
index 670973b193..0201376457 100644
--- a/guix/import/opam.scm
+++ b/guix/import/opam.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -335,7 +336,8 @@ or #f on failure."
                        (home-page ,(metadata-ref opam-content "homepage"))
                        (synopsis ,(metadata-ref opam-content "synopsis"))
                        (description ,(metadata-ref opam-content "description"))
-                       (license #f))
+                       (license ,(spdx-string->license
+                                  (metadata-ref opam-content "license"))))
                     (filter
                       (lambda (name)
                         (not (member name '("dune" "jbuilder"))))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index 4718ccf83f..e7457799ce 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2020 André Batista <nandre@riseup.net>
 ;;; Copyright © 2020 Helio Machado <0x2b3bfa0+guix@googlemail.com>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,7 +41,7 @@
             apsl2
             asl1.1 asl2.0
             boost1.0
-            bsd-0 bsd-2 bsd-3 bsd-4
+            bsd-0 bsd-1 bsd-2 bsd-3 bsd-4
             non-copyleft
             cc0
             cc-by2.0 cc-by3.0 cc-by4.0
@@ -166,6 +167,11 @@
            "https://spdx.org/licenses/0BSD.html"
            "https://opensource.org/licenses/0BSD"))
 
+(define bsd-1
+  (license "BSD 1-Clause"
+           "https://spdx.org/licenses/BSD-1-Clause.html"
+           "https://opensource.org/licenses/BSD-1-Clause"))
+
 (define bsd-2
   (license "FreeBSD"
            "http://directory.fsf.org/wiki/License:FreeBSD"
diff --git a/guix/lint.scm b/guix/lint.scm
index 1bebfe03d3..5cd6db5842 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
 
 (define-module (guix lint)
   #:use-module (guix store)
+  #:autoload   (guix base16) (bytevector->base16-string)
   #:use-module (guix base32)
   #:use-module (guix diagnostics)
   #:use-module (guix download)
@@ -95,6 +97,7 @@
             check-archival
             check-profile-collisions
             check-haskell-stackage
+            check-tests-true
 
             lint-warning
             lint-warning?
@@ -190,6 +193,26 @@
                      #:field 'name)))
      (else '()))))
 
+(define (check-tests-true package)
+  "Check whether PACKAGE explicitly requests to run tests, which is
+superfluous when building natively and incorrect when cross-compiling."
+  (define (tests-explicitly-enabled?)
+    (apply (lambda* (#:key tests? #:allow-other-keys)
+             (eq? tests? #t))
+           (package-arguments package)))
+  (if (and (tests-explicitly-enabled?)
+           ;; Some packages, e.g. gnutls, set #:tests?
+           ;; differently depending on whether it is being
+           ;; cross-compiled.
+           (parameterize ((%current-target-system "aarch64-linux-gnu"))
+             (tests-explicitly-enabled?)))
+      (list (make-warning package
+                          ;; TRANSLATORS: #:tests? and #t are Scheme constants
+                          ;; and must not be translated.
+                          (G_ "#:tests? must not be explicitly set to #t")
+                          #:field 'arguments))
+      '()))
+
 (define (properly-starts-sentence? s)
   (string-match "^[(\"'`[:upper:][:digit:]]" s))
 
@@ -1002,57 +1025,46 @@ descriptions maintained upstream."
          (origin-uris origin))
         '())))
 
-(cond-expand
-  (guile-3
-   ;; Guile 3.0.0 does not export this predicate.
-   (define exception-with-kind-and-args?
-     (exception-predicate &exception-with-kind-and-args)))
-  (else                                           ;Guile 2
-   (define exception-with-kind-and-args?
-     (const #f))))
+;; Guile 3.0.0 does not export this predicate.
+(define exception-with-kind-and-args?
+  (exception-predicate &exception-with-kind-and-args))
 
 (define* (check-derivation package #:key store)
   "Emit a warning if we fail to compile PACKAGE to a derivation."
   (define (try store system)
-    (catch #t     ;TODO: Remove 'catch' when Guile 2.x is no longer supported.
-      (lambda ()
-        (guard (c ((store-protocol-error? c)
-                   (make-warning package
-                                 (G_ "failed to create ~a derivation: ~a")
-                                 (list system
-                                       (store-protocol-error-message c))))
-                  ((exception-with-kind-and-args? c)
-                   (make-warning package
-                                 (G_ "failed to create ~a derivation: ~s")
-                                 (list system
-                                       (cons (exception-kind c)
-                                             (exception-args c)))))
-                  ((message-condition? c)
-                   (make-warning package
-                                 (G_ "failed to create ~a derivation: ~a")
-                                 (list system
-                                       (condition-message c))))
-                  ((formatted-message? c)
-                   (let ((str (apply format #f
-                                     (formatted-message-string c)
-                                     (formatted-message-arguments c))))
-                     (make-warning package
-                                   (G_ "failed to create ~a derivation: ~a")
-                                   (list system str)))))
-          (parameterize ((%graft? #f))
-            (package-derivation store package system #:graft? #f)
-
-            ;; If there's a replacement, make sure we can compute its
-            ;; derivation.
-            (match (package-replacement package)
-              (#f #t)
-              (replacement
-               (package-derivation store replacement system
-                                   #:graft? #f))))))
-      (lambda args
-        (make-warning package
-                      (G_ "failed to create ~a derivation: ~s")
-                      (list system args)))))
+    (guard (c ((store-protocol-error? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~a")
+                             (list system
+                                   (store-protocol-error-message c))))
+              ((exception-with-kind-and-args? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~s")
+                             (list system
+                                   (cons (exception-kind c)
+                                         (exception-args c)))))
+              ((message-condition? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~a")
+                             (list system
+                                   (condition-message c))))
+              ((formatted-message? c)
+               (let ((str (apply format #f
+                                 (formatted-message-string c)
+                                 (formatted-message-arguments c))))
+                 (make-warning package
+                               (G_ "failed to create ~a derivation: ~a")
+                               (list system str)))))
+      (parameterize ((%graft? #f))
+        (package-derivation store package system #:graft? #f)
+
+        ;; If there's a replacement, make sure we can compute its
+        ;; derivation.
+        (match (package-replacement package)
+          (#f #t)
+          (replacement
+           (package-derivation store replacement system
+                               #:graft? #f))))))
 
   (define (check-with-store store)
     (filter lint-warning?
@@ -1227,6 +1239,43 @@ upstream releases")
                             #:field 'source)))))))
 
 
+(define (lookup-disarchive-spec hash)
+  "If Disarchive mirrors have a spec for HASH, return the list of SWH
+directory identifiers the spec refers to.  Otherwise return #f."
+  (define (extract-swh-id spec)
+    ;; Return the list of SWH directory identifiers SPEC refers to, where SPEC
+    ;; is a Disarchive sexp.  Instead of attempting to parse it, traverse it
+    ;; in a pretty unintelligent fashion.
+    (let loop ((sexp spec)
+               (ids '()))
+      (match sexp
+        ((? string? str)
+         (let ((prefix "swh:1:dir:"))
+           (if (string-prefix? prefix str)
+               (cons (string-drop str (string-length prefix)) ids)
+               ids)))
+        ((head tail ...)
+         (loop tail (loop head ids)))
+        (_ ids))))
+
+  (any (lambda (mirror)
+         (with-networking-fail-safe
+          (format #f (G_ "failed to access Disarchive database at ~a")
+                  mirror)
+          #f
+          (guard (c ((http-get-error? c) #f))
+            (let* ((url (string-append mirror
+                                       (symbol->string
+                                        (content-hash-algorithm hash))
+                                       "/"
+                                       (bytevector->base16-string
+                                        (content-hash-value hash))))
+                   (port (http-fetch (string->uri url) #:text? #t))
+                   (spec (read port)))
+              (close-port port)
+              (extract-swh-id spec)))))
+       %disarchive-mirrors))
+
 (define (check-archival package)
   "Check whether PACKAGE's source code is archived on Software Heritage.  If
 it's not, and if its source code is a VCS snapshot, then send a \"save\"
@@ -1302,10 +1351,26 @@ try again later")
                                         (symbol->string
                                          (content-hash-algorithm hash)))
                    (#f
-                    (list (make-warning package
-                                        (G_ "source not archived on Software \
-Heritage")
-                                        #:field 'source)))
+                    ;; If SWH doesn't have HASH as is, it may be because it's
+                    ;; a hand-crafted tarball.  In that case, check whether
+                    ;; the Disarchive database has an entry for that tarball.
+                    (match (lookup-disarchive-spec hash)
+                      (#f
+                       (list (make-warning package
+                                           (G_ "source not archived on Software \
+Heritage and missing from the Disarchive database")
+                                           #:field 'source)))
+                      (directory-ids
+                       (match (find (lambda (id)
+                                      (not (lookup-directory id)))
+                                    directory-ids)
+                         (#f '())
+                         (id
+                          (list (make-warning package
+                                              (G_ "
+Disarchive entry refers to non-existent SWH directory '~a'")
+                                              (list id)
+                                              #:field 'source)))))))
                    ((? content?)
                     '())))
                '()))))
@@ -1482,6 +1547,10 @@ them for PACKAGE."
      (description "Validate package names")
      (check       check-name))
    (lint-checker
+     (name        'tests-true)
+     (description "Check if tests are explicitly enabled")
+     (check       check-tests-true))
+   (lint-checker
      (name        'description)
      (description "Validate package descriptions")
      (check       check-description-style))
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 2ec78b080a..5f9a8a87a9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -334,7 +334,10 @@ file name."
     (filter-map (lambda (entry)
                   (let ((other (lookup (manifest-entry-name entry)
                                        (manifest-entry-output entry))))
-                    (and other (list entry other))))
+                    (and other
+                         (not (eq? (manifest-entry-item entry)
+                                   (manifest-entry-item other)))
+                         (list entry other))))
                 (manifest-transitive-entries manifest)))
 
   (define lower-pair
diff --git a/guix/progress.scm b/guix/progress.scm
index 334bd40547..0cbc804ec1 100644
--- a/guix/progress.scm
+++ b/guix/progress.scm
@@ -347,15 +347,25 @@ should be a <progress-reporter> object."
               (report total)
               (loop total (get-bytevector-n! in buffer 0 buffer-size))))))))
 
-(define* (progress-report-port reporter port #:key (close? #t))
+(define* (progress-report-port reporter port
+                               #:key
+                               (close? #t)
+                               download-size)
   "Return a port that continuously reports the bytes read from PORT using
 REPORTER, which should be a <progress-reporter> object.  When CLOSE? is true,
-PORT is closed when the returned port is closed."
+PORT is closed when the returned port is closed.
+
+When DOWNLOAD-SIZE is passed, do not read more than DOWNLOAD-SIZE bytes from
+PORT.  This is important to avoid blocking when the remote side won't close
+the underlying connection."
   (match reporter
     (($ <progress-reporter> start report stop)
      (let* ((total 0)
             (read! (lambda (bv start count)
-                     (let ((n (match (get-bytevector-n! port bv start count)
+                     (let* ((count (if download-size
+                                       (min count (- download-size total))
+                                       count))
+                            (n (match (get-bytevector-n! port bv start count)
                                 ((? eof-object?) 0)
                                 (x x))))
                        (set! total (+ total n))
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index ceac640432..f8678aa5f9 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -260,6 +260,9 @@ build and a list of store files to transfer."
 resulting archive to the standard output port."
   (let-values (((drv files)
                 (options->derivations+files store opts)))
+    (when (null? files)
+      (warning (G_ "no arguments specified; creating an empty archive~%")))
+
     (if (build-derivations store drv)
         (export-paths store files (current-output-port)
                       #:recursive? (assoc-ref opts 'export-recursive?))
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 2decdb45ed..97e2f5a167 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -679,6 +679,9 @@ needed."
                                         (_ #f))
                                       opts)))
 
+              (when (and (null? drv) (null? items))
+                (warning (G_ "no arguments specified, nothing to do~%")))
+
               (cond ((assoc-ref opts 'log-file?)
                      ;; Pass 'show-build-log' the output file names, not the
                      ;; derivation file names, because there can be several
diff --git a/guix/scripts/copy.scm b/guix/scripts/copy.scm
index 52b476db54..07357af420 100644
--- a/guix/scripts/copy.scm
+++ b/guix/scripts/copy.scm
@@ -62,6 +62,10 @@ number (or #f) corresponding to SPEC."
     (x
      (leave (G_ "~a: invalid SSH specification~%") spec))))
 
+(define (warn-if-empty items)
+  (when (null? items)
+    (warning (G_ "no arguments specified, nothing to copy~%"))))
+
 (define (send-to-remote-host local target opts)
   "Send ITEMS to TARGET.  ITEMS is a list of store items or package names; for ;
 package names, build the underlying packages before sending them."
@@ -69,6 +73,7 @@ package names, build the underlying packages before sending them."
                 (ssh-spec->user+host+port target))
                ((drv items)
                 (options->derivations+files local opts)))
+    (warn-if-empty items)
     (and (build-derivations local drv)
          (let* ((session (open-ssh-session host #:user user
                                            #:port (or port 22)))
@@ -94,7 +99,9 @@ package names, build the underlying packages before sending them."
     (let*-values (((drv items)
                    (options->derivations+files local opts))
                   ((retrieved)
-                   (retrieve-files local items remote #:recursive? #t)))
+                   (begin
+                     (warn-if-empty items)
+                     (retrieve-files local items remote #:recursive? #t))))
       (close-connection remote)
       (disconnect! session)
       (format #t "~{~a~%~}" retrieved)
diff --git a/guix/scripts/deploy.scm b/guix/scripts/deploy.scm
index 0725fba54b..7c62b05d12 100644
--- a/guix/scripts/deploy.scm
+++ b/guix/scripts/deploy.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 David Thompson <davet@gnu.org>
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
-;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -125,10 +125,7 @@ Perform the deployment specified by FILE.\n"))
            ;; and include a '&message'.  However, that message only contains
            ;; the format string.  Thus, special-case it here to avoid
            ;; displaying a bare format string.
-           ((cond-expand
-              (guile-3
-               ((exception-predicate &exception-with-kind-and-args) c))
-              (else #f))
+           (((exception-predicate &exception-with-kind-and-args) c)
             (raise c))
 
            ((message-condition? c)
@@ -156,7 +153,10 @@ Perform the deployment specified by FILE.\n"))
     (let* ((opts (parse-command-line args %options (list %default-options)
                                      #:argument-handler handle-argument))
            (file (assq-ref opts 'file))
-           (machines (or (and file (load-source-file file)) '())))
+           (machines (and file (load-source-file file))))
+      (unless file
+        (leave (G_ "missing deployment file argument~%")))
+
       (show-what-to-deploy machines)
 
       (with-status-verbosity (assoc-ref opts 'verbosity)
diff --git a/guix/scripts/edit.scm b/guix/scripts/edit.scm
index b4c0507591..a2e1ffb434 100644
--- a/guix/scripts/edit.scm
+++ b/guix/scripts/edit.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
@@ -91,6 +91,8 @@ line."
   (with-error-handling
     (let* ((specs     (reverse (parse-arguments)))
            (locations (map specification->location specs)))
+      (when (null? specs)
+        (leave (G_ "no packages specified, nothing to edit~%")))
 
       (catch 'system-error
         (lambda ()
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 0360761683..5ceb86f7a9 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -755,6 +755,9 @@ message if any test fails."
                        (> (length (manifest-entries manifest-from-opts)) 0))
               (leave (G_ "'--profile' cannot be used with package options~%")))
 
+            (when (null? (manifest-entries manifest))
+              (warning (G_ "no packages specified; creating an empty environment~%")))
+
             (set-build-options-from-command-line store opts)
 
             ;; Use the bootstrap Guile when requested.
diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm
index ddfc6ba497..66de824ef4 100644
--- a/guix/scripts/graph.scm
+++ b/guix/scripts/graph.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -593,6 +593,9 @@ Emit a representation of the dependency graph of PACKAGE...\n"))
                                         (read/eval-package-expression exp)))
                                       (_ #f))
                                     opts)))
+        (when (null? items)
+          (warning (G_ "no arguments specified; creating an empty graph~%")))
+
         (run-with-store store
           ;; XXX: Since grafting can trigger unsolicited builds, disable it.
           (mlet %store-monad ((_     (set-grafting #f))
diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm
index bbd9a3b190..f53d1ac1f4 100644
--- a/guix/scripts/import.scm
+++ b/guix/scripts/import.scm
@@ -76,8 +76,8 @@ rather than \\n."
 ;;; Entry point.
 ;;;
 
-(define importers '("gnu" "pypi" "cpan" "hackage" "stackage" "elpa" "gem"
-                    "go" "cran" "crate" "texlive" "json" "opam"))
+(define importers '("gnu" "pypi" "cpan" "hackage" "stackage" "egg" "elpa"
+                    "gem" "go" "cran" "crate" "texlive" "json" "opam"))
 
 (define (resolve-importer name)
   (let ((module (resolve-interface
diff --git a/guix/scripts/import/egg.scm b/guix/scripts/import/egg.scm
new file mode 100644
index 0000000000..7dbd6fcd5a
--- /dev/null
+++ b/guix/scripts/import/egg.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix scripts import egg)
+  #:use-module (guix ui)
+  #:use-module (guix utils)
+  #:use-module (guix scripts)
+  #:use-module (guix import egg)
+  #:use-module (guix scripts import)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-37)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
+  #:export (guix-import-egg))
+
+
+;;;
+;;; Command-line options.
+;;;
+
+(define %default-options
+  '())
+
+(define (show-help)
+  (display (G_ "Usage: guix import egg PACKAGE-NAME
+Import and convert the egg package for PACKAGE-NAME.\n"))
+  (display (G_ "
+  -h, --help             display this help and exit"))
+  (display (G_ "
+  -r, --recursive        import packages recursively"))
+  (display (G_ "
+  -V, --version          display version information and exit"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  ;; Specification of the command-line options.
+  (cons* (option '(#\h "help") #f #f
+                 (lambda args
+                   (show-help)
+                   (exit 0)))
+         (option '(#\V "version") #f #f
+                 (lambda args
+                   (show-version-and-exit "guix import egg")))
+         (option '(#\r "recursive") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'recursive #t result)))
+         %standard-import-options))
+
+
+;;;
+;;; Entry point.
+;;;
+
+(define (guix-import-egg . args)
+  (define (parse-options)
+    ;; Return the alist of option values.
+    (args-fold* args %options
+                (lambda (opt name arg result)
+                  (leave (G_ "~A: unrecognized option~%") name))
+                (lambda (arg result)
+                  (alist-cons 'argument arg result))
+                %default-options))
+
+  (let* ((opts (parse-options))
+         (repo (and=> (assoc-ref opts 'repo) string->symbol))
+         (args (filter-map (match-lambda
+                            (('argument . value)
+                             value)
+                            (_ #f))
+                           (reverse opts))))
+    (match args
+      ((package-name)
+       (if (assoc-ref opts 'recursive)
+           ;; Recursive import
+           (map (match-lambda
+                  ((and ('package ('name name) . rest) pkg)
+                   `(define-public ,(string->symbol name)
+                      ,pkg))
+                  (_ #f))
+                (egg-recursive-import package-name))
+           ;; Single import
+           (let ((sexp (egg->guix-package package-name)))
+             (unless sexp
+               (leave (G_ "failed to download meta-data for package '~a'~%")
+                      package-name))
+             sexp)))
+      (()
+       (leave (G_ "too few arguments~%")))
+      ((many ...)
+       (leave (G_ "too many arguments~%"))))))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index e3d40d5142..6db83807af 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -1044,6 +1044,14 @@ processed, #f otherwise."
 
       (warn-about-old-distro)
 
+      (when (and (null? files) (manifest-transaction-null? trans))
+        ;; We can reach this point because the user did not specify any action
+        ;; (as in "guix package"), did not specify any package (as in "guix
+        ;; install"), or because there's nothing to upgrade (as when running
+        ;; "guix upgrade" on an up-to-date profile).  We cannot distinguish
+        ;; among these here; all we can say is that there's nothing to do.
+        (warning (G_ "nothing to do~%")))
+
       (unless (manifest-transaction-null? trans)
         ;; When '--manifest' is used, display information about TRANS as if we
         ;; were starting from an empty profile.
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index ef6fa5f074..f35f81dc34 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -25,6 +25,7 @@
   #:use-module (ice-9 binary-ports)
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 poll)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 threads)
@@ -33,6 +34,7 @@
   #:use-module (srfi srfi-2)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
@@ -869,60 +871,115 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
       exp ...)
     (const #f)))
 
-(define (nar-response-port response compression)
-  "Return a port on which to write the body of RESPONSE, the response of a
-/nar request, according to COMPRESSION."
+(define (nar-compressed-port port compression)
+  "Return a port on which to write the body of the response of a /nar request,
+according to COMPRESSION."
   (match compression
     (($ <compression> 'gzip level)
      ;; Note: We cannot used chunked encoding here because
      ;; 'make-gzip-output-port' wants a file port.
-     (make-gzip-output-port (response-port response)
+     (make-gzip-output-port port
                             #:level level
                             #:buffer-size %default-buffer-size))
     (($ <compression> 'lzip level)
-     (make-lzip-output-port (response-port response)
+     (make-lzip-output-port port
                             #:level level))
     (($ <compression> 'zstd level)
-     (make-zstd-output-port (response-port response)
+     (make-zstd-output-port port
                             #:level level))
     (($ <compression> 'none)
-     (response-port response))
+     port)
     (#f
-     (response-port response))))
+     port)))
 
 (define (http-write server client response body)
   "Write RESPONSE and BODY to CLIENT, possibly in a separate thread to avoid
 blocking."
+  ;; XXX: The default Guile web server implementation supports the keep-alive
+  ;; mechanism.  However, as we run our own modified version of the http-write
+  ;; procedure, we need to access a few server implementation details to keep
+  ;; it functional.
+  (define *error-events*
+    (logior POLLHUP POLLERR))
+
+  (define *read-events*
+    POLLIN)
+
+  (define *events*
+    (logior *error-events* *read-events*))
+
+  ;; Access the server poll set variable.
+  (define http-poll-set
+    (@@ (web server http) http-poll-set))
+
+  ;; Copied from (web server http).
+  (define (keep-alive? response)
+    (let ((v (response-version response)))
+      (and (or (< (response-code response) 400)
+               (= (response-code response) 404))
+           (case (car v)
+             ((1)
+              (case (cdr v)
+                ((1) (not (memq 'close (response-connection response))))
+                ((0) (memq 'keep-alive (response-connection response)))))
+             (else #f)))))
+
+  (define (keep-alive port)
+    "Add the given PORT the server poll set."
+    (force-output port)
+    (poll-set-add! (http-poll-set server) port *events*))
+
+  (define compression
+    (assoc-ref (response-headers response) 'x-nar-compression))
+
   (match (response-content-type response)
     (('application/x-nix-archive . _)
-     ;; Sending the the whole archive can take time so do it in a separate
-     ;; thread so that the main thread can keep working in the meantime.
-     (call-with-new-thread
-      (lambda ()
-        (set-thread-name "publish nar")
-        (let* ((compression (assoc-ref (response-headers response)
-                                       'x-nar-compression))
-               (response    (write-response (sans-content-length response)
-                                            client))
-               (port        (begin
-                              (force-output client)
-                              (configure-socket client)
-                              (nar-response-port response compression))))
-          ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in
-          ;; 'render-nar', BODY here is just the file name of the store item.
-          ;; We call 'write-file' from here because we know that's the only
-          ;; way to avoid building the whole nar in memory, which could
-          ;; quickly become a real problem.  As a bonus, we even do
-          ;; sendfile(2) directly from the store files to the socket.
-          (swallow-zlib-error
-           (swallow-EPIPE
-            (write-file (utf8->string body) port)))
-          (swallow-zlib-error
-           (close-port port))
-          (values)))))
+     ;; When compressing the NAR on the go, we cannot announce its size
+     ;; beforehand to the client. Hence, the keep-alive mechanism cannot work
+     ;; here.
+     (let ((keep-alive? (and (eq? (compression-type compression) 'none)
+                             (keep-alive? response))))
+       ;; Add the client to the server poll set, so that we can receive
+       ;; further requests without closing the connection.
+       (when keep-alive?
+         (keep-alive client))
+       ;; Sending the the whole archive can take time so do it in a separate
+       ;; thread so that the main thread can keep working in the meantime.
+       (call-with-new-thread
+        (lambda ()
+          (set-thread-name "publish nar")
+          (let* ((response    (write-response (sans-content-length response)
+                                              client))
+                 (port        (begin
+                                (force-output client)
+                                (configure-socket client)
+                                ;; Duplicate the response port, so that it is
+                                ;; not automatically closed when closing the
+                                ;; returned port.  This is needed for the
+                                ;; keep-alive mechanism.
+                                (nar-compressed-port
+                                 (duplicate-port
+                                  (response-port response) "w+0b")
+                                 compression))))
+            ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093>
+            ;; in 'render-nar', BODY here is just the file name of the store
+            ;; item.  We call 'write-file' from here because we know that's
+            ;; the only way to avoid building the whole nar in memory, which
+            ;; could quickly become a real problem.  As a bonus, we even do
+            ;; sendfile(2) directly from the store files to the socket.
+            (swallow-zlib-error
+             (swallow-EPIPE
+              (write-file (utf8->string body) port)))
+            (swallow-zlib-error
+             (close-port port)
+             (unless keep-alive?
+               (close-port client)))
+            (values))))))
     (_
      (match (assoc-ref (response-headers response) 'x-raw-file)
        ((? string? file)
+        (when (keep-alive? response)
+          (keep-alive client))
         ;; Send a raw file in a separate thread.
         (call-with-new-thread
          (lambda ()
@@ -932,19 +989,20 @@ blocking."
                (call-with-input-file file
                  (lambda (input)
                    (let* ((size     (stat:size (stat input)))
-                          (response (write-response (with-content-length response
-                                                                         size)
-                                                    client))
+                          (response (write-response
+                                     (with-content-length response size)
+                                     client))
                           (output   (response-port response)))
                      (configure-socket client)
                      (if (file-port? output)
                          (sendfile output input size)
                          (dump-port input output))
-                     (close-port output)
+                     (unless (keep-alive? response)
+                       (close-port output))
                      (values)))))
              (lambda args
-               ;; If the file was GC'd behind our back, that's fine.  Likewise if
-               ;; the client closes the connection.
+               ;; If the file was GC'd behind our back, that's fine.  Likewise
+               ;; if the client closes the connection.
                (unless (memv (system-error-errno args)
                              (list ENOENT EPIPE ECONNRESET))
                  (apply throw args))
@@ -980,6 +1038,18 @@ methods, return the applicable compression."
             compressions)
       (default-compression requested-type)))
 
+(define (preserve-connection-headers request response)
+  "Add REQUEST's 'connection' header, if any, to HEADERS, a list of response
+headers."
+  (if (pair? response)
+      (let ((connection
+             (assq 'connection (request-headers request))))
+        (append response
+                (if connection
+                    (list connection)
+                    '())))
+      response))
+
 (define* (make-request-handler store
                                #:key
                                cache pool
@@ -993,7 +1063,7 @@ methods, return the applicable compression."
     (let ((expected (split-and-decode-uri-path nar-path)))
       (cut equal? expected <>)))
 
-  (lambda (request body)
+  (define (handle request body)
     (format #t "~a ~a~%"
             (request-method request)
             (uri-path (request-uri request)))
@@ -1065,7 +1135,15 @@ methods, return the applicable compression."
                (not-found request)))
 
           (x (not-found request)))
-        (not-found request))))
+        (not-found request)))
+
+  ;; Preserve the request's 'connection' header in the response, so that the
+  ;; server can close the connection if this is requested by the client.
+  (lambda (request body)
+    (let-values (((response response-body)
+                  (handle request body)))
+      (values (preserve-connection-headers request response)
+              response-body))))
 
 (define (service-name)
   "Return the Avahi service name of the server."
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 8e4eae00b3..44448ff3e9 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -163,7 +163,9 @@ if file doesn't exist, and the narinfo otherwise."
 (define (lookup-narinfo caches path authorized?)
   "Return the narinfo for PATH in CACHES, or #f when no substitute for PATH
 was found."
-  (match (lookup-narinfos/diverse caches (list path) authorized?)
+  (match (lookup-narinfos/diverse
+          caches (list path) authorized?
+          #:open-connection open-connection-for-uri/cached)
     ((answer) answer)
     (_        #f)))
 
@@ -518,8 +520,11 @@ PORT."
                                          (current-error-port)
                                          #:abbreviation nar-uri-abbreviation))))
                      ;; Keep RAW open upon completion so we can later reuse
-                     ;; the underlying connection.
-                     (progress-report-port reporter raw #:close? #f)))
+                     ;; the underlying connection.  Pass the download size so
+                     ;; that this procedure won't block reading from RAW.
+                     (progress-report-port reporter raw
+                                           #:close? #f
+                                           #:download-size dl-size)))
                   ((input pids)
                    ;; NOTE: This 'progress' port of current process will be
                    ;; closed here, while the child process doing the
diff --git a/guix/store.scm b/guix/store.scm
index 9d706ae590..cf5d5eeccc 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -648,18 +648,10 @@ connection.  Use with care."
             (close-connection store)
             (apply values results)))))
 
-    (cond-expand
-      (guile-3
-       (with-exception-handler (lambda (exception)
-                                 (close-connection store)
-                                 (raise-exception exception))
-         thunk))
-      (else                                       ;Guile 2.2
-       (catch #t
-         thunk
-         (lambda (key . args)
-           (close-connection store)
-           (apply throw key args)))))))
+    (with-exception-handler (lambda (exception)
+                              (close-connection store)
+                              (raise-exception exception))
+      thunk)))
 
 (define-syntax-rule (with-store store exp ...)
   "Bind STORE to an open connection to the store and evaluate EXPs;
diff --git a/guix/swh.scm b/guix/swh.scm
index 06d2957252..f6d5241e06 100644
--- a/guix/swh.scm
+++ b/guix/swh.scm
@@ -148,20 +148,12 @@
       url
       (string-append url "/")))
 
-(cond-expand
-  (guile-3
-   ;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would
-   ;; be ignored (<https://bugs.gnu.org/40486>).
-   (define* (http-get* uri #:rest rest)
-     (apply http-request uri #:method 'GET rest))
-   (define* (http-post* uri #:rest rest)
-     (apply http-request uri #:method 'POST rest)))
-  (else                                           ;Guile 2.2
-   ;; Guile 2.2 did not have #:verify-certificate? so ignore it.
-   (define* (http-get* uri #:key verify-certificate? streaming?)
-     (http-request uri #:method 'GET #:streaming? streaming?))
-   (define* (http-post* uri #:key verify-certificate? streaming?)
-     (http-request uri #:method 'POST #:streaming? streaming?))))
+;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would
+;; be ignored (<https://bugs.gnu.org/40486>).
+(define* (http-get* uri #:rest rest)
+  (apply http-request uri #:method 'GET rest))
+(define* (http-post* uri #:rest rest)
+  (apply http-request uri #:method 'POST rest))
 
 (define %date-regexp
   ;; Match strings like "2014-11-17T22:09:38+01:00" or
diff --git a/guix/ui.scm b/guix/ui.scm
index 05b3f5f84c..d3e01f846d 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -196,17 +196,11 @@ information, or #f if it could not be found."
                            (stack-ref stack 1)    ;skip the 'throw' frame
                            last))))
 
-(cond-expand
-  (guile-3
-   (define-syntax-rule (without-compiler-optimizations exp)
-     ;; Compile with the baseline compiler (-O1), which is much less expensive
-     ;; than -O2.
-     (parameterize (((@ (system base compile) default-optimization-level) 1))
-       exp)))
-  (else
-   (define-syntax-rule (without-compiler-optimizations exp)
-     ;; No easy way to turn off optimizations on Guile 2.2.
-     exp)))
+(define-syntax-rule (without-compiler-optimizations exp)
+  ;; Compile with the baseline compiler (-O1), which is much less expensive
+  ;; than -O2.
+  (parameterize (((@ (system base compile) default-optimization-level) 1))
+    exp))
 
 (define* (load* file user-module
                 #:key (on-error 'nothing-special))
@@ -674,22 +668,17 @@ or variants of @code{~a} in the same profile.")
 or remove one of them from the profile.")
                               name1 name2)))))
 
-(cond-expand
-  (guile-3
-   ;; On Guile 3.0, in 'call-with-error-handling' we need to re-raise.  To
-   ;; preserve useful backtraces in case of unhandled errors, we want that to
-   ;; happen before the stack has been unwound, hence 'guard*'.
-   (define-syntax-rule (guard* (var clauses ...) exp ...)
-     "This variant of SRFI-34 'guard' does not unwind the stack before
+;; On Guile 3.0, in 'call-with-error-handling' we need to re-raise.  To
+;; preserve useful backtraces in case of unhandled errors, we want that to
+;; happen before the stack has been unwound, hence 'guard*'.
+(define-syntax-rule (guard* (var clauses ...) exp ...)
+  "This variant of SRFI-34 'guard' does not unwind the stack before
 evaluating the tests and bodies of CLAUSES."
-     (with-exception-handler
-         (lambda (var)
-           (cond clauses ... (else (raise var))))
-       (lambda () exp ...)
-       #:unwind? #f)))
-  (else
-   (define-syntax-rule (guard* (var clauses ...) exp ...)
-     (guard (var clauses ...) exp ...))))
+  (with-exception-handler
+      (lambda (var)
+        (cond clauses ... (else (raise var))))
+    (lambda () exp ...)
+    #:unwind? #f))
 
 (define (call-with-error-handling thunk)
   "Call THUNK within a user-friendly error handler."
@@ -822,11 +811,13 @@ directories:~{ ~a~}~%")
              ;; Furthermore, use of 'guard*' ensures that the stack has not
              ;; been unwound when we re-raise, since that would otherwise show
              ;; useless backtraces.
-             ((cond-expand
-                (guile-3
-                 ((exception-predicate &exception-with-kind-and-args) c))
-                (else #f))
-              (raise c))
+             (((exception-predicate &exception-with-kind-and-args) c)
+              (if (eq? 'system-error (exception-kind c)) ;EPIPE & co.
+                  (match (exception-args c)
+                    ((proc format-string format-args . _)
+                     (leave (G_ "~a: ~a~%") proc
+                            (apply format #f format-string format-args))))
+                  (raise c)))
 
              ((message-condition? c)
               ;; Normally '&message' error conditions have an i18n'd message.
@@ -836,12 +827,7 @@ directories:~{ ~a~}~%")
               (when (fix-hint? c)
                 (display-hint (condition-fix-hint c)))
               (exit 1)))
-      ;; Catch EPIPE and the likes.
-      (catch 'system-error
-        thunk
-        (lambda (key proc format-string format-args . rest)
-          (leave (G_ "~a: ~a~%") proc
-                 (apply format #f format-string format-args))))))
+      (thunk)))
 
 (define-syntax-rule (leave-on-EPIPE exp ...)
   "Run EXP... in a context where EPIPE errors are caught and lead to 'exit'
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 74cc5ebf9a..14324b25de 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -7,6 +7,7 @@ gnu/system.scm
 gnu/services/shepherd.scm
 gnu/system/mapped-devices.scm
 gnu/system/shadow.scm
+guix/import/egg.scm
 guix/import/opam.scm
 gnu/installer.scm
 gnu/installer/connman.scm
@@ -44,6 +45,7 @@ gnu/packages/bootstrap.scm
 guix/build/utils.scm
 guix/scripts.scm
 guix/scripts/build.scm
+guix/diagnostics.scm
 guix/discovery.scm
 guix/lint.scm
 guix/scripts/download.scm
@@ -99,6 +101,7 @@ guix/scripts/environment.scm
 guix/scripts/time-machine.scm
 guix/scripts/import/cpan.scm
 guix/scripts/import/crate.scm
+guix/scripts/import/egg.scm
 guix/scripts/import/gem.scm
 guix/scripts/import/gnu.scm
 guix/scripts/import/go.scm
diff --git a/tests/egg.scm b/tests/egg.scm
new file mode 100644
index 0000000000..0884d8d429
--- /dev/null
+++ b/tests/egg.scm
@@ -0,0 +1,132 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-eggs)
+  #:use-module (guix import egg)
+  #:use-module (guix gexp)
+  #:use-module (guix base32)
+  #:use-module (gcrypt hash)
+  #:use-module (guix tests)
+  #:use-module ((guix build syscalls) #:select (mkdtemp!))
+  #:use-module ((guix build utils) #:select (delete-file-recursively mkdir-p which))
+  #:use-module ((guix utils) #:select (call-with-temporary-output-file))
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-64)
+  #:use-module (web uri)
+  #:use-module (ice-9 match))
+
+(define test-egg-1
+  '((synopsis "Example egg")
+    (license "GPL-3/MIT")
+    (version "1.0.0")
+    (test-dependencies test srfi-1)
+    (foreign-dependencies libgit2)
+    (build-dependencies begin-syntax)
+    (dependencies datatype)
+    (author "John Doe")))
+
+(define test-egg-2
+  '((synopsis "Example egg")
+    (license "GPL-3+")
+    (version "0.3")
+    (test-dependencies test)
+    (foreign-dependencies libgit2)
+    (build-dependencies begin-syntax)
+    (dependencies datatype)
+    (author "Alice Bobson")))
+
+(define test-egg-1-file "/tmp/guix-egg-1")
+(define test-egg-2-file "/tmp/guix-egg-2")
+
+(test-begin "egg")
+
+(test-equal "guix-package->egg-name"
+  "bar"
+  (guix-package->egg-name
+   (dummy-package "dummy"
+                  (name "chicken-bar"))))
+
+;; Copied from tests/hackage.scm
+(define-syntax-rule (define-package-matcher name pattern)
+  (define* (name obj)
+    (match obj
+      (pattern #t)
+      (x       (pk 'fail x #f)))))
+
+(define (eval-test-with-egg-file egg-name egg-test egg-file matcher)
+  (call-with-output-file egg-file
+    (lambda (port)
+      (write egg-test port)))
+  (matcher (egg->guix-package egg-name
+                              #:file egg-file
+                              #:source (plain-file
+                                        (string-append egg-name "-egg")
+                                        "content"))))
+
+(define-package-matcher match-chicken-foo
+  ('package
+    ('name "chicken-foo")
+    ('version "1.0.0")
+    ('source (? file-like? source))
+    ('build-system 'chicken-build-system)
+    ('arguments ('quasiquote ('#:egg-name "foo")))
+    ('native-inputs
+     ('quasiquote
+      (("chicken-test" ('unquote chicken-test))
+       ("chicken-srfi-1" ('unquote chicken-srfi-1))
+       ("chicken-begin-syntax" ('unquote chicken-begin-syntax)))))
+    ('inputs
+     ('quasiquote
+      (("libgit2" ('unquote libgit2)))))
+    ('propagated-inputs
+     ('quasiquote
+      (("chicken-datatype" ('unquote chicken-datatype)))))
+    ('home-page "https://wiki.call-cc.org/egg/foo")
+    ('synopsis "Example egg")
+    ('description #f)
+    ('license '(list license:gpl3 license:expat))))
+
+(define-package-matcher match-chicken-bar
+  ('package
+    ('name "chicken-bar")
+    ('version "0.3")
+    ('source (? file-like? source))
+    ('build-system 'chicken-build-system)
+    ('arguments ('quasiquote ('#:egg-name "bar")))
+    ('native-inputs
+     ('quasiquote
+      (("chicken-test" ('unquote chicken-test))
+       ("chicken-begin-syntax" ('unquote chicken-begin-syntax)))))
+    ('inputs
+     ('quasiquote
+      (("libgit2" ('unquote libgit2)))))
+    ('propagated-inputs
+     ('quasiquote
+      (("chicken-datatype" ('unquote chicken-datatype)))))
+    ('home-page "https://wiki.call-cc.org/egg/bar")
+    ('synopsis "Example egg")
+    ('description #f)
+    ('license 'license:gpl3+)))
+
+(test-assert "egg->guix-package local file, multiple licenses"
+  (eval-test-with-egg-file "foo" test-egg-1 test-egg-1-file match-chicken-foo))
+
+(test-assert "egg->guix-package local file, single license"
+  (eval-test-with-egg-file "bar" test-egg-2 test-egg-2-file match-chicken-bar))
+
+(test-end "egg")
diff --git a/tests/gnu-maintenance.scm b/tests/gnu-maintenance.scm
index 837b80063a..c04d8ba733 100644
--- a/tests/gnu-maintenance.scm
+++ b/tests/gnu-maintenance.scm
@@ -34,7 +34,8 @@
                 ("mediainfo" "mediainfo_20.09.tar.xz")
                 ("exiv2" "exiv2-0.27.3-Source.tar.gz")
                 ("mpg321" "mpg321_0.3.2.orig.tar.gz")
-                ("bvi" "bvi-1.4.1.src.tar.gz")))
+                ("bvi" "bvi-1.4.1.src.tar.gz")
+                ("hostscope" "hostscope-V2.1.tgz")))
        (every (lambda (project+file)
                 (not (apply release-file? project+file)))
               '(("guile" "guile-www-1.1.1.tar.gz")
diff --git a/tests/hackage.scm b/tests/hackage.scm
index 77e333cbfc..66a13d9881 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -183,7 +184,7 @@ library
     ('home-page "http://test.org")
     ('synopsis (? string?))
     ('description (? string?))
-    ('license 'bsd-3)))
+    ('license 'license:bsd-3)))
 
 (define* (eval-test-with-cabal test-cabal matcher #:key (cabal-environment '()))
   (define port (open-input-string test-cabal))
@@ -232,7 +233,7 @@ library
     ('home-page "http://test.org")
     ('synopsis (? string?))
     ('description (? string?))
-    ('license 'bsd-3)))
+    ('license 'license:bsd-3)))
 
 (test-assert "hackage->guix-package test 6"
   (eval-test-with-cabal test-cabal-6 match-ghc-foo-6))
@@ -362,7 +363,7 @@ executable cabal
     ('home-page "http://test.org")
     ('synopsis (? string?))
     ('description (? string?))
-    ('license 'bsd-3)))
+    ('license 'license:bsd-3)))
 
 (test-assert "hackage->guix-package test cabal revision"
   (eval-test-with-cabal test-cabal-revision match-ghc-foo-revision))
diff --git a/tests/lint.scm b/tests/lint.scm
index 02ffb19d78..b6ea1dda4f 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -277,6 +277,29 @@
    (let ((pkg (dummy-package "under_score")))
      (check-name pkg))))
 
+(test-equal "tests-true: #:tests? must not be set to #t"
+  "#:tests? must not be explicitly set to #t"
+  (single-lint-warning-message
+   (let ((pkg (dummy-package "x" (arguments '(#:tests? #t)))))
+     (check-tests-true pkg))))
+
+(test-equal "tests-true: absent #:tests? is acceptable"
+  '()
+  (let ((pkg (dummy-package "x")))
+    (check-tests-true pkg)))
+
+(test-equal "tests-true: #:tests? #f is acceptable"
+  '()
+  (let ((pkg (dummy-package "x" (arguments '(#:tests? #f)))))
+    (check-tests-true pkg)))
+
+(test-equal "tests-true: #:tests? #t acceptable when compiling natively"
+  '()
+  (let ((pkg (dummy-package "x"
+                            (arguments
+                             `(#:tests? ,(not (%current-target-system)))))))
+    (check-tests-true pkg)))
+
 (test-equal "inputs: pkg-config is probably a native input"
   "'pkg-config' should probably be a native input"
   (single-lint-warning-message
@@ -1008,10 +1031,13 @@
                      (method url-fetch)
                      (uri "http://example.org/foo.tgz")
                      (sha256 (make-bytevector 32))))
-         (warnings (with-http-server '((404 "Not archived."))
+         (warnings (with-http-server '((404 "Not archived.")
+                                       (404 "Not in Disarchive database."))
                      (parameterize ((%swh-base-url (%local-url)))
-                       (check-archival (dummy-package "x"
-                                                      (source origin)))))))
+                       (mock ((guix download) %disarchive-mirrors
+                              (list (%local-url)))
+                             (check-archival (dummy-package "x"
+                                                            (source origin))))))))
     (warning-contains? "not archived" warnings)))
 
 (test-equal "archival: content available"
@@ -1027,6 +1053,29 @@
       (parameterize ((%swh-base-url (%local-url)))
         (check-archival (dummy-package "x" (source origin)))))))
 
+(test-equal "archival: content unavailable but disarchive available"
+  '()
+  (let* ((origin   (origin
+                     (method url-fetch)
+                     (uri "http://example.org/foo.tgz")
+                     (sha256 (make-bytevector 32))))
+         (disarchive (object->string
+                      '(disarchive (version 0)
+                                   ...
+                                   "swh:1:dir:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")))
+         ;; https://archive.softwareheritage.org/api/1/directory/
+         (directory "[ { \"checksums\": {},
+                         \"dir_id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+                         \"type\": \"file\",
+                         \"name\": \"README\"
+                         \"length\": 42 } ]"))
+    (with-http-server `((404 "")                  ;lookup-content
+                        (200 ,disarchive)         ;Disarchive database lookup
+                        (200 ,directory))         ;lookup-directory
+      (mock ((guix download) %disarchive-mirrors (list (%local-url)))
+            (parameterize ((%swh-base-url (%local-url)))
+              (check-archival (dummy-package "x" (source origin))))))))
+
 (test-assert "archival: missing revision"
   (let* ((origin   (origin
                      (method git-fetch)
diff --git a/tests/opam.scm b/tests/opam.scm
index 11984b56a6..f1e3b70cb0 100644
--- a/tests/opam.scm
+++ b/tests/opam.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,6 +56,7 @@ depends: [
 synopsis: \"Some example package\"
 description: \"\"\"
 This package is just an example.\"\"\"
+license: \"BSD-3-Clause\"
 url {
   src: \"https://example.org/foo-1.0.0.tar.gz\"
   checksum: \"md5=74c6e897658e820006106f45f736381f\"
@@ -109,7 +111,7 @@ url {
                    ('home-page "https://example.org/")
                    ('synopsis "Some example package")
                    ('description "This package is just an example.")
-                   ('license #f))
+                   ('license 'license:bsd-3))
                  (string=? (bytevector->nix-base32-string
                             test-source-hash)
                            hash))